]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge branch 'patch-1' of https://github.com/ganeshkrishnan1/Nominatim into ganeshkri...
authorSarah Hoffmann <lonvia@denofr.de>
Wed, 13 May 2020 07:55:48 +0000 (09:55 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Wed, 13 May 2020 07:55:48 +0000 (09:55 +0200)
244 files changed:
.travis.yml
CMakeLists.txt
CONTRIBUTING.md
ChangeLog
README.md
VAGRANT.md
Vagrantfile
cmake/script.tmpl [new file with mode: 0755]
cmake/website.tmpl [new file with mode: 0755]
data-sources/country-grid/README.md [new file with mode: 0644]
data-sources/country-grid/country_grid.sql [moved from sql/country_grid.sql with 100% similarity]
data-sources/country-grid/mexico.quad.png [new file with mode: 0644]
data-sources/gb-postcodes/README.md [new file with mode: 0644]
data-sources/gb-postcodes/convert_codepoint.php [new file with mode: 0755]
data-sources/us-tiger/README.md [new file with mode: 0644]
data-sources/us-tiger/convert.sh [new file with mode: 0755]
data-sources/us-tiger/tiger_address_convert.py [moved from utils/tigerAddressImport.py with 99% similarity]
data-sources/us-tiger/tiger_county_fips.json [moved from utils/tiger_county_fips.json with 100% similarity]
data-sources/wikipedia-wikidata/README.md [new file with mode: 0644]
data-sources/wikipedia-wikidata/import_wikidata.sh [new file with mode: 0755]
data-sources/wikipedia-wikidata/import_wikipedia.sh [new file with mode: 0755]
data-sources/wikipedia-wikidata/languages.txt [new file with mode: 0644]
data-sources/wikipedia-wikidata/mysql2pgsql.perl [moved from mysql2pgsql/mysql2pgsql.perl with 99% similarity]
data-sources/wikipedia-wikidata/wikidata_place_type_levels.csv [new file with mode: 0644]
data-sources/wikipedia-wikidata/wikidata_place_types.txt [new file with mode: 0644]
data-sources/wikipedia-wikidata/wikidata_places.md [new file with mode: 0644]
data/country_naturalearthdata.sql [deleted file]
data/us_postcode.sql [deleted file]
data/us_postcode_table.sql [new file with mode: 0644]
docs/CMakeLists.txt
docs/admin/Advanced-Installations.md [new file with mode: 0644]
docs/admin/Faq.md
docs/admin/Import-and-Update.md
docs/admin/Installation.md
docs/admin/Migration.md
docs/api/Details.md
docs/api/Faq.md
docs/api/Lookup.md
docs/api/Output.md
docs/api/Overview.md
docs/api/Reverse.md
docs/api/Search.md
docs/api/Status.md [new file with mode: 0644]
docs/data-sources/overview.md [new file with mode: 0644]
docs/develop/Documentation.md [new file with mode: 0644]
docs/develop/Import.md [new file with mode: 0644]
docs/develop/Postcodes.md [new file with mode: 0644]
docs/develop/Ranking.md [new file with mode: 0644]
docs/develop/overview.md
docs/mkdocs.yml
docs/styles.css [new file with mode: 0644]
lib/AddressDetails.php
lib/ClassTypes.php
lib/DB.php [new file with mode: 0644]
lib/DatabaseError.php [new file with mode: 0644]
lib/Geocode.php
lib/ParameterParser.php
lib/Phrase.php
lib/PlaceLookup.php
lib/Result.php
lib/ReverseGeocode.php
lib/SearchContext.php
lib/SearchDescription.php
lib/Shell.php [new file with mode: 0644]
lib/Status.php
lib/TokenList.php
lib/cmd.php
lib/db.php [deleted file]
lib/init-website.php
lib/init.php
lib/lib.php
lib/log.php
lib/output.php
lib/setup/AddressLevelParser.php [new file with mode: 0644]
lib/setup/SetupClass.php [new file with mode: 0755]
lib/setup_functions.php [new file with mode: 0755]
lib/template/address-geocodejson.php
lib/template/address-html.php
lib/template/deletable-html.php [new file with mode: 0644]
lib/template/details-html.php
lib/template/details-index-html.php [new file with mode: 0644]
lib/template/details-json.php
lib/template/error-html.php [new file with mode: 0644]
lib/template/error-json.php [new file with mode: 0644]
lib/template/error-xml.php [new file with mode: 0644]
lib/template/includes/html-header.php
lib/template/includes/html-top-navigation.php
lib/template/includes/introduction.php
lib/template/includes/report-errors.php
lib/template/polygons-html.php [new file with mode: 0644]
lib/template/search-batch-json.php
lib/template/search-geocodejson.php
lib/template/search-html.php
lib/template/search-json.php
lib/template/search-xml.php
module/CMakeLists.txt
module/utfasciitable.h
nominatim/CMakeLists.txt [deleted file]
nominatim/README.txt [deleted file]
nominatim/export.c [deleted file]
nominatim/export.h [deleted file]
nominatim/geometry.cpp [deleted file]
nominatim/import.c [deleted file]
nominatim/import.h [deleted file]
nominatim/index.c [deleted file]
nominatim/index.h [deleted file]
nominatim/input.c [deleted file]
nominatim/input.h [deleted file]
nominatim/nominatim.c [deleted file]
nominatim/nominatim.h [deleted file]
nominatim/nominatim.py [new file with mode: 0755]
nominatim/nominatim.spec.in [deleted file]
nominatim/postgresql.c [deleted file]
nominatim/postgresql.h [deleted file]
nominatim/sprompt.c [deleted file]
nominatim/sprompt.h [deleted file]
nominatim/voronoi/VoronoiDiagramGenerator.cpp [deleted file]
nominatim/voronoi/VoronoiDiagramGenerator.h [deleted file]
nominatim/voronoi/voronoi_main.cpp [deleted file]
osm2pgsql
settings/address-levels.json [new file with mode: 0644]
settings/defaults.php
settings/import-address.style [new file with mode: 0644]
settings/import-admin.style [new file with mode: 0644]
settings/import-extratags.style [new file with mode: 0644]
settings/import-full.style [new file with mode: 0644]
settings/import-street.style [new file with mode: 0644]
settings/settings.php [deleted file]
sql/functions.sql [deleted file]
sql/functions/address_lookup.sql [new file with mode: 0644]
sql/functions/aux_property.sql [new file with mode: 0644]
sql/functions/importance.sql [new file with mode: 0644]
sql/functions/interpolation.sql [new file with mode: 0644]
sql/functions/normalization.sql [new file with mode: 0644]
sql/functions/place_triggers.sql [new file with mode: 0644]
sql/functions/placex_triggers.sql [new file with mode: 0644]
sql/functions/postcode_triggers.sql [new file with mode: 0644]
sql/functions/ranking.sql [new file with mode: 0644]
sql/functions/utils.sql [new file with mode: 0644]
sql/indices.src.sql
sql/indices_search.src.sql [new file with mode: 0644]
sql/indices_updates.src.sql [new file with mode: 0644]
sql/partition-functions.src.sql
sql/partition-tables.src.sql
sql/table-triggers.sql [new file with mode: 0644]
sql/tables.sql
sql/tiger_import_start.sql
sql/update-postcodes.sql
test/Makefile [new file with mode: 0644]
test/README.md
test/bdd/api/details/simple.feature
test/bdd/api/errors/formats.feature [new file with mode: 0644]
test/bdd/api/lookup/simple.feature
test/bdd/api/reverse/addressdetails.feature [new file with mode: 0644]
test/bdd/api/reverse/geocodejson.feature [new file with mode: 0644]
test/bdd/api/reverse/language.feature
test/bdd/api/reverse/params.feature
test/bdd/api/reverse/queries.feature
test/bdd/api/reverse/simple.feature
test/bdd/api/search/geocodejson.feature [new file with mode: 0644]
test/bdd/api/search/params.feature
test/bdd/api/search/postcode.feature
test/bdd/api/search/queries.feature
test/bdd/api/search/simple.feature
test/bdd/api/status/failures.feature
test/bdd/db/import/interpolation.feature
test/bdd/db/import/linking.feature
test/bdd/db/import/parenting.feature
test/bdd/db/import/placex.feature
test/bdd/db/import/postcodes.feature
test/bdd/db/import/search_name.feature
test/bdd/db/update/interpolation.feature
test/bdd/db/update/linked_places.feature
test/bdd/db/update/parenting.feature [new file with mode: 0644]
test/bdd/db/update/postcode.feature [new file with mode: 0644]
test/bdd/db/update/simple.feature
test/bdd/environment.py
test/bdd/osm2pgsql/import/simple.feature
test/bdd/osm2pgsql/import/tags.feature [deleted file]
test/bdd/osm2pgsql/update/simple.feature
test/bdd/steps/db_ops.py
test/bdd/steps/queries.py
test/php/Nominatim/AddressDetailsTest.php [new file with mode: 0644]
test/php/Nominatim/ClassTypesTest.php [new file with mode: 0644]
test/php/Nominatim/DBTest.php [new file with mode: 0644]
test/php/Nominatim/DatabaseErrorTest.php [new file with mode: 0644]
test/php/Nominatim/DebugTest.php
test/php/Nominatim/LibTest.php
test/php/Nominatim/OutputTest.php [new file with mode: 0644]
test/php/Nominatim/ParameterParserTest.php
test/php/Nominatim/PhraseTest.php
test/php/Nominatim/SearchContextTest.php
test/php/Nominatim/ShellTest.php [new file with mode: 0644]
test/php/Nominatim/StatusTest.php
test/php/Nominatim/TokenListTest.php
test/php/bootstrap.php
test/php/fixtures/address_details_10_downing_street.json [new file with mode: 0644]
test/php/phpunit.xml [moved from phpunit.xml with 80% similarity]
test/testdb/wikimedia-importance.sql.gz [new file with mode: 0644]
test/testdb/wikipedia_article.sql.bin [deleted file]
test/testdb/wikipedia_redirect.sql.bin [deleted file]
utils/blocks.php [deleted file]
utils/check_import_finished.php [new file with mode: 0755]
utils/check_server_for_updates.py
utils/country_languages.php [changed mode: 0755->0644]
utils/export.php [changed mode: 0755->0644]
utils/importWikipedia.php [deleted file]
utils/import_multiple_regions.sh [new file with mode: 0644]
utils/import_wikipedia.sh [deleted file]
utils/imports.php [deleted file]
utils/osm_file_date.py
utils/query.php [changed mode: 0755->0644]
utils/server_compare.php
utils/setup.php [changed mode: 0755->0644]
utils/specialphrases.php [changed mode: 0755->0644]
utils/update.php [changed mode: 0755->0644]
utils/update_database.sh [new file with mode: 0644]
utils/warm.php [changed mode: 0755->0644]
vagrant/Install-on-Centos-7.sh
vagrant/Install-on-Centos-8.sh [new file with mode: 0755]
vagrant/Install-on-Ubuntu-18-nginx.sh [new file with mode: 0755]
vagrant/Install-on-Ubuntu-18.sh
vagrant/Install-on-Ubuntu-20.sh [moved from vagrant/Install-on-Ubuntu-16.sh with 84% similarity, mode: 0644]
vagrant/install-on-travis-ci.sh
website/css/Control.Minimap.min.css
website/css/details.css
website/css/leaflet.css
website/css/search.css
website/deletable.php [changed mode: 0755->0644]
website/details.php [changed mode: 0755->0644]
website/hierarchy.php [changed mode: 0755->0644]
website/js/Control.Minimap.min.js
website/js/jquery.min.js
website/js/leaflet.min.js
website/js/nominatim-ui.js
website/lookup.php [changed mode: 0755->0644]
website/polygons.php [changed mode: 0755->0644]
website/reverse.php [changed mode: 0755->0644]
website/search.php [changed mode: 0755->0644]
website/status.php
wikidata/create.sql [deleted file]
wikidata/import.sh [deleted file]
wikidata/parse.php [deleted file]
wikidata/pull_wikipedia_logs.php [deleted file]

index 2397e0c59b9c9707c491eeec16549851d8e6f193..f53447422c303ed9740a02edbd18a41acbd768e6 100644 (file)
@@ -1,16 +1,22 @@
 ---
-sudo: required
-dist: trusty
+os: linux
+dist: xenial
 language: python
 python:
   - "3.6"
 addons:
   postgresql: "9.6"
+  apt:
+    packages:
+      postgresql-server-dev-9.6
+      postgresql-client-9.6
 git:
   depth: 3
 env:
   - TEST_SUITE=tests
   - TEST_SUITE=monaco
+before_install:
+  - phpenv global 7.1
 install:
   - vagrant/install-on-travis-ci.sh
 before_script:
@@ -19,14 +25,15 @@ script:
   - cd $TRAVIS_BUILD_DIR/
   - if [[ $TEST_SUITE == "tests" ]]; then phpcs --report-width=120 . ; fi
   - cd $TRAVIS_BUILD_DIR/test/php
-  - if [[ $TEST_SUITE == "tests" ]]; then phpunit ./ ; fi
+  - if [[ $TEST_SUITE == "tests" ]]; then /usr/bin/phpunit ./ ; fi
   - cd $TRAVIS_BUILD_DIR/test/bdd
   - # behave --format=progress3 api
-  - if [[ $TEST_SUITE == "tests" ]]; then behave --format=progress3 db ; fi
+  - if [[ $TEST_SUITE == "tests" ]]; then behave -DREMOVE_TEMPLATE=1 --format=progress3 db ; fi
   - if [[ $TEST_SUITE == "tests" ]]; then behave --format=progress3 osm2pgsql ; fi
   - cd $TRAVIS_BUILD_DIR/build
   - if [[ $TEST_SUITE == "monaco" ]]; then wget --no-verbose --output-document=../data/monaco.osm.pbf http://download.geofabrik.de/europe/monaco-latest.osm.pbf; fi
   - if [[ $TEST_SUITE == "monaco" ]]; then /usr/bin/env php ./utils/setup.php --osm-file ../data/monaco.osm.pbf --osm2pgsql-cache 1000 --all 2>&1 | grep -v 'ETA (seconds)'; fi
   - if [[ $TEST_SUITE == "monaco" ]]; then /usr/bin/env php ./utils/specialphrases.php --wiki-import | psql -d test_api_nominatim >/dev/null; fi
+  - if [[ $TEST_SUITE == "monaco" ]]; then /usr/bin/env php ./utils/check_import_finished.php; fi
 notifications:
   email: false
index a7c7b3951463441c95adf6ddb9a44c67a4c8c6b8..2596c1041f740a0ebf23c6dbd7c8967a897ca62b 100644 (file)
@@ -19,7 +19,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
 project(nominatim)
 
 set(NOMINATIM_VERSION_MAJOR 3)
-set(NOMINATIM_VERSION_MINOR 2)
+set(NOMINATIM_VERSION_MINOR 4)
 set(NOMINATIM_VERSION_PATCH 0)
 
 set(NOMINATIM_VERSION "${NOMINATIM_VERSION_MAJOR}.${NOMINATIM_VERSION_MINOR}.${NOMINATIM_VERSION_PATCH}")
@@ -28,56 +28,57 @@ add_definitions(-DNOMINATIM_VERSION="${NOMINATIM_VERSION}")
 
 
 #-----------------------------------------------------------------------------
-#
-#  Find external dependencies
-#
+#  Configuration
 #-----------------------------------------------------------------------------
 
-set(BUILD_TESTS off CACHE BOOL "Build test suite" FORCE)
-set(WITH_LUA off CACHE BOOL "Build with lua support" FORCE)
+set(BUILD_IMPORTER on CACHE BOOL "Build everything for importing/updating the database")
+set(BUILD_API on CACHE BOOL "Build everything for the API server")
+set(BUILD_MODULE on CACHE BOOL "Build PostgreSQL module")
+set(BUILD_TESTS on CACHE BOOL "Build test suite")
+set(BUILD_DOCS on CACHE BOOL "Build documentation")
+set(BUILD_OSM2PGSQL on CACHE BOOL "Build osm2pgsql (expert only)")
 
-if (NOT EXISTS "${CMAKE_SOURCE_DIR}/osm2pgsql/CMakeLists.txt")
-    message(FATAL_ERROR "The osm2pgsql directory is empty.\
-    Did you forget to check out Nominatim recursively?\
-    \nTry updating submodules with: git submodule update --init")
-endif()
-add_subdirectory(osm2pgsql)
-
-find_package(Threads REQUIRED)
-
-unset(PostgreSQL_TYPE_INCLUDE_DIR CACHE)
-set(PostgreSQL_TYPE_INCLUDE_DIR "/usr/include/")
-find_package(PostgreSQL REQUIRED)
-include_directories(${PostgreSQL_INCLUDE_DIRS})
-link_directories(${PostgreSQL_LIBRARY_DIRS})
-
-find_program(PYOSMIUM pyosmium-get-changes)
-if (NOT EXISTS "${PYOSMIUM}")
-    set(PYOSMIUM_PATH "")
-        message(WARNING "pyosmium-get-changes not found (required for updates)")
-else()
-    set(PYOSMIUM_PATH "${PYOSMIUM}")
-    message(STATUS "Using pyosmium-get-changes at ${PYOSMIUM_PATH}")
+#-----------------------------------------------------------------------------
+#  osm2pgsql (imports/updates only)
+#-----------------------------------------------------------------------------
+
+if (BUILD_IMPORTER AND BUILD_OSM2PGSQL)
+    if (NOT EXISTS "${CMAKE_SOURCE_DIR}/osm2pgsql/CMakeLists.txt")
+        message(FATAL_ERROR "The osm2pgsql directory is empty.\
+        Did you forget to check out Nominatim recursively?\
+        \nTry updating submodules with: git submodule update --init")
+    endif()
+    set(BUILD_TESTS_SAVED "${BUILD_TESTS}")
+    set(BUILD_TESTS off)
+    set(WITH_LUA off CACHE BOOL "")
+    add_subdirectory(osm2pgsql)
+    set(BUILD_TESTS ${BUILD_TESTS_SAVED})
 endif()
 
 
-find_program(PG_CONFIG pg_config)
-execute_process(COMMAND ${PG_CONFIG} --pgxs
-                OUTPUT_VARIABLE PGXS
-                OUTPUT_STRIP_TRAILING_WHITESPACE)
+#-----------------------------------------------------------------------------
+#  python and pyosmium (imports/updates only)
+#-----------------------------------------------------------------------------
 
-if (NOT EXISTS "${PGXS}")
-    message(FATAL_ERROR "Postgresql server package not found.")
+if (BUILD_IMPORTER)
+    find_package(PythonInterp 3)
+
+    find_program(PYOSMIUM pyosmium-get-changes)
+    if (NOT EXISTS "${PYOSMIUM}")
+        set(PYOSMIUM_PATH "")
+            message(WARNING "pyosmium-get-changes not found (required for updates)")
+    else()
+        set(PYOSMIUM_PATH "${PYOSMIUM}")
+        message(STATUS "Using pyosmium-get-changes at ${PYOSMIUM_PATH}")
+    endif()
 endif()
 
-find_package(ZLIB REQUIRED)
-
-find_package(BZip2 REQUIRED)
-
-find_package(LibXml2 REQUIRED)
-include_directories(${LIBXML2_INCLUDE_DIR})
+#-----------------------------------------------------------------------------
+# PHP
+#-----------------------------------------------------------------------------
 
 # Setting PHP binary variable as to command line (prevailing) or auto detect
+
 if (NOT PHP_BIN)
      find_program (PHP_BIN php)
 endif()
@@ -88,75 +89,103 @@ endif()
 message (STATUS "Using PHP binary " ${PHP_BIN})
 
 #-----------------------------------------------------------------------------
-#
-# Setup settings and paths
-#
+# import scripts and utilities (importer only)
+#-----------------------------------------------------------------------------
+
+if (BUILD_IMPORTER)
+   set(CUSTOMSCRIPTS
+       utils/check_import_finished.php
+       utils/country_languages.php
+       utils/importWikipedia.php
+       utils/export.php
+       utils/query.php
+       utils/setup.php
+       utils/specialphrases.php
+       utils/update.php
+       utils/warm.php
+      )
+
+   foreach (script_source ${CUSTOMSCRIPTS})
+       configure_file(${PROJECT_SOURCE_DIR}/cmake/script.tmpl
+                      ${PROJECT_BINARY_DIR}/${script_source})
+   endforeach()
+endif()
+
+#-----------------------------------------------------------------------------
+# webserver scripts (API only)
 #-----------------------------------------------------------------------------
 
-set(CUSTOMFILES
-    settings/phrase_settings.php
-    website/deletable.php
-    website/details.php
-    website/hierarchy.php
-    website/lookup.php
-    website/polygons.php
-    website/reverse.php
-    website/search.php
-    website/status.php
-    utils/blocks.php
-    utils/country_languages.php
-    utils/imports.php
-    utils/importWikipedia.php
-    utils/export.php
-    utils/query.php
-    utils/server_compare.php
-    utils/setup.php
-    utils/specialphrases.php
-    utils/update.php
-    utils/warm.php
+if (BUILD_API)
+   set(WEBSITESCRIPTS
+       website/deletable.php
+       website/details.php
+       website/hierarchy.php
+       website/lookup.php
+       website/polygons.php
+       website/reverse.php
+       website/search.php
+       website/status.php
    )
 
-foreach (cfile ${CUSTOMFILES})
-    configure_file(${PROJECT_SOURCE_DIR}/${cfile} ${PROJECT_BINARY_DIR}/${cfile})
-endforeach()
+   foreach (script_source ${WEBSITESCRIPTS})
+       configure_file(${PROJECT_SOURCE_DIR}/cmake/website.tmpl
+                      ${PROJECT_BINARY_DIR}/${script_source})
+   endforeach()
 
-configure_file(${PROJECT_SOURCE_DIR}/settings/defaults.php ${PROJECT_BINARY_DIR}/settings/settings.php)
+   set(WEBPATHS css images js)
 
-set(WEBPATHS css images js)
+   foreach (wp ${WEBPATHS})
+       execute_process(
+           COMMAND ln -sf ${PROJECT_SOURCE_DIR}/website/${wp} ${PROJECT_BINARY_DIR}/website/
+       )
+   endforeach()
+endif()
 
-foreach (wp ${WEBPATHS})
-    execute_process(
-        COMMAND ln -sf ${PROJECT_SOURCE_DIR}/website/${wp} ${PROJECT_BINARY_DIR}/website/
-    )
-endforeach()
+#-----------------------------------------------------------------------------
+# default settings
+#-----------------------------------------------------------------------------
 
+configure_file(${PROJECT_SOURCE_DIR}/settings/defaults.php
+               ${PROJECT_BINARY_DIR}/settings/settings.php)
 
 #-----------------------------------------------------------------------------
-#
 # Tests
-#
 #-----------------------------------------------------------------------------
 
-include(CTest)
+if (BUILD_TESTS)
+    include(CTest)
+
+    set(TEST_BDD db osm2pgsql api)
 
-set(TEST_BDD db osm2pgsql api)
+    foreach (test ${TEST_BDD})
+        add_test(NAME bdd_${test}
+                 COMMAND behave ${test}
+                 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test/bdd)
+        set_tests_properties(bdd_${test}
+            PROPERTIES ENVIRONMENT "NOMINATIM_DIR=${PROJECT_BINARY_DIR}")
+    endforeach()
 
-foreach (test ${TEST_BDD})
-    add_test(NAME bdd_${test}
-             COMMAND lettuce features/${test}
-             WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests)
-    set_tests_properties(bdd_${test}
-        PROPERTIES ENVIRONMENT "NOMINATIM_DIR=${PROJECT_BINARY_DIR}")
-endforeach()
+    add_test(NAME php
+             COMMAND phpunit ./
+             WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test/php)
 
-add_test(NAME php
-         COMMAND phpunit ./
-         WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests-php)
+    add_test(NAME phpcs
+             COMMAND phpcs --report-width=120 --colors lib website utils
+             WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
+endif()
 
+#-----------------------------------------------------------------------------
+# Postgres module
 #-----------------------------------------------------------------------------
 
-add_subdirectory(module)
-add_subdirectory(nominatim)
-add_subdirectory(docs)
+if (BUILD_MODULE)
+    add_subdirectory(module)
+endif()
 
 #-----------------------------------------------------------------------------
+# Documentation
+#-----------------------------------------------------------------------------
+
+if (BUILD_DOCS)
+   add_subdirectory(docs)
+endif()
index cd8d1cc1bd7c16d042b356eb385f116d787052fa..89b76e3b18e8f098987fe0a47b1b98ce06ccf5e2 100644 (file)
@@ -15,9 +15,9 @@ Please make sure to add the following information:
  * the result you are getting
  * the expected result, preferably a link to the OSM object you want to find,
    otherwise an address that is as precise as possible
- To get the link to the OSM object, you can try the following:
+
+To get the link to the OSM object, you can try the following:
+
  * go to https://openstreetmap.org
  * zoom to the area of the map where you expect the result and
    zoom in as much as possible
@@ -26,7 +26,7 @@ Please make sure to add the following information:
  * find the object of interest in the list that appears on the left side
  * click on the object and report the URL back that the browser shows
 
-### When Reporting Problems with your Installation...
+### When Reporting Bugs...
 
 Please add the following information to your issue:
 
@@ -38,6 +38,9 @@ Please add the following information to your issue:
    if you run from the git repo, the output of `git rev-parse HEAD`)
  * (if applicable) exact command line of the command that was causing the issue
 
+Bug reports that do not include extensive information about your system,
+about the problem and about what you have been trying to debug the problem
+will be closed.
 
 ## Workflow for Pull Requests
 
index 31c5f2263926ec3eb89927110a2830537ee9599d..db8f9bba86dfb41f33ceca3e77f141fd4dbb14b4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,45 @@
+3.4.0
+
+ * increase required version for PostgreSQL(9.3), PostGIS(2.2) and PHP(7.0)
+ * better error reporting for out-of-memory errors
+ * exclude postcode ranges separated by colon from centre point calculation
+ * update osm2pgsql, better handling of imports without flatnode file
+ * switch to more efficient algorithm for word set computation
+ * use only boundries for country and state parts of addresses
+ * improve updates of addresses with housenumbers and interpolations
+ * remove country from place_addressline table and use country_code instead
+ * optimise indexes on search_name partition tables
+ * improve searching of attached streets for large objects like airports
+ * drop support for python 2
+ * new scripts for importing Wikidata for importance
+ * create and drop indexes concurrently to not clash with auto vacuum
+ * various documentation improvements
+
+
+3.3.0
+
+ * zoom 17 in reverse now zooms in on minor streets
+ * fix use of postcode relations in address
+ * support for housenumber 0 on interpolations
+ * replace database abstraction DB with PDO and switch to using exceptions
+ * exclude line features at rank 30 from reverse geocoding
+ * remove self-reference and country from place_addressline
+ * make json output more readable (less escaping)
+ * update conversion scripts for postcodes
+ * scripts in utils/ are no longer executable (always use scripts in build dir)
+ * remove Natural Earth country fallback (OSM is complete enough)
+ * make rank assignments configurable
+ * allow accept languages with underscore
+ * new reverse-only import mode (without search index table)
+ * rely on boundaries only for states and countries
+ * update osm2pgsql, now using a configurable style
+ * provide multiple import styles
+ * improve search when house number and postcodes are dropped
+ * overhaul of setup code
+ * add support for PHPUnit 6
+ * update test database
+ * various documentation improvements
+
 3.2.0
 
  * complete rewrite of reverse search algorithm
index 406f7c858a065a11ffa56c6d806680a94f471fce..7a75fe9371f84b9df162420578e348c3fe0e80ab 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[![Build Status](https://travis-ci.org/openstreetmap/Nominatim.svg?branch=master)](https://travis-ci.org/openstreetmap/Nominatim)
+[![Build Status](https://travis-ci.org/osm-search/Nominatim.svg?branch=master)](https://travis-ci.org/osm-search/Nominatim)
 
 Nominatim
 =========
@@ -19,8 +19,16 @@ https://nominatim.org/release-docs/develop/ .
 Installation
 ============
 
+**Nominatim is a complex piece of software and runs in a complex environment.
+Installing and running Nominatim is something for experienced system
+administrators only who can do some trouble-shooting themselves. We are sorry,
+but we can not provide installation support. We are all doing this in our free
+time and there is just so much of that time to go around. Do not open issues in
+our bug tracker if you need help. You can ask questions on the mailing list
+(see below) or on [help.openstreetmap.org](https://help.openstreetmap.org/).**
+
 The latest stable release can be downloaded from https://nominatim.org.
-There you can also find [installation instructions for the release](https://nominatim.org/release-docs/latest/admin/Installation).
+There you can also find [installation instructions for the release](https://nominatim.org/release-docs/latest/admin/Installation), as well as an extensive [Troubleshooting/FAQ section](https://nominatim.org/release-docs/latest/admin/Faq/).
 
 Detailed installation instructions for the development version can be
 found at [nominatim.org](https://nominatim.org/release-docs/develop/admin/Installation)
@@ -47,11 +55,17 @@ License
 
 The source code is available under a GPLv2 license.
 
-Contact and Bug reports
-======================
 
-For questions you can join the geocoding mailinglist, see
-https://lists.openstreetmap.org/listinfo/geocoding
+Contributing
+============
+
+Contributions are welcome. For details see [contribution guide](CONTRIBUTING.md).
+
+Both bug reports and pull requests are welcome.
 
-Bugs may be reported on the github project site:
-https://github.com/openstreetmap/Nominatim
+
+Mailing list
+============
+
+For questions you can join the geocoding mailing list, see
+https://lists.openstreetmap.org/listinfo/geocoding
index d4e88304a0fdef68aae8a3d7fe552a6b85239649..4c8eb724e5fbad5c227b2aad111562cae22db1e7 100644 (file)
@@ -141,7 +141,7 @@ No. Long running Nominatim installations will differ once new import features (o
 bug fixes) get added since those usually only get applied to new/changed data.
 
 Also this document skips the optional Wikipedia data import which affects ranking
-of search results. See [Nominatim installation](http://nominatim.org/release-docs/latest/Installation) for details.
+of search results. See [Nominatim installation](https://nominatim.org/release-docs/latest/admin/Installation) for details.
 
 ##### Why Ubuntu? Can I test CentOS/Fedora/CoreOS/FreeBSD?
 
@@ -171,7 +171,7 @@ If the Postgres installation is behind a firewall, you can try
 inside the virtual machine. It will map the port to `localhost:9999` and then
 you edit `settings/local.php` with
 
-    @define('CONST_Database_DSN', 'pgsql://postgres@localhost:9999/nominatim_it');
+    @define('CONST_Database_DSN', 'pgsql:host=localhost;port=9999;user=postgres;dbname=nominatim_it');
 
 To access postgres directly remember to specify the hostname, e.g. `psql --host localhost --port 9999 nominatim_it`
 
index bd610e7e756fda910b69da6838cc6a398907c80f..87118c43524dbc9a66934afa9053ec84c54b1b32 100644 (file)
@@ -15,6 +15,15 @@ Vagrant.configure("2") do |config|
   end
 
   config.vm.define "ubuntu", primary: true do |sub|
+      sub.vm.box = "bento/ubuntu-20.04"
+      sub.vm.provision :shell do |s|
+        s.path = "vagrant/Install-on-Ubuntu-20.sh"
+        s.privileged = false
+        s.args = [checkout]
+      end
+  end
+
+  config.vm.define "ubuntu18", primary: true do |sub|
       sub.vm.box = "bento/ubuntu-18.04"
       sub.vm.provision :shell do |s|
         s.path = "vagrant/Install-on-Ubuntu-18.sh"
@@ -23,6 +32,15 @@ Vagrant.configure("2") do |config|
       end
   end
 
+  config.vm.define "ubuntu18nginx" do |sub|
+      sub.vm.box = "bento/ubuntu-18.04"
+      sub.vm.provision :shell do |s|
+        s.path = "vagrant/Install-on-Ubuntu-18-nginx.sh"
+        s.privileged = false
+        s.args = [checkout]
+      end
+  end
+
   config.vm.define "ubuntu16" do |sub|
       sub.vm.box = "bento/ubuntu-16.04"
       sub.vm.provision :shell do |s|
@@ -52,6 +70,18 @@ Vagrant.configure("2") do |config|
       sub.vm.synced_folder ".", "/vagrant", disabled: true
   end
 
+  config.vm.define "centos8" do |sub|
+      sub.vm.box = "generic/centos8"
+      sub.vm.provision :shell do |s|
+        s.path = "vagrant/Install-on-Centos-8.sh"
+        s.privileged = false
+        s.args = "yes"
+      end
+      sub.vm.synced_folder ".", "/home/vagrant/Nominatim", disabled: true
+      sub.vm.synced_folder ".", "/vagrant", disabled: true
+  end
+
+
   config.vm.provider "virtualbox" do |vb|
     vb.gui = false
     vb.memory = 2048
diff --git a/cmake/script.tmpl b/cmake/script.tmpl
new file mode 100755 (executable)
index 0000000..8146ca8
--- /dev/null
@@ -0,0 +1,4 @@
+#!@PHP_BIN@ -Cq
+<?php
+require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
+require_once(CONST_BasePath.'/@script_source@');
diff --git a/cmake/website.tmpl b/cmake/website.tmpl
new file mode 100755 (executable)
index 0000000..0257aa1
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
+require_once(CONST_BasePath.'/@script_source@');
diff --git a/data-sources/country-grid/README.md b/data-sources/country-grid/README.md
new file mode 100644 (file)
index 0000000..5c036ba
--- /dev/null
@@ -0,0 +1,77 @@
+# Fallback Country Boundaries
+
+Each place is assigned a `country_code` and partition. Partitions derive from `country_code`.
+
+Nominatim imports two pre-generated files
+
+   * `data/country_name.sql` (country code, name, default language, partition)
+   * `data/country_osm_grid.sql` (country code, geometry)
+
+before creating places in the database. This helps with fast lookups and missing data (e.g. if the data the user wants to import doesn't contain any country places).
+
+The number of countries in the world can change (South Sudan created 2011, Germany reunification), so can their boundaries. This document explain how the pre-generated files can be updated.
+
+
+
+## Country code
+
+Each place is assigned a two letter country_code based on its location, e.g. `gb` for Great Britain. Or `NULL` if no suitable country is found (usually it's in open water then).
+
+In `sql/functions.sql: get_country_code(geometry)` the place's center is checked against
+
+   1. country places already imported from the user's data file. Places are imported by rank low-to-high. Lowest rank 2 is countries so most places should be matched. Still the data file might be incomplete.
+   2. if unmatched: OSM grid boundaries
+   3. if still unmatched: OSM grid boundaries, but allow a small distance
+
+
+
+## Partitions
+
+Each place is assigned partition, which is a number 0..250. 0 is fallback/other.
+
+During place indexing (`sql/functions.sql: placex_insert()`) a place is assigned the partition based on its country code (`sql/functions.sql: get_partition(country_code)`). It checks in the `country_name` table.
+
+Most countries have their own partition, some share a partition. Thus partition counts vary greatly.
+
+Several database tables are split by partition to allow queries to run against less indices and improve caching.
+
+   * `location_area_large_<partition>`
+   * `search_name_<partition>`
+   * `location_road_<partition>`
+
+
+
+
+
+## Data files
+
+### data/country_name.sql
+
+Export from existing database table plus manual changes. `country_default_language_code` most taken from [https://wiki.openstreetmap.org/wiki/Nominatim/Country_Codes](), see `utils/country_languages.php`.
+
+
+
+### data/country_osm_grid.sql
+
+`country_grid.sql` merges territories by country. Then uses `function.sql: quad_split_geometry` to split each country into multiple [Quadtree](https://en.wikipedia.org/wiki/Quadtree) polygons for faster point-in-polygon lookups.
+
+To visualize one country as geojson feature collection, e.g. for loading into [geojson.io](http://geojson.io/):
+
+```
+-- http://www.postgresonline.com/journal/archives/267-Creating-GeoJSON-Feature-Collections-with-JSON-and-PostGIS-functions.html
+
+SELECT row_to_json(fc)
+FROM (
+  SELECT 'FeatureCollection' As type, array_to_json(array_agg(f)) As features
+  FROM (
+    SELECT 'Feature' As type,
+    ST_AsGeoJSON(lg.geometry)::json As geometry,
+    row_to_json((country_code, area)) As properties
+    FROM country_osm_grid As lg where country_code='mx'
+  ) As f
+) As fc;
+```
+
+`cat /tmp/query.sql | psql -At nominatim > /tmp/mexico.quad.geojson`
+
+![mexico](mexico.quad.png)
diff --git a/data-sources/country-grid/mexico.quad.png b/data-sources/country-grid/mexico.quad.png
new file mode 100644 (file)
index 0000000..61c1280
Binary files /dev/null and b/data-sources/country-grid/mexico.quad.png differ
diff --git a/data-sources/gb-postcodes/README.md b/data-sources/gb-postcodes/README.md
new file mode 100644 (file)
index 0000000..b5a0b9d
--- /dev/null
@@ -0,0 +1,56 @@
+# GB Postcodes
+
+
+The server [importing instructions](https://www.nominatim.org/release-docs/latest/admin/Import-and-Update/) allow optionally download [`gb_postcode_data.sql.gz`](https://www.nominatim.org/data/gb_postcode_data.sql.gz). This document explains how the file got created.
+
+## GB vs UK
+
+GB (Great Britain) is more correct as the Ordnance Survey dataset doesn't contain postcodes from Northern Ireland.
+
+## Importing separately after the initial import
+
+If you forgot to download the file, or have a new version, you can import it separately:
+
+1. Import the downloaded `gb_postcode_data.sql.gz` file.
+
+2. Run the SQL query `SELECT count(getorcreate_postcode_id(postcode)) FROM gb_postcode;`. This will update the search index.
+
+3. Run `utils/setup.php --calculate-postcodes` from the build directory. This will copy data form the `gb_postcode` table to the `location_postcodes` table.
+
+
+
+## Converting Code-Point Open data
+
+1. Download from [Code-Point® Open](https://www.ordnancesurvey.co.uk/business-and-government/products/code-point-open.html). It requires an email address where a download link will be send to.
+
+2. `unzip codepo_gb.zip`
+
+    Unpacked you'll see a directory of CSV files.
+
+        $ more codepo_gb/Data/CSV/n.csv
+        "N1 0AA",10,530626,183961,"E92000001","E19000003","E18000007","","E09000019","E05000368"
+        "N1 0AB",10,530559,183978,"E92000001","E19000003","E18000007","","E09000019","E05000368"
+
+    The coordinates are "Northings" and "Eastings" in [OSGB 1936](http://epsg.io/1314) projection. They can be projected to WGS84 like this
+
+        SELECT ST_AsText(ST_Transform(ST_SetSRID('POINT(530626 183961)'::geometry,27700), 4326));
+        POINT(-0.117872733220225 51.5394424719303)
+
+    [-0.117872733220225 51.5394424719303 on OSM map](https://www.openstreetmap.org/?mlon=-0.117872733220225&mlat=51.5394424719303&zoom=16)
+
+
+
+3. Create database, import CSV files, add geometry column, dump into file
+
+        DBNAME=create_gb_postcode_file
+        createdb $DBNAME
+        echo 'CREATE EXTENSION postgis' | psql $DBNAME
+
+        cat data/gb_postcode_table.sql | psql $DBNAME      
+        cat codepo_gb/Data/CSV/*.csv | ./data-sources/gb-postcodes/convert_codepoint.php | psql $DBNAME
+        cat codepo_gb/Doc/licence.txt | iconv -f iso-8859-1 -t utf-8 | dos2unix | sed 's/^/-- /g' > gb_postcode_data.sql
+        pg_dump -a -t gb_postcode $DBNAME | grep -v '^--' >> gb_postcode_data.sql
+      
+        gzip -9 -f gb_postcode_data.sql
+        ls -lah gb_postcode_data.*
+        # dropdb $DBNAME
diff --git a/data-sources/gb-postcodes/convert_codepoint.php b/data-sources/gb-postcodes/convert_codepoint.php
new file mode 100755 (executable)
index 0000000..12f2c67
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/env php
+<?php
+
+echo <<< EOT
+
+ALTER TABLE gb_postcode ADD COLUMN easting bigint;
+ALTER TABLE gb_postcode ADD COLUMN northing bigint;
+
+TRUNCATE gb_postcode;
+
+COPY gb_postcode (id, postcode, easting, northing) FROM stdin;
+
+EOT;
+
+$iCounter = 0;
+while ($sLine = fgets(STDIN)) {
+    $aColumns = str_getcsv($sLine);
+
+    // insert space before the third last position
+    // https://stackoverflow.com/a/9144834
+    $postcode = $aColumns[0];
+    $postcode = preg_replace('/\s*(...)$/', ' $1', $postcode);
+
+    echo join("\t", array($iCounter, $postcode, $aColumns[2], $aColumns[3]))."\n";
+
+    $iCounter = $iCounter + 1;
+}
+
+echo <<< EOT
+\.
+
+UPDATE gb_postcode SET geometry=ST_Transform(ST_SetSRID(CONCAT('POINT(', easting, ' ', northing, ')')::geometry, 27700), 4326);
+
+ALTER TABLE gb_postcode DROP COLUMN easting;
+ALTER TABLE gb_postcode DROP COLUMN northing;
+
+EOT;
diff --git a/data-sources/us-tiger/README.md b/data-sources/us-tiger/README.md
new file mode 100644 (file)
index 0000000..4091219
--- /dev/null
@@ -0,0 +1,26 @@
+# US TIGER address data
+
+Convert [TIGER](https://www.census.gov/geographies/mapping-files/time-series/geo/tiger-line-file.html)/Line dataset of the US Census Bureau to SQL files which can be imported by Nominatim. The created tables in the Nominatim database are separate from OpenStreetMap tables and get queried at search time separately.
+
+The dataset gets updated once per year. Downloading is prone to be slow (can take a full day) and converting them can take hours as well.
+
+Replace '2019' with the current year throughout.
+
+  1. Install the GDAL library and python bindings and the unzip tool
+
+        # Ubuntu:
+        sudo apt-get install python3-gdal unzip
+
+  2. Get the TIGER 2019 data. You will need the EDGES files
+     (3,233 zip files, 11GB total).
+
+         wget -r ftp://ftp2.census.gov/geo/tiger/TIGER2019/EDGES/
+
+  3. Convert the data into SQL statements. Adjust the file paths in the scripts as needed
+
+        cd data-sources/us-tiger
+        ./convert.sh <input-path> <output-path>
+
+  4. Maybe: package the created files
+  
+        tar -czf tiger2019-nominatim-preprocessed.tar.gz tiger
diff --git a/data-sources/us-tiger/convert.sh b/data-sources/us-tiger/convert.sh
new file mode 100755 (executable)
index 0000000..b94017e
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+INPATH=$1
+OUTPATH=$2
+
+if [[ ! -d "$INPATH" ]]; then
+    echo "input path does not exist"
+    exit 1
+fi
+
+if [[ ! -d "$OUTPATH" ]]; then
+    echo "output path does not exist"
+    exit 1
+fi
+
+INREGEX='_([0-9]{5})_edges.zip'
+WORKPATH="$OUTPATH/tmp-workdir/"
+mkdir -p "$WORKPATH"
+
+
+
+INFILES=($INPATH/*.zip)
+echo "Found ${#INFILES[*]} files."
+
+for F in ${INFILES[*]}; do
+    # echo $F
+
+    if [[ "$F" =~ $INREGEX ]]; then
+        COUNTYID=${BASH_REMATCH[1]}
+        SHAPEFILE="$WORKPATH/$(basename $F '.zip').shp"
+        SQLFILE="$OUTPATH/$COUNTYID.sql"
+
+        unzip -o -q -d "$WORKPATH" "$F"
+        if [[ ! -e "$SHAPEFILE" ]]; then
+            echo "Unzip failed. $SHAPEFILE not found."
+            exit 1
+        fi
+
+        ./tiger_address_convert.py "$SHAPEFILE" "$SQLFILE"
+
+        rm $WORKPATH/*
+    fi
+done
+
+OUTFILES=($OUTPATH/*.sql)
+echo "Wrote ${#OUTFILES[*]} files."
+
+rmdir $WORKPATH
similarity index 99%
rename from utils/tigerAddressImport.py
rename to data-sources/us-tiger/tiger_address_convert.py
index b1e2eb0cec8984813a2eacec1686d3a837b06af7..ebe265ed8ac4b832f58aadc1929251da319a510d 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 # Tiger road data to OSM conversion script
 # Creates Karlsruhe-style address ways beside the main way
 # based on the Massachusetts GIS script by christopher schmidt
@@ -164,7 +164,7 @@ def parse_shp_for_geom_and_tags( filename ):
         if (statefp != None) and (countyfp != None):
             county_name = county_fips_data.get(statefp + '' + countyfp)
             if county_name:
-                tags["tiger:county"] = county_name.encode("utf-8")
+                tags["tiger:county"] = county_name
 
         # tlid = poFeature.GetField("TLID")
         # if tlid != None:
diff --git a/data-sources/wikipedia-wikidata/README.md b/data-sources/wikipedia-wikidata/README.md
new file mode 100644 (file)
index 0000000..78a9a37
--- /dev/null
@@ -0,0 +1,58 @@
+## Add Wikipedia and Wikidata to Nominatim
+
+OSM contributors frequently tag items with links to Wikipedia and Wikidata. Nominatim can use the page ranking of Wikipedia pages to help indicate the relative importance of osm features. This is done by calculating an importance score between 0 and 1 based on the number of inlinks to an article for a location. If two places have the same name and one is more important than the other, the wikipedia score often points to the correct place. 
+
+These scripts extract and prepare both Wikipedia page rank and Wikidata links for use in Nominatim.  
+
+#### Create a new postgres DB for Processing
+
+Due to the size of initial and intermediate tables, processing can be done in an external database:
+```
+CREATE DATABASE wikiprocessingdb;
+```
+---
+Wikipedia
+---  
+
+Processing these data requires a large amount of disk space (~1TB) and considerable time (>24 hours).
+
+#### Import & Process Wikipedia tables
+
+This step downloads and converts [Wikipedia](https://dumps.wikimedia.org/) page data SQL dumps to postgreSQL files which can be imported and processed with pagelink information from Wikipedia language sites to calculate importance scores.
+
+- The script will processes data from whatever set of Wikipedia languages are specified in the initial languages array
+
+- Note that processing the top 40 Wikipedia languages can take over a day, and will add nearly 1TB to the processing database. The final output tables will be approximately 11GB and 2GB in size
+
+To download, convert, and import the data, then process summary statistics and compute importance scores, run:
+```
+./wikipedia_import.sh
+```
+---
+Wikidata
+---
+
+This script downloads and processes Wikidata to enrich the previously created Wikipedia tables for use in Nominatim.
+
+#### Import & Process Wikidata
+
+This step downloads and converts [Wikidata](https://dumps.wikimedia.org/wikidatawiki/) page data SQL dumps to postgreSQL files which can be processed and imported into Nominatim database. Also utilizes Wikidata Query Service API to discover and include place types.
+
+- Script presumes that the user has already processed Wikipedia tables as specified above
+
+- Script requires wikidata_place_types.txt and wikidata_place_type_levles.csv
+
+- script requires the [jq json parser](https://stedolan.github.io/jq/)
+
+- Script processes data from whatever set of Wikipedia languages are specified in the initial languages array
+
+- Script queries Wikidata Query Service API and imports all instances of place types listed in wikidata_place_types.txt
+
+- Script updates wikipedia_articles table with extracted wikidata 
+
+By including Wikidata in the wikipedia_articles table, new connections can be made on the fly from the Nominatim placex table to wikipedia_article importance scores. 
+
+To download, convert, and import the data, then process required items, run:
+``` 
+./wikidata_import.sh
+```
diff --git a/data-sources/wikipedia-wikidata/import_wikidata.sh b/data-sources/wikipedia-wikidata/import_wikidata.sh
new file mode 100755 (executable)
index 0000000..6939214
--- /dev/null
@@ -0,0 +1,274 @@
+#!/bin/bash
+
+psqlcmd() {
+     psql --quiet wikiprocessingdb
+}
+
+mysql2pgsqlcmd() {
+     ./mysql2pgsql.perl /dev/stdin /dev/stdout
+}
+
+download() {
+     echo "Downloading $1"
+     wget --quiet --no-clobber --tries 3 "$1"
+}
+
+# languages to process (refer to List of Wikipedias here: https://en.wikipedia.org/wiki/List_of_Wikipedias)
+# requires Bash 4.0
+readarray -t LANGUAGES < languages.txt
+
+
+
+echo "====================================================================="
+echo "Download wikidata dump tables"
+echo "====================================================================="
+
+# 114M  wikidatawiki-latest-geo_tags.sql.gz
+# 1.7G  wikidatawiki-latest-page.sql.gz
+# 1.2G  wikidatawiki-latest-wb_items_per_site.sql.gz
+download https://dumps.wikimedia.org/wikidatawiki/latest/wikidatawiki-latest-geo_tags.sql.gz
+download https://dumps.wikimedia.org/wikidatawiki/latest/wikidatawiki-latest-page.sql.gz
+download https://dumps.wikimedia.org/wikidatawiki/latest/wikidatawiki-latest-wb_items_per_site.sql.gz
+
+
+
+
+echo "====================================================================="
+echo "Import wikidata dump tables"
+echo "====================================================================="
+
+echo "Importing wikidatawiki-latest-geo_tags"
+gzip -dc wikidatawiki-latest-geo_tags.sql.gz          | mysql2pgsqlcmd | psqlcmd
+
+echo "Importing wikidatawiki-latest-page"
+gzip -dc wikidatawiki-latest-page.sql.gz              | mysql2pgsqlcmd | psqlcmd
+
+echo "Importing wikidatawiki-latest-wb_items_per_site"
+gzip -dc wikidatawiki-latest-wb_items_per_site.sql.gz | mysql2pgsqlcmd | psqlcmd
+
+
+
+
+
+
+echo "====================================================================="
+echo "Get wikidata places from wikidata query API"
+echo "====================================================================="
+
+echo "Number of place types:"
+wc -l wikidata_place_types.txt
+
+while read F  ; do
+    echo "Querying for place type $F..."
+    wget --quiet "https://query.wikidata.org/bigdata/namespace/wdq/sparql?format=json&query=SELECT ?item WHERE{?item wdt:P31*/wdt:P279*wd:$F;}" -O $F.json
+    jq -r '.results | .[] | .[] | [.item.value] | @csv' $F.json >> $F.txt
+    awk -v qid=$F '{print $0 ","qid}' $F.txt | sed -e 's!"http://www.wikidata.org/entity/!!' | sed 's/"//g' >> $F.csv
+    cat $F.csv >> wikidata_place_dump.csv
+    rm $F.json $F.txt $F.csv
+done < wikidata_place_types.txt
+
+
+
+
+echo "====================================================================="
+echo "Import wikidata places"
+echo "====================================================================="
+
+echo "CREATE TABLE wikidata_place_dump (
+        item        text,
+        instance_of text
+      );"  | psqlcmd
+
+echo "COPY wikidata_place_dump (item, instance_of)
+      FROM '/srv/nominatim/Nominatim/data-sources/wikipedia-wikidata/wikidata_place_dump.csv'
+      DELIMITER ','
+      CSV
+      ;"  | psqlcmd
+
+echo "CREATE TABLE wikidata_place_type_levels (
+        place_type text,
+        level      integer
+      );" | psqlcmd
+
+echo "COPY wikidata_place_type_levels (place_type, level)
+      FROM '/srv/nominatim/Nominatim/data-sources/wikipedia-wikidata/wikidata_place_type_levels.csv'
+      DELIMITER ','
+      CSV
+      HEADER
+      ;" | psqlcmd
+
+
+
+
+echo "====================================================================="
+echo "Create derived tables"
+echo "====================================================================="
+
+echo "CREATE TABLE geo_earth_primary AS
+      SELECT gt_page_id,
+             gt_lat,
+             gt_lon
+      FROM geo_tags
+      WHERE gt_globe = 'earth'
+        AND gt_primary = 1
+        AND NOT(    gt_lat < -90
+                 OR gt_lat > 90
+                 OR gt_lon < -180
+                 OR gt_lon > 180
+                 OR gt_lat=0
+                 OR gt_lon=0)
+      ;" | psqlcmd
+
+echo "CREATE TABLE geo_earth_wikidata AS
+      SELECT DISTINCT geo_earth_primary.gt_page_id,
+                      geo_earth_primary.gt_lat,
+                      geo_earth_primary.gt_lon,
+                      page.page_title,
+                      page.page_namespace
+      FROM geo_earth_primary
+      LEFT OUTER JOIN page
+                   ON (geo_earth_primary.gt_page_id = page.page_id)
+      ORDER BY geo_earth_primary.gt_page_id
+      ;" | psqlcmd
+
+echo "ALTER TABLE wikidata_place_dump
+      ADD COLUMN ont_level integer,
+      ADD COLUMN lat numeric(11,8),
+      ADD COLUMN lon numeric(11,8)
+      ;" | psqlcmd
+
+echo "UPDATE wikidata_place_dump
+      SET ont_level = wikidata_place_type_levels.level
+      FROM wikidata_place_type_levels
+      WHERE wikidata_place_dump.instance_of = wikidata_place_type_levels.place_type
+      ;" | psqlcmd
+
+echo "CREATE TABLE wikidata_places
+      AS
+      SELECT DISTINCT ON (item) item,
+                                instance_of,
+                                MAX(ont_level) AS ont_level,
+                                lat,
+                                lon
+      FROM wikidata_place_dump
+      GROUP BY item,
+               instance_of,
+               ont_level,
+               lat,
+               lon
+      ORDER BY item
+      ;" | psqlcmd
+
+echo "UPDATE wikidata_places
+      SET lat = geo_earth_wikidata.gt_lat,
+          lon = geo_earth_wikidata.gt_lon
+      FROM geo_earth_wikidata
+      WHERE wikidata_places.item = geo_earth_wikidata.page_title
+      ;" | psqlcmd
+
+
+
+
+echo "====================================================================="
+echo "Process language pages"
+echo "====================================================================="
+
+
+echo "CREATE TABLE wikidata_pages (
+        item          text,
+        instance_of   text,
+        lat           numeric(11,8),
+        lon           numeric(11,8),
+        ips_site_page text,
+        language      text
+      );" | psqlcmd
+
+for i in "${LANGUAGES[@]}"
+do
+   echo "CREATE TABLE wikidata_${i}_pages AS
+         SELECT wikidata_places.item,
+                wikidata_places.instance_of,
+                wikidata_places.lat,
+                wikidata_places.lon,
+                wb_items_per_site.ips_site_page
+         FROM wikidata_places
+         LEFT JOIN wb_items_per_site
+                ON (CAST (( LTRIM(wikidata_places.item, 'Q')) AS INTEGER) = wb_items_per_site.ips_item_id)
+         WHERE ips_site_id = '${i}wiki'
+           AND LEFT(wikidata_places.item,1) = 'Q'
+         ORDER BY wikidata_places.item
+         ;" | psqlcmd
+
+   echo "ALTER TABLE wikidata_${i}_pages
+         ADD COLUMN language text
+         ;" | psqlcmd
+
+   echo "UPDATE wikidata_${i}_pages
+         SET language = '${i}'
+         ;" | psqlcmd
+
+   echo "INSERT INTO wikidata_pages
+         SELECT item,
+                instance_of,
+                lat,
+                lon,
+                ips_site_page,
+                language
+         FROM wikidata_${i}_pages
+         ;" | psqlcmd
+done
+
+echo "ALTER TABLE wikidata_pages
+      ADD COLUMN wp_page_title text
+      ;" | psqlcmd
+echo "UPDATE wikidata_pages
+      SET wp_page_title = REPLACE(ips_site_page, ' ', '_')
+      ;" | psqlcmd
+echo "ALTER TABLE wikidata_pages
+      DROP COLUMN ips_site_page
+      ;" | psqlcmd
+
+
+
+
+echo "====================================================================="
+echo "Add wikidata to wikipedia_article table"
+echo "====================================================================="
+
+echo "UPDATE wikipedia_article
+      SET lat = wikidata_pages.lat,
+          lon = wikidata_pages.lon,
+          wd_page_title = wikidata_pages.item,
+          instance_of = wikidata_pages.instance_of
+      FROM wikidata_pages
+      WHERE wikipedia_article.language = wikidata_pages.language
+        AND wikipedia_article.title  = wikidata_pages.wp_page_title
+      ;" | psqlcmd
+
+echo "CREATE TABLE wikipedia_article_slim
+      AS
+      SELECT * FROM wikipedia_article
+      WHERE wikidata_id IS NOT NULL
+      ;" | psqlcmd
+
+echo "ALTER TABLE wikipedia_article
+      RENAME TO wikipedia_article_full
+      ;" | psqlcmd
+
+echo "ALTER TABLE wikipedia_article_slim
+      RENAME TO wikipedia_article
+      ;" | psqlcmd
+
+
+
+
+echo "====================================================================="
+echo "Dropping intermediate tables"
+echo "====================================================================="
+
+echo "DROP TABLE wikidata_place_dump;" | psqlcmd
+echo "DROP TABLE geo_earth_primary;" | psqlcmd
+for i in "${LANGUAGES[@]}"
+do
+    echo "DROP TABLE wikidata_${i}_pages;" | psqlcmd
+done
diff --git a/data-sources/wikipedia-wikidata/import_wikipedia.sh b/data-sources/wikipedia-wikidata/import_wikipedia.sh
new file mode 100755 (executable)
index 0000000..106131e
--- /dev/null
@@ -0,0 +1,297 @@
+#!/bin/bash
+
+psqlcmd() {
+     psql --quiet wikiprocessingdb |& \
+     grep -v 'does not exist, skipping' |& \
+     grep -v 'violates check constraint' |& \
+     grep -vi 'Failing row contains'
+}
+
+mysql2pgsqlcmd() {
+     ./mysql2pgsql.perl --nodrop /dev/stdin /dev/stdout
+}
+
+download() {
+     echo "Downloading $1"
+     wget --quiet --no-clobber --tries=3 "$1"
+}
+
+
+# languages to process (refer to List of Wikipedias here: https://en.wikipedia.org/wiki/List_of_Wikipedias)
+# requires Bash 4.0
+readarray -t LANGUAGES < languages.txt
+
+
+
+echo "====================================================================="
+echo "Create wikipedia calculation tables"
+echo "====================================================================="
+
+echo "CREATE TABLE linkcounts (
+        language text,
+        title    text,
+        count    integer,
+        sumcount integer,
+        lat      double precision,
+        lon      double precision
+     );"  | psqlcmd
+
+echo "CREATE TABLE wikipedia_article (
+        language    text NOT NULL,
+        title       text NOT NULL,
+        langcount   integer,
+        othercount  integer,
+        totalcount  integer,
+        lat double  precision,
+        lon double  precision,
+        importance  double precision,
+        title_en    text,
+        osm_type    character(1),
+        osm_id      bigint
+      );" | psqlcmd
+
+echo "CREATE TABLE wikipedia_redirect (
+        language   text,
+        from_title text,
+        to_title   text
+     );" | psqlcmd
+
+
+
+
+
+echo "====================================================================="
+echo "Download individual wikipedia language tables"
+echo "====================================================================="
+
+
+for i in "${LANGUAGES[@]}"
+do
+    echo "Language: $i"
+
+    # english is the largest
+    # 1.7G  enwiki-latest-page.sql.gz
+    # 6.2G  enwiki-latest-pagelinks.sql.gz
+    # 355M  enwiki-latest-langlinks.sql.gz
+    # 128M  enwiki-latest-redirect.sql.gz
+
+    # example of smaller languge turkish
+    #  53M  trwiki-latest-page.sql.gz
+    # 176M  trwiki-latest-pagelinks.sql.gz
+    # 106M  trwiki-latest-langlinks.sql.gz
+    # 3.2M  trwiki-latest-redirect.sql.gz
+
+    download https://dumps.wikimedia.org/${i}wiki/latest/${i}wiki-latest-page.sql.gz
+    download https://dumps.wikimedia.org/${i}wiki/latest/${i}wiki-latest-pagelinks.sql.gz
+    download https://dumps.wikimedia.org/${i}wiki/latest/${i}wiki-latest-langlinks.sql.gz
+    download https://dumps.wikimedia.org/${i}wiki/latest/${i}wiki-latest-redirect.sql.gz
+done
+
+
+
+
+
+echo "====================================================================="
+echo "Import individual wikipedia language tables"
+echo "====================================================================="
+
+for i in "${LANGUAGES[@]}"
+do
+    echo "Language: $i"
+
+    # We pre-create the table schema. This allows us to
+    # 1. Skip index creation. Most queries we do are full table scans
+    # 2. Add constrain to only import namespace=0 (wikipedia articles)
+    # Both cuts down data size considerably (50%+)
+
+    echo "Importing ${i}wiki-latest-pagelinks"
+
+    echo "DROP TABLE IF EXISTS ${i}pagelinks;" | psqlcmd
+    echo "CREATE TABLE ${i}pagelinks (
+       pl_from            int  NOT NULL DEFAULT '0',
+       pl_namespace       int  NOT NULL DEFAULT '0',
+       pl_title           text NOT NULL DEFAULT '',
+       pl_from_namespace  int  NOT NULL DEFAULT '0'
+    );" | psqlcmd
+
+    time \
+      gzip -dc ${i}wiki-latest-pagelinks.sql.gz | \
+      sed "s/\`pagelinks\`/\`${i}pagelinks\`/g" | \
+      mysql2pgsqlcmd | \
+      grep -v '^CREATE INDEX ' | \
+      psqlcmd
+
+
+
+
+    echo "Importing ${i}wiki-latest-page"
+
+    # autoincrement serial8 4byte
+    echo "DROP TABLE IF EXISTS ${i}page;" | psqlcmd
+    echo "CREATE TABLE ${i}page (
+       page_id             int NOT NULL,
+       page_namespace      int NOT NULL DEFAULT '0',
+       page_title          text NOT NULL DEFAULT '',
+       page_restrictions   text NOT NULL,
+       page_is_redirect    smallint NOT NULL DEFAULT '0',
+       page_is_new         smallint NOT NULL DEFAULT '0',
+       page_random         double precision NOT NULL DEFAULT '0',
+       page_touched        text NOT NULL DEFAULT '',
+       page_links_updated  text DEFAULT NULL,
+       page_latest         int NOT NULL DEFAULT '0',
+       page_len            int NOT NULL DEFAULT '0',
+       page_content_model  text DEFAULT NULL,
+       page_lang           text DEFAULT NULL
+     );" | psqlcmd
+
+    time \
+      gzip -dc ${i}wiki-latest-page.sql.gz | \
+      sed "s/\`page\`/\`${i}page\`/g" | \
+      mysql2pgsqlcmd | \
+      grep -v '^CREATE INDEX ' | \
+      psqlcmd
+
+
+
+
+    echo "Importing ${i}wiki-latest-langlinks"
+
+    echo "DROP TABLE IF EXISTS ${i}langlinks;" | psqlcmd
+    echo "CREATE TABLE ${i}langlinks (
+       ll_from   int  NOT NULL DEFAULT '0',
+       ll_lang   text NOT NULL DEFAULT '',
+       ll_title  text NOT NULL DEFAULT ''
+    );" | psqlcmd
+
+    time \
+      gzip -dc ${i}wiki-latest-langlinks.sql.gz | \
+      sed "s/\`langlinks\`/\`${i}langlinks\`/g" | \
+      mysql2pgsqlcmd | \
+      grep -v '^CREATE INDEX ' | \
+      psqlcmd
+
+
+
+
+
+    echo "Importing ${i}wiki-latest-redirect"
+
+    echo "DROP TABLE IF EXISTS ${i}redirect;" | psqlcmd
+    echo "CREATE TABLE ${i}redirect (
+       rd_from       int   NOT NULL DEFAULT '0',
+       rd_namespace  int   NOT NULL DEFAULT '0',
+       rd_title      text  NOT NULL DEFAULT '',
+       rd_interwiki  text  DEFAULT NULL,
+       rd_fragment   text  DEFAULT NULL
+    );" | psqlcmd
+
+    time \
+      gzip -dc ${i}wiki-latest-redirect.sql.gz | \
+      sed "s/\`redirect\`/\`${i}redirect\`/g" | \
+      mysql2pgsqlcmd | \
+      grep -v '^CREATE INDEX ' | \
+      psqlcmd
+done
+
+
+
+
+
+echo "====================================================================="
+echo "Process language tables and associated pagelink counts"
+echo "====================================================================="
+
+
+for i in "${LANGUAGES[@]}"
+do
+    echo "Language: $i"
+
+    echo "CREATE TABLE ${i}pagelinkcount
+          AS
+          SELECT pl_title AS title,
+                 COUNT(*) AS count,
+                 0::bigint as othercount
+          FROM ${i}pagelinks
+          WHERE pl_namespace = 0
+          GROUP BY pl_title
+          ;" | psqlcmd
+
+    echo "INSERT INTO linkcounts
+          SELECT '${i}',
+                 pl_title,
+                 COUNT(*)
+          FROM ${i}pagelinks
+          WHERE pl_namespace = 0
+          GROUP BY pl_title
+          ;" | psqlcmd
+
+    echo "INSERT INTO wikipedia_redirect
+          SELECT '${i}',
+                 page_title,
+                 rd_title
+          FROM ${i}redirect
+          JOIN ${i}page ON (rd_from = page_id)
+          WHERE page_namespace = 0
+            AND rd_namespace = 0
+          ;" | psqlcmd
+
+done
+
+
+for i in "${LANGUAGES[@]}"
+do
+    for j in "${LANGUAGES[@]}"
+    do
+        echo "UPDATE ${i}pagelinkcount
+              SET othercount = ${i}pagelinkcount.othercount + x.count
+              FROM (
+                SELECT page_title AS title,
+                       count
+                FROM ${i}langlinks
+                JOIN ${i}page ON (ll_from = page_id)
+                JOIN ${j}pagelinkcount ON (ll_lang = '${j}' AND ll_title = title)
+              ) AS x
+              WHERE x.title = ${i}pagelinkcount.title
+              ;" | psqlcmd
+    done
+
+    echo "INSERT INTO wikipedia_article
+          SELECT '${i}',
+                 title,
+                 count,
+                 othercount,
+                 count + othercount
+          FROM ${i}pagelinkcount
+          ;" | psqlcmd
+done
+
+
+
+
+
+echo "====================================================================="
+echo "Calculate importance score for each wikipedia page"
+echo "====================================================================="
+
+echo "UPDATE wikipedia_article
+      SET importance = LOG(totalcount)/LOG((SELECT MAX(totalcount) FROM wikipedia_article))
+      ;" | psqlcmd
+
+
+
+
+
+echo "====================================================================="
+echo "Clean up intermediate tables to conserve space"
+echo "====================================================================="
+
+for i in "${LANGUAGES[@]}"
+do
+    echo "DROP TABLE ${i}pagelinks;"     | psqlcmd
+    echo "DROP TABLE ${i}page;"          | psqlcmd
+    echo "DROP TABLE ${i}langlinks;"     | psqlcmd
+    echo "DROP TABLE ${i}redirect;"      | psqlcmd
+    echo "DROP TABLE ${i}pagelinkcount;" | psqlcmd
+done
+
+echo "all done."
diff --git a/data-sources/wikipedia-wikidata/languages.txt b/data-sources/wikipedia-wikidata/languages.txt
new file mode 100644 (file)
index 0000000..bef5d0e
--- /dev/null
@@ -0,0 +1,39 @@
+ar
+bg
+ca
+cs
+da
+de
+en
+es
+eo
+eu
+fa
+fr
+ko
+hi
+hr
+id
+it
+he
+lt
+hu
+ms
+nl
+ja
+no
+pl
+pt
+kk
+ro
+ru
+sk
+sl
+sr
+fi
+sv
+tr
+uk
+vi
+war
+zh
\ No newline at end of file
similarity index 99%
rename from mysql2pgsql/mysql2pgsql.perl
rename to data-sources/wikipedia-wikidata/mysql2pgsql.perl
index e21eff37a5a8f4d63d60f28c9fd06eede31a57fe..3297331fc27adf16ccc22dd57492fde31e2ffe21 100755 (executable)
@@ -341,7 +341,7 @@ if (/(create\s+table\s+)([-_\w]+)\s/i) { #  example: CREATE TABLE `english_engli
         #  in the foreign-key case it will only remove the foreign-key constraint, not the other table entirely.)
         #  (source: 8.1.3 docs, section "drop table")
         warn "table $table will be dropped CASCADE\n";
-        $pre_create_sql .= "DROP TABLE $table CASCADE\\g\n";    # custom dumps may be missing the 'dump' commands
+        $pre_create_sql .= "DROP TABLE $table CASCADE;\n";    # custom dumps may be missing the 'dump' commands
     }
 
     s/(create\s+table\s+)([-_\w]+)\s/$1 $table /i;
@@ -367,6 +367,7 @@ if ($create_sql ne "") {         # we are inside create table statement so lets
         s/INSERT METHOD[=\s+][^;\s]+//i;
         s/PASSWORD=[^;\s]+//i;
         s/ROW_FORMAT=(?:DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT)+//i;
+        s/KEY_BLOCK_SIZE=8//i;
         s/DELAY KEY WRITE=[^;\s]+//i;
         s/INDEX DIRECTORY[=\s+][^;\s]+//i;
         s/DATA DIRECTORY=[^;\s]+//i;
@@ -389,6 +390,7 @@ if ($create_sql ne "") {         # we are inside create table statement so lets
         s/DEFAULT CHARSET=[^;\s]+//i; #  my mysql version is 4.1.11
         s/ENGINE\s*=\s*[^;\s]+//i;   #  my mysql version is 4.1.11
         s/ROW_FORMAT=[^;\s]+//i;   #  my mysql version is 5.0.22
+        s/KEY_BLOCK_SIZE=8//i; 
         s/MIN_ROWS=[^;\s]+//i;
         s/MAX_ROWS=[^;\s]+//i;
         s/AVG_ROW_LENGTH=[^;\s]+//i;
diff --git a/data-sources/wikipedia-wikidata/wikidata_place_type_levels.csv b/data-sources/wikipedia-wikidata/wikidata_place_type_levels.csv
new file mode 100644 (file)
index 0000000..e414321
--- /dev/null
@@ -0,0 +1,199 @@
+place_type,level\r
+Q9842,4\r
+Q9430,3\r
+Q928830,4\r
+Q9259,1\r
+Q91028,5\r
+Q8514,2\r
+Q8502,2\r
+Q83405,3\r
+Q82794,2\r
+Q820477,1\r
+Q811979,1\r
+Q8072,2\r
+Q79007,2\r
+Q786014,3\r
+Q75848,2\r
+Q75520,2\r
+Q728937,4\r
+Q7275,2\r
+Q719456,3\r
+Q7075,3\r
+Q697295,4\r
+Q6852233,2\r
+Q682943,3\r
+Q665487,5\r
+Q655686,3\r
+Q643589,5\r
+Q641226,2\r
+Q631305,2\r
+Q6256,2\r
+Q6023295,2\r
+Q5773747,5\r
+Q56061,1\r
+Q55659167,4\r
+Q55488,4\r
+Q55465477,3\r
+Q54050,2\r
+Q532,3\r
+Q53060,2\r
+Q52177058,4\r
+Q515716,5\r
+Q5153984,4\r
+Q515,3\r
+Q5144960,5\r
+Q5119,4\r
+Q5119,4\r
+Q5107,2\r
+Q5084,4\r
+Q5031071,4\r
+Q5003624,2\r
+Q4989906,1\r
+Q4976993,3\r
+Q486972,1\r
+Q486972,2\r
+Q483110,3\r
+Q4830453,4\r
+Q47521,3\r
+Q473972,1\r
+Q46831,2\r
+Q46614560,5\r
+Q44782,3\r
+Q44613,4\r
+Q44539,4\r
+Q44494,2\r
+Q44377,2\r
+Q4421,2\r
+Q43501,2\r
+Q4286337,3\r
+Q42523,3\r
+Q41176,2\r
+Q40357,3\r
+Q4022,4\r
+Q40080,2\r
+Q39816,2\r
+Q39715,3\r
+Q39614,1\r
+Q3957,3\r
+Q3947,4\r
+Q3914,3\r
+Q38723,2\r
+Q38720,3\r
+Q3623867,5\r
+Q35666,2\r
+Q355304,3\r
+Q35509,2\r
+Q35112127,3\r
+Q34985575,4\r
+Q34876,5\r
+Q34763,2\r
+Q34627,4\r
+Q3455524,3\r
+Q34442,4\r
+Q33837,2\r
+Q33506,3\r
+Q32815,4\r
+Q3257686,2\r
+Q3240715,2\r
+Q3191695,5\r
+Q3153117,2\r
+Q30198,2\r
+Q30139652,3\r
+Q294422,3\r
+Q2870166,3\r
+Q27686,3\r
+Q274153,3\r
+Q271669,1\r
+Q2659904,2\r
+Q24529780,2\r
+Q24354,3\r
+Q2354973,4\r
+Q23442,2\r
+Q23413,3\r
+Q23397,3\r
+Q2327515,4\r
+Q2311958,5\r
+Q22927291,6\r
+Q22698,1\r
+Q2175765,4\r
+Q205495,4\r
+Q204832,3\r
+Q2042028,2\r
+Q202216,6\r
+Q1970725,3\r
+Q194203,5\r
+Q194195,2\r
+Q190429,2\r
+Q185187,3\r
+Q185113,2\r
+Q183366,2\r
+Q1799794,1\r
+Q1788454,4\r
+Q1785071,3\r
+Q1777138,3\r
+Q177634,2\r
+Q177380,2\r
+Q174814,4\r
+Q174782,2\r
+Q17350442,2\r
+Q17343829,3\r
+Q17334923,0\r
+Q17018380,3\r
+Q16970,4\r
+Q16917,3\r
+Q16831714,4\r
+Q165,3\r
+Q160742,4\r
+Q159719,3\r
+Q159334,4\r
+Q15640612,5\r
+Q15324,2\r
+Q15284,5\r
+Q15243209,6\r
+Q152081,1\r
+Q15195406,4\r
+Q1500350,5\r
+Q149621,5\r
+Q14757767,4\r
+Q14350,3\r
+Q1410668,3\r
+Q1394476,3\r
+Q1377575,2\r
+Q1353183,3\r
+Q134447,4\r
+Q133215,3\r
+Q133056,2\r
+Q13221722,3\r
+Q13220204,2\r
+Q1311958,4\r
+Q1303167,3\r
+Q130003,3\r
+Q12518,2\r
+Q12516,3\r
+Q1248784,3\r
+Q123705,3\r
+Q12323,3\r
+Q12284,4\r
+Q12280,4\r
+Q121359,2\r
+Q1210950,2\r
+Q11755880,3\r
+Q11707,3\r
+Q11315,3\r
+Q11303,3\r
+Q1115575,4\r
+Q1107656,1\r
+Q10864048,1\r
+Q1076486,2\r
+Q105731,3\r
+Q105190,3\r
+Q1048525,3\r
+Q102496,5\r
+Q28872924,1\r
+Q15617994,1\r
+Q159313,2\r
+Q24398318,3\r
+Q327333,2\r
+Q43229,1\r
+Q860861,1\r
+Q4989906,1\r
diff --git a/data-sources/wikipedia-wikidata/wikidata_place_types.txt b/data-sources/wikipedia-wikidata/wikidata_place_types.txt
new file mode 100644 (file)
index 0000000..5578fd3
--- /dev/null
@@ -0,0 +1,195 @@
+Q9842
+Q9430
+Q928830
+Q9259
+Q91028
+Q8514
+Q8502
+Q83405
+Q82794
+Q820477
+Q811979
+Q8072
+Q79007
+Q786014
+Q75848
+Q75520
+Q728937
+Q7275
+Q719456
+Q7075
+Q697295
+Q6852233
+Q682943
+Q665487
+Q655686
+Q643589
+Q641226
+Q631305
+Q6256
+Q6023295
+Q5773747
+Q56061
+Q55659167
+Q55488
+Q55465477
+Q54050
+Q532
+Q53060
+Q52177058
+Q515716
+Q5153984
+Q515
+Q5144960
+Q5119
+Q5107
+Q5084
+Q5031071
+Q5003624
+Q4989906
+Q4976993
+Q486972
+Q483110
+Q4830453
+Q47521
+Q473972
+Q46831
+Q46614560
+Q44782
+Q44613
+Q44539
+Q44494
+Q44377
+Q4421
+Q43501
+Q4286337
+Q42523
+Q41176
+Q40357
+Q4022
+Q40080
+Q39816
+Q39715
+Q39614
+Q3957
+Q3947
+Q3914
+Q38723
+Q38720
+Q3623867
+Q35666
+Q355304
+Q35509
+Q35112127
+Q34985575
+Q34876
+Q34763
+Q34627
+Q3455524
+Q34442
+Q33837
+Q33506
+Q32815
+Q3257686
+Q3240715
+Q3191695
+Q3153117
+Q30198
+Q30139652
+Q294422
+Q2870166
+Q27686
+Q274153
+Q271669
+Q2659904
+Q24529780
+Q24354
+Q2354973
+Q23442
+Q23413
+Q23397
+Q2327515
+Q2311958
+Q22927291
+Q22698
+Q2175765
+Q205495
+Q204832
+Q2042028
+Q202216
+Q1970725
+Q194203
+Q194195
+Q190429
+Q185187
+Q185113
+Q183366
+Q1799794
+Q1788454
+Q1785071
+Q1777138
+Q177634
+Q177380
+Q174814
+Q174782
+Q17350442
+Q17343829
+Q17334923
+Q17018380
+Q16970
+Q16917
+Q16831714
+Q165
+Q160742
+Q159719
+Q159334
+Q15640612
+Q15324
+Q15284
+Q15243209
+Q152081
+Q15195406
+Q1500350
+Q149621
+Q14757767
+Q14350
+Q1410668
+Q1394476
+Q1377575
+Q1353183
+Q134447
+Q133215
+Q133056
+Q13221722
+Q13220204
+Q1311958
+Q1303167
+Q130003
+Q12518
+Q12516
+Q1248784
+Q123705
+Q12323
+Q12284
+Q12280
+Q121359
+Q1210950
+Q11755880
+Q11707
+Q11315
+Q11303
+Q1115575
+Q1107656
+Q10864048
+Q1076486
+Q105731
+Q105190
+Q1048525
+Q102496
+Q28872924
+Q15617994
+Q159313
+Q24398318
+Q327333
+Q43229
+Q860861
diff --git a/data-sources/wikipedia-wikidata/wikidata_places.md b/data-sources/wikipedia-wikidata/wikidata_places.md
new file mode 100644 (file)
index 0000000..bc153ff
--- /dev/null
@@ -0,0 +1,200 @@
+
+## Wikidata place types and related OSM Tags
+
+Wikidata does not have any official ontologies, however the [DBpedia project](https://wiki.dbpedia.org/) has created an [ontology](https://wiki.dbpedia.org/services-resources/ontology) that covered [place types](http://mappings.dbpedia.org/server/ontology/classes/#Place). The table below used the DBpedia place ontology as a starting point, and is provided as a cross-reference to the relevant OSM tags.
+
+The Wikidata place types listed in the table below can be used in conjunction with the [Wikidata Query Service](https://query.wikidata.org/) to retrieve instances of those place types from the Wikidata knowledgebase. 
+
+```
+SELECT ?item ?lat ?lon
+WHERE {
+  ?item wdt:P31*/wdt:P279*wd:Q9430; wdt:P625 ?pt.
+  ?item p:P625?loc.
+  ?loc psv:P625?cnode.
+  ?cnode wikibase:geoLatitude?lat.
+  ?cnode wikibase:geoLongitude?lon.
+}
+```
+
+An example json return for all instances of the Wikidata item "Q9430" (Ocean) can be seen at [json](https://query.wikidata.org/bigdata/namespace/wdq/sparql?format=json&query=SELECT?item?lat?lon%20WHERE{?item%20wdt:P31*/wdt:P279*wd:Q9430;wdt:P625?pt.?item%20p:P625?loc.?loc%20psv:P625?cnode.?cnode%20wikibase:geoLatitude?lat.?cnode%20wikibase:geoLongitude?lon.})
+
+**NOTE** the OSM tags listed are those listed in the wikidata entries, and not all the possible matches for tags within OSM.
+
+
+   title   |             concept                   |       OSM Tag     | 
+-----------|---------------------------------------|------------------|
+[Q17334923](https://www.wikidata.org/entity/Q17334923)  | Location | | 
+[Q811979](https://www.wikidata.org/entity/Q811979)           | Architectural Structure | | 
+[Q194195](https://www.wikidata.org/entity/Q194195)   | Amusement park | 
+[Q204832](https://www.wikidata.org/entity/Q204832)   | Roller coaster | [attraction=roller_coaster](https://wiki.openstreetmap.org/wiki/Tag:attraction=roller_coaster) | 
+[Q2870166](https://www.wikidata.org/entity/Q2870166)   | Water ride | |
+[Q641226](https://www.wikidata.org/entity/Q641226)    | Arena | [amenity=events_centre](https://wiki.openstreetmap.org/wiki/Tag:amenity=events_centre) | 
+[Q41176](https://www.wikidata.org/entity/Q41176)     | Building | [building=yes](https://wiki.openstreetmap.org/wiki/Key:building) |
+[Q1303167](https://www.wikidata.org/entity/Q1303167)   | Barn | [building=barn](https://wiki.openstreetmap.org/wiki/Tag:building=barn) |
+[Q655686](https://www.wikidata.org/entity/Q655686)   | Commercial building | [building=commercial](https://wiki.openstreetmap.org/wiki/Tag:building=commercial) | 
+[Q4830453](https://www.wikidata.org/entity/Q4830453)   | Business | |
+[Q7075](https://www.wikidata.org/entity/Q7075)     | Library | [amenity=library](https://wiki.openstreetmap.org/wiki/Tag:amenity=library) |
+[Q133215](https://www.wikidata.org/entity/Q133215)   | Casino | [amenity=casino](https://wiki.openstreetmap.org/wiki/Tag:amenity=casino) | 
+[Q23413](https://www.wikidata.org/entity/Q23413)     | Castle | [historic=castle](https://wiki.openstreetmap.org/wiki/Tag:historic=castle) |
+[Q83405](https://www.wikidata.org/entity/Q83405)     | Factory | | 
+[Q53060](https://www.wikidata.org/entity/Q53060)     | Gate  | [barrier=gate](https://wiki.openstreetmap.org/wiki/Tag:barrier=gate) |cnode%20wikibase:geoLatitude?lat.?cnode%20wikibase:geoLongitude?lon.})
+[Q11755880](https://www.wikidata.org/entity/Q11755880)           | Residential Building  | [building=residential](https://wiki.openstreetmap.org/wiki/Tag:building=residential) | 
+[Q3947](https://www.wikidata.org/entity/Q3947)      | House  | [building=house](https://wiki.openstreetmap.org/wiki/Tag:building=house) |
+[Q35112127](https://www.wikidata.org/entity/Q35112127)           | Historic Building  | |
+[Q5773747](https://www.wikidata.org/entity/Q5773747)   | Historic house  | | 
+[Q38723](https://www.wikidata.org/entity/Q38723)           | Higher Education Institution  | 
+[Q3914](https://www.wikidata.org/entity/Q3914)      | School  | [amenity=school](https://wiki.openstreetmap.org/wiki/Tag:amenity=school) | 
+[Q9842](https://www.wikidata.org/entity/Q9842)      | Primary school  | | 
+[Q159334](https://www.wikidata.org/entity/Q159334)    | Secondary school  | | 
+[Q16917](https://www.wikidata.org/entity/Q16917)     | Hospital  | [amenity=hospital](https://wiki.openstreetmap.org/wiki/Tag:amenity=hospital), [healthcare=hospital](https://wiki.openstreetmap.org/wiki/Tag:healthcare=hospital), [building=hospital](https://wiki.openstreetmap.org/wiki/Tag:building=hospital) |
+[Q27686](https://www.wikidata.org/entity/Q27686)     | Hotel  | [tourism=hotel](https://wiki.openstreetmap.org/wiki/Tag:tourism=hotel), [building=hotel](https://wiki.openstreetmap.org/wiki/Tag:building=hotel) |
+[Q33506](https://www.wikidata.org/entity/Q33506)     | Museum  | [tourism=museum](https://wiki.openstreetmap.org/wiki/Tag:tourism=museum) |
+[Q40357](https://www.wikidata.org/entity/Q40357)     | Prison  | [amenity=prison](https://wiki.openstreetmap.org/wiki/Tag:amenity=prison) |
+[Q24398318](https://www.wikidata.org/entity/Q24398318)           | Religious Building  | |
+[Q160742](https://www.wikidata.org/entity/Q160742)    | Abbey  | |
+[Q16970](https://www.wikidata.org/entity/Q16970)     | Church (building)  | [building=church](https://wiki.openstreetmap.org/wiki/Tag:building=church) |
+[Q44613](https://www.wikidata.org/entity/Q44613)     | Monastery  | [amenity=monastery](https://wiki.openstreetmap.org/wiki/Tag:amenity=monastery) | 
+[Q32815](https://www.wikidata.org/entity/Q32815)     | Mosque  | [building=mosque](https://wiki.openstreetmap.org/wiki/Tag:building=mosque) | 
+[Q697295](https://www.wikidata.org/entity/Q697295)    | Shrine  | [building=shrine](https://wiki.openstreetmap.org/wiki/Tag:building=shrine) |
+[Q34627](https://www.wikidata.org/entity/Q34627)     | Synagogue  | [building=synagogue](https://wiki.openstreetmap.org/wiki/Tag:building=synagogue) |
+[Q44539](https://www.wikidata.org/entity/Q44539)     | Temple  | [building=temple](https://wiki.openstreetmap.org/wiki/Tag:building=temple) | 
+[Q11707](https://www.wikidata.org/entity/Q11707)     | Restaurant  | [amenity=restaurant](https://wiki.openstreetmap.org/wiki/Tag:amenity=restaurant) |
+[Q11315](https://www.wikidata.org/entity/Q11315)     | Shopping mall  | [shop=mall](https://wiki.openstreetmap.org/wiki/Tag:shop=mall), [shop=shopping_centre](https://wiki.openstreetmap.org/wiki/Tag:shop=shopping_centre) | 
+[Q11303](https://www.wikidata.org/entity/Q11303)     | Skyscraper  | |
+[Q17350442](https://www.wikidata.org/entity/Q17350442)           | Venue  | |
+[Q41253](https://www.wikidata.org/entity/Q41253)           | Movie Theater  | [amenity=cinema](https://wiki.openstreetmap.org/wiki/Tag:amenity=cinema) | 
+[Q483110](https://www.wikidata.org/entity/Q483110)    | Stadium  | [leisure=stadium](https://wiki.openstreetmap.org/wiki/Tag:leisure=stadium), [building=stadium](https://wiki.openstreetmap.org/wiki/Tag:building=stadium) |
+[Q24354](https://www.wikidata.org/entity/Q24354)     | Theater (structure)  | [amenity=theatre](https://wiki.openstreetmap.org/wiki/Tag:amenity=theatre) |
+[Q121359](https://www.wikidata.org/entity/Q121359)    | Infrastructure  | |
+[Q1248784](https://www.wikidata.org/entity/Q1248784)   | Airport  | |
+[Q12323](https://www.wikidata.org/entity/Q12323)     | Dam  | [waterway=dam](https://wiki.openstreetmap.org/wiki/Tag:waterway=dam) |
+[Q1353183](https://www.wikidata.org/entity/Q1353183)   | Launch pad  | | 
+[Q105190](https://www.wikidata.org/entity/Q105190)   | Levee  | [man_made=dyke](https://wiki.openstreetmap.org/wiki/Tag:man_made=dyke) |
+[Q105731](https://www.wikidata.org/entity/Q105731)    | Lock (water navigation)   | [lock=yes](https://wiki.openstreetmap.org/wiki/Key:lock) |
+[Q44782](https://www.wikidata.org/entity/Q44782)     | Port  | |
+[Q159719](https://www.wikidata.org/entity/Q159719)    | Power station  | [power=plant](https://wiki.openstreetmap.org/wiki/Tag:power=plant) |
+[Q174814](https://www.wikidata.org/entity/Q174814)    | Electrical substation   |  |
+[Q134447](https://www.wikidata.org/entity/Q134447)    | Nuclear power plant  | [plant:source=nuclear](https://wiki.openstreetmap.org/wiki/Tag:plant:source=nuclear) |
+[Q786014](https://www.wikidata.org/entity/Q786014)   | Rest area  | [highway=rest_area](https://wiki.openstreetmap.org/wiki/Tag:highway=rest_area), [highway=services](https://wiki.openstreetmap.org/wiki/Tag:highway=services) |
+[Q12280](https://www.wikidata.org/entity/Q12280)     | Bridge  | [bridge=* ](https://wiki.openstreetmap.org/wiki/Key:bridge), [man_made=bridge](https://wiki.openstreetmap.org/wiki/Tag:man_made=bridge) |
+[Q728937](https://www.wikidata.org/entity/Q728937)           | Railroad Line  | [railway=rail](https://wiki.openstreetmap.org/wiki/Tag:railway=rail) | 
+[Q1311958](https://www.wikidata.org/entity/Q1311958)           | Railway Tunnel  | | 
+[Q34442](https://www.wikidata.org/entity/Q34442)     | Road  | [highway=* ](https://wiki.openstreetmap.org/wiki/Key:highway), [route=road](https://wiki.openstreetmap.org/wiki/Tag:route=road) |
+[Q1788454](https://www.wikidata.org/entity/Q1788454)   | Road junction  |  | 
+[Q44377](https://www.wikidata.org/entity/Q44377)     | Tunnel  | [tunnel=* ](https://wiki.openstreetmap.org/wiki/Key:tunnel) |
+[Q5031071](https://www.wikidata.org/entity/Q5031071)  | Canal tunnel  | |
+[Q719456](https://www.wikidata.org/entity/Q719456)    | Station  | [public_transport=station](https://wiki.openstreetmap.org/wiki/Tag:public_transport=station) |
+[Q205495](https://www.wikidata.org/entity/Q205495)    | Filling station  | [amenity=fuel](https://wiki.openstreetmap.org/wiki/Tag:amenity=fuel) |
+[Q928830](https://www.wikidata.org/entity/Q928830)    | Metro station  | [station=subway](https://wiki.openstreetmap.org/wiki/Tag:station=subway) |
+[Q55488](https://www.wikidata.org/entity/Q55488)     | Train station  | [railway=station](https://wiki.openstreetmap.org/wiki/Tag:railway=station) |
+[Q2175765](https://www.wikidata.org/entity/Q2175765)   | Tram stop  | [railway=tram_stop](https://wiki.openstreetmap.org/wiki/Tag:railway=tram_stop), [public_transport=stop_position](https://wiki.openstreetmap.org/wiki/Tag:public_transport=stop_position) |
+[Q6852233](https://www.wikidata.org/entity/Q6852233)   | Military building  | |
+[Q44494](https://www.wikidata.org/entity/Q44494)     | Mill (grinding)  | |
+[Q185187](https://www.wikidata.org/entity/Q185187)    | Watermill  | [man_made=watermill](https://wiki.openstreetmap.org/wiki/Tag:man_made=watermill) |
+[Q38720](https://www.wikidata.org/entity/Q38720)     | Windmill  | [man_made=windmill](https://wiki.openstreetmap.org/wiki/Tag:man_made=windmill) | 
+[Q4989906](https://www.wikidata.org/entity/Q4989906)   | Monument  | [historic=monument](https://wiki.openstreetmap.org/wiki/Tag:historic=monument) |
+[Q5003624](https://www.wikidata.org/entity/Q5003624)   | Memorial  | [historic=memorial](https://wiki.openstreetmap.org/wiki/Tag:historic=memorial) |
+[Q271669](https://www.wikidata.org/entity/Q271669)   | Landform  | |
+[Q190429](https://www.wikidata.org/entity/Q190429)    | Depression (geology)  | |
+[Q17018380](https://www.wikidata.org/entity/Q17018380)  | Bight (geography)  | | 
+[Q54050](https://www.wikidata.org/entity/Q54050)     | Hill  | |
+[Q1210950](https://www.wikidata.org/entity/Q1210950)   | Channel (geography)  | |
+[Q23442](https://www.wikidata.org/entity/Q23442)    | Island  | [place=island](https://wiki.openstreetmap.org/wiki/Tag:place=island) | 
+[Q42523](https://www.wikidata.org/entity/Q42523)    | Atoll  | |
+[Q34763](https://www.wikidata.org/entity/Q34763)    | Peninsula  | | 
+[Q355304](https://www.wikidata.org/entity/Q355304)   | Watercourse  | |
+[Q30198](https://www.wikidata.org/entity/Q30198)    | Marsh  | [wetland=marsh](https://wiki.openstreetmap.org/wiki/Tag:wetland=marsh) |
+[Q75520](https://www.wikidata.org/entity/Q75520)    | Plateau  | |
+[Q2042028](https://www.wikidata.org/entity/Q2042028)  | Ravine  | |
+[Q631305](https://www.wikidata.org/entity/Q631305)   | Rock formation  | | 
+[Q12516](https://www.wikidata.org/entity/Q12516)    | Pyramid  | |
+[Q1076486](https://www.wikidata.org/entity/Q1076486) | Sports venue  |  |
+[Q682943](https://www.wikidata.org/entity/Q682943)   | Cricket field  | [sport=cricket](https://wiki.openstreetmap.org/wiki/Tag:sport=cricket) | 
+[Q1048525](https://www.wikidata.org/entity/Q1048525)  | Golf course  | [leisure=golf_course](https://wiki.openstreetmap.org/wiki/Tag:leisure=golf_course) |
+[Q1777138](https://www.wikidata.org/entity/Q1777138)  | Race track  | [highway=raceway](https://wiki.openstreetmap.org/wiki/Tag:highway=raceway) | 
+[Q130003](https://www.wikidata.org/entity/Q130003)   | Ski resort  | |
+[Q174782](https://www.wikidata.org/entity/Q174782)   | Town square  | [place=square](https://wiki.openstreetmap.org/wiki/Tag:place=square) |
+[Q12518](https://www.wikidata.org/entity/Q12518)    | Tower  | [building=tower](https://wiki.openstreetmap.org/wiki/Tag:building=tower), [man_made=tower](https://wiki.openstreetmap.org/wiki/Tag:man_made=tower) |
+[Q39715](https://www.wikidata.org/entity/Q39715)    | Lighthouse  | [man_made=lighthouse](https://wiki.openstreetmap.org/wiki/Tag:man_made=lighthouse) |
+[Q274153](https://www.wikidata.org/entity/Q274153)   | Water tower | [building=water_tower](https://wiki.openstreetmap.org/wiki/Tag:building=water_tower), [man_made=water_tower](https://wiki.openstreetmap.org/wiki/Tag:man_made=water_tower) |
+[Q43501](https://www.wikidata.org/entity/Q43501)    | Zoo  | [tourism=zoo](https://wiki.openstreetmap.org/wiki/Tag:tourism=zoo) | 
+[Q39614](https://www.wikidata.org/entity/Q39614)    | Cemetery  | [amenity=grave_yard](https://wiki.openstreetmap.org/wiki/Tag:amenity=grave_yard), [landuse=cemetery](https://wiki.openstreetmap.org/wiki/Tag:landuse=cemetery) |
+[Q152081](https://www.wikidata.org/entity/Q152081)   | Concentration camp  | |
+[Q1107656](https://www.wikidata.org/entity/Q1107656)  | Garden  | [leisure=garden](https://wiki.openstreetmap.org/wiki/Tag:leisure=garden) |
+[Q820477](https://www.wikidata.org/entity/Q820477)   | Mine |  | 
+[Q33837](https://www.wikidata.org/entity/Q33837) | Archipelago  | [place=archipelago](https://wiki.openstreetmap.org/wiki/Tag:place=archipelago) | 
+[Q40080](https://www.wikidata.org/entity/Q40080)    | Beach  | [natural=beach](https://wiki.openstreetmap.org/wiki/Tag:natural=beach) |
+[Q15324](https://www.wikidata.org/entity/Q15324)    | Body of water | [natural=water](https://wiki.openstreetmap.org/wiki/Tag:natural=water) | 
+[Q23397](https://www.wikidata.org/entity/Q23397)    | Lake  | [water=lake](https://wiki.openstreetmap.org/wiki/Tag:water=lake) | 
+[Q9430](https://www.wikidata.org/entity/Q9430)     | Ocean  | |
+[Q165](https://www.wikidata.org/entity/Q165)    | Sea  | |
+[Q47521](https://www.wikidata.org/entity/Q47521)    | Stream  | | 
+[Q12284](https://www.wikidata.org/entity/Q12284)    | Canal  | [waterway=canal](https://wiki.openstreetmap.org/wiki/Tag:waterway=canal) |
+[Q4022](https://www.wikidata.org/entity/Q4022)     | River  | [waterway=river](https://wiki.openstreetmap.org/wiki/Tag:waterway=river), [type=waterway](https://wiki.openstreetmap.org/wiki/Relation:waterway) |
+[Q185113](https://www.wikidata.org/entity/Q185113)   | Cape | [natural=cape](https://wiki.openstreetmap.org/wiki/Tag:natural=cape) | 
+[Q35509](https://www.wikidata.org/entity/Q35509)    | Cave  | [natural=cave_entrance](https://wiki.openstreetmap.org/wiki/Tag:natural=cave_entrance) | 
+[Q8514](https://www.wikidata.org/entity/Q8514)     | Desert  | | 
+[Q4421](https://www.wikidata.org/entity/Q4421)     | Forest  | [natural=wood](https://wiki.openstreetmap.org/wiki/Tag:natural=wood) |
+[Q35666](https://www.wikidata.org/entity/Q35666)    | Glacier  | [natural=glacier](https://wiki.openstreetmap.org/wiki/Tag:natural=glacier) |
+[Q177380](https://www.wikidata.org/entity/Q177380)   | Hot spring | | 
+[Q8502](https://www.wikidata.org/entity/Q8502)     | Mountain  | [natural=peak](https://wiki.openstreetmap.org/wiki/Tag:natural=peak) | 
+[Q133056](https://www.wikidata.org/entity/Q133056)   | Mountain pass  | | 
+[Q46831](https://www.wikidata.org/entity/Q46831)    | Mountain range  | |
+[Q39816](https://www.wikidata.org/entity/Q39816)    | Valley  | [natural=valley](https://wiki.openstreetmap.org/wiki/Tag:natural=valley) |
+[Q8072](https://www.wikidata.org/entity/Q8072)     | Volcano  | [natural=volcano](https://wiki.openstreetmap.org/wiki/Tag:natural=volcano) |
+[Q43229](https://www.wikidata.org/entity/Q43229)    | Organization  |  | 
+[Q327333](https://www.wikidata.org/entity/Q327333)   | Government agency  | [office=government](https://wiki.openstreetmap.org/wiki/Tag:office=government)|
+[Q22698](https://www.wikidata.org/entity/Q22698)    | Park | [leisure=park](https://wiki.openstreetmap.org/wiki/Tag:leisure=park) | 
+[Q159313](https://www.wikidata.org/entity/Q159313)   | Urban agglomeration | |
+[Q177634](https://www.wikidata.org/entity/Q177634)   | Community  | |
+[Q5107](https://www.wikidata.org/entity/Q5107)    | Continent | [place=continent](https://wiki.openstreetmap.org/wiki/Tag:place=continent) |
+[Q6256](https://www.wikidata.org/entity/Q6256)     | Country  | [place=country](https://wiki.openstreetmap.org/wiki/Tag:place=country) | 
+[Q75848](https://www.wikidata.org/entity/Q75848)    | Gated community | | 
+[Q3153117](https://www.wikidata.org/entity/Q3153117) | Intercommunality  | |
+[Q82794](https://www.wikidata.org/entity/Q82794)    | Region  | | 
+[Q56061](https://www.wikidata.org/entity/Q56061)    | Administrative division  | [boundary=administrative](https://wiki.openstreetmap.org/wiki/Tag:boundary=administrative)  | 
+[Q665487](https://www.wikidata.org/entity/Q665487)   | Diocese | | 
+[Q4976993](https://www.wikidata.org/entity/Q4976993)  | Parish | [boundary=civil_parish](https://wiki.openstreetmap.org/wiki/Tag:boundary=civil_parish) |
+[Q194203](https://www.wikidata.org/entity/Q194203)   | Arrondissements of France  | |
+[Q91028](https://www.wikidata.org/entity/Q91028)    | Arrondissements of Belgium  | | 
+[Q3623867](https://www.wikidata.org/entity/Q3623867)  | Arrondissements of Benin  | | 
+[Q2311958](https://www.wikidata.org/entity/Q2311958)  | Canton (country subdivision) | [political_division=canton](https://wiki.openstreetmap.org/wiki/FR:Cantons_in_France) |
+[Q643589](https://www.wikidata.org/entity/Q643589)   | Department |  | 
+[Q202216](https://www.wikidata.org/entity/Q202216)   | Overseas department and region  | |
+[Q149621](https://www.wikidata.org/entity/Q149621)   | District  | [place=district](https://wiki.openstreetmap.org/wiki/Tag:place=district) |
+[Q15243209](https://www.wikidata.org/wiki/Q15243209) | Historic district  | |
+[Q5144960](https://www.wikidata.org/entity/Q5144960)  | Microregion  | | 
+[Q15284](https://www.wikidata.org/entity/Q15284)    | Municipality  | |
+[Q515716](https://www.wikidata.org/entity/Q515716)   | Prefecture  | |
+[Q34876](https://www.wikidata.org/entity/Q34876)    | Province  | |
+[Q3191695](https://www.wikidata.org/entity/Q3191695)  | Regency (Indonesia)  | |
+[Q1970725](https://www.wikidata.org/entity/Q1970725)  | Natural region  | |
+[Q486972](https://www.wikidata.org/entity/Q486972)   | Human settlement  | | 
+[Q515](https://www.wikidata.org/entity/Q515)      | City  | [place=city](https://wiki.openstreetmap.org/wiki/Tag:place=city) |
+[Q5119](https://www.wikidata.org/entity/Q5119)     | Capital city | [capital=yes](https://wiki.openstreetmap.org/wiki/Key:capital) |
+[Q4286337](https://www.wikidata.org/entity/Q4286337)  | City district  | | 
+[Q1394476](https://www.wikidata.org/entity/Q1394476)  | Civil township  | | 
+[Q1115575](https://www.wikidata.org/entity/Q1115575)  | Civil parish  | [designation=civil_parish](https://wiki.openstreetmap.org/wiki/Tag:designation=civil_parish) |
+[Q5153984](https://www.wikidata.org/entity/Q5153984)  | Commune-level subdivisions  | |
+[Q123705](https://www.wikidata.org/entity/Q123705)   | Neighbourhood  | [place=neighbourhood](https://wiki.openstreetmap.org/wiki/Tag:place=neighbourhood) |
+[Q1500350](https://www.wikidata.org/entity/Q1500350)  | Townships of China  | |
+[Q17343829](https://www.wikidata.org/entity/Q17343829)           | Unincorporated Community  | |
+[Q3957](https://www.wikidata.org/entity/Q3957)     | Town  | [place=town](https://wiki.openstreetmap.org/wiki/Tag:place=town) | 
+[Q532](https://www.wikidata.org/entity/Q532)      | Village  | [place=village](https://wiki.openstreetmap.org/wiki/Tag:place=village) |
+[Q5084](https://www.wikidata.org/entity/Q5084)     | Hamlet   | [place=hamlet](https://wiki.openstreetmap.org/wiki/Tag:place=hamlet) | 
+[Q7275](https://www.wikidata.org/entity/Q7275)     | State  | | 
+[Q79007](https://www.wikidata.org/entity/Q79007)    | Street  | |
+[Q473972](https://www.wikidata.org/entity/Q473972)   | Protected area  | [boundary=protected_area](https://wiki.openstreetmap.org/wiki/Tag:boundary=protected_area) |
+[Q1377575](https://www.wikidata.org/entity/Q1377575)  | Wildlife refuge  | | 
+[Q1410668](https://www.wikidata.org/entity/Q1410668)  | National Wildlife Refuge  | [protection_title=National Wildlife Refuge](ownership=national), [ownership=national](https://wiki.openstreetmap.org/wiki/Tag:ownership=national)|
+[Q9259](https://www.wikidata.org/entity/Q9259)     | World Heritage Site  | |
+
+---
+
+### Future Work
+
+The Wikidata improvements to Nominatim can be further enhanced by:
+
+- continuing to add new Wikidata links to OSM objects
+- increasing the number of place types accounted for in the wikipedia_articles table
+- working to use place types in the wikipedia_article matching process
diff --git a/data/country_naturalearthdata.sql b/data/country_naturalearthdata.sql
deleted file mode 100644 (file)
index f9ad693..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
---
--- PostgreSQL database dump
---
-
-SET statement_timeout = 0;
-SET client_encoding = 'UTF8';
-SET standard_conforming_strings = off;
-SET check_function_bodies = false;
-SET client_min_messages = warning;
-SET escape_string_warning = off;
-
-SET search_path = public, pg_catalog;
-
-SET default_tablespace = '';
-
-SET default_with_oids = false;
-
-CREATE TABLE country_naturalearthdata (
-    country_code character varying(2),
-    geometry geometry,
-    CONSTRAINT enforce_dims_geometry CHECK ((st_ndims(geometry) = 2)),
-    CONSTRAINT enforce_srid_geometry CHECK ((st_srid(geometry) = 4326))
-);
-
-COPY country_naturalearthdata (country_code, geometry) FROM stdin;
-af     0106000020E610000001000000010300000001000000450000003033F10DFC9A4E407CCCF99135D341406024E0FC851D4F406624EC1DA5A24140DC2C1A6A097E4F40963C379CB7B3414090D427DEC5984F407A55829AB7ED4140F880D288CFFD4F4028480EC0040142400ECD8E83F9225040168D5204F22742400C60EE2FC02F5040462F260B508E42401A831052B165504080FCF25711A74240C634F569B86F50402A780706A1D44240D02047A2E98D5040ACC285B767B24240AA0C99DA30A150409AC285B76FAE42406E69289DD9C450401811A11F96AD4240DC03C2B61EF550404481DE298F924240A441CC0DAD08514060ADD76FF582424024C41A29013751403E0A673213AC4240B0BDE0BB8F4C5140646993AB58934240CA16D3C7336151405459829AF3CD424048BB430576875140C46D30E24ACB424086CC541651915140FA857BE019DE42401EE1025E159851402668F6F4B6114340DEC27DF2A2B351403C21157A3E3E4340CC18D3C747D6514010766ACF232143407E82D66452CF5140E089189704FA42400219D3C7AEE25140FEF6B86AF0F34240B882D664B7DC51404817DB0C67884240B845CC8D0EF651401C3C9A657C5E4240BA19D3C75A0C524010EE7E7D6179424088D2F1CCC2285240926C3062168642407A7AFFC0A4505240A6B8AE9364BF42401CF6136FB77C5240666D30E2F5B5424012FE4D5CB8BE52400C7BA43CC2B54240884292201DCA52402299292807914240B20E5F6DDBA4524042C522EEAA824240944B69C452845240D48AB5CD076B42400869EEAFE13A5240C220B230295C424036F7B0A529F65140E6B94BCA454142403CA15B50CAD05140C85CBC878509424080A15BD0EBDF5140E09529A845D34140DA0EFCA33CE75140FE64932B9C934140887B9C775CC751405EE24410D75D414048FDEA9208CA514096F25521A92C41402A93E7756FB85140FE2489D492FE404014BB43058E7B5140889C004C93024140764769C4B5945140AC349A65E4AD404002EE7638FA6B51409CE57EFD808D404096C41A29CD505140B2E71BB43F404040088E4A3F5654514080252AF4C2E63F406E9484AC4E3B51406C80B9B6C49E3F40A02D1EC6A423514034ADB27C9BB63F40201FAA6BBBF25040AC8356ED3A953F40CEEB76B8BCEB5040D44B86839B4D3F402AE43CCB16BC5040303E12A90E4E3F40A8CBF1CC6998504020791C8028BD3E408680739B2C9650408CD1AB4250E33D40FAF987C9FF425040E4C871D5E0783D40C858B4426D1650409C1EC72A5E8F3D4044DA02DE78095040D07956ED3F573D40A4B6A2F26EC64F40F813F086E4773D40981032B561464F4058EA93F78D513D4094B7DC5FE76F4E403C5DD10149D43D40A8045B11FFE34E401CDCE5AF60BC3E408C156C2283D94E40F818535027613F40FCFB20A491784E409CCED49E4E8C3F406C95BA3D8C6E4E404E0204E96917404010247D339E444E40F6B885379A7D4040547AD2885A7B4E4020E3E1C6B0C340403CBA7996A3434E4090CB96C895D640401462870ACF664E40623A379CB93341403033F10DFC9A4E407CCCF99135D34140
-al     0106000020E6100000010000000103000000010000001600000048D9A0741A973440267730E27DED4440B03B6AA49276344040B7D76FEEC144404865C633ED9A3440BC56AB76098B4440A829BC5C210535406A26157ADE6B44402889E855FFFF344054D7F9913D4A4440C8FBC296CCAC34401EBFAE13AE374440C8DC3DAB709D34406EF81BB4140E44402007377167263440E2E26DECFFCF434040E4144FE1FA3340F434268BF5D84340E8D93DABC2F533404E1304E91EF54340985C29FDF4673340FA02F35719204440E0699DD7AD513340908C7BE0155D4440709DD00A4F6733406EBA74A66CB4444008019A3A3F8A3340C4C8E88028DC444080D0033E2C5F3340B028157A53F0444028F95FCDF24D3340965C482D0E194540301D82EFF0BC3340B0FA7E7D1858454018B71B8936CD334072F3441003404540407EAEE818123440846E59BE574B4540D052B522A448344040267843FE284540F001FD03E185344096E86DECE21B454048D9A0741A973440267730E27DED4440
-dz     0106000020E6100000010000000103000000010000003D000000B04B5934BFFF274054B5AB42BF783740309E963E52252140085BF323CF90354020FF55D9D3B51640587B4FB3E8993340400FB268D61111408CD5DE75BF273340C0DF1853DB4309407864A16BAF0E3340C0F3C69A5C2C09406C26FA5D8EB13340C0ED9D3EFD770540ACAF82E631DB33400090BCC3E87C00400899376869243440000205ADF02BFD3FB034D1015E9C3440805C395D06CDF8BFA4305D27ECCA3640A0EEDD597FB113C0C4C2E5AF7DF93840F0771BA6695E21C0389AB27C4F653B4088D00D328B5421C0E004B619E8963B4090F969C1255921C03474B9B65ED73C4060817E2DA63C1CC00C11535048943D4040731B64163E18C078077CAC50BB3D40608ADABCF0F714C06CFEA4081D003E4020A99915477013C06CCD71D54D803E40C02596F405860DC0C0CBD49E9EE53E4040FB3965132E0DC048B04FB325A33F4040095C87458D08C0ACB04FB378B93F4080881E7DCEEE04C0223C7189130C4040805FE7A427EDF4BF6AF1F257A6214040006ECF5929FEF1BFAEF58F0E65534040801D062A7335F6BFEE25260B986E404000B11AD83ABCFBBFF6A97426B9F54040802558E211B0FCBF4A0E3ED692434140804C25B7FB5B01C078A29D028E95414000DED2F66F56F3BF207EDE2980DB414000609BF06C50C0BFEE1EB2B0BFF14140005143C7C11FE03F903E371C9026424080D7F39B7F78F73FF6FAF2D7854D4240C0B6BCC3284B0940CED533FF56644240E093C61656431340845EBC87B96E424020143E8ECD471540F453E5E3B65B4240407359761A0C1940AC958CF1298E4240A0E5856F50521D402470CD18278F42400031CAB3C4F21E40E6B311DD5E7142404003FDA488D72040B25EBC8724794240E0A1D0AB866F204096FAF25772374240A06C0042B3C0204038B4AE936CBD414010E277B92E4820405A3ED4D2DB53414080FD33B711191E403C2589D4760C4140E068375458731E409A5DF6F40BAC404000E814F066DC204040855284C95F404070DAA015D2E020408C8B8CF1CD404040B0BD7EF3771C2240BA9B9D02250D4040F072630BDBF62240208F67FEBB4E3E40E086741C7C9C2340F40CB619B56C3D4010E066A851B82340800719E3C1F53C4040264823265E2340004F9794E8243C40C078004223832340206FB9B631B03B40A03D93A113422340BC09F08615243B4090D48F04BD6E2340CC0D2AF41F833A40E09D5CD189A3224078F77BAC25183A40C0EA3D4C46D2234070500B6F8E5D394080EEDA8282E52340B4AA9A31DCEF384090A65CD1919B2440F0EF7BAC1A61384030D01B2AF08A254090F7B519029038407055CD0E101F2740343D979410193840B04B5934BFFF274054B5AB42BF783740
-ao     0106000020E61000000100000001030000000100000042000000A06441E9E877274018AC9C9E484D31C0F0BFD0ABBA47274028B0D60B53AC30C0501D606E9C8E2740F0E76F0D6F962FC0207952FA453F2840E819DDADB2C12DC0800578B9EA592840988D5425F6E52CC09064077C0C0029403CE5801E6C182BC0D0FC03DF197A29401C59F8959B462AC0E0C7963E36A02A4094C098699EF728C050D80A1977442B40E429393DC91328C0E00FDB823A7A2B40A4677D81819826C04079DE1F6D5F2B40EC43F8954F7625C0206230D84FC62A40102273AA45BF24C0A003A115F23D2A40CC2D84BBA68823C00027606E30C029401CC21D55785522C0603FABECADDB2940BC9A5EFC0DEB21C0A03E0EB60D792A400CC7F4F8102021C020989D78B7DD2940288EFA02DB621EC030D74486E374294010CADB7D5FB51BC0B087C6D4667428407881D1A6832D19C07077B5C315A52840D8AD67A37E6618C0E0E4B8606878294068FD1FC2DBDC17C0609C3AAFBB0C2A40087CD1A603F017C040093E4C4EC02A40E879D1A6FB7417C00815BC5C9753304048392A99878217C0103F18ECBB92304058351988967D1AC010990A7835DC304038F8370DA2E31CC03082BFF909173140886E7517C92E1EC0404DEF8F147931404085EA21192320C0C04C52595C22324090804CBB61F31FC0182C3037D4763240A8DD78B457631FC088689DD749043340C850B6BEF6F31FC088BEF22CA72A334040C7CA6CE6F31EC0E8033771E16A3340D8603BAA289F1CC000333037A8093440B04B8D6227771CC0F01748827417344010E96069B9C51BC02043A411119A3440789A4581DCC11BC038BA1B89C683344098966EDDCB321DC080AE0A7865BA35404000727ADA291DC0D8F24EBC17BF3540B80E0FB12AAE1FC0D8DB033EFAF2354010A66F0D9F9C20C0004507DB42CD35404C9A5EFC41D121C0605618EC0BE03540C076026D230C23C0C84607DB70353640EC2E84BB22CA23C05813D4A7BF27364084BE6F0D6B2B26C09036F6C91D6736400813C56274FC25C02880D7445CD6364094681AB8050926C078E2033EF07437405815629958BC25C0902F82EF86E93740D8DBF4F888DA25C0C0EB3DAB940438409041BE287F7926C068AA969D76E7374090017AE4CE7127C008EC3DAB74143840103273AAF16128C0388FAEE850EE374044872BC9B62129C068F9B185210438402C6809A774D229C0B0CAF22C13EF3540F81C8BF5FFCB29C03012D4A749E335401C70CC348F1430C01004C396FE8F3640028FB4E900E630C03074636A0D373740303288F0EA8531C0489F969D8E60354008A862313EEE31C080D53DABC8F4324022C6E71C02CA31C0A0CB033E68433240403188F0584F31C090D6D0AB5E6B2C404E0F66CE645A31C0E0A8D7E5F31D2C407AED43AC626C31C0E01078B9BAEC2A402896EE56A1F830C0B0930042CFA02940227EA3D8FBF030C0C0A9E8F6506E28402226B14C961C31C0A06441E9E877274018AC9C9E484D31C0
-ao     0106000020E61000000100000001030000000100000009000000208E00425B5D2840E8F6828BE32817C020B8F90776D42740F09090FFE52614C0D0A3AE8920A32840F0222A99C76C12C05021C337D43D294090B9C33289C011C01028606EB4FD2940B844AF84D91F13C0D087299E62432940202DC7CF0FF713C070C0963E9EEF284050DC717A52FE14C0F0B5BF9A95DF2840D85E8628BABC16C0208E00425B5D2840E8F6828BE32817C0
-ar     0106000020E6100000010000000103000000010000000C000000EE128DE4FFEF50C0545BD09DCCEC4AC0EE128DE4FFEF50C0815496A4CCEC4AC0C8F207B9CC9C50C0843AAEEF99394BC0B805B640334350C09D606D489A594BC09732AF06006050C0B6616D4899994BC0C8F207B9CC9C50C02B54F96D00A04BC013AFC3346FBD50C076640A7FCA724BC0193F86EAFEE350C0F62600A85B6F4BC09F3212D0882851C01E838F6A4C6F4BC034A34F1A322551C04FA7EBF99F594AC007394C3D001051C04F2DD74BCD8C4AC0EE128DE4FFEF50C0545BD09DCCEC4AC0
-ar     0106000020E6100000010000000103000000010000006E000000C8822E77A5104BC0D4471416328C39C00EAE27BD6DD04AC06E5B2527F71F3AC06C6646C209D34AC0B2B717B368EC3AC080D5E615D03E4BC07A49DAA889793BC064DA83CCC5944BC004A4CC34C5E13BC04643EA323C254CC0325D4E834EDA3CC0FAD8495F04D04CC0942C7E195F373EC0B4D20FF2FDEF4CC0D04E03053D043FC0EE434D7C3B124DC041A6E44BB20540C0B8AD5099FA104DC072A8E44B318540C08E3D130FC02C4DC004572C2DB0A140C0A2F2945DAA364DC0AAC5CC0069F440C0440743A56A3F4DC0AA07740E3B3741C0EA414DFCE79C4CC08C09740EDEA441C0CC3EB0C561AE4CC0221C851F1BFD41C0D6404DFC655E4CC014804E4FE13442C0B2993F88E6644CC056174BB2667342C040D9495FE4DF4CC022E0DD11891743C06E2E027EAD9D4DC004632C2D305C43C0A89C059B649E4EC0843AD09DD67643C09A278EA3002B4FC063854E4FF26943C002056C0119104FC0DCE2DD1149B643C0CA5AC1D64E2A4FC058884E4F171644C018DC0FF2AF124FC04B2DBF8CA45644C0BC952E77765F4FC0937CDA74AE8344C0B2197D929FE24FC02CFB8B59599544C047BA378FDA2E50C0BE26851FBE6644C0FB9BB2E38D4750C0DE4C44783B8844C060C171BCA03E50C0C2D092936C0745C06F8D3E096B1350C0167C3D3EF42D45C0E4861DE6C2E04FC0E08FEB85970545C0B69ACBADA1BA4FC03427E8E8144845C01A8AA1523E1850C08A355CC3D06F45C0A39815ADA24B50C0FCE4A3A468BF45C011DD59710B5550C01E395CC32C4046C01A70B95D2D6450C05274C963B58446C0C1A78947A3A050C07696EB85128546C0744CFA84CDD250C0CD675589A4C646C039273BAC27E550C0D0F8177FA02647C0C15C0B5636A650C0C4ECA3A4578447C099735694066950C06DBD0DA8399E47C0AFF5A4AF0B7F50C0C24ED09D0F1148C0D29A15ADA2CA50C0BC0B8C59425948C030A989C73AF450C0AC9D4E4F51EF48C0DFF16AC2A32E51C02338E8E8D12149C064037CD3DD4851C0F4687EE5C25D49C05E58D128323451C03ACE4789B3E249C058D91F84990951C005BB9941CC2C4AC0BDC80E33942451C0A0D91E2D54264AC03A41862AE55F51C04C7655FD45124AC0908B67258CFA51C0745096A427014AC0EC40E9F3141552C0EBA788BC85B649C05C1B2A9BD61352C0985EA741A85649C09230D8A2723E52C01F28D7D7E75E49C05B973EC9FE5452C04F8AA0077C3049C0DE9ADB7F965A52C0DF9FEB85C2A848C03630D8E27C2952C08B0F2990767048C0843D4CBD311552C064180034431F48C052852D78A11C52C0EA873D3E88DE47C00803DF5CB4FA51C02CA85F60427147C0CA5E6E1F54E351C0C890B118C6C746C0906CE23932EA51C0394B6DD4A17C46C09EF46A0242CE51C0A6EEDD11626446C0E1B3C3741BD551C06B8777AB293446C07F9C78B6CAF251C02046D09D841A46C044BE9A18B3DD51C06EB27071D0E445C0204E5D4E96FA51C0FE17D7D74BB445C038F2CD8B870952C0CA6A2C2DA02045C02ABBFDA1CBEF51C0CC446DD4930645C0672FD8629BFA51C06286B1188A6A44C0744AC09791EB51C05BF151EC71E743C0924D5D0E77DA51C016D46937407543C05E279E7523B451C0A028BF8CC84643C032D9828D97C751C06815AE7BD5C942C0A3168DE4CCC751C01C3233673D5442C098452361589751C03856F2BFA60042C064D882CDD59851C08E4DB852B89541C09A7BF3CA4E7451C0708525F3C61841C0D04B5D4E257451C05C0F4BB20EA340C08D269EF5C28451C006205CC3AC8B40C0D21CC7913EA251C00A351B50715D3FC08E1F6408D17A51C0BC0085531A563EC049F36A02DE8051C056DA6231305E3DC05F07190AFE6951C09EB7DD458A753CC0BE51973B144051C07EB3DD456E853BC0B06F1C27EA1251C06ABE51203BE63AC0C4C80E33112651C0249792C7C4813AC03AAD263EB41851C0FA3CA03B5D2F3AC099027CD3BA1A51C006629901C08438C088239E3505D550C01EA4DD457A0638C0F88CA1120EBF50C09EB0EE5681FC36C0C5374CBDD3C650C0EEB28B8D65BC36C04E118D647E9150C0E63AB14C12D535C04476F3CAC03D50C0BC31DAA86B1336C0BDFADE1C211850C0C27581B64FCC36C0682454B650FE4FC062CE10795FFE35C0C4FF3114596C4FC0E62366CEF40836C062C5C4F3AF574FC0041E2C61C03F36C0D2D5723B5C6C4EC030252C6176E137C0DADAAC28B5034EC038B5EE56650838C064454DFC4F674DC0AE88585A7EC538C0FE202BDA7BE34CC058167E198F2939C0663FB0C51BD14CC06C3AA03B899A39C034B2ED4F204F4DC0E80D6D08AC1F3BC0AE94059B0CCE4CC04608339B59653BC058B4273D4C3E4CC02C76D36E6A8C3BC03A862E7711D94BC02083474949633BC080C8723BF7644BC09CC0EE562D9F3AC0D6AC8A8609504BC0D4A4A3D83FBD39C0C8822E77A5104BC0D4471416328C39C0
-am     0106000020E6100000010000000103000000010000001500000030021A6A97CA4540F0ECA759CB8B4440A06B80D04C7B4640A27C6ACFA09F4440E84CFBE4517B4640680FCA7B819F44409CBA9BB8F996464054C0AE13207E444050997996B9C746406060821AF967444084A6ED70F9AD4640E0D35C5BDF474440DCA0B3032AF2464092AD9D02F71B44401C7E91E114CE4640A8DC33FF32F34340C83A4D9D6B044740DA0BCAFB62D04340A4B6614BE33D474088E26D6C69BB4340D4D8836DBB404740600D6732A36243400C75BA3D621247403425B2B0DF5E4340D01E65E820DE46405804908EECA84340203A4D9DB7DE4640D4C3E800ACBC434028394D9D29A646404401F35762BC43409C20021F418046405AB3D76FB8DE43407C755774A1654640066F93AB43DB43400C152B7B333346408CEAA7D9A3004440704D981B06D4454006DA96C874204440707D2E1857E04540042D4FE7BE5E444030021A6A97CA4540F0ECA759CB8B4440
-au     0106000020E61000000100000001030000000100000011000000BEE2E2690E766240D6D4CC00756744C028912A0B40896240512A22560E7044C0AA08A202848B6240CB0A0034FE0745C00C68CEBB8D806240E6FD8B59193445C0DEE2E2E93F7D6240AE9CC229139B45C0A06E08E910726240823C9630067845C04845ACD9D95B6240BB22AE7B3AD145C0327F19FA395562408C119D6A59CA45C030D46E4F8C4162404A7BA0075EC645C0C288F05DD22D624070B30DA8CD5845C0E6585A6171296240A65CB8524D0445C08A81B670FA16624082ED177FCE9444C0E67342D6CC17624042E240DB1B5A44C0A8DAA83CBC2C62406EA8D33A726544C06EE57FE0A64B624090D5CC00A09144C09289F01D135D62408D537EE5118044C0BEE2E2690E766240D6D4CC00756744C0
-au     0106000020E610000001000000010300000001000000E000000000E1F88684895F4050EEC5C6A41B40C08427DA01AC455F4096AE1EB9475D40C02486067B2F0E5F40D46ADA74D07A40C0689AB442DA015F4008E0B4B5EEBD40C0848506FB37EA5E40CF5BC963F1F140C03AF54305E8B35E40BA39A7410DF540C072A9C553B78B5E408D0DAE7B6F0041C04812C9F025535E40C6E0B4B517E940C044A4281D23255E402266A00710F740C08006F24C32F95D401EE1B4B5EFFC40C0B6E3CF2A21D35D407E15E8E8324141C01A651E4678C05D40B96A3D3E693B41C00EB339AE5DA05D40E1F3C5C6975F41C0E241FC2399815D40C48AC229498841C056E80998E9525D40BE9BD33A428341C0B23288C901285D40178E5F60368341C01A91B4421EE45C402E3E4478763141C014F0E03BB7C15C40C33D4478271941C0CCD4F8861CC35C406F2B3367CCCF40C0B801F24CE3E25C40343C44785EBE40C08438C236BDED5C4079CEA3A439A140C01A0CC9F07AEB5C40EDD77A483F7340C0A80F66274EF35C409809AE7B3F1A40C05C16A09422EC5C40E42B44ACC89C3FC0D4897A554CCA5C400E5E1416029A3EC02C75CC8DCFBF5C4070735F94DD073EC00A7C06FB8FC25C404E9D585A0A763DC0A2B5731B16A95C40608947496BCF3CC0186758B374A75C40B2BE17B332843CC02252AAEB1B8B5C401EB6DD453A1E3CC0E269F5E920835C402E01F92DB3553BC0C4B710528F5E5C4028D839D50A8B3AC000814068B1555C4058E74AE6D51D3AC0CA9C289DD0715C4076B9B4E98C8C3AC03A062CBA385C5C40264814160C9F39C02296EE2FF67B5C40D01244AC46E939C0388C170CE78E5C4036F95BF7664C3AC0A22CEB92D58D5C40E88281B649C939C0A88B170C296E5C40640BA775BAFF38C0F05447A205685C40444EEBB918AF38C05662BB7C2F595C4028801EED7F6238C07662BB7C21605C4040EE5BF76CCE37C0C410035E3F6D5C4012A2DD456A8F37C01C443691FA755C40F0B0EE565B0F37C07EF51AA9236F5C40FCE4BEC0B87936C016B5739B95895C407C8C696B81C135C06622146F6B8E5C40EEDAE71C7A8436C0DE2214EF74A95C40CE8C696B5BD435C0E8E26C6173DD5C409ACFADAFC37E35C06AA9FFC0A1FC5C402A0BB886951135C0E8B7731B8B2D5D40D887696BA1B334C0863D5FEDA44A5D4074138F2AA49F34C060631E46425C5D4060DDBEC034BF34C05CE90918B18E5D4080D1E71CCC5F34C04257AA6B82B55D406CD48453684334C070F4E03B38BF5D40FE5B0DDC500B34C0C22E4EDC28D05D40F04D9901F4F333C082EEA6CE88F35D402AD38453FCF933C0C6D75B50CC365E4038C4107907AF33C04EC74A3F97595E409EB49C9E603D33C01E50D3C7ED695E40C26381B68FB432C06EFB7D72778F5E40B6F77D19993232C01495170C58925E4084B8734271CC31C0B8CBE77504945E4064FAB786454131C072F54305CEC05E401CD1F82DBB6730C0CC705833C3DB5E408C453638C04431C0103E2580FFF65E40F225B14CAC1131C0988FDD1E35E05E40FEA89C9EB49830C0D8445FED4AF45E403E70CC347F1C30C0C48269C487105F40B4BFE71CF45330C0902D146F4D185F40C04F73AA55222FC0A0085516463B5F404C29518873262EC0A06147A2B44A5F404C3AFFCF5C5C2DC0407358B3E26A5F404CEAE3E727052DC074095516E46B5F4038B1137E18762CC0B4FF7D7202885F403C15DDADD6B12CC0AC28DA0124895F4020FB912F25312CC04C4BFC2349A55F405CAB7647D4E72BC040ECCF2A37C45F40287009A7CCA22BC038AC281D7FF35F40C4D335A0C68D2CC0C8828D94820B6040C06B95CC03BD2DC0F826FE91891F6040144D10E181C02DC0F6973B1CE333604084E7A97A87F02DC02CED90711B2D6040A40B060A62D72CC03CBA5DBE6F3C6040D40EDDADC63C2BC00C7D53E7DC4A60409480B7EEF9B62AC00A2B9B48DF456040506DA6DD0C372AC0607619FAC453604034BA5EFCA11229C0F280F0DD26676040BC8A6536075E28C03A81F0DD85776040140A171BDB9A28C05055F7D7689260403C0F5188633A28C0A4AA4CADD4916040DCF2050ABE3427C03CAA4CED637A604074A1EA212D8C26C0BADD7F606E8B6040BC62E04ACD4126C0E847833DA0A06040CCDFF4F8B8C026C0D6B8C087A0B160402C765425B29227C016E9560494CC6040CCA44DEBB01528C0B026615BB7D56040EC4084BBE2E127C02849833D8DE96040946CE04A497F28C004D20B063FFC60406CF9A240AEEC27C05AF42DA844086140440BB451431928C0AE27615BC20F61408495D910E4B627C0003972AC731E614028188BF533B428C0C68A2A8BEC156140DC7F542542C629C01CB0E9E3C509614020A2D9101C952AC042053FB9C6FE6040D842AD1726A62AC0226F42D67B026140782E6299D4722BC09208DC2F15F96040005584BBAE722CC04283F09DB7ED6040B8BFEA214D6E2DC09801A28201F06040BCAD3CDAD7FE2DC0FC2AFE117209614044FA1D55BC192FC02C21276E172261408000BB8BD4BD2FC00A1E8A3793326140867706A20F3730C048C2FAF4B349614074322527BFCE30C0BEDDE2A9B9526140E60C66CE7ECE30C05896012F79636140F6FC54BD0B1031C094555AA1566861403616A03B215F31C0AA18504AE3866140FCF81A50F7B531C0220105CC039C61400E5747497B5E31C014A5758946A26140DAB0D60B01D530C0D8B2E963C5A861400C6E2FFE8C6330C076D8A83CBEAC6140D89954255AAE2FC060319B4878B6614000EFE3E7FF162EC02038D53507B2614018DD6F0D671F2DC0BC97012F56B46140ACFC912F718A2CC0F4787CC3A2B06140F84CE7846A652BC032724256D4B46140843FAD17AEE329C02416B353F7BA614028DE801EAC7B29C002A2D8D2FBB56140BCC6D2D6B2D028C03E8A8D54B7BD61400C88653643C127C094F72DA8CAC36140ECA1EA21F5A726C0FAC05D3E99C4614040A6248FE11526C07205A2027DD0614008516C701C5625C07446499083D96140501BFFCF905026C0DAD50B86BCDB614018654314C59127C0027342D6B5E36140C0FFDCADAECF27C0CC05A28213E56140E8DD1D55BCA628C0A0D9A83CB5F06140782D9C0631AB29C08C54BDEA1BF36140F0E3801E04CD2AC0922B615BFAF161404C4310E1FD862BC0727342D681FD6140E42E282CBC182DC082F590F109126240FC2EC562A4572CC0FC734216A31C6240B0F857C25C302DC0A6DAA8BCFD2B624068DDD2D64EF82DC034117926B4286240648F1AB83DDB2EC0DE36383F872F6240D2DACFD1214930C03A18B3936234624068A6FF67F0C830C0988553E7713C6240AAC584532CE830C04AAB124021456240E440FCCAFBC231C01A89F09D09426240CEB339D5B24732C0FE0A3F39664C62409A203D7251F532C09C45AC19136F62401A5670A5107B33C004E3E2E9AE856240C854D36EB8F433C006542034269B6240FCD48453266434C05280197AF5966240262103052BA234C0E42727EE42A96240EAC039D5B04235C03610DCEFB4B562401A660DDCAE5736C01C58BDEA79C262406EE3BEC06E1F36C074DDA83C74CF6240BAAEEE565F8E36C0E895C7C145D76240B6589901046736C04C147926C9DC6240B84F2527557637C01A18165D7EF362406618B886851338C08811DC6F5A0263409CA2400F387538C0664FE6C65D1B6340ACF45BF77A4439C02A86B6705B24634040CFFF6738123AC0129E01AF2E2563404083E47F2DA43AC0DCA43B1CF9226340DE9D2FFEA2423BC0CEEC1C173932634026C7EE562D1C3CC06086B63063306340E60B9664BDFE3CC02801CBDED92A6340D8C217B34C753DC0AA0E3F393722634002D1EE56A9593EC05EF35604DE226340C87AFCCA73EC3EC0D8EFB9CD871C634030250A3FF4A33FC078CD976B660E63405B0AAE7B664640C0C8EB1C17B1F66240D90E4BB24A8540C036BF23D101EB6240B66CDA7473E840C07A99647856E06240A07414E2B92741C07AF5F33ADAD6624060B7BBEF339641C0024EE6C680CA6240ACEBEE2200D641C0A2430F2368C26240E1AFE44BC93542C0C61379A646BE624087D3066EF58D42C066AD12C0E9BF624054BCBBEF6EB642C02EF8907190AD624092D16937E7E242C0F0238A77BF8962405C53B8528FE742C078FA2D28376C62400C844E4F0F1C43C030C0C007825D62406F0DD7D7A24D43C00C56BD6A2C4A62409A7B77AB938443C09AF2F33AAB2F62405A99FC96004C43C0A081B630101C624083BEBBEF6E3543C0CECC34E207216240E9E27A48B6F242C0BA39D5B58A0F6240EE7C14E2EB0A43C0588453E784F3614066F928909C6743C000A67589DAD76140FE8E25F3E54443C020E37FE0B4C56140DB5E8FF6A43043C0A886F01D69B361408665C9637D2743C00AD8A83C6F94614098E6177F790243C01004A2C2BF7F6140F6039D6A93B342C0EA2CFE91CF796140DAC49293615242C05652BD6A5F72614038D840DBB51142C03611165DA6626140C17714E2CADD41C08A51BD2ADD436140EEB41EB95FCE41C0E44A83FD614E6140D679B1184A9041C0CA84F05DA44661401890FC963E3141C0BEF1907103376140A22E3367D58941C0004A837D8A1A6140D6FBFF3359A141C06C6CA59F462B61407CD8DD118A5A41C0EC6F42D61F306140F62FD09DAC1041C006888DD47B3C614046F8FF33FBD140C0F44D2034EE39614045CA066E337340C0B2E31C17E61F6140556203D15AE040C0C04983FDE70B6140C4AAE44B210C41C098BD5D3EA6FF6040025EC963EF7141C018AC4CADA9E66040FCD7DD11453D41C01CAC4CADA7E76040484E558956F940C0B49A3B1CA1D36040F1F362FD839C40C03A043FB9BFC260405BFD39A18D6C40C0B8CD6ECFC3C86040EEAA8182014F40C024EF9071B49F604013BE2FCA6F0140C0F8BEFAF437896040CC0EBFC08EFB3FC0F06FDF4C716A604012105CF7EC7E3FC0BA013F39253160404640F2F325973FC09AFDA1C2B507604042458F2AD0F23FC0B4EF6C6195C65F403447B852212440C000E1F88684895F4050EEC5C6A41B40C0
-at     0106000020E6100000010000000103000000010000002500000030F93671CBFA3040CC620EC0CE0F4840A028CD6D5CE730405ED985B780DB4740D8A71B8930573040D0B3C65E40DB4740587C22C3C5883040E675BC8782BF4740B8BBC9D0C9333040BC1BCAFB1A6D47404884F966FC0230408A14908E80574740908241E930462E4080B1C65E5054474080E4A74FD3432D40B8CF4BCA45374740E04DE559EA9C2B4058AA8CF13041474070C6D0ABC2C02840D8997B603F6247409072188D614E2840D6071C34C58E47404096115364542640066748AD8578474030951153DC1826400CA452842C604740F066B5C3A9E22440AABF3AB95F72474020E403DF69DD2340D20AB96ADA754740402B8290BEF52240949A7BE0288D4740B03D93A10F4423403E2067327EAC4740B0698C673E302340226F821A35C3474000DDC971C9CA2340D86BE5E343CA47402029ABECDDCD2440A80BB9EAB7A6474050DF2C3BC9162540E4192DC57FC84740600215F052DA2640CC192DC50AC34740B01926016048284010F80AA3FED947405021C337D43D29408EBA00CC10D647402035D44881DD2940508A6ACFDBBB474070E7B8603C0D2A401E2B3E569CD147403072DE1FA9C42940D8AAEFBA02254840C0787B56997C2A4072630E4043354840102389CA1F312B402E83932B47704840102D260184AD2C40A47B593E14474840201ADB828ACD2D40EAA85284717B4840F0AF3AAFBF812E40F28630620085484050AD55F696073040983E4F67F05D4840D04F29FDD07F3040F6E55C5B9564484018F93671D5F53040820EB9EA694C4840A84AEF8F46E13040E8559A65293C484030F93671CBFA3040CC620EC0CE0F4840
-az     0106000020E610000001000000010300000001000000090000000C75BA3D621247403425B2B0DF5E4340B809B7A096BA464018BF4BCAE36F434078495EAEF1794640DC183E56FAAA43407C755774A1654640066F93AB43DB43409C20021F418046405AB3D76FB8DE434028394D9D29A646404401F35762BC4340203A4D9DB7DE4640D4C3E800ACBC4340D01E65E820DE46405804908EECA843400C75BA3D621247403425B2B0DF5E4340
-ca     0106000020E610000001000000010300000001000000080000005E2F8D64376757C055B56D46B8BE52405E96F3CA0A8A57C095FC4E01E9A552403E796E9FF4E657C0F57A00E6ADAA52400E8F1C278A3458C0BB8FAE2D5EBB52407C2B5337781258C0C952A4562ED85240C50731D573B657C0D9E503036CE95240E0174266937E57C03D7863AFF9D252405E2F8D64376757C055B56D46B8BE5240
-az     0106000020E610000001000000010300000001000000250000009CD8836DD5334740AE62829A2AEE4440F4943F29D1574740080356A1DFE94440B4A016CDC8AF4740A82AB230209C44409C9005BC67E847401E61829A61934440F4B9614B5FFE4740287630E2F1B34440A4E75A11CC4A48408051710989E74440A829021F1D8E4840463F60F821A444407472E39938CF484086A7639555494440F824C8B1DB0A4940F42FEC1D59434440E8690CF64732494072DD33FFD62044408C424D9DDBC84840F224157A8A16444004E6BDDA97B2484014C7853722B34340EC636FBF929C4840B28FB5CD4C864340D4E4BDDAA26D484008D05CDB61684340248CCB4E0E714840FCA500CCFD28434018DAE63633514840D094EFBA9B22434060E65A1160014840B6EEE146A2654340DC05E0FC812D48405E4F0E40F6A44340A0087D33B10748400E27B2B086CA4340784F5EAEB0D74740F8D4F91112C14340D4D8836DBB404740600D6732A3624340A4B6614BE33D474088E26D6C69BB4340C83A4D9D6B044740DA0BCAFB62D043401C7E91E114CE4640A8DC33FF32F34340DCA0B3032AF2464092AD9D02F71B444084A6ED70F9AD4640E0D35C5BDF47444050997996B9C746406060821AF96744409CBA9BB8F996464054C0AE13207E4440E84CFBE4517B4640680FCA7B819F4440A06B80D04C7B4640A27C6ACFA09F444040A2503A7A7C4640825A48ADC29F44403409B7A0D49B4640586FF674AAB44440B4E8947E36FB46405008900EDB8F444074AC8AA735404740D8B23AB93F884440DC3176F9A65147405420DB0C4197444050B9FE819D1247405CC54BCA84DC44409CD8836DD5334740AE62829A2AEE4440
-bd     0106000020E6100000010000000103000000010000002400000086114EDC0D2B574004753EA28E0A364006FD9F94BE2957403464CAC7F45235407466A33168135740E49E3768B979354084C96C6196175740F434D101BFAB34403A03DA014E05574058824FB333313540145592209D015740904AE2129AB33540802899DA6EF556407819AFDFD42E36403E5BCC8DB1DA5640A4527F49D8C33640702A3691BE9F56404C672D9115CE3640AC4C58B390A55640748E89208E643640C826995A78915640109D9A311CD63540107F8BE63C76564070B24879050A364094C66C61EE6C56401C29C0F06BDB35408A0AB1A5CE5A56408C521C8057F7354038F265A70B42564058B982E6420E36407C2F707E1538564068FA8CBD0FE1364028A34ABFE7215640142A868392A13740849C10D2CB2C56405C008DBDD43B38407EA9842C6705564068DF6A9B6C803840AC98739B9B135640600D6461B7DD3840EEF89F949E3B5640FC37C0F01A3D3940D879EE2F6D0D5640840A2AF49FC43940401725000924564040661C804F723A40E00D4EDCB956564070AF9A31B0033A4082F6025E477556400CB6D49E0FF73940C45292A0EC7A56404CCEBC530E45394096E6F14CD2B7564048CA1F1DF221394016FC9F942CF35640EC294C16BE2539406E7EEEAF131857406CD0598A08FA384004C96CE190FA5640C44034CB6221384008178849EFDD5640D05B1C80981238405AC132742CCA56408C63F323E7803740E4B021E336ED564030B3AB423AFC36402E99D6E4ACF756408004C72AD59F3740523D47A258095740E8CDF6C0A3A0374086114EDC0D2B574004753EA28E0A3640
-by     0106000020E6100000010000000103000000010000002C000000583BF6C9EF7B37401ACF3AB9CCF44A400043930060733840503CDB0CEEF34A40708F747B4E8939408CA3417326244B40C8489300B8C43940E8292D45696C4B40E0C30A7899963A4072CE9D0266954B40183448828C7E3A40726CD4D2BBCE4B40781B60CD3A1A3B409E39A19F43E44B40A0C033D43C2D3C404A41DB0CA6154C4030EE8F63C13A3D40CCB4B54D8CF54B40F8ADE8551F5F3D40E087BC87C5D54B40B0B3858C73E53D40BC2156210DE54B4058474882B8DF3E407A659A6586C64B408803043ECAF83E409CC02928708A4B40781A4FBCEDC13E404467371CE8674B40E08D8CC66C623F40D8026E6C1A144B40A88F8CC69ACA3F40FA8AF6F4C0FC4A4020AE11B234BB3F406057C3C1A2E54A40748D8AA7EA334040A464371C1CCF4A405098614BC958404000F05C5BFBAC4A40A8CA947EFA264040888C932BFD904A40285B5993657F3F40C885593E6E954A40309B00A1214E3F40D62C67B278894A40686C6AA43E8A3F4014F2F991FB5E4A4008F6F22C37C93F4014F496C8030D4A40583D71DE73ED3E40CE343ED66B054A401887EF8F949E3E404CFAD0B551E94940682089291C8E3E40AA0D7F7DE5A84940E08B29FD48283E406A96070644B54940289200A143413D40CAAAB54D22AF494038FEA0742AFE3C4016DB4BCA0FCD4940303371DE1B9E3C40584B8954BFB64940589B747BDA3D3C402C9AA4BC3EC9494018CBA7AE3D743B40FA8FCD98D0CB494090F2A07484563A40F2CDD76F88EA494028C544E5E953394028A57B6090F4494068092660988D384084A81817B9F14940686D8CC64C013840F0444F6708CF4940A0C0E11BEE863740EEF296C80ACA4940B045CD6D0C823740FA04A8D906034A40E8DD660712333740D20CE246553E4A40D024AB4B98CC3740F0B78CF175584A409043303710CE3740CA7E1F517C8B4A405008C3960C873740A6B98CF12CBC4A40583BF6C9EF7B37401ACF3AB9CCF44A40
-be     0106000020E6100000010000000103000000010000000F00000080295D970F850A40B036DB8C42AC4940A0DB1B6C33301040327EBC8735A24940E01478FB5DE5134066D7AE93CDBC49400072301A8B6D16405A286732C6844940E0F9E1FE6AA01840866F482DE1664940C0FE1B6C1B2C184028F333FF6310494000641F0932211740F0D011DD8F0B4940406CF6AC3AB21640C243EC1DC6C34840A0A4D72767321340260E1CB420FE484060DC7E35E32411405200A8D928F4484040DA6A0B9AB40C40EE60D4D28230494080DE18536BFC0840BCB38CF1E2634940804590CA724405408C46EC1DFF65494080D68C2DCC1B044074690E400293494080295D970F850A40B036DB8C42AC4940
-bz     0106000020E61000000100000001030000000100000014000000D7F3BC3A284956C0285867FEEDCE31402BACDB7FA84956C054E1EF8699F43140F89ACA2EE94156C0DC990E0C630032401AF01F444B3656C0F46C154619E23140373E3B2C5E1F56C0104A56EDA07C3240983A9EB5331356C0A49871D5FE7F3240003E3B2CF71256C00C0C4C16705A324065D7D405D60656C068D57BAC4259324036A4A112E70756C0B0E829F4A013324053939041431256C06480C38DE6A43140B84475D9A90C56C0049BAB424E7D3140B42253775E1356C00CD07BACB6213140617B4543540F56C0342FA8A53B093140AE740B56BF1656C0C4BF07D2E0873040015DC017512356C040CC7BACF5433040CDF65931E02E56C02069B27CCF3B30407C6ED1288F3B56C0F08A20B548C62F402227F0EDA94E56C080EA4CAE1CC62F4013615DCEA64956C01C9271D5FC033140D7F3BC3A284956C0285867FEEDCE3140
-bj     0106000020E6100000010000000103000000010000001900000080C8DEE59A88054000CC6C63070919400061946F06D8FD3F6030D3C991911840007553C838E7F93F803CD3C901541B40801F613CB3A1FA3FC0CDD199D641224080D7F39B9F68F73F10E47FE153AB224080A1C0680CCDF63FE80D3F3A9AA6234080225A02A63EF13F10BF861BE959244000EEBA3EF9B6E83F586C31C60DF1244000F2466438C9EC3FE0887C44A3FE254080D5677640E5F33F782316DE943826408021724DA427F73FE82379A76E18274080BE86FBCBF9FE3FB08742D744482740C0D0C69A5C3C01407072F7585BE1274040C1DEE5DAEB034010E9D199527728404075EC5905CA0640C0937C44A5782840C063F393B2E30C404051726D01522740409C6034E6930C4030F2E2AAE7A7264040072A647C600E40783BFE92307825404052E282F1CC0C40A8F3B94E14AA2440C00A64D1BCA40D4018BE861B5D202440C0A7ABB247C3094048C6FAF567E3224040A78256684C0740008D2A8C744622400059A1DB53CA054088D2A83D810321400064787F14FE0540C04ED3C9A17B1F4080C8DEE59A88054000CC6C6307091940
-bt     0106000020E6100000010000000103000000010000000D00000004D3430596EC56400C32AFDF90C53B408E1EC236A3065740E43A8683DE733B408ECC099824025740303886839BD63A40CCED2BBAEBCD5640E8782D9103CF3A40F8D4E0BBE397564080F7DE752FE03A40FC552F57A66F5640244C34CB2AB83A4036C2CF2A7B355640E05E45DC55193B40DE09B1A51C34564078E193F79F4C3B4006AB84AC735E564038F9413FF20A3C4048562F5703815640B0ECCD64E34B3C4078BD95BDC0AE56407CF207D2A0103C402C43810F91D0564078A04FB3650A3C4004D3430596EC56400C32AFDF90C53B40
-bo     0106000020E6100000010000000103000000010000003C000000C4FF3114596C4FC0E62366CEF40836C0682454B650FE4FC062CE10795FFE35C0BDFADE1C211850C0C27581B64FCC36C04476F3CAC03D50C0BC31DAA86B1336C04E118D647E9150C0E63AB14C12D535C0C5374CBDD3C650C0EEB28B8D65BC36C01FFB41E600F550C062F4329B77DF36C00F4A5D0E130E51C09C6CE47F8D7E35C0929C156D753051C0E4374E83665F34C01040866A4D1C51C07E74F590B26733C0A0A34F5AE03D51C044E3329B4FFB32C0445534726A4651C0AA3F5F94974232C0B60AB680C96551C0F41DDAA87B9431C0A24086AA6A3D51C07EFA54BD2D8030C0C98867E5F15851C0F07C6C70FC512FC01CE8931E434A51C074F1E3E7DFA52EC05FF9A4EFBA5551C08843393D09E82DC0EABE378FBA3C51C01CA2026D43E82CC063701C67783B51C0F45221F292342BC074F50739533851C05072E04AA9CC29C04F4086AA902A51C0604684BB621F29C08A22013FE66151C000681AB849E725C048E4F667503251C044546C70A01226C0BB802D385C1151C02802B4516F0726C04CEA3095150351C0607AC8FF926C25C0F6BC378F1FCB50C0202FE784169D24C0925234F266A950C030BBA97AD7DC23C0C2243BECA85550C048B60C44238623C076219E35785C50C054974DEBDC0525C0CE354CFD995450C0F007EEBEAFCA25C0BCD9BCFABE5950C018B5FB32EE2127C0E3CA48203F1450C0F41FC56288EC28C03CE549DF26994FC0D4C198690A4129C04699CBADCA664FC054F8CB9C55002AC0E47F802F44104FC06C898E92C6652AC07A3065474ADB4EC01CAEB0B478FA2AC0664A4D7CC48A4EC018BFC1C571F52AC09A5DFB436C404EC04484B7EE498D2BC058016C01C73A4EC074716C7040B52CC0F4D70F72D5214EC05CC9C1C5BD4A2DC0200B43A525204EC09C44393D89272EC0D27F1DE67F454EC058419C0615302EC06482BA1C46144EC0C4EBE0E21E4230C00EF9CE4AE01E4DC018AB39D5B04C30C0167B1DE6AB314DC0D44336388AE030C0A2AAB362F1234DC0F20E66CE8E4531C05AFB6B0106DE4CC0586CF5906E8D31C0C04C24A0CABF4CC0DC9E8B8D972C32C07AA2797587D64CC0809B51203BF632C0EEE3208399F94CC02CF643AC666633C07CD9495F49ED4CC09EE7329B51F833C0BE3976584C154DC03093DD453C2D34C0202C02FE7B174DC02E84696B4FDE33C0B21954B6B98E4DC04EAE62315E5B33C0C0B88A8693054EC018EF093FBE5733C0B4417658A6E44EC07E75F5903CA233C088D5D5040B224FC01CD2E71C848334C022FB945D45254FC07E711EED370D35C062C5C4F3AF574FC0041E2C61C03F36C0C4FF3114596C4FC0E62366CEF40836C0
-ba     0106000020E61000000100000001030000000100000015000000C883858C67013340CEF10A231C6E46400893F966385E33404EA3EFBA766E46405895969D1C1E3340CC7C306227364640103130378A993340D0590EC0EC044640D833CD6D38743340B647FD2EB7C84540605EC633190833409ADDF9915DB74540700EAB4BDCB432404873F6F49C99454098DA77185B8F324088E96D6C33534540A8FFD3A7C7AC314094BAD7EFA783454030CE3DAB204C31408E2FB2B021B9454078F5993A89EA3040E2D322EE77D54540E0F63671D9743040500BF35747054640D8E425605A3D3040B82A7843F22C46401070F66A03802F403A40268BCB684640509EEF3032EB2F40CA4E9A65EC9D4640C00AE5B87251304082BB3A3987804640C81CF6C9F1883040B477F6F4159B4640782C6AA48C003140CA4E9A65EC9D464078639DD79DDC31408CD385B7AB884640180037719F8D32409670BC87718A4640C883858C67013340CEF10A231C6E4640
-bw     0106000020E61000000100000001030000000100000028000000704159932FA639407E772FFE388932C038BD6D41B3D93940A6A428C4E3B632C048064FBC2F2A3A407E25DAA8074B33C0400B4FBCE74B3B401C5A70A53A6434C008C2D00A89B93B400A35B14CC27F34C000EB2C9A2BBA3B40C6CCADAF0FDA34C0D03A488278053C4056620DDC687C35C0801FC3966ECB3C406AC97342B3A335C030D744E5A36E3D409C9BDD45601736C0D84B599369043C400A35DAA8E7D336C0C08800A1911E3B4018CB39D5069337C0680CECF251C93A4018DF4AE69D3D38C010D17E525A7C3A40A05B5F94C79D38C040CBE11B10F13940201BB88645B238C070F33DAB0EC43940940F44ACC22C39C08041599327AA3940DAC5C5FA9F7C39C0B03E599371063940004CB14C3CB839C0203B59931536384024DB734293AB39C078139A3ACBBB37402C1EB886DF6339C028375993E54F3740FA720DDCC84439C0E012377103D3364032A7400F1E8039C0C09D5C305C9436408479AA12BDFA39C010658CC6201B36406C770DDCBE473AC0783693001C9B354070EDE71CFEB93AC0F069636ABDE334405E0296641BD43AC0F02EF6C99DAA34409C302C613A7A3AC02836303734C23440F2CA62313EDE39C0F05F29FD6C2A344086BC8B8DFFEA38C0989FD00A51E533406AE14AE68DC438C0781AE5B83CE53340D47B585A62D935C04833930092E13440DC1155BD77D035C00030F6C91FE93440127D696B914032C03822E5B8B0A735407605F2F3193832C060F2144F653237404259474979DE31C0785A7BB5399437401C32EBB9004832C02875C633A5373840B4E8093FACE331C0403282EF4C853840AAAE9C9E1AE331C010270E159E153940D0CFBEC06CA931C0482BAB4BA44339400E2277DF8DBC31C0704159932FA639407E772FFE388932C0
-br     0106000020E610000001000000010300000001000000CB000000FAD8495F04D04CC0942C7E195F373EC04643EA323C254CC0325D4E834EDA3CC064DA83CCC5944BC004A4CC34C5E13BC080D5E615D03E4BC07A49DAA889793BC06C6646C209D34AC0B2B717B368EC3AC00EAE27BD6DD04AC06E5B2527F71F3AC0C8822E77A5104BC0D4471416328C39C0D6AC8A8609504BC0D4A4A3D83FBD39C048279FB4E7364BC0CA5388F0842939C0D02DD9A190254BC0F8801EED1F9238C0E03EEAB27F254BC09CF2F82D610538C0A4057D1290534BC06C28C997EED637C0E2091A4992834BC036D71079530038C01A7180AF4BB34BC0DC7A81B6F9F437C07AF66B0142C24BC0B064D36E6E9237C03A1C2BDA2ACE4BC07E0444ACD6A736C0E226027E23E64BC0401455BD5F5B36C024BB61AA953C4CC07CB328C4171636C046C6384ED5704CC0D02BA03B3B4836C036FF08B8F4F74CC080B328C4151736C07E9FDC3E72EF4CC0FC87696B91BB34C0BE3976584C154DC03093DD453C2D34C07CD9495F49ED4CC09EE7329B51F833C0EEE3208399F94CC02CF643AC666633C07AA2797587D64CC0809B51203BF632C0C04C24A0CABF4CC0DC9E8B8D972C32C05AFB6B0106DE4CC0586CF5906E8D31C0A2AAB362F1234DC0F20E66CE8E4531C0167B1DE6AB314DC0D44336388AE030C00EF9CE4AE01E4DC018AB39D5B04C30C06482BA1C46144EC0C4EBE0E21E4230C0D27F1DE67F454EC058419C0615302EC0200B43A525204EC09C44393D89272EC0F4D70F72D5214EC05CC9C1C5BD4A2DC058016C01C73A4EC074716C7040B52CC09A5DFB436C404EC04484B7EE498D2BC0664A4D7CC48A4EC018BFC1C571F52AC07A3065474ADB4EC01CAEB0B478FA2AC0E47F802F44104FC06C898E92C6652AC04699CBADCA664FC054F8CB9C55002AC03CE549DF26994FC0D4C198690A4129C0E3CA48203F1450C0F41FC56288EC28C0BCD9BCFABE5950C018B5FB32EE2127C0CE354CFD995450C0F007EEBEAFCA25C076219E35785C50C054974DEBDC0525C0C2243BECA85550C048B60C44238623C0925234F266A950C030BBA97AD7DC23C0F6BC378F1FCB50C0202FE784169D24C04CEA3095150351C0607AC8FF926C25C0BB802D385C1151C02802B4516F0726C048E4F667503251C044546C70A01226C08A22013FE66151C000681AB849E725C0CC933E09008651C0D821393D793F26C0614286AA1DA351C048FB79E4AE0426C03E317559D79E51C0C8CB57C2F0FA22C01EF807B95AD351C078823CDAAB2824C08399DB3FD50B52C090D7912F711B24C0AA5597BB082452C054ADD2D6560A23C03BFA0779824E52C0F031BE28A7EC22C0E8AE8907FC4052C024F45088CF1022C0D3CA713C8C6452C08847431451D920C05C79B9DD2E7F52C050CA04DA66181EC0902A9E354C6E52C06045B6BE2E5D1DC00C3F4CFD5D6E52C0B096A84AA4AC1BC006AF8987AE4752C0C016949C0C851AC0A69ADBBF0F4E52C02088A84A545B18C028CA717CBA3D52C0B066C0950AF716C0C84BC057153952C0509F67A3261915C01D4723E1E5EF51C0C0F9CD093D6012C0DAB6602B72BB51C088525DCC3A9B11C0E0AF267EDDB251C0D0DB828B4B0111C01D1CC751317951C0A0A215EB573111C02A41862A6C5C51C000A496538DE6F8BF503A4C3DE95A51C0409DE1D13EF6F1BFE2A0B2A3EE6451C0809BA7BB8899E1BFF69D156D528151C000B2AEFF33B3C7BF9CAB8907FF8051C000CB25114453E13F6A4B5D0EF45C51C00045EF40DA98E63F5E4423E1275051C0003A8C77EA48E33FD058D128FE4D51C00062189DA98AEF3F1C6745837E7351C080F0AA53E06CF13F8C07194A497451C0C0908594D76FFB3FE319C79196F750C080D3C9D84B14FB3F15DCBC7A6BE250C020D7DF001C4C0040E660A8CCA3D050C040ED14571D85FB3FE293DBBF29C450C000F7478AF014F23F40F307B915B850C0C0327BBDC30DF43F755C0B56D99450C0000AE569B62EE73F3A2F12D0166350C000D6DA929241E93FFA576E9FB35650C0805711BA4686F13F4E16C7D11A2750C040AC55FE7A42F53F8F97156DC10C50C040C5C9D8BBE2F73FFABCD445510550C080506AAC72A9FE3FC8DE0F7234AF4FC080B0E63A719B014014D8D58420B64FC0408116D1DD4903407A3B86AA471150C0C087B307DEF90340C0C0713C2A1A50C02045C17BA803094088C7AB69951750C08052EAD7AF600E40B40F8D643A3450C0703B69C6CC39104083ACC3F43B2850C0E0A66C630B9810404C0C0938B5F14FC0E04B7AD7051510406E851DE6ED8B4FC0C0E7E63A212A0E4070F55AF0FA664FC0A04B7AD7210710409212E05BEF0A4FC0402C58B503A61040EADCAC28C37B4EC0B073FFC25725124096F05A70F34C4EC0909C21E521AC1340007646C2E55D4EC0B09AE77715CD1440606098FA591B4EC0402E47A45AFA14400A595E0D90FD4DC0D060170E660E1440B2855753350E4EC0A0B84307C44C12405E252B5A3AE24DC080A195BFAAB111401A2F027EDEC44DC0E0655EB2A0AB0F402EA779755FE84DC0A08C91E51BDA0C40E8D3723BBDFC4DC00027B06AB70A064084CC384EF9DB4DC06082503E3EFF01406840138FB1D24DC040FCEBFA1D97FC3F7842B045F3834DC0C09DE1234A15F53F5E0743251F454DC00067AEF0164AF43F7A96051BF9364DC040EC25684E6CF73F82B48A86850E4DC0409396A5781DF83F4846EAB29AD44CC040F88831DEEBFA3F509EDC3EFCAA4CC0C0859DDF352DFF3F9AEBF7A62F644CC04049CD75C2D1FD3F1CC29B970A454CC08041F6D17164FE3FF4973F0873FF4BC000C1E1232A15FD3F882A9FB4EAF34BC040582E1C0C2D0040DC53FB4363094CC020A0D52930C401407E94A2D195FC4BC040C220A83915044038CA72BBEDC84BC0408F8AAB3E5F03406499DCBE7D8C4BC0805580D4A230044088FE42252B434BC0A04AE39DAA7E02405C2DD9A1450B4BC0007AB3072ED800409C1BC890A6E34AC0006F05C07C030340A069E3F804C74AC06085503EDEAD0240064EFB4390B54AC0A08C614F576D0040B06B80AF46784AC06070DC63B5FF0040B00EF1EC38474AC080D6CEEFA2090440E0EBCE4AEA1F4AC060F0CEEFC2ED094030219FB432D449C000A76C63FB9F10403079914098A849C0B0AEA6D05FD01040DA48FB43EE8849C0C08AF4AE03340D40947057D3224149C0C0078931CE6CFE3F80BAD584AEFC48C0404707E3A2C8FB3FB89B50993AF948C0C0FEBB6431BDF03FD614C810815949C0005A1159BE8ACC3F628168E4B03149C00074E587F014B4BFF0BA72BB6E4F48C000B663818224CEBFB6FB19C9D04A48C0C0865CE60CCEF3BF3A90162C98E947C000E888369D9CE2BFB297EDCF854847C000A311BFE51CEEBF50D83114EE7346C0E09C5CE6ECD3F8BFB44EA98B743546C070C994D91C1A01C0360E027E714A46C080D9F7A2CC8705C0049BC4F39AB545C070C420FF9B1003C0CEA7D50480BC44C0501B6543D04B07C0B43AD2E744FD43C0F053D2E303FC06C004FAC7900C4043C0D02C8E9FEF9A0DC090868A86939C42C0188D90FFA54813C018F22ADAF93942C010AADB7D077014C0BCDB7C9284CC41C030AE78B4179914C064B5BD39219E41C068C1EC8E18DC15C0BA62051BB17241C0E85CD8E0E8F31AC07AE7F06C705D41C0882D6B40755F1DC096559140699041C09CC01D5528FE21C092346F1E88D141C00CAB35A06E4C23C0FA525753F48542C0ACE32E66D91426C08AB0E69580D742C0A8C4D2D6A65728C02AB2E695413643C050A3764784132AC042D8A5EE415643C09C286299841D2AC0FCC05AF0047A43C03CEEBA8B34962BC022DC4225EF7043C008B7D91088552FC04865CBAD9E9443C00064BB235A3531C0687D162C38A243C094AE9C9E24DE31C0AA400CD5B0CA43C084E3CFD1254332C046AEACA862E143C04664E47F5F9933C040099FB42A6344C0683314168EE734C0B21AB0C5ED7844C0AC569901F4EF35C05A97C47388E044C0F621C997E45E36C0388A501980FE44C0BEE3218A56F836C04C7168E48F8945C026E7BEC0BAF736C076F6B67FEB5246C0E45C99011A5A37C09AF419C912AD46C0DCFBCFD1FDCB37C0543B5E8D6D3C47C0606A70A5C61638C07E9D8A8611D347C008CAFF679CE238C0B491162C6B3F48C018B317B384E039C064BE0F720C5248C0867570A5AA9F3AC03AF14225C43C48C0AC96F590082D3BC07E32EAB2AC5448C0425A4E83A62F3CC05E5FE3F8B87148C01A4166CE92AC3CC0246BBA9C2DCB48C0864366CE76393DC08A96162C335949C0C2FC4AE605FC3EC02E1A65C7C1C949C09455A03B17C73FC09233B045C7204AC07CD67A48681F40C0B2B99B17265B4AC0903B4478299940C000FC4225D4AF4AC08EF8FF335AE240C0B0AA8A0645D34AC060081145DB9940C04EA6EDCFD39A4AC0A085C229245D40C02AA45099DBE44AC035320A0B0C0640C0C8BD9B1746494BC06665B14C987E3FC0240B1A49FECC4BC07A7AFCCA97DA3EC0DA23654793FC4BC012F2734211E23EC030488769EE7C4CC004E1FF67141C3EC0FAD8495F04D04CC0942C7E195F373EC0
-bg     0106000020E6100000010000000103000000010000001C00000078CA55F63AA836408E75F6F4111E4640E8C41B89E0F1364016B200CC71E94540409A22C31155374080590E40D1F2454028C3E11BC61938407C112DC5DADE45408044F6C9BB9139405A74F6F41ED84540F0ED033EAE103A4010344F67C4F8454090CD44E50D3E3B407AE9D0B586164640684182EF58F83B40A074F6F4FEE74540E05BCD6DDE8E3C40BE66821A8EDA4540E874B522020A3C4094BE74A686A54540207AEF8F84AC3B40A2907B60F8494540A863A41129FF3B406E035621F1004540D0EBC9D0BF223B40785C482D1C12454098F1A074F61D3A401CB19D02D8E94440282871DE2B1B3A4090D55C5B19AA4440E042F6C97B323940D6E90AA3039E4440C0A2BFF91D7E38402E4A371CBDCA444068FB4EBC2BB137403A57ABF68FA74440306C29FDCEF336400276306243AB444068577BB5A1E13640DA4060F8E8FF4440085CB5226A61364040267843FE284540E8B844E5858B3640E81804E90D3B4540D0E43DABC46F3640065AABF6474A4540287FD744D49A3640EC8DDEA902734540E0577BB56BFC364046398954079B4540B07ED7440A803640D67059BE47D24540400AFD031369364052B93A390801464078CA55F63AA836408E75F6F4111E4640
-bi     0106000020E6100000010000000103000000010000000D000000C8390E150A573D40E861D1A6FBFF11C0B8097818C1463D4080E420FFEB590AC04850599361063D4020E294D9CCB606C0783EAB4BD6A13D40407457CFC55707C0D03FAB4B38F03D40B03A9876B3C902C0785D93003E783E40104EA987944F03C0289B9DD715873E40208FDCBA077606C0F03F0E1536BE3E40D08C0517374608C06843AB4B94C03E4050A91628E8DF0AC0308352596C813E4030FF31106D8C0CC080BBBFF9C71D3E40E0F0CD094D5C10C050BD5C30E6C03D406819F02B3FCF11C0C8390E150A573D40E861D1A6FBFF11C0
-kh     0106000020E610000001000000010300000001000000110000009A16146FD3DF594050F6B94EDE432540FC1C4EDCCDC5594090DFD199AC4E264034AFAD886FA559400815CB5F895F28409082B4424796594048569BC9DAC92A4004DCA64E42BF5940884C8AB891732C40969CFFC002125A403888F7585FD52C409A00C970004E5A400898086AE28B2C40AEFA8E03D0825A40B853615C1EC32B40400CA094C49F5A40008D948F23242D40A6AD739B7ED85A4020B68D55A6672C4040A0FFC054E75A40383CB31431122B40681EB12573DF5A4070C41241A6AC2840227CDD9EDF735A40D0DF34639E22274030DC0998FA8F5A40E0DDD19972EC25400C784068CB4C5A4078AD3B9D53C725406ECC95BD65155A4028B412411CF924409A16146FD3DF594050F6B94EDE432540
-cm     0106000020E6100000010000000103000000010000003D000000F084EF30D2262A40C0DB42CA0323024070F42C3B15E729402055BA41AB920240C066A4B200B82840802E981FE18A014000FB3D4CDA80274000521D0B339D0240A0FD77B98A8D2640E0BCBDDEA116024010AB33755E4C234000D9A5935B4502406083D7E523972340A00CF111559608406094852D09CF2240E04C4DA14FE00D404034F66A6FE5214000D838F3A73B0F4080A6D0AB667D21403066281FAB681140009AF90746FA2040C068281F83FB114000150EB625002140C066EEB182161340B0F14E5DDB83214070E08E852DEB15401052DE1F617722401062CC8F28C719406084741CA00B234020B484AE5DD0194050341FC78E3C24403017773AB3271C4060CA7EF3A7FE2440205F58B5AF381C4040E7C971191E264070A6739DE4931A4060384823D67D2740001DB1A7EFEC1B40F0F403DFB9AD2740208EB44492961D40C071188DBD202840C08006FD00331F40601A260110702840808C64F9949C2040C0F22C3BE181294028CAD1997E6F214060D20A1933E9294078C9972CE6D52240C05C93A1CF552A4070CB972C004823403091C6D40A9E2A40D09C64F91A522440C00067A859252B40184D0FA4DD98254040B6AE89ACD42C4030D2C0880D25274040DC6DE2B6EF2C4068B63B9D3BCF2740906C30D883272D40C884086AB42B284060AD741CD85C2C40C0FF7FE1A1F7284040AAD7E5536D2C40A8EA3463A49A2940E06B30D8D7FD2C4090519BC902B82940D00F04DF69C92D40C8EF0B0727702840B002900499EB2D40B87C6B33741C2740104A717FDDD82D40087031C65BC82540300790048DEF2E40207942D7F4F62340509FC6D496D12D40F0D13463F8FB23406036606E20412D40E0F6F3BB82D72340F0918C67CA572C4080ED1C18F20A244090DEA74F8FE82B40409E9E6657192340F0B31153C4162D40B0F8CA5F85EE2140409252FAC1F52D40D09064F99A9721403015A115E23D2E4098900130A9C32040506DF66A47DF2E40E0B8739D70C51E40600CCA71158F2E40107A06FD0CB01D40A0264F5D978D2D4060EDF14E4DA21940C02E2601B8122D4020134EDE67E81840B064F66A37EB2C40C0AC5B529ACE1540A03C9ADB2C1E2D40005006FD541F1440E0012D3BEDF42C40203D922230EE124030284F5DE3E62D4080F6874B70D71040F0284F5D8B122E4060F120A899CF0E404077CD0E90CF2E4020E65A15B2AE0A40507BCD0EB8B92F4080D08371B91B0840403EC33794D02F40C0B20F97887504409002AB4B4A0330408023244520240240D0BC741CC0E12F4040D9660F8CA4FB3F80897B56ED4A2E4080D5B8C79A6CFF3F3089B5C3F5AC2C40009D38F3AFD20140F084EF30D2262A40C0DB42CA03230240
-ca     0106000020E61000000100000001030000000100000013000000AA3F013F0D0158C08758A4568C2654401A723472B3D457C0836618F1103A544012BCB263199357C08D8F74C08B3E5440F085E23911AF57C04507ECB7364D5440BD12A5AF3A1A57C09111C31B795054406E5C232181C856C00B22D4EC4C2E5440B65F5DCE46FA55C0992BAB9046065440A66734321E7455C0E9E9030390D55340805BC01701CC55C05342F60E84C25340B2B94F5A434256C051ABF9AB61925340226D34727AB356C0D3A75CF5C78D5340D60F08791B3857C00FF3DA26F9955340162219CADF7C57C029014F8110B0534064DA370FE37B57C09D75294247C75340294A75994B4957C0F9863AD353D85340621CDFDC55BE57C00DD2B884D6D75340E838C791DF0458C0399F85D11EED534082EE48206C2D58C0D72471E3180A5440AA3F013F0D0158C08758A4568C265440
-ca     0106000020E6100000010000000103000000010000000B000000E2B815ED3BA057C0FDB0D04FA288524072F7BC7AE11A57C0F3B0D0CF66865240CF6C3472A0A056C0F92E82B4D4765240C62653F7400057C0D7D1F2F1D63D524053322A1B904C57C0B37F3A5368315240C2DA370F389157C0714130FC920152403AACA1123BDA57C06793E8DAF5035240D16123E1280258C09B9EBF7E2D3C524092F4824D2B0158C0DD200EDAFE5B52406D945614BBDF57C01D51A4D631775240E2B815ED3BA057C0FDB0D04FA2885240
-ca     0106000020E6100000010000000103000000010000000700000016A7049CC27557C0E3AD96A247615340C63D013FEB9257C039DA8F28725F5340B31DDF9CDB0A58C0E1D6F2F186635340CBEAAB69EC1B58C01D29AB906A755340129A90810B9B57C063A75CF57A745340ED6C973B1F6E57C003AE96E29868534016A7049CC27557C0E3AD96A247615340
-ca     0106000020E6100000010000000103000000010000001400000094D90EF37CF854C0BB517BFA03475040BB67D1A867B254C0AD099A7F11315040F717B6C0166954C07BC8F2F1201D5040E2B4EC906B6354C00E4F3ED663FD4F405A9567A54F3454C0712E59D8AD0350405E6134F29E0654C06AA0F6F4ECDC4F401EF593DE6C3F54C0C613D1B5A3B44F40601C53F704A354C0221B0BA36BD34F402A16198AF6C654C0132BBC21850650403E7AE2396D0655C0D6951F51ECC84F4098AB78767F6155C056055D5BB4864F40CCB2B223797755C0FAF8E88091D14F409F0908F934CE55C05AF54B4A47C54F40F686B99D939655C05DBA7E174B0250409819198A648E55C0839CF9ABAA345040FDAB78F6907855C017FD2525486F5040B4F993DE524A55C0E7B1A7F3106A504031DEABE9723E55C04B8F85D1EB4D5040FD6C6E5FB21D55C0435C521ECB57504094D90EF37CF854C0BB517BFA03475040
-ca     0106000020E6100000010000000103000000010000006301000090B961AACEE04BC0EED7115D9BA24A40B6D4495F79D74BC06227CAFBC4124A40A08E68645F344CC08E26CAFBA5E249400ED10FF23E904CC0DCD311DDB8B54940FCEFF7A62D634DC0AE6CABF63A884940545224A03C044EC09C266732131F4940E696CB2DA1DC4EC016CAD76F4C0A494094615E8D66EE4FC0CAD4AE133F2549408143C097405750C0C89A41732A264940B655D1E8899950C0A8D4AE134F1D4940B9A14F9A1FCF50C0547ABC877AC148409F543472B62051C0EED8E880C0884840DC63A84C087D51C0A846268B58DF47407CF46A42B1C651C0C6037FFD2D6947408A563472559051C07CF60AA3377E4740AA6C7F70992951C0784489546626484029374C3D5BA350C0EC19908E08914840E0C40EB3994350C0BC16F3D7CB9D4840F437E973F10A50C01CF0337F095F4840A5465D8E634750C020A01817120948405D576E5F1B3350C0761F67B2197F47400891DB3F381E50C02273BC07871E47404630C8902E964FC06C3BEC1D98DE46406285BA9CA6C24EC02ADCBF241FF146406C8D914052424EC0040BB9EA0381474030DF49DF6B394EC07C1ACAFB2D244740068557D3C4E64DC06CD585B7CFF54640683202FE1A854EC0B2F20AA3F3A14640005687699AA04FC090EAD035C75546400938E9B3C70F50C0E01C0469FC214640EFE393DE4C5750C068A0EFBACAC545407D0319CAE58750C03274F6F430CF45406244C097598A50C0501D04E9883B4640918D3E493B1B50C0A60A56A161A5464076B160ABAA8150C0F4364FE730A14640127C9081CBC850C0B2D385B7999146404F68E239A5F250C0EA9A1817F5D9464003EA30D596F250C0B4CDAE137F884740B0802DF8000F51C0DE56371C6CAD4740BF394CBDEB3951C02A01E246AD974740DC923E892E4F51C0E2C03AB950B9474045F36AC2FF7F51C0A4C2D76FB6584740CE269E35859351C09C08B9EA1DF54640062ED8623DAA51C0E6856ACFE1BA464040C1378FA8C451C0BC55D4D2A4A4464022AD89C7EBD951C032DE5C5BA4A04640989F15ED52E051C0E4E733FF0C814640C0C3370F435652C066364FE7F18046408EE759F17CB752C06C0DF3D70F804640C606DF9C5DD452C01C58710981684640D1BC606B961653C0E8D4226E3F114640D1BC606B961653C05CAF63953E114640D1BC606B961653C05CAF63953E114640E807DF1C981653C04464E5E33C1146405EE21FC4D61653C09AB93A3967114640A53EAF86B91D53C090DB5C5B590746402EA5156D832553C0ECE8D0B547F64540F01553B7972C53C046F6449077E44540A6757F707B3453C0F8CCE8007CD0454054DCE556B44453C022C6AE9336D04540FB19F02D115153C08EC94B4A59D045404E434C7D2A6653C0F8CCE8007CD0454041B48987487853C072E196C88DD045405B704583C18D53C0CCD3226EC1D045406C3D1250559D53C0BCC2115DD2D04540C4B1EC1019AE53C0CAD322EE02D04540AAA715ED1FB653C030850706A9CA4540C8333B2C26C053C0401B04E97AC3454065D40EB3FCCA53C0B8B49D02B1BB4540BA74E27954C553C02EAAC6DE6AAA454056E51F849AC353C07A213E5687A0454056E51F849AC353C0EEFB7E7D86A04540DA8FCA6EE1BA53C0A4ED0A23857B4540B4D0713CDABA53C0A050D4523C7B454098E8BCBA8FBA53C014B000CC5D7445401AFD6A821EBC53C04C681FD18A6E4540204F23A159C253C048ED0A23AF6645400A454CFD1ECB53C0A89EEF3AD85F454075CA374F90DC53C00ED5BF2461534540945D97FBC7F053C03001B9EA04454540A86EA88C75F153C00008F3D78B444540EED1713C4A0254C0326E59BE7D3845405091CA2ED60F54C052EC0AA3DF2E45405E87F38A0A2154C0A88CDEA996294540338E2DF84F2154C0BA9DEFBA85294540DBA2DBFFAC2B54C03A60E5635626454006D3713CCA4154C006156732A21F45401C3D7599C65154C09ABF115DC11A4540C006A52F796054C0B4146732470D45406E6D0B16B27054C03C44FD2E4FFE4440C2B88947587E54C0B48BDE29C7F14440C4117C13A78D54C0A8BE115DB0E34440D0DE48201D9C54C01C06F3D769D64440D6373B6C2AAC54C01C06F3D769D644402A5A5D8E71B754C0C07D6A4F5EE044400068D168E8C154C0C421DB0C99EA444042C4602BCDC754C03CF2441091F94440EFD1D48516C954C02633EC1DE3FC4440F945AFC63DC854C08AC9E880CE084540D8C0C374AAC754C0A0DAF9913A0A45404C9B049CA9C754C0444B371C3D0A4540CEE91F44AEC754C0D070F6F43D0A4540A1FA309599B954C0300B900E0A3745402E0B4226859B54C04A24DB0C717D4540DE29C751E39954C0D60F2DC51B7F4540F43AD8A2B09A54C0C48A41F340824540D2B5EC501D9A54C04AF1A7594C894540CA6334F2829354C0BC2B15FAADA1454070F6931E328C54C090BBD7EFB4BC454097C6FD21CF8854C0224B9A6519C9454071F6935E918C54C0A8112DC545E9454066AB15ED698F54C0F68C4173FF014640C0C6FDA1FC9154C08EC074A69E184640A36A6E1FE69454C05216CAFB15324640F0117C13939754C00E6C1FD1514946405A3E75D9149A54C0A29F5284325F4640FFD70E33969C54C0A0D622EE357546402CFA30150F9F54C070142D45C08A464076A13E89FDA054C026EF6D6C209A4640833E755942A354C078EF6D6C7BAC46407AFA3095ABB054C04A89070648B94640028AF38AD4BA54C01C34B2304BC24640F0FA309575CB54C034D822EEFCD04640CA31013F69D954C0629EB54D51DD464053EA1F44F1E554C03E4960F88FE84640D8F7931E0DDE54C0408030E251FF4640EC08A5AFBADE54C068CBAE130C0347401A2BC7D192E154C008F16DEC83074740207D7FB06EE754C0CC61AB76F70E4740F8AC15ADD1EA54C0D061ABF6B50F4740DF79E2B9D8F054C06835B2B0F20D47402F73A84C02F954C0CC61AB76F70E4740C8C1C3345CFE54C0D4B3639532154740A0F15931BF0155C098FB4410471A4740A41AB6C0DC0455C0F268E5E3972147401ABB8907E50655C0DCA98CF1E92447400F47AF865E0755C0181E67327A2F47401CE4E556A30955C018C2D76FF638474005D3D445370855C072061C34E83D47407B4A4C7DE00755C0621E67325840474072D6717C180955C0203DEC9D90414740A8F8939E6D0D55C0EA09B9EA04414740A29C049C8C1555C00AFC44905234474021D037CFB62655C048F50AA3443847408847AF46C72255C0F86C829AF344474095BB89C7CC2255C0F86C829AF34447405C2CC7919F2A55C09069E5638F4547400018190ADF3155C07014908E8C5147404EBF263EEB3455C05AE896482462474090F259B1113855C0FCDA22EE35734740261F53777F4455C0007F93AB707D474044D4D4C5E45055C07AFD4490AA874740DA00CE8B525D55C07EA1B54DE5914740712DC751C06955C0E40E5621309C4740075AC0172E7655C0E8B2C6DE6AA64740260F4266938255C0EC56379CA5B04740BC3B3B2C018F55C064D5E880DFBA4740526834F26E9B55C0DC539A6519C547405E2EC791B39F55C03098DE298EC847402AC8602B03AB55C00C1A2DC56DD1474040326488FFBA55C000D6E88018DE474054288DA451CD55C04AAD8C7197EC47402CB1152DA4DF55C0085F718915FB4740061142A697EF55C0FA1A2D45C0074840D0AADB3FE7FA55C0C68B6ACFB010484054E8E55634FF55C09EBB00CC1314484088851C67470A56C00029A19FE11C4840B1D7D405331856C040D7E800C62648402AA83E092B2756C06A7EF674C22148407AA83E09863956C034B86315F11348408DC089C7054456C0404E6078040C4840CBA83E09E14B56C00E03E2C60E064840FCF3BC7A775156C0CCCFAE13890248408E20B6C0265D56C0B89541737CFF474090491210E55F56C08C9C7BE0C1FF4740F8C7C374666656C00A14F3574701484015BFECD01EB556C0B8FCA7598F224840332D8DE4F5E856C0281B2DC5EB114840F9AFDB3F0A2757C0BED0AE139A3948407E174226606857C034B96315FC4D4840986D97BB109557C0DAA4B54DDA554840E9332ADBF5A857C0FC9ADEA9856B48403AB9156D53B457C05021CA7BCCB148400AF71F84FDC957C0A0D9E8002FB14840FAE50E332ECA57C04CC43A390080484040E80E33A34E58C010BA631517804840F4146B42502859C0303F4FE76A8048406689A80CF4055AC0DCE9F991BF80484077E8606B15035DC04CC43A3900804840C9F3378FFF415DC04CC43A3900804840C33742A059BE5EC0D21256A1A3804840FC84C091413A5FC0A65C379C05FE48401E784C77F9675FC0DEA17BE0513549400A693BE6E0DB5FC090D211DD506A49400A336B3C89FF5FC0DCC69D82A0DB494045FC9AD26BF65FC046D9AE13312A4A40CCA7A938272460C030A04173B0604A405C1F2170C42960C00EEDBF24E2C74A40C2DBDCAB7A5060C058D3D7EFCE244B40115A8ED0275160C07637A19FC0664B4088ECED1C5C3F60C0829B6ACF7AA44B40379798A73F4060C03855895439F54B40451D8479A67660C0D426F357AB464C40F005399B5F9760C038A40786B0D84C40B5A60CA860AB60C0FED83A3984344D405C6665DAACC860C03AE411DD386E4D406274D9543DDE60C09CF9BF24A1A24D40BE85EA053AEF60C0EAF385B7D5E44D4074E279E8590F61C032564FE75FBB4D409A194AF27A2E61C090EEE880D6734D4076464378E84A61C0D6F622EEF2C74D403139CF7D3F6161C0B4ACA43C00004E408469657A6A8061C04C106E6C6F234E4015A4D2BAED9F61C0C0D99D0238274E403329BE8CC29F61C08DF6EB7700805040C2EBB3358D9F61C03F31BC61916D51402C28BE4CDB6361C019B6A7F3245E5140074643B87B3161C03389AE2D5C3F51405CFAC4461D1061C007789D1C7939514043C3F41C06F460C069CA55FB2A5451405F5554A944CD60C009ACD0CF27685140726C9F61BC9D60C0E5ABD08F57605140C9C72EA4CD6D60C0BB9E5CF5727C5140A5BC57406E3960C007D9C995658C514093D73F75722360C04F948551DF715140017BB0F2910B60C04516D4ACD2805140C2F5C4E06B0460C01BCFF231F79E5140F61DBDB49DDC5FC071A9331924985140B7528D9E67705FC03FD8C995C15E5140D64DF067301B5FC09DACD04F238A5140623208F389125FC09F4F418D94595140CEC367DFE8C35EC0EBD42CDF13645140E5118347BEAB5EC0450F9AFFC076514004EBC3AE395E5EC0CFA833D90E735140F6BCCA2858FC5DC021D8C9D52E5851403A5E3B6C92665DC073F64E01B9405140E35501FF7D0E5DC0EB03C3DBDA355140F8B09001CDCF5CC0ADE8DAA6FA39514013ACF30A78795CC00163EF94871951402BD3B26383D35CC00B5F529EC4F950408EFDAB69D35F5CC023B4A7F30AEC504000FE48A012B35BC0C3658C0B97F35040CF553B2C8E7C5BC03170636FC9FE5040FFE3FD2155385BC08FA9D08F69D85040B2FA4860B6F25AC037F54E01CAF850407CA6F30A08345BC05B3D30FCF1135140DA533BACB30A5BC0DBC21B4EDA2951408E29DFDCCCBC5AC0FD7063AFCC2C5140BA9CB99D99895AC0E53D30FC32335140E8ACCAAEF0555AC0431137F6EA23514052971C67A0155AC0E1E0A03927015140DA8B458327CE59C0792FBCA1410651406001BDFA135D59C04F84117766E95040088F7FB0B9F958C0D713D46C8FF3504058DF378F5D9C58C02906609206F250402E61862AC0A358C0CF2FBC21DA1951400867C0D7D86A58C0471137B608255140FA7234B2AC0758C009335958520F5140A0E3717C0E0858C0F1BD7ED7C6D250402E8A7FF052DF57C057AAD00FCE055140566023E1D6AB57C00B668CCB15045140810ACE8BE68E57C023CA55BB6A445140157234F275D357C0BD1C0EDAE26B5140B2C889072A1E58C091E63DF0BE855140F5BA156D081958C0B339F60E78CC5140B290B91D5DCD57C057DE66CCE9FA5140C47A0B56F57857C0DBC27E97A6F05140B250AF06343857C033C9B88465D45140E196900142E156C055F4B1CA3D8C51405A4975D90A1A57C0A1972288CC6C51408B514CBD03A356C03564EFD4D95F514004C9C3B44BA356C08DDA664C661E5140BFFAF6E7C44D56C0293459D88E505140D8FC931E420156C0B7779D9C5D27514062CDFDE1511456C0995BB567E5F750404458232169D655C01F9FF92BB8CC50407E831CA7969355C0D3547B3AF9FA5040B8BC8987E76455C033F64E41363251400F23F02D686155C04972632F74785140D8137C93730655C0F3CA55BB8B7351400B19B640D8A754C0A7A833D9206A51408ADD48A0F25154C03DCA55BB5E4A5140D66C0BD6174E54C0F50D9A7F9A2A51406D006B42B87D54C06BE43D707B085140284E86EA975054C05B6CC6F837E65040F7F830D5BC5854C099FE252517C7504017C1C3740DD654C0E17100E6569A504061B8EC10112F55C0E9A43399779050408BF359713E7155C093FA886EBBA3504024389EB5538455C063894BA49983504014B4B2E302C255C02DA7D04FA14D50406DEE1F04B0D455C04169C6F8A3315040FE6DD1E8E81E56C075F4EBB75506504002ADDBFF857A56C08FEDB14A1802504066992D380EAD56C0024467321ACE4F401C0A6B4248B156C02EDC004CE87A4F407EF31F44BDFB56C0668DE5E3E36A4F404495F3CA0B4A57C0F47D710929034F4020419E35758F57C0C0BFB54D07734E40BDD79A9846A857C07A352D451B0E4E40BCC68987D0AB57C0CEAD417372794D4002DDD405C34D57C0E487829A1C644D40C583E279EF3057C0162D908E40EC4C403EE6AB69021357C0BCE3AE93258B4C40844EAF8673B956C08873710970A44C4034086B82874256C0A2E64B4A056D4C404B9D67E58B0256C0C84815FA5D3C4C400A25F0ADBFD455C0DA2FCAFBE2FF4B40A2E9828D8E8455C01099CD98A6DC4B4008AB7876C14055C0D47CE563BBA64B4007137C1313D754C0FEFA96C8589F4B409807A56F769154C058BD8CF1FB924B40C9A4DBBFEA9B54C044C2C65E21244B4030FDCD8B008854C0FCAEB5CD75A34A40504E86AAA55954C0A8CED76F34144A40D30BDFDC6CFA53C0C262D4D2AC9A4940BC00083927C953C0EC3D15FA57C44940FF40AFC685A653C09A43B2B0F1474A40BB9D3E09F3C753C09E6C71091B124B40BC0BDF9C17F553C048BC8CF177554B405599A192A38E53C0666BD45277914B408E0F194A1E4653C07458268B30EB4B40F20E19CAA52253C07EA8417361444C402ECE717CE22753C0B0C8C6DEEF994C40E694041C585353C0C49A30E2AA064D40DC690B9614A153C0FEFB5C5BFC664D4056FB6A428D5553C03216A8D922ED4D4045D6AB29747153C032B5DEA902614E4028C2FD21D78653C05AD76395EA284F40ED49866A485A53C0E0749A6578464F4048525D8E8EEC52C03C9DF674A2234F4050ADECD0C3AA52C0D269C3C12E174F40E1C09A98C07552C0D06D60F8CD384F400EF3CD8B253A52C0D0C55204730D4F40A2E0BC7A55EB51C0FA015D5B3EC34E40D2CB0EB3EAD751C08EA130E28E914E40B60AB680C96551C08E9AF674DC874E407E63A84CB36751C0C06F9A65511C4E406CE159B16C5251C0C63967B28A7A4D40A1B0C3B4F81751C0A409D13589664D400F1D64C895E950C0889ECD98241B4D4018EF6AC2E98C50C09E7DAB7637624D40B2FBDE1CB14F50C0E6C0528473EF4D40720F8D64582550C08C9559BEF42A4E40A694914002E74FC0B27B0E40A6B84D4082B0162C4D404FC03C6B9A6563154D4060C9FE60C2B24EC0DCACDEA9D47B4C407E379F343AE64EC04C15E246732B4C40B6F3F7A6F83B4EC0F6C8631543E34B4034696F1EE9C84DC02C3FDB0C1F9A4B40CE4D24A0CFFC4CC09067379C05794B4018CE72BBA6AA4CC0B6A7DEA930504B40E81454B6EB774CC09C9B0706E2E34A40A88ACB2D3D144CC05C72AB76E0D24A4090B961AACEE04BC0EED7115D9BA24A40
-ca     0106000020E61000000100000001030000000100000009000000A639C711483058C04B863A1303B1534093429E35CBE357C05BC344AAC59A53405EF4828D23F557C01D1FD4ECA48353409C2C5377D45358C00D7B632F70765340BE372A5BF48758C0CB2C48874D8553407E19A52F62A358C055B23399519D534087A5CA6E72A858C07D3482B4CDB753405FE80E33955558C0DFD4553B3FB55340A639C711483058C04B863A1303B15340
-ca     0106000020E6100000010000000103000000010000000F00000005F6E5160E1C59C071E93D702D2D5240D93EC751C65E59C02F6C8C8B65695240B0EB0EB3CF1659C0D7A996E2017652402EB7DBBF7CCA58C0094A6A698968524052BC15AD486858C051E0660CE26D524098965694FC5D58C037D2F2F1AA535240D393B91D6E8358C0CBC0E1E0643F52403CE471FC862B58C081FDEB37F01452405688E2F9973A58C0498CAEED11F351404CB6DB7F049758C041B16D8676D15140AC6FFA84A9D458C089476A29CFD6514013E137CFF20059C00B93E89A3FEF5140B9830B963A8259C0D9B50A3D0F1652407ECF89C7ACA959C06DD82C5F3830524005F6E5160E1C59C071E93D702D2D5240
-ca     0106000020E6100000010000000103000000010000001C00000082E8E5569F0956C0373DF68E1B99524026C8C334F17056C0270AC3DBFEA0524024DCD445091B57C0F9813AD39DB5524096EDE5962B3157C0E9D78FA8C1D85240CD9B2D38F43857C0B91CD46C7DF8524000E8AB69347957C037BA0A7D6E1453401C8E1CE798FD57C0E5DFC9953F1C5340B5473BACC44758C069D98FA8113053400366C017B02F58C065621831544A5340444F1210C8AB57C0792171A34346534002776E1FBB6457C0376CEFD4AE31534011E20EB3B8E656C0B9BA0A3DD33153405F881C677AAF56C0D3318234C61C53401A9DCAEE0EBE56C03D38BCA1BC045340A705CE8B9F7456C0AF1CD4EC41F65240E056862AF94B56C0D9BCA7F30CE75240D82FC751A6F555C097EC3D703CE452401C0CA5AF449855C0592DE5FDDFDE5240E4922D38893255C0DB7129C2BFEC52401F08A56F38B054C04F01EC3732F25240F23C75D9394854C03764B5E7B1ED524054FE6A42AE0354C03B0489EE8ED552406EF0F6275FF553C029CDB88414BB52407A80B91D4C1D54C0D158DE4311AA5240A26D0BD6B97C54C051149A3F519C5240C0F05931A6CE54C0FB9C220819A452405F6BD1A83C8655C0BF8B11F73D9A524082E8E5569F0956C0373DF68E1B995240
-ca     0106000020E61000000100000001030000000100000012000000059A6E5F8F5A5FC0AE44EC9D99F948409B96D1628F5A5FC0AE44EC9D99F94840BEDDB2DDED3A5FC0BC8E6ACFD5BC4840E920F7610AFB5EC04668AB76FF87484031DCB2DDA3E05EC03C6071094841484021A6E233D3005FC0966DE5E3772F48405D48B6BAEB695FC058640EC09969484018AF1CA11E7D5FC0C672821A0A9748409261017966B65FC0B232DB0CD7C34840CF38A569EBC15FC00EEF96C851E84840FFD63F15E60160C0FC771FD15AFF4840680A73083A0E60C0866BAB7602454940D481EA1F780B60C02A8ECD98A462494032E7ECCABFD35FC0D2AFEFBABA4649402CF460E57AAC5FC08EC000CC503349404615830752705FC014B62928C32549409B96D1628F5A5FC0AE44EC9D99F94840059A6E5F8F5A5FC0AE44EC9D99F94840
-ca     0106000020E61000000100000001030000000100000007000000BACEB2A3ECD05BC0EDA02208CA8953406000E656AF765BC0CF14FDC8C37F5340FEA7F3CAF68B5BC02F964BE49B6C5340D13C53B746035CC07BCC1BCE305A5340020149A031625CC08177C678DC6E53402C7423A15F2E5CC0C966B56744835340BACEB2A3ECD05BC0EDA02208CA895340
-ca     0106000020E6100000010000000103000000010000000B000000CE6886AA815F5AC0B92AAB504DD35340318C45C3DFE159C0C9FA141495CA53403FC3B263CF3459C05F5DDEC33AB3534019A7CA2EDA0359C003B96DC6C8945340676286AAF0EA58C0891B3736157A5340A4A190C1735359C00BE5660C37815340026686AAC9BC59C0F7A75C75F7955340F3196BC2454B5AC083F6775D579853408EC315AD770D5AC09F260EDA5AAB5340900CF767DA5A5AC073E90303C6BA5340CE6886AA815F5AC0B92AAB504DD35340
-ca     0106000020E6100000010000000103000000010000000700000005A2B99DACBD5BC079A85CF57BB35340680ABDFA706A5BC06904ECB786A65340516BE97367B85BC04DECA0F90A9A5340EAFF48A0B1225CC0AFB5D00F1B9A534005853432A8215CC06B15FD483CA3534077E3602B00E05BC0E9718C4B66B6534005A2B99DACBD5BC079A85CF57BB35340
-ca     0106000020E6100000010000000103000000010000000C000000D0975694EDA458C083BA0ABDAB25534072F3E5561C8658C017809DDC670E5340FFEF48601D8458C0E5AB96E290ED5240D65DE9B3F4A758C049308234FBC25240BEF8824DC2F358C071E8A0B96FB9524023CAECD08D3859C0C74430BCABC35240206723E1393759C08390AE2D02E9524032AD672522A059C0712DE57D15E45240CC35F06D31A459C0256F8C8B8A155340E27834F2575F59C0EBD88F288B135340FC6C5D4EF1FE58C0358E11775D295340D0975694EDA458C083BA0ABDAB255340
-ca     0106000020E6100000010000000103000000010000002C0000009A14311572A15AC01357DE43DD445240D3ED71BCC1595AC095E203C30B2B5240DEA82DF896315AC0BFEBDA66B2EC5140C115CE8BBE1D5AC033587BFA8CBF514056B4A19243B259C0F3D52C5FDB9F514034F34820C53E59C0DF1237368E81514052F34820B74559C0B5CA553B68655140D2D9606BCBAE59C0756EC6F841605140D7F7E596F88559C06160529EA747514040CF8947899B59C0BD557BFA2D30514038C415ED09345AC0A9E1A079AB2E51406ED9C334865E5AC0911871231840514010E2FDE1D7C75AC08D5918B1A1475140FEB0CA6EB1435BC075A733596D245140E5E6FD2101E15BC03FB844AA5C14514000BC049C2C375CC0EB103736F30F514033A5B99DB7765CC03789AEED794051404007E696E8065DC013D18FE8C34A5140736F4CFDAE6F5DC0D91C0EDA55725140B7AB56D42E2B5DC08BE63DF0418451404F28087964C85CC0B10F9ABF2F8F5140B215F7672B6E5CC0D10860924F8C5140016DE973A11A5CC0A1DC664C729751400A246B4266965CC02584748066A65140D4637559281F5DC0F538F60E4FA15140265B9E75E8795DC0A3466A6998A25140A6AD5614AC9B5DC0F798228830BA5140ECB190413D075DC099CC55BBC9D351406446F0ADF6695DC0710DFD48E4D2514068936E19BAD95DC0179DBFBEBFE35140B6FF0EF302A45DC00923AB90B3135240EE61D86273775DC0FD0EFD482E2D5240F6246B021ACC5CC04D803A5322545240BB3BB6C0B28A5CC0A542307CC54752404E762321A5AA5CC06923AB10C7295240861ECE8B391C5CC007052625253D5240325001BF39C35BC071CAB884D31C52407200E6D6E67A5BC0B54C0720833D5240BC7D973B6B405BC0D9FDEBB78828524076509EF50D0C5BC0898F4BE4A7E95140FDFDE516E7EB5AC0E744CDB23004524092CBB2A35E195BC051C47E17BB455240F65975990DE15AC0BB6B8C8B1A4F52409A14311572A15AC01357DE43DD445240
-ca     0106000020E6100000010000000103000000010000001600000067422A9B71F45AC0673B59181DF652407E523B6C73BB5AC0EB90AE2DD200534042A3F34A62785AC0E7CA1B8E0AFE52401E17CE8B1E6D5AC0BBF61494B0DE5240CA17CE0B10945AC0AD6D8C4B56C05240389D1CA7CC6C5BC08D44307C66B65240380DBDBA460E5CC001331F6BAF9A5240322AA56F9A6F5CC0FFCF55BB3B99524083236B02C4775CC045220E5A19AE5240F6DC263ED4F25BC09529484766CA5240AD3A190AFB135DC0EF3DF68EC7C252405F98A84C776D5DC099B56D0639CE524002B9CA2E25165DC0C301ECB7BC0C53404E0D2044E9D95CC045351F6BA51E5340BE92A8CCCB255CC09F53A4D60B095340E6785D0E1CB45BC0B7AB96E225E352407F62AF864B445BC00912FD4849DE52401164AF06D39F5BC06F0589EE811B5340FBB467E530655BC0612B48C7D33253400BAA90C1993C5BC087F4775DC0245340723CF0AD05275BC0173FF68E3F06534067422A9B71F45AC0673B59181DF65240
-ca     0106000020E6100000010000000103000000010000002F0000000845D8A291E556C0292A0EDA3B795440FB1FB640AA3B56C001C4A77385875440C20CA56F18BE55C013DCF271E5915440DEBB89874B3355C0EBA8BF3E1494544068F4F6A7CCDC54C0439FE81A66B6544070EC5931A0D353C03373EF145BC85440336AA88C00EE52C0CB1D9AFF18C45440706A4503383552C08BE08F68EDCE54404FC2713CF37450C0BBE32CDFCAC154402AAF162C6AF24EC0BB9EE81A2597544018614543601550C06F34E57D607B54405E9A15ED37B050C099FD14D46A6E5440D7AFC33415EA50C031A185111760544049513472BD5E50C0DF4B30BC6B605440916D7FB00F5E51C0278F74407A27544043973EC9894F52C0A98AD70996E85340705A973B183A53C0639BE81AADD45340D170E2F9DEE152C07DA5BF3EA6CC5340CA414CFD1B0E53C003C4442A38C15340CD92045C2ED952C089D455BBA6A15340B4F1931EDD7853C09F66B5E79779534070C2FD21369753C00F4493858C60534026BDC3F49BF053C0095F7BFA6A4D5340F148E973A8E753C0EF1DD46CEF3E53402F2C01BF3A9353C0C146307CE3365340046DA84CD69153C09591AEAD44275340CAB3EC90EB2354C01D2EE53D660B5340BBC7FD6129CB54C0D9CEB8040F1D534022C4C374288755C0ADCEB80423135340E0013155675F56C0EFDFC9953B1E5340C6F759316E6756C0F1F4779DEF3C5340BEF559B11CF155C0B97D00E6694B5340FC25F02D910B56C0C7621831A7605340C0952D38BAD855C0DFAAF9AB95785340347BE2397C3E55C09358418D7A62534062962DF88FFD55C04DC344AACB97534096E0AB29BAC955C013B6D0CF8DB05340FE6D6E5F3C5855C077D8F2F1CCBF5340B6A7DBBF134655C01F1D37B61BD65340FCC7606B78A055C0713582341EEF5340FEED1F84A2BB55C0477AC6781710544060B44F5AB30C55C015BB6DC6550D54402ADE4860497654C019772902B91D5440F8F8F66755E655C03B2571A30A215440F76ED1E8765756C01D748C8BC336544061413BEC8AD756C025B9D04F656354400845D8A291E556C0292A0EDA3B795440
-ca     0106000020E6100000010000000103000000010000000C0000002B101062B89660C02E9C07061F054B40768EC163B89660C02E9C07061F054B4055F427EAFF7760C0D6B0B54D5C0F4B405A35CF57958160C0B8DAAE13087E4A40D8FA61B7BA6560C07EFE6D6C18174A40E16465947D7260C080FE6DEC57174A400C09D611C68560C080FF6DECE1514A40BFBABA89999160C062DE4B4ACD8C4A400958F15FBFA160C096CA9D02ABB44A407273D954ABA760C08A2E6732F0EC4A409909D697C2A560C03458C3C1C1154B402B101062B89660C02E9C07061F054B40
-ca     0106000020E61000000100000001030000000100000012000000FF9F45836C625EC06DFC4E81BB9C5240959CA8866C625EC06DFC4E81BB9C52401BE6267806075EC03DD3F271728F5240F05364888F635DC0F702896EE38B5240D0DE894767255DC009CCB8045979524016B8CAEEB0E05CC08557DEC3695E52403BAFF3CA25315DC06950A456444E5240B0D078767FD05DC00394E81A8E2752408405AC63302F5EC07D4B07A052F651403443B6FAA83D5EC0E3FF88EE8CD85140EE0EE690E6C55EC05D9CBF7EB4B95140C53108B3F1EE5EC0FBCFF2F1B0D151408BC3CAE8737B5FC0F9C27E9798F7514059047236B2785FC0117F3AD3720C524079663B266E465FC0C3AFD0CF71415240EC1D5AABB5135FC0FB6B8C8B7D5D524042C90456BC3A5FC0AF9C2208BC925240FF9F45836C625EC06DFC4E81BB9C5240
-ca     0106000020E610000001000000010300000001000000490000000C1F8D2452B153C01FFA4E018A165240F4A9B2A3C67453C0F9FDEBB7F92F5240D65FD128C6E652C0C78CAE6D980F52401B8E67A5A18E52C0AB8F4BE418F15140CA94A152588652C0AD40307C2CD551409AD348A0800F52C097EBDAA6A4E3514048D9820DCDCC51C03940307CE1BA5140309978B64E3251C0D9B30AFD99A15140D8CE48E08EFA50C067B30AFDCD87514012128DA404BE50C03D90E8DAE84B5140EEB7FD21873351C0C1C955BB172E5140EA142A9BCA9C50C0CF5BB5674C0451400554D128303750C03D0660123EF65040D093914064B64FC0C18DE81A6CBB5040EEEFBDB90DED4EC0C33B30FC2CB75040AA6498FAE2144FC02B34F68E418A50403CEAE6958FF54FC0EB6C632FEA3F50409A9815ED864950C0515C521E445B5040C23AE97328AE50C01FB644AAD59850404DC1D405F60051C0510B9A7FD0905040B8A24FDA0A0951C0CBF24E81256C50401F6445C3BCC550C0ED84AEEDF0465040ECE0F667DA6E50C039517B7A7F295040FECB48A07D5450C0854DDEC37E1850401AD2828DD72A50C026176E6C4BB24F403EC8AB29E24050C0F24167B24B564F4059E830559A9150C0560F34FFF8784F4058F507B91F3251C00663EC1D72DF4F40D12D75D9A8D750C0CA0B97C825714F403F8CA1D2029550C0C6257F7DD9234F409DB160AB988A50C05A170BA327F74E4040C2D4C5263851C052638954422A4F4021B026FE7FC151C0A6D8631592744F40AAE45971100F52C006F54B4AECB24F40C6953EC9B8F851C0428FE5E309D74F408CB9602B365852C057874BE4690C504058EE931E67B552C035DDA0F9752B5040F4C19A5862B452C0C357B5E7E61850408CC8374F706D53C0410260D2B00E5040304B86AA94A353C075099A7FAA245040A6E0820D6D7953C02DBF1BCEC95350403CECF6672B0153C03F33F60EED5450400D983E496D7D52C04BE877DD1A5D50409ECB71FCCE9252C0D7A7D00FF4735040985A3472797C52C095DB0383E093504099F907B9AC2952C03B3C307C36D2504065ABEC90443B52C02FB4A7F385EE504080F3CD8BF15352C0DDCF8FA871045140622801BFF8B552C00DDE03037F235140443875599F3753C0D1A7335943395140F200A52FA20E53C0594F410D754951407257FA44645253C085012625407151407E0642E6CA8A53C003A2F92BE574514044BCC37443BD53C047BA442AAE8A5140AEC3FD6184DF53C07D42CDB2CB775140EE6C0BD68C5354C0B1345958906F51409CB8EC10763C55C0B964EF54DD7D51406ACF9A18D7C355C07905C3DBA3905140B2827F30A12B56C045D9C995499A51406F8AB9DDDB6056C0E5E3A039C5B05140B6298D24EF1D56C0D38474C0F6CD514080982D78D77856C085698C4B3ECE5140E0D29A58218D56C03FA15C750B0F524074726EDFF05B56C029914B24494852406E5923A1201A56C0B13F93C56C625240126BD1A8DF7455C021FFEBB7717352400E6597BBFAA355C0B77C9D9C134A52404275A84C8F7155C02364521E2F22524055BF263E683655C00565521EC7555240BC5223A1329454C0D5F414940F705240276C0BD6672654C011200EDADB2D52407E65D1A8EE2F54C02D264847F60352400C1F8D2452B153C01FFA4E018A165240
-ca     0106000020E6100000010000000103000000010000000C00000090263115B7B65EC031ED3D707507534026239418B7B65EC031ED3D7075075340B224310F154A5EC079C87E17543753401830A5EFA6C65DC01B1B3736C8605340CBF7D4057D645DC009A75C75E45F534034488DA4B50C5DC0EBC5E1604C695340874153F77D155DC03B2171232038534071536488C9465DC04DFBB10AEC215340C035DF1C96825DC0DFCEB884CB1E534013195A6B8EF95DC0AFAF33D967035340D51A5AEBFF5F5EC06D64B5E799F9524090263115B7B65EC031ED3D7075075340
-ca     0106000020E6100000010000000103000000010000000A0000006C39C7D1022358C001C07E97754A5140DDFABC3AF0E157C0D73D30BCD92F514096D2602BBC0958C08B88AEAD681951408CE80E33006058C0E53D30FC3233514024CE263E1F9458C0E5AAD08FCD2551402762862A4EDC58C08D9622080B2E5140B308945E33B358C073CA557B665651404E348D64748658C0239BBFBE2472514060BFB2A3755358C0A9678C0B386251406C39C7D1022358C001C07E97754A5140
-ca     0106000020E61000000100000001030000000100000021000000CEB5C4F3D3CC4BC046444FE795A849401CD9E61528114CC06CCBD7EFEF57494070B8C473DF654CC032AEEFBAF9E748400454FB4351124CC00E34DB0C371349400804E0DB59BC4BC088BF00CCC8F7484014E65A7044E94BC0807ABC0727CB4840248191C0B2774BC04E7D59BE10A84840D89E16ACA43C4BC074B429A841C748400E037D92FFBC4AC0CEED96C8E39F48402AA450199CE44AC07ACD11DD2542484010E05A70068B4AC03E9741F30958484088384DFCB47A4AC02E7EF6F41D144840766E1DE6F4524AC01AFBA7D98CC44740DE83CB2DDA884AC0B4813062E753474042EB3114BFC24AC06C4EFD2E244F47403001E05BE7164BC0C8DA22EE4D6747402ADB20831EFB4AC03CEA96C806D047407C5D6F1EC81E4BC00639B2B04AE04740A6963F884CB34BC0B433157A47714740AEB6C473ADFF4BC080529A65B97547408AB861AA46A54BC01E50FD2EDDB14740C2A2162C1A204CC08291A43CF7D04740287CBA1CA1A94CC07C7959BE51C9474034131AC90CA24DC0B6D5E8803ACD4740BC464DFCB1B54DC028A3B54D21F34740546EA98BF6654DC0D01ECAFB3120484082DC49DFA59D4DC0102D3ED6F74248405CBF61AA26324DC060910706139048402A6BA98BE9AD4CC0F6424F67F05B494072DAE6158C5E4CC02E0AE2C6CAA44940ECA1162C7CEF4BC0EE6DAB76E8D04940DCC972BB17B44BC0B0AE52844CCB4940CEB5C4F3D3CC4BC046444FE795A84940
-td     0106000020E6100000010000000103000000010000003A000000E06B30D8D7FD2C4090519BC902B8294020D3963E0A312D40A8448AB82DA92A4070BC852DB1E82B4028FDA83DF7B42A408030606ED4E92B40E813BA4E4EFE2B4040CD3375AE142B40602191F2F8BB2C40A030606EC4F12B404071D536655E2F40E09E299ED67E2E40E0A41F1D97A03040206CF66AD3992E40D07A89208EED314010CF2264195F2F40C4BDF6C009F533406060E55976CE2F40806367FE3A633440A0AE9D786BF92E40400C7572FCBA344060C6E8F630F12E4080B1E5AF670C3540C0A700429B312E400C194C16FB4E354080F7B860E0B32D40D00E3B05EADC3640D03DC337C4B82F4054962657E4683740689FD00A69D93340D042A8A5BE7E3540E069EF8FF6FA3740285CCAC7237F3340F8B70A780BE3374058C9C7C2BE382F4048FF88294A063740E8B8B6B1875C2F40E0335993659136400886BDEB78E32D4090399300B44D3640D8ED5DBF55A72C40A86DC63315833640C0B1F01EB42F2C40A80C9A3AEB2E364050F33463AC922B40500660CDEA4B36409841ED819FBE2A40C83B3037A0093640708C086A32E9294028A533D4D0EF3540C01191F2242D294078399300BC4936406034B314C74A294088BF7E52647F3640B015CB5F3D852840884BA4113982364020368AB8D55B2740B8ACD00A4FE036400882A5A0EAC4264028FBEBF239DD36401816A203E8482640B84D41482B3B3640C8AA9E669BF12540F8FC25604CB9354088C2861B552225405882AEE838003540908C8D55B4F322407088858C470F344088999E6681062240F079AEE81018334008898D5552262240100871DEDFCF3240102CFE9240F721402816E5B838E93240D069A5A004432140380671DEB963324020CD0B0707902040806000A105F73140B0AEFFC24B901F4060FBD3A7BBB43040001CDA0387081E40F0074882C8743040E037258268F01E40F0C2033E624A30408042FC2569041F40481E9300321B304070B5739D04FD1D40600CCA71158F2E40107A06FD0CB01D40506DF66A47DF2E40E0B8739D70C51E403015A115E23D2E4098900130A9C32040409252FAC1F52D40D09064F99A972140F0B31153C4162D40B0F8CA5F85EE214090DEA74F8FE82B40409E9E6657192340F0918C67CA572C4080ED1C18F20A24406036606E20412D40E0F6F3BB82D72340509FC6D496D12D40F0D13463F8FB2340300790048DEF2E40207942D7F4F62340104A717FDDD82D40087031C65BC82540B002900499EB2D40B87C6B33741C2740D00F04DF69C92D40C8EF0B0727702840E06B30D8D7FD2C4090519BC902B82940
-cl     0106000020E6100000010000000103000000010000005E000000A61253F7F96C52C00848BF8CE36A4AC0A61253F7F96C52C034418593E36A4AC0ECC8D4C597BC52C04895DAE8A1214AC029E11F44A4D052C0BA374BB28ED049C0EE8E672581BE52C0221B63FD8D8549C0D481F34AB4DE52C09031AE7B6E3049C0CC882DB8E9E652C01E4996303E5648C0CF9CDB7FB2CB52C0CA762C2D20DB47C01A761CE7198852C09289DA74397847C0B0C9D4C53DE952C04041F9F9E55247C03828013F4CAC52C04E3FF9F9C9E146C067EAF667829652C0D434BF8C300D46C091B226FE614F52C034CF58263C3A46C0199ADB7FF02D52C01AA599CD113145C0A0CA71BCE35852C068BCE44B0B0F45C01D8ACAAEE26C52C09E365CC3D1AE45C0C8505D8E3E9552C0FAE0066ECB9C45C0E42A9E35268152C0D5DD066EBCE544C0B3C09A98556B52C0C2D9066E9AF843C03C973E09ED4D52C0BCECB4B51CA143C05A640B165B6052C02DE7177F352443C0B20B19CAA26552C0F0EEEE22019442C07CB2267EAB4A52C0286DA007D88F42C077BF9A98662352C0D97377AB21C141C014EB939E26F751C002B858265DF440C0DE91A1920FDC51C047DA177F9E3540C0101EC751CCEA51C0F073C25DAFEB3EC08C87CA6EAFD751C05EE49C9E7E183EC0A113F06D5ADF51C098EC107987DC3CC0E864A88CEDB951C0788E1EEDEFA33BC0418A67A565AE51C0483E3D72B7B439C0C8047C93DA9951C0D47C1EED05A137C0C8F607F9D68551C03C7DF590B06435C0F2A44FDA858A51C05ECB4AE6A7C133C0266BE239D89751C06495B4E9145932C0CC3A4CBDF07651C0227292C7BA1732C0B60AB680C96551C0F41DDAA87B9431C0445534726A4651C0AA3F5F94974232C0A0A34F5AE03D51C044E3329B4FFB32C01040866A4D1C51C07E74F590B26733C0929C156D753051C0E4374E83665F34C00F4A5D0E130E51C09C6CE47F8D7E35C01FFB41E600F550C062F4329B77DF36C0C5374CBDD3C650C0EEB28B8D65BC36C0F88CA1120EBF50C09EB0EE5681FC36C088239E3505D550C01EA4DD457A0638C099027CD3BA1A51C006629901C08438C03AAD263EB41851C0FA3CA03B5D2F3AC0C4C80E33112651C0249792C7C4813AC0B06F1C27EA1251C06ABE51203BE63AC0BE51973B144051C07EB3DD456E853BC05F07190AFE6951C09EB7DD458A753CC049F36A02DE8051C056DA6231305E3DC08E1F6408D17A51C0BC0085531A563EC0D21CC7913EA251C00A351B50715D3FC08D269EF5C28451C006205CC3AC8B40C0D04B5D4E257451C05C0F4BB20EA340C09A7BF3CA4E7451C0708525F3C61841C064D882CDD59851C08E4DB852B89541C098452361589751C03856F2BFA60042C0A3168DE4CCC751C01C3233673D5442C032D9828D97C751C06815AE7BD5C942C05E279E7523B451C0A028BF8CC84643C0924D5D0E77DA51C016D46937407543C0744AC09791EB51C05BF151EC71E743C0672FD8629BFA51C06286B1188A6A44C02ABBFDA1CBEF51C0CC446DD4930645C038F2CD8B870952C0CA6A2C2DA02045C0204E5D4E96FA51C0FE17D7D74BB445C044BE9A18B3DD51C06EB27071D0E445C07F9C78B6CAF251C02046D09D841A46C0E1B3C3741BD551C06B8777AB293446C09EF46A0242CE51C0A6EEDD11626446C0906CE23932EA51C0394B6DD4A17C46C0CA5E6E1F54E351C0C890B118C6C746C00803DF5CB4FA51C02CA85F60427147C052852D78A11C52C0EA873D3E88DE47C0843D4CBD311552C064180034431F48C03630D8E27C2952C08B0F2990767048C0DE9ADB7F965A52C0DF9FEB85C2A848C05B973EC9FE5452C04F8AA0077C3049C09230D8A2723E52C01F28D7D7E75E49C05C1B2A9BD61352C0985EA741A85649C0EC40E9F3141552C0EBA788BC85B649C0908B67258CFA51C0745096A427014AC03A41862AE55F51C04C7655FD45124AC0BDC80E33942451C0A0D91E2D54264AC07485CAAE855D51C0145196A45E254AC00C97DB7F567C51C0E295DAE8DA444AC0638A672516B651C02C48BF0019734AC02A2401BF67C051C03A4ABF00A8EA4AC0CA8090C181DB51C02FFF404FA0ED4AC04F630B56B52352C067ED2F3E05C44AC0A61253F7F96C52C00848BF8CE36A4AC0
-cl     0106000020E61000000100000001030000000100000016000000193F86EAFEE350C0CA2D3AA15B6F4BC0193F86EAFEE350C0F62600A85B6F4BC013AFC3346FBD50C076640A7FCA724BC0B4F30739A0D250C0DE505C3790A64BC05B765614830951C07C404B2651CE4BC0608B049CF52851C0EC8E660E3ECA4BC0BC0D53B7DA4E51C07EE7589AE0BF4BC0E000DF1C517D51C0E994A07B66994BC0D4CEAB295DC051C072D54789E4864BC074DA82CDE31052C0184F5C37603F4BC0200142E6405252C0F8C1367890FA4AC0F21D2A1B67AA52C0990AB529336B4AC08431D862A37552C02E90A07B11864AC0E81EC791C91B52C01332748291DB4AC0D6E6F6E7E4C651C028B1256783094BC059943EC9DFA551C0183C4B26D4CE4AC0E2AB89871E9151C01C269DDE32774AC0A8DA1F441F5651C0601E637157424AC0D2654583952851C0B7CCAA5271514AC034A34F1A322551C04FA7EBF99F594AC09F3212D0882851C01E838F6A4C6F4BC0193F86EAFEE350C0CA2D3AA15B6F4BC0
-cn     0106000020E610000001000000010300000001000000E600000004D3430596EC56400C32AFDF90C53B402C43810F91D0564078A04FB3650A3C4078BD95BDC0AE56407CF207D2A0103C4048562F5703815640B0ECCD64E34B3C4006AB84AC735E564038F9413FF20A3C40DE09B1A51C34564078E193F79F4C3B40FED91AA9BD2E5640BCB160C43C163C4090E3F14CB507564014F5A40865E03B4062CAA6CE16BD55407C586E3869F93B409C401E46B1745540D4AEC38D1D343C40388E39AEBE40554040C571D58CA43C402420995A030F5540289D154603D73C40B8ABBE1989F9544054B02657FA513D4032F63C4B93D5544058DD1F1DB7763D40DC879CF7F5945440B4910435821D3E40FE23D3C7A6615440A0F2302E376C3E402C9410D21E47544064F86A9BF82E3E4080D3B7DF2AEE5340402B0198F9E13E403265170C4AAF5340449BA16B12843F40206FEE2F579D5340DC9C9D02204F40400458A3B145CB53405ACC337FEC3D4040A454067B5ECD5340B43AD452487F4040F6492FD7E8B353403268CD18CBC040407276289D62BA5340CED3D0353529414026F03CCB9875534046EE1BB43BBF4140AC4392A0570C53400C6A30E2FEF24140964D69C466F952400E244FE759554240884292201DCA5240229929280791424012FE4D5CB8BE52400C7BA43CC2B54240EE37BB7C1EB552405019DB8CB8FE42406C12FC2359B75240F44971097E3043405471281D7B90524022925204A24D43402CA45B50727B52408E02908EBE4043407E3DF569396B524000082DC532B74340D81499DA707D5240B29E29287BD443404811FCA39F74524046B03AB96DF24340E671281DB8B152401C7E0706E72E44402487D6E4F0DD5240E80DCAFBF14744403ADA8E03B0215340DCB4D7EFC63644409A03EB12E33953400A49379C828844406094AD08FB8B53406CCE226EB8974440AC492F57CBA2534030E76DEC86CA4440E8994ABFA40754403EC64B4ADD0F4540008939AEA310544088F6E1C6CC2C454050EF9F94870B5440E4DF96C8C47545409C155FED6F3754409465821A16974540C870EEAFD4FD5340E41A673271754640E2C4A6CE9C7C544056DE5C5B94A846402C81620A5F9D5440E88CA43C13C54640146A170C8DCB54407864AB763EAA47403ECFE0BB834A554066711F511F804740A06240681C6E5540C63B4FE7FAB94740CEE72BBA2A7155401E607109563A4840BE22995A52A6554012B963954B464840FA89FFC009D755400A097F7D849B4840C419C2B614F05540B6BA63950AA64840AC5092A0E2005640FE226732BB4C484094B45BD0AC365640668193ABD7084840E271170CF991564052D98537C6D84740BCBD95BD21BE564066182DC5AE7147401AED2B3A7DA5564004AC29A81FDC4640640577B883BC56405C29DB0C9EA44640D8C5CFAA9108574024856ACFBA8E4640185A2F57C45E574032142D45DC7C46407E6C406817AC5740DEE9D035192D46403644E4D8A3D3574024D522EEE31E46402048810FCCF0574098E7D0B5E3A84540D01F25805C165840CC34EC9DE15C454084D20998E95C5840D834EC9DDB5F4540BEFD652703E15840EC9318172943454050E71AA9223659407C3B268BF754454060AEAD88507559402CD85C5BE74145405605035EFCD35940CCFFB8EA27F44440DC3936116D215A4062FC1BB444F44440A4B8E775C23D5A401CFFB8EA77CC4440DE450DB546885A4006BC74A631114540FE39995AAAEF5A405A7F6A4FA23D45402A27EB12974F5B40F0CD85377D424540AC958BE65F9A5B4094AC6395846F45407A33C2B64CC85B409CEE0A2313B445404CA89CF717F55B4038CDE8801EDF4540F64B0D35BCEA5B401053D4D25D09464036E5A6CE4BD65B40F08D41738D3A4640D4BC4A3FE4F75B4024BFD7EF108D4640A6F07D72E81B5C409C69829A7D814640FA24B1A5B05D5C4078846ACF89674640E62CEB12769D5C408C3AEC1D7FAB464086BA10D20BFF5C401E5A710916DD46401077CC8DF12D5D40DA3CEC9DB031474070116627FD5A5D405E55371C1C564740D4DF32F4F4B75D40CC7759BE17674740A8098F0373EA5D40708FA4BCA9584740B6F87DF275F15D4012D14BCA26864740D2DF32F475B75D409698DEA99FDF47404C6EF5E91A845D40A628A19F8A08484056E80998E9525D405876BC874ED94740D6E36CE1C5135D40E646268B3CED47407C27B1A58AEF5C407C240469FFDC47409C2A4EDC0EDF5C404ADA8537541148406A65BB7C460C5D402EC19D823A914840BC955179712B5D4006599A65BBF1484020A8628A45785D404E404FE767C148404643FC2376D25D40FA22CAFB491249400C739220E1D15D40ACDF85B79C4A4940386D58B3A60B5E40AC8C306260D249400EDBF8863E2F5E405419562168FB4940D8A7C553732E5E40B6131CB413424A40BC58AA6B550B5E407A1EF3577F604A4090AB628A32405E40A23004E92DA04A409E917A55BA8F5E4038C700CC42B74A40D04E369193E45E40307C821ABABA4A409038EB925D445F40BE4BEC1D9D944A40088806FB907C5F40D8FF6D6C7A654A40D8AA281D1FA45F409626CA7B62E44940B04BFC231BBC5F405C444F674CAD49409CD484AC65D25F40626F48ADB15E494098D1E7F512EA5F40184B268B50E14840DA3472ECBA2C604008BB639565B8484012959E25A25260407A569A65665D4840E8CB6ECF975F6040F816900E23E547404AF22DA8369060405E7DF6F4FCE447403630387FF4AB604032A752047B174840DC892A8BD7E06040C4F90AA3363D48408C4FBDAA06D06040AA721F510ACA47403090647898C36040E00E5621329B4740403772ECA0B86040CC61AB76F70E4740B8DAE2A91BA3604090142DC5709246408C8BC741457C6040D055D4D21BA946408E9F7589CE6060401A66E5E3E57B46409C54F7D73B69604066FAE146460E4640922B9B48A1646040D4314FE709774540E4C434A2485460400C13CAFB95734540EAFEA1027B546040EC7493AB8F324540FE9E7509D13F604002A62928217E4540BE6408E9173360401E97B5CD65364540482D38BFAB016040CACC85B744FF4440285DCE7BAB066040E072932BBFBB444088B2628A00D65F40AAF4E14667C04440546A810F9FB75F406C06F35785E84440A47A92A0A68B5F40682AB230BD8D4440AC8369C41D455F40EC0DCAFBEF484440685670FEFF105F40B2A2C6DED8F6434058691E4686B75E40827C0706A3D14340B8FE1AA968885E40ECB8115DD195434018C010D27D435E40CA2F8954E07243409A12C9F080655E40BA82417330AE4340EA3788C91C585E4066ED449008E043405C98B442CA8A5E406877CD9812364440C05D47A2FB685E40DE93B54D23794440143EC23631315E4088D0BF24F44B444042DD953DEFE85D40A8DC337FF3F24340AC27146F80C15D407E8241734CA04340F6B5D664BC825D4096B574A6259A4340CC1B3DCB17625D40C2E7A7D96A5E434048D1BE19D2835D408CC7226EDE0743404ABA739B33B85D403801908EDBF2424090C44A3F58BA5D40881B784367B94240E83CC2B6FAEC5D40602F268B0494424026DBF886B3345E401453482D6AEF4240DC97B442856D5E40987E417395BD42408EFB7D72E8965E40EC4771892CBA424014EE099847A15E401A9CC65E1E774240F48CDD9EAA465E4092490EC05E53424092AEFFC0C4285E40C8AE74A6430E424054B4392E88EA5D402625EC9D0DCE41402EB7D664ADC95D40F415784376744140567E69C48F0E5E403CC65C5B1F2E414086749220B4275E409275417338B04040D6E5CF2AA84E5E40EC9F3AB9EB3A4040E064810F1F7A5E40C4BA265732B13F4034570D3515795E4040AD4FB308F33E40B4EC0998E9505E409C6E45DC1FAD3E4008FE1AA939605E40B06FE21296243E403687A331E5855E401C9E780F20D53D4042570D350F7C5E4060DB1F1D9D043D401C792FD7CD6B5E402CB99A31BB393C4064907AD50A485E4040CD4879BB223C403029146F4F195E4064E093F79E0D3B40D84DD3C778E55D40D84734CBA3BD394038B3392E0AAA5D40D0129ECE218C384044742FD705525D4010C7BC53DF9F374034EAA6CE01F95C40380464616AC83640CE8C178CE2B05C4008BC82E606AB36409CA0C553C3895C4020912657483936407C47D347A2735C40006D67FE5F8C364080B710D26D4F5C40A471A16B260D36407667F569FDF55B402C2B5D27ED8C3540C040361145B25B40903B6E38AB6535408C39FC236B9C5B400482ECE94D5734407C5EBB7CF3785B402C8589204F4834406A2E25802B685B4000F9C62A1B0235400C5B1EC653775B400079780F22653540767169C475215B40E42B5D2718B735402207662736035B40FC9460C4688D3540DCA9D664C7C25A4094D36A9BD8CF35405A460D354EA45A4008801546DC3736405413DA016DAE5A406C60F32355CB3640CA895179EB735A40E8A8D49E15FA3640F46D69C411555A40C4DD07D2205A37404C4EE4D8841E5A406CDB07D2B3D13640249F9CF749E0594014D4CD6429B43640901C4E5C3FAD59405007019873B53640EE44AA6BE88A5940B47D780FFA76364034E81AA9BA695940ACB3487975513640D2C25B5066735940DC1BE94CA32C3540D2BEBE19485159408CDEDE759F3335406E400D35854B594028DC413FC36F3540542FFC239A4959405033979498D935402265CC8DA81A59405CEAB519108F35409853BB7CF1FE584028EBB51931BE35402CB921E36ACF5840C478DBD8491E3640DEE51A290CE258402C720435F4F2364052A4731B85B95840A8460B6F8924374030C695BD41AA5840FC2B868333103840D2F42BBAB36658400CF85250BCE53740383970FE5F6E584034EC413F69153940A8A0D664FFAA5840502D4C1630EB39408EE17DF292AD58406C45FA5D58BE3A40786DA331B1AB5840243B868341823B40D8AD4A3FC28F584060D282E649BF3B40A209DA015E7A5840906E1C8000563C40D20F146FEF545840A0374C16F7423C40E2B521E3EC0F584020DCBC5339693C40465358B38A255840E869E212BBD43C404E78170C88075840D0C871D5EA733D404033D347E8D95740E85297941E083D40D680EE2F39A4574094ED302E06473D402A198849745A57407C6C7F4900A43C402EB5BE1933205740A0CFE5AF99E53B4004D3430596EC56400C32AFDF90C53B40
-cn     0106000020E6100000010000000103000000010000000A00000094837AD5695E5B4064E2EF869C3232402A345FEDEE295B407C027572F781324074EC7DF213285B4084AD82E62D5E33408EAF739B9E475B40642A97942FD2334062847AD58A8D5B40D45ECAC7EB1934403C55E4D856B25B400817E94CD9133440D0AA39AEA4C05B40ECD7DE7528B23340068F517985A45B406C13E94C8141334040A3FF40B5955B40E410E94CABAD324094837AD5695E5B4064E2EF869C323240
-cr     0106000020E610000001000000010300000001000000240000009CAFB263CFBD54C0180A16DE36732040C0D5713C8AE054C02057948FD3E42040D41619CA88ED54C0706D42D74C502140F4BD26FE29E654C0303FACDA2FA921404DD90E337DE854C050D7A83D4F1A224079B7EC903BFA54C018E71C18E4942240C695CAEE6A1355C0C8AEAF7786F92240451BB600732955C0F8238AB8273B2340EE17198AA72D55C0C8CD972CECD0234019932D38713E55C0289C64F9662C2440F91E53F7533A55C0386D6B338C972340A6F9935E194755C0D8ECB94E341D2340CEAE152DBA5555C010BC861B49AB23408E157C534A6A55C0C0268AB8DFDD2340DE710B56097355C088288AB80F4524402E2A2A5BAB7255C0B8DC6ED0F0E024407A673432326A55C020EDE2AA3782254052F0BC3A457C55C0A03227EF61CA25409A7845439A6D55C0D81F79A7482D26405BCAFD61F56355C098BA12412A6F2640685C5DCECA3955C020F9B94E94E7254042441290132B55C000B6750A522A2640042CC791C71655C0805C837E9AFF2540E63CD8E22B0C55C01824B3143F962540909FA19248F954C048B6124124742540D28AF38AF5E954C0308FB6B1A5E025408E272A9BBFD954C0281D16DE76CA2440F8CA9AD800C154C0202EC42568FC2340FC5223E1F4A254C0A06E086ADC2123401ED5717CB4BB54C0885220B520F422406E8D908156BB54C048CDD1990E262240A4CA9A1807AE54C0484A837EF6D921408A86561498B754C09001A203529D2140A2A878F61AB554C088FC04CDA94021400B61977B71BA54C0D0D1A83DD7D820409CAFB263CFBD54C0180A16DE36732040
-hr     0106000020E6100000010000000103000000010000002A000000886ED74470D43240946B821A56F44640205B29FDA01233401A977BE0C0C2464028303037F6633340BEDABF24469E4640C883858C67013340CEF10A231C6E4640180037719F8D32409670BC87718A464078639DD79DDC31408CD385B7AB884640782C6AA48C003140CA4E9A65EC9D4640C81CF6C9F1883040B477F6F4159B4640C00AE5B87251304082BB3A3987804640509EEF3032EB2F40CA4E9A65EC9D46401070F66A03802F403A40268BCB684640D8E425605A3D3040B82A7843F22C4640E0F63671D9743040500BF3574705464078F5993A89EA3040E2D322EE77D5454030CE3DAB204C31408E2FB2B021B94540A8FFD3A7C7AC314094BAD7EFA783454098DA77185B8F324088E96D6C33534540E06CD7443473324018D85C5B703D4540185B636A8D8231402C1DA19FCC6C4540902F07DB14EE3040AC9FEF3AE19A4540B8C1033EF0033040A2BBD76FECC04540D0D4F90752592E408264E5E3201F464070B4D7E5A3C02E40A28D4173B1284640805E1FC732D72D40A6D9BFA4865E4640309FC6D49ECD2D40960DF357BC894640505582907A842C40CA4E9A65EC9D46406048ABEC8DE72B403A17CAFBAB66464090D80A195F502B40AC99181787914640C01278B9DA5B2B408A82CD98F8BD4640B0AC11531C6E2B40CA52379C0AC046409045717FEDD22C40066E1F51ABBB46404092EF30B2302D40387559BE45D1464090766A45D8DE2D4006D1E88060BC464020C5E8F6C4A72E40FAD0E880E5B94640304AD448DDA52E40562ADB0CABDD4640502478B9D2572F407442268BC5EA4640602F4F5D97892F40EE3F89547A1E4740C834414897903040CC2104E97A404740D0094882ECE13040A843268BB830474070C566074CA1314024E3F991D3F94640C0104882C07432406E6448AD36E14640886ED74470D43240946B821A56F44640
-hr     0106000020E61000000100000001030000000100000012000000E04DE559EA9C2B4058AA8CF13041474080E4A74FD3432D40B8CF4BCA45374740908241E930462E4080B1C65E505447404884F966FC0230408A14908E80574740B8BBC9D0C9333040BC1BCAFB1A6D47401056636AD95E3040BE55379CB06B4740C834414897903040CC2104E97A404740602F4F5D97892F40EE3F89547A1E4740502478B9D2572F407442268BC5EA4640304AD448DDA52E40562ADB0CABDD464020C5E8F6C4A72E40FAD0E880E5B9464090766A45D8DE2D4006D1E88060BC46404092EF30B2302D40387559BE45D146409045717FEDD22C40066E1F51ABBB4640B0AC11531C6E2B40CA52379C0AC04640903A371211E02B40CA1F0469A6CB464010D2D0AB6E652B40B2E696C825024740E04DE559EA9C2B4058AA8CF130414740
-cu     0106000020E6100000010000000103000000010000002A000000D7AEB263299154C09C3C34CB48303740AEDD48A0E25954C09C571C80051E37404BF1F6E7992754C0C4278683211B3740D2B2EC507DEB53C0AC8CECE9EAC336402E7FB9DD03D253C0A04DE21232663640287EB95D3C9653C02CC2BC531D8336407662D128927F53C05C2E5D27F6463640C1CE71FC5E4953C070F829F468A83540D4C39A58862153C03C898920F23435406EECF6A7740C53C0F496FDFA76383540B13DAF4649E652C0604E1C8041043540CC771CA7F2EA52C02C24C0F02EBC3440CA43E9F3C4BB52C0389160C4A3B13440DDF76AC2648B52C00429FA5DDD4834405E246448FC9252C0D4CB6A9BE50C3440D5E01FC48ABD52C0B8A5AB4266EC3340E83675999EE852C01CDC7BACAFDF3340992664C8B61453C0400C12A9F0F33340706CA8CC597053C0F42D34CB00DB33409149866A724553C0908CC38DD1693440CE791CA7875F53C0FC6E3EA250AC344068926765C98853C0BC497F496DBD344092C2FDA1E69E53C0BC690435530735406485F34A12AE53C064C893F71D9935405C787F703DD253C090BA1F1D268F35403680B91DEB0D54C05CF2EF86CBD33540439F3E491F2154C0F83AD1017E0936407E6D0B568A7454C074A5D49E2A313640D6966725E18A54C0E4050198196336400ACD374FE17254C0848F892010A336402C421250A8B154C0A4A7D49E2AB036405CA97836A5DF54C0546B67FE232B3640FEA23EC929FA54C0E0040198912736409A7D7F70560355C0741175721BE93540CC8BF38A022355C0FCADAB421DCD3540ACF259F1643E55C0D8EBB51962E53540AA5186AA9C1C55C018050198773436407AC5602BBE0E55C0FC21E94CD59036403295CAAECEF154C030908920C2C93640B3A5DB7F1FD154C028793EA2A8FB3640A7D471FCAAA054C048FB8CBD28143740D7AEB263299154C09C3C34CB48303740
-cy     0106000020E6100000010000000103000000010000001E0000009C4C46639CFB4040A008046944874140E82DC1779FFC404040DC0A237D87414070A538EF9F004140DA6E6A4F327D4140D41376F96A7D404044895204334941409C531D07C23E4040743ED4D2CF594140202AC177DA204040A2BD85B7368D4140481376F9AA5D40402A98C65EEC914140DCEDB6A05C64404056056732D28E41403884B3034A6F404096204FE7708B4140E00C3C8CB4754040C853821A3E8B4140DCB0ACC9327E4040768A5284E68E4140707ADC5FEB89404048807BE0B5924140A8A338EF71984040847941F328964140603DD288C99F4040B883181716944140FC7ADC5FABA94040BEBD85B7A9934140645C577421B14040305E59BED394414078BF20A44DB640404CBAE8000A924140C08F8AA75BBA40405C794173FB8C41400C7105BC5EBB4040E4D133FFA1804140BC7E7996E7BC404094B64B4A0B804140E88F8AA749C34040EA5D59BEF38441405C37981BA5CE404096DFA759E9824140A059BA3D73D640404227895449824140BC59BA3DE6DC4040F097C6DEC6844140143B3552E3E04040C83B379C1585414000DFA58F69E540401C571F512B864140C426870A7EEA404068FE2CC59888414018CE947EE7EE4040B40804E9FA8B4140B8F353D79EF340407CD5D035F08A41409C4C46639CFB4040A008046944874140
-cz     0106000020E6100000010000000103000000010000002300000018F93671D5F53040820EB9EA694C4840D04F29FDD07F3040F6E55C5B9564484050AD55F696073040983E4F67F05D4840F0AF3AAFBF812E40F286306200854840201ADB828ACD2D40EAA85284717B4840102D260184AD2C40A47B593E14474840102389CA1F312B402E83932B477048401047E5590A102A4090C19D024EA74840F0973AAFC30A29402E0D1CB411C64840709AD7E593D4284042CD74260CFC4840005830D8EF7A284038E95C5B17224940A0F42C3B05EF294074DF8537F63D4940405E93A11FAD2A40822EA19FDA5D4940700804DFC91C2C40C098A43CA5764940703A9ADB309D2C40761756A1028F4940E0C1852D35242D40A2B729A84C804940E0AD3AAFB3082E404EF5337FA78D49404082A4B260FB2E40227DBC077264494020296AA4163D304050A9B54D4F594940880D82EF1E2D3040CEF333FF17364940281A59932FB83040BCBC63959D1B494018FCD3A767DE3040B086932BAB3C494060A6E11BF88D314078C000CC5A2E494080C5660742A631404671E5E3460649405828930096643240088930628BFE4840D804D4A767DA32402081F67484BF484070F2C296128E32406E9CDEA95CBF4840F887BFF96566324068C8D7EF51A84840F823F6C9A52B324046F133FFC0A24840F83EDE7EDF1A3240D2640E40A185484088A444E5DBE93140F2D1AE138D7F4840C8D03DABF0E23140BED1AE13A5734840C81D5993858B3140A890070667664840909DA7AE1B1A314050C7D76F9268484018F93671D5F53040820EB9EA694C4840
-dk     0106000020E61000000100000001030000000100000012000000A018ABEC6D0D2140C660FD2E3B7B4B40808C2264993D2040D8A2A4BC44C24B4020CDC971112E2040F682821A1F454C4030A2D0AB5E83204020E3AE13AD674C4020D1C9713D162140AEFBF991148E4C40D001260154D92240EA46784306964C4050A5F907168D2340483DA11F56B94C4010F4DA82F6282540DC66FD2E71DD4C40E03E59349B172540E02456219D9B4C401009260100802440E042DB0CEC714C4000853AAF6FBD24407EAF7BE0134E4C40D026717F09D32540C882821AB43A4C4020738C67EA5525409E2C2DC56A0A4C4000853AAF6FBD24400CC3292852184C400071C6D4CA4C23400CBE8CF128BC4B40E087741C04D8234098F35C5BD67D4B40A04BA4B2689022404CCA00CC596A4B40A018ABEC6D0D2140C660FD2E3B7B4B40
-dk     0106000020E61000000100000001030000000100000006000000100EB226E7BD2840EA99CD98420E4C403066077C486129403262FD2E14CE4B4030CEA74F132E284082AB7BE066664B40F0C4A74F4B1626406EF45CDBB3AE4B40006BB5C3CDCE25408C28908ED5E34B40100EB226E7BD2840EA99CD98420E4C40
-dj     0106000020E6100000010000000103000000010000000F00000048344D9D658A454000F40B07376629402C614663AFA8454060D9C088C1C7284044BDD525A8A44540001A05CD29F327409C556FBFA15B454030F97FE1A578274028F008599992454028C0AF7790EC2640E07791E16F63454038B1D8D38FDA2540A0E431B5084745406886DF0DD135264028F542C63528454090B5750A841126401850D288B6E0444050B2D8D30F1A264038AC614BABDE4440C81EDC70D2B526407CE96B22B5D44440C0A964F92C43274018C849000000454090927C4431332840D0546FBFFF2C454070F945749F152940EC4E3552CB63454078C512412CE9284048344D9D658A454000F40B0737662940
-do     0106000020E6100000010000000103000000010000001A000000467A565497ED51C0EC299794E6B63340348B676596E551C064491C8089E233402C91A112A1B351C0ACC7CD645AE13340DAE5F627B88D51C0C0963768759F334090E5F627DA7C51C094B5BC53E3A5334026158D643B7151C0A487C38D134B334037BF374F374E51C0C8FB9DCE2E50334098B1C334475051C0F8AB82E6E30333404FE4F667CD3351C05497D49EA4FA32403284CA2E591451C0788BFDFAB89C3240B909B6C01D2C51C0505D043584343240C4F507798E4A51C0F4A5E5AF326C324050CDAB69EF6751C04891376876613240FAE893DEFC7C51C068E3EF86A56D32407FA1B2E3868851C0C43E7F49F43E32401B38AFC618A151C0E4A4E5AF2D2F32406E943EC9D5AA51C044C1CD64486D32402487CA2EFFBF51C014FED73B884832404A09190A9DD951C08C0F86833B99314011BBFD2117EA51C0A03C7F49F0C13140DB76B9DD54ED51C0204856ED840B324042178DE403EC51C0A0643EA210513240B71053B77CFC51C07CEEC62AED9D324046178D24E2EC51C0F00D4C1611C93240AC2B3BECFDE751C040461C807A2B3340467A565497ED51C0EC299794E6B63340
-eg     0106000020E6100000010000000103000000010000002A000000F8F553D7177641404CAAECE956803D4014B10F9324524140BCDB1F1D73193D40F83FD28899364140A0A889200F583C401024EAD3C713414094B060C4C4D23B40709EFE81EFF5404010576E3811A63B40CCE87C3347CB4040087E2D91ABF83B40A0EEB6A0819140400CF407D2EA6A3C405094C4142C364040343BAFDFDFD93D407423870A04294040643712A9ABC23D40CC6191E10E5E40401CC2D49E89B43C40F42F5EAEA3AC40402C6FB9B62BB33B40B47CDC5F620D4140E8641C806C243A4090F1B6A0A83C414084C5E5AF3B9939405803C8B1C4654140C47EA16BA30839400CC1836DA1D84140049CC38D3CED3740C0E2A58F32BF4140887C3EA29BC0374010ED7C3353C34140F8F7EF86391A37404060BA3D69584240B8D807D270343640B407C8B145634240E04BE21200003640207ADC5F90774040A8B5E5AFFEFE354088949DD71F053D40E04BE21200003640B089D74400003940E04BE21200003640B089D7440000394020D0BC53B9AE3940303BBC5C1B003940D82A3B05913C3D40F0843A0E38B33840A09BDBD84F0B3E407078C63327F5384088D10E0C5EA93E40B066B52288CD38405C5F34CBDB163F40B06B5259302A3940DC2A6461B4913F40A85907DBCC7E3A40949BA16BEE953F40F845BC5C27753B4054EC598A3E523F40C8EA8F6353733C40941019E397063F40587518ECDBE93C40786F45DCBBDE3E40E03771DEF5AE3D40380008D2D52F3F4080063EAB54183E408C1219E330793F400818B28519FA3E40BC1953504C8E3F40800D3EAB1EB03F4028DFE5AFFA6D3F40D0F6F22CDDF53F405809DF7501EF3E4014D80859A3184040FC3D12A9A5423F4058282441397F404080FF07D229063F40CC8216CDFDE24040C44D23BAABF73E409CA29BB8F9214140C803A50828383F40F8F553D7177641404CAAECE956803D40
-sv     0106000020E6100000010000000103000000010000001400000002003155C2F255C0A093A5A0DAC42A405F0A08F9DCF955C0784627EF4B4C2A400CE2AB69EE1E56C0805E726DF1532A40FA6A3472F73556C0502505CDFB842A40DC0B08796E5056C040F76ED0C4EA2A4000959041FE7356C060BA64F98E0A2B4046BEEC901D8656C078EF972C7E782B401C9CCAAE238456C01846ED8191C32B407657862A346E56C0B8E8C088B9442C40FE1242A6306256C0A0D8AF77587D2C4006D9D405976556C080E0E9E4A4B92C40AF2A8DE49C5656C0B05127EF27D92C40A06ED1A8BE4356C058B78D5518AE2C4056FAF6E7F43556C02878837EF0472C40EC4BAF86A32256C0489C42D7D6F52B40821FB680412056C030E6C088E3B02B4026A4A1922E0456C0F8054674E3ED2B408C77A84C02F755C020D2124160C92B4092706EDF4DEE55C008AFF01EF2912B4002003155C2F255C0A093A5A0DAC42A40
-er     0106000020E6100000010000000103000000010000001C000000D0546FBFFF2C454070F945749F152940C038870A40014540186649114EBB2940342A13309ECC4440B8E2C08879E72A406C5C4663DD9344403056FE92F08B2B40D084A2F2C37244400826CB5FBF3C2C40E4E56B225B0344401078E647060A2D40203D5EAE99AB43409818BA4E26102D40E8F47C33B98C434020FFD199367B2D4064E9A58FA741434008262E29CD022D40F0FFF00DF9F34240904FED8139EB2D404062BA3D00CC4240206B0FA4196D2C40F8DD6B22FB364240188F31C61FD82C40A82F24415E29424008F9972C1CA52D4074D4947E7E604240C095AB42B84A3040F018D9C2206D4240944D2D91DFF4304068AC38EF6F9542406C0012A95C43314034443552B5F34240047C2657736D31406C2DEAD37D344340443AE21291FF3140347D05BCCC7E43406068154633D730406040FBE40FA243405873D5366FD82F40A8EF42C63AE84340302E2E290DDF2E40F80D2B7BF2964440E85F9BC96EFB2C40CC45FBE412DE4440A850C42592D72B40B02B13306F234540C0448AB81FB02A403C6DBA3D774B4540A059D53637002A4048344D9D658A454000F40B0737662940EC4E3552CB63454078C512412CE92840D0546FBFFF2C454070F945749F152940
-ee     0106000020E61000000100000001030000000100000011000000909E22C31750384084524FE78EE54C4050463037CE6D38406650B2B013314D40608C11B2AA0F38407CDF74A6F1204D4020AFD00A336D37401E211CB46E4E4D4058AB33D4FC563740F81E7F7DF7974D404040F6C9AD9A38404AA1CD18A1BB4D401861DE7E3BDD39406C0BD13538CE4D40F076EF8FFAF23A4008D1631510B94D403837AB4B2AFB3B4008C05284D9BC4D40D0C3D00AB7213C405EDED76F81A64D4078F06607906B3B4056E7AE13BF5C4D40E03CE5B878B73B4042AB41F35CE54C402897747BC6493B40DC28F357BDBC4C40B08C3A0EAA763A4038B8B54DFABC4C40D0034FBC519A39405C71D4D27BEC4C40F01260CD222A39401C86821A2EFC4C40909E22C31750384084524FE78EE54C40
-et     0106000020E6100000010000000103000000010000003D000000B86CBA3DB32D454068BFD8D30D152940D0546FBFFF2C454070F945749F15294018C849000000454090927C44313328407CE96B22B5D44440C0A964F92C43274038AC614BABDE4440C81EDC70D2B526401850D288B6E0444050B2D8D30F1A264028F542C63528454090B5750A84112640A0E431B5084745406886DF0DD1352640E07791E16F63454038B1D8D38FDA25408899B30386474540884EACDA29252540680E8E44CC764540A0D5D1993C0B24406CDFF74703A6454008DF4574B9142340D005B7A0E1D64540783B726DFD5D22403440EAD362794740A087A333CDFC1F40248D68850BE5474018CEA83D89012040302E76F9567B4640A0D4F14EA50114407C8705BC97D44540504B69C688D41340E4B1FE8184624540E004FC25A5021140B0E331B576104540004206FDC0EF1040D0A8C41447DF4440E036C8B5D5DB0F40E422D9C290B04440202AF111D5480F4090762E18FE4F4440308110D4E85511408C29B0665DE04340E08380D45ABF0E405C0DC8B1ADAC434060D10F9788670B40C4B3D525027C4340A09CA2F68C990C40D4E26B22C1514340409505C0FCB10B408CB5725CA51C434040494DA1F70D0D4080B1D5258DF7424040B4503E6E500D40C818D9C23264424080CDF14EE962124068D9CEEB1EF44140403E2F599C6A1240B8B30F93EEEB4140501D70003E771340A42A870AB8CB4140D0C2A6D023651540B09D614B539141403014C2B8B80B16401C2C24417F5A414030DC43077C601A4050FB8D440B2041403032FC25E54D1B407049A92C9D094140E0BA4A415DE71C4000908AA7BEC84040B05947A472DA1E407C95C414237A404030025518D1231F4064F253D7BBA5404028973B9D8BB52040187CDC5FAAE94040E8828D5520C2204070191330CDFC404000ECF3BB7E5E21403C204D9D16FB4040C86E086ACA2A23403876A2F2F4204140883AFE929C422540C028870A965D4140481E79A700D22540686691E1716A414020C9861B4DA3264004123C8C58A14140A89C53E86B2A2840A491ED708BEE41402860ACDA13282940E084799696224240507D5A226D202B40F8DD6B22FB364240188F31C61FD82C404062BA3D00CC4240206B0FA4196D2C40F0FFF00DF9F34240904FED8139EB2D4064E9A58FA741434008262E29CD022D40E8F47C33B98C434020FFD199367B2D40203D5EAE99AB43409818BA4E26102D40E4E56B225B0344401078E647060A2D40D084A2F2C37244400826CB5FBF3C2C406C5C4663DD9344403056FE92F08B2B40342A13309ECC4440B8E2C08879E72A40C038870A40014540186649114EBB2940D0546FBFFF2C454070F945749F152940B86CBA3DB32D454068BFD8D30D152940
-fk     0106000020E61000000200000001030000000100000008000000A2A7162CDE3B4DC032DE5826DDA249C000889140CE064DC0ACD71EB973B449C0C036D921B82D4DC0508A03454EF749C08E9BA2D1D8974DC037CF47893F1C4AC0F29468E439A44DC02C61A7B5BFEC49C0DEBCC4F316684DC03EBC36046AAD49C0A2A7162CDE3B4DC032DE5826DDA249C0A2A7162CDE3B4DC032DE5826DDA249C001030000000100000007000000283BD921332E4EC063B5FC96A7AB49C0283BD921332E4EC063B5FC96A7AB49C00CCE384E45354EC0BE45BF00B6E549C048C1C4F391684EC080F169AB0B254AC0F8E4834CACFC4DC07483C9D78BF549C0BEF1F7A65FC94DC03EECCC00BBB949C0283BD921332E4EC063B5FC96A7AB49C0
-fj     0106000020E6100000010000000103000000010000000900000064D8FA74D15066400684400F3C8131C088D8FA74C1586640A675CC34055731C0C2AF9E65C763664014D35BF7E0A031C00005F4BA7C5E66407483A3D88B2632C06E975327A54A664068762FFEB84932C0FCD7FA74013966402A9117B3102A32C0AA93B6F0EB356640123388F082B931C0D082A51F44426640CA9E28C4936131C064D8FA74D15066400684400F3C8131C0
-fj     0106000020E610000001000000010300000001000000080000001A358A3701716640D8C5218A0A2C30C0F431ED000080664072D6329B2F1130C0F431ED0000806640AAE943AC228E30C05805F4BA54726640FCD2F82DDFD430C0FA2D50CA5E5F6640BE8FB4E9AA1031C03883A51F145A66408208C9978E9530C0DA864256DD6666408266F5901A3A30C01A358A3701716640D8C5218A0A2C30C0
-fj     0106000020E6100000010000000103000000010000000500000096B298CA627966C02EC5218A580530C00A7CC8005B7D66C06A4C0DDC748030C0A63EBEE9FF7F66C0AAE943AC228E30C0A63EBEE9FF7F66C072D6329B2F1130C096B298CA627966C02EC5218A580530C0
-fi     0106000020E6100000010000000103000000010000002600000050A011B288973C404FC31B4E25445140584ABC5C29723C40BF9285D15517514020C5969D38FA3D404D7300E6B0EC5040900FB285F90D3D400F6F632F6FBC5040D0999DD7B5373E409B3A303C9573504020154FBC5F8B3D407506FD08B73C5040006B07DBD6713E40534DDEC3150D5040804A82EF2E093E4046AACD98C2C64F40E0CB969D1E843F405AA53062106F4F40B007A174D6233F4022BC7BE0C82D4F4040AE4B1F0B363E4008B441F3D7E34E40B048BC5CEB113C40B4C5EF3A73404E40281BFD0353413A40582FF35744364E4028CFB8BF227F384056FBBF2456074E4028C17E52A4DE3640E297F6F455EC4D406051DE7E6F4A36406851157A2A324E40A0FEC2967E523540FC92BC872E5C4E40C05B52597C8B354074B0A43C48DA4E4058DBA074280F3540AA1F4510BF4D4F40D0099A3A39893540BAB3A43C49984F4008B5A7AE577136407AE19D02AEE84F40081160CD02BB3840D3099AFFBF39504050A322C3E7653940DD739D9C2147504018ADF966464B394041C655BB3262504098DDC9D043E73740090B9A7F718050400057DE7EDD903740DD7100E658995040808DAEE81A8A3740391EAB90E7FB504030AC6D4181FA35404F7400667A275140702B599345A534408DF64EC1CC4651400857B522B43E35402D4CA456B557514030A0F966325B3640A5BF7E17DF355140D0200E157CA937406941CD320A395140B8BB0A7855BC3840634BA4569229514048EC033E70B0394085591831E5455140E8657BB5FB2D3A406F42CDB2D17451405069DE7E77BB3B40D9197123828A51407820C396FC033D40435A18310E71514050A011B288973C404FC31B4E25445140
-fr     0106000020E6100000010000000103000000010000003000000000F744C8CABE1840FC6FE5E35DBB4840E0C13AF106A21A407E1D2DC5D99948406000FDA4D432204072ACEFBA46824840802ECAB3EC5F1E402EB5C65EA02A484080C2C616F6DD1D4060A9EF3A6FCF4740A0E622A6D0C41C40FC0BB9EA91B94740404F60B03FF21A406A7959BE59C5474040F033B729131B40F026A19FD3A4474080DCF94949261840CA701F51E65C4740C0B63AF12617184002408954F122474040F26D241A001A4058A35284FF3647406043ECD5D65F1B405A68E5E3DDFE4640E09E7B989C351B40627559BEB2DA464060E8BFDCF8621C406618CAFBA2AA4640E0189046F4FF1A409E2F157AA6834640803FB268BE071C40701967329C204640E0784865C9321E4006F744105F104640A0F15C13A1BD1D409E1B04E9CFD84540E0775976F21D1A40823C268B7F9045400074DE61543A1240A02878C327B3454080693E12A4CD08406A76932BA0894540405B676E53E307407A3EC3C18B3C454000B04C8E8B3AFD3F926ABC07F42B45400032D6266E73E63F0E1DA19FDA6545400032DF808FA2D53F9EF344902E4A4540008C6C90590BF8BFF0AC63955A8445408004FC52EF6BFEBF7C927B601EB645408080CF59C925F6BF204C9AE5E40246400095F17BCB19F3BF5657D4D2E8014740401BF28348CE01C00E5D71093D884740C0CE8B1DCAB407C0FE64AB7600C9474040547E2D5AF711C086AD8CF13BFA4740608277F3905E12C026E9F99192574840007425B7D35D0AC004B329A86A73484000A2E06A3ADDF9BF4A569A657C52484080884A6E97EFFEBF2885932B5FE34840004BEDCEBAA9EFBF748E6ACF76AC484080DF04AD906BF53F90F6D03547104940807D8D355939FA3F5A5B9A652A79494080D68C2DCC1B044074690E4002934940804590CA724405408C46EC1DFF65494080DE18536BFC0840BCB38CF1E263494040DA6A0B9AB40C40EE60D4D28230494060DC7E35E32411405200A8D928F44840A0A4D72767321340260E1CB420FE4840406CF6AC3AB21640C243EC1DC6C34840802815324E971740C4761F51A9B8484000F744C8CABE1840FC6FE5E35DBB4840
-fr     0106000020E61000000100000001030000000100000007000000604A41E9F47D214076AF004C665045408064EF30AEC722407C46FD2E4781454040AA3375BA1E234060D75CDB8413454060E1A015A2752240FCF04410A4B0444040F5EB932B8D21402AAD00CCB3CA4440B06A630BA31621407C527189D5204540604A41E9F47D214076AF004C66504540
-gf     0106000020E6100000010000000103000000010000001300000040269F34A1FA4AC0F055CC8FB4061740A8812E7729CF4AC0604658B50B961640AEF06B01EA704AC070869CF9AFA315400CD3834C63E949C09003C2B85843124030219FB432D449C000A76C63FB9F1040E0EBCE4AEA1F4AC060F0CEEFC2ED0940B00EF1EC38474AC080D6CEEFA2090440B06B80AF46784AC06070DC63B5FF0040064EFB4390B54AC0A08C614F576D0040A069E3F804C74AC06085503EDEAD02409C1BC890A6E34AC0006F05C07C0303405C2DD9A1450B4BC0007AB3072ED8004088FE42252B434BC0A04AE39DAA7E024014E6F7A6B7224BC000FAB6A4F4E805405C5D6F9E96174BC0C062A930AA8D09406A9A79F578014BC0A02D65EC05FB0C401C3FEA3224334BC0A0DE3CCDB6D91040A23176D8433D4BC0D06F281F4796134040269F34A1FA4AC0F055CC8FB4061740
-ga     0106000020E6100000010000000103000000010000001F0000004040BCFD02302640306D5E09A3D40FC0204F077CDC212440F019C80C80C107C0C08611537CCF224050D708B48D2701C060AA6DE29298214080EE99F0E3C7F1BF804EDE1F01A9214080EB3DB82BEEE8BFC0A53375CA18224000430ED00366DDBFF07ED7E52B95224000FA2F3AD331D13FB080D7E55BFC22408017A4197329F03F3035BCFD1AA92340806622CB1716F13F10F003DFF591264080D65FD52EECF03FA0FD77B98A8D2640E0BCBDDEA116024000FB3D4CDA80274000521D0B339D0240C066A4B200B82840802E981FE18A014070F42C3B15E729402055BA41AB920240F084EF30D2262A40C0DB42CA0323024000A3741C98012A4080BE44ED594BFD3FD0343712B5902A4080526372E506F53FA0E24486A70D2C40001EF6D1B154F63F001878B9728D2C4080F170E69F26F33F70E4E1BCC7AF2B4000D854750AD8A33F70C6BF9A01A22C40800CE5C51FAFE1BF20837B56D5D92C40E0E2B13BA255F5BF000EA11532992C4020ECF2E2EFF8FFBFD0F6F2CD1CFC2B40B05D1D6235C403C060E17EF31F382A40A0FCF0680F6E03C060983AAF8B262940608C63201A2DFFBFC0A84BC0CCFD2840A0DC6B7D2D2203C0406C7B5655A4274020149FB0001D04C0C02B717FC1F4264090DF94D9FC1F06C050FFDA82D2B5274080DBAC243B6A0BC04040BCFD02302640306D5E09A3D40FC0
-ge     0106000020E61000000100000001030000000100000018000000BC9A503AECC644407276306290C4444054DF947E01DA44409CE4D0B541FB4440CC7BCB4E0BBA444034314F6793524540988BDC5F0F70444092F44490BE814540A86B5774232944400AC5AE13779045401CAF9BB83DFA43408ACCE800AEB74540A8F3DFFCD90944409E36EC1DCCC6454010B8D5250A7644407EDDF991EAB04540488168857B324540D024DB0C339C4540848E3F29C5E045404472F674D35E45404CF5A58F31F74540B078306209474540E83AEAD3D044464020C4AE93225B45407051981B32BC46404E34EC1D5B40454004071A6A61E34640CAFC1B34D50B45409CD8836DD5334740AE62829A2AEE444050B9FE819D1247405CC54BCA84DC4440DC3176F9A65147405420DB0C4197444074AC8AA735404740D8B23AB93F884440B4E8947E36FB46405008900EDB8F44403409B7A0D49B4640586FF674AAB4444040A2503A7A7C4640825A48ADC29F444030021A6A97CA4540F0ECA759CB8B44406C8FDC5F4D4F4540DE2E4F67A5CA4440BC9A503AECC644407276306290C44440
-de     0106000020E6100000010000000103000000010000003E000000E087741C04D8234098F35C5BD67D4B40C0CF559710E12340404178C35E4C4B402061DE1F75E625405A7748AD8A2E4B4020AC5CD101E125408ED911DD1C014B40D036ABEC99E9274024D3D76F26194B4040ED8F0471092940687E821A353C4B40C0F3F2CD804B2B406221F357AA094B4070E34486473D2C4078508954E6E04A405089B5C3E5B42C404CDBAE13C49F4A40C06493A127262C40A4C99D029A7D4A40003F37120DE02C4024AA1817FB4F4A40B02C89CABB5E2D40DE5D9A65830B4A4000C9BF9AD5362D40F063D45262DF4940E0AD3AAFB3082E404EF5337FA78D4940E0C1852D35242D40A2B729A84C804940703A9ADB309D2C40761756A1028F4940700804DFC91C2C40C098A43CA5764940405E93A11FAD2A40822EA19FDA5D4940A0F42C3B05EF294074DF8537F63D4940005830D8EF7A284038E95C5B17224940709AD7E593D4284042CD74260CFC4840F0973AAFC30A29402E0D1CB411C648401047E5590A102A4090C19D024EA74840102389CA1F312B402E83932B47704840C0787B56997C2A4072630E40433548403072DE1FA9C42940D8AAEFBA0225484070E7B8603C0D2A401E2B3E569CD147402035D44881DD2940508A6ACFDBBB47405021C337D43D29408EBA00CC10D64740B01926016048284010F80AA3FED94740600215F052DA2640CC192DC50AC3474050DF2C3BC9162540E4192DC57FC847402029ABECDDCD2440A80BB9EAB7A6474000DDC971C9CA2340D86BE5E343CA4740B0698C673E302340226F821A35C3474070F688CA930B21401017908E58EA4740604D7B5675A2204036EA96C889CE474080C2C616F6DD1D4060A9EF3A6FCF4740802ECAB3EC5F1E402EB5C65EA02A48406000FDA4D432204072ACEFBA46824840E0C13AF106A21A407E1D2DC5D999484000F744C8CABE1840FC6FE5E35DBB4840608707BE93F81840CA1456217CF34840C0FE1B6C1B2C184028F333FF63104940E0F9E1FE6AA01840FA498954E0664940E0F9E1FE6AA01840FA498954E0664940E0F9E1FE6AA01840FA498954E0664940E0F9E1FE6AA01840866F482DE1664940E0F9E1FE6AA01840866F482DE166494080F344C862F41740E48259BE01ED494020FE44C88A5B1A40A4DB4B4A0FED49400069AB2E195F1B404E80BC873D1D4A40C00D7F35435E1C4000CA9D0270924A40C02567EADC9E1B406C127F7DB7BD4A40E036DBC4D5661C405E272DC5D2D84A4020423E8EB5BE1F40ACBD2928C8DF4A40A03A6A45503E2040F0151CB48EC34A4030DA03DFF99921406C7D821AA9024B409004FDA4EC2421404A55268BA4324B40A018ABEC6D0D2140C660FD2E3B7B4B40A04BA4B2689022404CCA00CC596A4B40E087741C04D8234098F35C5BD67D4B40
-gh     0106000020E6100000010000000103000000010000001900000000E44F2B42F6F03F6022FC2521B7174000782AD9913EE0BF303A1E48B75F1540808854459B04F1BF50B9099A8F0014408016702D706FFFBFC0B06C6383D71240802AB81658D906C070FD4DDE57FA134040B87A0C517C06C090FD1371638E1540C03B554D78F409C050CF099A7B001940804AA0CB61DE07C0503F995CD1841D40407270355D7F04C0086DDF0D73702040400ED061B69E06C0B872A5A0F0482340C020443C0FB607C070C4235269CA24404001BF50F58507C040D05DBFE5EC2540801E7A04F440F3BF20E50B070705264000C48668D45EE8BFE8E7A83DB5DF2540009CADA4AF13DCBF70D15DBF593226400020D95FB05F983F401F79A79009264000C0E7D6617DA9BF30645A22F1692540002631396E86D73FF81779A7E661244000E0ECF4E96AD73F2037380015EE2240000A61CF2A84DD3FE84EBDEBBC5A2140006BA690F1C8E63F8852F758FB9F204000F4DBE3D86BDF3FD02E884BA0A51D4000A224429640E23F607BDDA04DA81B4000A265E923C8EA3F20C295BFB21E194000E44F2B42F6F03F6022FC2521B71740
-gr     0106000020E6100000010000000103000000010000002B000000A829BC5C210535406A26157ADE6B44406033F6C995AC354008C7E80034774440180C9A3A2D0E36405094B5CD2E934440086EC633E99836404694B5CDB3904440C034599301C3364078FEB86A03A74440306C29FDCEF336400276306243AB444068FB4EBC2BB137403A57ABF68FA74440C0A2BFF91D7E38402E4A371CBDCA4440E042F6C97B323940D6E90AA3039E4440282871DE2B1B3A4090D55C5B19AA444098F1A074F61D3A401CB19D02D8E944407075EF8FAC9A3A404AA6C65EF3C74440C0BBD00A6B4B3A408E150469D777444038A622C3930E3A40C68C7BE07C694440C0D655F69A7239402CE2D035206D444080ABF96604ED384016641F5139794440A01D71DEFDB637400CECA7D9F3574440A0AC969D7268384088092DC5FF0F44404825AB4B64E63740CCDC33FF22FB4340F00A60CDCE5737407A2415FA01FB4340B053DE7E61D03640C481A4BCED3C4440E88C4B1F55A0364072DD33FFD6204440084DA41189D93640EEA8004C64D4434058D48F639B593740CABF4B4A5298434020ADD00A1DF936409403908E467C434048311F26AF87374020C585B74741434090E1660768063840B294EFBA281C4340C00389293E0A38400A905284D7D3424058AA33D4701D37403EC722EEC2F54240205D18ECF368374076B8AE937AB442409864EF8F64C6364020D0F9910AA7424030F2144F7B273740CA6793AB143642401082747B727D36402C6B30E27A344240684407DB86AB3540428E5284286C424020D2C9D0854B3540EAA79D028FD24240505DEF8FBA1E35400C5448ADB8274340D0C88F63E3BA344042887BE08E624340F08FBFF9BB37344072786ACF8CAB43402007377167263440E2E26DECFFCF4340C8DC3DAB709D34406EF81BB4140E4440C8FBC296CCAC34401EBFAE13AE3744402889E855FFFF344054D7F9913D4A4440A829BC5C210535406A26157ADE6B4440
-gr     0106000020E6100000010000000103000000010000000B000000208500A13D4A3A40EE9B631566A64140085F41483D2A3A40FC1CB2B0A3804140084BCD6D98B9384044942928C2754140481B377129BC3840A43160F8E08A4140E87800A1D5833740C41678C3D6A3414000BE44E531B33740D29C63953DDA414020193771253F384074C85C5B1BAF4140207C636A67063940FA2EC34166B64140981560CDEAC43940204AAB7650AD414020869DD7B9BE3940F27CDE290A974140208500A13D4A3A40EE9B631566A64140
-gl     0106000020E6100000010000000103000000010000007F0000004AF47C92C36147C0C5F7DA6630A85440AE7FDC3E06B445C07B6CB5E768CE5440FEB1495FE2F243C0D3D21B4E88CB54402C12130FA24F43C057BBD0CF23E354402663059B3F8B41C0B362DEC349E95440D8EAEBB0B7193BC04147F60E42E15440A4EAD3656BD834C0C9AC5CF581AE544074D7EBB01AB136C025DCF271DD9554409403D4657C843AC0E30B89EE0C935440E88B117065E63FC093D855BBCC8C5440CC0EFDC17D653FC0BD67183161815440C0EA4E7A4EDB3BC0E73EBC216F885440CC5B005F2FD838C0631C9ABF5D725440387C5CEE3CE736C0F3893AD3F5855440E86AE8135E1236C0B1AB5CF5016F5440782BA4CF6B2B37C0AD7E632FC6495440943B8C84A59F34C0730E26A59361544098A8A7CB4E892FC09BCAE1E0657A54408035B53F578A29C0093B1F6B016E5440F8D08846C76A28C02D71EF54A8525440A4E7E4760B4930C0E321D46C1F255440D46B339299D930C0A7BE0A7D661654406C65854AD60B34C0896C521E550B5440C4E30DD3F8BA31C02D516A6943085440EC8544A366E632C075FEB1CA99D95340445611707AB433C0E5BC0ABD14B053408859AEA66DAC33C09D4730BCDE6853400C217B730C7932C0FD91AEAD143F5340DC166A62F70834C029621831703C53401CBBA032F0AD35C09157410D30285340088A44A384D533C00391AE2D47065340D8C9EBB0569933C03DEC3D70E5CF5240B0F00DD30CAB34C0D5D0557BF9C95240D0F147406F5F33C04DD3F271EB925240D4051FE41D9835C021887400538E5240BC9D55B43D6F34C02FD68F284C745240646FBFB72AC334C0B58A11F7B75D52403CE6FCC1152C36C0B9200E5ACF535240C4526328E09037C01BEA3DF09F535240E4BDA032295036C0A767EFD445285240BC722281AE4C36C06771C638C80B5240481F93BE404738C0CB60B5E74326524078734BDDFECA38C0FD119ABF2115524024A41B47677137C02BECDA2621055240B890A76CFF2136C0114B07A003DE5140344E005FEAC035C07BC8B8047AAA5140BC3A18AA3A8937C0BFDC66CC249E514004B92C58984E38C04DFF88EED0B65140A45429BB1D8B39C0AF587B7A94DB51407CE2EBB08B3339C08F2B823425B05140D8F1C254DD5C3AC0A7D52C5F7E8E5140D0A8B87D37BA37C005D9C9D5C68B5140C8795CEE5A5936C0738AAE2D498851403893D0C87F0739C07BEC771D90505140781D82AD53BF3BC071F2B1CA1B1E5140E8EC77D677AC3EC0977A3AD3FF075140E0766328D3C63FC0890660D2BA0751406C3F802FD06740C065E7DAA611EF5040A49E0FF2D91941C061A5331981AB504016C294DD292D42C0B78CE89AA67E504006C731949A8542C06D8211F7027C5040DC7EB362013043C0658CE89A4B6C5040B666CBADF6E743C0A9773AD3575D504084BA834CA15544C0ED026012C23550400232FB43665744C0650C3776E508504050C9F726279844C08E4AA11FC1BD4F409414D921E16845C02A759A6556574F4058214DFC543545C026F5E88051F34E403ED7CE4ADF6E45C0E852157A7A894E407C5DBA9C6FB045C06A5E8954820C4E400ED83194CC6446C0263C6732B4044E405EEC42A5BE2147C0B433908E386D4E40BCB6D504A82148C08063260BE16D4E40909DEDCFD59D48C09C19A8D911B44E403E6F57D33FF348C09285AB7612314F40CCCB495F0ED149C0464E3ED63ED04F406C1B6547F0114AC0AF2E5958D1115040ACA78A8667234AC061B1A7F34E4B5040C8BB9B17B1D44AC0510460925F865040BC138EA39BA64AC0977CD70989B550403EEC31940BFC4AC0CBE6DA2618CC5040DEB6FEE07D7D4AC065A0F9ABE2165140C6836864D8BC49C0B7557BFAB02E51401AB69B174B8A49C0E57400E675495140D44B987A846F49C0CDE9DAA6767B514044E831945E144AC0EB2348C7BE80514090943F88403A4BC0D5799DDC45A251409A0D543604CF4AC0D33F303CB0A35140AECEE615F0B149C04FB7A73377A4514092BA9B97FF8D4AC0C5ADD04F1CCD51403E3EEA328A004BC0CF587B7A05E35140C690059BD6EA4BC043AED04FE2E951404EF1CE4AED5B4BC001CE55FB842552408A0A1A49C5A94BC0EB1C71A3593D5240CA5A35315D0F4CC059C81BCE9569524042646F9E6CA94CC035AE331975AD524010676F1E644C4DC0D5E166CC4FC652407E41B045E64A4DC0D70726A51AE15240027E80AF61A24EC065BDA7738D065340A2ABDCBE21B24FC0B964B567360B534043A789C71C8450C0BBD88F28A1085340001E6488472051C0D76E8C0BEE035340C4D048208D6A51C0A9E603834D185340AA351290C3D951C0BDB033998C4053403B0D5377B53151C0A5732942AE545340E68567A5E4B050C06558418D0F5853403EFBA42FBFC251C0F539BC21B3685340C6717FF0015352C013E566CCD3825340DADE1F44334A52C01D1C3776B19B5340CCC2D4C5E65751C06F4CCD327DBA53409428D8E27B6D50C0DD014F813DD953405B5B0B96BA5450C04165183185F053407F57D168780151C0E36FEFD47F0754405D5D0BD6AEC950C04FD3B80403215440CCFAF7A639D84FC08B4B307CB14D544088E6E615021E4FC0E75507A08C5454401658242059534FC0AB9A4B644E7154404EF3F7A628244EC0E72671E326825440A6D4AC288D9A4CC0B797AE2D358C54402E4C5E8D34114BC0BFD11BCEC68C544098B361AA8A854AC0494C307CDA7854403A25D9A1FF3149C089BD6D06169C5440BE15027E7E0048C0592A0EDA2584544014C1495FF86047C0E99DE89AC46754403E6A9140F14246C0F93A1FEB486A54406224130F4A7347C063425958C98C54404AF47C92C36147C0C5F7DA6630A85440
-gt     0106000020E6100000010000000103000000010000002300000046BEEC901D8656C078EF972C7E782B40EB6C34B2F3A656C03087948FCDD12B406BD737CFDFCE56C0D09B42D70CDB2B40ECD737CF24EC56C0C80AE3AA9F402C40DCCAC374930E57C05089F758E1132D40F0B278B6010D57C0280AA93D03A92D408B6E34F2940557C0380CA93D11212E40B60B6B02AC0E57C0D8D33B9DBD802E404E905694DEEF56C0E4B6CD640A11304055CC60EBB99D56C0BCBD07D2CE113040EE9F6765169C56C05CE129F4FC68304023DAD44574A656C0C8A082E684783040BA514C7D8EAD56C084D118E3FEAF3040A00331153AC556C0F0387F4921EB30407207CE0B0DDD56C0CCA0E5AF8E4031401629F02D25C056C0C4C9413F31413140A8881CE718C056C0B4A682E64DD131408DD9D405598456C0F44D905ABFD13140D7F3BC3A284956C0285867FEEDCE314013615DCEA64956C01C9271D5FC0331402227F0EDA94E56C080EA4CAE1CC62F407C6ED1288F3B56C0F08A20B548C62F40351C198AB12656C0784879A7AA692F4080E548E02C2156C04898948FF5B52F4086D7D4C5660E56C0D8DE750A98742F40C2939041902B56C0904F504B47B12E40F23E3B6CE84956C080B3B6B101222E405C9490016A4E56C0C03DDC70A2BF2D404F6B3472504956C018EA2352255B2D40AF2A8DE49C5656C0B05127EF27D92C4006D9D405976556C080E0E9E4A4B92C40FE1242A6306256C0A0D8AF77587D2C407657862A346E56C0B8E8C088B9442C401C9CCAAE238456C01846ED8191C32B4046BEEC901D8656C078EF972C7E782B40
-gn     0106000020E61000000100000001030000000100000046000000105796BAEBE020C0F04E700082BE1E40D000A42EBA7121C0C041FC25C1D81E40F891662425DA21C0002D884B743C1D40F8E2810CE66A22C0A0EF7D7474411D40487E1BA683CE22C0C0BCAD0A8D1B1E40606233F1AFAC22C0F00E2CBCD1B61F4050AA7735BC8223C0F891013005152140D0DFAA687B0824C0E00B16DE64DB204050187BD2CE7524C098C0972CFACF204038CC5FEACD0225C010862A8CA2B22040805B22E016FD24C01056F7585B6E2140189055133E4F25C090EEF3BB50F42140F0770A95AA3E25C0801DED812B892240C8053054A5AD25C0E00505CD61602340009B8F80263C26C0B01679A77C1724402050D761A5D527C0B850E6470E182440E80D931DF94C28C0E05520B596B7234050735C4D13DA28C06811DC70F2AB2340B0523A2B853129C098BD2352893D234038DCC2B3856C29C0908453E877AF22401003E5D53B7E2AC060C834635CCE214098B18F80CC5E2BC04078DF0D4FFD224088A0E138E9252CC080E5E2AAB7C5234078EAC2B3FFA82CC09072086A0C08244008B6F249CE282DC0281879A7CE6D244040875C4DEF622DC0101C79A706502540A0D3DAFED9AD2DC05073CEFCCDC02540C098D027B8422EC0688242D7B0142640B0384165125F2DC00068BDEB3E0E27407039DE9BAEC32CC0C82D504BBF04274018FD70FB283E2CC0D82BB314AF5A27406805489F35CD2BC0708BDF0D815B274028C3A0917F7C2BC0382679A75E9F2740C83EB53F13A82BC0202979A708492840905C3A2BFF6F2BC050D1861B8F7E28406896A7CBA4662BC058E5972C202C294040A3B8DC856F2AC0C8D0E9E4D826294038B8A09183FF28C0709BB6B107AA2840A8456387A48E28C018132E2979B52840E8961BA6396828C08017CB5F69EE2840E0247BD20C5127C098E3972CEEC52840B86EF983230727C098957C44CFE22840D0A4C9ED8EE926C018EB6ED056272840A8ADA0915B9826C058BBD8D3EB272840A8295276B71226C058C31241286C2840E846D761DDBD25C010604911145B2840F01E1809BB2F25C07031504B13D9274008F9F5E6965424C090378AB82BB0274088AB773530C823C0D08EDF0DF71E284098FA2F54C52223C058BCD8D37363284080F82F54BDA722C05079948F27AB2840D0A47735444122C0A0011D18BA9D2840884D22E07ECF21C078927C443D2D28409097A0917B9221C0907BCEFC07A02740700B1809ABC020C070D7FAF58BC9264040AA4ED9A02921C09875CEFCC145264070882CB79A3D21C04024B3142D9F2540B00B18098BD020C0C095F01E8AD12540E0EB921D919020C0E8C72352CF95254060C3368EB6AB20C0F86FCEFC57FD244018C4D3C4540F20C0C8FC90F2BE6924406014EFAC6B7520C018FC90F20E42244010DB810C869E20C080C2C0883D942340C8317498812820C0F06C086AA0C02240204ED71F12541FC0984A20B5C226214078694402316820C0D0F02D2931E92040A0E8F5E61C9920C050ABE9E404A22040C8C5D3C48E7120C078EA90F2243F2040E85F6D5EB88F20C060EF4307ACBF1E40105796BAEBE020C0F04E700082BE1E40
-gw     0106000020E61000000100000001030000000100000013000000C098D027B8422EC0688242D7B0142640605252760F542FC060CA861BBDEA2640E8080799D01530C0A0126896970C27402C4E4BDD955030C0D033ED81EF9C27401003CD2B174F30C0A0AC64F9DAEA2740BC592281249D30C098F9E2AA81572840CC89B87D6DAD30C010957C440BC52840F49B66C5D02530C070856B3374182940A87CAE0516A22FC09088086AF8072940703907F8D1182FC0103BED819F4129406896A7CBA4662BC058E5972C202C2940905C3A2BFF6F2BC050D1861B8F7E2840C83EB53F13A82BC0202979A70849284028C3A0917F7C2BC0382679A75E9F27406805489F35CD2BC0708BDF0D815B274018FD70FB283E2CC0D82BB314AF5A27407039DE9BAEC32CC0C82D504BBF042740B0384165125F2DC00068BDEB3E0E2740C098D027B8422EC0688242D7B0142640
-gy     0106000020E61000000100000001030000000100000028000000605F987A0FE14DC0405DCEFCEBBB20400A464DFC038D4DC040213DCD2EFF1F4032309FB4D13D4DC0307CA33309641D40E8C2FE60393A4DC050430D37C6541B4096101A49FF094DC090508111833C1B408A313C6B67C54CC070BFF888FA4819402845EA32DF924CC07067406A81E41740A4670CD553A74CC0A091AD0A554B14405C323C6B07F54CC0C00EFC2521401340123976581BEE4CC030075FEFA44E1240AC6CA98BB8054DC060DFD903533E10405E16543600CD4CC0603BB06A5FAD0A4076E2200306A44CC0C0A116D1FDAA0A407860D26736934CC040E36B26C32606401CC29B970A454CC08041F6D17164FE3F9AEBF7A62F644CC04049CD75C2D1FD3F509EDC3EFCAA4CC0C0859DDF352DFF3F4846EAB29AD44CC040F88831DEEBFA3F82B48A86850E4DC0409396A5781DF83F7A96051BF9364DC040EC25684E6CF73F5E0743251F454DC00067AEF0164AF43F7842B045F3834DC0C09DE1234A15F53F6840138FB1D24DC040FCEBFA1D97FC3F84CC384EF9DB4DC06082503E3EFF0140E8D3723BBDFC4DC00027B06AB70A06402EA779755FE84DC0A08C91E51BDA0C401A2F027EDEC44DC0E0655EB2A0AB0F405E252B5A3AE24DC080A195BFAAB11140B2855753350E4EC0A0B84307C44C12400A595E0D90FD4DC0D060170E660E1440606098FA591B4EC0402E47A45AFA1440007646C2E55D4EC0B09AE77715CD14403CD038CE84B44EC0B0EFC8F215D6174062282B5AD8914EC0504DBB7EEBEF1840EA3CD92165944EC0A0252582C8C81A40B05DFBC3A1454EC0A0E77D74246D1B4022C0C473D8254EC09095281FF72C1C4020CB9B17A9514EC0E0052CBCF5A81D401AC461AA79464EC070F4E03D501E1F40605F987A0FE14DC0405DCEFCEBBB2040
-ht     0106000020E6100000010000000103000000010000001500000019AF8987254C52C0B0A5AB426AEA3340B58F045C192552C0E40B12A91ADF3340467A565497ED51C0EC299794E6B63340AC2B3BECFDE751C040461C807A2B334046178D24E2EC51C0F00D4C1611C93240B71053B77CFC51C07CEEC62AED9D324042178DE403EC51C0A0643EA210513240DB76B9DD54ED51C0204856ED840B32401E0042A6D61752C0D0D47BAC0737324092EF30D50A3652C0008660C446253240BCA1156D175D52C07845B9B6C8373240C58D6725097B52C07C4BF323EF073240C92E3B6C509D52C04450905AB15732409F1D2ADBAC9752C01CF2636137AA3240B467A84CC55C52C0EC913768AB863240AC3375D9792C52C0AC79ECE91F723240E0CC0EB36E1552C0D0D67BAC1DAB32405E30D862AA3252C08CDFB519041A33408CC6D4C52E3252C0F839A8A5CC7B33407E6EE2B98F5A52C004CA6A9BB9A3334019AF8987254C52C0B0A5AB426AEA3340
-hn     0106000020E6100000010000000103000000010000003900000038BBEC1044D455C0D011F4BB28F82940EA09087952DF55C0B870837E56982A4002003155C2F255C0A093A5A0DAC42A4092706EDF4DEE55C008AFF01EF2912B408C77A84C02F755C020D2124160C92B4026A4A1922E0456C0F8054674E3ED2B40821FB680412056C030E6C088E3B02B40EC4BAF86A32256C0489C42D7D6F52B4056FAF6E7F43556C02878837EF0472C40A06ED1A8BE4356C058B78D5518AE2C40AF2A8DE49C5656C0B05127EF27D92C404F6B3472504956C018EA2352255B2D405C9490016A4E56C0C03DDC70A2BF2D40F23E3B6CE84956C080B3B6B101222E40C2939041902B56C0904F504B47B12E4086D7D4C5660E56C0D8DE750A98742F409C0A08F9C00756C048D49E6697602F408A03CE4BB7F955C0E883E6479ABA2F4056EB824D67E755C0A01D80E1F1C12F40F7A63E8977E155C0F82D91F234982F40EEC8606B89D755C030C1F01EA2B12F40E23FD8E2CDB955C0901C80E16F832F407150E973389C55C0803B05CDCF902F4050BD8987A18755C098C1F01E72C92F400661FA04208055C0B464154662013040EE070879BB6B55C010B1DF0D45E82F400ED1378F6A5C55C0E8EDE9E480C52F4050F6F627AD4B55C03873D5367DD12F406374A84CF53E55C0D07A0FA4E9FD2F40ACA33E09BA2155C0903FA203E6B62F40E9A6DB7F911755C0F83B05CD99AB2F40F66F0B16090455C0F84779A7E64B2F4097FB30D588F154C0785A27EF1FD92E40D808A5AF43DA54C0909631C6B38A2E4028A23E096CC954C0E8EC2352DDFD2D409279E2F95BDF54C0B8FA972C54082E40E2D571BC3AE854C098A7DF0D99C22D4000922D3872FE54C0B0764911B67F2D40280D42269D0E55C0D035A2035E7F2D40B8C560EBC11C55C018383F3A443E2D40461BB6C0922955C0004DED8167552D402463977B7B3455C0184416DEA0A32D40D85FFA042B3B55C0A8AD197BBB942D4095F993DE604355C0402D6896631A2D40D9552321854955C0E0B5F01ED21E2D401EFD3055954A55C0105127EF6FB52C4076268D24EC6055C058333F3A74282C404E97CAEEB66C55C010C59E668FEB2B4019DFAB69487355C0F8C39E660FAC2B40CC0BA52F298655C00844504B8D132C403C3FD822FA9355C000C00130EF8A2B40CF31644853A155C090AB53E8958E2B40FAE6E55653B055C090DE861B7B822B40800CA5EFF6AE55C098694911B4862A406B02CE0B5BB855C05099DF0D27822A402162FA845EC055C02875BDEB340D2A4038BBEC1044D455C0D011F4BB28F82940
-is     0106000020E61000000100000001030000000100000014000000788C96BA73042DC0F948A4562D9D5040E82E6AC1B17A2DC05B932288C273504010367BD22E382BC027B8E1601B485040009096BAD5D12DC0275B521E4D175040845B854A60CB31C002850E40E1D64F40583629BBFFA732C03A58157A89BF4F40A8277B7306F933C0023356A162D24F40CCAE8F2152C336C0EA03C024E7FA4F40481493BE4AC735C08B4DDE43BC19504014EEFCC17DF437C02F36934508395040585AD702352F36C0F15B521E70455040ECC03D69383A36C06DB8E1E03A58504058603ACC805338C03BDEA0B91D675040B4B28F2188A637C021759D1CCD905040649E1B478A2236C0675D521E459A504064D8C254879334C08F11D4ECDA6E5040240FCD2B8D0E33C09DEC14D4B3915040A4E0709C72CC31C0B7EFB14A9B7F5040A8D2362FF62A30C0138311F7B6A15040788C96BA73042DC0F948A4562D9D5040
-in     0106000020E6100000010000000103000000010000008800000026F03CCB9875534046EE1BB43BBF41407276289D62BA5340CED3D03535294140F6492FD7E8B353403268CD18CBC04040A454067B5ECD5340B43AD452487F40400458A3B145CB53405ACC337FEC3D4040206FEE2F579D5340DC9C9D02204F40403265170C4AAF5340449BA16B12843F4080D3B7DF2AEE5340402B0198F9E13E402C9410D21E47544064F86A9BF82E3E40F4A7BE99821E5440D8337572D8BA3D40E0994ABFA8055440E0EECD6462CB3C404E2A0D35A9435440705A6E38856A3C40BAF43CCBFF7F544010880435ECEC3B407AAE5BD078D354403CF6413F505D3B40DE2A707E332B55408099B27C223C3B40D81DFC231D505540B871F323E8B93A40E8EE65A78F8155406082043588A13A402E7C8BE68ECE55406458A8A5DC653A40A00514EFDA035640D821D83B246A3A40B62E70FE2F0B5640446BB9B676CF3A40AA79EEAFC20256405015C72A21723B4090E3F14CB507564014F5A40865E03B40FED91AA9BD2E5640BCB160C43C163C40DE09B1A51C34564078E193F79F4C3B4036C2CF2A7B355640E05E45DC55193B40FC552F57A66F5640244C34CB2AB83A40F8D4E0BBE397564080F7DE752FE03A40CCED2BBAEBCD5640E8782D9103CF3A408ECC099824025740303886839BD63A408E1EC236A3065740E43A8683DE733B4004D3430596EC56400C32AFDF90C53B402EB5BE1933205740A0CFE5AF99E53B402A198849745A57407C6C7F4900A43C40D680EE2F39A4574094ED302E06473D404033D347E8D95740E85297941E083D404E78170C88075840D0C871D5EA733D40465358B38A255840E869E212BBD43C40E2B521E3EC0F584020DCBC5339693C40D20F146FEF545840A0374C16F7423C4008323691C3595840C00219E3EDE13B401035D3C753435840300CF086F5B23B40B6F7C87093485840F0E3302E72153B4012B621E3D61A5840E0A38920BC433B408E69A331FCC75740BCB8D49ED5923A4008A7AD08EEC9574010F77BAC55003A40064047A29BA65740682DE94C99293940C8A94ABF5EA35740307DA16BDCAC38401A134EDCD486574048355D27CAD9374076E2B7DFCF545740348815461C1438405297392E5352574060A29A312D0B3740F4114EDCDB435740C07E780FFFB33640A4717AD5A14A5740F48D89204947364086114EDC0D2B574004753EA28E0A3640523D47A258095740E8CDF6C0A3A037402E99D6E4ACF756408004C72AD59F3740E4B021E336ED564030B3AB423AFC36405AC132742CCA56408C63F323E780374008178849EFDD5640D05B1C809812384004C96CE190FA5640C44034CB622138406E7EEEAF131857406CD0598A08FA384016FC9F942CF35640EC294C16BE25394096E6F14CD2B7564048CA1F1DF2213940C45292A0EC7A56404CCEBC530E45394082F6025E477556400CB6D49E0FF73940E00D4EDCB956564070AF9A31B0033A40401725000924564040661C804F723A40D879EE2F6D0D5640840A2AF49FC43940EEF89F949E3B5640FC37C0F01A3D3940AC98739B9B135640600D6461B7DD38407EA9842C6705564068DF6A9B6C803840849C10D2CB2C56405C008DBDD43B384028A34ABFE7215640142A868392A137407C2F707E1538564068FA8CBD0FE1364038F265A70B42564058B982E6420E36403E88628AE1385640D89F3768CAB035402ECF4305580D5640587A780F03B435408AECC8F071BE5540808A8920DD7E35408004146F1FC25540E46BA16B49BE3440D8F2025EF59F55400C5FCAC7D1263440B091D664DB435540D851F323847A334034E9C87039FC5440A4128683504D3240783347221CCC544054EAC62AD5AB31408C2B0DB5568C5440F098AB424204314026C5A64E3D8C544064AB598A818E3040E8DF8E83556C544018DAEF866A4F30408478281DB0325440E88EBDEB68E72F40AEBF0918CB14544018FFFAF561CC2F4098C9E0BB9A015440C8FB972CD8452E4058B532F4ED0E5440E84FC425EAAB2B40483047A252125440E0EFD19934032A4026859CF733F75340F8C11241C81C28400A9DE775E9F65340209BC7C2ECB6244026E4C8F0CAD55340E030C425229E24409C0C2580A9B85340F8595A229F172340CEEA025E24CC5340F0D16ED0DE6E22406C20D3C7C991534058E7B94EB8DD21406C4CCC0D3C7C5340203AACDA838120401C6EEEAF8D6253403046FC25B5DC1F40F4E7025EF3255340102127EF6DCC214068105FED5208534028C0861B69992440145BDD1EC6EF5240C0E70B07D39D26404AF476B859D952400871F758FF8F27406C12FC2359B75240F0533800DF7B29409AEC3C4B78A7524030CCD8D333FC2B40D052A331689C5240587C837E043C2D40D88B105230625240B0CCC7C236FB2F40C2B70998AC4752400C8560C4B6ED31406A1AD3C7893452401C2B34CB4E35334024395833C4345240D05C2D91646B34404AC81AA95A285240CC3E0B6F235B3540027F39AE37CB514000E07BACE7C13440401B70FE1B9E514098F18CBD98E03440A083731B814A5140D40ED83BDC163640561A707E4669514024CC93F765733640D0E63CCB5F56514054A8D49EDAD7364048DB65274E0B514010ACD49E24B13740E8F3B025ED355140F4D7302EF05B384022C37D72C4C2514084375D27455B38409E44CC8D0FB65140A86756ED10373940A4B409981A925140C0AAFDFAE3B839401E4EA3B1CF8A51404033E94CEB7D3A40509F5BD0EB60514074A28920E3F03A404A9684AC74A7514080E493F73BFD3B402A311E46C5F1514094E7302EC6E93B407C2BE458B83452404837AFDF2AF63C40CA62B442D75C52408431D83BF6F93D40FE85D6E4F79A52407084F323D5FA3E4086AB95BDFA995240740208D250B13F4002D254968DD0524044956395B3224040462DE458E69C5240B488EF3AE86140404C934ABFAC865240A801673282B840406AE16527FF6F524024C65C5BAA2841402E4F067B5F8F5240DE59BC87DB5F4140286CEEAF73F05240B485B54DA1404140FA068849CA37534074268954A753414026F03CCB9875534046EE1BB43BBF4140
-id     0106000020E6100000010000000103000000010000000900000094BDD6E4FE3D5F402C3795CC1BC921C0B45A0D357B445F408CA9D2D6122E22C06CDC5B50AA455F40909E5EFC4DC922C068C0739BE61B5F408CA8FB32AE4724C0785CAA6B1EE55E40C48B764750B824C0FCCCE77570DD5E40D40F6299E07A24C0604B995A33E35E40ACB0D2D6CECC23C0A8B59C77B8FE5E407CA498697E9422C094BDD6E4FE3D5F402C3795CC1BC921C0
-id     0106000020E61000000100000001030000000100000007000000644FBD6AB9C66040D0E4C332B9941BC0602661DB9BC36040E0F2ABE7E29118C0A61F276E4AC9604078DB9AD6D92117C0C21F27EEFCCF604090497517B9C715C08ECAD19843D7604098C989C548F316C0FA6AA51F30D7604080836EDD8BDB18C0644FBD6AB9C66040D0E4C332B9941BC0
-ph     0106000020E6100000010000000103000000010000000C0000005684067B82A55E40C823ED814BF62340C6E095BD92B55E40E033615CB68524400803B85FA2BC5E40A0B7124184C325401C186627EDDF5E40A0CCC08899E12540FCEE09189ED55E40F0962A8CE6882440B4A48BE6FC045F40781305CD277726405C9AB442E0FE5E40584F4911BC8E244088F9E03BE2E75E40E04FE64772E623404CE195BDD5D35E40C087F01EF4A22240DC95178CBCBF5E4020E8B94E5C0B22408EC110D252985E4088430FA43D6D23405684067B82A55E40C823ED814BF62340
-id     0106000020E6100000010000000103000000010000002600000024F0F3BA8BA0614068763470A36F17C07C45495015A1614064436C705C3C22C0B02961DB96846140E45AF15B269820C00ADEE2A9166461401CBCBA8B2C3120C0325C940E355C6140CC54B7EE09C320C0EA5E31C5A93361403477D910C8D220C0A073DF4C40416140989197393B641EC0B8CCD15865556140E0E826FCE8471DC01C555AA10D4D61406046640670EE18C0941016DDB03D6140009ECA6CCE9215C0B008DCEFA7FF604078BBC332A92F12C062C7346244E56040E8D10EB10ADA11C07CB5235136B5604080538765924F0CC00CD4A83CC4AB6040F0BF370D6A1910C0104149907C9F6040502B3BAAB07310C0AE993BDC3898604010655E0963F80DC082A075091F986040D0C9384A8A7E0AC02077197AAC7F6040E0E431107D9006C088E11C9723A2604030018E9FEFAE03C0B2747C03F6B8604060B372B7BAD603C04E82F05D47B660404017138B61B701C04AB1869A6F876040F00C3CE740B301C0B2848D54C27A6040A0264838E5DFF9BFD2BA5DBE2B5E6040408A85429CEBF6BF368E6438A0506040002460DACD01EEBF5AF5CADEC27B6040009F96AA3741E6BF54DAE2E9298C6040000F261B82A6D7BF5C9A3B9C89BF604000EFDAEE7BF7E8BF3490647896C46040007A22790C6EF2BF74DBE22986CD6040B0B6384A4A2706C0589401AFA4EE604010ADB35E28F10AC026878DD462096140902B249CD27402C0DED20B861A2E6140604BCD239741FBBF04E17F208D4A6140801B3727343EFBBF60F9CADEEA65614010D408B40D6900C0369A9E65A77D614000D394D9BC4503C008083FB901A0614010CC20FF1BCD04C024F0F3BA8BA0614068763470A36F17C0
-id     0106000020E61000000100000001030000000100000027000000921D146F22755B40800C82F70069F53F5CF5B75FE6A05B40008CF9177EBDE83F1CCD5B502FCA5B4080B90A294F3FEF3F54B9AD080BF35B4080A8D0BB2EF1EC3F308A170C56185C4000B255FEDA8FF63FC89B281D07375C4000336AACF2F6F73FA6A3620A93735C40803A5261147BF33F7C308849C4A75C4000986D4919E4F63F8845361194C85C40C003F111659206402C16A09438E15C4060D920A8995A0940685747A264F75C40C01D47A4EA391140E8621E46F9405D4000FFC1B870391140A693B44273785D40C054B444DA8C1040DC3625000C545D40807F91E51BE00940008D7AD517835D40A027C17B304D0240DA631E460A785D400062B52A043EFD3F04540DB5CABF5D40806729AEFADEEC3F3267BB7CF5735D4080D13D5C8218E93FA4D0BE199D5E5D4000DC06CAC73BBA3FCCB8739B62615D4080D0B8CC19B8E9BF5E8B7AD5D7235D40E020E56E75CDF7BFA2092CBA29225D4080EDDF573EDE03C0E4500D357A095D4008A1B221080D10C04676CC0D0E005D40F0FE94D99C410DC01A2314EF58B75C4098F46A408D6D10C0ECC92163FE9D5C401063987633F70BC0C6395FED5C705C4060DF495B6B830BC0E6E3099872505C4070299FB040F308C0FAAB392E5C045C40301E5432BFD30BC01C34C2B602ED5B4010FC42219EF407C0D60D035E16C35B40F0B2C46F396508C0F646707E538E5B404078F405E67807C0344A0D358A845B4020698C7C697CF9BF0A133DCB9A645B4040741168DB09F5BFFC89B442E1455B4000E77E0D8E68DDBF1C6B2F57F83C5B40002093038395DA3F6C012CBA6C445B4040F8D3AF8F78F53F1A3C99DA726A5B4000FF3B903E0D0040921D146F22755B40800C82F70069F53F
-id     0106000020E610000001000000010300000001000000090000007AA5AF36DF2B6040A0102BD6CF6A06C0AAA21240154F6040C0953F8407C008C07E7619FAB65A604000A3CBA926DE0EC04E57948EB23F6040B08D913C06920BC0B0FA04CCF724604000094321AEE60AC0B64F5AE1E6126040D01FF168EF6D0BC07031146F87F95F402044B0C1C1250BC05A67A51F5904604040D183C8CBBF06C07AA5AF36DF2B6040A0102BD6CF6A06C0
-id     0106000020E610000001000000010300000001000000060000001CFDE0BBFEB75F4050221AC5EE530EC03C77F569C38B5F4010B21628E8DB0CC0A0ADC5534C7F5F40F005E0570E6B09C048D484AC0AC05F40709ADCBAD70809C0084CFC23F3CF5F4000CF384A2AAC0BC01CFDE0BBFEB75F4050221AC5EE530EC0
-id     0106000020E6100000010000000103000000010000000D000000B83BEB12ACFB5F4080C731B9926501400EFA040C220060408080AEF0760EFA3FB64F5AA106136040409CD01229A7F83FD2C334220616604080FAE4C0401EF23F2E8D64B85914604000464B22088BD03F401C276ED803604000503A1177CFD63FF46E1E46F4FD5F40005BC6EE0822D0BFB8D445F3280C604080D78F70CAF5E8BFA4828D54330360408096D751C5CCECBFECB2620A93EC5F4000FCFCBEF20FD1BFE8CD4A3F91D95F40401407E30230F03FA856D3C76EE65F40408DAEF096F8FC3FB83BEB12ACFB5F4080C731B992650140
-id     0106000020E6100000010000000103000000010000002D00000016B1FF405DBB5E4080EF4E6D9301EC3F54789220F6045F4000224833E658ED3F0CEACF2A39445F40C0B4E123CA4AFA3F58354E5C644F5F4000643A16A6B7F63FE0D42163F81B5F40006F11B56762DB3FE0DA5B50DFEB5E400026A4B8EA27CE3FB45470FE46AE5E4000E04EBFBE97DB3F0EE96C61A1435E4000BEA077DD65D83F265C47A2B70B5E40002407821A5ECE3F92BB739B9D025E4000A51B9609A1E0BFD200B8DFE53B5E40A0D303F4E08AF6BFFC60E4D8735E5E408023C3A33D97EEBF80DA5BD0CBD55E40008D5C3D97B3E3BF38A7289D89D05E40006074312B38F1BFCA1A035EA7B45E4080D444F258CAEDBF38CF84ACDD985E40609A5CE60C45F8BF547CCC8D87605E40A0182616C378FEBFEE3FC2B6179D5E4020E4BD350C7D09C042C84ABF66915E40E0D4D5806A3C0CC0287ECC0DF1CA5E4088CB370D1ABC12C0DCFF1AA963CA5E40B8AA3E47C75C15C034EE099839A85E40B0DFD443D28916C0AA055516218F5E4070C8C332B92115C0865BAA6B0DAE5E40D823C7CF4FDB11C0402777383F6F5E40B0643470C36713C05219035E535F5E40A8A0DB7D574C12C0983B2580A0675E4088A74F5800C110C0B6EFA6CE7B395E4090F9F7A21CD10CC0CE8CDD9E3B3E5E4080A761A6690505C0CAAA628A8C135E40F0E1F7A2EC7307C0C8C2AD88F6185E4088DC1FC2EB6310C00C304EDC901B5E40306D9739EB1C16C0A84A3691FAF25D402039C7CF8FB116C034E76C617BD75D40E022B6BEFE8415C06C9CEEAFD4E95D40103FAF8471D611C0FC57AAEBECDF5D40B00D43218EF40BC04CEA099803C55D40E0E783C86BE50BC07C72922023B15D4020FC7C8E7E6A06C01632EB1295CB5D40104846BE442D01C0DC68BB7CB2D45D402099338A7DA6F5BF4AE4CF2ADDF45D400010EF369CBEC33FE610C9F048025E4080DF36229520E23F80BC739BB0385E404033DE8693F2F43FAC759220AD6A5E40C0B4DAE91C39F03F16B1FF405DBB5E4080EF4E6D9301EC3F
-id     0106000020E610000001000000010300000001000000070000005A0A8F83E1125E40C4A2C1C56D8424C0DA31EB92F0BD5D4090625425AE1D23C07ACC84AC9EF95D4050D8CB9C01B922C0901BA0943F1B5E40687B9FA3F35423C0CABF10D2A1315E408858E04A79F023C022C3AD88CC2D5E40D4AC9869AA7A24C05A0A8F83E1125E40C4A2C1C56D8424C0
-id     0106000020E61000000100000001030000000100000009000000B0A18BE6DD555E40C4EF5088CF1221C096FE1AA978805E40309D9869D6EB20C0DC7DCC8DD3B95E4008ABA97A3F3020C05A8B406872B05E40A031F895B34C21C05E34EB9249505E40D8527D8109DE21C04025773829FB5D405CEB161BEF9E21C0A051707EF0FA5D402CBFBA8BC4E320C0AC4B3611C42D5E406C6B026D537920C0B0A18BE6DD555E40C4EF5088CF1221C0
-id     0106000020E6100000010000000103000000010000000A000000F20EC9F0AD905D409C1A4A4E8AB920C0929BEEAF38B85D40A80F73AAB58F20C0D89BEEAF18C85D40D01610E1616921C08C60810F1B7E5D4058AB6F0D33D021C044742F57C6515D4074FE272CF01422C0B2AD9C775E2F5D40E44C4314DD1022C0DCDD32F45B455D402400629910EA20C09A00551673685D4054A76F0D0BE620C0E89D8BE699795D408085EA21FD3020C0F20EC9F0AD905D409C1A4A4E8AB920C0
-id     0106000020E61000000100000001030000000100000017000000F25CBB7C281F5B40801631D31CB019C07A26EB12E7275B4010381988561C1BC09C6258B382A25B4020F2370D6A821BC0D8C521E39CB05B4078E79AD659DC19C0C442361159275C40A8AB5692BDC81BC0563CFC23A43E5C4080F4606979601EC0B8F9B7DFA69E5C40F801380D2A1B1FC0C042995A27ED5C408C5BF15BDABD20C018DB32F420A45C407C5B5425EE8021C0BA7DA331BE5D5C406C09393DA9B220C068C484ACD1235C4068622BC99AC020C0C0D7327469E15B40C8FE6199B09A20C00A8F517983A55B403CD4050AC63E20C098948BE65E5B5B40206B3BAA70F61EC0EE52E4D8642C5B4008DA78B4FF901EC0E6F2B7DFC6115B4028CB67A30E111FC00813DA01109D5A4080865DCC6A6B1DC0AEB64ABFF5915A40E8E126FC18B31BC0C063922064575A40D8EAFD9FD9671BC026D5CF2A4E835A4030FC1FC26B9517C036928BE6F5D05A40A83A2A99E7D117C0F036FC239D045B40D0BFDB7D0F6219C0F25CBB7C281F5B40801631D31CB019C0
-id     0106000020E61000000100000001030000000100000023000000ACFFC8F0AD175A4080F3D35D845BF1BFEC10DA0187225A40A05E41FE9784FCBFEEE4E03BD3385A4070113CE730B902C0C8BC84ACD0675A40A05FBA98456E03C0A275A331F3865A40406846BE847E08C08EA8D664E0765A40C8DC828BDB3811C094B9E77554745A40F8BD15EBCF6817C0F01714EF762D5A40C0247C513E7E17C0FCDCA6CE90F75940380F42E4352614C018C7F88664A5594048DB828B8BE110C008CA95BDFE895940F0851D62C5E90CC08A1EEB128B595940D02B138BF16506C086A6739BC239594020F62AD6EF6600C06427C23616095940007A11BFA5CFE4BFD48C281DE1D05840004CE8FC2E71C73F40E51AA914BE5840403F6372A5AFF03FEE92628A7CA65840C072C63B152DFD3F9A3C0D35C66C5840E09327E21EA003400AD94305534B58400037133467780A4048E95416231B584080A305C06CF30E401E4B1E4660D85740B00AC2B814E21340B0F5C8F0C0D25740B0EA652956EB15405048818FF5FB57409083FFC20FC21540F6D5A64E085F5840C07C628C3BFC144080999C77A097584040EDB0A7CF121140C29D39AE1FC9584060E1E63A09B90C40D8B2E7756AEC5840A0249F59066509407AB04A3F0D295940409F726088CB00409EEBB7DF1C6A59408031D28C69AB004058B984ACE39F5940003D7BBD1361F63F76CE32F4EAC45940804F742CACF6E13F863CD347A8F5594000547E413FC3BA3FB0D56C6102DC594000537BC242C8E6BF6484B4C2B0005A404028A4C787F2F0BFACFFC8F0AD175A4080F3D35D845BF1BF
-ir     0106000020E6100000010000000103000000010000004C0000000801CFEBF6F54A40489929287699424000DA725C70664B40B2FCF2D73AB24240344CB0667BC14B407E23B23068FB4240989F688516174C401294EF3AB2F74240707E4663474F4C4066E6A7D9890F434044C48AA74BAA4C403EBD4BCABD034340C03A65E8D3374D4012487109DBC24240E0685EAE0C9E4D40E2BB4BCADCB442408CC7ED7056304E40F0B94B4A81434240841E43C6C08F4E40BA9729A8EC3E42403033F10DFC9A4E407CCCF99135D341401462870ACF664E40623A379CB93341403CBA7996A3434E4090CB96C895D64040547AD2885A7B4E4020E3E1C6B0C3404010247D339E444E40F6B885379A7D40406C95BA3D8C6E4E404E0204E969174040FCFB20A491784E409CCED49E4E8C3F408C156C2283D94E40F818535027613F40A8045B11FFE34E401CDCE5AF60BC3E4094B7DC5FE76F4E403C5DD10149D43D40CCDAFE8145AF4E4008438683A34D3D40C0EC0F93CCE24E40CCE0598A07B33C406C4E3C8C295D4F409C374C1678423C4054F2ACC9B1604F4060A4892001613B408CEC725CF09D4F40F0E7CD6490373B40288D466387A84F406CD11F1DACC13A40C8B9DC5FE5EF4E403C7D67FE6E3D3A405CBC7996A9BF4E40AC9D26570714394084362B7BDDCE4D409C38C0F051613940C8DED5254C434D40B8217572269C3940180C6C22D9B24C40A84E6E386ABD3940E029F10D427C4C40600C8DBD52F73A405C4EB066FE3E4C403CBBD49EAF243B40D06ED288A2DC4B400C546E38F2F63A40E824F10D885B4B40B4E4CD640C7B3A402CAE16CD1DBF4A4060B63768F7CF3A40B067D288E63D4A40AC0BF086B2943B4094020959A8C24940D4C171D59DDD3B40F841B0662D6D4940648FA16B84D03C408C73E399B80E49404095A16BD4253E4060AC503AD6C9484028CB71D557FC3D402C414D9D7D7848409CCC71D52C513E4004EBF747B348484000B3265741ED3D404C9BDC5FDD0148402C930435D4733E407094A2F299004840B0F193F731FC3E40D87B5774B7D74740A8B726571FFC3E4044F031B5B2EC474040BEC38D8CB53F40D0361330D6AA4740E8C896480D3C404018FAA58FFF0D4740182D6078368240408821021F56B546406A9C00CCE0FB4040A4BB9BB800D34640021915FAC25F4140D0CDACC96D13474098204FE7EF8B414060896885C509474060D3337FB4D64140A06C80D0D6B54640A8A73A3920FD414054017D33885F46400C7E41F3959D4240C8ECCEEB3E5B46404677070609A14240F4F5A58FE51C464080867BE05CFC4240BC856885F03546408679070601244340387E2E18FB0D4640666E932BCDB643407C755774A1654640066F93AB43DB434078495EAEF1794640DC183E56FAAA4340B809B7A096BA464018BF4BCAE36F43400C75BA3D621247403425B2B0DF5E4340D4D8836DBB404740600D6732A3624340784F5EAEB0D74740F8D4F91112C14340A0087D33B10748400E27B2B086CA4340DC05E0FC812D48405E4F0E40F6A4434060E65A1160014840B6EEE146A265434018DAE63633514840D094EFBA9B224340248CCB4E0E714840FCA500CCFD2843403856FBE48C9948409811A19F9BCA4240C86CA92CEA124940E8A300CCF1AF4240D01F8E44D26B494016847B60B86F4240A007A68FCB214A4058F4B86AA7594240C8292B7BB3E94A4056F85521867B42400801CFEBF6F54A404899292876994240
-iq     0106000020E61000000100000001030000000100000020000000C8ECCEEB3E5B46404677070609A1424054017D33885F46400C7E41F3959D4240A06C80D0D6B54640A8A73A3920FD414060896885C509474060D3337FB4D64140D0CDACC96D13474098204FE7EF8B4140A4BB9BB800D34640021915FAC25F41408821021F56B546406A9C00CCE0FB404018FAA58FFF0D4740182D607836824040D0361330D6AA4740E8C896480D3C404044F031B5B2EC474040BEC38D8CB53F40D87B5774B7D74740A8B726571FFC3E407094A2F299004840B0F193F731FC3E404C9BDC5FDD0148402C930435D4733E4004EBF747B348484000B3265741ED3D40E045870ABDFC47405C727F49CFF93D40E0583552BCA64740749104351F0F3E40BC6BE399CB4847405475B9B659193D40B4DBBDDAD05A46402C279ECECB2D3D402446FBE4EAF14440A0C93768A4303F40C894B30333334440307E1C80D6E33F40A043981B05994340AEA2D7EF9B144040A8F7196A6B6543401E9B00CC78B04040EC6280D0C980444080E87EFDAD3541401CF342C625B14440264E48AD6CD04140ACE86B2215A544401CDF0AA3ED2D424074E6CEEB24EB44405627EC9D8C4D4240442FB066BF2C4540424EAB766C9D424000604663BA634540405C1F5150B142404CBB38EF9BF84540EAE74410CCA042405C3AEAD38F2546405010A19F31804240FC9A16CDE7624640CAF85521D1954240C8ECCEEB3E5B46404677070609A14240
-ie     0106000020E6100000010000000103000000010000000D000000D0347456A2CA18C05AC1C65E0CEF4A4040FBA3ECC62118C0FE8F30E29A934A4010BA8804CA271BC09650268B4B214A40D09F77358C1F21C036A1DEA9ABD5494040720A9544F423C08AA1DEA904E9494088D170FB225522C0BCBB2928AC6E4A40088BF249866023C04E137F7DD0F04A40F0F906F8EDA720C07E8CF6F40E554B40D08D1B64E6491EC028FE33FFD8904B40C0AFDABCD0761DC04CB55284444C4B40D08D1B64E6491EC042D674A6AC074B4030C75FA89ED01BC01CDDAE136F094B40D0347456A2CA18C05AC1C65E0CEF4A40
-il     0106000020E61000000100000001030000000100000017000000C4CEF74726DC4140F8511FD1C65A4040A8AF725CD8C541407C2189546E32404088591D078B97414078696A4F2944404010591D07C17C414088BB2657D8DD3F406889B303EA9C4140987D1C801CC13F4098E1A58F397C414018C89A31E59D3F40A83D3552B5764140AC1F8DBD7A5A3F40D8FD8D44E3B2414044208DBD347D3F4014948AA7E0B5414054B1ECE99D193F40F8F553D7177641404CAAECE956803D409CA29BB8F9214140C803A50828383F40B41A133037474140545023BA7F8C3F40449C614B7A3E4140702E0198049B3F4088E442C654604140E6A574A655094040503A981B4B7A4140AE2C6078E7694040F82C24419A8C41407A37371C4F8A4040E0D0947E22904140B607A19FA28B404008726885F8BA41405A78DEA9658B40408C2A870AC2C641403A2AC3C1D3A14040BC27EAD319E9414082D1D0B582A3404064FBF00D0FEB4140DC77DEA91E6F404030466FBFB3D941404C0A3E56A65B4040C4CEF74726DC4140F8511FD1C65A4040
-it     0106000020E6100000010000000103000000010000000A000000D079D7E5836B2140F429B2B03273444090AAD0AB866B22408ADF33FFE09A444040163712B59E2340ACC24B4A0040444050F6B126CB56234072072D45B496434060C95597FC6D22408A3089D4C79E434010A7D0AB269D2140541BDB0C0C74434050A033754ADB204072A46315FF954340A04ADE1FC9C620409AF57E7D6C30444090ABA74FEB512040681C3ED699794440D079D7E5836B2140F429B2B032734440
-lr     0106000020E6100000010000000103000000010000001B00000000AFA04F40D91EC0E04069C65075114070F4475D7CE51FC0702581114B6C11407025C650740222C010D58E8565541340C0E5E4D5ABD323C020F00260CE5F164030164165E08725C0707B517B1690184008D1C2B3A7E026C050D56C63C7241B4070BA146C4C6626C090113DCD626C1C4060207BD21C4B26C0404D0D373A961D40687F4402256425C01061E4DA02C21F4050187BD2CE7524C098C0972CFACF2040D0DFAA687B0824C0E00B16DE64DB204050AA7735BC8223C0F891013005152140606233F1AFAC22C0F00E2CBCD1B61F40487E1BA683CE22C0C0BCAD0A8D1B1E40F8E2810CE66A22C0A0EF7D7474411D40F891662425DA21C0002D884B743C1D40D000A42EBA7121C0C041FC25C1D81E40105796BAEBE020C0F04E700082BE1E40E020C6508CF820C0903F995CB1941D4098B95FEA59C520C060528111AFA51B4048882CB7AC3421C0E02BFC25C9DE194090299DF4689F20C0607C517BAAC51840D057118D8AF91FC060114EDE37811840B0083012D6471EC0404E922254D4164050D89915AB281EC0601E3693DD4015402088E1F69D8A1EC0604F69C6ACC0144000AFA04F40D91EC0E04069C650751140
-it     0106000020E61000000100000001030000000100000042000000F066B5C3A9E22440AABF3AB95F72474030951153DC1826400CA452842C6047404096115364542640066748AD857847409072188D614E2840D6071C34C58E474070C6D0ABC2C02840D8997B603F624740E04DE559EA9C2B4058AA8CF13041474010D2D0AB6E652B40B2E696C825024740903A371211E02B40CA1F0469A6CB4640C02CFDA480482A403808B9EA4BDE4640F01789CA3BA828406C6A821ADEB04640E08F00428BC42840C6A68CF15371464060EE2C3BDD8528409880CD98DC4C46405065077CB02D2940F6937BE0B10B4640B08F299EC60D2B403ABF74A63ACB45407075A4B2440F2C4042FE1BB46861454030E26DE2FE482E408099520442FA444050560EB635DA2F402AA7C65E0CFB444090E425607E2B30407E10CAFBC1DE4440D0BF115358C72F404243FD2E42C5444028FF70DEF5C8304098641F51FD96444058C8033EE8843140A682A43C46704440A8F1C2966E603240942FEC1D852D444030A00A78F17A3240DE1304699D154440683C41481B4B3240D26BF674C7E74340286D747B06BD31401EB13AB98A234440185F9DD79DDE304032D0BF249B384440088D33D4E07230408627B2B0CFE54340F0AEB8BFE62B3140AEEC44905CB64340D0B155F6860D31400ED7964891734340F8121F2695A23040523DFD2EFA6B43403847EF8FD819304062C722EE31FE42402043FDA4405E2F400E6B932B55F442402043FDA43C602F406EEDE1C6771B4340E096B5C3B1C82F40527030E21E6043408051C633FD1B304016EFE146767B434050BE115308702F408C86DE29A4C54340B0069004C5D32E40F205908E3006444010A0C6D43AFF2D404040FD2E23164440A05C1FC712682D40B82C4FE7614D444090F0B860101F2C40761FDB0CA7644440D09A004287412B404CAC00CC19984440F0CAD0ABB2C629407A83A43C65A04440E0CA0A199F362840D41367322EDA4440206A188D4162264056C3AE937E2D4540D0ABF9071E062540FE8DDE293A774540A06BEF306A66244016E296C8C2F54540D08CAE89AC67234058E296C8A404464040BC7EF323C721403068821AE42E4640307E11536CDB2040607C30E2981D4640C0DD745E2F671F40AC334FE731E24540A0F15C13A1BD1D409E1B04E9CFD84540E0784865C9321E4006F744105F104640803FB268BE071C40701967329C204640E0189046F4FF1A409E2F157AA683464060E8BFDCF8621C406618CAFBA2AA4640E09E7B989C351B40627559BEB2DA46406043ECD5D65F1B405A68E5E3DDFE4640C0A3DE616C181D40028A070673E34640A01245C822061F40FC67E5E388E94640900CD4481DA22040468EA43CF2144740406A630BDBFA2040ACE696C8A8004740D03793A1BFEE2140244DFD2EBA04474060AAD0ABA25D2240687AF6F458384740A0A6F9077ED82340CC24A19F4E2847403055A4B20CBA2440CE95DEA9E53D4740F066B5C3A9E22440AABF3AB95F724740
-it     0106000020E6100000010000000103000000010000000B00000000D83375C2852D400E8041736A124340F02278B96E0A2F40E2F07E7D961D4340002A4F5D0B522E400C07CA7BD6B84240802415F0AA9E2E404858821A2E914240300E67A831332E40646159BE5B4F424080DE0A19A3AB2C40FC57829A917F42407040717F49A72B401AD39648618D4240D0A4AE89ACDC2840FAC9BF2475CE4240000978B952242940EC34C3412D10434070359ADB787B2B409C4C0EC07904434000D83375C2852D400E8041736A124340
-jp     0106000020E6100000010000000103000000010000000C0000008AAA4CADE08B6040BED80AA358BB40406033D575949D6040B0AD11DDB7074140AC969E65C6AF6040000D3E56E9F840408A07DC6FEEBC60408EE14410B62E41400219ED006ED46040828118171A134140DAAB4C2D86D86040F01615FA35E74040DAC6346282C6604020016732C09940400ACAD1D85FB9604040050469D0C2404084BFFAF4F7A8604078C0BFA410A54040881B8AB779A060401A1178432F5A4040E4390FA39E8B6040A2C6F911A47E40408AAA4CADE08B6040BED80AA358BB4040
-jp     0106000020E61000000100000001030000000100000025000000580F79A64EBC614040D4F991269743409E3E0F23B49E61408883DEA94516434082B923913E9F61407CEE7E7D2F92424040454950319361404AAF74A6072C4240CC1F8A37C5986140243A9A65E3EB4140DC1116DD1A886140B6BD85B7AD914140B6D30B86375F6140E0EFB8EA735541407E2BFE91F626614080E5E1C69A4D41407683F01D60F960405872A4BC7EBB4040AAE21C17DFE3604038AD115DAEEC4040E0ECF3BA8AE26040629A63955B4C41402AF6CADEE3AA6040765C59BE1E304140DCE75644048560403CC55CDBD4F34040E62E387F8E5F604092F155A160F1404040FC044C00806040127541F3329340409C1A8A37A66A6040306B0B6F4A733F40DAB32351F6556040687A1C8092073F4018023F397A4660400CCED49E116B3F40780C165D534E6040BC24268BE42840408E4920F4113A6040A806A19F1E4E40402A505A21122D6040B2902928E5A540409605DC6F534B6040D46B6ACF54CD4040365B31451C5C604084885284CA1D41402625619B4B7C60405C0BA19FF65F4140787719FAC3936040AAD96D6C79B7414024D8453377D36040F2AD74A6A5DD4140C4AFE963AEF560402EF5552179C3414006F8CA9E2917614094AA3AB909A74240B6B0E9E37F2C6140F2ACD7EFE7694240E87A197A715B61406C905204EBE942404C29611BA56D614068B374A6A41B434060E51CD7C08161403201F3D72AB843402226C4A4447C61402618A19F1A484440989364F8C889614070CE22EEF5984440BC565AA1CEAB61405EBA74A674B044404027C4A441BD614058F1E146EDFE4340580F79A64EBC614040D4F99126974340
-jp     0106000020E610000001000000010300000001000000100000007C81B630A113624002E9D035FEFA454008DE4533442A624074D522EE3E31464008595A6161316240DE4D371C8CA1454022AA12C0E8016240E0830786827E454034CFD118E2E561407814673263FF444020FE675591B36140964C379CE2564540DA37D53527A26140F03F60F8D3CA444090EFF33A907E6140BEE3D035E7C84440DEB82351297A614092560E4029484540F285F09DFC896140185F48ADA8AA4540F8C3FA742DAC61408CB49D02C5B14540F4CA34A280B561407CCFE800D562464022686BF2F6BE61404EB99D0297C64640EC27C46492E46140A0ED6D6C53414640CC02050C20FD614090344FE7481646407C81B630A113624002E9D035FEFA4540
-jo     0106000020E61000000100000001030000000100000013000000A8AF725CD8C541407C2189546E324040C4CEF74726DC4140F8511FD1C65A40407C153C8CC26A42406A093E560E284040A8F7196A6B6543401E9B00CC78B04040A043981B05994340AEA2D7EF9B14404000732E18A080434000B04BCA4E014040784C0CF6468042402C8A905A27823F40C8D3F747DAFF4240DCD00E0C2D823E40B87DA2F284D54240A4BB60C4B2563E402C84DC5F75C0424078D54879F7003E4058264D9DC95E42409890043583DD3D4098B8ACC9274042408040E94C58813D40E8FBF00DD3084240745AD1018F323D406CBF836D5F7A4140B81DC72A475B3D40F8F553D7177641404CAAECE956803D4014948AA7E0B5414054B1ECE99D193F40D8FD8D44E3B2414044208DBD347D3F40E85680D0CAC541407439D83B52C83F40A8AF725CD8C541407C2189546E324040
-kz     0106000020E61000000100000001030000000100000070000000F614369196BD51406A07F3571122454010D0F1CCE498514026C64B4A680A45400A6FC5537B445140A4FEB8EA2EB14440EE9ABE997A285140B0338954975544400E234722A2105140301FDB0CC7544440C85CB44218FF5040BAD1BF24689144405EBE7DF2B2AD50406808908E8F95444078769C77AEA05040481BA11F6BFE4440688A4A3F7F81504070DAF99150FF4440E0537AD545865040B250D452B37F4540F07E731BA7395040067159BE31DD45408CD427DEC7974F4078A729A835D345405461EAD3B3014F40AE2FB2B092C0454070921D0777874E4096836ACFF13346409C56B066B71E4E40866C1F515B644640C415A68F51584D403A90417300C04640DC63C17766404D40AC374F671CCB4640E442D9C2E6F64B4090CC4B4A787F4640E831C8B1EDFB4B40EED8F99181A744405890F4AA45BA4B40B8F0441043A14440B4A63F29AF604B4022D75CDBA00545406CD8725C2A0A4B40B600B96A7C294540C479E399DE784A40F2E4D035DA0E4540CC78E39950404A40CA43FDAE43E4444050E920A421394A40385C48AD79034540BC016C2297584A4052F34490D1384540EC9A05BC2E404A40589B52046A65454018B78AA7D4AB4940E4681F51059145404CE9BDDA157249405C1C04E9F8034640D0A37996682B49405420A19F5A244640448FCB4E1F274940829818170F4E464080DC4900A6A34940C27259BEE6414640ECCED52590A8494064AEC6DE7C9F4640E07E1D076D154A408C7B932B46B446406CB7ED703B854A407CBFD76F28A14640E4653552459C4A40AC987BE0081E4740C846B06678854A40DCA0B54D2F6D47402CDE490061054A406411F357FE664740F886F4AA91984940BE7BF6F43B864740341754D75C0449409A813062F34D474034892E18F38C48407C73BC871D334740B85B3552EF4B4840E24A60F8CF47474040771D07ED5848406E4FFD2EAE8947407CE65A11540748409AD24B4A33DF4740ACEB947E59A84740246CE5E3A0DB4740D0E9947EB43B4740BAB86395733248409C731D079785474038C19D02769348407487CB4E346047400E8BCD9891AD4840449ADC5F55C64740D41C908E333A4940DCF131B5F6494840A02CA11FF8EF484014E120A4E7594840DC01A8D9744D4940E863D28821624940A2CDD76FACD84940A0484D9D132A4A4074C300CCFCDB49406CD9725C35444B405C62D4D25B834940900132B5C4DB4B40DA2A0469944F494038BC503A94634C40AAA6181793854940FCA0CB4E802E4D4002C200CC25884940CCA3CB4E36D24D40EC34DB0CD145494028C3503A66F74D400CAD5204CD6B494024DE9BB830AB4E4090E322EE47664940443EC8B143CB4E407625CA7BE6A24940F4E1D525D8FB4D402420900EEFFA494074AD05BCB0764E40863C784349394A40CCA22E18B85E4E402CB15284285C4A40C4E5D52599D94E40DA990786707D4A405006F847317D4E400AE3E8801ED54A4078C6503AE2B74E402A10E246CD004B4006AF09186D4B5040E4393E56572D4B4090AF0918AE6A50401C821F51F64C4B407671628AD20A51409ACA00CC357C4B405C27E4D85C445140CCAC7BE04FB14B4036A4F88660B75140945389D4B9954B406648694487CB5140DA137F7D0F114B40DA645179580E52407288593E36304B401EA7F8868B6052403EAD18178F044B40B88B10523E5B5240407C821AB2BE4A4076D4F14CA19852406C53268BFFC54A40000788C907395340DAE4E880C93E4B40A67A628A9C215340EA3CDB0CA8164B409E3E58334273534056C0C6DEC3B34A40948F739B4602544056B72928B06E494064FD136F6124544024C69D02B5B1494066B0F8068B7C54404C657109F6674940B033472283D854400225CAFBDA884940E030AAEBD8FB5440A0C100CCD271494084195FEDA51A5540B4B28CF1DB274940AE80C55365475540B8EF96C8030F494098BECF2AA4625540B0A31897AFD848403890392E14B555402C3A157AD0E94840FA89FFC009D755400A097F7D849B4840BE22995A52A6554012B963954B464840CEE72BBA2A7155401E607109563A4840A06240681C6E5540C63B4FE7FAB947403ECFE0BB834A554066711F511F804740146A170C8DCB54407864AB763EAA47402C81620A5F9D5440E88CA43C13C54640E2C4A6CE9C7C544056DE5C5B94A84640C870EEAFD4FD5340E41A6732717546409C155FED6F3754409465821A1697454050EF9F94870B5440E4DF96C8C4754540008939AEA310544088F6E1C6CC2C45403A3DBB7C31E953404697B54D933F4540D2FB136F19C9534034BAD76F946D4540C0BC0918236A5340566F59BEF77A454020EE3CCB05005340C69B5284777E45409291AD08C4E85240A28307065F704540F6B809989F8D5240EC13CAFB2FA645404CE165A74C6952407AB000CCAE8B4540A869EE2F585F5240647F6A4F1D404540B845CC8D0EF65140DC01B9EA356C454076BC4305ECCB5140340F2D45265A4540F614369196BD51406A07F35711224540
-ke     0106000020E6100000010000000103000000010000002400000068D9CEEB1EF44140403E2F599C6A1240C818D9C23264424080CDF14EE962124080B1D5258DF7424040B4503E6E500D408CB5725CA51C434040494DA1F70D0D40D4E26B22C1514340409505C0FCB10B40C4B3D525027C4340A09CA2F68C990C405C0DC8B1ADAC434060D10F9788670B408C29B0665DE04340E08380D45ABF0E4090762E18FE4F4440308110D4E8551140E422D9C290B04440202AF111D5480F40D0A8C41447DF4440E036C8B5D5DB0F40E45B46639C74444020883F2DDD2D07408469BA3DAA73444000F93DB82BE8EBBFE8E5CEEBE5CA444020B76DF79DEEFABF6858A92C40714440A04C802B15A900C04C7391E189584440302C4DF8B1EB04C088E66B229028444050540C51C48105C0A40B2B7B830F4440002F9FB0B0380AC0F844981B69E6434020C9C46F09730DC0045946636DCD4340581E2A99DF6211C04CEE42C6DA9843409088F3C8C50713C0DCC820A480D84240607C0C51649F0EC0F491503AF2C74240103D4DF8F1C308C090E242C6BBED404000B08599A602EEBF089427DED8EC404000E0CC147A67C03F0C5ABA3D41EF4040007422C6F896D83F689C614BE946414040C0B18DAD84F03F4052E399FA7C414080B744ED79BEFB3FD8F8F00D3957414060793F2D9DD403404CB00F9301244140204E244598D40B409C0465E822E94040D0FF5EEF00A41040D050E3992329414050F3B0A707741240B09D614B539141403014C2B8B80B1640A42A870AB8CB4140D0C2A6D023651540B8B30F93EEEB4140501D70003E77134068D9CEEB1EF44140403E2F599C6A1240
-kw     0106000020E61000000100000001030000000100000009000000E045870ABDFC47405C727F49CFF93D4038C19BB8721748403003DF75D3883D40D42A9F55060C4840F8943EA2694E3D4060CF0F9342354840F8495D27508D3C40783E4D9DBBDA474024C80E0CAC863C4024ABED70DBBA474050DB1F1DA5003D40BC6BE399CB4847405475B9B659193D40E0583552BCA64740749104351F0F3E40E045870ABDFC47405C727F49CFF93D40
-kg     0106000020E61000000100000001030000000100000023000000F614369196BD51406A07F3571122454076BC4305ECCB5140340F2D45265A4540B845CC8D0EF65140DC01B9EA356C4540A869EE2F585F5240647F6A4F1D4045404CE165A74C6952407AB000CCAE8B4540F6B809989F8D5240EC13CAFB2FA645409291AD08C4E85240A28307065F70454020EE3CCB05005340C69B5284777E4540C0BC0918236A5340566F59BEF77A4540D2FB136F19C9534034BAD76F946D45403A3DBB7C31E953404697B54D933F4540008939AEA310544088F6E1C6CC2C4540E8994ABFA40754403EC64B4ADD0F4540AC492F57CBA2534030E76DEC86CA44406094AD08FB8B53406CCE226EB89744409A03EB12E33953400A49379C828844403ADA8E03B0215340DCB4D7EFC63644402487D6E4F0DD5240E80DCAFBF1474440E671281DB8B152401C7E0706E72E44404811FCA39F74524046B03AB96DF24340D81499DA707D5240B29E29287BD443407E3DF569396B524000082DC532B743408423AA6B38F251408C824173C5A34340E87A9C7725A35140C4D15C5B56CD43408E1D0DB5C05D51409AD15C5B6AC34340B2F4B0A5D0635140A465BC07360D4440CA0DFC2379A9514054D996C8C6F74340DE55DD9EE8C0514064A3C65E471F4440A445CC8D97F15140BC65BC07AB12444072AD32F48B4352408E71932BDA6E44404094E7F5AFF75140CC20DB8C4AB24440C411995A1ACA514076F0441061924440A4F5B0A5E19A51402295B54D8FC244406ED48E8397D05140643A268B77154540F614369196BD51406A07F35711224540
-la     0106000020E610000001000000010300000001000000250000009A00C970004E5A400898086AE28B2C40F600C970D6625A40386C726DA7722D40E0DEA6CEB2655A4048E4AF7700242F4044BF2163E0315A403463780F1E7130405EB8E775E22D5A40C8714FB3C96D3140CA5EF5E936FD5940D4ECC62AAF3D32407EE67DF2CFCC5940349B0E0C444F3240D00B3DCBEABF5940DC92D49E31F6314040B984AC6E9A59404855CAC7CAEE314088EF541645875940F80A4C16EE1B3240045F92A0CF43594048F73A05338331402A5858B34C42594054E3EF86AF683240AAC5F8860C52594000BF93F76B763340B4F48E83CD265940803D45DC228233404C0203DE20235940B4023B05F71B344064612F576C075940D4969A31F86A3440143C70FE0F155940BC7915463FC934406E400D35854B594028DC413FC36F3540D2BEBE19485159408CDEDE759F333540D2C25B5066735940DC1BE94CA32C354034E81AA9BA695940ACB3487975513640EE44AA6BE88A5940B47D780FFA7636406012773850B05940F43534CBD5AC35404E50810F0CCD5940FC6BA16B3DC434407281170CD71B5A40AC8A26573CC23440E081170CA5345A40A8F029F4FAE23340746292A0BC0B5A4030D4413FEA9F3340963CD3C760F9594010AD82E6E2433340D48F8BE60D465A409469DBD8BEAA3240548DEEAF3F7B5A40F8603EA23D7C31402A4D47A295A35A409C48905AB29A3040D6F1B75F03D45A40C05E27EF2BD12F4006A7392E21E45A40700DA93D83672E40A6AD739B7ED85A4020B68D55A6672C40400CA094C49F5A40008D948F23242D40AEFA8E03D0825A40B853615C1EC32B409A00C970004E5A400898086AE28B2C40
-lv     0106000020E61000000100000001030000000100000016000000002382EF480E3540269D6A4FFA034C403834930026173540F0C08CF155644C409069C633F59435400E7E482DB8B44C40280E9A3A3B86364018FDF9916EE04C402860B522865137400AF85C5BCC804C40B063B522E81E3840BA689AE549834C40909E22C31750384084524FE78EE54C40F01260CD222A39401C86821A2EFC4C40D0034FBC519A39405C71D4D27BEC4C40B08C3A0EAA763A4038B8B54DFABC4C402897747BC6493B40DC28F357BDBC4C40C0AD22C31FC53B407410A8D9439F4C4020AE22C3F3DA3B408C6B379C31614C40A0C033D43C2D3C404A41DB0CA6154C40781B60CD3A1A3B409E39A19F43E44B40183448828C7E3A40726CD4D2BBCE4B4080034FBC75883940D288BC87D60C4C4008199A3A3D003940FA25F3570F154C40D0E1C9D055DC38401AD19D02AF2F4C40C8BE44E5D5E0374056ABDEA907234C405009FD037F3336404EB218173D2B4C40002382EF480E3540269D6A4FFA034C40
-lb     0106000020E6100000010000000103000000010000000D0000004CB0725C0DEB4140846E07864CA34040BC27EAD319E9414082D1D0B582A340408C2A870AC2C641403A2AC3C1D3A1404008726885F8BA41405A78DEA9658B4040E0D0947E22904140B607A19FA28B4040E878A2F2B8BD41402CB44BCAE5F3404054CFF74763FD4140524FE563164E414058958AA7CBFF4140DA29268B8C524140B4C2836D5E3942402ACAF911064C41407829EAD34D4E42408AD3D035D41941406CE742C681084240088BEFBA96E94040B0DC6B2293EB4140E4C35CDB72A540404CB0725C0DEB4140846E07864CA34040
-ls     0106000020E6100000010000000103000000010000000C000000888D636A6FFA3C401CD5C5FAA1F43CC028DAE11B3E533D4092F8E71CE4413DC0C06407DBB6043D409EAF696B67BE3DC0D841E5B830D93C40AAE739D5EE113EC0380CB285834A3C4076D0EE56E9393EC040AF22C3711B3C40062E7E19B58B3EC03099747BD8BF3B406C57DAA825A53EC0388800A1CFFF3A40B2614E833EE03DC0C85A6AA452883B407E5BB14C223E3DC060909DD707133C4084B2A3D8F9D93CC0A86207DBAC8A3C40DA1E44ACC2A53CC0888D636A6FFA3C401CD5C5FAA1F43CC0
-ly     0106000020E6100000010000000103000000010000003800000080F7B860E0B32D40D00E3B05EADC36406002CA71A9492C40ACBE1F1DC57D3640106E077CB0292B40FCD86A9B5E0A3740B04B5934BFFF274054B5AB42BF7837407055CD0E101F2740343D97941019384030D01B2AF08A254090F7B5190290384090A65CD1919B2440F0EF7BAC1A61384080EEDA8282E52340B4AA9A31DCEF3840C0EA3D4C46D2234070500B6F8E5D3940E09D5CD189A3224078F77BAC25183A4090D48F04BD6E2340CC0D2AF41F833A40A03D93A113422340BC09F08615243B40C078004223832340206FB9B631B03B4040264823265E2340004F9794E8243C4010E066A851B82340800719E3C1F53C40E086741C7C9C2340F40CB619B56C3D40F072630BDBF62240208F67FEBB4E3E40E0E7A015A6F0234058C39A31118A3E40003EF66AF71C2440645B97943AF63E40C084D7E583E623408815B61946603F40A0CB7EF31746254034DD4879ECC23F40A0869D78BBE32540F8194FE7780A40409098115350DD26409EB78537382F40408039E55942FA264012AFAE138991404050F5C971A15329409EC996C879654040C07A188DA12A2A403430FD2E7D704040609D00425BD62B4078030469215B4040808341E9C07D2E40E2686A4FEE214040307393A18B6D2F4030232AF451603F4020BA2C9A939C304050E8BC53A32E3F40A81582EF66053240609B3EA279C33E40783CA4111F1633404447868332443E400008D4A7F3923340785997949B863E40A0F52560AA0D3440ECFB6A9B5AFC3E40C016488200D23340587345DC74C03F40302959934D223440BEBA22EE7C1E4040081171DEC1DA34401EAEAE13785A4040083DCD6D028B3540D214157AEE6B40408805C39652E53640C67A7BE0BC514040D870C6339F3C3740D0B3E800831840407061B522F09B374026A67426F8174040E0D68F6371ED3740AE5AF6742202404078483037D0EB384004AEB27C3BE63F40B06B5259302A3940DC2A6461B4913F40B066B52288CD38405C5F34CBDB163F407078C63327F5384088D10E0C5EA93E40F0843A0E38B33840A09BDBD84F0B3E40303BBC5C1B003940D82A3B05913C3D40B089D7440000394020D0BC53B9AE3940B089D74400003940E04BE21200003640B089D74400003940A068A16BC7003440E069EF8FF6FA3740F0BDF6C0F5FE3340E069EF8FF6FA3740285CCAC7237F3340689FD00A69D93340D042A8A5BE7E3540D03DC337C4B82F4054962657E468374080F7B860E0B32D40D00E3B05EADC3640
-lt     0106000020E61000000100000001030000000100000013000000E84F414829BB364020B8EFBAEC294B406890E855ABA636401C59C341974A4B40580860CDFCC136404AB9EF3AA46D4B40A8AD6D41D3503640CEB2B54DF5814B401046A411B944354098191CB461984B40002382EF480E3540269D6A4FFA034C405009FD037F3336404EB218173D2B4C40C8BE44E5D5E0374056ABDEA907234C40D0E1C9D055DC38401AD19D02AF2F4C4008199A3A3D003940FA25F3570F154C4080034FBC75883940D288BC87D60C4C40183448828C7E3A40726CD4D2BBCE4B40E0C30A7899963A4072CE9D0266954B40C8489300B8C43940E8292D45696C4B40708F747B4E8939408CA3417326244B400043930060733840503CDB0CEEF34A40583BF6C9EF7B37401ACF3AB9CCF44A40D8FCEBF2753E3740B084BC873B1C4B40E84F414829BB364020B8EFBAEC294B40
-mk     0106000020E6100000010000000103000000010000001000000048D9A0741A973440267730E27DED4440D876D744A2B73440A662821A6EEC444010B144E51DC33440E2921817A3064540B88AE855495A35409622DB8C781A4540F81F4882C6EA3540B4D75CDBDD264540085CB5226A61364040267843FE28454068577BB5A1E13640DA4060F8E8FF4440306C29FDCEF336400276306243AB4440C034599301C3364078FEB86A03A74440086EC633E99836404694B5CDB3904440180C9A3A2D0E36405094B5CD2E9344406033F6C995AC354008C7E80034774440A829BC5C210535406A26157ADE6B44404865C633ED9A3440BC56AB76098B4440B03B6AA49276344040B7D76FEEC1444048D9A0741A973440267730E27DED4440
-mg     0106000020E610000001000000010300000001000000310000001C791D0792C54840C478B7EE8DF028C024545EAE8CE748402C8A2BC962CA29C0C0656FBF3B0749408CEF57C28C1C2BC0C0D6ACC9D41B4940542D8BF57F842DC04C9D3F29FF3C49407C082F66F9732EC0803D1330453049403C95B7EE81692FC0BC73E399A21949409CB07342110030C0805E355228EE484074C24DEB18D42EC08C3876F917D64840247395CC9F6B2FC074EA5A1182EE4840E2302527777330C0E8F7CEEB24E348405ACCBEC002E030C0E8906885D2BF4840C4332527251B31C0FCFD0859C2B7484024459901FCF331C0D47E5774598548401851D36E681E33C0E09F7996364648403091400F347F34C0B8D1ACC922F74740488F696B396436C018A116CD1BC647400806A7752EC837C0D02165E8418C4740206E70A50EF138C024A5503A28244740A82055BDAF2D39C0885B6FBF6AB446406200339BF79939C014273C8CB26A4640F04614169A5839C088F5A58F1505464014C7623104FD38C0888E3F29C3E14540B45088F0EE7538C034F842C650D9454058724749F99237C07431B0663EAC454022EDF82DE3C636C00CFE7C3389A0454002C19C9EB20E36C0F0AF614B76B74540A627A03B235635C074FF7C3364F245405E3B4E83CE2935C050402441BCF2454096812FFE98D434C09C4BFBE4E92F4640DA17C997861234C07C93DC5F713B4640626A1EED796F33C000CD4900C01D4640105E474945F632C06C70BA3D800546406443FCCAD55432C0F4F1085946FB4540E464BB23F26831C0C02C76F9FE27464092211416BAD930C028152B7B27394640A45FBB235A3730C074495EAEF378464062143D72EB2D30C01C88688559C04640F4894314E1F22FC0A8442441BEEF464050B19FA33F962FC0F89A7996F727474020A08E925E8F2FC098C8725CEB70474060429C069D6B2EC0BC1FC8B141DA474090736C7048302DC0608391E1AA004840BC08060AB62E2CC02494A2F23CEF4740848D8E92E6532BC048C8D5259C254840F4BA875871912BC014C638EF2A6C4840A0E41D55A82D2AC0707E5774876E484038F768D3C9F928C0402D9F55EA984840B8933CDAC31428C01C791D0792C54840C478B7EE8DF028C0
-mw     0106000020E6100000010000000103000000010000001B00000040A39BB8AD4741408C92D910400A27C0F45ABA3DD7234140D8CFA97A5F8F28C040A39BB8AD474140DC3AD673F5282BC00841D2881D74414074595B5F7F212BC0784F46634CA2414084C9FB3292C62BC0F4123C8CEAD74140AC9CC8FFDA382DC0C4E642C6CDE241404489431431CB2FC010F0196A66AB41403A70CC34811B30C01037FBE453844140A69FC5FA21CD30C01C4AA92CCE304140869928C4FD2E30C04C3C35525527414034BC137E10F52EC0B86591E1424241403C3DFFCF04072EC0C8FB8D44D53A4140E032C562DC392DC0D8E97C334C08414070605B5F4BB82CC05434FBE414E540400891F15B56E72CC054773F29659B40404CA19FA397F12BC06C8016CD15584040DCDF46B1FB6C2BC06CD66B22F27E404048D4A97A579129C068F253D738A74040743E4A4E1EDF28C0FC541D07A18E404020FDDCADE23627C07C662E185CA8404084E12E66D59725C09485B3032BBE404060E9050A160D25C0BC06021F9E9D404088B50C447B5A23C030B7E63633614040A04E4314117622C0F88CED70AFDE4040000CFFCF94D522C0F45ABA3DD723414034BDA97AEB5124C040A39BB8AD4741408C92D910400A27C0
-ml     0106000020E6100000010000000103000000010000004C00000090850A956C5728C088AFB6B1D13B2D40402DB53F1DAB27C0E009A93D23992D4020BB7735085527C0100FA93DC3C62E40507E0A95BCB226C0C85DC42590D22E4050376387344D25C040AD7C44F7432E40309C6624772C24C08871726D35A92E40E0E3E4D5876623C0684BB31439872E40C0B24ED9B81923C000BEF01E16F92E40E0AAC271A62616C0E8B3197BDD002F4090405C0BD84215C02C9CE5AFAC333040D0768F3E3FF415C0ECCF18E33953304070047B906FE217C0480F12A90DA43440C0EA586EADD019C0B8998920E3F43840A0EEDD597FB113C0C4C2E5AF7DF93840805C395D06CDF8BFA4305D27ECCA3640000205ADF02BFD3FB034D1015E9C34400090BCC3E87C00400899376869243440C0ED9D3EFD770540ACAF82E631DB3340C0F3C69A5C2C09406C26FA5D8EB13340C0DF1853DB4309407864A16BAF0E3340400FB268D61111408CD5DE75BF273340A0C7D0EDB1141140541D97942BDA30400053454C91C90D40A4246E382D2F304000B30E7C271B0D406806D299E0222F4000DF8C2DFCFF0540400FA93DADD12E4000D2F39B1F2BF63F783705CDA9A52E40801E5A02A640F03FE8306896B5EF2D40000272E03BFED73FD874ACDA99DB2D40003040045C0AD1BF90070C073FD92D40006F5335E181E0BF40090C07793B2E400007062AD30FF1BFA81580E197F22D404076BBB31E0200C040B98D55361E2D408046EB49DB8801C03838DC702A7E2C40C0166D98D6BD07C0D01F2E29A7982B40C0F5AD3F64D408C0B079BDEB20152B4080F39C2EB32E0CC0F888CEFCE1AC2A40A09D364C8B0610C030C43B9DE9F12A40A0D5697F221F11C0F8B02A8CF6742A40C060F2076BB511C0705C0FA4D5152940E067B89A3EE214C0A069BDEB7E6D2740B0718F3E97CA14C0A0C9861B13C0264000FF17C7DBE115C0A08142D70CE7254000BD70B90B9E15C08042D536D1BD2440A08DA04F884417C0A8B84CAEF2712440F0279DB2A93318C0E06F6B3356312440F06EE1F625D218C0888BB6B1510C25400074E1F6D1F919C0F053E64796D2244070A3DABC74AA1AC00843D53693DC2440F04DE830EB661BC040706B332A472440B0F1E493B47D1EC0E0952A8C624B2440700E30122E991FC0E8B5AF774298244018C4D3C4540F20C0C8FC90F2BE69244060C3368EB6AB20C0F86FCEFC57FD2440E0EB921D919020C0E8C72352CF952540B00B18098BD020C0C095F01E8AD1254070882CB79A3D21C04024B3142D9F254040AA4ED9A02921C09875CEFCC1452640700B1809ABC020C070D7FAF58BC926409097A0917B9221C0907BCEFC07A02740884D22E07ECF21C078927C443D2D2840D0A47735444122C0A0011D18BA9D284080F82F54BDA722C05079948F27AB284098FA2F54C52223C058BCD8D37363284088AB773530C823C0D08EDF0DF71E284008F9F5E6965424C090378AB82BB02740F01E1809BB2F25C07031504B13D92740E846D761DDBD25C010604911145B2840A8295276B71226C058C31241286C2840A8ADA0915B9826C058BBD8D3EB272840D0A4C9ED8EE926C018EB6ED056272840B86EF983230727C098957C44CFE22840A8FDBB7990EF26C0F808BA4E5082294018469DF4561B27C0081A2E294D482A40A0537498FDDA27C0902D3F3A1AD82A40D02FB53FF13F28C0B07DBDEB4CFD2B4090850A956C5728C088AFB6B1D13B2D40
-mr     0106000020E6100000010000000103000000010000002700000090850A956C5728C088AFB6B1D13B2D40D002820C4CA929C0C01146747D9B2E408097440219DF2AC09420D101150A3040D014BC79F4322CC0B4ADF6C0E64D30400853291A9A272DC0D8EF9DCE2799304000CC035B7F452EC02045F32358963040506D3A2B513F2FC0E8FFAEDF8C5E304034C85F8BE51E30C01C07E94CA6743040900A07998D7630C0880C23BA91223040CC4BAEA6B98C30C05C869A3184AC3040301EB5E0424530C09C36E212BE2A314000104106772530C0B8007572C51B3240C4F1BB1AC34130C0CC23FA5DC218334088FC92BEAD6030C0A0963768049833408CD6D365204730C03C390B6FAF173440645922814C8930C060AFE5AF5F913440B45B22813C1031C058C2F6C0EFFF344074DC709C5ED830C0C0B2E5AF54553540E036B53FB3DB29C024B682E6BA533540B05AD761CD3C2AC014B9E5AF6EC53640F02107F899BF29C09C9C60C4EA48374068388CE3DBDF27C040A73768E55F37404835EFAC57F027C04C7F0435F0EE3940E02C9DF4E45F21C02CCA82E68CE13940F0771BA6695E21C0389AB27C4F653B40A0EEDD597FB113C0C4C2E5AF7DF93840C0EA586EADD019C0B8998920E3F4384070047B906FE217C0480F12A90DA43440D0768F3E3FF415C0ECCF18E33953304090405C0BD84215C02C9CE5AFAC333040E0AAC271A62616C0E8B3197BDD002F40C0B24ED9B81923C000BEF01E16F92E40E0E3E4D5876623C0684BB31439872E40309C6624772C24C08871726D35A92E4050376387344D25C040AD7C44F7432E40507E0A95BCB226C0C85DC42590D22E4020BB7735085527C0100FA93DC3C62E40402DB53F1DAB27C0E009A93D23992D4090850A956C5728C088AFB6B1D13B2D40
-mx     0106000020E610000001000000010300000001000000AA0000004DA767E5F54858C02C3E5D27B8DE39406C8C7FF0CB6158C0503A5D27FDFD384088DE370FFD6C58C010891546B845384060D460ABAA7158C0A897C38DBDEE364077372ADBD47758C0684A45DCB7713640C14BD822BD6C58C07822868310E63540A4B878B6E45858C0C0C0598A38693540A625190A1E4C58C0C0C0F6C0ABA23440C2C88907A32158C02CA20E0C14E433406FB77836B21258C0AC3C45DC03523340314D7519A8F957C008C3CD64F9D33240E4295337B3B557C084CF413F0E9032406C8C1C273F9B57C08471B27CF5243240A8BE4F1A1D6357C040249794806C324034877FB04F3257C088C807D25B863240F4E5ABE9630257C08C36A8A55EB4324017ECE5161BDA56C0D85C67FE46E0324004BFEC5066B156C090B01F1DBC48334014770B5626A256C020B31F1D0FDE3340556997FBE49C56C078275D2720B534408ACFFDE1D49156C0B8EEEF86F6FF34406905CE0B7C6656C0D0DEDE7500433540CEC6C3B4CE2256C0B0208683617E35407A36017F23EA55C0B8B682E67675354094C8602B52C355C00843A8A5258B3540EA61FA84F7B355C0342A5D27DE543540572B2A5B23B655C0442123BA90D93440B85BC0D787D855C05466043562413440322C2A5BBFE755C058481C8084A53340CE952DB8F3DB55C084360B6FEF783340C1C5C3348AE555C024BD93F7450A33405D1B198A94F555C00C0FE94C834232400B827F70CD0556C0E8CBA40843843240983A9EB5331356C0A49871D5FE7F3240373E3B2C5E1F56C0104A56EDA07C32401AF01F444B3656C0F46C154619E23140F89ACA2EE94156C0DC990E0C630032402BACDB7FA84956C054E1EF8699F43140D7F3BC3A284956C0285867FEEDCE31408DD9D405598456C0F44D905ABFD13140A8881CE718C056C0B4A682E64DD131401629F02D25C056C0C4C9413F314131407207CE0B0DDD56C0CCA0E5AF8E403140A00331153AC556C0F0387F4921EB3040BA514C7D8EAD56C084D118E3FEAF304023DAD44574A656C0C8A082E684783040EE9F6765169C56C05CE129F4FC68304055CC60EBB99D56C0BCBD07D2CE1130404E905694DEEF56C0E4B6CD640A113040B60B6B02AC0E57C0D8D33B9DBD802E408B6E34F2940557C0380CA93D11212E40F0B278B6010D57C0280AA93D03A92D40DCCAC374930E57C05089F758E1132D401ACCC374015757C0A0366896193B2F40A2F51FC4027857C08073D5365DE12F40DC4B751944AC57C000A31F1D73333040659E2DB803D057C03CC8DE75D9203040921DDF9C6A0358C01819E3AA11812F4050B4DBFFAC2358C018F6C088994E2F404AE80EB3DE5058C068F8C08889D52F40A671977BD58058C0404DCAC7781B304076A22DB8A6BC58C050266E38E8903040547AD128A2EC58C014E6C62AC7B430402C156B82163559C078DA5250CB2B314014793432A16A59C00CF1009826A63140D2F0AB29C97A59C0ECD618E384EA31404A3253B7999E59C0B02534CBCAF931405CBF783610E059C080C707D2D34A3240BA74FAC4B8FA59C0B0C2CD64A2BF3240F9860B167D3F5AC058215D27EE5033403B095AF18D5F5AC01C8726575FF233407E095A31CF6E5AC09C18E94C216F3440D927DF1C75595AC0A84FB9B61E883440602B7CD30A605AC008D6A40820D1344000A6900154515AC0249D3768871335404A24422603515AC0D497FDFA0E6C35404D957F309A665AC0D870A16B03DF3540A73C8DE4606C5AC008137572E244364091624C7DD6815AC03C783EA214C636409E11941E3DBA5AC03C5045DC8CC4374037C478B696FA5AC05061B9B6858C38404CEA37CFB8195BC0ECA460C41C2C3940D4E79A18A7505BC090E707D2A2943940D8519EF56B5C5BC0041501982BD3394002A7F34AAA525BC044A0892064713A40361831154B735BC0D08CDBD819AD3A40A8E5FD2112995BC04447FA5D80293B400E6BE97306A95BC0CCC171D520DC3B40E612F76773CB5BC01077F323F5F03B406E2B42669DF05BC0FC128DBDCB773C40E4B767659B0E5CC050AB892054F43C408EEE378F65115CC044A9ECE94F443D4088B86765D0335CC02CA94FB367053E408C8C6EDF7B4A5CC0A8313B0571C93E405B93A8CC83495CC0C099A16BC42B3F40C02D42E6CC775CC04091CAC74E913F405C3819CA2A8D5CC0B40108D227863F4060024960B1B15CC00888F323AECC3F40C3D2B2E3F2BB5CC084CA3768BB643F402832DFDC5BB15CC004FF07D2E2E93E40E672862A21AB5CC02CD64879A5293E40D82AA5AF2E955CC038B226571CC03D401F752321B0655CC004B660C4C50F3D40D829A5AF235B5CC088DA1F1D80D33C40D78534F267515CC0585F0B6F39C13C400E15F767F6485CC00CCBAB424A693C40191FCE4B963D5CC0549B1546D96C3C40A077C0D7BD305CC0B4687F49BCC73B404E14F7674E1D5CC0A03E23BA9B863B4042AAF34AAD0F5CC008667F49F62B3B40C7795D8E74E75BC080E5CD64AEA93A4044BA041C38D25BC0384BD1018BBB39401DB3CA6E38BF5BC034FE52506B4B3940EE37B6C070AD5BC070173B0575D33840FDBCA152ECA95BC000904FB3704C384083307C13108B5BC07C6356EDFA433840F00D5AF165715BC0381D12A9A9CF3740B60620C42E5A5BC05C03C72A5B5D3740ACF50EB3BC5B5BC0B0EA7BAC822F37406AD78987AB765BC03CE2413F7AD136405B307C5302825BC0A0710435B5D23640830E5A71E2925BC024B5AB42546E3740387223A1C4BC5BC098A69A313F0038406D76C097EAEA5BC014385D27037C38401F99E279A60B5CC0A8B0D49E08BD3840FE4D640889095CC0FC9B89205A7839402CEB9AD83E135CC0C067B9B612033A40D40DBD3ABF315CC0C03CC0F06B523A409271862ABD5D5CC0941C9ECEA7C43A4039C0A1D230665CC004B9D49EB3A33A40020FBDFA54765CC0884997946AE63A40B3ACF3CACE9D5CC0D8F1A40860243B40DAFB0E7387C35CC0C8BDD49E04B93B40339CE239DDBE5CC0C091DBD856CC3B400A1A94DE80A45CC0A0B3FDFAD1BD3B40910883CDC18C5CC080229ECE701D3C40D5236B825E8A5CC0FC72B9B6EC903C405F09834DA3BB5CC0F8192AF48B473D40300349A031E15CC05877B9B66D8E3D40107BC097CAF85CC0AC761C80482E3E40FD6612D088105DC0FC19F08622D63E4046FA717C2D2E5DC0AC16B619C0A23F4011EDFD212D485DC01066CD988544404012930B1672FF5CC064C25C5B624E4040A6579EF542AE5CC0E8A3D76FCC5B40403A6C4CFD28B45CC06458593E3C434040323E53F784535CC0CACED0350205404038C4DBBF82C15BC004C060C4B0553F4035BBA1523D425BC01897043589573F406A68E9F37B0F5BC020D171D59B573F4026C1DB3FAB0E5BC0408B905A28C13F400E8CA88C7CA05AC0408B905A28C13F400EF20E3325895AC0E01F8DBD62663F40FF3F2ADB6B685AC0A87A1C8076153F40FF4C9E7564425AC0005A9794DEA43E40E690E2F92A2D5AC010E7598A291F3E40F9826E1F3F1D5AC0C8A3B27C6C923D408D41C71129FC59C0AC721C801E453D40DA1031550AC759C0C0D782E652F83C40F9793432B89E59C0CC3AAFDF8EC23D407C7CD1A8646A59C09C5934CB7FC73D4080AB6765493D59C018620B6F76613D40961BA5AF2C1D59C038812D9135B23C40240A945E0A0759C0788567FE291C3C406CF8828D47E158C0EC48FA5D3D8A3B40069CF34A33D358C05C9415460BD73A401A6523A147C158C0788BDBD8B75E3A40DB9AF30A5C8F58C0606B56ED5C0F3A406C8C7FB0EB6158C0ACAE9A310AD739404DA767E5F54858C02C3E5D27B8DE3940
-mn     0106000020E6100000010000000103000000010000004B000000C419C2B614F05540B6BA63950AA64840066640688E335640229207063ABC48403EED2BBAACAD56409E906ACF782A494080EB8E83050F57402C7DBC87AD664940AABCF886AB465740BC8693AB653F494004F12BBA718957408EC73A39823D494056EE8E8338B45740E455FD2EB8014940C2A7AD0819F45740DA2CA19F1DFD4840E4CE6C619F5058403A1B908EEFDC4840C29C392ED58E58406EC73A39113649402840AAEBD8745840CAD94B4A6881494022E51AA922B75840DEA8181710064A40005758B3D4FE58406248EC1D27D14940C0B04A3FED3859408A4B895428C24940CEA7739B2C845940ECD6AE1345A1494036DBA6CE60905940DA34DB0C5A41494030E043854CEB594048C39D02840B49401EF98E83C7275A407AF333FF3D234940E860F5E9BD785A40CECAD76FF833494010D6CF2AE2B85A409C1556211C2349409277A33190F75A408E14562198E548406237FC23691E5B40B89107862AA44840CA012CBAC1595B400CADEFBA7FA54840A0DD6C615EAA5B409A617109A8904840BEC621E332E55B40C635784361B048401243369174395C40B832DB8C93C548406863BB7C32975C409A893062C81F4940964F0D3593BD5C40362DA19FF3114940FC5647A215DF5C404C33DB0C10E74840BC955179712B5D4006599A65BBF148406A65BB7C460C5D402EC19D823A9148409C2A4EDC0EDF5C404ADA8537541148407C27B1A58AEF5C407C240469FFDC4740D6E36CE1C5135D40E646268B3CED474056E80998E9525D405876BC874ED947404C6EF5E91A845D40A628A19F8A084840D2DF32F475B75D409698DEA99FDF4740B6F87DF275F15D4012D14BCA26864740A8098F0373EA5D40708FA4BCA9584740D4DF32F4F4B75D40CC7759BE1767474070116627FD5A5D405E55371C1C5647401077CC8DF12D5D40DA3CEC9DB031474086BA10D20BFF5C401E5A710916DD4640E62CEB12769D5C408C3AEC1D7FAB4640FA24B1A5B05D5C4078846ACF89674640A6F07D72E81B5C409C69829A7D814640D4BC4A3FE4F75B4024BFD7EF108D464036E5A6CE4BD65B40F08D41738D3A4640F64B0D35BCEA5B401053D4D25D0946404CA89CF717F55B4038CDE8801EDF45407A33C2B64CC85B409CEE0A2313B44540AC958BE65F9A5B4094AC6395846F45402A27EB12974F5B40F0CD85377D424540FE39995AAAEF5A405A7F6A4FA23D4540DE450DB546885A4006BC74A631114540A4B8E775C23D5A401CFFB8EA77CC4440DC3936116D215A4062FC1BB444F444405605035EFCD35940CCFFB8EA27F4444060AEAD88507559402CD85C5BE741454050E71AA9223659407C3B268BF7544540BEFD652703E15840EC9318172943454084D20998E95C5840D834EC9DDB5F4540D01F25805C165840CC34EC9DE15C45402048810FCCF0574098E7D0B5E3A845403644E4D8A3D3574024D522EEE31E46407E6C406817AC5740DEE9D035192D4640185A2F57C45E574032142D45DC7C4640D8C5CFAA9108574024856ACFBA8E4640640577B883BC56405C29DB0C9EA446401AED2B3A7DA5564004AC29A81FDC4640BCBD95BD21BE564066182DC5AE714740E271170CF991564052D98537C6D8474094B45BD0AC365640668193ABD7084840AC5092A0E2005640FE226732BB4C4840C419C2B614F05540B6BA63950AA64840
-ma     0106000020E6100000010000000103000000010000003E000000801D062A7335F6BFEE25260B986E4040006ECF5929FEF1BFAEF58F0E65534040805FE7A427EDF4BF6AF1F257A621404080881E7DCEEE04C0223C7189130C404040095C87458D08C0ACB04FB378B93F4040FB3965132E0DC048B04FB325A33F40C02596F405860DC0C0CBD49E9EE53E4020A99915477013C06CCD71D54D803E40608ADABCF0F714C06CFEA4081D003E4040731B64163E18C078077CAC50BB3D4060817E2DA63C1CC00C11535048943D4090F969C1255921C03474B9B65ED73C40E05FD027C85421C0000CF0860BA83B4010054165BAA221C0000CF0860BA83B40180F1809FB9621C078102AF4E51E3B40587E1BA679D322C0F046FA5DA6163B40A895C9ED7E7823C00C2EAFDF66DC3A4028AE7735FC6024C00C2EAFDF66DC3A40685FBF163F1A25C0B8792D91A5FD3A40B0449DF4FCC826C05861E21228E23A4048A08F80BA6F27C0CCD8F6C0A51A3A40F8F4479FBF0F28C0F889DBD8E6073A401022A42E7E0029C0509C265726C538405005489F3FC82BC098D193F7E5B03740B81CF6E63C712CC09C79DBD8664F3640E8B98F80FC422DC0F092C38D66DC3540C824931D7D802DC0B8BDBC53278035400CF5BB1AC20031C0E00BD83BB56B354038403ACC3A0531C094F0EF861C6C3540949F66C526F930C0A42C5D27C0E2354064EC81ADD19630C024AC0E0C82283640FC24EF4D0D4330C0C8A09A31E9AD3640384E4BDD8F5330C0C0B648798C043740A86900BE18F72FC098123B052EB93740906B3A2B1DDA2EC0F4D7302EF05B38405824F6E6BC2D2EC0B0129ECE2F853840D0518CE337A62DC028CA1F1D811A394038C2C9ED129A2DC0D8BEAB42E2A23940206D11CF3FE12CC078762D9121413A40D08CD027308C2BC0A43A23BA6F9E3A40F06BE872A6472AC0203F23BAE0A33B40A882D027D83C29C0AC0DF086C6093C405858AE05BA6027C02C0EF0860D263C40D8544B3C4ACD25C0209D154607D53C4058A2035B97CC24C0C07856ED3C193D402894C9ED2E2123C094D8E5AFFEEE3D40D0D3D3C422A123C03C74E212802D3F40B877E1389DDE22C0EAF0F257E0044040C0A9146CF49922C02403046947484040302900BEA05021C0C6C35C5BC09E404040B877F3E09D1EC0D8D56D6C39D94040607BE1F671A61BC06C811817240E4140E0DC81CA34FA18C0BABD85B7AB9241406011EF6A50B817C040B84B4A47E1414020C0AA2684C614C08E706ACFA9E04140E07EDABC305D12C0FCFE2CC554AA4140002496F4D51E0DC0047A41732EB34140C08481469ED504C0D05ABC87EC964140804C25B7FB5B01C078A29D028E954140802558E211B0FCBF4A0E3ED69243414000B11AD83ABCFBBFF6A97426B9F54040801D062A7335F6BFEE25260B986E4040
-ph     0106000020E610000001000000010300000001000000090000009EFE1AA974825E4000CA861BE9D42640A294170C8C785E40609EF01E94C8274060435FEDF69E5E4038C1AF77142A2740487792A0B1C75E40E031ED81D52A27404077922074C65E40588A7C44F55426408409F24CD0A85E40F03E9BC98C7B2540488069C42A805E40D8FE90F2CCE124406C792F57E97D5E40F89FC7C2B6CF25409EFE1AA974825E4000CA861BE9D42640
-ph     0106000020E6100000010000000103000000010000000E000000C4F4A6CE29605F40286A20B54C532840C43C884924725F40B829504B9D172640A45A0DB5C2405F40F0A664F9769F2640849BB4C218425F4030D7972C9EF3254040132CBAC1515F409875086AAAB724403427DA0151335F400877A5A0F44424408CF00998A6305F40488EB6B10DAD25405475F5E9611D5F40F0C1E9E4A4C72540C40E8F835C135F40408D7C44A1FD2640D84C995A06395F4020ECA83DC7D42640145770FE30385F40B05C4911A09627406C90DD9E12115F40C88F42D7921D2940BC38EB12894E5F405822A2034A122940C4F4A6CE29605F40286A20B54C532840
-ph     0106000020E61000000100000001030000000100000006000000967BCC8D5E355E40203F8AB8B36829400EB5392EB3145E4048E65DBFCDEE2A40A2267738874B5E40B03E504B01DC2A409EC010D2C0615E40F0DB2352A1232A40D40E2CBAC7505E4038B201303F692840967BCC8D5E355E40203F8AB8B3682940
-mz     0106000020E6100000010000000103000000010000004D00000040A39BB8AD4741408C92D910400A27C0D8938AA7FCA74140944D95CCD7E026C0DCC2836DCD414240D87F2BC91E7127C0F4AED525386342408C856536673027C0C42E870A53BC42400807B451332327C030038E44F0E9424030D1801E9C8926C00453A92CBA36434010F0050A069226C05844981BB1C243400C536C7030CB25C0F82376F98528444084AD98695AA224C08C9116CD3B3D444080883CDAE78725C0281365E8F7374440C04221F2FE8527C0986FF4AAC8474440AC7D5425424729C0C4BA725CC04C4440C47DE04A69672CC0C4F142C642634440885C21F22E622DC07C1D3C8C163D4440E41069D305D02EC0E4C349006D0B44401EC28453CC1930C08899ED70EDB94340D8C484538CB830C05C3B5EAEE8444340A24B70A5DC1931C000BE4900A0B44240F24636381C9631C0E04A0CF600244240BC5C4749E1A832C01021B066C0F24140080F2C619ED732C0B07B3F2965994140D2BCD60B858D33C0A4BBE636A8644140FC7C2FFEB4C833C0DC214D9DD7594140C05336383E7F34C06C0E9F558B964140AEF0CFD11D4135C034012B7BCCAF4140BC077E1941D735C0D4ABD525A6AD4140240A7E19276336C0700865E8E1C741405ED2ADAF7F1F36C0741976F957C44140004E25271F1237C0349E614B96AF41402E7247490D8937C06C837996C1CD41405C131B50E1B437C07C4CA92CB8BA41400A56C25D631F38C0988516CD368541409EF4F82D757A38C0E408021FA01B4140E8C2C5FAF9D038C0349227DEB08140406E841EED895B39C01C0C3C8C8D494040A81FB88631BA39C024B0ACC98654404038A306A209263AC05484B3033E7540408E7AAA1243373AC01C4A4663416A404012B0DD4500BE3AC098079F552C094040CAA506A2DBBB3AC0900467075CFC3F401A4B1416B24A3AC050CD969D78D63F403C31C997E4D739C090A09DD79DC03F40B2066D08FA7B39C0F874A4113BEE3F40A6421416925E38C0F095C6339FAB3F403AC16231B2A837C0A0C35C3000313F40FC4688F0624036C004DF42C65B1F40400CB66231D21D35C0E0C0BDDA1C414040C02D77DF316534C0042BC17772544040A20EF2F3E54D34C04C652E18E86240408ABDD60B31B733C0AC20EAD3554E404042F643AC5C6B33C03C98614BD3534040962914160EAC32C0D057BA3DC86C4040265DE47FA3FA31C0CCBA836D7F6C4040BEB37342A1B630C0906E05BC032A4040A4CD5BF75E6430C0E0B8E8551FDA3F40DEF21A50C55130C058BB858CF1A23F4004FCF1F36D1230C0487F18EC4D2C3F407C11CC9CCDB82FC0A0184FBCC5563E4064CD8758FDC22FC0A09600A135463E40047F09A7FC032FC0E0A3747BF22D3E4034534A4E9A972DC054773F29659B40404CA19FA397F12BC05434FBE414E540400891F15B56E72CC0D8E97C334C08414070605B5F4BB82CC0C8FB8D44D53A4140E032C562DC392DC0B86591E1424241403C3DFFCF04072EC04C3C35525527414034BC137E10F52EC01C4AA92CCE304140869928C4FD2E30C01037FBE453844140A69FC5FA21CD30C010F0196A66AB41403A70CC34811B30C0C4E642C6CDE241404489431431CB2FC0F4123C8CEAD74140AC9CC8FFDA382DC0784F46634CA2414084C9FB3292C62BC00841D2881D74414074595B5F7F212BC040A39BB8AD474140DC3AD673F5282BC0F45ABA3DD7234140D8CFA97A5F8F28C040A39BB8AD4741408C92D910400A27C0
-mm     0106000020E610000001000000010300000001000000460000009A04A094C5E258407C4045DCC42F3440E88FC5536BBD584040862657C3C033401EF28E033D905840502D34CB4CB5334060E7B7DF0E7358404C81265788A03240EC83EEAF0E5858405C5E04350872324056FF02DEFB765840D075ECE964913140A636D3C7999F584048BACD647CD63040FAB1E775D0B9584044CF18E3852D30401600035E64A258408030CB5FF39D2E40E0F8C8F04A8C5840D85727EF553F2E40BE92628A929B5840189B086A7A3E2D40C074DD9E41C658401894086AAEA72B408EBCBE9991CD5840703616DEE0892A40E64B810F91CC58404884CEFC079C2940DED4091896E55840B07F6B3318C92740D633369170C25840B81E79A7CCEB254034E8B75F6DA35840F859BDEBACDD2340925F2F57429D584038B9AF77BC5925407ABF5B50EEB0584018A864F9F0E126407E888BE6699B5840F0570FA4E3102840F2174EDC9CA05840C86BE647A83E2A40E2E07D72A186584030B18D55EA472B4040FF025EC67158402022F4BBB0AC2D40E63FAA6B36665840DCBD07D2BE193040D4A510D2874A584008AD598AC1ED304032F08E835E205840505C3EA25F6D304032969C77A3D7574068265785C46D2F4084848BE6BCB35740A064615C5E9B2F404CFB025E158C574058B3302EB6093040F23F47A224A2574070296E38F946314046023DCBC99457409867DBD8A8363240945DCC8D9F62574078D6DE75D25D3340206169C4726A574028235D271ABA3340361C258002455740BC5DCAC7EADA334084C96C6196175740F434D101BFAB34407466A33168135740E49E3768B979354006FD9F94BE2957403464CAC7F452354086114EDC0D2B574004753EA28E0A3640A4717AD5A14A5740F48D892049473640F4114EDCDB435740C07E780FFFB336405297392E5352574060A29A312D0B374076E2B7DFCF545740348815461C1438401A134EDCD486574048355D27CAD93740C8A94ABF5EA35740307DA16BDCAC3840064047A29BA65740682DE94C9929394008A7AD08EEC9574010F77BAC55003A408E69A331FCC75740BCB8D49ED5923A4012B621E3D61A5840E0A38920BC433B40B6F7C87093485840F0E3302E72153B401035D3C753435840300CF086F5B23B4008323691C3595840C00219E3EDE13B40D20F146FEF545840A0374C16F7423C40A209DA015E7A5840906E1C8000563C40D8AD4A3FC28F584060D282E649BF3B40786DA331B1AB5840243B868341823B408EE17DF292AD58406C45FA5D58BE3A40A8A0D664FFAA5840502D4C1630EB3940383970FE5F6E584034EC413F69153940D2F42BBAB36658400CF85250BCE5374030C695BD41AA5840FC2B86833310384052A4731B85B95840A8460B6F89243740DEE51A290CE258402C720435F4F236402CB921E36ACF5840C478DBD8491E36409853BB7CF1FE584028EBB51931BE35402265CC8DA81A59405CEAB519108F3540542FFC239A4959405033979498D935406E400D35854B594028DC413FC36F3540143C70FE0F155940BC7915463FC9344064612F576C075940D4969A31F86A34409A04A094C5E258407C4045DCC42F3440
-na     0106000020E6100000010000000103000000010000002C000000C085F96650583040CE6288F0A2933CC01050717F21342F409AE473423DD23BC060A5630BC36B2E406A1BE1E248173BC080284F5DBBFA2D40564A14160C1E3AC090598290867C2D4044CCFF67966439C0F0716A45F8D02C4004B151205FDA37C0B037FDA47CC52C403CC0FF671AA836C0D0DD0A19F3832C409079BB23781C36C090D3D0ABBEBC2B40E6361416F4B235C0308E299E7AB42A40D692400F72DF34C000646A4558A729401816C99754AC33C020390EB69537294086A9C5FA9B0B33C0D00FEC93FF962740E8ECA675B21132C0A06441E9E877274018AC9C9E484D31C0C0A9E8F6506E28402226B14C961C31C0B0930042CFA02940227EA3D8FBF030C0E01078B9BAEC2A402896EE56A1F830C0E0A8D7E5F31D2C407AED43AC626C31C090D6D0AB5E6B2C404E0F66CE645A31C0A0CB033E68433240403188F0584F31C080D53DABC8F4324022C6E71C02CA31C0489F969D8E60354008A862313EEE31C03074636A0D373740303288F0EA8531C080331F26AB0838403A082C61BC4B31C0D84ACD6DAEAE38406E945120795A31C0F815FD03B3133940A89F28C42D9431C010270E159E153940D0CFBEC06CA931C0403282EF4C853840AAAE9C9E1AE331C02875C633A5373840B4E8093FACE331C0785A7BB5399437401C32EBB9004832C060F2144F653237404259474979DE31C03822E5B8B0A735407605F2F3193832C00030F6C91FE93440127D696B914032C04833930092E13440DC1155BD77D035C0781AE5B83CE53340D47B585A62D935C0989FD00A51E533406AE14AE68DC438C0E0E3144F0DE53340B8025CF70A763CC0A861636A8B0033400A166D08F2F83CC0B06200A1037732401E0C9664A30B3DC0C0663A0E0ED63140466E5F943BDB3CC028F4FC0333633140C23A2C6194C83CC0803E7BB50B38314064247E191F5B3CC040EE5FCDF2D230403AFA218A08153CC0C085F96650583040CE6288F0A2933CC0
-np     0106000020E6100000010000000103000000010000001700000090E3F14CB507564014F5A40865E03B40AA79EEAFC20256405015C72A21723B40B62E70FE2F0B5640446BB9B676CF3A40A00514EFDA035640D821D83B246A3A402E7C8BE68ECE55406458A8A5DC653A40E8EE65A78F8155406082043588A13A40D81DFC231D505540B871F323E8B93A40DE2A707E332B55408099B27C223C3B407AAE5BD078D354403CF6413F505D3B40BAF43CCBFF7F544010880435ECEC3B404E2A0D35A9435440705A6E38856A3C40E0994ABFA8055440E0EECD6462CB3C40F4A7BE99821E5440D8337572D8BA3D402C9410D21E47544064F86A9BF82E3E40FE23D3C7A6615440A0F2302E376C3E40DC879CF7F5945440B4910435821D3E4032F63C4B93D5544058DD1F1DB7763D40B8ABBE1989F9544054B02657FA513D402420995A030F5540289D154603D73C40388E39AEBE40554040C571D58CA43C409C401E46B1745540D4AEC38D1D343C4062CAA6CE16BD55407C586E3869F93B4090E3F14CB507564014F5A40865E03B40
-nc     0106000020E6100000010000000103000000010000000D000000E8BC4CADF5B864401886CC347B1435C09C645A2133D36440745CD36E34B335C0F2D83422D7E36440FE492527F52836C06C20165DAED76440EEC539D5646636C0E4B2754912C664407A80F590342136C03E0B68152EAF6440A0A017B3FAAD35C01ADBD1D88D9A6440981CC9975A2635C0A82C8A37608564409C9EB4E9DA7134C098C9C087F280644036E8329B0B1B34C02682DF0CB88E64402C007E19B91E34C0D84B0F23A4A06440BEAFC5FAC17534C040A89E65B8AE644082F5093FCECC34C0E8BC4CADF5B864401886CC347B1435C0
-nz     0106000020E6100000010000000103000000010000001E00000000E8A8BC5E3565406229E8E814C745C0FA36C424CC5065407CCFF55C0E8445C0CEE8A8BC006465401727E8E8A14145C0CEDED1183B7265404E668FF63AE244C0A4B2D8D25B7E6540CA3C3367D8C144C04875CE7B1C836540300F3AA1617A44C05ABDAFF68D9965407EC658263A3F44C09E7C08E9A6A0654030BD8182A37544C0AE6BF757E9A76540ECC4BBEF7EAA44C0AEA2C741ABBE65400427851F9E7644C06A02F43AECC76540F227851FB1AC44C05654ACD9F3C76540FA103AA18FE244C02254ACD90BBC65408B37F9F9D81D45C01AA901AF20A7654001DD69372A7C45C05ECEC087C2966540652C851FA7AF45C0A0429B4890A265404BD1F55C3AED45C05664BDEADF896540A0ECDD11CFEE45C00223165D7E6E65400AEA40DB0A1F46C0741F79A6EC656540BC924E4FD47246C07874CEFBBB5365406D0CC6C657F446C07814A2029B3A65407681A0078A2D47C056D3FA74A22A6540AAE1CC00145247C07CE06ECF290D65402A078C595A4F47C0B8DCD19870F86440E1439630252547C06083DF0CA9D56440CA54A741261C47C00A7908E94AD06440C2E6066E25ED46C0AE6B944E7CE164406B63B852338E46C05832276EB8096540AC018C59DE0F46C0BA6C948E611E65406FFA51ECC8F745C000E8A8BC5E3565406229E8E814C745C0
-nz     0106000020E61000000100000001030000000100000024000000DA66BDAA581C664090628FF6710844C0CEC24CAD41106640F0F98B596A4D44C0447E08E9650066404C3C336712A544C0DEB77589AAE765403D4E44781AD844C0C21A3F392CE26540B6C11EB983B644C0467331C5D4D465402FF1B4B512A444C0384738BF48E76540B2A7D33AC83A44C06C106815CEDC654094F151EC57F443C0F0F71C975EBA65401CF4EE2222C143C03202F4BA45BB65400CAFAADEC39243C0585BE6C664D265401818AE7B1A6643C098B77589CAD76540EC0100348F0343C0584AD5F54DD66540863A6DD4C8B042C08213054C58C96540E4DCDD11055B42C0345BE64635CA6540254D1B1C754442C09A059171E9BA654098DBDD119D0F42C0667231C5BBA16540811A851F5A9E41C05A082E285A94654030235CC3B94341C01891B6B039A0654056DB7A48AF3941C024EAA83CA4B16540E431D09DCA8041C0A698F05D8ACA6540CE245CC3FBA141C02A28B39395D36540D5376DD4041442C03E70948EC5EA654070B81EB9C39A42C03A36276E71EB65408A50B8525A4342C0FE217966E2F96540C08788BC436642C0E0EE45F3ABFE6540A159F2BF16C742C0AAE1D1186C186640E81CE8E8CCF042C098A4C7C10A2E6640903196300AFB42C0FAB5D8D254406640D4184BB237CA42C090D1C0078C506640C6FD62FD01D942C07EE2D198CA4866408A69669A994A43C0F018A2020E3F6640BEBC1EB94A9543C04CAB01AF9F2666408EFDC5C6A89243C05641FE51141E664035618FF690B943C09CAE9EE50D21664028628FF6A1F043C0DA66BDAA581C664090628FF6710844C0
-ni     0106000020E610000001000000010300000001000000340000009A7845439A6D55C0D81F79A7482D264024D5D445BE8355C04830ED818FCE2640B649AF86A7A155C0706ABDEB1E9D2740C0167C53BEAF55C0A814CB5FB549284060730B96B8CA55C0084E9BC9A0EA284016D09A98C8EA55C0F0408AB8DFD12940F3326488ADE355C08075BDEB0C212A40F12B2ADB1CD955C0A8886B33FAD3294038BBEC1044D455C0D011F4BB28F829402162FA845EC055C02875BDEB340D2A406B02CE0B5BB855C05099DF0D27822A40800CA5EFF6AE55C098694911B4862A40FAE6E55653B055C090DE861B7B822B40CF31644853A155C090AB53E8958E2B403C3FD822FA9355C000C00130EF8A2B40CC0BA52F298655C00844504B8D132C4019DFAB69487355C0F8C39E660FAC2B404E97CAEEB66C55C010C59E668FEB2B4076268D24EC6055C058333F3A74282C401EFD3055954A55C0105127EF6FB52C40D9552321854955C0E0B5F01ED21E2D4095F993DE604355C0402D6896631A2D40D85FFA042B3B55C0A8AD197BBB942D402463977B7B3455C0184416DEA0A32D40461BB6C0922955C0004DED8167552D40B8C560EBC11C55C018383F3A443E2D40280D42269D0E55C0D035A2035E7F2D4000922D3872FE54C0B0764911B67F2D40E2D571BC3AE854C098A7DF0D99C22D409279E2F95BDF54C0B8FA972C54082E4028A23E096CC954C0E8EC2352DDFD2D40AC421250EDCE54C0C80AA93DBBCC2D40F84CE9B32FD254C0003CDC706E5A2D40F7349EF5A7CB54C038D9AF77149F2C40420C426666DA54C060CF750AAEF02B40CEAC15ED44E154C0E0A2197BA9222B40D40FDF5C57E354C0989B7C440D412A40C8AC15ADE7DF54C0280380E113BD2940C0AC15ED4ADE54C0B8EAD19992D62840A4CB9A1812E854C02068837E46A4284070B0B2230EEE54C048B63B9D47C92740850C42A6A7E954C01062837E10422740C646AF06C0F654C0602279A722BF2640F2B34F9AC5F354C07097F01EC2342640D28AF38AF5E954C0308FB6B1A5E02540909FA19248F954C048B6124124742540E63CD8E22B0C55C01824B3143F962540042CC791C71655C0805C837E9AFF254042441290132B55C000B6750A522A2640685C5DCECA3955C020F9B94E94E725405BCAFD61F56355C098BA12412A6F26409A7845439A6D55C0D81F79A7482D2640
-ne     0106000020E6100000010000000103000000010000003A000000C0D0C69A5C3C01407072F7585BE12740C07F0E7CB76A014040A88D5502402940805F0110BA62F03FD06C837E22B4294000F56FC007C7EF3F281FCB5FE7AB2A400044A513EF83DB3F5062D5363BFA2B40001C08DDDEEBD23F18BFC7C272E32C40000272E03BFED73FD874ACDA99DB2D40801E5A02A640F03FE8306896B5EF2D4000D2F39B1F2BF63F783705CDA9A52E4000DF8C2DFCFF0540400FA93DADD12E4000B30E7C271B0D406806D299E0222F400053454C91C90D40A4246E382D2F3040A0C7D0EDB1141140541D97942BDA3040400FB268D61111408CD5DE75BF27334020FF55D9D3B51640587B4FB3E8993340309E963E52252140085BF323CF903540B04B5934BFFF274054B5AB42BF783740106E077CB0292B40FCD86A9B5E0A37406002CA71A9492C40ACBE1F1DC57D364080F7B860E0B32D40D00E3B05EADC3640C0A700429B312E400C194C16FB4E354060C6E8F630F12E4080B1E5AF670C3540A0AE9D786BF92E40400C7572FCBA34406060E55976CE2F40806367FE3A63344010CF2264195F2F40C4BDF6C009F53340206CF66AD3992E40D07A89208EED3140E09E299ED67E2E40E0A41F1D97A03040A030606EC4F12B404071D536655E2F4040CD3375AE142B40602191F2F8BB2C408030606ED4E92B40E813BA4E4EFE2B4070BC852DB1E82B4028FDA83DF7B42A4020D3963E0A312D40A8448AB82DA92A40E06B30D8D7FD2C4090519BC902B8294040AAD7E5536D2C40A8EA3463A49A294060AD741CD85C2C40C0FF7FE1A1F7284020D86DE29EFD2B40F865E64752EC2840C0319ADB2CA32A40D816F4BBDA1C2B4000E8B860002B2A40A88E6B333A312B40302C3712A99A2840982DDC700A132A40C017C3373C0E2740306A491170A82A40C0CE7EF3ABFA2540301C2E294FC62A4080E766A8ED6625409828A2036C7E2A404097E8F6C83A244000E8FAF5F38D2A4070F84E5DC30C234090FFE2AAC3B3294090537B56A5072240C80280E13FA72940E0A207BEFB371F4068B5C7C2E2AF2A40E0522643AF521D40B8C7750A32322A4080F4D0ED21481B4010FBA83DED3A2A40602BDBC41DC81940E84CC4254CFC2A40A0CE5C13B1C5154008F434635ABB2B40401B890C2F79114050AB53E8B57E2B40403C4865896E10400043ED81FB0F2B40C032E9BCFEBC0F402037B31487E92940003D9704F0710D40A044C425161B2940C063F393B2E30C404051726D015227404075EC5905CA0640C0937C44A578284040C1DEE5DAEB034010E9D19952772840C0D0C69A5C3C01407072F7585BE12740
-ng     0106000020E6100000010000000103000000010000003A00000000150EB625002140C066EEB182161340208F93E332D91D40A03058B5FFA51140009D412B94541C4050ED1371D7DB1140400A1C6CD3CA1A4070975B525EF6104080EEA791BA971740B03BCC8FC00C1140A06D301A83731540B0803930488D1340E0CAF9496122144000502F597C7216400069A4F46B4D1140302F36932515194000F552C0EB970C409054F5EB7F08194080C8DEE59A88054000CC6C63070919400064787F14FE0540C04ED3C9A17B1F400059A1DB53CA054088D2A83D8103214040A78256684C0740008D2A8C74462240C0A7ABB247C3094048C6FAF567E32240C00A64D1BCA40D4018BE861B5D2024404052E282F1CC0C40A8F3B94E14AA244040072A647C600E40783BFE9230782540409C6034E6930C4030F2E2AAE7A72640C063F393B2E30C404051726D01522740003D9704F0710D40A044C425161B2940C032E9BCFEBC0F402037B31487E92940403C4865896E10400043ED81FB0F2B40401B890C2F79114050AB53E8B57E2B40A0CE5C13B1C5154008F434635ABB2B40602BDBC41DC81940E84CC4254CFC2A4080F4D0ED21481B4010FBA83DED3A2A40E0522643AF521D40B8C7750A32322A40E0A207BEFB371F4068B5C7C2E2AF2A4090537B56A5072240C80280E13FA7294070F84E5DC30C234090FFE2AAC3B329404097E8F6C83A244000E8FAF5F38D2A4080E766A8ED6625409828A2036C7E2A40C0CE7EF3ABFA2540301C2E294FC62A40C017C3373C0E2740306A491170A82A40302C3712A99A2840982DDC700A132A4000E8B860002B2A40A88E6B333A312B40C0319ADB2CA32A40D816F4BBDA1C2B4020D86DE29EFD2B40F865E64752EC284060AD741CD85C2C40C0FF7FE1A1F72840906C30D883272D40C884086AB42B284040DC6DE2B6EF2C4068B63B9D3BCF274040B6AE89ACD42C4030D2C0880D252740C00067A859252B40184D0FA4DD9825403091C6D40A9E2A40D09C64F91A522440C05C93A1CF552A4070CB972C0048234060D20A1933E9294078C9972CE6D52240C0F22C3BE181294028CAD1997E6F2140601A260110702840808C64F9949C2040C071188DBD202840C08006FD00331F40F0F403DFB9AD2740208EB44492961D4060384823D67D2740001DB1A7EFEC1B4040E7C971191E264070A6739DE4931A4060CA7EF3A7FE2440205F58B5AF381C4050341FC78E3C24403017773AB3271C406084741CA00B234020B484AE5DD019401052DE1F617722401062CC8F28C71940B0F14E5DDB83214070E08E852DEB154000150EB625002140C066EEB182161340
-no     0106000020E61000000100000001030000000100000032000000F0830042030E264042BBB54D966D4D40D073299E8EB62440F0110BA322BC4D406051188D95C3204098423ED619284D40608B301AEB311C40B8B27BE0180A4D40604D71C1D0A91640A48048AD484B4D40405882D2A13B1540B60497C8E4D44D40806ACD50E3F71340DEB7DEA949FC4E40A0BB745ECFA61740784FDB0CA74E4F404045A4B2581B21409ACF8CF11CBA4F40D089D7E52F0E25406B7D74401B1F504040EF2C3B79B72840C785AE6D4D785040407F41E9B4852D40DF4D418DE1F35040B00E82EF986F3040CF36F68E0B2451408073747B1C2F334055F74E0151745140C8B344E5DF603540DBCEF2B154905140489CBFF913063740999BBFBEEE8C5140B087D744EA8B38401FD38FA8F3C15140A0445993BB5E3A4021476AE91EBF51404008154F612A3C40BFADD0CFDECB514090D80A781D4B3F40AF05C3DB0A9D514068BE5C3064013E404DBA44AAEB8B5140F044AB4BE0193F4055D8C995B763514048A7AEE84A663D401D456AE90A4A514050A011B288973C404FC31B4E254451407820C396FC033D40435A18310E7151405069DE7E77BB3B40D9197123828A5140E8657BB5FB2D3A406F42CDB2D174514048EC033E70B0394085591831E5455140B8BB0A7855BC3840634BA45692295140D0200E157CA937406941CD320A39514030A0F966325B3640A5BF7E17DF3551400857B522B43E35402D4CA456B5575140702B599345A534408DF64EC1CC465140F8CF66077806344023CA553B2B44514060434148E9E03340416DC6780F1A514028E988296EFE31401718712350245140E0FFD3A7ABBA31405F2FBCE1AC005140D8F4993AD5C43040AF4AA456E40051404047EF8FD41B304065FB886E5BD35040204F0EB681372E404F1CAB50688C5040F01B4F5D831C2B404F406AA95E32504060C65CD1FDD62B40B13593C5811C50404089EF30D2242B40DF6B63AF240350401032D448ED282940D7F788EE3C0450400011EC9373DC27402A13D1B56C904F40D05530D8EFFB27404E21E24672E64E4080F866A825432940DE67C3C193A54E40E073188DC9992840F40F6E6C180F4E4020697B56C1EF264048B2DEA958B74D40F0830042030E264042BBB54D966D4D40
-om     0106000020E610000001000000010300000001000000290000000C66FBE4CB324C4080EB413FBBEC3840B411A68F2D6C4C4024597F49DE3D38404C3F9F55A4B34C40086C2D91EBE03740B0D3FE8187114D407808646178BF3740B0B916CD565D4D4048DB6A9BCF903740C0685EAE1A974D40FCA8D49E0DFE364044BB16CD9CB94D40D025868307A9364094A768856EE74D40BC3934CB9A88364020CD27DE2FE74D40E894C38D7E4F3640F8D99BB899B84D40788B8920ECB6354008DD38EF25A44D40705AF323136F3540409B91E1396E4D40A82CFA5D311D354078713552763E4D401C043B05D26D34401C443C8C64044D40CC7BB27C3F7B344014E40F93C6E94C4078993768353E3440A435C8B137D54C40DCCD07D26ABC3340F40C6C22F4E44C4060427F494C11334068B716CDE1D84C400C75B27CD8F132405CDF725CFC9D4C40E8B5598AAFF23240DC58870A094E4C404CEEC62A03933240A01E1A6A8F414C40706A780F4D163240201E1A6A4A244C402C77ECE945E031404C42D9C2ABD44B4054FCD73B56E2314040ABDC5F8DA24B409827D101DFA1314038D438EF2FA34B40A42C0B6F753A3140300DA68F3F654B407402AFDF60F33040742054D79F1E4B407462DBD8830B314028181A6A06C94A4080E9636129B53040D4FB31B5E58D4A40C0377F49ABA63040A0494D9D1E644A40A841B9B6885931403463355200004A4004316E3800003340144BB066FF7F4B409CCB6A9BFFFF3340A4972E1855D54B40E04BE21200003640DC03CFEBAA9A4B40A0BF1F1D55B5364024716FBF039E4B40E80F3B056A1C37400042D9C24EC34B40BCAE71D55D8637400C197D33AAC34B40F8ED7BAC00EF3740741D1A6A98FD4B4038B8AB426B21384038DC725CEDE64B402871CAC704453840B4F75A1170F14B4064A0C38DBBEB38400C66FBE4CB324C4080EB413FBBEC3840
-om     0106000020E610000001000000010300000001000000060000007CC18AA710094C40F0CA82E6320E3A4010B17996562E4C40480D2AF45B653A40B0A305BC2A3E4C404C73905A224F3A403C992E181A324C402C56A8A55FE53940788480D069214C402C227572F0B639407CC18AA710094C40F0CA82E6320E3A40
-pk     0106000020E61000000100000001030000000100000042000000884292201DCA52402299292807914240964D69C466F952400E244FE759554240AC4392A0570C53400C6A30E2FEF2414026F03CCB9875534046EE1BB43BBF4140FA068849CA37534074268954A7534140286CEEAF73F05240B485B54DA14041402E4F067B5F8F5240DE59BC87DB5F41406AE16527FF6F524024C65C5BAA2841404C934ABFAC865240A801673282B84040462DE458E69C5240B488EF3AE861404002D254968DD0524044956395B322404086AB95BDFA995240740208D250B13F40FE85D6E4F79A52407084F323D5FA3E40CA62B442D75C52408431D83BF6F93D407C2BE458B83452404837AFDF2AF63C402A311E46C5F1514094E7302EC6E93B404A9684AC74A7514080E493F73BFD3B40509F5BD0EB60514074A28920E3F03A401E4EA3B1CF8A51404033E94CEB7D3A40A4B409981A925140C0AAFDFAE3B839409E44CC8D0FB65140A86756ED1037394022C37D72C4C2514084375D27455B3840E8F3B025ED355140F4D7302EF05B384048DB65274E0B514010ACD49E24B137408E88AD0865DC5040A0871546E1F137406A1EAAEB4EC95040207DA16BE2A938405A4D4068DC9750404CEAA408D66C394006305833F221504000722D91AE3C394010F64900EE734F40A0F37BACE93739405CBC7996A9BF4E40AC9D265707143940C8B9DC5FE5EF4E403C7D67FE6E3D3A40288D466387A84F406CD11F1DACC13A408CEC725CF09D4F40F0E7CD6490373B4054F2ACC9B1604F4060A4892001613B406C4E3C8C295D4F409C374C1678423C40C0EC0F93CCE24E40CCE0598A07B33C40CCDAFE8145AF4E4008438683A34D3D4094B7DC5FE76F4E403C5DD10149D43D40981032B561464F4058EA93F78D513D40A4B6A2F26EC64F40F813F086E4773D4044DA02DE78095040D07956ED3F573D40C858B4426D1650409C1EC72A5E8F3D40FAF987C9FF425040E4C871D5E0783D408680739B2C9650408CD1AB4250E33D40A8CBF1CC6998504020791C8028BD3E402AE43CCB16BC5040303E12A90E4E3F40CEEB76B8BCEB5040D44B86839B4D3F40201FAA6BBBF25040AC8356ED3A953F40A02D1EC6A423514034ADB27C9BB63F406E9484AC4E3B51406C80B9B6C49E3F40088E4A3F5654514080252AF4C2E63F4096C41A29CD505140B2E71BB43F40404002EE7638FA6B51409CE57EFD808D4040764769C4B5945140AC349A65E4AD404014BB43058E7B5140889C004C930241402A93E7756FB85140FE2489D492FE404048FDEA9208CA514096F25521A92C4140887B9C775CC751405EE24410D75D4140DA0EFCA33CE75140FE64932B9C93414080A15BD0EBDF5140E09529A845D341403CA15B50CAD05140C85CBC878509424036F7B0A529F65140E6B94BCA454142400869EEAFE13A5240C220B230295C4240944B69C452845240D48AB5CD076B4240B20E5F6DDBA4524042C522EEAA824240884292201DCA52402299292807914240
-pa     0106000020E61000000100000001030000000100000034000000724A86AA6B7853C0802B884B24E51C405B704583C18D53C0D074CC8F8C0C1E404CF2935E779B53C0D04C5A22A51A20406ABBC374A78B53C020DB7FE16BA3204000D7ABA9DE9B53C0C0B2235281C62040C499A1D2D0A753C0C000A203AE6F2140F40ADF1CB3C753C0605F31C6FFFD2140D6714543B4E353C080A6124160DD2140DB3E1250ADF053C05858948F452B21400C9804DC860A54C058C33463A8AA204050D2717C7D1854C0D82C3800C9982040720CDF9CC31E54C0A0279BC93C2E20406ABDC3743C0054C0100F6629AA301E40FC0108F9B41154C0B0EA4307D4AD1D40A016B640F41A54C000D732F616161D40C687F3CABA3854C0C080DDA0D5E11C401270A88CCF4354C0C00255188D451F4044E4824D244C54C04077CC8F74971E4075EBBCBA3F6154C08048369391D31E406AA778F6296E54C090BAFAF5C9372040FC2C6488698854C0100DB314CD592040DB29C711059954C020E55685B09520409FA878367CB454C048DE1C18EC942040CACA9A1876B654C060DC1C18CC2520409CAFB263CFBD54C0180A16DE367320400B61977B71BA54C0D0D1A83DD7D82040A2A878F61AB554C088FC04CDA94021408A86561498B754C09001A203529D2140A4CA9A1807AE54C0484A837EF6D921406E8D908156BB54C048CDD1990E2622401ED5717CB4BB54C0885220B520F42240FC5223E1F4A254C0A06E086ADC21234094B5ECD0F98B54C0285020B5366A224014CA9A18498D54C0A0A3750ABCFD21400ECD378FBF7354C070D6A83DB7E6214031D70EB3B46D54C0C8AAAF775C1022402BB889471D5C54C068757C448D92214096E0E596A03C54C0285E31C68DB72140F68356D4662154C0080BDC70DE382240DEE282CD88FA53C0F091C7C222A0224088B926FEB0E453C090F790F22439234056BCC3345BC153C020A5D8D3191B2340867B1CA7BDC353C0A0339BC9BCE822402685F38A0EA053C0E8CC346346D722401625C751948353C088ED5685D67E224036397559B06E53C0282F9BC9C8E421409CA278769D5653C050C634634C572140179504DC615E53C0B0D2A83D6F0C21406F2E9E35864F53C0804C3693B9BD1F40A8CBD445975B53C0D06CF5EB5F8D1E40928ECAEE377053C030F3E03DE0D61E40724A86AA6B7853C0802B884B24E51C40
-pg     0106000020E6100000010000000103000000010000002200000024F0F3BA8BA0614068763470A36F17C008083FB901A0614010CC20FF1BCD04C0A6B3E92387D76140F01AF1682F500AC0AAB4E9E3AF1262404028B7FB2EE40EC0FE400FE3BD28624098771C25B57E11C0DEA03B9C8D3A6240C0383BAA888113C0A68553E76B3F624020433BAAC8DC15C060F05604BD74624020705DCCAA5518C07E5320F4837C62408050013DC0741AC03EFA2DA8115F6240B06DE9F1F9E21AC0248D8DD423666240B0BD2D36568D1DC0BC754256B582624074888758951620C0581D50CA7D976240B4E33F77963522C0845EF797D1A962405C6F6536932422C0D650833D88A862407843CF39600723C0A47D7C433DC162407C3021F25E5E23C00CDDA83CA4B76240D0DCCB9CF1BE23C0C69C01EFA6D962403028AD175E9624C0D284B63019D66240C89E8758592A25C0F6D2D198E8C06240649F8758114E25C0389C01AF08B962407C2C4A4E5AC924C04E5EF7578A9D6240DC574314D58F24C0666B6B72377D62406497EA21C94224C0A078DF8C556462409C98248F21FC22C0CC8C8D142C5262402023E78496E221C0BCF92D288D41624008B5801E842220C0160A3F39D017624010E44F5840851EC024F590F1B4FC6140F029F7654CA91FC08E4D83FD29E961401C059C06B17D20C0364AE6C63EED61402C08FFCF54F721C01C9F3B1C1CD461409C0E9C0655A722C0DEAF4C2D2FC261400825E784B65122C07C45495015A1614064436C705C3C22C024F0F3BA8BA0614068763470A36F17C0
-pg     0106000020E6100000010000000103000000010000000E0000001EF356047B1463402084802BA5470DC0A6AB75C9A3206340A05FEA2E12D70FC02C86B6307B246340E861D1A6FBFF11C0C8B54C2D791A634068D0D443D21013C0040BA20270146340D8CC0EB15AB410C056E5E229FE0C6340707EA98764510EC02459BDEA80FE6240B00509B44DB20BC06EF256044CEC6240C0CDAC248B4808C0EE09A2822FD562405015654390EE05C0106D6B3214DE6240701AD91D010004C0B2C2C0075CEF6240309FEDCB683D06C06A4B49903DFA6240102CD91DF1FF07C086C65DFEAD07634010BD61A689EB09C01EF356047B1463402084802BA5470DC0
-pg     0106000020E61000000100000001030000000100000016000000F65183FDA4E96240C8BD15EBE75C17C0B228276E24D86240A02142E4C55518C0ACCF34E2B7C76240A0DAC332614519C082F15604B8B66240B0880B141C4419C05A6F08697B9C624090E6D443AA1A18C028F4F3BA348A6240E8EBABE712FD16C0A294C7C1DB8C62402868FA0243C015C074EA1C978CA9624010C04F58C05516C0D05EF7D70EBB624040E40EB1A20516C0EE359B48E1BF6240F8D4D443BA1A14C0905B5AE178C46240E8C66069610114C07A3938BF94C76240C01E7C51FE2016C02A6631C5D6D96240D0BD4F58C8D215C07E5FF797DEE2624020706EDD6B7414C05A85B670BBF4624018117C513E0713C0DCE4E22936F1624080FCA4ADD5AB10C020D4D19860046340606945815C9810C06C6ACEFBD60A634070C8D4437A4011C05CF6F3BA320A6340E8F0592F7C7813C0824B491073FF624048CF606989E915C04222ED00B1EE6240B05C8628BA3D16C0F65183FDA4E96240C8BD15EBE75C17C0
-pg     0106000020E6100000010000000103000000010000000B0000008461F7D751586340C081E2B7245C15C0F642726C03626340E00ACE09654416C0A4460F2387716340A04C9E7378CD18C09E65948EA3806340F8E16069F9281AC05ACF972B297C634058246B40AD471BC082EA7F2033736340E0F2370D12AE1BC082F4560458656340E87E9739CB241AC096AC75895557634030EB0EB1729A17C0DC75A59F73506340F0FF30D3748E14C0ECD86E4FE15463403861FA02732B14C08461F7D751586340C081E2B7245C15C0
-py     0106000020E6100000010000000103000000010000002100000062C5C4F3AF574FC0041E2C61C03F36C022FB945D45254FC07E711EED370D35C088D5D5040B224FC01CD2E71C848334C0B4417658A6E44EC07E75F5903CA233C0C0B88A8693054EC018EF093FBE5733C0B21954B6B98E4DC04EAE62315E5B33C0202C02FE7B174DC02E84696B4FDE33C0BE3976584C154DC03093DD453C2D34C07E9FDC3E72EF4CC0FC87696B91BB34C036FF08B8F4F74CC080B328C4151736C046C6384ED5704CC0D02BA03B3B4836C024BB61AA953C4CC07CB328C4171636C0E226027E23E64BC0401455BD5F5B36C03A1C2BDA2ACE4BC07E0444ACD6A736C07AF66B0142C24BC0B064D36E6E9237C01A7180AF4BB34BC0DC7A81B6F9F437C0E2091A4992834BC036D71079530038C0A4057D1290534BC06C28C997EED637C0E03EEAB27F254BC09CF2F82D610538C0D02DD9A190254BC0F8801EED1F9238C048279FB4E7364BC0CA5388F0842939C0D6AC8A8609504BC0D4A4A3D83FBD39C080C8723BF7644BC09CC0EE562D9F3AC03A862E7711D94BC02083474949633BC058B4273D4C3E4CC02C76D36E6A8C3BC0AE94059B0CCE4CC04608339B59653BC034B2ED4F204F4DC0E80D6D08AC1F3BC0663FB0C51BD14CC06C3AA03B899A39C0FE202BDA7BE34CC058167E198F2939C064454DFC4F674DC0AE88585A7EC538C0DADAAC28B5034EC038B5EE56650838C0D2D5723B5C6C4EC030252C6176E137C062C5C4F3AF574FC0041E2C61C03F36C0
-pe     0106000020E6100000010000000103000000010000004C000000B60AB680C96551C0F41DDAA87B9431C0CC3A4CBDF07651C0227292C7BA1732C0266BE239D89751C06495B4E9145932C03932751904D851C0CE1EDAA817C631C0F2057C1392DD51C0DEFAB7860D5D31C0AC2D3B2C735C52C05671CC34FF5B30C064882D7839CF52C0D06BF89507882EC0C9AEECD0960053C048E10C446F4C2DC018F0931E1A1B53C0E8F157C278A52BC09BD4AB69971053C0A86D09A7F0112BC0A2202ADBCB4653C050953CDA077228C058F530D5E58553C0F8FF508863C124C016787F705DC253C08C39CF39ECC520C0DC309EF589DC53C0382AF7652CB91FC0DB3E1250ADF053C0C86B124E01C71CC04C3C7519662254C0E0F9ABE7AA2A1AC0857A7FF0FF4F54C060297C511E8C18C064E71F44493B54C05051124E21C316C0CAC5FDE14C5A54C050D3717A72F212C01AD371FC604654C068674581442510C0E47C1C275D1354C0907E1D62253D0BC0B60842E6C60B54C0800BCF46BD910EC065353BEC081E54C098FAA4ADB53C10C0B0ED59B14D1C54C0A8377517F1B311C0385023A1D90154C0A0FFA4AD656211C04164D1A8FFE753C0903B124E19D111C08ABCC37423CD53C0208CF3C825D613C0D60D7C13F4A853C0680D7C51EE3012C082889001D89C53C020DA9B131AFC0EC0765B973BA07553C040148E9F2F0608C0356BA84CAA2853C0C032876592DE04C0912C9E35E1E252C000789D8D5AFCF8BFE1391250F5CE52C000808CD3532AEDBF42A7B2E3E2D752C000CCA7C5C675C3BFB6FFA4EFD2C652C000488D050A4AADBFEE8ACA2E439C52C000B1F2397AFCE0BFD194A152D58752C0C04963209A0BF0BF0A505D4E356A52C08047B5D8F82AF4BF644F5D4E814452C0E0D23110BD7802C0A8FCA4AFD91452C0207BA24D477903C0F113F0AD95F151C070A872B7BA5B01C0702B3B2C79DA51C030F653320FBE02C0CAC771FC0FB451C0C0EFB6FB0E0E02C0ACE5F6A70D8351C0D0FC19C51ECD05C053721CE754AC51C060A268E066F10DC0D0DB1F04389951C0A0E072B7FA210EC01D1CC751317951C0A0A215EB573111C0E0AF267EDDB251C0D0DB828B4B0111C0DAB6602B72BB51C088525DCC3A9B11C01D4723E1E5EF51C0C0F9CD093D6012C0C84BC057153952C0509F67A3261915C028CA717CBA3D52C0B066C0950AF716C0A69ADBBF0F4E52C02088A84A545B18C006AF8987AE4752C0C016949C0C851AC00C3F4CFD5D6E52C0B096A84AA4AC1BC0902A9E354C6E52C06045B6BE2E5D1DC05C79B9DD2E7F52C050CA04DA66181EC0D3CA713C8C6452C08847431451D920C0E8AE8907FC4052C024F45088CF1022C03BFA0779824E52C0F031BE28A7EC22C0AA5597BB082452C054ADD2D6560A23C08399DB3FD50B52C090D7912F711B24C01EF807B95AD351C078823CDAAB2824C03E317559D79E51C0C8CB57C2F0FA22C0614286AA1DA351C048FB79E4AE0426C0CC933E09008651C0D821393D793F26C08A22013FE66151C000681AB849E725C04F4086AA902A51C0604684BB621F29C074F50739533851C05072E04AA9CC29C063701C67783B51C0F45221F292342BC0EABE378FBA3C51C01CA2026D43E82CC05FF9A4EFBA5551C08843393D09E82DC01CE8931E434A51C074F1E3E7DFA52EC0C98867E5F15851C0F07C6C70FC512FC0A24086AA6A3D51C07EFA54BD2D8030C0B60AB680C96551C0F41DDAA87B9431C0
-ph     0106000020E61000000100000001030000000100000021000000966F58B390955E40B478ECE99139324080BAD664278B5E4040A3E5AF6ECF3140289C517900A15E40F04356EDEF1731400E324EDC25905E40507AC38D2F433040080555166B6A5E4058C58D55AEDC2F406E64810F53605E40E091948FE73F2E40BE759220A56E5E40102191F220A82C4008F8E03B92905E4020946B33B86F2C40FC6F58B3E1AC5E4018845A224FAC2C404C6047A2D1FC5E40F063726D73902B403C37EB12BAF65E40707A5A22BD792A4024FAE03B9A0B5F40B0A453E8BBFE29403C2D146FF4045F4040D72352C71229408C25DA0113D35E40B0C3D8D3170E2A4092C5AD086FBB5E400010BA4E181B2B406E84067BF7AA5E40C84627EF255F2A40406F58B337825E40F0C63B9DA7912B400A9EEEAF16485E40E80980E1FB452B4000EC09983B285E40383879A71EB72B40E2F243057B2B5E4028BA2A8CC28A2C4060B29CF7793F5E402078E647000D2D40808CDD9E5F2C5E4000BB8D556A832D40B0E132F41A245E4038E4861BE5CA2C404CA08BE681045E40583405CD15F12D40A051707EF0FA5D4040E64CAE0CD02E4088DD95BD8FF85D40880D23BA1B5D304024D75BD055125E4064270B6FDD083040C8C2AD88F6185E406CED63615D993140DE7E69C4D02D5E409C2497945681324048D85B5090545E4064F163610A81324082FE1AA9017C5E40D09A0E0CF33732405A4D3691BE8F5E4090D2DE759C7A3240966F58B390955E40B478ECE991393240
-ph     0106000020E610000001000000010300000001000000090000000679CC0D4BA05D4018B4E9E4FCA12240B8D35B50274B5D40A0EC90F228BC2040F01B3DCB866A5D4078D7A83D3F2222402283A331C3985D40C8F4F3BB765E234084A2289D30BF5D40B064F758A9C02440EE46995ABCE05D40006A5A2245BD264008FC1AA923EC5D4030F21C18CC1B2540182BB1A5E2C15D40507942D7DE0124400679CC0D4BA05D4018B4E9E4FCA12240
-ph     0106000020E6100000010000000103000000010000001B0000003C44C2B61D985F4010C4346354D4204030E832F49F9E5F4050BD10D45C001F40741B662765A25F40007606FDECC11C4074475FED978C5F40F09F739DE0181940205870FE35755F40606358B5C32C1D40604D995A49575F4080A5D6665C251B40948E40E8B86B5F4030A64A41D9321840E4FE7D7260595F4070B2F888F2521640743E2500110E5F4010FA02603AA51840D48506FB13FC5E40A07006FD608A1B400C011B29980F5F4010274EDE43711D40502977B80DE75E4080B4393088551F40C8927AD5F2D25E4000062CBCEDAC1D4050065516D5B45E40F04A70005AD41D403AC110D278855E40504B47A402991B4086D5BE19E07A5E40A0D532F6BAC41C40589FEEAFFD935E4048832A8CE611204000C94A3F50BC5E40D0F904CDE9A12040086A1E4636DF5E4018C3972CD26221409C9D5179D5F55E40B85831C60B7B20409086067B7E265F4068D9E2AA3F072140908D4068EF305F40482F9BC9BAEB2140188469442B5E5F4098DDE2AA57F92140004AFC23605A5F4050D3D1994A852340E8E732F4408E5F40E08A8D5578922240CC17C9F09F935F4050646B33A29021403C44C2B61D985F4010C4346354D42040
-pl     0106000020E6100000010000000103000000010000002D000000E0AD3AAFB3082E404EF5337FA78D494000C9BF9AD5362D40F063D45262DF4940B02C89CABB5E2D40DE5D9A65830B4A40003F37120DE02C4024AA1817FB4F4A40C06493A127262C40A4C99D029A7D4A405089B5C3E5B42C404CDBAE13C49F4A4070E34486473D2C4078508954E6E04A40508DB5C3159B2D408654268B7D064B40A88C33D40C5D3040C85FFD2EAF414B4040A344E5719F3140AC1F5621FF6C4B40C0F2C296F09E32403237A19F5F574B4068E54EBC3DB23240ACD3D7EF27384B4038497BB51FA93340541BB9EA89364B407855B5226AE434407A811FD100284B40E84F414829BB364020B8EFBAEC294B40D8FCEBF2753E3740B084BC873B1C4B40583BF6C9EF7B37401ACF3AB9CCF44A405008C3960C873740A6B98CF12CBC4A409043303710CE3740CA7E1F517C8B4A40D024AB4B98CC3740F0B78CF175584A40E8DD660712333740D20CE246553E4A40B045CD6D0C823740FA04A8D906034A40A0C0E11BEE863740EEF296C80ACA494080331F26AD073840B03878C34A5A4940B0DDC9D039EC3740EADBE88062364940F018D4A72F6D37407845EC1D7D274940D82C1F26B98436407010B9EA06BD4840D0D18F63C3C63640D43BB2B08183484060BCE11BE28E36405468AB76F98A484068EB144F999B35406239157A2CBC4840F8A3D00A51E33440D0F4D03515AA484080D8A074746A34407CCF11DD39B74840C07911B234D333406A3578C3CA9B4840D82F30371A5233405E2F3E5629C94840E8A844E5D9E832406EBE00CCC9B74840D804D4A767DA32402081F67484BF48405828930096643240088930628BFE484080C5660742A631404671E5E34606494060A6E11BF88D314078C000CC5A2E494018FCD3A767DE3040B086932BAB3C4940281A59932FB83040BCBC63959D1B4940880D82EF1E2D3040CEF333FF1736494020296AA4163D304050A9B54D4F5949404082A4B260FB2E40227DBC0772644940E0AD3AAFB3082E404EF5337FA78D4940
-pt     0106000020E6100000010000000103000000010000002100000098DA479FD31122C0A8517189B6F04440E0B18846095821C0AEC9E8803D11454010DE1E43188720C04C489A65E6234540D0047BD2BE0620C0FA3CC3C13BE54440D0988F3EA7B01DC020FC1BB462E544402014412357011DC0F8BE115D8CF544407006A4ECA6AC1AC0404ED4D212F14440D0E21E016D8E19C040358954DFB04440E07644C08D671BC0AE6EF6F4378E444070F5F5A4C1741BC0D2AD9D025A2A4440B05E5C0B0C1B1CC02EF57E7D9E174440F0E7E49330441CC0842078431FDB4340003E007C99FE1DC0A6D896C895D04340D0DA70B963641CC092E16D6CD983434060C48804127F1DC07E6F3062C02F4340309C66E2FB1D1CC0E4E20AA3B20943406031C60E81AA1CC044A89D02E6E6424090564BFAFE251EC0AA143E56E6B6424060FC586E9DD01DC0688BB54D848C4240400A93DB256C1FC01C6C30624C6B424088E2BB7900C420C062958CF14B7D424028CF70FB36CC21C058C8BF24356F4240406E4402017E21C068BC4B4A5FD342406861D02714AE21C0561D784314224340104AE8722E9322C022B711DDE22D4340904F85A99A0D23C062BBAE13645E4340F05F96BADBE422C02CAF3A392FB2434028185276BB1822C0A25AE5E3A6E04340F01AEFAC67F421C094CFBF2464144440982D9DF4908921C07830EC9D5C614440F0892CB7EA9421C0A43BC34198974440202C00BE48FB21C08EC1AE1390C5444098DA479FD31122C0A8517189B6F04440
-qa     0106000020E610000001000000010300000001000000090000008015B7A0B1674940B8139ECE36C13840CC52C177385F4940783C5D27807B394004C4FE81B5814940A07F0435CA013A40E40843C6AAA44940BCF0413F551D3A401CCC38EF66CB49400C3723BA15CD3940FCD2725CA8CD4940B8DB302E363739406887F4AADEB14940203CFA5D9CA038402816B7A0638E494024914FB36B8E38408015B7A0B1674940B8139ECE36C13840
-ro     0106000020E6100000010000000103000000010000002C00000088D18F63E5B53640F2A9EFBAEBF04740D8D62C9A69243740323D4FE7540C484088028929CEC23740F09F181728FE474020351F26ED6638403481932BAEFD474030D455F6C6DD3840D879593E67DE474000F13DAB2E3539407AF80A230EF24740C87CC63329F23940BE6CE5E35AFE474060CCE11B8C323A40662C3ED6451C4840305A07DB8C9E3A401E4BC3C1401C4840B01A60CD96EC3A40E0105621C70F4840B8007818DF3B3B403A1056A1D3E9474040249A3A198D3B403E9B7BE0DAB34740901CC396C6203C40F436B2B0BD674740404282EFF6283C40C2C8115D8F2F474068B2BFF9EF0D3C40281D6732E8F8464030168929CA3B3C4004FA441080BE464008F6660706AE3C405418CA7BEAA64640A01D266054263D40C86348AD82BB4640004C1F26719A3D40703AEC1D8BA54640184C1F2665A03D400C33B2B08784464048023EAB40243D40F0C174A6FC684640B8939DD77DD63C40CE6C1FD1F9744640E05BCD6DDE8E3C40BE66821A8EDA4540684182EF58F83B40A074F6F4FEE7454090CD44E50D3E3B407AE9D0B586164640F0ED033EAE103A4010344F67C4F845408044F6C9BB9139405A74F6F41ED8454028C3E11BC61938407C112DC5DADE4540409A22C31155374080590E40D1F24540E8C41B89E0F1364016B200CC71E9454078CA55F63AA836408E75F6F4111E464020A4969D58793640C0DFF991613446402842CD6DAAB43640F2E633FFFB494640E881747B827536409CB06315EC5946408880747B24253640E0A58CF13C3D4640D021E5B8E08F35403CC511DD6C624640E8FB2560C87B3540AAB1639530974640A0C255F6D2DF34407CCD4BCA4BB5464010B144E51DC3344062017F7D06DE4640F0B81B895E383440DC384FE75010474098DE3DAB9E053540F2E3F99175284740104B414863A03540404FFD2E437F4740A0FE25608A193640A6057F7D12D6474088D18F63E5B53640F2A9EFBAEBF04740
-ru     0106000020E610000001000000010300000001000000780100003890392E14B555402C3A157AD0E9484098BECF2AA4625540B0A31897AFD84840AE80C55365475540B8EF96C8030F494084195FEDA51A5540B4B28CF1DB274940E030AAEBD8FB5440A0C100CCD2714940B033472283D854400225CAFBDA88494066B0F8068B7C54404C657109F667494064FD136F6124544024C69D02B5B14940948F739B4602544056B72928B06E49409E3E58334273534056C0C6DEC3B34A40A67A628A9C215340EA3CDB0CA8164B40000788C907395340DAE4E880C93E4B4076D4F14CA19852406C53268BFFC54A40B88B10523E5B5240407C821AB2BE4A401EA7F8868B6052403EAD18178F044B40DA645179580E52407288593E36304B406648694487CB5140DA137F7D0F114B4036A4F88660B75140945389D4B9954B405C27E4D85C445140CCAC7BE04FB14B407671628AD20A51409ACA00CC357C4B4090AF0918AE6A50401C821F51F64C4B4006AF09186D4B5040E4393E56572D4B4078C6503AE2B74E402A10E246CD004B405006F847317D4E400AE3E8801ED54A40C4E5D52599D94E40DA990786707D4A40CCA22E18B85E4E402CB15284285C4A4074AD05BCB0764E40863C784349394A40F4E1D525D8FB4D402420900EEFFA4940443EC8B143CB4E407625CA7BE6A2494024DE9BB830AB4E4090E322EE4766494028C3503A66F74D400CAD5204CD6B4940CCA3CB4E36D24D40EC34DB0CD1454940FCA0CB4E802E4D4002C200CC2588494038BC503A94634C40AAA6181793854940900132B5C4DB4B40DA2A0469944F49406CD9725C35444B405C62D4D25B834940A0484D9D132A4A4074C300CCFCDB4940E863D28821624940A2CDD76FACD8494014E120A4E7594840DC01A8D9744D4940DCF131B5F6494840A02CA11FF8EF4840449ADC5F55C64740D41C908E333A49407487CB4E346047400E8BCD9891AD48409C731D079785474038C19D0276934840D0E9947EB43B4740BAB8639573324840ACEB947E59A84740246CE5E3A0DB47407CE65A11540748409AD24B4A33DF474040771D07ED5848406E4FFD2EAE894740B85B3552EF4B4840E24A60F8CF47474034892E18F38C48407C73BC871D33474018A079969D52484016273ED634E74640D8188E4483D6474016B600CC1CD24640ACB3C4144D57474064132DC5FA4D464038DB836DA3CB47403C001CB480D445404C5935520BBF47402865821A487E4540A4E75A11CC4A48408051710989E74440F4B9614B5FFE4740287630E2F1B344409C9005BC67E847401E61829A61934440B4A016CDC8AF4740A82AB230209C4440F4943F29D1574740080356A1DFE944409CD8836DD5334740AE62829A2AEE444004071A6A61E34640CAFC1B34D50B45407051981B32BC46404E34EC1D5B404540E83AEAD3D044464020C4AE93225B45404CF5A58F31F74540B078306209474540848E3F29C5E045404472F674D35E4540488168857B324540D024DB0C339C454010B8D5250A7644407EDDF991EAB04540A8F3DFFCD90944409E36EC1DCCC645401CAF9BB83DFA43408ACCE800AEB745408042981B0A5743400A3F268BD62346407854466302C5424034957BE01F544640B0D731B5755642408233B2B0519F46409C91503A9BB342408A7B932BC7B3464018A1C414D11D43406EF16DECD41E4740D02BEAD33BD642408025A19F7B51474030EE42C6E69243408CE5F991B985474058BEACC9838F4340ECFD4410B6A14740143EFBE49C1C43407615908E148D47402C786885A7204340BA944173F0C5474050796885A2624340A076BC87ADE94740347191E17FDE43403AB4C65E10F34740C0A4C414A4F243403C964173BF1D48402C5946635BD64340DE9ADE295464484090A8614B570A444038CF11DD59A748405C1265E8D60844402E883062EFCC4840C8B90F93284C43409EA7B54D96F6484014B5725C5C01434016599A6534F548400C6C91E15CB24240E8893062253149408C008E4426504240089EDE29E01C4940E4BCE63695AD4140DA75829AE1494940548616CD5FB04140265460F8106349400C37FBE4D682414042B1EFBA919A49402813D9C2C61C4140D28B3062C4A049405CDC08592C124140289AA43C80C84940FC8A503A2432414048E285B76AE249406C2DC17758E04040A2CB3AB9E32A4A405024870A9E5B404070687109861E4A4020383552BE3440404487F6F4F3244A40441C4D9D671440400291CD98D7074A4008F6F22C37C93F4014F496C8030D4A40686C6AA43E8A3F4014F2F991FB5E4A40309B00A1214E3F40D62C67B278894A40285B5993657F3F40C885593E6E954A40A8CA947EFA264040888C932BFD904A405098614BC958404000F05C5BFBAC4A40748D8AA7EA334040A464371C1CCF4A4020AE11B234BB3F406057C3C1A2E54A40A88F8CC69ACA3F40FA8AF6F4C0FC4A40E08D8CC66C623F40D8026E6C1A144B40781A4FBCEDC13E404467371CE8674B408803043ECAF83E409CC02928708A4B4058474882B8DF3E407A659A6586C64B40B0B3858C73E53D40BC2156210DE54B40F8ADE8551F5F3D40E087BC87C5D54B4030EE8F63C13A3D40CCB4B54D8CF54B40A0C033D43C2D3C404A41DB0CA6154C4020AE22C3F3DA3B408C6B379C31614C40C0AD22C31FC53B407410A8D9439F4C402897747BC6493B40DC28F357BDBC4C40E03CE5B878B73B4042AB41F35CE54C4078F06607906B3B4056E7AE13BF5C4D40D0C3D00AB7213C405EDED76F81A64D403837AB4B2AFB3B4008C05284D9BC4D40C0616AA4201E3D4072F485B797034E40B048BC5CEB113C40B4C5EF3A73404E4040AE4B1F0B363E4008B441F3D7E34E40B007A174D6233F4022BC7BE0C82D4F40E0CB969D1E843F405AA53062106F4F40804A82EF2E093E4046AACD98C2C64F40006B07DBD6713E40534DDEC3150D504020154FBC5F8B3D407506FD08B73C5040D0999DD7B5373E409B3A303C95735040900FB285F90D3D400F6F632F6FBC504020C5969D38FA3D404D7300E6B0EC5040584ABC5C29723C40BF9285D15517514050A011B288973C404FC31B4E2544514048A7AEE84A663D401D456AE90A4A5140F044AB4BE0193F4055D8C995B76351400CC0BDDAFD104040DF345958FB795140A089503A43E34040C15918314A535140AC2C870ACA41424017F3B14A0F445140249116CD6B254440F5D9664CACFB504004291330A9874440BDF44E8141DD504088550CF61E9044407D08FD48A9B250405C2DEAD304314340DB11D46CF87F5040945D577497F54040113FCD329DB05040E0AD0F939C974040AD97BF3E7BA85040580A021F7570414005416AE9EA5B5040B03A981B1F904140DB874BE4AC2A504084A3FE819B1D4240E594BFBE000750401832244140B74240BBB4442AB94750409C2AB066601E44408DA6D04FEB285040F097503A34244440BD6D636FE96F50405C04B7A00C8245403D648C0BCA9A504030B99BB8204446409F01C3DB67B05040547D2E1865D9454013CF8F288ED650404491DC5FF6B945402DC6B80488245140746E80D0002047401D446AE9FF0F51404CFC42C6EFC7464043918591A4C050401C630CF665A64740A783117733C35040188B2E1815FB48402FEB771D2805514014932E18ECCB4A409D0026252B3C5140B4BD8AA7CC2C4B40410AFDC8991951404CDDD525FAEC4C4085DE0343A83E514090D8FE81CC2C4E40870AFD88992951404857B06667464E40C55DB56766765140002E1A6A83C04F40297C3A5308635140DC065FEDB2DC5040D51EAB90201F51406A1FAAEB59035140DB0026258E4A514048F8EA1213A75040CD4DA45676B6514050CA5496131151407574632FF5F65140F2E9D901E4455140AFD82CDFDA3E5240A26B8BE6A30B524041311F6BFC3452404287739B161E52409739F68EC5C55140C4EDD90124245240971871A35541514082C57D722D4D52409725E5FD6D1B514022062580204052408B09FD482DF050409AC37D720DDE51402972006676AA504034028849FA2152401BE6DAA628A450408237BBFC8F9C5240B724E57D15E85040FEE502DE18B45240DB3A9345E44851401CC67D7266705240EDABD04FF4615140741E70FEA358524025C61B4E58E951408C15995A5EA65240997563AF2F3952400AD98E837BDC524045780026490E52405887D66499E952406D7700E6CCDC5140084E69C432135340F9770066CCFC5140D6B5CFAAE7645340C3B50A3D19115240CCFFB0A5BAE95340617800A67C1452402CF43C4B0060544027DE66CCFFEF5140729A4A3FA6265440CFDBC9155F2E5240863047A2B5205440F361B5677C695240C6879CF7FF8F5440E71D71A36676524078FE7638EF295540C56F290294735240DE9DAD08A1B45540F1A996E2F57B524000D71AA99C8055405FEB3D306B9D5240544CF5E9ACCA5540757B00E673C7524016FFD901341456404F823A5336C95240023170FEA29056404F5D7B7AF5E85240C86740E8FF9956407D56418D6EE95240A2A54AFF24B2564075E2668CA6EA5240421A250028D356406597E87A51EC5240A6AD84EC1FF756408B1CD44C22EE52407E8FFF80221857407BD1553BCDEF5240943AAA2B47305740735D7B3A05F1524094DE1AA9A3395740A156414D7EF152403AC095BDFD4E57407D19373605035340563036910AF7574069833AD3F50853409C5D2FD7672B5840E53EF60E97FA52405C41AA6B0BBB58409FFE4EC1991C53406243AA6B9E3059405B57418D891B53409A95628A42425940974D6AE92837534086744068697F5940F365B5E7665253400AC9F88680165A4041A75CB5AA6C5340B25D58B343845A40857A63AFED57534014D76CE11E2D5A40A7E0C915274853409CB010D216BE5A4063954B24593E53409A95281D5CCF5A404D6F8C0BB81E5340C4F2B7DFD6095B4099A9F96B4B2E53400A3BFCA3FCF25B4021AD96624035534074CCBE19896A5C4009809DDC6D0B5340E4CE5B50DE315C407763B5E709C25240D0355FEDAD895B40CB51A496829E524054E4A6CE32A35B4095F1775D99795240680C66274B365C4035409345708052407614A094007E5C40BB0526A51266524006FEB75F6D995D40B12E82F4556652401AC54A3F99D95D4013914B643343524084D321E3D7CC5E4053E6A039283E5240AC5F47225BD85E40115B7BFA3C66524012F4CA5E19316040655A7B7A4B3F524070380F63E936604057AA33D95ACC51409C54F7D73B696040F5BA442A5EB2514032A8AF3620CA604067EBDA267BD851400E1CED80C885614091B16D86D1E3514096DB45F3029C6140732AE5FD33365240587D7C0300B06240050B6092CC0C524062DDA8BC3CCB62405B6D29C2CFE65140CCA43B1C011F6340A3F114D4E6B55140BA6DCE3B33CB63408D4A072000C05140A4A59E65EA166440873459D8E36551402E82DF8C74906440B7B944AAB06951405C9FC7C170FD64406553DEC34D6E51407CE16E4F7447654099E8DA2644355140C4C923516B516540059822085F8351406CF57FE052EE65404FBDE1E07D7451400872940E33536640E730BCA199595140F431ED00008066405FBCE160AC3D5140F431ED000080664015A096E2FA3D5040D64F72EC5C4F66400721E57DC511504026469B48736F6640BEBD7BE08B8B4F40900891F14D6766403A8CE5E3EC264F40A23AC4A45F2566409ABC7BE011494F407454AC19C6CE65403E1E4510E6FA4E40E4D4FAB4CC846540162D56A199794E40F20D6855514C65407E27B9EA76FA4D4094E7A83CD01C6540E062268B6A494E4008BD4C6D86C064406C72379C0BF14D40F0FF90F1417164404250157A31EF4D40CABA4C2DAE3D64408EC0EFBA8F144D40E4CFFA74366264407CE5AE1399F04C401466F797DA616440E614E2C661144C404AB7AF7695386440AA9F070687CF4B4000B4128003406440A860FD2E49744B401AB312C0CC0B64407E0D4510132C4B40A67FDFCCFDFC6340E26D0E40FA944A40A6BF861A1BCB63407881BC87B5604A407AAE750938C563407E64D4D2E0FF4940CE43726C2093634088C100CC5D6C4940E8807C43BD7F6340766A718958944A400E5BBD6AE06D6340229F0706C5B04B403262F75741806340EE42DB8C25754C401877A5DF4298634048D39D02AFAE4C403088B670EE9963405271D4D27FEA4C40AE0A058CC3C7634080E94BCAF4134D40843B9B48D204644098110BA34AA84D40F6C42391FE396440E49F306211314E4022857C036E75644048C0B5CD08924E408C4B0F63278F6440F8BF18177A464F40F25B20B4446864407607FA91AE3B4F407C39FE910D556440D2FEBF243DD24E40BA0B054C69046440067B710981584E404E4572ECAFEA634068AD0706BAEF4E407640D57515976340A8D5639531C64E406E31615B4A476340B26BFD2EBAF64D4092278A37355D6340DA9D30E240BA4D40CCAE124006116340565F268B897B4D4068BA861A029A62402AE274A6B7BC4D4052D36E0F120F62402A1CE2464DBB4D40986B08E9F3C161404A2CF357AA844D4082A0D8D2AB5E6140F8504FE7448B4C409E23C4640BEA6040C6B2B54DF97F4B4022434910491861404CD4D76F9E5C4B40305B948E6B216140A4050BA345F04A40AC39726C45456140D2DF4B4AA4E04A407614B3931C596140CE10E24602264B409663CE3BD97C6140CE1AB9EA46184B400ABDC08733A66140D60EE2C6A8B34A40DCDB457322AC6140FE2A6732901E4A407ACA34E298996140D44E268B9ABA4940E0C697ABCB8E614078A518171F404940E09601AFFB816140C40A1CB42D3948403A2CFE51C0516140101CCAFBF47F47408640ACD907476140BAB0C6DE6A2747406813B393981B61408ADABF245E924640F69064F87DF06040D67B306297FE4540F0E5B94DD2DB604002F2A759F8B2454008ECF33A2EB16040026F593EDE674540ECF5CADEFF9C60408ECE853735664540F0848DD4E5886040F8C111DD6BA445406A54F797F25D6040AADBF991C0464540F427FED1F5586040F6146732291C4540EAFEA1027B546040EC7493AB8F324540E4C434A2485460400C13CAFB95734540922B9B48A1646040D4314FE7097745409C54F7D73B69604066FAE146460E46408E9F7589CE6060401A66E5E3E57B46408C8BC741457C6040D055D4D21BA94640B8DAE2A91BA3604090142DC570924640403772ECA0B86040CC61AB76F70E47403090647898C36040E00E5621329B47408C4FBDAA06D06040AA721F510ACA4740DC892A8BD7E06040C4F90AA3363D48403630387FF4AB604032A752047B1748404AF22DA8369060405E7DF6F4FCE44740E8CB6ECF975F6040F816900E23E5474012959E25A25260407A569A65665D4840DA3472ECBA2C604008BB639565B8484098D1E7F512EA5F40184B268B50E148409CD484AC65D25F40626F48ADB15E4940B04BFC231BBC5F405C444F674CAD4940D8AA281D1FA45F409626CA7B62E44940088806FB907C5F40D8FF6D6C7A654A409038EB925D445F40BE4BEC1D9D944A40D04E369193E45E40307C821ABABA4A409E917A55BA8F5E4038C700CC42B74A4090AB628A32405E40A23004E92DA04A40BC58AA6B550B5E407A1EF3577F604A40D8A7C553732E5E40B6131CB413424A400EDBF8863E2F5E405419562168FB4940386D58B3A60B5E40AC8C306260D249400C739220E1D15D40ACDF85B79C4A49404643FC2376D25D40FA22CAFB4912494020A8628A45785D404E404FE767C14840BC955179712B5D4006599A65BBF14840FC5647A215DF5C404C33DB0C10E74840964F0D3593BD5C40362DA19FF31149406863BB7C32975C409A893062C81F49401243369174395C40B832DB8C93C54840BEC621E332E55B40C635784361B04840A0DD6C615EAA5B409A617109A8904840CA012CBAC1595B400CADEFBA7FA548406237FC23691E5B40B89107862AA448409277A33190F75A408E14562198E5484010D6CF2AE2B85A409C1556211C234940E860F5E9BD785A40CECAD76FF83349401EF98E83C7275A407AF333FF3D23494030E043854CEB594048C39D02840B494036DBA6CE60905940DA34DB0C5A414940CEA7739B2C845940ECD6AE1345A14940C0B04A3FED3859408A4B895428C24940005758B3D4FE58406248EC1D27D1494022E51AA922B75840DEA8181710064A402840AAEBD8745840CAD94B4A68814940C29C392ED58E58406EC73A3911364940E4CE6C619F5058403A1B908EEFDC4840C2A7AD0819F45740DA2CA19F1DFD484056EE8E8338B45740E455FD2EB801494004F12BBA718957408EC73A39823D4940AABCF886AB465740BC8693AB653F494080EB8E83050F57402C7DBC87AD6649403EED2BBAACAD56409E906ACF782A4940066640688E335640229207063ABC4840C419C2B614F05540B6BA63950AA64840FA89FFC009D755400A097F7D849B48403890392E14B555402C3A157AD0E94840
-ru     0106000020E6100000010000000103000000010000000F0000004820021F696C464039DAF271BF2554406C65A92C4A664740DFB4331967315440DCB327DEC3284840CF06EC372D325440588BCB4EEB424840314ECDB2EE20544004F331B5708C484029D01B4E413054407C5B981B17054940C1D3B804CF3A54408054C177EFC2494019D01B4EC82C54402405A68F6E914940452571A3062354407C80577497E54840CD6C525E961A544054E85A117C724840371E3776BB1554401C33D9C2A160484097E02CDF3A0B54408893A2F205CB47406543F6CEA6005440986BE3995C404740FD984BE4D20F5440A8D6E63646894740BF9CE89ACD2354404820021F696C464039DAF271BF255440
-ru     0106000020E61000000100000001030000000100000005000000F393131F3E7E66C0A744CDF2ADF551409CBB6F6E9A3266C0C106C35B4DDB5140A63EBEE9FF7F66C097E0030355B75140A63EBEE9FF7F66C0A31B7123B0F25140F393131F3E7E66C0A744CDF2ADF55140
-ru     0106000020E6100000010000000103000000010000000E000000918102AE993166C0A9DD03C3CC0C51403E3F5B600DDC65C0992EBCA1A7D35040A64E6C116F7B65C0D5D866CC6FBA50403A5BE04BC93C65C037DB03838B7E5040CA77C8C0ED8565C01BEFB1CA225C50405C8C7628258B65C001517B7A991C504000493244CFBF65C0B9E3DA2680195040ACE3CB7D67FE65C0EF628C8B224F50408CB198EACC3C66C0AF3DCDB2FF5F5040FEA7C146D36466C02F450720768750405C6E5486A27B66C0610D3776F2415040A63EBEE9FF7F66C015A096E2FA3D5040A63EBEE9FF7F66C05FBCE160AC3D5140918102AE993166C0A9DD03C3CC0C5140
-ru     0106000020E6100000010000000103000000010000001A000000A4EB20A40FC14A40CFBAA7F3FC6F52400C1343C683F34B405BB80ABD28A85240D878A92CE3D04B40C70AC3DB35C5524084D69BB82FEF4C40A789744000E7524078C2B303C4954E40110CC3DB1E1053400E416944E51F50404B46307C191C534004F1B0A5808D50407D76C678D3335340144569440D0A5140F32EE5FD233C53409A3B92A08A365140ABED3D30DE225340D60025808E0B5140114630FCF30E534032A432F4C9285040B5DB2C5F37EF524024B9DC5FB0CA4E408B6AEF54B2D05240C08C1D07113D4D4073F51494C7935240D818E0FC4E7E4C407BDCC9955055524068B216CDACB54B40A3AB33D9C217524068D8D525B9CF4B40D592E81A99E2514070E30F9391C44C408D65EF141CAE51403CCAC414F5784C40FDED77DD7EA8514068B5503AB4D64A4075A69662CFB051408C700CF6BCB44A40E7CFF2F139CD51404C8B91E10ACD49404DB8A77362DE514004FF6B2256BA4940A9AED0CFF30052401031021F383D4A40A7A4F92BAF0E524060976885DA384A40AD45CD32953152401054870ABC364B4041B70ABD29685240A4EB20A40FC14A40CFBAA7F3FC6F5240
-ru     0106000020E61000000100000001030000000100000007000000048E628ABC8857408F4ECD3283365440748B289DC2805840A19211F7152B544082612F575E0E5940331D37B611DB53403E4D1E46E7535840F14830FC22B65340A41FC2B6E34557407131E5FDFFCC5340361C258002455740A7C8E1E0CA085440048E628ABC8857408F4ECD3283365440
-ru     0106000020E6100000010000000103000000010000000600000000F4F1CC6CC4594035EDA0B9C0CE534074FEC8F0BCD05940B51C37360CBE53408474A3B1B6455A40C1A022889E7F5340CCF38E8337F2584053853AD394785340F065CC8D4A4959403794AE6DAFC0534000F4F1CC6CC4594035EDA0B9C0CE5340
-ru     0106000020E61000000100000001030000000100000005000000BE9A01AF35636240E585D70945D3524000E77FE0EEA66240919D228814C6524024E045732CA5624005D78FA8AAA45240200405CC244A6240919D228814C65240BE9A01AF35636240E585D70945D35240
-ru     0106000020E6100000010000000103000000010000000500000086A22A8B0A7C6640D7C17ED77DB55140868ADF0CE275664035F94E0175E15140F431ED0000806640A31B7123B0F25140F431ED000080664097E0030355B7514086A22A8B0A7C6640D7C17ED77DB55140
-ru     0106000020E61000000100000001030000000100000008000000724A83BD36346140EFD4F2B10BF252405418504A8A736140ABD155FBD6FA5240D880B6B0ABEE61408B67529E5FE8524002B14C2DA9046240C7C2E160BCB25240D4A47509A4936140F3AA966240B65240E28153E72564614073C2E160639F5240FE3FAC99E62761403726ABD01DCD5240724A83BD36346140EFD4F2B10BF25240
-ru     0106000020E6100000010000000103000000010000000900000038497BB51FA93340541BB9EA89364B4040E7B18573E333401E23F357DE6E4B401046A411B944354098191CB461984B40A8AD6D41D3503640CEB2B54DF5814B40580860CDFCC136404AB9EF3AA46D4B406890E855ABA636401C59C341974A4B40E84F414829BB364020B8EFBAEC294B407855B5226AE434407A811FD100284B4038497BB51FA93340541BB9EA89364B40
-ru     0106000020E61000000100000001030000000100000016000000FCBDC08744DD61409E94CD982FDA4A40821316DD58E86140BE9CA43CD15E4A40B246495087E76140AE82593EDAE049408A7D197ABCF461407EBAC65EB15F4940E44AE6C6EE14624098B6C65EFA7C4840B8BA23D190E56140A0D2AE133DA74840129F3B9CE0D16140AA9F181748EE4740C4FBCA5E12F161406C3A4FE7196B474082F1F33A2BF06140BE79F6F4A611474008E0E229EDD76140E4813062D15E47409E6B08E9F1C261403EF40AA3BEFB46406EBDC08705BD6140BA6648AD2867474058FE671597C0614064549A65DBE347405038D535F1BC6140A86EE5E3F96D4840A6083F7958C46140B29CDEA9BDCE4840E03B726CC2C56140BAEA5C5BE679494080C797AB02B36140764C8954BCF749407E53BD6AD7B5614092373ED6A6A64A40641DED006CD36140B85A60F88DE14A4056797C43B6C6614090629A65DC1C4B408605A202F4D46140765FFD2ED52E4B40FCBDC08744DD61409E94CD982FDA4A40
-rw     0106000020E6100000010000000103000000010000000D0000008004A1744A6B3E4000B62C509027F2BF68623037EED03E4040E1C986C02EFBBF48E71B8920C23E40F09EFEDC494C02C0785D93003E783E40104EA987944F03C0D03FAB4B38F03D40B03A9876B3C902C0783EAB4BD6A13D40407457CFC55707C04850599361063D4020E294D9CCB606C008097818131E3D40702EC1D2725602C0C86507DB3C413D40B0B7E6918BB801C0C8097818B94A3D4000CE55ACBFEBF9BFD8D744E557943D40600C0ECB0476F5BF40CBD00A4FD23D40405BEF45D917F7BF8004A1744A6B3E4000B62C509027F2BF
-sa     0106000020E6100000010000000103000000010000004C0000005C8C3F29C1634540588837680F593040B8FC7C3325534540B43B1C804EC630405C1765E88A2C4540EC5467FE67133140F06F5774AC224540A81CFA5D87793140F09079968FE044409410868342D53140201F3C8C569C444050EB29F4EDAB3240181B9F553C7844407014E94C8A7C334050D55A11B31F44403870DBD8B42C3440DC5CE3999DE6434028DE7BACBF5634403CFF53D7D7914340F47B1546BA4A35400439C17708834340644845DCA3FC35401C39C1777D88434040F2525064943640F0823F29133F434058C7BC533EB0374000CDBDDA0D034340ACFF8CBD241438401C4A6FBFE7BD4240A0D7302E1649384080CE5A11D1934240E8CF598AC5DB384060274D9DD09A424078308683A4153940E8E5A58F3F77424064A3C38D5B9A3940D844D288DE514240E055A8A583D33940C0D631B5E31F42404CB53768F4913A409431C177F1D14140B05CA8A563603B4058480CF6A9904140B4C271D537103C40144E4663F05041405033AFDFFC0E3C402CA738EFD5644140687D905A809B3C4088EB7C33866A41406C933EA21DF53C406CBF836D5F7A4140B81DC72A475B3D40E8FBF00DD3084240745AD1018F323D4098B8ACC9274042408040E94C58813D4058264D9DC95E42409890043583DD3D402C84DC5F75C0424078D54879F7003E40B87DA2F284D54240A4BB60C4B2563E40C8D3F747DAFF4240DCD00E0C2D823E40784C0CF6468042402C8A905A27823F4000732E18A080434000B04BCA4E014040A043981B05994340AEA2D7EF9B144040C894B30333334440307E1C80D6E33F402446FBE4EAF14440A0C93768A4303F40B4DBBDDAD05A46402C279ECECB2D3D40BC6BE399CB4847405475B9B659193D4024ABED70DBBA474050DB1F1DA5003D40783E4D9DBBDA474024C80E0CAC863C4060CF0F9342354840F8495D27508D3C40541B8E445F67484014FBDE758BB03B40F4A416CD57A6484004E9CD6412763B40D056FBE446BC4840C89FECE9281C3B4030D30F938213494098AB60C48DB03A40A051C177411B49403C21D83BEB463A4074C59BB8800E4940B40EC72AA8F139405025C8B1B31E4940CC6CF323A99B39404041B0668143494048ED413FEB533940102D021F8D544940583A5D27F9FF38408015B7A0B1674940B8139ECE36C138402816B7A0638E494024914FB36B8E38406887F4AADEB14940203CFA5D9CA03840D487F4AA2DCA4940F8C282E6D83E3840E44D870A11CF49408821AFDFA3033840847E1D0718004A40A81912A94B0037406C03CFEBDE804B4024FC29F4377F3640DC03CFEBAA9A4B40A0BF1F1D55B53640A4972E1855D54B40E04BE21200003640144BB066FF7F4B409CCB6A9BFFFF33403463355200004A4004316E38000033403C892E18EF8E4840A44A56EDDD9D32407CA216CD771748402C9771D5AA2A324090AE8AA7BCBB4740C462DBD8DE1D3140A8953F2900804740F0165D2733F330408C6F80D0FF5F47408063DBD8884831405C7CF4AAEE2E4740947EC38DBA3B31405862A92C33B3464050FD747255553140CCA2503ABB9B4640F430A8A5EE6E3140F0E731B503084640E06A15460D693140B8132B7B50E54540005667FEE951314000A927DEBDB045405C27D1017A943140CC715774D28E4540A0C5A408A41631404CB69BB8F39B45400808E94CB9AA30405C8C3F29C1634540588837680F593040
-sn     0106000020E6100000010000000103000000010000002C00000000615CEEB6B630C01092086A9E302B4068FCF587482031C0900946743DBF2C40E0423ACC02A031C0C0BA8D5586752D40088CB87D672F31C0A0528AB8C5D62D40E889B87D61B330C0B8AA42D7383E2F40900A07998D7630C0880C23BA9122304034C85F8BE51E30C01C07E94CA6743040506D3A2B513F2FC0E8FFAEDF8C5E304000CC035B7F452EC02045F323589630400853291A9A272DC0D8EF9DCE27993040D014BC79F4322CC0B4ADF6C0E64D30408097440219DF2AC09420D101150A3040D002820C4CA929C0C01146747D9B2E4090850A956C5728C088AFB6B1D13B2D40D02FB53FF13F28C0B07DBDEB4CFD2B40A0537498FDDA27C0902D3F3A1AD82A4018469DF4561B27C0081A2E294D482A40A8FDBB7990EF26C0F808BA4E50822940B86EF983230727C098957C44CFE22840E0247BD20C5127C098E3972CEEC52840E8961BA6396828C08017CB5F69EE2840A8456387A48E28C018132E2979B5284038B8A09183FF28C0709BB6B107AA284040A3B8DC856F2AC0C8D0E9E4D82629406896A7CBA4662BC058E5972C202C2940703907F8D1182FC0103BED819F412940A87CAE0516A22FC09088086AF8072940F49B66C5D02530C070856B3374182940CC89B87D6DAD30C010957C440BC52840303563286ED730C0A83FED81834D2A40784A7BD2D2DC2FC0F8F0D199B4422A4058487BD2CA612FC020448AB86B8A2A4040BEF2490C062FC090D34CAEA08E2A4040FF368E46482EC0007620B5DE042B407024931DA56C2DC098B12A8CAE982A40A0BDC9ED2E8E2CC0209642D7A88F2A40883B18099FB02BC0B0F76ED094022B40D862D7610F182CC0486E491190962B40D0D9B1A2E0C02CC0481E2E2959402B4068BA8F80C25F2DC0184EC425BE422B4068A9E138D9292EC078E6C088C3C02B409812489F2BCC2EC0D8D1124182B82B40088CBF16CB3F2FC0289942D7463F2B4000615CEEB6B630C01092086A9E302B40
-rs     0106000020E6100000010000000103000000010000002D000000F0B81B895E383440DC384FE75010474010B144E51DC3344062017F7D06DE4640A0C255F6D2DF34407CCD4BCA4BB54640E8FB2560C87B3540AAB1639530974640D021E5B8E08F35403CC511DD6C6246408880747B24253640E0A58CF13C3D4640E881747B827536409CB06315EC5946402842CD6DAAB43640F2E633FFFB49464020A4969D58793640C0DFF9916134464078CA55F63AA836408E75F6F4111E4640400AFD031369364052B93A3908014640B07ED7440A803640D67059BE47D24540E0577BB56BFC364046398954079B4540287FD744D49A3640EC8DDEA902734540D0E43DABC46F3640065AABF6474A4540E8B844E5858B3640E81804E90D3B4540085CB5226A61364040267843FE284540F81F4882C6EA3540B4D75CDBDD264540B88AE855495A35409622DB8C781A454010B144E51DC33440E2921817A3064540D876D744A2B73440A662821A6EEC444048D9A0741A973440267730E27DED4440F001FD03E185344096E86DECE21B4540D052B522A448344040267843FE284540407EAEE818123440846E59BE574B454018B71B8936CD334072F3441003404540301D82EFF0BC3340B0FA7E7D1858454028F95FCDF24D3340965C482D0E19454080D0033E2C5F3340B028157A53F0444090CF033E98293340C4DD96C83DFA4440B0235993D3E132402A26784308244540E06CD7443473324018D85C5B703D454098DA77185B8F324088E96D6C33534540700EAB4BDCB432404873F6F49C994540605EC633190833409ADDF9915DB74540D833CD6D38743340B647FD2EB7C84540103130378A993340D0590EC0EC0446405895969D1C1E3340CC7C3062273646400893F966385E33404EA3EFBA766E4640C883858C67013340CEF10A231C6E464028303037F6633340BEDABF24469E4640205B29FDA01233401A977BE0C0C24640886ED74470D43240946B821A56F44640A0F32560969833406676593EFB154740F0B81B895E383440DC384FE750104740
-sl     0106000020E6100000010000000103000000010000001600000008D1C2B3A7E026C050D56C63C7241B40C8FFBB79986A27C0707ADDA0BD701B4000BB3DC82FDB28C030F21AAB400D1D40281F6AC1E9E529C0F0B33930D0311F40D0081F43803F2AC040289BC9F05320401003E5D53B7E2AC060C834635CCE214038DCC2B3856C29C0908453E877AF2240B0523A2B853129C098BD2352893D234050735C4D13DA28C06811DC70F2AB2340E80D931DF94C28C0E05520B596B723402050D761A5D527C0B850E6470E182440009B8F80263C26C0B01679A77C172440C8053054A5AD25C0E00505CD61602340F0770A95AA3E25C0801DED812B892240189055133E4F25C090EEF3BB50F42140805B22E016FD24C01056F7585B6E214038CC5FEACD0225C010862A8CA2B2204050187BD2CE7524C098C0972CFACF2040687F4402256425C01061E4DA02C21F4060207BD21C4B26C0404D0D373A961D4070BA146C4C6626C090113DCD626C1C4008D1C2B3A7E026C050D56C63C7241B40
-sk     0106000020E61000000100000001030000000100000021000000D804D4A767DA32402081F67484BF4840E8A844E5D9E832406EBE00CCC9B74840D82F30371A5233405E2F3E5629C94840C07911B234D333406A3578C3CA9B484080D8A074746A34407CCF11DD39B74840F8A3D00A51E33440D0F4D03515AA484068EB144F999B35406239157A2CBC484060BCE11BE28E36405468AB76F98A484080AD6D41E54736408A974173A6694840683FCD6DEA153640904BC3C10C364840C0E5DAE14ADF354016A4B5CDF428484088CC2C9A21CD34401A974173DA4F48404027BC5C3B793440484F60780B48484020DB3DAB323D3440D2C23AB9ED294840D8CE6607FCC4334082EB96C8F1194840D87F4B1F4FA933401AC6D76F2022484090BEF22CA32C33406299DEA9410E484088DB7718EBC63240D8843062770A484058D43DAB4EB23240B49F1817C3F04740A096D00A6DDB31402421673214E14740584DEF8F0C7D31405010562109EF474030F93671CBFA3040CC620EC0CE0F4840A84AEF8F46E13040E8559A65293C484018F93671D5F53040820EB9EA694C4840909DA7AE1B1A314050C7D76F92684840C81D5993858B3140A890070667664840C8D03DABF0E23140BED1AE13A573484088A444E5DBE93140F2D1AE138D7F4840F83EDE7EDF1A3240D2640E40A1854840F823F6C9A52B324046F133FFC0A24840F887BFF96566324068C8D7EF51A8484070F2C296128E32406E9CDEA95CBF4840D804D4A767DA32402081F67484BF4840
-so     0106000020E61000000100000001030000000100000024000000F0D1725C22914940A0EB0B070D7F2740F4A1DC5F50854940787231C63F552640C40BE0FCCB854940A8746B33244825400CC79BB8C66A49404004CB5F398F2440783A76F9B4464940309B9E66C1652240D43C1330140949409061086AD8292040EC1554D7F2B948405080170EF6371B400CB18AA7194C484010EF9F963E5B154038862E18D2DE4740F0743930ACE010408CD5E63649484740A0752E1C9CD70640D821021F30C8464000481D0BBB5D0040F04AFBE4B8084640807D6D4949D8F03F40D8BDDA6691454000BDEBF50EB3D23F50EA6B225305454000818CD3D369EDBF44C4ACC9CDE74440A0F1EBA8C224F7BFE8E5CEEBE5CA444020B76DF79DEEFABF8469BA3DAA73444000F93DB82BE8EBBFE45B46639C74444020883F2DDD2D0740D0A8C41447DF4440E036C8B5D5DB0F40B0E331B576104540004206FDC0EF1040E4B1FE8184624540E004FC25A50211407C8705BC97D44540504B69C688D41340302E76F9567B4640A0D4F14EA5011440248D68850BE5474018CEA83D8901204020CC725C4D3E48402857F758DDAC21406011B7A01478484040410FA44BE7224090A7B3031878484030D5D1996EF22340081F2B7B2078484048AE3B9DF3F625406411B7A093784840F0EBA83DDDC926409844EAD35E794840404838003DD22640783EB06646A24840D8E80B0755DC2640D8313C8C43DD4840783F615C66282740848157741F214940A0E76ED0F05B27404CDB4900B35D4940C8A9C7C2360B284004575EAE3C8E494098D95DBF9D0C2840F0D1725C22914940A0EB0B070D7F2740
-za     0106000020E61000000100000001030000000200000052000000A887525960853F4092F8E71CE4413DC0D0C0BFF957533F4080779901E8663DC0187E18ECD9E63E40AC6888F0F2E83DC040A911B2709F3E40F4A4F5907C6C3EC04092636A430E3E403ECA17B3E8233FC0E826FD03F1EC3C40E2987071051640C0487218EC41383C40B5E88B59CF6240C03879EF8FF0763B4082B658260D9D40C0481F9A3A616B3A401C104BB2B6CE40C090A522C3DFE839404EBE929361D540C0E8BC6D41D7C739404D88C229EAF840C0D8F03DAB402C39400B99D33AFFE540C09840F6C987AD384035F2C5C65BFE40C0D8129A3A13983740BE1A2256B1E540C0B8FBEBF2F9FC3640485F669A4DF540C0509ABFF9FB9236409E39A7419AEE40C048E4DAE1F48A354076003AA1212141C0A08E22C365B03440C8C6CC00663541C048F288293E12344040380A0BC76541C04019E5B8CC9D3340B49E7071DA6841C0F87611B27A313340EC9D7071363B41C0B0A844E5F5DA3240D7C6CC00DF3841C0185F636AB56C32408DAAE44BBAFF40C0482893009E60324045AE8182791141C0983FDE7E973E3240400DAE7B12EF40C0C89B6D410540324001E351EC05A440C0C83A4148D9EC31402FEFC5C63E4E40C0F0F7FC03773F3240C8EEC5C6ED3640C0581DBC5CC5383240D0AD92C760A93FC008DDB18521913140FA8A0DDCC8B93EC0B01B59937D1031406AE39C9EEEE03DC04018BC5C1B103140B2614E833EE03DC0C085F96650583040CE6288F0A2933CC040EE5FCDF2D230403AFA218A08153CC0803E7BB50B38314064247E191F5B3CC028F4FC0333633140C23A2C6194C83CC0C0663A0E0ED63140466E5F943BDB3CC0B06200A1037732401E0C9664A30B3DC0A861636A8B0033400A166D08F2F83CC0E0E3144F0DE53340B8025CF70A763CC0989FD00A51E533406AE14AE68DC438C0F05F29FD6C2A344086BC8B8DFFEA38C02836303734C23440F2CA62313EDE39C0F02EF6C99DAA34409C302C613A7A3AC0F069636ABDE334405E0296641BD43AC0783693001C9B354070EDE71CFEB93AC010658CC6201B36406C770DDCBE473AC0C09D5C305C9436408479AA12BDFA39C0E012377103D3364032A7400F1E8039C028375993E54F3740FA720DDCC84439C078139A3ACBBB37402C1EB886DF6339C0203B59931536384024DB734293AB39C0B03E599371063940004CB14C3CB839C08041599327AA3940DAC5C5FA9F7C39C070F33DAB0EC43940940F44ACC22C39C040CBE11B10F13940201BB88645B238C010D17E525A7C3A40A05B5F94C79D38C0680CECF251C93A4018DF4AE69D3D38C0C08800A1911E3B4018CB39D5069337C0D84B599369043C400A35DAA8E7D336C030D744E5A36E3D409C9BDD45601736C0A0AC4B1FCBD63D400C650DDC2A1A36C080A4747BA8523E40B07D585A884536C0404D82EFECA83E4088A95120CD2636C0A0C35C3000313F40FC4688F0624036C0F095C6339FAB3F403AC16231B2A837C0F874A4113BEE3F40A6421416925E38C090A09DD79DC03F40B2066D08FA7B39C050CD969D78D63F403C31C997E4D739C048FEC9D049553F40E20A0A3F02A939C0C82C60CD480B3F409C0EA77540BB39C05855BC5C1DF33E40C2ED8453CC053AC0C861303736AD3E408A11A775E8653AC0A091C6339BAF3E400C7670A56CBE3AC010FEC9D063483F40620496642F493BC0D096C63339DE3F40F67770A58C2D3BC098079F552C094040CAA506A2DBBB3AC01C4A4663416A404012B0DD4500BE3AC04C05021F464A4040D8120A3F5C783BC0AC753F29273B4040BA83AA120F4D3CC0C8BC20A4081A40403E0E339B9DC03CC0A887525960853F4092F8E71CE4413DC00C000000888D636A6FFA3C401CD5C5FAA1F43CC0A86207DBAC8A3C40DA1E44ACC2A53CC060909DD707133C4084B2A3D8F9D93CC0C85A6AA452883B407E5BB14C223E3DC0388800A1CFFF3A40B2614E833EE03DC03099747BD8BF3B406C57DAA825A53EC040AF22C3711B3C40062E7E19B58B3EC0380CB285834A3C4076D0EE56E9393EC0D841E5B830D93C40AAE739D5EE113EC0C06407DBB6043D409EAF696B67BE3DC028DAE11B3E533D4092F8E71CE4413DC0888D636A6FFA3C401CD5C5FAA1F43CC0
-es     0106000020E6100000010000000103000000010000003300000098DA479FD31122C0A8517189B6F0444028DA479F07F821C08A0B900EE04B454098E4810C28C922C094BAD76F688345408057118DAAE91FC0A86DBC87C9DF4540F030007C99041BC0E240C341B1C84540305AA789C5A515C0D62FB2B080C94540403DD0E5306411C0FEB73A39A4B34540003B7EA9E7230CC0D873F6F45ABA45408004FC52EF6BFEBF7C927B601EB64540008C6C90590BF8BFF0AC63955A8445400032DF808FA2D53F9EF344902E4A45400032D6266E73E63F0E1DA19FDA65454000B04C8E8B3AFD3F926ABC07F42B4540405B676E53E307407A3EC3C18B3C4540C0F60008DD5008400AE133FF30F24440C07C0E7C17BC0040263F6078F09C444000726C23D1EFE93FF482A4BCE2814440009FD9C32415E73F9CE80A23D35644400010FAB42250BB3F1C06900EDD0F444000F498F667D6D1BF3AB9115DADA7434000B030858C7DBC3F58E40AA3875E4340004E584F5AE5DDBF1265593E6C25434000AC128E53DEE5BF26B274A638D2424000BE3CFA9C03F7BF46746A4FB6B84240C0859257EF2B01C054CB5C5B4A564240000B85E384530BC0C242D4D256544240E081142AC17911C082C4226EC35642407026AEC31AFB13C07045710990294240D0637E2D368215C0286A306232F94140D0A988043A7717C0AE5CBC07D1034240308E66E25FF218C0A42D260B102F42407063D0E5AC141AC0586C3062B178424060FC586E9DD01DC0688BB54D848C424090564BFAFE251EC0AA143E56E6B642406031C60E81AA1CC044A89D02E6E64240309C66E2FB1D1CC0E4E20AA3B209434060C48804127F1DC07E6F3062C02F4340D0DA70B963641CC092E16D6CD9834340003E007C99FE1DC0A6D896C895D04340F0E7E49330441CC0842078431FDB4340B05E5C0B0C1B1CC02EF57E7D9E17444070F5F5A4C1741BC0D2AD9D025A2A4440E07644C08D671BC0AE6EF6F4378E4440D0E21E016D8E19C040358954DFB044407006A4ECA6AC1AC0404ED4D212F144402014412357011DC0F8BE115D8CF54440D0988F3EA7B01DC020FC1BB462E54440D0047BD2BE0620C0FA3CC3C13BE5444010DE1E43188720C04C489A65E6234540E0B18846095821C0AEC9E8803D11454098DA479FD31122C0A8517189B6F04440
-lk     0106000020E6100000010000000103000000010000000A000000842EAAEB6D72544010E9A6D09B171E40D2A521E3C96854407081517B56ED1940B497AD08F44D5440D00B1471DFC91840E655067B4B16544040562F599CDF17401EAEF886D6F753408034995CC90D1B405077289D7DEC534028EB90F2D4662040101F3691750954406022ED81EDA52340D859A331AF35544038D9A83D6F892240BC869CF77953544070390FA4DF202140842EAAEB6D72544010E9A6D09B171E40
-sd     0106000020E6100000010000000103000000010000004D0000009C0465E822E94040D0FF5EEF00A4104038F98D4482A54040A0A4A2F6DC6D0E403C87503ADC57404040CDFE85AF560E4038895259A6E13F40A0A916D15D770C408097636ADD3E3F4020BF8AAB4E410E40809C9DD777D53E4080A4799AC5120C409824C39618F43D40B0D36529DEB11040A0D10A784BB73D40700E995C39671240784DBC5CB9283D4030F6EA149C8E114020CD0A7859B23C404072FFC2FFD1114008DD1B89D26D3C4000F14DDE0B261140184FF6C9DFFA3B403067281F37A2114058644148CD5F3B40C075281F8FEF1440B8AEBFF9A1363B40C01BFC252D34164050899DD745773A401015884B70C917402014C396A2363A40406769C6B82F1A40D89A4B1FF1CB3940103FD3C9D1EA1B4098B6D00AC71F3940D0D05B5216001E40584930376C1D3940B032EB14E84C1F4000F577183F913840287EF01E58752040C03CF6C949CE374008BC5DBF27552140801C71DE81753740F824C42598E8214030E2033E10653740F09464F9B6872240C85D18ECA78E37401073A5A0C85C234020EDDAE1E68D3740781A16DEB22D24403821AB4B40FA3640C0B2750ACE6D254028FBEBF239DD36401816A203E8482640B8ACD00A4FE036400882A5A0EAC42640884BA4113982364020368AB8D55B274088BF7E52647F3640B015CB5F3D85284078399300BC4936406034B314C74A294028A533D4D0EF3540C01191F2242D2940C83B3037A0093640708C086A32E92940500660CDEA4B36409841ED819FBE2A40A80C9A3AEB2E364050F33463AC922B40A86DC63315833640C0B1F01EB42F2C4090399300B44D3640D8ED5DBF55A72C40E0335993659136400886BDEB78E32D4048FF88294A063740E8B8B6B1875C2F40F8B70A780BE3374058C9C7C2BE382F40E069EF8FF6FA3740285CCAC7237F3340E069EF8FF6FA3740F0BDF6C0F5FE3340B089D74400003940A068A16BC7003440B089D74400003940E04BE2120000364088949DD71F053D40E04BE21200003640207ADC5F90774040A8B5E5AFFEFE3540B407C8B145634240E04BE21200003640D03BFBE42798424068888920D304354038534663157C42405009D83B62D63440FC2D870AAF8E42401CBDF6C0D6CE3340C0BAACC9AABD42404CF50098349D3240A42F870A6EEE4240D8C707D22C5E32406C2DEAD37D344340443AE21291FF314034443552B5F34240047C2657736D314068AC38EF6F9542406C0012A95C433140F018D9C2206D4240944D2D91DFF4304074D4947E7E604240C095AB42B84A3040A82F24415E29424008F9972C1CA52D40F8DD6B22FB364240188F31C61FD82C40E084799696224240507D5A226D202B40A491ED708BEE41402860ACDA1328294004123C8C58A14140A89C53E86B2A2840686691E1716A414020C9861B4DA32640C028870A965D4140481E79A700D225403876A2F2F4204140883AFE929C4225403C204D9D16FB4040C86E086ACA2A234070191330CDFC404000ECF3BB7E5E2140187CDC5FAAE94040E8828D5520C2204064F253D7BBA5404028973B9D8BB520407C95C414237A404030025518D1231F4000908AA7BEC84040B05947A472DA1E407049A92C9D094140E0BA4A415DE71C4050FB8D440B2041403032FC25E54D1B401C2C24417F5A414030DC43077C601A40B09D614B539141403014C2B8B80B1640D050E3992329414050F3B0A7077412409C0465E822E94040D0FF5EEF00A41040
-sr     0106000020E6100000010000000103000000010000001A0000002845EA32DF924CC07067406A81E417409653FB4383F94BC030E2F14E6D17174020E65A70BFEB4BC0C011EB1400D017400E66A98B41844BC0C0317000E619184040269F34A1FA4AC0F055CC8FB4061740A23176D8433D4BC0D06F281F479613401C3FEA3224334BC0A0DE3CCDB6D91040A6A45019E3004BC060349F59D6F50C403CD883CC42174BC0C073BA41AB840940D43EEAB285224BC020B2D529F0DB054088FE42252B434BC0A04AE39DAA7E02406499DCBE7D8C4BC0805580D4A230044038CA72BBEDC84BC0408F8AAB3E5F03407E94A2D195FC4BC040C220A839150440DC53FB4363094CC020A0D52930C40140882A9FB4EAF34BC040582E1C0C2D0040F4973F0873FF4BC000C1E1232A15FD3F1CC29B970A454CC08041F6D17164FE3F7860D26736934CC040E36B26C326064076E2200306A44CC0C0A116D1FDAA0A405E16543600CD4CC0603BB06A5FAD0A40AC6CA98BB8054DC060DFD903533E1040123976581BEE4CC030075FEFA44E12405C323C6B07F54CC0C00EFC2521401340A4670CD553A74CC0A091AD0A554B14402845EA32DF924CC07067406A81E41740
-sz     0106000020E6100000010000000103000000010000000B00000098079F552C094040CAA506A2DBBB3AC0D096C63339DE3F40F67770A58C2D3BC010FEC9D063483F40620496642F493BC0A091C6339BAF3E400C7670A56CBE3AC0C861303736AD3E408A11A775E8653AC05855BC5C1DF33E40C2ED8453CC053AC0C82C60CD480B3F409C0EA77540BB39C048FEC9D049553F40E20A0A3F02A939C050CD969D78D63F403C31C997E4D739C0900467075CFC3F401A4B1416B24A3AC098079F552C094040CAA506A2DBBB3AC0
-se     0106000020E6100000010000000103000000010000002800000048E0A074E42E3640FF4EDEC3516E504068A5D00AA936354021036012AA41504000F88829A05E3540E9DCA039781A5040D894F96664C73340E2BE7BE005CE4F40D0663A0E08D931407634F357EC5F4F4018151F269B1E3140F0901F51ABAB4E4060D77718D3D43140541B45907B514E40384CB522A8C93240D29B932B7C0A4E4060DEB18585DE3140C6D69D02157A4D40F0980A7845D43040BEEA4B4A235C4D4048D177189D7230401EF85C5B43854C40A0AE004273C22F40904478C3590D4C4000A4004257552D403882829AB6194C4040460EB691332C408A91932B32B44B4090B3852DC5E22940463504694DAE4B40C0B0852D0D402940404F4F674E274C4060A9852D6D932740B47AAB768DB84C40F0830042030E264042BBB54D966D4D4020697B56C1EF264048B2DEA958B74D40E073188DC9992840F40F6E6C180F4E4080F866A825432940DE67C3C193A54E40D05530D8EFFB27404E21E24672E64E400011EC9373DC27402A13D1B56C904F401032D448ED282940D7F788EE3C0450404089EF30D2242B40DF6B63AF2403504060C65CD1FDD62B40B13593C5811C5040F01B4F5D831C2B404F406AA95E325040204F0EB681372E404F1CAB50688C50404047EF8FD41B304065FB886E5BD35040D8F4993AD5C43040AF4AA456E4005140E0FFD3A7ABBA31405F2FBCE1AC00514028E988296EFE3140171871235024514060434148E9E03340416DC6780F1A5140F8CF66077806344023CA553B2B445140702B599345A534408DF64EC1CC46514030AC6D4181FA35404F7400667A275140808DAEE81A8A3740391EAB90E7FB50400057DE7EDD903740DD7100E65899504098DDC9D043E73740090B9A7F7180504048E0A074E42E3640FF4EDEC3516E5040
-ch     0106000020E61000000100000001030000000100000018000000B0698C673E302340226F821A35C34740B03D93A10F4423403E2067327EAC4740402B8290BEF52240949A7BE0288D474020E403DF69DD2340D20AB96ADA754740F066B5C3A9E22440AABF3AB95F7247403055A4B20CBA2440CE95DEA9E53D4740A0A6F9077ED82340CC24A19F4E28474060AAD0ABA25D2240687AF6F458384740D03793A1BFEE2140244DFD2EBA044740406A630BDBFA2040ACE696C8A8004740900CD4481DA22040468EA43CF2144740A01245C822061F40FC67E5E388E94640C0A3DE616C181D40028A070673E346406043ECD5D65F1B405A68E5E3DDFE464040F26D241A001A4058A35284FF364740C0B63AF12617184002408954F122474080DCF94949261840CA701F51E65C474040F033B729131B40F026A19FD3A44740404F60B03FF21A406A7959BE59C54740A0E622A6D0C41C40FC0BB9EA91B9474080C2C616F6DD1D4060A9EF3A6FCF4740604D7B5675A2204036EA96C889CE474070F688CA930B21401017908E58EA4740B0698C673E302340226F821A35C34740
-sy     0106000020E6100000010000000103000000010000001B000000A8F7196A6B6543401E9B00CC78B040407C153C8CC26A42406A093E560E284040C4CEF74726DC4140F8511FD1C65A404030466FBFB3D941404C0A3E56A65B404064FBF00D0FEB4140DC77DEA91E6F4040BC27EAD319E9414082D1D0B582A340406CE742C681084240088BEFBA96E940407829EAD34D4E42408AD3D035D4194140B4C2836D5E3942402ACAF911064C414058958AA7CBFF4140DA29268B8C5241407C8716CDD7F34140E01DB2307BB441400CC2836D2B1342408C14DB0C28E941404CD0F7477235424036ABD7EF32054240A029EAD3BA574240E241D4D23D21424078486FBFA75E424018A69D82A468424044F7B6A08B884240E8AF74A6BF4F424028712E1878154340EEB311DD5A7342407831870A96594340F6F01B34415B4240281165E8E3C243401CB074A6A75B4240F0BA725C2D564440A2958CF1AE8B424050526FBF259B444086847B6084894240442FB066BF2C4540424EAB766C9D424074E6CEEB24EB44405627EC9D8C4D4240ACE86B2215A544401CDF0AA3ED2D42401CF342C625B14440264E48AD6CD04140EC6280D0C980444080E87EFDAD354140A8F7196A6B6543401E9B00CC78B04040
-tw     0106000020E610000001000000010300000001000000090000000A8069C4C7715E4008C71F1DEF6438401264818F3D4B5E4018A8D49E75CA364018156627D02F5E407030FA5D77F835409A5FE4D8150E5E40E82923BA9AD03640A01E3DCBCB065E404415D83B678E3740B65C47A2752C5E407894ECE9D78938405EF0A6CEAE5F5E4048AC9A31A34B3940D8B6392EE17C5E40081F757262FF38400A8069C4C7715E4008C71F1DEF643840
-tj     0106000020E61000000100000001030000000100000029000000DE55DD9EE8C0514064A3C65E471F4440CA0DFC2379A9514054D996C8C6F74340B2F4B0A5D0635140A465BC07360D44408E1D0DB5C05D51409AD15C5B6AC34340E87A9C7725A35140C4D15C5B56CD43408423AA6B38F251408C824173C5A343407E3DF569396B524000082DC532B743402CA45B50727B52408E02908EBE4043405471281D7B90524022925204A24D43406C12FC2359B75240F44971097E304340EE37BB7C1EB552405019DB8CB8FE424012FE4D5CB8BE52400C7BA43CC2B542401CF6136FB77C5240666D30E2F5B542407A7AFFC0A4505240A6B8AE9364BF424088D2F1CCC2285240926C306216864240BA19D3C75A0C524010EE7E7D61794240B845CC8D0EF651401C3C9A657C5E4240B882D664B7DC51404817DB0C678842400219D3C7AEE25140FEF6B86AF0F342407E82D66452CF5140E089189704FA4240CC18D3C747D6514010766ACF23214340DEC27DF2A2B351403C21157A3E3E43401EE1025E159851402668F6F4B611434086CC541651915140FA857BE019DE424048BB430576875140C46D30E24ACB4240CA16D3C7336151405459829AF3CD4240B0BDE0BB8F4C5140646993AB5893424024C41A29013751403E0A673213AC4240A441CC0DAD08514060ADD76FF5824240DC03C2B61EF550404481DE298F924240082A810F1719514056274F6719144340BA1870FE430B51402C5C821A66734340406DC5534DDC50409EAE3A39F09143409E1B0D35E4EC5040E02DEC1D4DCA434092F3B0A554225140D83EFD2E48C443403EB30998BE405140CE98EF3A070B444024D9C8701655514022ECA759295D44409CDAC8F0A9AA51405E0B2D45E87A44402033BB7C529D514052D0BF248D3F4440A4C27D727DA65140AAF81BB4F81B4440DE55DD9EE8C0514064A3C65E471F4440
-tz     0106000020E6100000010000000103000000010000002F00000018784148BFDD3F4040F60DCB2470F0BF90E242C6BBED404000B08599A602EEBFF491503AF2C74240103D4DF8F1C308C0DCC820A480D84240607C0C51649F0EC04CEE42C6DA9843409088F3C8C50713C0ECC04900C95E43409058AF84C1A217C01C3524415F6643403847C7CF17E719C0D4510CF651B84340A04DC7CF275C1BC004742E1828BC4340B066751761661CC03CDD31B5EB984340A0EF26FCD0D01EC0DC2B4D9D41A043400CDA3F77020420C078843F29E09743405829BE2897F820C0FCDD31B593C4434064B746B1873922C04CE2CEEB8BF94340A41F73AA613224C0F82376F98528444084AD98695AA224C05844981BB1C243400C536C7030CB25C00453A92CBA36434010F0050A069226C030038E44F0E9424030D1801E9C8926C0C42E870A53BC42400807B451332327C0F4AED525386342408C856536673027C0DCC2836DCD414240D87F2BC91E7127C0D8938AA7FCA74140944D95CCD7E026C040A39BB8AD4741408C92D910400A27C0F45ABA3DD723414034BDA97AEB5124C0F88CED70AFDE4040000CFFCF94D522C030B7E63633614040A04E4314117622C0F4521D078F184040EC3A320358DC21C078CF33D46C8E3F407CAD0C442B8621C020865259122D3F40C856B7EE213621C02039D4A771BD3E40C40CD67315AE20C0108C29FD32333E40603D1988E6511CC09060CD6DBA9E3D40A8B804DA7E141AC018636AA4846B3D40D8B1A1108FC217C0B8969DD71D853D40002753F50EAE15C0C8390E150A573D40E861D1A6FBFF11C050BD5C30E6C03D406819F02B3FCF11C080BBBFF9C71D3E40E0F0CD094D5C10C0308352596C813E4030FF31106D8C0CC06843AB4B94C03E4050A91628E8DF0AC0F03F0E1536BE3E40D08C0517374608C0289B9DD715873E40208FDCBA077606C0785D93003E783E40104EA987944F03C048E71B8920C23E40F09EFEDC494C02C068623037EED03E4040E1C986C02EFBBF8004A1744A6B3E4000B62C509027F2BFF0BA22C313C53E40C010F67FA63BF0BF18784148BFDD3F4040F60DCB2470F0BF
-th     0106000020E6100000010000000103000000010000004000000034AFAD886FA559400815CB5F895F2840F8A3D664FA6B5940202ADC709E4A29409A02035E3C35594030977C441141294034400D359F3E5940E8CD124150D32A40F2C05B504206594078A1197B4FD02A40765AF5E932015940F8F3A83D2F9D2840624547A2A6DE5840D8A264F956B1254066714068D7C95840B0D1346316ED23407237D3C73BCE58403880B6B17F7A224072194EDCECF7584028B3E9E46C6A2240DEDFE0BBE51159405041E6471E97204046B04ABF641D5940C0C821E5E1B71D40588B8BE61B415940B0CF32F66E6D1B400AC6F886E067594010FA2BBC65F61A407C410D3509895940205ECC8FF4E21840EA70A3311D745940F056CC8F443E17409C1077B8DE495940402F0D37FAC31640F4B04A3FD544594090DF1AABC8D11840BCF72B3A9D10594040E71AAB40921A408E94620A7D055940608B281FA3DB1940DC4F1E4634EC584080BE21E591641B4034D8A6CE41E15840E00E0360B25F1D403EABAD883FBF5840C0415FEFC8A11F40B6AAAD083EA05840B015ED81BDC3204052DA4305BD95584020F87D74942D1F40D895FFC09989584018C0972C34B320408658F5E9959058400003A203A6F2214034E8B75F6DA35840F859BDEBACDD2340D633369170C25840B81E79A7CCEB2540DED4091896E55840B07F6B3318C92740E64B810F91CC58404884CEFC079C29408EBCBE9991CD5840703616DEE0892A40C074DD9E41C658401894086AAEA72B40BE92628A929B5840189B086A7A3E2D40E0F8C8F04A8C5840D85727EF553F2E401600035E64A258408030CB5FF39D2E40FAB1E775D0B9584044CF18E3852D3040A636D3C7999F584048BACD647CD6304056FF02DEFB765840D075ECE964913140EC83EEAF0E5858405C5E04350872324060E7B7DF0E7358404C81265788A032401EF28E033D905840502D34CB4CB53340E88FC5536BBD584040862657C3C033409A04A094C5E258407C4045DCC42F344064612F576C075940D4969A31F86A34404C0203DE20235940B4023B05F71B3440B4F48E83CD265940803D45DC22823340AAC5F8860C52594000BF93F76B7633402A5858B34C42594054E3EF86AF683240045F92A0CF43594048F73A053383314088EF541645875940F80A4C16EE1B324040B984AC6E9A59404855CAC7CAEE3140D00B3DCBEABF5940DC92D49E31F631407EE67DF2CFCC5940349B0E0C444F3240CA5EF5E936FD5940D4ECC62AAF3D32405EB8E775E22D5A40C8714FB3C96D314044BF2163E0315A403463780F1E713040E0DEA6CEB2655A4048E4AF7700242F40F600C970D6625A40386C726DA7722D409A00C970004E5A400898086AE28B2C40969CFFC002125A403888F7585FD52C4004DCA64E42BF5940884C8AB891732C409082B4424796594048569BC9DAC92A4034AFAD886FA559400815CB5F895F2840
-tg     0106000020E610000001000000010300000001000000130000000061946F06D8FD3F6030D3C99191184000E44F2B42F6F03F6022FC2521B7174000A265E923C8EA3F20C295BFB21E194000A224429640E23F607BDDA04DA81B4000F4DBE3D86BDF3FD02E884BA0A51D40006BA690F1C8E63F8852F758FB9F2040000A61CF2A84DD3FE84EBDEBBC5A214000E0ECF4E96AD73F2037380015EE2240002631396E86D73FF81779A7E661244000C0E7D6617DA9BF30645A22F16925400020D95FB05F983F401F79A79009264000F2466438C9EC3FE0887C44A3FE254000EEBA3EF9B6E83F586C31C60DF1244080225A02A63EF13F10BF861BE959244080A1C0680CCDF63FE80D3F3A9AA6234080D7F39B9F68F73F10E47FE153AB2240801F613CB3A1FA3FC0CDD199D6412240007553C838E7F93F803CD3C901541B400061946F06D8FD3F6030D3C991911840
-tn     0106000020E6100000010000000103000000010000001F000000F072630BDBF62240208F67FEBB4E3E40B0BD7EF3771C2240BA9B9D02250D404070DAA015D2E020408C8B8CF1CD40404000E814F066DC204040855284C95F4040E068375458731E409A5DF6F40BAC404080FD33B711191E403C2589D4760C414010E277B92E4820405A3ED4D2DB534140A06C0042B3C0204038B4AE936CBD4140E0A1D0AB866F204096FAF257723742404003FDA488D72040B25EBC872479424070E003DF1D052340F828EC9DCCAC4240C0DFC971856B2440FC0967B2709D4240706BEF307E5C24400C022D45AD5C4240D08A3AAFC70E264020477109CA8B424080398290363326403CCFF91133734240C00889CA333325402C6B30E27A34424020800042C32F2540BAC95CDB45F9414080D8559708E1254070706A4F78D94140203048239E9D254062AF115DB06A4140D03EF66A974C2440CAFC2CC5562A414090C5E1BCE7AD24403432FD2E93E4404070820042B3B6254074B0AE1366E24040D0A622648D3726404A2AC3418CA540408039E55942FA264012AFAE13899140409098115350DD26409EB78537382F4040A0869D78BBE32540F8194FE7780A4040A0CB7EF31746254034DD4879ECC23F40C084D7E583E623408815B61946603F40003EF66AF71C2440645B97943AF63E40E0E7A015A6F0234058C39A31118A3E40F072630BDBF62240208F67FEBB4E3E40
-tr     0106000020E6100000010000000103000000010000000E00000098F1A074F61D3A401CB19D02D8E94440D0EBC9D0BF223B40785C482D1C124540A863A41129FF3B406E035621F10045405823FD03931D3C402E9CEFBABACF44405820C3960AFD3C40B06B593E64A6444018E2B8BF72CE3C4034DF33FF08874440A86F18EC779E3B407EE2D035FA7F4440A8E82C9A3F313B40C26DF674645844401093747BA65B3A40DA4D718974134440105BA411190B3A40181FDB8C124F444038A622C3930E3A40C68C7BE07C694440C0BBD00A6B4B3A408E150469D77744407075EF8FAC9A3A404AA6C65EF3C7444098F1A074F61D3A401CB19D02D8E94440
-tr     0106000020E61000000100000001030000000100000035000000F013C396B82B3A400CCEBFA457BB4340A0E58F63AF473B4004AE9D02C335444010973A0EEAD13C4058B874A6E13A44402806DBE1703D3D4020A229A8289C4440287F18EC5B253F404242FD2E378B4440407C79968A2C4040342F4FE73DDE44407C292441B3C14040E8DD96486D024540303E355277954140DC9218172605454074E20859E17442403E800706EDAA44408CD4F747802C4340560B2D456B7944401C742E189DC14340A4348954278D4440C0CE20A4CC2F44408A7F0706C0814440BC9A503AECC644407276306290C444406C8FDC5F4D4F4540DE2E4F67A5CA444030021A6A97CA4540F0ECA759CB8B4440707D2E1857E04540042D4FE7BE5E4440704D981B06D4454006DA96C8742044400C152B7B333346408CEAA7D9A30044407C755774A1654640066F93AB43DB4340387E2E18FB0D4640666E932BCDB64340BC856885F03546408679070601244340F4F5A58FE51C464080867BE05CFC4240FC9A16CDE7624640CAF85521D19542405C3AEAD38F2546405010A19F318042404CBB38EF9BF84540EAE74410CCA0424000604663BA634540405C1F5150B14240442FB066BF2C4540424EAB766C9D424050526FBF259B444086847B6084894240F0BA725C2D564440A2958CF1AE8B4240281165E8E3C243401CB074A6A75B42407831870A96594340F6F01B34415B424028712E1878154340EEB311DD5A73424044F7B6A08B884240E8AF74A6BF4F424078486FBFA75E424018A69D82A4684240A029EAD3BA574240E241D4D23D2142404CD0F7477235424036ABD7EF320542400CC2836D2B1342408C14DB0C28E941402CB0725C1BE441408A15DB0C332342400C8816CD95144240422E260B47534240309BC41485C6414042C4226E60484240C0FF2A7B765B4140D6D533FFD3654240409B614B7103414006AF74A6271C4240B8642E182C414040C6AE74A6C40D4240880D3EAB18B33F40503F379C77524240F02A60CD229F3E400EEAE146C4564240380BDBE11E643E4050E2A759A9214240B0F32C9A31B33D404E89B54D7A124240280EB2859FBB3C40300C0469A2564240D81D60CD24A43B401ED2964854544240488F3A0E7C0C3B400E2D8954A1D3424028D7B8BF76513A40C042371CA41A434090BA33D400CE3A40F258E5632D7E4340F013C396B82B3A400CCEBFA457BB4340
-tm     0106000020E610000001000000010300000001000000360000003033F10DFC9A4E407CCCF99135D34140841E43C6C08F4E40BA9729A8EC3E42408CC7ED7056304E40F0B94B4A81434240E0685EAE0C9E4D40E2BB4BCADCB44240C03A65E8D3374D4012487109DBC2424044C48AA74BAA4C403EBD4BCABD034340707E4663474F4C4066E6A7D9890F4340989F688516174C401294EF3AB2F74240344CB0667BC14B407E23B23068FB424000DA725C70664B40B2FCF2D73AB242400801CFEBF6F54A40489929287699424088B5503A25DE4A40A6042D45FCF342407C268E44C2F04A40903DFD2EDE79434030282B7BEE8C4A40A493528431A5434088BB8AA7CCAD4A40D03FFD2ED6FC43401C912E18D4584A40506CF6F44D044440409FA2F226754A4088FDB8EA3170444048CAFE81D7ED4A401C82A4BCC550444040A3A2F2505E4B40BCD45CDBBA794440D4379F5510014B4092C1AE138EC644409463981B61DC4A406485A4BCC40F4540F420F10D58754A4022A08C711EEF444064CB9BB847684A409A4CD4D253914440CC78E39950404A40CA43FDAE43E44440C479E399DE784A40F2E4D035DA0E45406CD8725C2A0A4B40B600B96A7C294540B4A63F29AF604B4022D75CDBA00545405890F4AA45BA4B40B8F0441043A14440E831C8B1EDFB4B40EED8F99181A744400C423C8C568C4C40266FF67441A944402856EAD352774C4086B43A39BBE9444008BBB303ADE44C40885C48ADD41545407CF3836D83504D402850D4D2326045400856B066FBFC4D40068941F38D1C4540603E65E8AA0A4E401C2BB2306BB6444040160959A43B4E403A8ADEA9339C444070820CF609C64E407EE66D6C18A24440302043C6FCF04E40C2901897DC8A44401051D9C2E72F4F40F26859BEE506444054ACCB4E4EC24F409226B2307FAE43405CEB13EFE40A5040A27030623A72434066045FEDD24D504094A99D828B33434010399220F4A250401C20157AC2FC4240AA0C99DA30A150409AC285B76FAE4240D02047A2E98D5040ACC285B767B24240C634F569B86F50402A780706A1D442401A831052B165504080FCF25711A742400C60EE2FC02F5040462F260B508E42400ECD8E83F9225040168D5204F2274240F880D288CFFD4F4028480EC00401424090D427DEC5984F407A55829AB7ED4140DC2C1A6A097E4F40963C379CB7B341406024E0FC851D4F406624EC1DA5A241403033F10DFC9A4E407CCCF99135D34140
-ug     0106000020E6100000010000000103000000010000001B00000018784148BFDD3F4040F60DCB2470F0BFF0BA22C313C53E40C010F67FA63BF0BF8004A1744A6B3E4000B62C509027F2BF40CBD00A4FD23D40405BEF45D917F7BFD8D744E557943D40600C0ECB0476F5BF20E21B897C963D408085BF0607CCE2BFF8E955F6CAD13D40002415669A47CABF80CBD00A33E03D4000581163BC1DE33F581E89290E163E40C0A32CA23BFFF03F30DFE11BF0773E40405452614457F93F8828C39648DA3E40002DE5C02097FD3F38D1D00A952C3F40A0878AABBEA20140A89F3A0EFAC53E40C06D05C014B80240809C9DD777D53E4080A4799AC5120C408097636ADD3E3F4020BF8AAB4E410E4038895259A6E13F40A0A916D15D770C403C87503ADC57404040CDFE85AF560E4038F98D4482A54040A0A4A2F6DC6D0E409C0465E822E94040D0FF5EEF00A410404CB00F9301244140204E244598D40B40D8F8F00D3957414060793F2D9DD403404052E399FA7C414080B744ED79BEFB3F689C614BE946414040C0B18DAD84F03F0C5ABA3D41EF4040007422C6F896D83F089427DED8EC404000E0CC147A67C03F90E242C6BBED404000B08599A602EEBF18784148BFDD3F4040F60DCB2470F0BF
-ua     0106000020E6100000010000000103000000010000006200000008F6F22C37C93F4014F496C8030D4A40441C4D9D671440400291CD98D7074A4020383552BE3440404487F6F4F3244A405024870A9E5B404070687109861E4A406C2DC17758E04040A2CB3AB9E32A4A40FC8A503A2432414048E285B76AE249405CDC08592C124140289AA43C80C849402813D9C2C61C4140D28B3062C4A049400C37FBE4D682414042B1EFBA919A4940548616CD5FB04140265460F810634940E4BCE63695AD4140DA75829AE14949408C008E4426504240089EDE29E01C49400C6C91E15CB24240E88930622531494014B5725C5C01434016599A6534F54840C8B90F93284C43409EA7B54D96F648405C1265E8D60844402E883062EFCC484090A8614B570A444038CF11DD59A748402C5946635BD64340DE9ADE2954644840C0A4C414A4F243403C964173BF1D4840347191E17FDE43403AB4C65E10F3474050796885A2624340A076BC87ADE947402C786885A7204340BA944173F0C54740143EFBE49C1C43407615908E148D4740543CFBE46AB642405A26A11FD882474048DBCEEB42614240D4BB9D026F59474068D2947E6EE94140F662ABF6AE524740D488B3032E7B4140626C821AF8224740844BA92CA9824140A8DBBF245BD3464030490CF647C141407293DEA97AB44640A41B76F9D6434240F022A19F28BC4640809927DED72A4240C8F5A7D97D8E4640EC9D614BB89E41408CB400CC517846402808021FF6F0404068D522EE442E464094773F29C8A940403665E5E34D484640501F4D9D01C64040ECADC65E7384464048494663223A4040361F0469EAA94640B0E67C33BE504040E66348AD74C24640E433FBE448CB4040F21C673200ED4640345C577437A640401C2BDB0C510A4740A8C2BFF97FBE3F4028DDBF24AB2A4740B85182EFE0AC3F40788FA43C665A4740B05E9300AEBF3E40C88B0706A34A474070EC55F6AA603E4078A2520426044740004C1F26719A3D40703AEC1D8BA54640A01D266054263D40C86348AD82BB464008F6660706AE3C405418CA7BEAA6464030168929CA3B3C4004FA441080BE464090BE969D3A7C3C407290417367CC4640704482EFF4A83C40D6017F7D51F8464068D8E11B08EF3C4068E05C5B2121474090B222C3EBDC3C403247C3C10C384740F0F02C9A75123D407A2F78434342474058B7BFF9AF2B3D40AE7D93AB8B304740A812B2858DC23D403E519A65CC2C4740F0FB660750063E40F813908E43364740A04982EF94D63D4050997BE03D43474020434882AAE83D40D092417351564740482660CD468F3D4006A1B5CDDB764740883DAB4B466A3D4002B3C6DE5EAC474020D2A7AE050D3D40503FEC1D4FC14740E8491F26691F3D4098C87426AFEC4740E00DB285BFAB3C40A0067F7D1F0F4840302ED4A771423C404866AB76E9134840B820FD03C5853B40ACE8F991CA3B4840B8D27E529ADB3A40D277BC87212F4840305A07DB8C9E3A401E4BC3C1401C484060CCE11B8C323A40662C3ED6451C4840C87CC63329F23940BE6CE5E35AFE474000F13DAB2E3539407AF80A230EF2474030D455F6C6DD3840D879593E67DE474020351F26ED6638403481932BAEFD474088028929CEC23740F09F181728FE4740D8D62C9A69243740323D4FE7540C484088D18F63E5B53640F2A9EFBAEBF0474068678CC60CA43640A82FDB0C3B134840683FCD6DEA153640904BC3C10C36484080AD6D41E54736408A974173A669484060BCE11BE28E36405468AB76F98A4840D0D18F63C3C63640D43BB2B081834840D82C1F26B98436407010B9EA06BD4840F018D4A72F6D37407845EC1D7D274940B0DDC9D039EC3740EADBE8806236494080331F26AD073840B03878C34A5A4940A0C0E11BEE863740EEF296C80ACA4940686D8CC64C013840F0444F6708CF494068092660988D384084A81817B9F1494028C544E5E953394028A57B6090F4494090F2A07484563A40F2CDD76F88EA494018CBA7AE3D743B40FA8FCD98D0CB4940589B747BDA3D3C402C9AA4BC3EC94940303371DE1B9E3C40584B8954BFB6494038FEA0742AFE3C4016DB4BCA0FCD4940289200A143413D40CAAAB54D22AF4940E08B29FD48283E406A96070644B54940682089291C8E3E40AA0D7F7DE5A849401887EF8F949E3E404CFAD0B551E94940583D71DE73ED3E40CE343ED66B054A4008F6F22C37C93F4014F496C8030D4A40
-ae     0106000020E61000000100000001030000000100000016000000D487F4AA2DCA4940F8C282E6D83E3840907A80D0F3E04940A83AFA5D484B384060363C8CAEE54940D0C8BC5313053840BC0B43C6DD494A40D41E12A96C2D384010F9947EB6B34A405C8F4FB3BC2638404875A92C06014B4074FCEF862B1F384000E44900B5584B40C8F17BAC42CC384004750CF631B84B40F0E607D26B7039407CC18AA710094C40F0CA82E6320E3A40788480D069214C402C227572F0B639400C66FBE4CB324C4080EB413FBBEC3840B4F75A1170F14B4064A0C38DBBEB384038DC725CEDE64B402871CAC704453840741D1A6A98FD4B4038B8AB426B2138400C197D33AAC34B40F8ED7BAC00EF37400042D9C24EC34B40BCAE71D55D86374024716FBF039E4B40E80F3B056A1C3740DC03CFEBAA9A4B40A0BF1F1D55B536406C03CFEBDE804B4024FC29F4377F3640847E1D0718004A40A81912A94B003740E44D870A11CF49408821AFDFA3033840D487F4AA2DCA4940F8C282E6D83E3840
-gb     0106000020E61000000100000001030000000100000008000000D08D1B64E6491EC028FE33FFD8904B4040B24E9775EF1AC0BA12E24620964B40B0E392DBD5A516C0BAA0A43CFD464B40D0347456A2CA18C05AC1C65E0CEF4A4030C75FA89ED01BC01CDDAE136F094B40D08D1B64E6491EC042D674A6AC074B40C0AFDABCD0761DC04CB55284444C4B40D08D1B64E6491EC028FE33FFD8904B40
-gb     0106000020E6100000010000000103000000010000002C000000C08C880492D810C02CB7181782464D4040AE69FB3F0A08C0DA68FDAE47514D4020059DB2994B10C0CEBB5284C9C64C40C07C36C8A47008C0885C268B52D84C40807CD6933659FFBF18BC5284A7D74C404025C92789C201C0B6BDEFBA5C6F4C4080301BE0B7F308C010740E40A5FC4B400024665E19AE00C0345589D47AF44B4000E546D100D7F1BF0026908EFF4F4B4000AE5BEC108DDBBF927748AD703B4B400098E3C077ADC73F400B45109AA94A4000FA4FBE1914DE3FF2CC3A390A774A4080BAFAD58CE7FA3F8092CD98A85E4A400041BDCBB5F5F83F8C6B0EC0CC0C4A40005BC7A219CFF03FC8E522EE43E74940003D5A02A632F73F485560F80BA549400091B067559CE13F4AB0EFBA0362494000FF56D25733E9BF04323ED63263494080D973D283EB03C0C85D379C0040494040DCFFF772A607C046D2115D3359494000CE409F88F00CC0884FC3C13A1D49406025E830872B12C0BE781F51C12B494040F4DD59E7FA14C04407E246E1FA4840D0CD475D341B17C058781F5170144940A04DE1F66D3D11C0A87A1F51E19A4940409070359D510BC0429D417387B649407059E1F6FDEF13C0942967B2F6CB4940705EE1F6B51115C0AAFAD035E6FE4940C05955D1AEE310C02865D4D292264A40805C1B647E1413C0B4F59648856B4A40A0A7364CEB5112C026F796485CBF4A4080F5AD3F94BC08C0E2E585B7C4B34A4040B6409F608F07C0365B607814FE4A404049554D400A0DC0F88859BEB84E4B4040D592DB6D6013C02856268B3E654B4080D992DB815414C08A86BC87E2874B4020E4A3EC5EE012C01E2156A115C14B40C0193AE9213114C0D6090BA359E44B40C00E8CA1785816C0CA080BA3D3A74B40802E118D7A9416C0C44BB2B033234C40D0D7E493949918C0FE3467327B644C40309EB160B52517C07EA40706D0E84C40404C6D1C3D0A14C0541AE246A4504D40C08C880492D810C02CB7181782464D40
-us     0106000020E6100000010000000103000000010000000B000000F5244AEF87C363C07C7FB27C8F5135400C254A6FBDC863C0DCB3E5AFD2953540FBC1807FF0C363C028218683AA9935405FD62EC7CCBE63C0D0F1EF868CB335404939F8F68BBA63C050DC413FB178354084B7A97B11B763C09CCECD642C753540616C2B4A55B463C0DC1F8683C14E35405C8476A88FB963C0C0309794C444354049625426DBBC63C0E8D407D22E573540A954E08BABBE63C094F38CBDB0533540F5244AEF87C363C07C7FB27C8F513540
-us     0106000020E6100000010000000103000000010000000A0000008CD0F4F940F963C010E918E3B30A3640654B098840F763C0E8ECB519E4233640615C1AF988F263C0E0864FB31F393640AEFCEDFF43EB63C0FC0B3B0536383640712C84DCC0E963C0002723BA6F2736402CAED2D7FFEA63C08C18AFDF40F935404A22ADD8BDEE63C0E00DD83B4AE03540E7AA35C17BF363C09C0A3B05D6E835408CD0F4F940F963C010E918E3B30A36408CD0F4F940F963C010E918E3B30A3640
-us     0106000020E6100000010000000103000000010000000D0000009853E0AB988063C038F18CBDC4CA3440CE234A2F6F8063C0D0DF7BACFDB63440FAA835A16D8363C094F08CBD10A534407AFE8AD6148D63C0504245DCEC9A3440F19E5E9D5C8F63C06413AFDF1DCD344026C180BFB19363C0E0DCDE7563D234401E13391E549663C0003D0B6FF5F2344000C8BA0C059563C0E0C593F745063540D4A598CABB9263C0603D0B6FC908354040577D22BF8E63C0E8B0E5AF2CEA344023BA4692E18863C00C77780F87F334409853E0AB988063C038F18CBDC4CA34409853E0AB988063C038F18CBDC4CA3440
-us     0106000020E610000001000000010300000001000000060000007F3F3204CA9663C02848E212B4273540C4D52EE7839B63C000295D276C0E3540DEB30C454AA963C070BF598AD21C35407C244A6FFFA763C038049ECED13A35407F3F3204CA9663C02848E212B42735407F3F3204CA9663C02848E212B4273540
-us     0106000020E610000001000000010300000001000000130000006331BEA9337C63C008B3BC530D1233406331BEA9337C63C008B3BC530D1233408653E0EB807C63C080FF3A05EE6133404E38F8D68E8163C050346E38FDBF33406FDF05EB3F7A63C0E8D5413FA1033440B0AF6F6E917C63C00C4EB9B6DA2A34403638F816FA7B63C03844E21282423440CC6EC8A09C7A63C02822C0F09B4634403664F17C5C6663C054245D2790FE334082F3B332C16263C0D8FA009829E03340E6591A191C6263C0F841E2128ABF3340233B952DA65F63C0480B12A962BB3340873E32847B5E63C06C939A3107A53340D26A2BEABB5963C0B8FC9DCE41863340842D2113B66163C060BE93F7B5513340AF678E53E86963C0F0C4CD649A4233402F948799207163C0745ACAC7EB1B3340CB567D02057463C078673EA2C2F632406331BEA9337C63C008B3BC530D123340
-us     0106000020E6100000010000000103000000010000000C00000038BFA9BB697765C0A688AB7629E44F4030DA9170A96365C07A2FB9EACCCB4F40E64D6C31B74F65C05AA0F6F4F4D84F40B891B015D73565C036DD00CC2EB74F4007D257E30F1665C01A73FDAE14A64F40B3A55EBDB31865C0AA3FCAFB23984F40065BE02BF13065C0E6C018170C7D4F407B32843C4C4965C03A658954E3984F40C6E0CBFD7B5565C03AFF22EE1AB04F407C4E6CB1B27165C046951F51ADA84F40F9DD2EC7507965C0826CC3C1F2B34F4038BFA9BB697765C0A688AB7629E44F40
-us     0106000020E610000001000000010300000001000000880000000D6A65378D9F61C03F31BC61916D51403329BE8CC29F61C08DF6EB770080504015A4D2BAED9F61C0C0D99D0238274E408469657A6A8061C04C106E6C6F234E403139CF7D3F6161C0B4ACA43C00004E4076464378E84A61C0D6F622EEF2C74D409A194AF27A2E61C090EEE880D6734D4074E279E8590F61C032564FE75FBB4D40BE85EA053AEF60C0EAF385B7D5E44D406274D9543DDE60C09CF9BF24A1A24D405C6665DAACC860C03AE411DD386E4D40B5A60CA860AB60C0FED83A3984344D40F005399B5F9760C038A40786B0D84C40451D8479A67660C0D426F357AB464C40379798A73F4060C03855895439F54B4088ECED1C5C3F60C0829B6ACF7AA44B40115A8ED0275160C07637A19FC0664B40B3AFE305BF6260C0AA649A65E6964B4028767665F37E60C0C668371CB7BF4B4061878716008860C0867171095C2F4C40D97DB0F840B160C040FF96C8E5964C407736CF7D7FC260C09E7F48ADC00F4D4087BF570639E160C08475710907184D4063232116191461C0D07F48AD291B4D4012FBC4A6993961C03813A8D9FF3F4D405E5854E9C47B61C0D2CDC65ED5C44D409ADAA2A4689A61C0F6EC4B4A1FDD4D40BDD468D761D261C066FBBF24CF0A4E407C383227AFFE61C036FBBF24E5FF4D40B35B54299E3D62C080DD3AB9B33A4E402E638EF3A86362C06C4104693C714E40D43A32842D8762C0AAC2528424564E40580E39FE938062C0009F30E239FD4D409B37952D449262C07E72379C03F54D402D27849C4AB762C06ED89D0253DA4D408E3FCFBA76D362C03860268B21AF4D4086CF91B0ECF662C028C68CF1F1934D4030CCF47980FB62C08C120BA35BDF4D4002DD056B1CED62C02A8C821AE75C4E400DB00C251ACB62C0BCA4CD984C844E401F02C523E0D362C0547C710968A44E400636F8B6AAFC62C0B077D4D2145D4E40CF3995AD811263C0309F3062E4074E40AFE8DC0E9D4063C0CC96F6F4D5AC4D400ADE054B332963C0C46C9A65AF6E4D401FA1FB93704763C0C2CAC65EBC124D40FAE53FF8D66963C0D8C9C65E28DD4C40106FC8E0DD8963C0C66260781DB64C40F2C7BA8CCB9163C092F4BF24707D4C40D165F13CC0C363C04CD19D82573B4C40787A9FC4DDCD63C0E2066E6C40FF4B40275243754EF363C0E491932B89C84B40541F1062450964C0F00CA8D960D24B400419D634232764C0B238A19FAFAE4B40BF129CC79B4764C0E226908E18834B403B4D09E8386264C018B2B54D49584B40CD211062239964C0B4BB8CF1BB334B4040B1D2B7269E64C098A7DEA93E494B40BA5E1A99257B64C072AF18170C854B407105280DD75B64C0847948AD8CAC4B40DB0428CDBB3964C08E1EB9EA8EF24B4026CABA0C091264C004EF22EE07014C40819DC106420264C06E3E3ED682354C409F17D6F4E6D563C0EA38046922824C4027254A4FC1CE63C006E4AE13C49B4C40BF244AEF20B763C00018E2C6F5C84C40445B1AD99BB163C0CA9ECD98062A4D40D69BC16655A163C0B4D69D029E754D40DC65F13C3BC663C0A26F379CD24E4D4006C9BA0C8DD063C0A0A60706D6644D4026D0F419E0E163C022C1EFBA4B364D4081D0F4F9C5F663C050D300CC37774D4085AED2B766FF63C06CEA4B4A49494D4057E5A2615E0B64C0FEFFF9911A894D40CC9A24305C2B64C028D69D02DE554D40F204282D013F64C0A687821AF9554D405E312173C24164C01071379C2AA24D406019D634F93B64C02AF0E8801AD14D4076D591F0935064C01C4D7843AFFE4D40CA0C62DA2F7A64C08453B2B026E64D40CA95EAE2309564C062F822EE3C224E40B6BBA99B15AB64C0E65BEC9DF5404E40380AC5033AAB64C0A0719A6575894E40D1038B56E2C364C03046A19F00C04E4045AE35A180B764C06E0D347F99094F4054FC50E9699D64C01CE974A608514F4096D69110009264C05298BC87BC924F40E7CBBA4C1B7864C0725E4FE7169C4F40FAA5FBB3266264C02235F3579C874F40CDE93F78564864C01AEB74265EC54F404B018B361A3164C0E213D13558BA4F4076FDED5FB81864C07A6689D40FE24F4078B26FAEAA1E64C0695EEF54420E504024423204943064C0A5359345C71950405878028EE31864C07B39307C783250405DC0E3A88A2C64C035F5EB37BE3150409394EA627F4E64C0895418F1CD235040168776C83F5864C09D0C37B6AB155040F961B70F7C7164C00906FD48C9235040A817391EBF9E64C053099ABF9A1C5040F5C91DF69BCD64C0936C636FF22B5040346754460ADB64C07F811177B0455040D45643B5890365C067C6553BE16A5040081CD69491D664C0210B9AFFA6855040A5BE46D2308F64C0A90B9AFFE7A4504012395B60E17464C0A90B9AFFE7A45040B89887393C7964C0958211F7F084504037A5FB53B03564C043F34E816E87504046DCCBBDAB4F64C0D70B9A7F13AF5040D457E0EB077764C06B68290273C7504061B46FAECA8D64C031D6C91572E75040AE47CF3A7DAC64C0C12148C7BC02514088934D4C76D864C0114BA4D6F7165140DD038BF68CC664C07BEF149483385140AC322133C98D64C05F30BC21983A514050877648656564C049345958C0575140D2F7B332C75D64C00F3F307CEA7651401361B7AF153D64C04724484755955140340B62DAE91D64C02DB7A7F3A69C51405D3D95ED40E163C013BB44AA10B9514053B40CC5D4C363C011CC553BC8B45140FF9E5E1D969263C085AA3399E5D65140BDFD8A562B6263C0692F1F2B75C951405B9AC166034B63C08D9F5CF591AC51404FCDF4D9CC3C63C095096092F5B85140AD4AA65EB80663C0D5C17E971EB551408CEE16DCA30863C02584748066A651403D769F04AED762C0318E4B64859B5140A001C5430AB762C01B5B18B1EBA15140C37E76A8A07362C0A90F9ABFB28D514054517D65143662C067B30A3DAE8751403DA6D2BA701D62C0D9AF6D065C7F5140B9753CBEDCF261C04BF4B1CAC2895140130B390152C261C0C55DB52786765140C2EBB3358D9F61C03F31BC61916D51400D6A65378D9F61C03F31BC61916D5140
-us     0106000020E6100000010000000103000000010000000900000057335BC0512763C0F6C6292807FC4C403003C5C3121263C0D26360F861F34C402CD32E47840463C094A06ACFA7CB4C40CB9287B9332063C03E21B9EAD38E4C40F12C21B3294063C0FA7FE5E3095E4C40F885135F865063C0A6689A65127F4C407B26E7C5785563C0C07AAB7608BB4C40A6D091B0683863C062BC528485E84C4057335BC0512763C0F6C6292807FC4C40
-us     0106000020E610000001000000010300000001000000070000000CDB2E27F8CE64C06451157A2C314E40034195ED94B564C0204004E994254E4052D0578388B264C0ECAF41737AF44D4037934D2C2BC664C0A4C0528491E04D4015E2689425DB64C0BC0834FF7FF84D4038AF35A191EE64C0FC16A8D9451B4E400CDB2E27F8CE64C06451157A2C314E40
-us     0106000020E6100000010000000103000000010000003201000018533472E9C750C000DD5C5B305B46409E2E75192B0651C0EEAF63957B324640BA06190A4A4451C018F74410571446405CD148E0E78C51C066C94B4A6BC74540E5D148E028AC51C032F1A759D78345405450FA4427B451C0D6F0A7D9C16E4540B67CF3CACCB451C0E2BF11DDE02A454056DFBCFAAD9F51C07E5171090AE744405F90A1D21E8551C0CE7D6A4FD7E344408A047CD3D68B51C0D24ED4528F1245400A0BB680A37851C08C1E3ED61EF64440EA3A4CFDC27D51C086B7D7EF8ED14440706BE2B9F5A851C0BC160469CCBC4440C8D5E556B4C751C06C8741F349BF4440438190410AF751C07E61821AF6A84440CE92A112E11252C0086FF6F48EA24440C44BC057173852C0CA4CD4D23D9C44402F0FB600FD6952C0686EF674187E4440EE178D64F51252C062530E409F8E4440370A198A700F52C05E19A11F4B8F4440E551FA446F0F52C05E19A11F4B8F444036C2370F78FC51C0CABC115D0B774440AEB2267E145652C03EA4C6DEA35044403CF4CD0BDB7E52C0689D8C715E5044406DC437CF937D52C00404F3579F5C44400A6FE2796F7A52C046C0AE93E67A4440C0C437CF6D9052C0BC47379C9B3C4440F4D8E516608052C0269652840B374440B1FEA4AF6A8B52C0C02A4FE7C8DA43401B367599FCB952C0DAF51BB442784340D743E9F3BEBE52C0D6F9B86A239943406A993E49CDCC52C07A824173CD9F434066B8C33429DC52C06A12046947C1434035AEEC90FADE52C044F0E1068BC043403E11B680CBE152C020CEBFA4CEBF43402296A1D27AD452C0DC1E7843E17A4340D2F86A8214C352C03832260B77394340C695A11285BF52C022B711DDE22D434017AEEC5028D852C0EEDBD035FC014340AE747FF02CFC52C0CCADD76FC39B42403C4FC057000253C090F5B8EAD7A042402093045C08EC52C0ECD496C84BF742402E45E9F3A10C53C002AD3AB96C34434074B289075C0F53C08052AB767A944340168DCAEEE51953C0504E0E4072674340903EAF06031953C0F80E04E99BF84240D2D848205C3F53C0DC19DB0CB81E4340B8D4AB690A1753C0BA63593E0AD74240287F5614FA0953C02C254F6717964240E88F67258EF752C01C3F379C8F464240D2A078368FEE52C0E202CAFB7EC64140D759977B3E1753C04001CA7B7E674140EEF7CD4B095653C05A8CEF3A3C3641405A0D7CD3CC8C53C0FA46AB76C2F540403CBF606B7AA353C0EA57BC8740EE40401226C751A1BC53C040D1D0356194404096E9BCFA7AF453C006F2F2D71E454040A83C75D95B3754C03AA911DD42044040FAE0E516335354C06C8256EDCC4C3F40A7585D0E635F54C0E445E94CE0BA3E40B828C7110A5754C0D401423F00003E40E4242A1BB83E54C030C4D49E142E3D4006F83055EB2154C0B42AD83B146E3C4006F83055EB2154C03896780F3D0A3C40D2D8ABA9080654C00CE7CD64F8033B4094A57836610354C008984FB3431F3A404280B99DA51054C07064B9B69841394029BEC334852B54C00890B27C7A1439409C734503044B54C0942DE94C85333940D98456941E5554C04CFCB519D6A33940AE88F38A706D54C02C3E5D27B8DE3940A65223615C8F54C07490780FE1BA3A40AE040879B8AE54C09C1F9ECEC2753B402E6B6E5F86B454C0E0E0F6C0F1F03B405AFA30D599A954C0AC68E212CC8C3C400C383BEC51B854C00C206461291C3D4082912DB8EBE154C0FCA01546C2B53D40DE4DE973660655C04CB089200A173E400A3ED862664E55C0548C67FE84AB3D40810E42E61E5D55C00468A8A533F33D40AA942D78999955C07C1B8DBD66663E40B2C5C374F1E155C0F454FA5D3A463E405A0EA5AFBD1A56C0E8CC71D589623E40D678A84CEB4156C07454FA5DF5283E40E8B6B2E3B66656C09C02423F252D3E407657866A146E56C0CC3AAFDF8EC23D401480E279205A56C078539794DC283D40AC2F2A5B27B256C038A54FB3B81E3D406460C09783E856C0F0AC892015533D408FE948A0700D57C008448683AE873D4038F1828D143E57C028077CACF5A83D40D062C057877557C0A05CD10191B03D405E9A900129AC57C034AAECE9E17A3D402091B99D6AE657C0F009B61917BD3C402A1EDFDC042658C0942D7572B64E3C404DA767E5F54858C0C8A926577BD43B40FEE471FCAD5758C04CF6413F48613B4048C6ECD0515858C0CC7BCAC7A3B03A40D45F86AA1E5558C0D83823BAC2353A404DA767E5F54858C02C3E5D27B8DE39406C8C7FB0EB6158C0ACAE9A310AD73940DB9AF30A5C8F58C0606B56ED5C0F3A401A6523A147C158C0788BDBD8B75E3A40069CF34A33D358C05C9415460BD73A406CF8828D47E158C0EC48FA5D3D8A3B40240A945E0A0759C0788567FE291C3C40961BA5AF2C1D59C038812D9135B23C4080AB6765493D59C018620B6F76613D407C7CD1A8646A59C09C5934CB7FC73D40F9793432B89E59C0CC3AAFDF8EC23D40DA1031550AC759C0C0D782E652F83C408D41C71129FC59C0AC721C801E453D40F9826E1F3F1D5AC0C8A3B27C6C923D40E690E2F92A2D5AC010E7598A291F3E40FF4C9E7564425AC0005A9794DEA43E40FF3F2ADB6B685AC0A87A1C8076153F400EF20E3325895AC0E01F8DBD62663F400E8CA88C7CA05AC0408B905A28C13F4026C1DB3FAB0E5BC0408B905A28C13F406A68E9F37B0F5BC020D171D59B573F4035BBA1523D425BC01897043589573F4038C4DBBF82C15BC004C060C4B0553F40323E53F784535CC0CACED035020540403A6C4CFD28B45CC06458593E3C434040A6579EF542AE5CC0E8A3D76FCC5B404012930B1672FF5CC064C25C5B624E404011EDFD212D485DC01066CD988544404096B62DB8ED4F5DC03CF68F0EA473404000435377116B5DC0D0349A65D4B54040694E2ADB50AF5DC0768BEFBA6402414059000F3318C95DC02EFC2CC51D074140554F2AD5E7E45DC04663932B662F4140E53442E089175EC02248AB763A3941408627CE05DD275EC09CCD9648E54D41401865D81CA32F5EC0A0389A65149441409AA3E2B3BB6D5EC054EC7E7DAC144240EB0A49DA09A35EC0567BA43CA0C6424018DBB29DC4A05EC02A34C3C145E442403E865D0801BD5EC07A31268B8D0E4340124DF0678AEE5EC044BF4BCACF794340D2E689015FF75EC020D25C5B2CE24340A2542AD579195FC0DC5BE5E3162844406F2BCE45720B5FC01CFEB86A2D924440B2986E59AD0D5FC0F62815FAF3FF44406DC5679F4A225FC068FA7E7DB94745400DEEC3AED50E5FC00E7B3062F3D0454015D678B0690A5FC00ACC4B4A356146400FCF3EC3FAFE5EC0B224A19F5A2247402C39422074105FC0929A7BE0A98C47409BE04F14111B5FC05EE45C5BD00748404D4CF067E4C15EC072F80A2391F04740FD44B67A97A55EC03EE25C5B498C4740D32C6B7CC2955EC0AA86CD9814AE474041D4783000A05EC07C2504690A174840C33742A059BE5EC0D21256A1A3804840C9F3378FFF415DC04CC43A390080484077E8606B15035DC04CC43A39008048406689A80CF4055AC0DCE9F991BF80484040E80E33A34E58C010BA631517804840FAE50E332ECA57C04CC43A39008048400AF71F84FDC957C0A0D9E8002FB148403AB9156D53B457C05021CA7BCCB14840E9332ADBF5A857C0FC9ADEA9856B4840986D97BB109557C0DAA4B54DDA5548407E174226606857C034B96315FC4D4840F9AFDB3F0A2757C0BED0AE139A394840332D8DE4F5E856C0281B2DC5EB11484015BFECD01EB556C0B8FCA7598F224840F8C7C374666656C00A14F35747014840F8C7C374666656C00A14F3574701484090491210E55F56C08C9C7BE0C1FF47408E20B6C0265D56C0B89541737CFF4740FCF3BC7A775156C0CCCFAE1389024840CBA83E09E14B56C00E03E2C60E0648408DC089C7054456C0404E6078040C48407AA83E09863956C034B86315F11348402AA83E092B2756C06A7EF674C2214840B1D7D405331856C040D7E800C626484088851C67470A56C00029A19FE11C484054E8E55634FF55C09EBB00CC13144840D0AADB3FE7FA55C0C68B6ACFB0104840061142A697EF55C0FA1A2D45C00748402CB1152DA4DF55C0085F718915FB474054288DA451CD55C04AAD8C7197EC474040326488FFBA55C000D6E88018DE47402AC8602B03AB55C00C1A2DC56DD147405E2EC791B39F55C03098DE298EC84740526834F26E9B55C0DC539A6519C54740BC3B3B2C018F55C064D5E880DFBA4740260F4266938255C0EC56379CA5B04740075AC0172E7655C0E8B2C6DE6AA64740712DC751C06955C0E40E5621309C4740DA00CE8B525D55C07EA1B54DE591474044D4D4C5E45055C07AFD4490AA874740261F53777F4455C0007F93AB707D474090F259B1113855C0FCDA22EE357347404EBF263EEB3455C05AE89648246247400018190ADF3155C07014908E8C5147405C2CC7919F2A55C09069E5638F45474095BB89C7CC2255C0F86C829AF34447401E441250C42255C0F86C829AF3444740341E53776E0D55C0EA09B9EA0441474072D6717C180955C0203DEC9D904147407B4A4C7DE00755C0621E67325840474005D3D445370855C072061C34E83D47401CE4E556A30955C018C2D76FF63847400F47AF865E0755C0181E67327A2F47401ABB8907E50655C0DCA98CF1E9244740A41AB6C0DC0455C0F268E5E397214740A0F15931BF0155C098FB4410471A4740C8C1C3345CFE54C0D4B36395321547402F73A84C02F954C0CC61AB76F70E4740DF79E2B9D8F054C06835B2B0F20D4740F8AC15ADD1EA54C0D061ABF6B50F4740207D7FB06EE754C0CC61AB76F70E47401A2BC7D192E154C008F16DEC83074740EC08A5AFBADE54C068CBAE130C034740D8F7931E0DDE54C0408030E251FF464053EA1F44F1E554C03E4960F88FE84640CA31013F69D954C0629EB54D51DD4640F0FA309575CB54C034D822EEFCD04640028AF38AD4BA54C01C34B2304BC246407AFA3095ABB054C04A89070648B94640833E755942A354C078EF6D6C7BAC464076A13E89FDA054C026EF6D6C209A46402CFA30150F9F54C070142D45C08A4640FFD70E33969C54C0A0D622EE357546405A3E75D9149A54C0A29F5284325F4640F0117C13939754C00E6C1FD151494640A36A6E1FE69454C05216CAFB15324640C0C6FDA1FC9154C08EC074A69E18464066AB15ED698F54C0F68C4173FF01464071F6935E918C54C0A8112DC545E9454097C6FD21CF8854C0224B9A6519C9454070F6931E328C54C090BBD7EFB4BC4540CA6334F2829354C0BC2B15FAADA14540D2B5EC501D9A54C04AF1A7594C894540F43AD8A2B09A54C0C48A41F3408245403BB989C7E09954C0464D379C117F4540724F86EA809B54C0D6499AE5717D4540269EA1520EA754C0D6C011DD70624540A1FA309599B954C0300B900E0A37454080532361F8C054C05E07F357961F4540D8C0C374AAC754C0A0DAF9913A0A4540F945AFC63DC854C08AC9E880CE084540EFD1D48516C954C02633EC1DE3FC444042C4602BCDC754C03CF2441091F944400068D168E8C154C0C421DB0C99EA44402A5A5D8E71B754C0C07D6A4F5EE04440D6373B6C2AAC54C01C06F3D769D64440D0DE48201D9C54C01C06F3D769D64440C4117C13A78D54C0A8BE115DB0E34440C2B88947587E54C0B48BDE29C7F144406E6D0B16B27054C03C44FD2E4FFE4440C006A52F796054C0B4146732470D45401C3D7599C65154C09ABF115DC11A454006D3713CCA4154C006156732A21F4540DBA2DBFFAC2B54C03A60E56356264540338E2DF84F2154C0BA9DEFBA852945405E87F38A0A2154C0A88CDEA9962945405091CA2ED60F54C052EC0AA3DF2E4540EED1713C4A0254C0326E59BE7D384540A86EA88C75F153C00008F3D78B444540945D97FBC7F053C03001B9EA0445454075CA374F90DC53C00ED5BF24615345400A454CFD1ECB53C0A89EEF3AD85F4540204F23A159C253C048ED0A23AF6645401AFD6A821EBC53C04C681FD18A6E454098E8BCBA8FBA53C014B000CC5D744540B4D0713CDABA53C0A050D4523C7B4540DA8FCA6EE1BA53C0A4ED0A23857B454056E51F849AC353C0EEFB7E7D86A0454056E51F849AC353C07A213E5687A04540BA74E27954C553C02EAAC6DE6AAA454065D40EB3FCCA53C0B8B49D02B1BB4540C8333B2C26C053C0401B04E97AC34540AAA715ED1FB653C030850706A9CA4540C4B1EC1019AE53C0CAD322EE02D045406C3D1250559D53C0BCC2115DD2D045405B704583C18D53C0CCD3226EC1D0454041B48987487853C072E196C88DD045404E434C7D2A6653C0F8CCE8007CD04540FB19F02D115153C08EC94B4A59D0454054DCE556B44453C022C6AE9336D04540A6757F707B3453C0F8CCE8007CD04540F01553B7972C53C046F6449077E445402EA5156D832553C0ECE8D0B547F64540A53EAF86B91D53C090DB5C5B590746408ADBE5D6D01653C09E56718970114640D1BC606B961653C05CAF63953E114640C606DF9C5DD452C01C587109816846408EE759F17CB752C06C0DF3D70F804640C0C3370F435652C066364FE7F1804640989F15ED52E051C0E4E733FF0C81464022AD89C7EBD951C032DE5C5BA4A0464040C1378FA8C451C0BC55D4D2A4A44640062ED8623DAA51C0E6856ACFE1BA4640CE269E35859351C09C08B9EA1DF5464045F36AC2FF7F51C0A4C2D76FB6584740DC923E892E4F51C0E2C03AB950B94740BF394CBDEB3951C02A01E246AD974740B0802DF8000F51C0DE56371C6CAD474003EA30D596F250C0B4CDAE137F8847404F68E239A5F250C0EA9A1817F5D94640127C9081CBC850C0B2D385B79991464018533472E9C750C000DD5C5B305B4640
-uy     0106000020E61000000100000001030000000100000015000000FAD8495F04D04CC0942C7E195F373EC030488769EE7C4CC004E1FF67141C3EC0DA23654793FC4BC012F2734211E23EC0240B1A49FECC4BC07A7AFCCA97DA3EC0C8BD9B1746494BC06665B14C987E3FC02AA45099DBE44AC035320A0B0C0640C04EA6EDCFD39A4AC0A085C229245D40C0B0AA8A0645D34AC060081145DB9940C000FC4225D4AF4AC08EF8FF335AE240C012822EF738E74AC0F6336DD4CA3241C0749C7975CA774BC0144DB852F07941C0E4077D9248D64BC07019851F576041C08E1D2BDA8E1B4CC03F79B1180F6E41C02445EA32E1914CC0CC299630193741C0FED5ACA8AFE84CC0D452F2BF343B41C0A2F2945DAA364DC0AAC5CC0069F440C08E3D130FC02C4DC004572C2DB0A140C0B8AD5099FA104DC072A8E44B318540C0EE434D7C3B124DC041A6E44BB20540C0B4D20FF2FDEF4CC0D04E03053D043FC0FAD8495F04D04CC0942C7E195F373EC0
-uz     0106000020E61000000100000001030000000100000038000000AA0C99DA30A150409AC285B76FAE424010399220F4A250401C20157AC2FC424066045FEDD24D504094A99D828B3343405CEB13EFE40A5040A27030623A72434054ACCB4E4EC24F409226B2307FAE43401051D9C2E72F4F40F26859BEE5064440302043C6FCF04E40C2901897DC8A444070820CF609C64E407EE66D6C18A2444040160959A43B4E403A8ADEA9339C4440603E65E8AA0A4E401C2BB2306BB644400856B066FBFC4D40068941F38D1C45407CF3836D83504D402850D4D23260454008BBB303ADE44C40885C48ADD41545402856EAD352774C4086B43A39BBE944400C423C8C568C4C40266FF67441A94440E831C8B1EDFB4B40EED8F99181A74440E442D9C2E6F64B4090CC4B4A787F4640DC63C17766404D40AC374F671CCB4640C415A68F51584D403A90417300C046408CACA2F20E7B4D402EFDE14600B0464014584D9DFDAD4D40A4DABF24529846409C56B066B71E4E40866C1F515B64464070921D0777874E4096836ACFF13346405461EAD3B3014F40AE2FB2B092C045408CD427DEC7974F4078A729A835D34540F07E731BA7395040067159BE31DD4540E0537AD545865040B250D452B37F4540688A4A3F7F81504070DAF99150FF444078769C77AEA05040481BA11F6BFE44405EBE7DF2B2AD50406808908E8F954440C85CB44218FF5040BAD1BF24689144400E234722A2105140301FDB0CC7544440EE9ABE997A285140B0338954975544400A6FC5537B445140A4FEB8EA2EB1444010D0F1CCE498514026C64B4A680A4540F614369196BD51406A07F357112245406ED48E8397D05140643A268B77154540A4F5B0A5E19A51402295B54D8FC24440C411995A1ACA514076F04410619244404094E7F5AFF75140CC20DB8C4AB2444072AD32F48B4352408E71932BDA6E4440A445CC8D97F15140BC65BC07AB124440DE55DD9EE8C0514064A3C65E471F4440A4C27D727DA65140AAF81BB4F81B44402033BB7C529D514052D0BF248D3F44409CDAC8F0A9AA51405E0B2D45E87A444024D9C8701655514022ECA759295D44403EB30998BE405140CE98EF3A070B444092F3B0A554225140D83EFD2E48C443409E1B0D35E4EC5040E02DEC1D4DCA4340406DC5534DDC50409EAE3A39F0914340BA1870FE430B51402C5C821A66734340082A810F1719514056274F6719144340DC03C2B61EF550404481DE298F9242406E69289DD9C450401811A11F96AD4240AA0C99DA30A150409AC285B76FAE4240
-vu     0106000020E6100000010000000103000000010000000500000074B37509F0E6644004B9D910A0C82FC0E4FEF33A09FB644034D8329B617730C0D820165D7CF06440DAE943AC0C9930C0D27CA59FC2E564404C143D72F52830C074B37509F0E6644004B9D910A0C82FC0
-vu     0106000020E610000001000000010300000001000000070000007083DF8C61D96440BC9BF15B6E562FC0E8A89EA5CBD46440987A6C7010C92EC0C8C0E9E321D464407070CF39C4402DC0E4645A6172E36440189C2BC92ADE2DC0043CFE11A4E86440D0763203E47A2FC0FEC0E9E309E06440A4C7EA21AD3A2FC07083DF8C61D96440BC9BF15B6E562FC0
-ve     0106000020E6100000010000000103000000010000005C0000003E4386AA38D551C028CD861B758D2740F0ED30550AD751C000BA750A7A142740B81053779CFC51C0D0BFAF77B8D82640CC4D5D4EBCE751C03885DF0D5DF02540D4EA931E84E851C0785EBDEB9AE42440A8DD1F44BF0452C0181579A736BB2340E887CA6E85EC51C058DEE2AAFF2422402409198AEED051C0002A615C3E462240DA3175598FC251C0289A64F950B82340F8C4D4C567D651C0D899C7C2826C2440AA3512D0A3D951C0A85F20B51CF02540F241866AF08951C0106A5A223FC02640B6785654CE9251C0606720B592B12740F8E8931E5E7C51C0589D53E8195328406D293B2C656551C0989AF01E52EB2640D7BE370F833851C0382D504B03E32640E3B360EBED0E51C0A8B7124180C525403E1AC7916C0C51C0D028ED81FB1B2540ECC371BCF5D250C048B1750A7C17254030007C53958E50C088DE6ED0184C2540F2C8AB69EF6950C050BF861BCF66244036B0602BFD3850C060B74CAE88272440C10BF02D161550C0F086197B79C72440627C2D385A1450C0683027EF67482540D6C2273D278A4FC0A078086A48672540CE59C1D6C2F04EC02819DC70666E2540E08EF489745D4FC0C8E645742DD72440A47946C2BA314FC0387CDF0D7BE5234074D772BB5CCB4EC0C074A5A002BF2340F23102FE506A4EC0F89564F93EC322404EB35099EB554EC0F0C8D1990C292140E46D0C5536134EC048882A8C9C342140605F987A0FE14DC0405DCEFCEBBB20401AC461AA79464EC070F4E03D501E1F4020CB9B17A9514EC0E0052CBCF5A81D4022C0C473D8254EC09095281FF72C1C40B05DFBC3A1454EC0A0E77D74246D1B40EA3CD92165944EC0A0252582C8C81A4062282B5AD8914EC0504DBB7EEBEF18403CD038CE84B44EC0B0EFC8F215D61740007646C2E55D4EC0B09AE77715CD144096F05A70F34C4EC0909C21E521AC1340EADCAC28C37B4EC0B073FFC2572512409212E05BEF0A4FC0402C58B503A6104070F55AF0FA664FC0A04B7AD7210710406E851DE6ED8B4FC0C0E7E63A212A0E404C0C0938B5F14FC0E04B7AD70515104083ACC3F43B2850C0E0A66C630B981040B40F8D643A3450C0703B69C6CC39104088C7AB69951750C08052EAD7AF600E40C0C0713C2A1A50C02045C17BA80309407A3B86AA471150C0C087B307DEF9034014D8D58420B64FC0408116D1DD490340C8DE0F7234AF4FC080B0E63A719B0140FABCD445510550C080506AAC72A9FE3F8F97156DC10C50C040C5C9D8BBE2F73F4E16C7D11A2750C040AC55FE7A42F53FFA576E9FB35650C0805711BA4686F13F3A2F12D0166350C000D6DA929241E93F755C0B56D99450C0000AE569B62EE73F40F307B915B850C0C0327BBDC30DF43F3D017C539ACB50C0A0073C904E010240CFE2F6279DDC50C0C02B870E60CD04402135AF06D6F350C0E0EBA593B39006402F6B7F3067D350C0A0DE20A8318C0A40878667A59AD550C060C4FE85B7560C400E57D128CCE750C08079A93042B70E407350973BACF450C01039922208041240648A041CA9EF50C0507C628C6FE21440DDA889C760E150C050CDE03D3C3A164088866725DAD550C0F0F80260C261184089BD374F7CEC50C000D3A6D0BB1119401FE7939EF61051C010B95B52F29C18405A259E750F3F51C090DF1AABC4D31840483A4C3DED5851C080707AD741661840A7D4E5D6F88551C020315FEF6CD71B4025168DA426AB51C040E8E03DE4591C409651FA8473FD51C000C121E569F71B406F4E5DCEB10C52C020C721E5995C1D407AE1BC7A721C52C000F51AABF4B11D40CCC2370FB31E52C07028B1A7AF871E40A72501FF181752C07897D8D3590120400C41E9B3261C52C0D8A1124180CF2040C8F2CD8B452A52C0401B8AB825402140FA66A88C7A3252C0A8AE4CAE882B2240F8077C53845352C01853BDEBD24D2240B4DE1F44C44152C0E0C8FAF5397923409CB5C334F03952C050C8C08893E62440D6DA828D562752C068D2FAF5D9A425401BBF9A98900E52C0601205CDA7372640045597BB54FE51C0C81605CDA33727403E4386AA38D551C028CD861B758D2740
-vn     0106000020E6100000010000000103000000010000002C0000002207662736035B40FC9460C4688D3540FCBD84ACC3AD5A40E0019ECE64B23440F871067B6D785A40E4F6636186C03340DAF6F14C5E6A5A40607CECE9E30E33405CA29CF7509B5A404C3AE2120E013240DEB74A3F2AD75A40940B86838CB230406C7B40683F115B408C5067FE69143040CCFD8E8322385B4070003563AA8D2E400C57810F75555B4028F0346320DA2A405ECEF806CF4C5B40A843FE926E552740CCBF84AC6E175B4048DED19942042640DC76A3B123CE5A4048490FA49DBA2440BC08035EED995A40500B3F3ACA0F2340644170FE204A5A40987AB6B1133321401CC65B50E4325A4020FBCA5F697B22403259BB7CE0445A4048D1346344D623406ECC95BD65155A4028B412411CF924400C784068CB4C5A4078AD3B9D53C7254030DC0998FA8F5A40E0DDD19972EC2540227CDD9EDF735A40D0DF34639E222740681EB12573DF5A4070C41241A6AC284040A0FFC054E75A40383CB31431122B40A6AD739B7ED85A4020B68D55A6672C4006A7392E21E45A40700DA93D83672E40D6F1B75F03D45A40C05E27EF2BD12F402A4D47A295A35A409C48905AB29A3040548DEEAF3F7B5A40F8603EA23D7C3140D48F8BE60D465A409469DBD8BEAA3240963CD3C760F9594010AD82E6E2433340746292A0BC0B5A4030D4413FEA9F3340E081170CA5345A40A8F029F4FAE233407281170CD71B5A40AC8A26573CC234404E50810F0CCD5940FC6BA16B3DC434406012773850B05940F43534CBD5AC3540EE44AA6BE88A5940B47D780FFA763640901C4E5C3FAD59405007019873B53640249F9CF749E0594014D4CD6429B436404C4EE4D8841E5A406CDB07D2B3D13640F46D69C411555A40C4DD07D2205A3740CA895179EB735A40E8A8D49E15FA36405413DA016DAE5A406C60F32355CB36405A460D354EA45A4008801546DC373640DCA9D664C7C25A4094D36A9BD8CF35402207662736035B40FC9460C4688D3540
-ye     0106000020E6100000010000000103000000010000002C000000D4FB31B5E58D4A40C0377F49ABA63040C4E5836D4E314A40306D4FB3E5613040E4A779968A184A40F824BA4E7AE02F4048E5836D86154A40584EB314E1312F40D83B76F914964940B0BE8D55BA592E4044C49BB88BC94840800C4674E36A2D4034771D07F156484000EB5DBFA3012C400C43EAD3951E4840588ECEFC6BE52B407C2A9F552EF8474028704911B4032C409C8F05BC5EAD47404062726D372F2B4008953F29C95B4740B81FCB5FA5CC2A40FC5F0CF654F0464010EC972C0EB22A4050DA20A401D0464010D7E9E4F6942A40080D54D706B4464030AF2A8CC60D2A40104324417A92464068EFD1996AE82940186F1D07A97E4640A0C712413066294010E2F7474E3F464040CBAF777C712940607E2E186A164640A89DB6B1012C2940BC947996D1BD4540782D79A70A4629406C3B870A879C4540C88E086A20712A40187257742FA04540B018F4BB00892B4070566FBF418B4540D840B31411202C408C7B2E1835724540B09C086AC09A2D40E440C1776C4D4540287EE6473A6D2E40D0556FBF0A674540E899CEFC1F862E4050112B7BE9594540F03A05CD11702F408C3A870A6E694540E81D80E1CFD22F405C8C3F29C1634540588837680F5930404CB69BB8F39B45400808E94CB9AA3040CC715774D28E4540A0C5A408A416314000A927DEBDB045405C27D1017A943140B8132B7B50E54540005667FEE9513140F0E731B503084640E06A15460D693140CCA2503ABB9B4640F430A8A5EE6E31405862A92C33B3464050FD7472555531405C7CF4AAEE2E4740947EC38DBA3B31408C6F80D0FF5F47408063DBD888483140A8953F2900804740F0165D2733F3304090AE8AA7BCBB4740C462DBD8DE1D31407CA216CD771748402C9771D5AA2A32403C892E18EF8E4840A44A56EDDD9D32403463355200004A4004316E3800003340A0494D9D1E644A40A841B9B688593140D4FB31B5E58D4A40C0377F49ABA63040
-zm     0106000020E6100000010000000103000000010000003D00000030B7E63633614040A04E4314117622C0BC06021F9E9D404088B50C447B5A23C09485B3032BBE404060E9050A160D25C07C662E185CA8404084E12E66D59725C0FC541D07A18E404020FDDCADE23627C068F253D738A74040743E4A4E1EDF28C06CD66B22F27E404048D4A97A579129C06C8016CD15584040DCDF46B1FB6C2BC054773F29659B40404CA19FA397F12BC0E0A3747BF22D3E4034534A4E9A972DC0A09600A135463E40047F09A7FC032FC058CD6D414F843D4030A96536134A2FC020E655F68CF23C405C73696B050B30C06078B5226CD33C403A67F590C66330C0C09F11B2C8773C40AE4FAA12E97730C08898747B26993B40182077DF734A31C0904759935F0B3B40C28C7A7C22F031C068FE7718EFB43A40ACF67D1913F631C098334882C6613A401648363896D831C0482BAB4BA44339400E2277DF8DBC31C010270E159E153940D0CFBEC06CA931C0F815FD03B3133940A89F28C42D9431C0D84ACD6DAEAE38406E945120795A31C080331F26AB0838403A082C61BC4B31C03074636A0D373740303288F0EA8531C01004C396FE8F3640028FB4E900E630C03012D4A749E335401C70CC348F1430C0B0CAF22C13EF3540F81C8BF5FFCB29C068F9B185210438402C6809A774D229C0388FAEE850EE374044872BC9B62129C008EC3DAB74143840103273AAF16128C068AA969D76E7374090017AE4CE7127C0C0EB3DAB940438409041BE287F7926C0902F82EF86E93740D8DBF4F888DA25C0183182EFD4413840E045F8956BE725C08864B5228450384034E2912F918626C078E1C9D07DC83840A4EF050A367A26C0D843F6C9096B3940DC566C7070A926C0783EBC5C97C03940F44221F2E69127C0983E1F26978D3A40D017282C50D927C08885636A172A3B40583010E1AD3727C008D57E5288633B408CCEA97AF74328C08086C633B5273C4048818E92828B28C00877B52208863C4088D3A97AAF6529C0784CBC5C2DEF3C4060D8A97A777F2AC060D844E519B33D402C946536B3832AC0F89DD744B29D3D405898D910985B28C060D3A7AE6F573D40B48F026DB3B828C0E8CC0A7875A43C40B42CD67371F127C0D0B3BFF94B5F3C40C061A6DD589627C0A05BCD6DFE7E3C404C859FA36B9425C0F8BBF96676AC3C40703D95CC3B3623C088E0B8BF2A733C4088FF272C705422C04059303720BC3C4024CA912F990D21C0B06407DBBE003D4090DD3F7766D020C0680E781899583E40C8C057C2FC7920C02039D4A771BD3E40C40CD67315AE20C020865259122D3F40C856B7EE213621C078CF33D46C8E3F407CAD0C442B8621C0F4521D078F184040EC3A320358DC21C030B7E63633614040A04E4314117622C0
-zw     0106000020E61000000100000001030000000100000025000000A0C35C3000313F40FC4688F0624036C0404D82EFECA83E4088A95120CD2636C080A4747BA8523E40B07D585A884536C0A0AC4B1FCBD63D400C650DDC2A1A36C030D744E5A36E3D409C9BDD45601736C0801FC3966ECB3C406AC97342B3A335C0D03A488278053C4056620DDC687C35C000EB2C9A2BBA3B40C6CCADAF0FDA34C008C2D00A89B93B400A35B14CC27F34C0400B4FBCE74B3B401C5A70A53A6434C048064FBC2F2A3A407E25DAA8074B33C038BD6D41B3D93940A6A428C4E3B632C0704159932FA639407E772FFE388932C0482BAB4BA44339400E2277DF8DBC31C098334882C6613A401648363896D831C068FE7718EFB43A40ACF67D1913F631C0904759935F0B3B40C28C7A7C22F031C08898747B26993B40182077DF734A31C0C09F11B2C8773C40AE4FAA12E97730C06078B5226CD33C403A67F590C66330C020E655F68CF23C405C73696B050B30C058CD6D414F843D4030A96536134A2FC0A09600A135463E40047F09A7FC032FC0A0184FBCC5563E4064CD8758FDC22FC0487F18EC4D2C3F407C11CC9CCDB82FC058BB858CF1A23F4004FCF1F36D1230C0E0B8E8551FDA3F40DEF21A50C55130C0906E05BC032A4040A4CD5BF75E6430C0CCBA836D7F6C4040BEB37342A1B630C0D057BA3DC86C4040265DE47FA3FA31C03C98614BD3534040962914160EAC32C0AC20EAD3554E404042F643AC5C6B33C04C652E18E86240408ABDD60B31B733C0042BC17772544040A20EF2F3E54D34C0E0C0BDDA1C414040C02D77DF316534C004DF42C65B1F40400CB66231D21D35C0A0C35C3000313F40FC4688F0624036C0
-\.
-
-CREATE INDEX idx_country_naturalearthdata_country_code ON country_naturalearthdata USING btree (country_code);
-CREATE INDEX idx_country_naturalearthdata_geometry ON country_naturalearthdata USING gist (geometry);
diff --git a/data/us_postcode.sql b/data/us_postcode.sql
deleted file mode 100644 (file)
index 054be5e..0000000
+++ /dev/null
@@ -1,38126 +0,0 @@
---
--- PostgreSQL database dump
---
--- Data has been created from Tiger 2017 data as follows:
---
--- CREATE TABLE new_us_postcodes AS
---  SELECT ST_Centroid(ST_Collect(ST_Points(linegeo))) as geom, (ST_MinimumBoundingRadius(ST_Collect(linegeo))).radius as radius, postcode
---  FROM location_property_tiger GROUP BY postcode;
---
--- CREATE TABLE us_postcode AS
---  SELECT postcode, ST_X(geom) as x, ST_Y(geom) as y
---  FROM new_us_postcodes where radius < 0.9;
-
-SET statement_timeout = 0;
-SET client_encoding = 'UTF8';
-SET check_function_bodies = false;
-SET client_min_messages = warning;
-
-SET search_path = public, pg_catalog;
-
-SET default_tablespace = '';
-
-SET default_with_oids = false;
-
-CREATE TABLE us_postcode (
-    postcode text,
-    x double precision,
-    y double precision
-);
-
-COPY us_postcode (postcode, x, y) FROM stdin;
-47900  -87.0574364000000003    40.0031060000000025
-37762  -84.1327196353633298    36.5774925883135893
-16876  -78.2902258689024677    40.961514704268275
-51346  -95.463210481821875     43.1815832690770094
-67147  -97.3334656325141339    37.8503285216887235
-80211  -105.019753467293313    39.7669231646255383
-25871  -81.2111198993789003    37.7700426298136378
-46148  -85.5148920915316069    39.8081699443027404
-47390  -84.8389534224163242    40.2125372823871317
-49503  -85.6582920494782201    42.9630650858001673
-05678  -72.4720168518518477    44.1561759074074303
-67567  -98.9837682972292043    38.3835100982368971
-28206  -80.823373540515405     35.2530339728336628
-41255  -82.8412133925454128    37.9068336121557934
-45338  -84.5403772155605537    39.8495612063580538
-36513  -88.0177280949008036    31.1697053016997074
-95335  -120.097326261128984    38.1195299491763464
-47110  -86.2079178838322662    38.0959534143712801
-50484  -93.9121297561118382    43.2369924214202825
-21504  -78.8244373333333357    39.6479223333333337
-87313  -108.093270347264848    35.7023454615857432
-34275  -82.4449278835101893    27.1419816463470056
-78227  -98.6360545311825092    29.404214563063622
-34215  -82.6866033519458909    27.4719319289339943
-32248  -83.6002802000000003    30.1000235999999965
-54525  -90.2240988380566051    46.4310144655870261
-65658  -93.6472659880752332    36.5519865821975998
-77027  -95.4475429565216729    29.7394529653948112
-49323  -85.7730116341571147    42.7214473474744025
-24360  -80.9107726651384525    36.9278784555680915
-72932  -94.3680727657476268    35.6032699593796593
-55412  -93.3015832205743294    45.02665996497322
-23323  -76.3367823804027239    36.7482941874446993
-15485  -79.3303977558139763    39.8168044883720995
-37143  -87.0325456176044696    36.1251417438335238
-95113  -121.889539360856105    37.3345608761467389
-41824  -82.8731792634547872    37.1900554202972415
-24860  -81.599025933962352     37.6635187943396303
-32401  -85.6526866106815703    30.1614107326308591
-37845  -84.4440963702579666    36.0824901259483681
-49007  -85.5874444122159161    42.2976090681617265
-88393  -105.210650000000001    34.6036039999999971
-37880  -84.678285866282863     35.6947585192690013
-73657  -98.7054194999999908    35.9283493749999963
-65590  -92.9559065765153179    37.6177673558080841
-31553  -81.9718285523444337    31.1770923708346679
-14080  -78.528827178026134     42.6405269489757117
-72751  -94.1220583960142108    36.4604871402471673
-57314  -97.9788928896672928    44.0286057136601841
-81521  -108.722292468840166    39.1645936498771619
-13664  -75.6531097250755806    44.582032187311178
-95358  -121.045901669969439    37.6236496905961673
-40845  -83.5207506003997651    36.7852705184815107
-71358  -91.8894258606639482    30.7137396131790759
-55010  -93.1536202499999888    44.544628000000003
-92834  -117.882390263157916    33.8816304736842113
-97456  -123.331185029630916    44.3311276156087715
-80735  -102.232858721459394    39.7087178101779443
-73645  -99.8716725459705117    35.2213950987514437
-70520  -92.0424497929430458    30.3284169196158579
-48125  -83.2616648237682995    42.2775826846007377
-61358  -89.0279727737306672    40.9931789260486212
-71331  -92.1035612261106138    31.2260836941453448
-04851  -68.8920160585106487    43.8611577446808383
-32178  -81.6864091808510722    29.6575411063829861
-42024  -89.0309915024495524    37.0618178541001626
-51354  -95.5362623428725328    43.4114978248194845
-70609  -93.2184188387096953    30.2009571290322612
-10516  -73.915437641147733     41.4530824288687256
-92591  -117.124664676927523    33.5282683135682475
-84128  -112.044125606109461    40.6935055783585895
-72863  -93.5231344241254448    35.357645572979628
-93602  -119.443227425329226    37.0754436380538408
-72946  -94.1542152859036605    35.6381651179199395
-30708  -84.7039648279220785    34.9488009751082558
-60035  -87.8067167723051654    42.1796036200267395
-64473  -95.0950780907674869    39.9898776910790801
-00951  -66.224516025974026     18.4343683246753258
-48812  -84.9766322142857291    43.4037957142857138
-16236  -79.5100185999999951    40.7821544235294269
-56644  -95.5079556120828954    47.7449374085850806
-16835  -77.8793974846153816    40.900380430769232
-59424  -110.083167588505773    47.3627265379310884
-74104  -95.9500142857141043    36.145010654673726
-14240  -79.2486387499999978    42.1995299166666626
-77003  -95.3470141593694507    29.748780558887848
-87104  -106.672813747695656    35.1048921867093995
-66214  -94.7131643105071106    38.9602947639002224
-71103  -93.7724485918911768    32.4933335688274028
-92821  -117.893172447796559    33.9249508894065883
-08837  -74.3374715767124599    40.5320157424656955
-18655  -76.2021500525620468    41.185180346978683
-30234  -84.0323873244473276    33.3184956957087692
-28773  -82.3374100203983659    35.238132146460174
-38548  -85.7925605151889386    36.1752328021899814
-50565  -94.9912303145337091    42.8571769918655718
-77479  -95.6428808156885424    29.5733165015682431
-37010  -87.1126987454282755    36.5619422915369796
-33406  -80.0906804829608632    26.6560016836266023
-55446  -93.4811102750636707    45.0439745754757794
-05758  -72.7938073705494162    43.4531805625636238
-98498  -122.555912645580335    47.1659706325871895
-68773  -98.1171538058252679    42.3604935776698852
-44660  -81.7840106875000004    40.6251438124999993
-34987  -80.4555881486369628    27.2897079275285002
-62824  -88.3550661827802912    38.6839757229437708
-66716  -95.0516676399999483    37.9273937113043189
-18219  -76.0583887737929842    40.9903569600000068
-26372  -80.3731146770980303    38.9600089061166273
-92415  -117.274673303921588    34.0905126666666689
-62811  -87.9096216127167764    38.3847231271676179
-25894  -81.2994116874999975    37.7362993125000017
-72145  -91.8218200000000024    35.397653499999997
-59433  -111.702934969170826    47.8894695163233024
-57337  -97.7889078579235047    44.0023782367941791
-56139  -96.1737091134563542    44.1002966675462247
-02047  -70.6885934065933839    42.1351232912087568
-79245  -100.541405062544769    34.7249122149533775
-26422  -80.4368691428571481    39.2887982857142859
-13459  -74.5980262529972009    42.7733216048447034
-73717  -98.7169844265488621    36.8207499774313121
-33860  -81.9992676508584992    27.9072265225219986
-49239  -84.3634160000000151    42.0998826666666659
-58230  -97.8360307492795584    47.5082048126801055
-60561  -87.9819211715723526    41.7458627172013976
-43437  -83.6051380410958842    41.2543592785388213
-42217  -87.4859032727951842    37.0456560780833968
-94953  -122.964845285714276    38.2500227142857057
-92060  -116.849062103076164    33.3579242670605467
-84070  -111.885514136562804    40.5786196980963609
-68729  -97.9089469848484697    42.4679320800000255
-41306  -83.6323979130434481    37.7743220434782572
-20110  -77.4790726030739023    38.7506185045802383
-02673  -70.2410178691729499    41.6555155204876328
-84401  -112.011581697201436    41.2155948576030724
-38646  -90.2802202194109213    34.2627837805887481
-57319  -97.4720634027073913    43.5556001764942593
-96035  -122.169541884403444    40.0426665729358007
-30068  -84.4339902795299224    33.9688992457368428
-30576  -83.4744069905274557    34.8337368762477695
-79032  -101.935984187050323    34.2822708489208594
-43738  -82.1400416534653743    39.8557205841584121
-87547  -106.204480218181757    35.8180824540540144
-78947  -97.0474684984851592    30.4161369821761731
-84346  -112.050146111111118    41.3554346666666675
-72372  -90.9321884939705569    34.9731267179545142
-75902  -94.7301045000000101    31.3440691250000008
-54624  -91.1666805194401775    43.4137301264904281
-62858  -88.4934128270328983    38.8162333467114991
-34473  -82.1892338359836856    29.0039168661797149
-59831  -114.332306379213421    47.3103905547752959
-19075  -75.1870295385591874    40.1131620999682497
-39086  -90.7626503795372486    31.9600322592168453
-35473  -87.5850988586362718    33.2627687278097497
-31066  -83.9962893120258371    32.7968004972914997
-05253  -73.0093204696969451    43.2513271852814185
-33991  -82.00934161780728      26.6306412379471951
-24853  -81.5105323727678694    37.4323754084821232
-13666  -74.9572351235059244    44.2186015816732834
-85303  -112.220497942476911    33.5274910548856937
-15239  -79.7365768278059903    40.4810353076290923
-47322  -85.2442111111111132    39.7453378333333376
-53963  -88.7395936348610945    43.6330144490178142
-33813  -81.9381368986433216    27.9625779932470415
-88886  -89.969341      32.8844700000000003
-67518  -100.194848616822441    38.4153357663551347
-28354  -79.6462243599999908    34.9280415599999898
-96070  -122.31119443636355     40.803419236363645
-54126  -88.0393015051412959    44.2942477432519368
-18974  -75.0818162473527764    40.2129672362970325
-15620  -79.3391625664819458    40.322605059556814
-42631  -84.4605952220183696    36.7643093853211624
-69040  -101.150966213333334    40.3601957733332952
-10521  -73.909539444444448     41.2388341111111174
-84706  -109.870627999999982    40.4661422666666724
-15004  -80.3835459135802353    40.3423725802469164
-62531  -89.3748112172050924    39.6709480755158026
-82844  -107.17545116417908     44.8202417089552156
-13123  -75.7645249221557151    43.2253901257484827
-58005  -96.9369099767062607    47.052816915815427
-52568  -92.2562270822784853    41.1972540759493668
-33161  -80.182437710737986     25.8932975598561583
-67420  -98.0636748611442641    39.4416082300777049
-17772  -76.7213825921495953    41.1165159908004227
-40471  -82.1961303333333149    32.4628997777777784
-37373  -85.0956805530883287    35.3900254813135646
-67572  -99.9219529269521303    38.659962465995001
-95401  -122.7612690680713      38.4450410766459072
-39469  -88.9670370000000048    31.7869552941176394
-15424  -79.3453436205257105    39.8188183379813765
-12844  -73.6291346071428592    43.492897035714293
-81801  -106.921525799999998    34.0516228000000041
-70339  -91.2034233632446103    29.9380918188561225
-68352  -97.2062186708324134    40.1628733914461051
-32957  -80.493828333333326     27.8296326666666687
-42036  -88.2349987442990766    36.7244524102378378
-08015  -74.5629328345846147    39.9578511776233753
-81647  -107.559443291455295    39.5803269248056608
-88040  -108.261836634615435    31.7488784153846204
-43517  -84.7331622231386774    41.4403435322564917
-87029  -107.041184485030016    36.3670941317364935
-18083  -75.2629224793814444    40.7556294948453512
-37011  -86.6603446703296783    36.0524179999999888
-06042  -72.5170136036121278    41.7966384330527347
-92509  -117.447451582181301    33.9975188101138812
-43029  -83.4575124090462026    40.0909017590954235
-12960  -73.5095391275684875    44.0348683321917562
-98174  -122.191341333333341    47.6767406666666602
-18013  -75.1818044851495273    40.8553718484221378
-54629  -91.7037276503496486    44.135276528671362
-13619  -75.608195450279382     43.9783605139736622
-78686  -98.4146097999999938    30.1161770000000004
-76762  -99.6684530833333184    31.4382563333333387
-25311  -81.5807572596798423    38.3548947007575833
-99603  -151.443575779633477    59.6841221757596188
-77464  -95.9648133937500063    29.6059909374999783
-45846  -84.7517166596271494    40.400357105155841
-64840  -94.339006942163806     37.0104787983218344
-77023  -95.320771725158977     29.7247805073116709
-49238  -83.7819378662659346    41.8940924192336581
-79314  -103.018134597014907    33.6180217313432905
-64089  -94.5741110874929944    39.3850861357459578
-62909  -88.9695640666666634    37.4284140666666616
-50666  -92.517725994807023     42.8543195623145436
-20451  -77.0467790000000008    38.8958790000000008
-01571  -71.9280772155407391    42.0528234190047314
-38737  -90.5319374997941537    33.8294374088102217
-21550  -79.3874144836700992    39.4124522456096997
-90211  -118.384904119666857    34.0663494911550018
-70533  -92.0306950232303649    29.9436031690265168
-78390  -97.3701691511253244    27.9872654540428414
-56560  -96.7526377539559093    46.8616852935552615
-36375  -85.5444854523052527    31.083293472544927
-70581  -92.7346746223674501    30.2540398380537709
-01518  -72.1172629293420329    42.1221840973571418
-90303  -118.330502137886228    33.936408651152604
-61015  -89.2078741504157904    41.9868621836733524
-99346  -119.483831374598026    46.0498794035369627
-40322  -83.6169239739782881    37.9307685496044726
-64014  -94.2589134117027214    39.016911350252478
-69382  -99.6247579999999999    40.5354765000000015
-50428  -93.3848751958730645    43.1357324225385597
-51649  -95.5359487890961816    40.8551762324247321
-27264  -79.9476389999999952    35.9248410000000007
-78569  -97.7590083766755527    26.3840487949062457
-78269  -98.6200489999999945    29.5461836666666677
-82422  -108.391894423076948    44.4986857692307822
-70002  -90.1631845301899801    30.0104478649932069
-87072  -106.352216439739379    35.6074827687296249
-00791  -65.8255300942481085    18.1259332755832823
-60061  -87.9673910330703137    42.2330450027126432
-56321  -94.3943598888888857    45.5802630000000022
-45822  -84.5754646017289673    40.5500131866570825
-05715  -72.7902662500000019    43.6588637500000019
-01233  -73.0382353333333327    42.2346168333333338
-26437  -80.5156698295129019    39.5202306647564399
-78339  -97.7942467953215413    27.8035846374268765
-29648  -82.1741330000000119    34.1942330689655094
-91942  -117.022283529829622    32.7771144793695584
-70747  -91.6842081833333538    30.8987873833333389
-95940  -121.231933655172426    39.5930305689655029
-24964  -78.5950596363636294    36.8070890000000048
-90081  -118.218829499999998    33.8202424999999991
-15071  -80.1858733621585316    40.4113371581333354
-29038  -80.9737474920122509    33.372947141191645
-18407  -75.5171340515981058    41.588881678744265
-23461  -75.9595105909091046    36.7715857272727433
-22523  -76.6290048666666763    37.790758799999999
-64188  -94.5981626666666671    39.2459696666666673
-16823  -77.7715862962042763    40.9172958269776146
-49130  -85.8472120011606705    41.7775152919327013
-29205  -80.9978983407962545    33.9912357607684541
-02045  -70.8749336793622717    42.2845538953055922
-17555  -75.9721389508835472    40.1248191982442108
-30546  -83.7343699170288431    34.9284426466182438
-56277  -94.9907706918434656    44.7673999989268268
-72537  -92.2409253856555864    36.4378595401639203
-50510  -94.9730154809214753    42.7582248892469181
-46310  -87.2335175845098263    41.1734338097078947
-02670  -70.1652240196011689    41.6614867128611763
-91502  -118.309236217803246    34.1768264027778628
-93275  -119.345804538461536    36.2163699999999977
-45322  -84.3142766519356144    39.878670606551367
-02056  -71.3322611615560049    42.1167509499676527
-62254  -89.8285110929033266    38.6128495845069679
-46323  -87.4535765095230886    41.588179443727384
-86901  -110.035496666666674    34.3519893333333357
-62334  -91.2508105889967993    40.3930170485436761
-21904  -76.084308336466151     39.6282169061349592
-15555  -79.0838067136929652    40.0921091618257321
-87578  -105.806166484751046    36.0396107239165318
-22610  -78.2824217563072011    38.8258148186059344
-67065  -98.5344203603133195    37.4715412845953182
-74940  -94.6328693324572896    34.9447681616292911
-78722  -97.7152986395064431    30.2896790888888461
-20560  -77.0280089999999973    38.8885670000000019
-32065  -81.8024729881333599    30.150060964176447
-79221  -101.533214571428587    34.1435724285714244
-44490  -80.7653257821428383    40.8987269660714361
-49128  -86.6139472493388212    41.8205932414054118
-29621  -82.6171126528173545    34.5237317000688861
-15717  -79.2559245665322152    40.4414076684001103
-76464  -99.1178955636575694    32.5170364548611133
-41263  -82.7596926520376002    37.8513847016718827
-39232  -90.0733575342601256    32.3360301572787137
-04105  -70.2772936030990394    43.7435860815961988
-04780  -68.1669812604547758    46.1441812560528319
-08012  -75.0554813712572439    39.7747841671864322
-88084  -106.696568000000013    32.1899634999999975
-51551  -95.5985479672920349    41.0112184891775229
-79007  -101.409825184890025    35.6656668284985514
-25112  -81.7555176000000188    38.3781496000000004
-36042  -86.4382934464163384    31.863944340386805
-64156  -94.5284941042979767    39.2700745989595958
-74561  -95.3822032978277292    35.1604943482831089
-50210  -93.6975317407406152    41.1802947644879964
-57430  -97.7291907404998312    45.7847339283046466
-98297  -123.040622953488366    48.7118801395348839
-12811  -74.0386530610819875    43.6032025078534602
-18935  -75.3964480459769817    40.4351119999999895
-61344  -89.8336341946184262    41.4089499555695042
-79778  -101.942904829714251    31.2308549531428419
-91792  -117.897745400414195    34.0219205216791067
-36473  -87.2027090900474207    31.3186886777251097
-54842  -91.861200878048777     46.4978566178861499
-62865  -89.0825239352200811    37.976629771069156
-28801  -82.5562053102074742    35.5973026916894142
-96742  -156.981688743055656    21.1914194374999951
-78332  -98.0956946206373317    27.7382351856410807
-95655  -121.283800852686255    38.5480495678798505
-47177  -85.7734027846100844    38.6031775727336495
-07017  -74.2063801092277657    40.7718529001883638
-84064  -111.144954307239644    41.6795086032961208
-23954  -78.3869559782889951    37.1128429658824786
-34747  -81.5942202293228434    28.3140157558889172
-56480  -95.2041290000000089    47.2511115000000004
-35950  -86.243612027082051     34.2585420464266761
-31742  -84.3950180743243266    31.7199105540540529
-60415  -87.777229368642594     41.7003625962820692
-52055  -91.2777723333333171    42.7423266666666635
-76752  -97.3268914545454606    33.5992710909090917
-36370  -85.1634169185149972    31.134591924782999
-60477  -87.7932309286038191    41.5778413059124219
-69347  -102.703511569806366    42.6331808844355038
-89113  -115.261055480645226    36.0643726129032061
-24210  -82.0108648168953351    36.7406906626790928
-90232  -118.391980341880455    34.0189550827506295
-28747  -82.9259389647864822    35.1484411696285193
-38901  -89.8069002937356231    33.76260011009159
-53821  -91.0819748563619243    43.0447062409658656
-64421  -94.9300628104496411    39.9152394690158161
-54891  -90.9282995310688875    46.689234415784135
-65255  -92.2328210507319852    39.0970216098164229
-08052  -74.9999801930172509    39.9538650271727178
-16588  -80.1206413333333387    39.5333599999999947
-89404  -118.729821316831789    41.936700706270635
-44670  -81.1900017336956665    40.7627355489130494
-83460  -111.7839508    43.8172349999999966
-67133  -97.1225091144814598    37.576283550985373
-49224  -84.7529084095637018    42.2690361910237442
-30417  -81.9169687042554386    32.1713727141570303
-22438  -77.0213939676165467    38.0237235604489712
-12466  -73.9901111124062112    41.9051927718567825
-53705  -89.4618084664822248    43.0728337648517794
-05655  -72.5822685710209328    44.6177720370721218
-71209  -92.0755503913043469    32.5282757391304358
-76137  -97.2877761214372185    32.8686746606759499
-50531  -94.6130011321120037    43.4674624541947736
-51024  -96.2781449948762003    42.6173515488829437
-48631  -83.9914148258427673    43.6883995071500948
-14803  -77.780537892126091     42.25320620078746
-46355  -87.2709389999999985    41.3593842000000009
-08046  -74.8832718258520345    40.0283706670581836
-28038  -81.5344339642856966    35.193253250000005
-97528  -123.458304400000003    42.4571988000000005
-04912  -69.6697994492923982    44.9570983404086846
-36144  -87.6764064000000047    32.5494922000000031
-62451  -87.6116145331492788    38.9851369854972347
-55410  -93.31908688100755      44.9123191243896187
-16874  -77.936603549314512     41.0353364506855627
-91024  -118.048881005478677    34.1675857863322321
-65623  -93.9058210400000064    36.749274800000002
-70450  -90.2700080678695969    30.9351889359806798
-65476  -92.1122265454545186    37.8764170454545521
-48165  -83.6249754011238906    42.503968851739792
-55801  -91.9745104814815022    47.0500661604938344
-39177  -90.8615151652892621    32.6279903057851399
-94015  -122.479772375381572    37.6800602813391947
-44088  -82.3709665000000086    41.4192125000000004
-30622  -83.5223997682882953    33.9315676179358903
-15209  -79.9747043262610475    40.4998937163001429
-52759  -90.8120925119047655    41.4604516547619184
-95449  -123.077127362258651    38.9592069161573491
-10103  -73.9761545000000069    40.7601425000000006
-40862  -82.8809361744033737    37.0175356823607089
-12321  -89.942592333333323     45.0473141666666663
-55363  -93.9114483704405387    45.056826118886903
-69221  -100.236639399999973    42.6375976999999935
-94044  -122.484446858008269    37.6151460939568807
-26105  -81.5343501318271819    39.3276056104398393
-25389  -81.4124532765957554    37.8292534468085009
-40061  -85.2634568000000002    37.7115837999999997
-35048  -86.5836450833333373    33.7179409166666701
-97486  -123.539848076655588    43.3940124027183458
-02559  -70.6148782381401929    41.692626270238371
-61277  -89.9386545181067447    41.611125839506478
-62563  -89.5237376912329665    39.7295304263001725
-46628  -86.3145037158451913    41.7142551984743193
-56222  -95.3635437511768771    44.9783912518494233
-52155  -92.2853201835117716    43.4230757936980041
-60958  -87.592672073580232     41.0685339886418461
-97526  -123.365192599669996    42.4814750858269079
-17979  -76.2030689114583737    40.5621177031249758
-05670  -72.5035158461538458    44.1765997692307764
-70669  -93.2711974460771813    30.25346569168196
-46946  -85.735039465116273     41.0350040930232609
-97102  -123.963375568215966    45.8054895082458984
-08069  -75.4577955722426452    39.7118065431420817
-51037  -95.6384890670659189    42.810334415568839
-12762  -74.7904100920502088    41.6710253333333682
-34741  -81.4242930856091078    28.3080798686546693
-51540  -95.5000820639606189    41.0248325645756609
-05159  -72.4543109677419466    43.0851360645161208
-22644  -78.4913664729861154    38.9481324940510021
-17833  -76.9652079333333461    40.8026422333333372
-77486  -95.6568909867325061    29.1511853843355375
-68403  -96.1668135416666843    40.919917270833345
-74650  -96.7509042535352961    36.4948645616161542
-96087  -122.498819392649807    40.6023522514507533
-29056  -80.0043953354139461    33.5953451787349593
-57750  -101.971114747540994    43.6605149770491963
-44430  -80.8899628087406057    41.2429575292082191
-23150  -77.2681154175465537    37.5133820369991824
-92823  -117.828649939855751    33.9237117794707004
-39841  -84.6843599528794755    31.2911776982983945
-45133  -83.5697465000244222    39.1570481877492824
-22956  -73.5298432499999848    44.1045646874999946
-38487  -87.2297248509798351    35.7200853670279628
-89101  -115.125310811765985    36.1719367373758445
-93944  -121.916886687499996    36.6019394375000005
-51531  -95.0820958909427389    41.5819564115835192
-31905  -84.9472997787810016    32.3711836015800998
-23950  -78.0810499196902299    36.6627157845132245
-24605  -81.3362997753767729    37.2446165809727603
-81059  -104.013891404711458    37.6273926194821584
-02476  -71.1765684376720742    42.4168537879365104
-43754  -81.2381182654702627    39.7624412648057799
-21170  -77.4449290000000019    39.4249845000000008
-97324  -123.666827592522623    44.3433353667502104
-74875  -96.9539974542373244    35.8695690932203419
-35620  -86.9886581766017031    34.9274511013860973
-31004  -83.8064337857142903    32.9514472142857144
-97013  -122.676256864468215    45.2442461266097027
-38391  -88.9878577230292649    35.5483353000363422
-77590  -94.918274781572876     29.3966711883145919
-67526  -98.5691177121164372    38.3535252400646769
-15752  -79.2836168333333404    40.5405628333333325
-57359  -98.195236728056372     43.8826527115988227
-21783  -77.5683619069308605    39.6539828925086795
-29452  -80.4607166960227431    32.755566632102294
-64019  -93.8672516902745002    38.7896991433914877
-07827  -74.7557744890851836    41.3031129371555465
-62260  -90.0985587079192669    38.4640839287538157
-50166  -93.432531202561492     41.2870848088234794
-59813  -115.413770499999998    47.6671436666666679
-34714  -81.741666551746377     28.4024203787626526
-38570  -85.3304505871529102    36.3779021691555755
-40915  -83.823436477900529     36.8932576086556097
-49445  -86.2731628257080558    43.2824724670478247
-62940  -89.4661147263558263    37.7461578100042843
-55231  -92.0035595555555687    47.9164151111111067
-99004  -117.599657245655493    47.4708393914156233
-39097  -90.5891711904763071    32.9812668364389268
-99746  -156.387776677083338    65.7020305104166624
-95304  -121.405382634615123    37.7252610158083428
-88420  -104.222279125000014    35.3747024375000052
-47713  -87.5588756731205535    37.9629764256976685
-26138  -81.1668503231197462    39.0270505766016385
-17575  -76.4370215000000002    40.0641710000000018
-54626  -91.0439198956627109    43.2126934731780779
-08341  -74.9485760273348802    39.5185186719817949
-30062  -84.4659716740139146    34.00200178968052
-71024  -93.2149932259983416    32.5082314151799139
-20886  -77.1925912084234653    39.1795184382995032
-64679  -93.5770951259842576    40.2342658595800771
-14827  -77.1408225999999928    42.1805732999999989
-45672  -82.6860643699589133    39.1947854642008764
-25314  -81.6587402490229977    38.3318022075915934
-55112  -93.197551147267319     45.0712542026195706
-21638  -76.2030282837477415    38.946293847544716
-61091  -89.542329558139528     41.9053208837209468
-19492  -75.5131467463768189    40.2948128876811396
-68045  -96.4961642627914813    41.8283468197935235
-77995  -97.1287333287327357    29.2663495107180189
-45721  -81.5834179615384585    39.5674496923076831
-34212  -82.4169591573291456    27.5006185353458328
-79416  -101.946356720187453    33.59680617219216
-56244  -95.7367347605113679    45.4933412203098086
-92168  -117.181712333333337    32.9806064000000063
-00610  -67.1459091285347114    18.2893634541559429
-62420  -87.9977650886694818    39.2924072751042459
-96830  -157.891687666666684    21.322427583333333
-50518  -94.3752011656249152    42.5334585374999889
-20812  -77.1424415754189852    38.9694145307262474
-28527  -77.0343720409791501    35.233910772751365
-46772  -84.9161754219749412    40.7220405436468127
-33863  -82.0225130000000036    27.8894470000000005
-23967  -78.6253781602062105    36.9091680821884083
-73040  -98.3109454426789142    35.6291859500567796
-07732  -73.992595546728964     40.4049385498442604
-79843  -104.053934813502508    30.2612686176799279
-11096  -73.7477351040000713    40.6187296453333389
-08344  -75.0264500003142558    39.5498001329769906
-65340  -93.1811618792893483    39.090005648731065
-46532  -86.6143636736928073    41.4102373968253588
-87068  -106.698822328278013    34.8576826546603513
-02633  -69.9796704226614423    41.6868714327277416
-46402  -87.3399675318157449    41.5994103255622818
-51548  -95.6316275694838538    41.3118668372093225
-64012  -94.5405730093787895    38.8070276941230787
-78520  -97.5220165672205752    25.9404891472951
-78124  -98.155289748090226     29.5557641393234256
-92782  -117.78756239690361     33.7379661236805006
-26520  -79.821426075471777     39.4964066823899174
-37667  -90.0393218571428662    31.2198560714285733
-63674  -90.6592018465608191    38.0226096084656149
-19958  -75.1735076827807518    38.7266478620455175
-33140  -80.1311284069723939    25.8161054227523046
-14470  -78.0467851806275235    43.2147741607009692
-38053  -89.9185515187551232    35.3448169463702015
-99372  -119.871518374999994    36.8200618750000004
-34103  -81.8027429339251455    26.1933654704141681
-61081  -89.7167536352182395    41.8191066174025536
-07042  -74.2180370214989722    40.8120250220961438
-99129  -118.230896979975327    48.0186691708385354
-11561  -73.6616121686263057    40.5884502529394524
-85734  -111.280281191489365    31.993914404255321
-15212  -80.0110070475836181    40.469435801049201
-76450  -98.5825781604455784    33.0678203803985582
-56508  -95.9976149999999961    46.7320862499999947
-26852  -78.9304922740227823    39.2386186165517046
-45356  -84.2410971550285694    40.1584715312270006
-55941  -91.3550636328150034    43.7352711469375066
-45889  -83.6487630574494432    41.146708779671691
-99199  -117.083095     46.5372836666666672
-35211  -86.8605999312967043    33.4689224884426295
-51006  -95.6121166719288595    42.3175887893226559
-71639  -91.5135424394009362    33.8928532746255087
-45426  -84.3027244391321631    39.8064680667791464
-37152  -86.7668591666666771    36.3962717500000039
-50620  -92.721305067146389     43.1405318633093628
-89070  -115.599390195652191    36.4965378913043423
-71048  -92.8664583006395929    32.8353412345415663
-24606  -81.3945893139534888    37.2776010087209286
-33606  -82.4677708567187437    27.9346241541696756
-48380  -83.6625607444704542    42.5875305350772706
-36043  -86.4089123722521322    32.2051582960359752
-12076  -74.3913709584948606    42.4112838643054886
-16234  -79.3315799789473601    41.1261687789473669
-19930  -75.0656799161504296    38.5383700492723733
-23821  -77.924086882048357     36.877918373094623
-00773  -65.7185734319249235    18.3635442225351895
-06901  -73.5384954070921566    41.0543134751773096
-25061  -81.4527998523489742    38.1791464093959831
-76112  -97.2201687178271214    32.7505074369965428
-07733  -74.1691514075317428    40.3849103964779701
-23829  -77.2189444855855101    36.7243213596396956
-85706  -110.939109010716265    32.1420117600946398
-73737  -98.4888465541204852    36.2711424231626225
-58752  -102.577184230602938    48.8339505090565353
-32168  -80.9878298867624693    29.0199377180714713
-60956  -87.7200517088607654    40.9596756455696323
-69331  -103.025294407407401    41.8539018765432189
-54773  -91.3121103955902242    44.3703151725031901
-36008  -86.5714021578947381    32.5008814736842098
-43747  -81.1242246500362256    39.8605745945203296
-80014  -104.83217970415528     39.665015315943954
-47584  -87.2526025895953268    38.2585416069364186
-33433  -80.1587057949335815    26.3479416628692391
-17560  -76.2202655575254084    39.9094595803935306
-33573  -82.3603266574606465    27.7103369801324746
-35184  -87.1491819489463637    33.1225514684783988
-08043  -74.9544479697154031    39.8456342774456616
-15229  -80.0351295578707038    40.5202892313307146
-45658  -82.4080304967654484    38.7581094753147468
-98847  -120.622626138177381    47.5186711362308642
-47464  -86.6496486220472093    39.2993425590551269
-24740  -81.0948507087651365    37.382619488658257
-31063  -83.9796948837378068    32.3004389441747719
-66202  -94.6668016156455963    39.0223707604656269
-56043  -93.2380055780219692    43.6500347428572155
-97834  -117.099791019852915    44.9141973894319051
-14206  -78.8113375566153849    42.881354771077099
-77338  -95.2988737329823721    30.0111738084482376
-34079  -89.9662142499999931    32.9748870000000025
-44645  -81.722460465116427     40.9109527852713342
-94063  -122.215543421036017    37.4851357177993734
-02579  -70.7511238333333381    41.7910411666666661
-78561  -97.9127335083798727    26.4652588379888343
-12860  -73.8126039639008127    43.720780016702669
-58852  -102.928578019646153    48.3540082740739692
-97225  -122.769223239999874    45.5006386922400452
-35055  -86.7866772160312934    34.160467441906917
-12432  -73.9582889354838784    42.0219160322580549
-91335  -118.540660075872765    34.202224690743563
-95946  -121.203549734353004    39.2199957088875593
-17859  -76.3975804151304345    41.1128718034957359
-98635  -121.237540154274996    45.7355170561571782
-06076  -72.2885143013787683    41.9818661118679728
-15930  -78.7207086486486389    40.2946531711711842
-56534  -96.0119942382460181    46.461132538367842
-85941  -109.97273439099979     33.8391899129472122
-41543  -82.278803691897707     37.5553714477611678
-58545  -101.597315436801821    47.3341231564245462
-28209  -80.8544789260919146    35.1783980619260603
-46552  -86.511204686355029     41.7098278886963385
-07756  -74.0095786861538869    40.2118999497435752
-92249  -115.505345793774239    32.734361964980522
-61025  -90.5834145781978606    42.4814478040660859
-36054  -86.3716872613176889    32.501549456881925
-56581  -96.7852121799309089    47.4525481372549365
-14204  -78.8614201521964446    42.8840118070084415
-31738  -83.878633763603446     30.9997745617520657
-84521  -110.818014591564875    39.4058742319644395
-47866  -87.3278483322193892    39.290528028743438
-18848  -76.4503519859751179    41.7581766395629046
-16820  -77.4024992997285608    40.9039828441256788
-01079  -72.3304530078329151    42.1889427389034282
-96130  -120.65270041642836     40.425578196516831
-92865  -117.846713122466141    33.8308586302563583
-07480  -74.3737876733493408    41.0851200367149545
-54002  -92.3717689577791248    44.9600092712901329
-77613  -94.3424428858447186    30.0487809954337663
-77994  -97.4715205205792898    29.1745241204268666
-77850  -96.1981124029850605    31.1831317761193993
-38659  -89.3211114361920551    34.6338543252143367
-10105  -73.9784645000000012    40.7627499999999969
-19516  -76.0048941733333123    40.4889858933333215
-39561  -89.1508471415120596    30.7069123195058289
-42337  -87.0197730948701178    37.2097691869592069
-07731  -74.2108780671755       40.148857687767908
-02831  -71.5816190122625926    41.7431238340947459
-76446  -98.3484278094625068    32.0754088444694574
-56681  -94.1831315098722115    47.6287481370499748
-35448  -88.0161431666666516    32.9172391666666684
-07090  -74.3447786672726352    40.6517683907693694
-88048  -106.660984926780515    32.1247307823470365
-42350  -87.1717327914344509    37.4471628956176019
-68933  -98.0510673354166755    40.5213808499999431
-23032  -76.6819725815900455    37.6702750470710441
-24088  -80.0616363998176013    36.9005261864678289
-85148  -111.62012133333333     33.027983666666664
-80513  -105.127839166260046    40.3024186028616285
-76544  -97.783005970758353     31.1295493296027779
-71496  -93.2826653846153846    31.0915894307692362
-85629  -110.982541362696594    31.9466574708088231
-48857  -84.1643147020157585    42.8412345591585861
-62263  -89.3970381984066194    38.3301207314921086
-66772  -95.2257867531761377    37.7521538230490421
-23184  -76.5191155102040881    37.2891473877551078
-64670  -94.1321388111976205    40.0623434870917876
-97623  -121.380578763557182    42.2704000663656529
-45876  -84.3379742034632329    40.929739041125579
-25812  -81.1046662522436606    38.1392971979216355
-41642  -82.661221111267551     37.5861661492957921
-78344  -98.8379605375494066    27.4337758537549412
-68018  -96.6122889732988455    41.29953187252368
-49047  -86.1298143338713658    42.0116349990135092
-27816  -78.0813003986896774    36.0967736276661668
-20546  -77.0211673333333238    38.8874840000000006
-41030  -84.5926092803126863    38.7817896865445135
-49415  -86.1463716821934895    43.144450578419729
-34428  -82.5925793816013538    28.9495202717011146
-27262  -80.0323166937538844    35.9635324995599817
-74128  -95.8512695230432001    36.1460292841990025
-19564  -75.8729351176470459    40.5238245588235273
-20375  -77.0222983999999826    38.820070566666665
-28317  -78.9994824999999992    35.0593577500000038
-19523  -75.8372372456140056    40.2055591929824629
-94553  -122.113610717991463    37.9906711367900058
-33184  -80.406157046682381     25.7603734094698495
-65680  -93.0200532611649606    36.6597525691968613
-23298  -77.4299625862068979    37.541449689655181
-27106  -80.3192837516671005    36.1388341644124722
-54952  -88.4204574513756398    44.2157697316461835
-21153  -76.7091222618025341    39.4161545665235806
-17537  -76.2380498888888809    39.9855458888888933
-05460  -73.0999883600000118    44.9819164800000024
-36507  -87.7801898430025886    30.8760946715950269
-61251  -90.0714443087052956    41.7283669941477555
-73075  -97.2236192040766838    34.7359569978668716
-48109  -83.7221415591053812    42.2873513801916943
-07465  -74.2815198015641016    41.0577809706745143
-62238  -89.555683508272196     38.04098091727937
-49945  -88.3434647971091636    47.1580160374733097
-14880  -77.9880700822485693    42.1712388120037289
-35786  -86.4709466249999963    33.2252729999999943
-50527  -94.7939467938387708    42.9656358056872705
-95664  -121.032830029415535    38.8123642632313164
-38029  -89.8168184074073963    35.2448428888888969
-55007  -93.132383038356636     45.9644052219803712
-74801  -96.9480646516550166    35.326167185295823
-51036  -96.1897347236110392    42.9710291555555202
-45743  -81.8511404157606961    39.0739550525350836
-25186  -81.3037049113301293    38.1750907807881603
-48872  -84.2249338215504935    42.8053379478303029
-96196  -120.569444500000003    39.7190432499999986
-46921  -86.101047785714286     40.9104563571428557
-55716  -93.2766969117647164    47.3221434656862812
-58337  -106.911171499999995    47.3221050000000005
-18062  -75.5719178790181729    40.5218339176790394
-59542  -108.355514021516498    48.8772994385245738
-70437  -90.1973797317901642    30.6119479614024321
-13054  -75.6626178905835047    43.1662389038461569
-76066  -97.991425147779097     32.7102835327920332
-68457  -95.7106762295917974    40.1482704047618952
-17981  -76.3959482993359984    40.6307189259961348
-93433  -120.618170178314159    35.120689297085498
-64153  -94.7043097886286347    39.2699688976987957
-95429  -123.358127913647024    39.7054940408635204
-17959  -76.1189605384017938    40.7249956757175724
-18443  -75.0927764384397136    41.6658158712406106
-30428  -82.7021761985250379    32.1866462546794736
-34668  -82.6940926581085876    28.3013829720140357
-66033  -95.12297895953742      38.3702962919076072
-14410  -77.8557089999999903    43.1974069999999983
-01089  -72.6470754123773332    42.1196209586890475
-96162  -120.319713900000011    39.3044531999999975
-24317  -80.6662397552612163    36.6018322332206907
-70501  -92.0076463147986061    30.2348593577333808
-15773  -78.7319384934333897    40.6293032814258765
-38079  -89.4655274701762693    36.3919118767852154
-90630  -118.038256954456699    33.8167127744140501
-58121  -96.8648608000000024    46.8617275999999947
-75860  -96.2542972748758245    31.6177664728626056
-71754  -93.225977626666662     33.2617528800000031
-67439  -98.1972286040749509    38.7416550659721821
-06281  -72.006491368707259     41.9640464689626498
-89130  -115.224780630078087    36.2547996749601751
-54143  -87.6277845722858757    45.0914560267323523
-73446  -96.7925128792378189    34.0871580208089213
-53501  -89.0721965873016188    42.605594015873038
-45224  -84.5357261620537344    39.2039608721739441
-57312  -98.3579882001159689    44.2161231824244823
-96000  -122.089454250000017    39.8272719999999936
-29492  -79.8887877915682907    32.8986591755363449
-28332  -78.7263349375765245    34.6547569241126681
-37843  -83.0572036032262844    36.0097850297676487
-72036  -91.2643445199203143    35.0027003754980157
-76642  -96.4881871253644476    31.5025045689991003
-47128  -85.8389593983739729    38.5657933739837233
-64761  -93.68567896435205      38.5995001451912074
-54670  -90.4920962628712147    43.8315407130597663
-67736  -100.474008149006693    38.9096671423840945
-77661  -94.3739617942387099    29.7859359259259158
-05034  -72.6262104574469873    43.5917305531914963
-01093  -72.6666210323501645    42.4347343805899655
-78734  -97.9522374531917706    30.3771762239386867
-47901  -86.8876871760038654    40.4177097521070721
-25109  -81.8609920769230825    38.533151817307683
-93410  -120.631426111111125    35.1220918888888889
-55012  -92.8006528196337968    45.4251509239079923
-81623  -107.181640941056628    39.3398189888661065
-35771  -85.9930235754025318    34.5383058196594277
-80045  -104.836761078212263    39.74662488268158
-57429  -98.3126778161993258    45.1683234859813183
-76233  -96.9147744743288939    33.5432388401718882
-74704  -97.1205574999999897    36.1186080000000018
-74902  -94.4730188471454397    35.2523180489344199
-62097  -89.8656140654711351    38.9335134224214343
-47949  -87.1418202501186983    40.0588776065495864
-66854  -95.9741872983569806    38.2697481194921849
-32856  -81.4199799999999954    28.5489685000000009
-11095  -74.2151384999999948    41.2743579999999994
-43803  -81.6461257407407714    40.3600649259259328
-29707  -80.8536452109012629    34.9766584342957429
-91104  -118.123440625361084    34.1681869805722584
-79223  -100.412899413043462    34.2300188641303933
-35073  -86.9629267551188292    33.6414347664332993
-35019  -86.6376427549534611    34.2989523957010007
-59079  -108.359187074972169    46.0103581926053877
-20181  -77.5677777716231986    38.6961067721400269
-01007  -72.4068352348170805    42.2735691003587988
-43977  -81.0948623329351364    40.144141497078266
-98026  -122.332126012477872    47.8327306232780174
-94505  -121.608591467385679    37.9047090903306554
-66754  -94.8980215831132909    38.0088789656992105
-11704  -73.3567594813325741    40.7159538667261884
-77434  -96.3283826500994422    29.5619228021868921
-28083  -80.5979957370249451    35.4942133787498264
-73802  -99.571257833333334     36.5688935000000015
-16987  -77.6475187500000033    41.9421324999999996
-08056  -75.2505114633191141    39.7829748899574511
-44811  -82.8363922256084066    41.2582220370449591
-72474  -90.6707338823529625    36.0424088235294136
-98365  -122.68983911160511     47.9071934698747341
-74547  -95.5587618466289825    34.8549657797221073
-51247  -96.3324396723332512    43.1954086007228071
-76204  -97.118795428571417     33.1733402857142892
-27314  -79.1890211427463555    36.2898020010325837
-50830  -94.1923309765032144    41.0312246796820475
-41772  -83.0230723813664895    37.3939170074534246
-88081  -106.396821152434555    32.0302276091743394
-92345  -117.316026433510956    34.409573152749438
-76071  -97.4825720535556997    33.0044819113256835
-26679  -80.8124701866710637    38.1708229416262981
-14846  -77.9963844643816344    42.539217355510722
-48229  -83.1491380717300643    42.2506003435804089
-50446  -93.4591706615108961    43.3437341237358282
-55008  -93.2475158370033057    45.5677673868705639
-74858  -99.8866936666666589    36.275699666666668
-65444  -92.0583245838856072    37.3822344126263886
-85937  -110.035558286539072    34.5250363436652279
-40755  -84.1197098909090926    37.1744333181818334
-25982  -78.6318468749999937    33.8586027500000029
-54826  -92.1531359166666562    45.4995755610516923
-38685  -89.4913829972436332    34.6016138787210821
-03082  -71.7706122212742059    42.8958165689009192
-11375  -73.8428252303150288    40.7163350157480153
-46919  -85.8590378498736442    40.5859117936157077
-13670  -75.093222310077536     44.204169422480625
-56374  -94.3292240169397473    45.5873513499778014
-58567  -99.2585519999999946    46.7840379130434769
-08104  -75.10900178622569      39.9175682068870472
-49253  -84.274974930689865     41.9748682026225808
-05827  -72.371562039833222     44.6777740660090572
-39180  -90.8502606070738778    32.2869386727531449
-65443  -92.0924052096475378    38.1480120946196308
-63348  -90.9388100718218482    38.8110851050666525
-57038  -96.5810971506620746    42.5799894156802949
-26502  -80.0104840000000053    39.6062677500000007
-17077  -76.536618435897438     40.40368912820513
-45223  -84.5472546898137551    39.1651756163198499
-37243  -86.800992340659306     36.1679846153846185
-77866  -96.2056411437371395    30.4630593819301616
-52720  -91.1597330960238423    41.5835610562605282
-71965  -93.7358857513514465    34.6463780183784067
-72377  -90.3450434175824313    35.6768837142857222
-77925  -95.1052467500000063    31.7246567500000012
-55455  -93.2345352849162055    44.9742292541899431
-76210  -97.0927432188701971    33.1513562258033971
-57788  -103.362530258984876    44.5836836443126714
-01773  -71.3076458997603027    42.4230287290013379
-25242  -81.5207225283018744    38.6757534716981297
-73439  -96.7189917329981483    33.9344646155809428
-85255  -111.867510146574716    33.681583587020242
-95503  -124.150539518567911    40.7554781336703513
-94110  -122.414794814708287    37.7484536610518759
-25570  -82.4380829632690251    38.2295965207860462
-63079  -91.0947448869778356    38.2670265405405274
-72422  -90.5524572850416263    36.4184743619808415
-18438  -75.245487017684539     41.4327505041264743
-95986  -120.78983565412193     39.3584111093189719
-03879  -70.8809022307692373    43.2360338461538447
-12197  -74.7238106398200301    42.608064813028129
-43735  -82.1323478257372841    39.8332601957104586
-15632  -79.6158281563289449    40.4301735224635692
-68183  -95.939828250000005     41.2575330000000022
-61254  -90.1664709995880997    41.4733385039132187
-58053  -97.1820475751313779    46.0681810545688322
-39552  -88.543666999999985     30.434188666666671
-38461  -87.3237614112880181    35.5996724134984603
-80750  -103.604354637554678    40.3830053566229594
-47380  -85.0357711408189658    40.2883811275847918
-15136  -80.0966652026369701    40.4701718964569963
-21626  -76.1036673708154012    38.3388436025750678
-36376  -85.2749787611823393    31.2510241232983113
-30573  -83.389130101511924     34.7420496263498606
-77536  -95.1170419487996384    29.6883264950074732
-78701  -97.7425846626450294    30.272192250965265
-80312  -104.835430181818182    39.0636924545454534
-16685  -78.0828043353366326    40.283655375600901
-53158  -87.8707156098657407    42.5291576802783737
-60185  -88.2132414105846294    41.8978785702179337
-42276  -86.8760416221758334    36.8638686375119491
-61501  -90.3195958805651173    40.2270973315606497
-56131  -95.5777164397535444    43.8583559593847241
-84054  -111.907253014595625    40.8424860362918878
-28694  -81.4678685175057211    36.3578923264874518
-04341  -69.5429587999999939    44.264784800000001
-04733  -68.3992848083333485    45.8020026229166461
-33405  -80.0584863876362078    26.6705722761069772
-76014  -97.0894093104867295    32.6950622798482797
-70633  -93.408644221203474     30.4441899318453153
-75474  -96.1088547482969489    32.9101684257996681
-21213  -76.5790289153945309    39.3133547007919972
-26268  -79.7021669999999887    38.7843467058823492
-88065  -108.312225540540595    32.6714872178060745
-47429  -86.617433075043806     39.2590352898566479
-59439  -105.291262888888895    46.7739287777777832
-99623  -149.646860094320232    61.5614352132628753
-95457  -122.57151518636536     38.884154299493801
-92373  -117.173548110798933    34.0323193060593496
-40387  -83.4835059714128818    37.9416022139128302
-66870  -96.0079501800765627    37.9381864521072529
-02370  -70.9110512509001722    42.1277894229132173
-16675  -78.6754561000000052    40.6612678999999986
-63458  -91.9838101510416806    39.9862970260416475
-52038  -91.551797667396059     42.5822262210065006
-50423  -93.81177675939702      43.104287377580647
-72776  -93.6582575244718214    35.9148443634781742
-20747  -76.8846139505001673    38.8551453939747944
-03255  -72.0195427460595994    43.3204302206654646
-72044  -92.1602237252951113    35.6408719706858292
-30598  -83.3537965555555331    34.5953043925926025
-65337  -93.4236674996695484    38.7883222855253678
-03225  -71.2367655453117266    43.3651966018046195
-13215  -76.2156526766522404    42.9919100737092066
-03262  -71.6918807595600356    44.0122316998087797
-84516  -111.097446623229359    39.1236763597733628
-46741  -84.9563509800176604    41.2124446691155697
-42214  -85.6796930744867922    37.1299617876895525
-82009  -104.838409772113451    41.2147160831682413
-91506  -118.323955599853448    34.1708965185049109
-73573  -97.9953464063525814    34.1629412853231074
-25275  -81.6092007948598024    38.9232098341121997
-79360  -102.681668377239291    32.7087037155975509
-67738  -100.630796375262065    39.1069929580713094
-60946  -88.2301107520775929    40.9281503545706187
-52330  -91.4936021980603158    42.3480807345585148
-37844  -84.5456797857142845    36.4732384285714275
-32531  -86.6743459963914518    30.8605449322656362
-31556  -82.1118722954545461    31.3921679886363485
-19365  -75.9243791440468385    39.9654668663065138
-25092  -81.6861523333333395    37.9876600000000053
-56541  -96.1281409062500103    47.1697247812500038
-80420  -106.065599576217565    39.3002602517393811
-36006  -86.7161815750080507    32.6403809350796479
-15442  -79.835830282422279     40.0175047025723671
-34268  -81.8949777323943238    27.1544948169014013
-70031  -90.2985847112461357    29.9484354924012059
-25843  -81.1239560766422017    37.6124561811131599
-12060  -73.4928458310613166    42.411861794189889
-30292  -84.380605877630245     33.1761242447391922
-39047  -89.9926746236517943    32.3847637491149314
-92646  -117.969165113176473    33.6676642896677834
-30145  -84.9830188327209868    34.2297955152721016
-45758  -84.0845947500000079    39.1819372500000043
-86506  -109.204562747899146    35.3153007563025056
-27599  -79.0505686239316248    35.9073725641025661
-13924  -78.4843643333333318    36.827733666666667
-32027  -81.6111887777777696    30.6139242222222236
-61544  -90.2413243909089715    40.6950498609092719
-59349  -105.41651340006085     46.8546901077204225
-08802  -75.0170984198134647    40.6653352994225585
-82329  -105.97725353441453     42.1456093509910161
-68840  -98.8621177738316987    40.7637116073067602
-33567  -82.1288339054554086    27.9471678730709989
-19483  -80.2565448823529266    33.0731671764705837
-34102  -81.797967490395834     26.1419860053840587
-14040  -78.3777377931688761    42.8862948083490565
-77364  -95.2061456042920469    30.7682938872021765
-93906  -121.636600598943701    36.7100125768630932
-32147  -81.8049417315541945    29.640322796703316
-12274  -74.8250233749999865    41.6928967500000027
-14842  -76.9541452346241073    42.5935172181093193
-59253  -105.867866244549603    48.7528456170615669
-80274  -104.987299500000006    39.7443925000000036
-42344  -87.2954531942116745    37.2423110944402467
-69355  -103.505365721649497    41.773065917525777
-73666  -99.9126991172247898    35.4131255933014302
-72430  -90.1855642277551084    36.3379523281632189
-90065  -118.223698766602539    34.1106159248170329
-06755  -73.4786474442949071    41.6470481716082332
-29510  -79.5926658353603784    33.468288500206917
-67026  -97.4989393071200823    37.5323353676940599
-07008  -74.2313127017937688    40.5830549513132368
-98286  -122.962504401697728    48.5769639651474066
-22514  -77.2585123704897683    37.9788310883304092
-50027  -92.4903314458815373    41.5142339183117741
-70449  -90.7040389180674964    30.278582859621018
-44950  -88.0194034999999957    47.3850049999999996
-32564  -86.7601690172247402    30.7207657389473177
-40355  -84.8632725402636083    38.6023844172766744
-20711  -76.6539118928739356    38.804270231550646
-31097  -84.1556235283912741    32.9149109850157302
-06612  -73.2860416873328262    41.2597365021938813
-74854  -96.7618689885531467    35.1220343342491432
-24012  -79.9144111631769789    37.3093107313039383
-18626  -76.5020103178226947    41.4200033178226619
-17114  -97.3647718333333358    38.0865130000000036
-58489  -99.6247273586956226    46.0276714130434641
-33318  -80.1355585000000019    26.8092269999999999
-72029  -91.2841360796849699    34.6956168450565201
-49620  -85.6920327444868377    44.5178382941035693
-79251  -100.394475904000004    34.9308171840000057
-65791  -91.5365192880644116    36.5288211862092851
-70632  -93.0206494454902071    29.8139721623529077
-59230  -106.649858589610858    48.2139288261232863
-29368  -81.8638282290748833    35.0804388193832537
-00755  -66.9849008484848554    18.3283041969696932
-97321  -123.115772027590452    44.6427738271467902
-21040  -76.299079762090372     39.4297180656526507
-08103  -75.1146325085389464    39.9360579848197403
-61447  -90.7465277544911118    40.8660921491016822
-08734  -74.173562201135141     39.8639236002128001
-05152  -72.8932941456984338    43.2399874357543084
-69148  -102.565110135818813    41.5409698482024297
-56019  -94.9164062838318188    44.1036007949213129
-34269  -81.9834130605941596    27.0739009792807224
-43112  -82.7111163365211581    39.7961121410640501
-56661  -94.1711628653205679    47.8320850462655471
-33417  -80.1228196937090189    26.7186637280398642
-05067  -72.5432576053669891    43.6971139636937593
-68416  -97.4539027532049005    40.4121615032051054
-81021  -103.413215777602488    38.4457057634069628
-47501  -87.1666837071735614    38.6488068600971673
-17557  -76.0756741983858547    40.101584442741725
-46705  -85.063868084160589     41.5237590565386583
-14214  -78.8380242936449065    42.9415999575038398
-51047  -95.359323678545266     42.9105665698015244
-28692  -81.7807119009035119    36.2630802678951483
-67589  -98.5564440000000133    37.7590012000000002
-47231  -85.499344627580129     38.8905942863417167
-11434  -73.7738294660194072    40.6747407184465928
-63567  -92.7181446031249408    40.4196977687499697
-81231  -106.917833166666654    38.5466676666666643
-62540  -89.4174131275252506    39.583582804292881
-55325  -94.3171041695593573    45.0879816011646923
-99559  -161.793843976374802    60.7901690930232803
-87605  -105.963790166666669    35.6526708333333318
-64654  -93.7752704999999906    39.8484830499999845
-12082  -73.4442393457944149    42.7633497289719671
-47967  -87.004368349159293     40.1968683135509792
-28511  -76.3478650401459191    34.8856575912408786
-86946  -112.207779666666667    35.3604733333333385
-43016  -83.1378592902433269    40.1008349873194376
-76481  -98.7138129451038964    32.9933774020772006
-72459  -91.2807693434115635    36.2535887128393668
-58538  -100.65028459026118     46.1136131009501327
-83120  -111.039028451936773    43.0013844878048985
-43322  -83.2096093835616699    40.5318349999999725
-62337  -89.6520126666666783    38.1767256666666626
-46952  -85.6597636658981259    40.5852706498177227
-52077  -91.5522723304710411    42.8205914866557578
-14028  -78.7234404999999953    43.3209276495399322
-77062  -95.1307740810462263    29.5748606728129744
-63350  -91.3646802899884705    38.8987583072497713
-63463  -91.7559754242425356    39.8416114583935155
-97361  -123.312454014820275    44.8009732758710868
-70776  -91.0992169988738993    30.2774991576576866
-44118  -81.5550192862298502    41.5009472252609939
-44108  -81.608997942299041     41.5377951160676062
-24426  -80.0422638967681905    37.7630160778763724
-12486  -74.0669657494181308    41.8328516516679514
-08347  -75.0858066666666701    39.4964119999999994
-18314  -75.0216183500000113    41.102503200000001
-92803  -117.374173500000012    33.7009534999999971
-24916  -80.5709285915697819    37.8258891511627908
-18017  -75.3750461240391587    40.654340233915228
-56246  -94.8567593000000073    45.3379078000000035
-83840  -116.51476037583889     48.3113892013422728
-12132  -73.6279475450450605    42.4754803693693503
-58244  -97.6209957940055091    48.1215055585831664
-97601  -121.860073305470252    42.2604087543254039
-74960  -94.6564589047302007    35.8305804996669366
-67501  -97.919942271080842     38.0189704971300984
-16625  -78.4985544352180966    40.2896115693719494
-52039  -90.8468202224673291    42.5423338631648136
-49257  -84.5082324999999912    42.0468355000000003
-75683  -94.7340795242599825    32.8121835400290607
-13210  -76.126680856845411     43.0334797437556915
-99154  -118.343738248691082    47.3918938246073438
-32817  -81.2481877724050321    28.5913637406901238
-70502  -92.0184180322580545    30.2051748709677383
-45061  -84.649185166666669     39.3121098333333308
-15864  -79.221561242236902     41.1144944121434293
-23424  -76.5634804545454699    36.9944821515151503
-90057  -118.276776278118533    34.0626748640082013
-61559  -89.7770460536805217    40.916946228297455
-56467  -94.856037204700371     46.9578952826995391
-52765  -90.8686926825395602    41.7268906849206545
-03036  -71.2421849019010551    42.9701554405747004
-20188  -77.7990366428571463    38.7249032857142836
-97495  -123.332373671691826    43.285210381909522
-76459  -98.3944869875000023    33.2765031624999921
-27024  -80.8354565600487263    36.5231733392298352
-35114  -86.8750536964143123    33.2220124397078038
-37019  -86.7111805938027089    35.3934386805634063
-82586  -117.209006894736831    33.7232903157894768
-51108  -96.3682729119620376    42.5600858813398233
-33971  -81.7045863953465101    26.6324179437872353
-47869  -87.5076546214285713    39.2739216785714333
-95138  -121.769775108293345    37.267585965844269
-47854  -87.4047948015834066    39.7921245660564793
-71455  -92.9233807327259171    31.3541786317388009
-57772  -102.416338319999994    43.3811672399999964
-51244  -95.9273556734694353    43.2371574285714004
-66506  -96.5796682304687266    39.1922674960937201
-78584  -99.0023740905572964    26.4641548878238311
-39327  -89.1276418089062759    32.4457988366839203
-95704  -122.266867000000005    37.8608077499999993
-24235  -82.2913536046511496    36.9862081860465253
-56288  -94.9556515514266408    45.2428641698153839
-73556  -99.3862995625000138    34.725993625000001
-38133  -89.7992787628638922    35.2105105254872157
-29153  -80.3232976188417496    33.9522716784132896
-64475  -94.6464719174047104    40.4321243439291464
-00771  -65.8678353760632262    18.1918543122721772
-01267  -73.2192711129621756    42.6891531356809963
-78245  -98.6949159034996768    29.4159912982741005
-05038  -72.4636111894973993    43.9912137593398995
-85202  -111.875520751365187    33.3774028818390605
-71748  -92.4305326124030842    33.9075062790697643
-49640  -86.0357604726896028    44.7063278080896751
-55032  -93.021478201850698     45.5893314916038008
-57021  -96.9819507523670268    43.266872990953047
-29658  -83.2749075275923758    34.7679811140085064
-78657  -98.3771529209431179    30.5489606413786454
-34475  -82.1536764454649813    29.223842263233923
-15052  -80.434245055922176     40.666713256898575
-37888  -83.6157695443842925    36.3071730630032832
-79108  -101.832680271930599    35.2917190530982126
-34429  -82.5881606254432086    28.874305049195268
-50401  -93.1958646318836372    43.1499048062253081
-70390  -91.0349978167830898    29.9261641421911371
-12074  -74.051372715099717     43.0511160433049014
-27344  -79.4433029751046007    35.7318547941470328
-28539  -77.2053716922156923    34.6909292892008168
-51334  -94.8031170104572283    43.4085276662090465
-24974  -80.4430538480392556    37.6571035196078228
-78596  -97.987403841145337     26.1537449386992122
-92203  -116.247993413387718    33.7494835291081259
-48174  -83.3505155059615532    42.2142203516502406
-48208  -83.0906821863888041    42.3480344908583106
-59222  -105.154099706940841    48.7278997956297744
-29659  -82.6448076902356661    34.2136280572390277
-29657  -82.6890971293545505    34.7749550863374282
-98164  -122.332029500000004    47.6059614999999923
-23308  -75.6157903866268697    37.8254283076300197
-95729  -120.611512888888882    39.3092226666666633
-13472  -75.0317303858784612    43.6849426551723923
-64790  -94.2051794168443308    37.9034931705756293
-50132  -93.7033179092370574    42.3946319485944585
-48519  -83.6106280421348913    42.9897952954120655
-80307  -105.47145350000001     39.9391916250000065
-11767  -73.1439531927182713    40.8446415946603167
-61832  -87.6292778734746207    40.137752776411503
-18610  -75.5252391682161743    41.0497574821641038
-31759  -84.7800049090909056    31.0100368636363655
-08432  -74.8323038888888874    39.5004435555555631
-62982  -88.3467100320641379    37.4253813727454911
-72820  -93.7315637843136926    35.4242774901960829
-46227  -86.130035903819163     39.6720068804839627
-66755  -95.1711418415250279    37.9259054224952834
-04358  -69.5394367351949541    44.4188771722100668
-91761  -117.603515390186629    34.0337988930233522
-34138  -81.3602478415584329    25.8143149402597416
-46902  -86.125341651295912     40.446123689596071
-43767  -81.8006189077699872    40.0024900682087861
-78731  -97.7689071531418534    30.3479757183788053
-80107  -104.591699702720604    39.3984187515994364
-56024  -93.8679070246212888    44.1552289507576816
-38731  -91.086524197916674     33.0884111093749951
-29716  -80.968196565217383     35.0347237391304276
-03869  -70.8359612266851997    43.2235893033240828
-99223  -117.354955152297151    47.6068332183186129
-61062  -89.8433391556830827    42.2556574126073059
-70354  -90.2959811564570884    29.4293746552152555
-58261  -97.2926318236285965    48.2475138915943731
-56757  -96.888514119974289     48.469299744380443
-79906  -106.416269652999986    31.8114543399999761
-98404  -122.413297604152945    47.2106523596706893
-25204  -81.6217613090908571    37.9264737757575787
-08886  -75.1123271983963576    40.6912956957618022
-62804  -88.9071605000000034    38.2896015000000034
-56153  -96.0178122444444568    43.8349840055555475
-38131  -89.9934887113402198    35.0650181701031087
-23831  -77.4429715630868003    37.3442568226018921
-14138  -79.0615101652333578    42.3762504531461843
-79413  -101.888970802545188    33.5460562813679743
-68504  -96.6571812518755991    40.8451671427535672
-38663  -88.9013632243098755    34.7401990399328042
-16678  -78.2297252857143803    40.228387802333323
-48316  -83.0657405605278143    42.6916369929699471
-99685  -166.527161952627722    53.8727139215396065
-28075  -80.6453103180595008    35.3075950030946899
-28383  -79.2546259403851678    34.5879517813504975
-53226  -88.04310917028765      43.0490954264954198
-74134  -95.8102523745914709    36.106986130780065
-78885  -99.5445604715083192    29.7745214022345905
-81221  -105.144288285402936    38.3598770980392345
-53507  -89.9001511863541651    43.0090510746291983
-64660  -93.0777101525424939    39.5820813866525612
-27950  -75.959202014136153     36.5187349874345628
-05907  -71.7558981734748613    44.9595117074269837
-06519  -72.9367180275629892    41.2957973863636525
-75057  -96.9948948689004311    33.0488957797658429
-64440  -94.9164048566378824    39.5855976698810466
-24514  -79.1740126875000101    37.3603403749999998
-55021  -93.305126059376704     44.3089005052365508
-24559  -79.0048703333333293    37.0435013333333316
-56450  -93.8303724687447698    46.2442550964252774
-74339  -94.8714590345369402    36.9339385374149813
-43917  -80.7988765985737132    40.2071238624162177
-38340  -88.6644621692323796    35.4107800814676139
-50116  -92.96681851322451      41.178993880135053
-46566  -85.743211500000001     41.1038929999999993
-43804  -81.7362554255842042    40.4535661072675623
-41230  -82.6581349033314439    38.0872759529542222
-39466  -89.6556657003457644    30.5418597372206904
-67215  -97.4341352594099277    37.6293759528653382
-93706  -119.834429950728307    36.6936547959600645
-64466  -95.1018198902044389    40.1770939634014823
-64155  -94.5716558028808549    39.2763244962971925
-43944  -80.7753247047105276    40.4325872709339862
-89515  -120.001027999999991    39.5221573999999976
-17039  -76.2443255606060575    40.2984809696969819
-56588  -95.5194668405072491    46.2405178201383649
-77332  -94.6351319999999987    30.6275860000000009
-47995  -87.0340931395049182    40.7582933065661024
-22717  -78.1084766470588221    38.6035592941176446
-40468  -84.9754974992739136    37.6479900098607203
-19975  -75.142469219945923     38.4684172223098244
-87568  -105.474413038461549    35.4168083846153934
-08041  -74.6788884287060029    40.0390351630024668
-27931  -75.9544528333333346    35.8867428333333365
-90278  -118.371837800896742    33.8708247324840457
-50472  -92.9389472149205744    43.4161106588301067
-28685  -81.03215284254496      36.3345935526117145
-81212  -105.306224157883605    38.4727154045669906
-58272  -97.9884641950114172    48.0111346479592171
-42457  -87.7608865737705059    37.7996127868852412
-65772  -94.0475470789342296    36.5853694787864896
-32061  -82.5243977055630467    30.0769388303934662
-56031  -94.4619989905192057    43.6372072614943747
-62219  -89.4344326967006538    38.6051189631979526
-59853  -115.809961109480071    48.0485230276186712
-76036  -97.3864948931320811    32.5741123631911407
-35116  -86.7693933976223803    33.7365942011575441
-66494  -95.6220830000000035    39.9143488000000062
-58259  -98.1223862514954845    48.0074399252244959
-23513  -76.239512070956664     36.889056409836023
-63536  -92.3772264677640891    40.4734404581618747
-84045  -111.913592874456981    40.3479095757321673
-54747  -91.4262758766787016    44.3598529401709243
-32057  -81.6050595000000101    30.2015250000000002
-52402  -91.6587582144230169    42.0243528714742567
-57341  -99.1697983353658685    44.131596538617913
-78008  -98.2421629984709028    28.7550631360856173
-13212  -76.1385483917143659    43.1274701790000492
-38128  -89.9258653287576379    35.2236921551952804
-78802  -99.7410591454545283    29.2071046363636349
-77685  -96.5614646666666658    31.0593806666666659
-67481  -98.4202330328766664    38.9891111794520313
-61726  -88.7143334440499558    40.7610116832268687
-78138  -97.8616946875000053    29.7154039374999961
-50641  -91.9086184746637258    42.5989787311272323
-39333  -89.1917239206349421    32.0376924126984122
-92527  -117.803175666666675    35.5971406666666681
-11249  -73.9623969972144835    40.7126709818940924
-31021  -82.9383632791204803    32.5107789311297353
-71375  -91.4565998111030041    31.820171209805352
-58564  -101.348393769835013    46.2908520722702477
-87571  -105.555868126216041    36.4037939840167866
-68437  -95.6604941872145815    40.2417621255707658
-85143  -111.554944976784455    33.1639421162020014
-82644  -106.37898680743811     42.8489096446280939
-24925  -80.395556063246616     37.7606680302178432
-46341  -87.2055150975837989    41.3402800382550382
-41121  -82.8301610220938898    38.4594664309975514
-88869  -116.931991999999994    47.9429283333333345
-11771  -73.5248651983535382    40.8665259444761659
-68016  -96.1038878859935153    41.042500094462504
-40350  -83.8757053273361777    38.3015040081254412
-01008  -72.9506355237286925    42.181990454237372
-65449  -91.4751057700959507    37.8503921998015755
-52776  -91.2733276927051378    41.5740410285274962
-01467  -71.6094750315789241    42.483996526315785
-46804  -85.2520412583414497    41.0541378307687381
-29715  -80.9270356959677883    35.0215985944708521
-46030  -86.017805498389265     40.1708932774964964
-27919  -76.5356609038099691    36.3092344300264287
-58416  -98.3577025859233345    47.5421835448296122
-37405  -85.3312519398668314    35.0900888872793928
-01468  -72.0654491751598982    42.5521506975448958
-28441  -78.4317725670212837    34.7943478434031235
-36066  -86.4322541345501918    32.477546943381661
-55905  -92.5284846666666567    44.0555176666666668
-98359  -122.568497414551544    47.4285786146269146
-12182  -73.6479381320159234    42.7915777272894786
-32571  -87.1622702034660364    30.6352495178857964
-57531  -100.533651042704633    44.0500061459074459
-43432  -83.2512755737920145    41.5557041416280697
-61335  -89.2382179355893754    41.1594868034934009
-83115  -110.191511438718052    42.9538106860465092
-04963  -69.7827739456829903    44.5552028909301541
-27253  -79.3648694154547201    36.0005405027260181
-93943  -121.872804000000002    36.5951033870967777
-72534  -91.7347221079732122    35.5983286358858848
-30268  -84.7076930839057525    33.5313717277723313
-25286  -81.3928426325691277    38.6121771138425984
-65536  -92.6573613561455005    37.6880972241556051
-57567  -101.707236177194261    44.1247654372436102
-57621  -101.083565264150977    45.7656801698113043
-56115  -95.8942826837821514    44.2245120731878387
-53717  -89.5162383722508253    43.0733543490235959
-56401  -94.1664484213459332    46.3475508328369941
-06824  -73.2705842285699305    41.1684445881106811
-01835  -71.0833526143907051    42.7564208826484773
-72546  -91.9379567077409234    35.5799317898894358
-57854  -103.326195999999996    47.7948000000000022
-83276  -111.569667453059481    42.6785068424140945
-39328  -88.7261495676727918    32.7391793671553089
-13163  -75.7079529489795959    43.0792870102040766
-93922  -121.925885937499984    36.5487159999999989
-48454  -82.8185148693694515    43.2024724380630047
-48103  -83.7999455647028526    42.2802827189349983
-06851  -73.4030451743065129    41.1350991613517607
-16424  -80.4508412307939693    41.6421197224155364
-14452  -78.0922387857142724    43.244162071428569
-30099  -84.1142279999999971    33.9800269642857202
-20876  -77.2382096062149799    39.1999577614341916
-80235  -105.076334221255905    39.6463661222221617
-19945  -75.1753772882791793    38.5118684282233374
-60429  -87.6851231991644795    41.5719505097976239
-23923  -78.6345584955926995    37.1007503242617815
-48630  -84.7732875928572014    44.326931100000003
-15478  -79.8194563639610664    39.7968402783308264
-78546  -98.655048750000006     26.2671242499999984
-25567  -81.8644306124339209    38.2285330654761353
-59015  -108.790240924263841    46.0831494712849477
-24523  -79.5232152421863674    37.3309949931817115
-58026  -97.4319892499999867    46.8027112500000015
-68959  -98.932406134512604     40.485642630757674
-28680  -81.6770642357723489    35.754501243902439
-64635  -93.4599854733192643    39.934918413721455
-25313  -81.7617135626867935    38.4214430190048333
-34994  -80.2564353148688809    27.2006106387756041
-22972  -78.236949249139812     38.2185730330350566
-50648  -92.0910844031974563    42.4618498493628493
-18651  -75.9537316094338451    41.2463697504717501
-72564  -91.4632547812343546    35.6087296593075493
-23884  -77.280275516666677     36.9254855833333338
-53065  -88.5470321301518339    43.6801381626897935
-50514  -94.4758779400049775    43.4104155904906079
-53048  -88.4425593477653109    43.5903835293295785
-77083  -95.6537449342992261    29.6922641933846165
-41086  -84.8689462259675054    38.6928190817247568
-56228  -94.6683512992957645    44.9362367112676608
-33913  -81.7389000977100437    26.5626186059894351
-11207  -73.8941345632257764    40.6709458161280182
-52691  -91.143777      40.7667870000000008
-82081  -104.387335693837059    41.5301385745526801
-61534  -89.6534170031473252    40.4162132509834606
-38355  -88.7762957529589727    35.7962764151921675
-73069  -97.4587294534812543    35.2333491180221188
-15962  -78.7241695864197339    40.391410925925932
-58568  -100.95825349230762     46.0580223564102411
-48884  -85.05516507050298      43.2120980249762638
-86397  -109.857635500000001    34.4900239999999982
-64039  -87.9816694999999953    41.6611971000000025
-32927  -80.7964559670971738    28.4699036664083387
-12483  -74.4376326679173843    41.6675354765478474
-36276  -85.5571802187685648    33.1276619785892734
-91384  -118.642020464102174    34.4822449572164373
-29551  -80.1229171944444403    34.3769755277777733
-97843  -119.867470800711601    45.4889610317048536
-64163  -94.6851855339603219    39.3232979592476539
-05051  -72.1174503695051925    44.0870984016919607
-36509  -88.2487839594383559    30.4022829087363249
-77523  -94.8546273108341893    29.7996090555978945
-27285  -80.0351160000000021    36.090135944444441
-83701  -116.202027999999999    43.612563999999999
-75786  -94.9575109999999967    32.9593815000000063
-18451  -75.2199394046740792    41.4009071869618239
-78229  -98.5718444977501633    29.5025553142499213
-56335  -94.8595525107527777    45.6007918118279392
-54949  -88.9185900238569218    44.4625261013916386
-11590  -73.5728458971696284    40.7558775531448205
-58382  -98.8234208186888594    48.3234321513250507
-98263  -122.059031963503656    48.5287182846715268
-06469  -72.4438401177529983    41.5075143448620025
-14806  -77.7880697858072239    42.1580449973958409
-38557  -84.8636427441860519    36.004246023255817
-98555  -123.049734896871669    47.5312724339872119
-34236  -82.5494946788356003    27.3320996129852034
-41189  -83.5644077162472456    38.5458592204424946
-17202  -77.6638328752779756    39.9202032366441912
-04631  -66.9999023655957728    44.9125531630744277
-38760  -90.9925199647059202    33.4606356313725541
-16684  -78.3295422019230898    40.5571180673076981
-93535  -117.983550734241476    34.6935534916521604
-20015  -77.0634899674273299    38.9684941273464815
-77713  -94.2472478608693791    30.0983166892109395
-15362  -80.2182677248645319    39.7627347031908869
-45145  -84.0055127272727304    39.145212181818188
-99011  -117.657657218842218    47.6564678115799936
-83605  -116.674329844077207    43.6560194745153112
-22538  -77.254248290020783     38.2000120758835635
-80118  -104.906102098452322    39.2146333036806851
-29565  -79.4748649111554926    34.351884117587268
-55377  -93.8052735263157871    45.5404980000000066
-39741  -88.8559380551319435    33.6540797073061313
-49894  -87.07701991089111      45.7838309193776709
-81084  -102.385853106382896    37.6114201587561467
-43006  -82.1558451597251036    40.4591373828810816
-81612  -106.823712251964707    39.1636745520110097
-66015  -95.3936948681930517    38.0708315934406372
-73030  -97.1144079226971684    34.4963436625980933
-91204  -118.260125365344592    34.1352277967989153
-47804  -87.3902349520220554    39.4953002827073263
-91784  -117.658539392496763    34.1378934187075558
-48720  -83.3521917179487417    43.8325721994301958
-99174  -117.356661880952373    47.0073857857143054
-71601  -91.9819470119114726    34.2078423032941075
-29824  -81.9864173760986574    33.8049125528977257
-15133  -79.8658313848016377    40.3312305926912629
-64111  -94.5945444451233044    39.0571212881355976
-86320  -112.518680561232102    35.2324081280990598
-39098  -89.7179223488372202    32.5684297790697812
-03242  -71.8183373657908817    43.1746278267216894
-02946  -73.9808965000000001    44.2792280000000034
-84117  -111.838308427615075    40.6625390288118354
-98762  -121.515331388888882    45.7815935555555598
-97402  -123.178654696240827    44.0569329656641884
-56524  -95.6227140988252131    46.2256603094995171
-85759  -112.445711666666668    37.885149333333338
-31502  -82.2987526363636448    31.1977479090909107
-21655  -75.9144415090371751    38.7463810195556135
-23404  -75.8280815353535047    37.7377294242424171
-40391  -84.147647337999345     37.9596158370446446
-48833  -84.512115333333341     43.1039283333333287
-61735  -88.8121462666667725    40.2092701298850557
-01524  -71.9198732207177756    42.2412871161500831
-87035  -106.053633776632964    34.9845610564455072
-28445  -77.5363267764638948    34.4770600066233897
-31061  -83.2492139277916152    33.1000029878056665
-30301  -81.627443999999997     31.7587440000000001
-57334  -98.0362687423167642    43.5399034674940566
-22911  -78.4204250944073351    38.0974711050600092
-26807  -79.3272945132976162    38.6587269444575412
-00619  -66.5929284999999993    18.3983889999999981
-99025  -117.083348796320379    47.7609523245650465
-24872  -81.9012459797508257    37.4691219018691655
-78226  -98.5538971200000304    29.3903451460317306
-43323  -83.240557088584012     40.7384587747972873
-61450  -90.9774294246607838    40.5692516260413356
-74156  -96.0667274999999989    36.3412686428571448
-14743  -78.3986090514644474    42.1947559693401857
-89496  -118.803902750000006    39.4515010000000004
-62376  -91.3852489959567862    40.1151423445641129
-64077  -94.1324494160853078    39.2453089558345098
-80823  -103.471810817910352    38.7602767952239731
-85273  -111.164943327272752    33.2670178727272585
-67035  -98.3622555752374836    37.6618782217371333
-24121  -79.64631707805313      37.1560205046766967
-52326  -91.7483812081967613    42.3913398475409551
-77597  -94.6970822019139149    29.8470746277511871
-51459  -94.6324445571428328    42.0416216428571303
-47265  -85.6387338224965191    39.0092808868373027
-21679  -76.0731342796392056    38.9160901494844467
-92377  -117.400741801615467    34.1512543431028419
-75042  -96.6743994439814145    32.9164864773147912
-74743  -95.513659829593081     34.0113265834211234
-28531  -76.558710977448925     34.697814297392533
-60748  -88.0604396000000094    40.5214710666666633
-83666  -115.969840659090906    43.9448850844155956
-06084  -72.3650263750066216    41.8745551917726786
-59451  -109.396939578427322    47.3702817812380701
-18826  -75.743409396073389     41.754698079842953
-12782  -74.4038171999999918    41.8828596000000033
-10566  -73.9142481854969731    41.2903317461938499
-45403  -84.149976304902367     39.7622330729374411
-32310  -84.4392721507406208    30.4166026400104563
-56559  -96.2078256666666789    46.8772335555555557
-79567  -99.9570148744953713    31.9915705671135555
-30461  -81.7392297475712155    32.4895010972813978
-79531  -101.839965666666671    32.964683749999999
-30091  -83.9216313333333517    34.0249806444444332
-13471  -75.6080859846045001    43.3389832941450805
-78941  -97.1387678935103338    29.7238995799523487
-56356  -94.7525720402010734    45.6288514020100351
-22943  -78.7668772894503775    38.0395209556737299
-38578  -85.2024184605263741    35.9708545789473391
-79832  -103.645674500000013    30.3619394999999983
-85626  -109.587508608888854    31.362930577777778
-59123  -104.476427000000001    48.3611560000000011
-13605  -76.0519873477093284    43.8065114777653832
-00949  -66.215107805488941     18.4282819682920369
-13815  -75.5205249335447064    42.5453316873074741
-95653  -121.975441962085299    38.6790389905213274
-20841  -77.3063719027385048    39.1869947280453559
-59482  -111.670183852670505    48.8857618848987414
-54656  -90.8177657282387258    43.9682696614247988
-75211  -96.8870702865228424    32.7376310691256265
-12204  -73.7350272683788006    42.6846376762336988
-36720  -87.366427588905907     32.1679613989361499
-50207  -92.6435266479014956    41.4439693456407809
-10502  -73.8407782105971791    41.0123920327795304
-54749  -92.1162450829015853    44.9457961981865566
-62279  -90.1342982499999721    38.1534265909091062
-55033  -92.85327246148195      44.7347031282949459
-71202  -92.0877186452777323    32.447780000212795
-49227  -84.7625550245761588    41.9544208906779588
-32963  -80.3701077864278091    27.6786418122862337
-54930  -89.5727321767625853    44.0287088679246352
-07981  -74.4212446414163793    40.8218202525797693
-38555  -85.0088959096985661    35.9236391877139738
-31045  -82.767903569343062     33.2936012919707878
-61725  -89.1162735688985919    40.5952496314333686
-82323  -107.539364808823493    41.0372857205882084
-44849  -83.1306466130069879    40.8060271130071257
-47043  -85.0919068280662145    38.7855892735370489
-82838  -107.435087966706277    44.9678534304399662
-47229  -85.8473760706943807    38.8094231197942747
-14614  -77.6160278323699231    43.1567774884392961
-27546  -78.8676577871421642    35.3869700247838495
-25164  -81.1862890498745173    38.5052718838115666
-24641  -81.8029501000461323    37.0942279327861968
-36481  -87.3663344106628301    31.8094060187319769
-61831  -87.7869354209809956    40.2251596430518461
-90028  -118.328110877342425    34.1001291107325315
-84105  -111.86001187231733     40.7383177116125879
-14542  -76.8613527464788859    43.1332957746478982
-53213  -88.0009276082059984    43.048603111265713
-70507  -92.0241291603953329    30.2814192198717542
-17601  -76.327417535241679     40.0737023837251556
-78408  -97.4379207569635071    27.7955891586221533
-66767  -94.715746650025622     38.0729211960885294
-45772  -81.8208715098716937    39.1379248277394467
-60029  -87.790970883152184     42.0579338586956766
-56672  -94.0253974647741302    47.0323405950580593
-43062  -82.6811422644069012    40.002376513193866
-95642  -120.732396146229846    38.3596885511568146
-71477  -92.4933083999999894    31.4113347999999988
-46716  -159.587132999999994    21.9192870000000006
-91775  -118.09107141333692     34.1139817112091706
-25108  -81.8710658673834786    37.9648658046595529
-79110  -101.866547079899362    35.1547744028595019
-06770  -73.0461486219104899    41.4918770758672508
-35742  -86.8029217999999929    34.7863750000000067
-21045  -76.8274418148350406    39.2057350066214596
-93210  -120.396006029908847    36.1559902865976426
-78101  -98.2286506092972189    29.3219660413207066
-12468  -74.4011337727899473    42.3001593988258122
-44827  -82.7454712949827922    40.8010919674691905
-19013  -75.3750151246005657    39.8477063012206543
-75450  -95.4770051526805901    33.4036919510489483
-44286  -81.641663411633985     41.2392095105405119
-73646  -98.604252197841717     35.8153709784172847
-52332  -91.8844852194114878    42.098977459989591
-04942  -69.5753642496999447    45.0173709468212095
-41561  -82.4590426538461543    37.3376251923076907
-92680  -117.565881428571416    33.9010588571428571
-79244  -100.832818610453643    34.0253689684417822
-76246  -97.8384524556961992    33.2146896202531536
-72401  -90.6834861368564873    35.8575695883264487
-85280  -111.931622000000004    33.401390499999998
-79645  -90.9226782500000041    31.0001977499999981
-92104  -117.127249729135428    32.7420156336829677
-12302  -73.9763719880005368    42.8767606052311905
-54530  -90.7191595593922955    45.5130688591160251
-78151  -97.7114269969847982    28.871850006030197
-99123  -119.047553378268077    47.9188598455882016
-49203  -84.4159900805369006    42.2236732293808785
-32750  -81.3543529598336761    28.7049468585800582
-40863  -83.4621723504399142    36.7545327360703737
-01821  -71.2502683266933445    42.5505863306772696
-24441  -78.8255645711048913    38.2459823846287605
-56002  -93.9388929999999931    44.1632050000000049
-36752  -86.6183538389285559    32.3054424756694942
-54476  -89.5703495185905751    44.9031261131201518
-79504  -99.3839024782356688    32.3440450469953191
-54968  -89.1311093723957555    43.8501831158854358
-96056  -121.370999467171714    41.1104936829003833
-33470  -80.30682221331314      26.7479018436779121
-42152  -85.8177402941176553    37.0978155294117684
-37682  -82.292302486238512     36.3010717339449656
-06791  -73.0658553241645166    41.7648803867156886
-63019  -90.3823972528936821    38.2283628221676679
-13315  -75.140779996075949     42.737083167647647
-10058  -90.0588409999999868    29.8514331111111098
-87027  -106.953812737654417    36.1513628518518146
-27542  -78.1354184406269923    35.6122128900820343
-83837  -116.103158088848218    47.533156330164573
-25315  -81.558298266037724     38.2349102202829982
-88897  -89.7965894062499927    44.8624882812500019
-36041  -86.3253879670913875    31.9207755379511262
-95714  -120.828601144430152    39.2024704779792259
-00701  -66.4919525483871183    18.4280939193548328
-07094  -74.0617340649998681    40.7902562910000768
-33954  -82.1138220254996725    27.0246627613039152
-58725  -101.691382863024316    48.5065048880338665
-92503  -117.45912920201819     33.9041804201377914
-61571  -89.4440082604082249    40.7028486285112763
-37085  -86.2819482099103823    35.95030256285159
-02186  -71.0786816478047001    42.2509630924237882
-26327  -80.9356497628866407    39.1198645704467225
-97144  -123.297506667110611    45.7334064620506382
-85340  -112.386265265922091    33.506411657912011
-26452  -80.4951380299508514    39.0415151033301129
-84622  -111.816474968152832    39.1195191637852631
-75126  -96.4474886491291841    32.7402006243098427
-37111  -85.7949067818181419    35.7353133272727277
-04923  -69.4533225712188482    45.0376752393538524
-93220  -118.788186994764345    35.3333399895288025
-32068  -81.8646640997270794    30.0815321796399751
-18380  -75.5910188571428563    40.0128615714285729
-85701  -110.978681021366128    32.2068592709614592
-50048  -94.5150518647539712    41.5089343311986596
-70062  -90.2497559641103777    29.9893674877088934
-83225  -114.571479466666688    44.2115957499999936
-15683  -79.5976203662342812    40.1069553584295875
-13613  -74.7467493022494978    44.8537402753990406
-77420  -95.9366673981191411    29.269951384796201
-32605  -82.3683397226143512    29.6791650519192025
-68118  -96.1728367562846813    41.2632360355018264
-32346  -84.3874328753125837    29.9858459807210203
-23124  -77.0737160158801089    37.546975054597759
-46507  -85.8300103807494139    41.7168515870733287
-66775  -95.1495221891025409    37.6924413749999871
-62907  -89.5133045992486558    37.8618464800252141
-68007  -96.16924979484277      41.3493486625559754
-44833  -82.7956794231257902    40.7183618090396351
-79412  -101.856977646764605    33.5465109046577652
-43025  -82.5012197968200667    39.9617954510013433
-90260  -118.351591850544636    33.888377897393454
-89731  -107.299735857142863    32.9860991428571495
-76490  -98.0425443189189565    32.953272916216207
-29512  -79.6924734415258058    34.6441496793340988
-67950  -101.888102071157405    37.0085166233396095
-19536  -75.7557072074468323    40.4804665585105994
-30721  -84.9272543528788759    34.7946276641590018
-40347  -84.7000000212987771    38.1583171442428224
-59748  -112.713188783144915    46.0260878951695531
-41778  -83.2990851250000048    37.2669536935484018
-60446  -88.1138557946989067    41.6325607876410331
-39502  -89.0884333333333274    30.3906278333333297
-53818  -90.4981549636625147    42.7481998748565175
-48370  -83.2014740485091409    42.8283201802403752
-85252  -111.65702633333332     33.2084711666666621
-01463  -71.6009594364381456    42.6700625537750611
-80734  -102.277747786477008    40.5338365487544792
-40949  -83.873176108910954     36.8918980141443242
-43332  -83.3815381750131763    40.5872042234787855
-61363  -89.1785126818181908    41.2567227727272794
-71051  -93.4954427864385877    32.3641833738909952
-31524  -81.4740030085470579    31.233355957264969
-19038  -75.170187359254939     40.1024385073477418
-93009  -119.213440375000005    34.2710898750000013
-01260  -73.3156564904214605    42.2883382452107099
-12969  -74.1529239451303397    44.7158107482853353
-02917  -71.5201533508711123    41.8973747034287953
-97452  -122.742867288710571    43.9046816385542868
-15860  -79.0784064870833845    41.3194396621654718
-25646  -81.9439941205412197    37.8276142263222681
-16120  -80.4750141652088331    40.8890255416261965
-75667  -94.8337563120893208    31.9967888004381891
-70522  -91.429204900000002     29.7595020222222395
-76452  -98.361373969696956     31.7574040606060528
-71901  -92.9981537813620633    34.5128517091892348
-20626  -76.7689230233813049    38.2379545917266057
-80624  -104.516128107428713    40.4732073645713939
-21716  -77.6233297440786032    39.3164458723282095
-02669  -69.9976780409356394    41.6772648669590779
-49061  -85.8255629569089677    41.8736964398150135
-56248  -96.1284783427516487    45.8006038777641891
-37680  -81.7463083333333032    36.5753246395440641
-13214  -76.0754023769157612    43.0397197710353581
-56621  -95.402073927672788     47.4608901499427276
-85464  -114.661208500000001    32.7147105000000025
-27292  -80.2229951890993647    35.7485646743441663
-47851  -87.2437814130434646    39.5731476521739083
-43505  -84.7304302881355937    41.5253054915254154
-97903  -117.56201593067226     44.2363434348739659
-50619  -92.66581614046666      42.7934535248479193
-34771  -81.2154341186770665    28.2803968090037614
-39255  -88.5137325294117545    31.9066812941176465
-69339  -103.377886021142544    42.6257435085469396
-63074  -90.3869524338773118    38.7251318053155131
-76436  -98.2205286519523924    31.8814921213921956
-50667  -92.2238770839894499    42.4676592913385491
-42348  -86.7706545000740306    37.8324292288649886
-63771  -89.6891459099251449    37.0784692893021557
-98042  -122.115896122565445    47.3629656757441353
-34881  -81.7464955000000089    28.059274000000002
-61416  -90.5448839656160658    40.5061833123208856
-31704  -84.0554016913580284    31.54964983950617
-76643  -97.191542157907179     31.4524785276684256
-25828  -81.2299501999999904    37.7441792000000049
-84097  -111.676925590262286    40.3012464176778877
-59219  -104.18741422660095     48.5640914837438729
-99546  -176.633546338926323    51.8731796879194604
-81042  -104.721855369863007    37.3189054657534385
-07882  -74.9903519181532374    40.7546006599786992
-38368  -88.3594889109805592    35.5035274543607642
-96111  -120.017888177304911    39.4302915248226853
-21013  -76.497396999758962     39.5125848223668754
-48604  -83.9478066207772429    43.4782963699676017
-58262  -97.7843437284145267    48.6926372637362945
-66958  -97.169833672106833     39.8841304999999906
-50554  -94.848014875376208     42.844252644197411
-87159  -106.270846527777763    34.9480431388888917
-62919  -88.165132844632808     37.4871426271186223
-96073  -122.23521364570054     40.5635147775751221
-85630  -110.168455189831988    31.9019451858699838
-66540  -95.9668159760994115    39.4951788671127559
-43145  -83.2356565895947824    39.5632086562789382
-80081  -105.181271749999993    38.7515794999999983
-11967  -72.8723350165037829    40.7952186132464547
-30401  -82.3403158072819679    32.6014378899238437
-83673  -115.414973986666695    44.1142341466666608
-37087  -86.2931488005240368    36.2554992431160272
-76405  -98.212151166666672     32.2927536666666697
-66749  -95.3971311911541022    37.9276456248791405
-68227  -97.8889535000000137    36.492375250000002
-72745  -94.0935579588322355    36.2482910680821746
-34251  -82.1924447942059686    27.375025887421895
-22960  -78.0659554085186045    38.2181286738854951
-03521  -71.675494999999998     44.0384923333333305
-47515  -86.7054308660442246    38.1777272696772556
-21824  -76.037790382566584     37.9876896029055686
-33429  -80.6173775000000035    26.8498124999999987
-43142  -83.5813462784810071    39.5906616962025311
-77020  -95.3179754778043815    29.7744603437002731
-49452  -86.2968532103840857    43.5161485137911939
-23460  -76.0288169999999894    36.8091250000000016
-98542  -122.696084105109421    46.5294939474452818
-04553  -69.5666700448091717    44.0511068741430307
-13147  -76.5630876403960769    42.7780533180198148
-31770  -84.3714783043478178    31.3276023043478204
-02222  -71.0632840000000101    42.3644485000000017
-39150  -90.9782606055538849    31.9585607865228205
-39079  -89.9176375895705888    32.9623339981595365
-68747  -97.4792982033195159    42.403717614107876
-14441  -76.9559443873239672    42.6847603978873167
-15610  -79.4285964341077602    40.1295499766505728
-04738  -68.0907615333333354    46.7555630666666815
-99579  -157.449474711538414    58.2745244230769188
-47875  -87.502608510204098     39.7156798163265208
-78336  -97.1560347161439353    27.9159397759318288
-49417  -86.1742723492312592    43.0244263196884802
-14450  -77.4325185061014025    43.0861486843286201
-60111  -88.8312940941558793    42.0131615941558678
-95625  -121.90377794059404     38.3505813861386287
-60202  -87.688808273581401     42.0307868583239426
-62201  -90.1342320499243215    38.6332371207765135
-56354  -95.3038876880993229    46.0571797731037762
-06280  -72.1438418154821761    41.6949065921319644
-30205  -84.4666620994589863    33.2758387346754745
-29338  -82.0049317692308222    35.1289615641025605
-18619  -76.7140895855345377    41.4347360100629558
-04078  -70.1148865576922731    43.8189656730769386
-64146  -94.5763085228162197    38.8947058344198311
-76180  -97.2238325147155962    32.8424846717899328
-81005  -104.7164801593416      38.2233524010009447
-93505  -117.962130893991187    35.1252103855852127
-28727  -82.3413496666666589    35.3922540000000012
-47617  -87.2367854999999963    37.905097750000003
-46580  -85.8579469142502916    41.221239822584252
-09130  -70.6767374285714283    42.6628604285714275
-83271  -112.852154321658006    42.4723417378867723
-12209  -73.7866459949566149    42.6414980698847401
-39752  -89.1467366096166103    33.5233105984288784
-54465  -88.8869943302976111    45.3951891712205295
-45339  -84.3478034775955052    40.0060782688524412
-15339  -80.1560849999999618    40.3015505454545462
-84757  -113.260783368582509    37.4576795577006934
-13363  -75.5092884086074605    43.3179803458227539
-31515  -82.3041880930232708    31.673516720930234
-67625  -99.6771396103542315    39.3683147574932022
-11252  -74.0256642857142708    40.608547714285713
-03226  -71.5012549399617683    43.7003604757170265
-59715  -110.958491264378665    45.6922458624385897
-77640  -93.960315348136163     29.8896793491685884
-61484  -90.4354968409877813    40.3003028227159845
-65788  -91.7010767759270635    36.8103554245029585
-17081  -77.2852438113207398    40.2024657169811377
-26680  -80.8843175511582189    38.0936914990347617
-27017  -80.7364298377860194    36.3699055770449249
-62518  -89.1946281341552094    40.0531330311820071
-63127  -90.408452407120663     38.5380554568775224
-96773  -155.218920130434753    19.9703871739130427
-03861  -71.0070490369094358    43.1218815251482468
-26443  -80.7502863652482432    39.0819859326241144
-61859  -87.9638024291694904    40.1410812882065571
-11752  -73.1822176696641691    40.7556438735011639
-29529  -79.9946415217391262    34.6540721739130433
-36461  -87.3406521566265042    31.525407204819281
-88125  -103.212595359246166    33.6412333286219436
-14462  -77.7557232790698549    42.6803188462115202
-54686  -91.7459721249999802    45.5388358124999968
-15489  -79.7002734918032871    39.9573897213114506
-51034  -95.7939095829577809    42.1646961199279673
-63545  -92.9591280923695535    40.2749483708165812
-44841  -83.3067849112951677    41.2510644967474178
-72737  -94.1722966344086245    35.9983371935483945
-23237  -77.4627811364847929    37.4004024561187975
-55047  -92.8199527444262316    45.2050574541187089
-49826  -86.7698554000000115    46.2409545555555397
-18465  -75.5135027249745008    41.8281521713484139
-05809  -72.014053799999985     44.4467046000000039
-45832  -84.7333296226715902    40.9242658512976831
-93604  -119.55237512087605     37.322009645816749
-23891  -77.2028923750000047    37.0501241875000034
-69091  -122.724789888888893    40.8856228888888893
-70346  -91.0025607317970326    30.1058109979262483
-93308  -118.998994069287093    35.4646270641653061
-77943  -101.545752833333339    30.1985479999999988
-52074  -90.4671962697925665    42.1066184819369909
-57466  -99.4636154212328449    45.2188574006849322
-59521  -109.833269832163083    48.2764580898877398
-91803  -118.146740689165796    34.0726377871883699
-55912  -92.9755453655696869    43.6759768871042127
-14006  -79.0500435085064765    42.6349428936672936
-22611  -77.984631861163237     39.1611270878987696
-05734  -73.3344103696026934    43.9852417394521567
-63874  -89.8120269944443947    36.5732105777777718
-62380  -91.195278907845605     40.2412752627645602
-75862  -95.31297307413152      30.9327516398950948
-43755  -81.4378005175194062    40.0481568361947211
-83320  -113.933175980243902    43.345549034282385
-15083  -79.7945797074689551    40.2398581639004362
-68948  -100.015527809090898    40.3381386272727269
-74364  -94.9587527313190378    36.1917581482237338
-19112  -75.1750317031250148    39.8918257265624874
-18603  -76.2497426692414422    41.073058808420484
-05849  -72.0083228837209077    44.5037651860465076
-30273  -84.2735143498637171    33.5816627181832317
-28377  -79.1917891039468032    34.8261092981939555
-75266  -96.7672270000000054    32.792151666666669
-98376  -122.834794379439259    47.8127210223772607
-36783  -87.6082987337896384    32.2402755547550584
-64080  -94.2580019276020664    38.7816682770779195
-10710  -73.844051877705212     40.9667544001006121
-80426  -106.922888663551433    39.8738867570093518
-95039  -121.779421881751716    36.8115023430657189
-56042  -93.479506387283223     43.8096432938342843
-27620  -78.5487035769230886    35.7608839615384539
-58497  -98.5199223496483683    46.7597189258497963
-10173  -73.9786519999999967    40.7538304999999994
-06335  -72.0669523111333064    41.4314573250670861
-93214  -119.570635424999978    34.9480322749999885
-25021  -81.6914878888888865    37.9255700570570582
-54171  -88.116166741436146     44.7111093300395908
-25674  -82.3869147066421874    37.874823730012281
-75978  -94.5210929870129775    31.5211370519480596
-47032  -85.0511486823493215    39.0786926108304939
-76454  -98.6800007219668629    32.2024820732217023
-17957  -76.5167283613861429    40.5929025990099106
-55036  -93.1246264513888633    45.8386660694444146
-60970  -87.734987155874478     40.7884786760332787
-75221  -96.7703004999999905    32.8612564999999961
-88124  -103.635666072650451    34.5351522607208352
-57252  -96.6236398591978229    45.2160533053617186
-53541  -90.0214756832470044    42.5753383526771145
-63006  -90.5155096666666594    38.626534999999997
-22222  -81.6221510000000023    36.5568393333333361
-37877  -83.409083995901895     36.151589178974703
-72201  -92.2800645881006716    34.746741727116671
-28717  -83.1057572430032252    35.110228077709877
-16211  -79.2006611960784568    40.7879611764705885
-44560  -83.1903210000000115    39.0647634285714318
-85126  -112.050460000000001    33.2315467500000068
-95976  -121.764967333333331    37.0083891666666673
-66060  -95.3309781211629996    39.4166569779214271
-85043  -112.204820457856286    33.4322450123395569
-76702  -97.2974509999999952    31.5954170000000012
-55447  -93.4930153956972418    45.0027170360829487
-27375  -80.02844433333334      36.259604666666668
-71218  -91.7813285757575841    32.349823999999991
-03216  -71.7880030662667394    43.4421604703887638
-74861  -96.6091182000000117    34.4484074000000007
-46208  -86.1732821030040981    39.8235892464746044
-64803  -94.543006599999984     37.0371876666666608
-87418  -108.18110572684752     36.9148003077642386
-22937  -78.6168158879449379    37.8146623600879863
-97813  -118.501085815955378    45.817597093771866
-02149  -71.0504453628990404    42.4111562414035888
-25789  -80.9966511333333159    37.4451159999999987
-42442  -87.4760460242847415    37.1719390480303105
-99682  -151.143931517241356    61.0695947931034624
-30529  -83.4745910934807824    34.211320867814635
-35072  -86.0333053094663569    33.0962063013771655
-96153  -120.04385802173914     38.8337857173913079
-80233  -104.95194901770023     39.9004424058236324
-48892  -84.1653044100894761    42.6511064873881409
-19710  -75.6035473809523779    39.7764148809523874
-36544  -88.2362898310655055    30.4776311671850415
-39767  -89.4484370970223921    33.4663820448309508
-50111  -93.7874948350029598    41.6916083455116464
-17580  -76.213683844444418     40.1174918444444515
-38061  -88.7656092800061458    35.0642714850518473
-06870  -73.5671255466748448    41.033871369127489
-30257  -84.1883918778209477    33.1447352121919323
-55609  -91.7595723115182551    46.9891848730366632
-35667  -88.0635850000000033    34.9114576666666707
-85334  -114.516987650574706    33.6069632643678204
-44424  -80.5691373333333303    41.3122296666666671
-53827  -90.8385090530489094    43.0496190275163428
-24413  -79.557165669344073     38.5113515207496704
-70665  -93.3936489898258344    30.1644913232245102
-32355  -84.2075828777218476    30.1622221356783697
-27013  -80.7022504618277452    35.751645650013991
-31806  -84.2988779279008753    32.250807945819119
-02779  -71.0769638793765353    41.8371773504901512
-68783  -98.0792411321022968    42.6156428920454289
-72629  -92.5599188961856925    35.7346134962642807
-15454  -79.8703599842519765    39.8627854645669402
-81243  -107.204947328816601    38.2835346314363321
-95248  -120.515548454944891    38.3313407029303761
-93925  -121.431926639024411    36.597314873170717
-04579  -69.7692233130127022    43.9625904731084631
-29468  -80.0709706937579142    33.4215710321590365
-15017  -80.1240923306301198    40.3443798700520873
-91354  -118.550989377931288    34.4495941547681497
-63537  -92.169300520833346     40.1678144281608596
-57321  -97.5222471036705656    43.8597173407737557
-29503  -79.5597145833333173    34.1129758166666761
-39120  -91.3392825426028878    31.5332212596727999
-74502  -95.6817826499999882    34.9055434500000032
-03827  -70.9898711480390574    42.9063542398546431
-27351  -80.274676816666684     35.6543849166666647
-44640  -81.1479045514705604    40.9825327647058728
-75472  -95.8673866177620795    32.9129473273356155
-72081  -91.6627344516360409    35.3421326243132938
-63718  -81.0432026000000008    40.0276249999999933
-47120  -86.1914457528450129    38.4544518060992573
-55376  -93.6548260211031192    45.2091127638367709
-46035  -86.6636509515128495    40.1908318471684041
-22572  -76.77267199300681      37.9747863336026725
-44614  -81.5779938422909368    40.8882091539729799
-16292  -79.6850457500000147    40.7107740833333338
-60512  -88.4208822268455776    41.6980089040268211
-78202  -98.4627197110975487    29.4278082593485628
-28138  -80.4421215793897915    35.5326456073729844
-37078  -87.7767478497221134    35.9394445553656183
-32520  -87.203434499999986     30.4123174999999968
-46260  -86.1811078795106056    39.9016235998403275
-25853  -81.3143712499999936    37.6327243187500002
-76013  -97.1495472742260802    32.7196667787471327
-56523  -96.8328794163425073    47.6360150369649347
-23909  -78.3947435000000041    37.3015642499999984
-03626  -85.7741567142857093    33.3319905714285696
-46146  -85.5774108154506195    39.5779251072961316
-14305  -79.0364188882328165    43.1158832069449858
-77652  -94.9141537812499934    29.7593372812500085
-74535  -96.4364855714285767    34.4851217142857109
-51002  -95.312379154582402     42.6959124084347081
-70785  -90.8490641854933756    30.5304097509317849
-48159  -83.560651059297669     42.0200126678180865
-41059  -84.3591482025574635    39.0059101701719868
-35677  -87.9799964204959366    34.9528195591755093
-30540  -84.5348044438116375    34.6934425544082075
-11777  -73.0602417019806438    40.9485545325111104
-38460  -87.1493785642728085    35.095601112552778
-44824  -82.804488645632901     41.3854958060792768
-04539  -69.5038398187169548    43.9620024917881054
-13501  -75.2318077290479295    43.0832527472840923
-37406  -85.2450045981851616    35.0662937320047874
-35105  -81.7731619999999992    26.2085379999999972
-06343  -91.4557095000000118    40.3595915000000005
-16735  -78.8035209524446714    41.6552573744443393
-60953  -87.6805384985318312    40.6243336313857668
-41408  -83.2861144726774967    37.7954817691256864
-33157  -80.3448699979679475    25.6060865461694007
-06339  -71.9972721103433315    41.4400276985969569
-24817  -81.8158010420168154    37.3629054201680475
-34133  -81.6938839999999971    26.3523564999999991
-47969  -87.1475949230769089    40.2040200161943417
-33135  -80.2350243023333149    25.7667773669999676
-68850  -99.7352879454569603    40.7956978317524133
-18063  -75.1913438391304396    40.7804247304347811
-07711  -74.0087631822759704    40.2374917421953455
-47353  -84.9234119689660361    39.624879601174321
-54441  -90.1055735037220842    44.6407451315136328
-70515  -92.579001476218977     30.4533836335540471
-05821  -72.1083118333332891    44.3164191429137873
-54317  -80.6505421111111076    36.573318444444439
-92386  -116.833374711367668    34.2449088765541276
-23936  -78.4816274479172478    37.522904134503797
-46783  -85.3448511394890801    40.9760881586990919
-82512  -109.253797906565453    43.3471530505050353
-63625  -90.9819699038272915    37.5559704789009103
-21641  -75.9414412096774072    38.9178116290322649
-03303  -71.6466515564233362    43.2874946225886319
-88063  -106.587014420553487    31.809426313438756
-12406  -74.5775854241719713    42.1205819148751246
-00926  -66.0570604306054463    18.3618161614597568
-49408  -86.1565831003150322    42.5782688797876716
-87115  -106.539486333333343    35.0580437777777831
-40977  -83.70929269871786      36.7368148169737054
-48686  -85.4973379999999992    44.7369713333333365
-15456  -79.6560828929604128    39.9261012883316937
-15925  -78.6406861478260879    40.4085569391304205
-14454  -77.7673140571816788    42.791276572014084
-41260  -82.7585213408693932    37.8249273573913314
-29334  -82.1212234403590884    34.904316463988593
-33724  -82.1994188333333398    26.5520269999999989
-48671  -83.8927788000000021    44.4735660999999993
-38820  -89.0334957551020523    34.1736275918367269
-12589  -74.1377874062411735    41.6172039196225683
-58591  -100.670840124999998    46.8361733750000013
-32832  -81.2134528636366184    28.3996958308340162
-31760  -83.3870870625000151    31.646948312499994
-77630  -93.8164121724735764    30.0855730136729953
-02747  -71.005931328402724     41.6459934393066717
-39145  -89.7874785632988193    32.3175095082350694
-22642  -78.0690190137072193    38.926823638051431
-87315  -108.588952150793631    34.6765425238095162
-28749  -82.0949233249804422    35.8436310439475392
-50471  -92.8788144856856093    43.1506575228528249
-26210  -80.2321906931216375    38.8491785925925726
-77468  -95.9009325655736973    29.1769725491803413
-78018  -102.336273500000004    35.6833649999999949
-48621  -84.0295268288830499    44.7219233557728941
-98832  -119.016020937418546    47.3728839491525306
-10036  -73.9902844977875844    40.7595271504424588
-18914  -75.2081347568291818    40.2836375295919069
-28510  -76.8045432857142742    34.9974390415542729
-70803  -91.1743108333333367    30.4157536666666637
-16936  -76.9718043573477644    41.9409884476126535
-08720  -74.1003910505226884    40.1413082282230036
-43213  -82.8653854878402996    39.9692794894262988
-58219  -96.8788327968750309    47.4675456093749943
-59016  -106.936338796954345    45.5282335329949177
-60403  -88.1242694546518095    41.5666847730648641
-52731  -90.4854949767779573    41.9717788841857526
-25107  -81.6067752440056324    38.2185482552891003
-25159  -81.7850001299305376    38.4853148156742222
-63012  -90.4410750622099613    38.3366037688312389
-72640  -93.1567573833333427    36.0430977166666722
-60180  -88.5259473794157685    42.2183128033144754
-40504  -84.5421740529409504    38.0360610812091267
-30076  -84.314794094199101     34.0249451721547089
-79559  -100.447812142857146    32.5680392857142849
-10901  -74.1126851074634914    41.1269633319075467
-44125  -81.606916670425889     41.4110380736925237
-13601  -75.9102308276852824    43.9721763484015895
-66524  -95.516479598030358     38.7903455499850409
-22041  -77.1453434570839818    38.8477657782101886
-59860  -114.153467814215162    47.7139064797291894
-43460  -83.5648877967302184    41.6029829231110071
-63147  -90.2256326760860219    38.7006756925850652
-60146  -88.8702192200607612    42.0943934286803056
-24442  -79.4206578857715613    38.3469805791583056
-28647  -81.9500862936288001    35.9623479612188532
-01343  -73.0060185464480895    42.5937326092895745
-59046  -108.975232563345344    46.3352996115035864
-47164  -86.1003837942900248    38.4027781540996003
-22654  -78.4465709110844642    39.0768150550238929
-56667  -94.9343747179378852    47.7241323319362607
-44287  -82.1340136664026232    40.9524414873129601
-81637  -106.985708579065601    39.6649338700804819
-04291  -70.447785333333357     44.038563203703724
-41421  -83.1624945699038989    37.9848811440768159
-28398  -78.0753125098291889    34.9928415681152103
-04630  -67.4000430643519763    44.7582998494463595
-28303  -78.9565199693130495    35.0827333720717576
-04865  -69.1330574848484929    44.1808594848484759
-51351  -95.1732917104121299    43.3319648893561222
-18074  -75.5088143533403127    40.315786196606588
-49651  -85.1374824280356961    44.3817122010859322
-75164  -96.3210714597156965    33.0707435592417056
-97364  -123.986407753355763    44.998180494966455
-12477  -73.9961394671712043    42.0830140957331835
-33477  -80.0797104842741589    26.9112352377017174
-96769  -159.671145500000023    21.9628816249999943
-65686  -93.4397909152455384    36.6290620163880476
-66012  -94.9047887000342172    39.0662458914729385
-17746  -77.1667640000000006    41.2829090000000036
-03903  -70.7885271298825671    43.1405807683692899
-62979  -88.2494712010894204    37.802339359583975
-71161  -93.7549142499999988    32.4996909166666725
-15772  -78.9178085694443752    40.8759418353173984
-80273  -104.987307999999999    39.7273619999999994
-27504  -78.5287168270905909    35.4040157821881181
-73664  -99.1782653183453249    35.1591256025179746
-46160  -86.2702829890798313    39.3336444253882149
-39164  -89.9809000000000054    32.8845329999999976
-95437  -123.763009777679059    39.4427029196382222
-44667  -81.7669710367328406    40.8380272273120113
-89108  -115.225281832975313    36.205989470277224
-86351  -111.767144140454789    34.7849977755796687
-75752  -95.798784335513929     32.2217771524782961
-40346  -83.7420288981481917    37.983909427248669
-52753  -90.3694300836743025    41.6124440936789455
-66423  -96.0981920063937736    38.868472316176522
-66013  -94.6822106485764294    38.7405105475786229
-20861  -77.0013515676624678    39.149089615992942
-28301  -78.8783851957712159    35.0689220149093472
-16853  -77.7873151508620992    40.9432772456896572
-36114  -86.2526126538461426    32.4052356153846119
-81635  -108.033083011168628    39.4382591821566848
-48115  -83.9143286666666626    42.1641340833333302
-27865  -76.8107433234575439    35.5663946740988237
-73669  -98.7445705460233825    35.7335336327078537
-36017  -85.5667224189638063    31.682597965162131
-58343  -99.6847038163265324    48.3250418571428781
-87749  -105.100763618181773    36.558122955844162
-88337  -105.894800987902499    32.9930003720975975
-33403  -80.0750995723619639    26.8039389683109981
-68358  -96.6062842219625963    40.5204759574766129
-19319  -75.5237332320675421    39.9242086877637234
-03470  -72.3471975399441334    42.773894081131516
-23055  -78.2274226345574277    37.7792852546658935
-95987  -122.214900955181093    39.1450373029760428
-80445  -105.891452607843149    39.9559773921568677
-26424  -80.1470077297297223    39.249915135135133
-62354  -91.3511134471727928    40.5268007824101204
-57073  -97.0721515791855438    43.0101784601808816
-38863  -89.0076128842257503    34.2239762497950579
-15926  -78.8218807519628797    40.0692507080892071
-08890  -74.5783152291666624    40.5366302916666683
-13612  -75.7738730426267182    43.9951011779954655
-32462  -85.8071574079339285    30.578560113223201
-08314  -74.9442162874074143    39.2217087511110947
-47220  -86.0523271409806512    38.8799710672063341
-53029  -88.3503205635878572    43.105785169146472
-14622  -77.5561072462704288    43.2148062723135382
-68901  -98.3920308766598737    40.5963215846585754
-32223  -81.6305582002164272    30.1545577753173646
-71268  -92.6950921542549793    32.3344745726011595
-63091  -91.390168612880899     38.3664191520082767
-24322  -81.0994346058201359    36.8139909179894289
-44720  -81.4192833097363433    40.8921541316954418
-63752  -89.6792745833333385    37.3126967916666601
-75080  -96.742465556300985     32.9705973776641912
-94565  -121.912870214747826    38.0143438494012074
-03845  -71.1386312873239604    44.0955845699530826
-26743  -79.0710716803625644    39.285207299697845
-61375  -89.2550114236000098    41.0520592581460733
-42345  -87.1824478775458545    37.1636593490200298
-26106  -81.5633856666666617    39.2651786666666638
-90623  -118.042797165282209    33.8488264548725226
-67260  -97.2925735348836866    37.7188005116279186
-17239  -77.8417707263157723    40.1384092466165612
-29172  -81.0922624119241817    33.9022194156096788
-79759  -102.751480409090888    31.9169534772727239
-04625  -68.2627883434578848    44.2420810514018967
-56285  -95.3554257097076459    44.7824672462021169
-66403  -96.2828437632169454    39.8666035742407345
-63001  -90.6750930714285772    38.5031205714285747
-18611  -76.310046901639339     41.1992670819672
-35463  -87.6982555938069055    33.0743223867638676
-93704  -119.801418091225287    36.7977262908340563
-02468  -71.2320793370985825    42.3268943124257007
-38994  -89.4120580000000018    33.8528686000000079
-95527  -123.486156936111982    40.8468695636930192
-12544  -73.6610839425287622    42.2265044137931014
-40140  -86.2984877510015167    37.7259284252337039
-98662  -122.57662809400361     45.6770182864948922
-16102  -80.4049673815811587    40.9664051689786106
-47711  -87.5380201407484577    38.0216805778746618
-81050  -103.535894057935536    37.979282868240837
-88268  -104.356500328358237    32.2365275970149199
-29649  -82.1513049999999936    34.2348113388657822
-61088  -89.2480728024905119    42.2741391693183957
-59351  -105.658300973941422    45.7466047263843052
-68789  -97.9976767985865962    42.5302824876325332
-25676  -82.2466037106986789    37.8022416080786243
-38827  -88.213286367328422     34.519589764608547
-28901  -83.8234404624581089    35.1959511736765691
-94525  -122.219471706019974    38.0520778959866703
-41216  -82.8143176726504464    37.7399419809926542
-47420  -86.5495465158730184    38.9129082698412674
-70643  -92.9200987882563112    29.7577007686832644
-30833  -82.3687113778793503    33.1973360923102518
-50022  -95.0041119022546354    41.419486969373196
-06331  -72.0036826422477247    41.690396337359914
-12516  -73.5662724936598096    42.1116888845649129
-32536  -86.5857898344377759    30.7621035353028915
-49980  -87.7314706666666666    46.8260536666666667
-00734  -66.6711606666666654    17.9948503333333356
-99671  -162.285632374999977    63.5233111249999993
-60148  -88.0142592742837593    41.872712065390651
-41010  -84.6153417526829514    38.5054132546362808
-76264  -96.8452560329062919    33.7411777880022754
-53563  -88.9548685489534847    42.7777552471819931
-93306  -118.914031053804052    35.3990534162437669
-57661  -100.941503634999989    45.2871006799999876
-73860  -98.8658319099236707    36.5888784656489392
-68788  -96.7186461534103046    41.8388314019244802
-12560  -74.0532249999999976    41.5472605000000001
-19246  -75.4293785000000128    40.1843799999999973
-50528  -94.5393703464466881    43.1316219949238757
-73068  -97.2973578409247608    35.13909839998054
-66032  -95.2495065863462429    38.2814293914360491
-78828  -99.9944996817594074    29.8075625717982007
-61261  -89.9174986331395161    41.7230883970930293
-79526  -100.771298983314921    32.6292271627462327
-88096  -109.007127749999995    31.9055365000000002
-62993  -89.2717862500000052    37.1503332500000027
-43458  -83.2115361403508444    41.5319433859649223
-97340  -123.080760499999997    44.9464292500000013
-93633  -118.943346825902381    36.7378413333333427
-11430  -73.8120382999999975    40.6583986999999993
-38573  -85.2161135804876437    36.4824565065920225
-92714  -73.9913627500000075    40.2809404999999998
-24282  -83.0694588298397179    36.799019569667081
-60607  -87.6529719847536626    41.8763391712615345
-62956  -88.9278913313052186    37.2805760741150252
-62888  -89.235783012223294     38.1238522419280343
-28314  -79.0179416040423916    35.0579124766629278
-67570  -97.9935725627603063    37.7845349124508871
-08638  -74.7615628750524621    40.2542541570249313
-23455  -76.1418874775728085    36.8875532734286438
-50529  -94.2011840566372314    42.7218950690265586
-55338  -93.9941691238706483    44.6690599205209367
-13319  -75.2701119326683283    43.0261532468827852
-54211  -87.17001653757832      45.1596782212942927
-21131  -76.5681347624096702    39.5037730863058343
-21767  -77.7461286040403792    39.6974385656565758
-01013  -72.6067711345896214    42.1624895947361011
-76622  -97.2332810505618141    31.8140358693819891
-15129  -79.9962822830803901    40.2921976245922764
-40423  -84.6950646666666671    37.6063940666666667
-76458  -98.1938563502285291    33.2007948822185099
-15359  -80.2848026809815849    39.8834881717791561
-33761  -82.7236217375291289    28.0318154303029665
-51432  -95.1172753636363666    41.9601775454545347
-76122  -97.349959454545484     32.6809631818181785
-50258  -93.0791830360070378    42.2355260498059479
-78384  -98.3829594450344302    27.6335196799865059
-84085  -109.919943179640654    40.4563325169660857
-30286  -84.3388921502688476    32.8960294206156902
-21778  -77.3346313012144861    39.617749190283341
-45851  -84.5943876305353371    41.0341198288169693
-26556  -80.1326965000000087    39.4329054999999968
-28173  -80.7439198766304003    34.9463642491691076
-15834  -78.2128448760577584    41.4973714858447948
-22484  -77.1631490000000042    38.2535785000000033
-26271  -79.6054980129869847    39.0637207748917774
-74881  -97.0812877954309528    35.6740764589821922
-62068  -91.2536903333333385    38.5166354999999996
-63173  -90.750903509803905     38.6081236078431402
-33973  -81.7244143488442347    26.6012250360251912
-71003  -93.0101743132488252    32.6394350221986684
-08501  -74.5705403617664331    40.1583852953388245
-72064  -91.5993430640967006    34.7921628642791987
-18441  -75.6232578922413836    41.6630733793103474
-45809  -84.1829269005848317    40.8455052573099522
-58282  -97.848230735171029     48.9138829175993166
-34202  -82.4049313939644037    27.4138534232503517
-28739  -82.5261008769429765    35.2858440615286995
-64643  -93.3655699334629219    39.6201530830899387
-66604  -95.722796189582354     39.0403777189861998
-34117  -81.5883975765001423    26.1807140625000301
-55345  -93.4853741197440229    44.9144126350598754
-14850  -76.4937058981739284    42.4442802232056238
-20632  -76.9657568611632428    38.4302473283302106
-49611  -84.9723732921810608    44.9737005596707746
-63333  -91.3210287216428611    39.0371040345502536
-63110  -90.2616828948530525    38.6217882371327974
-37028  -87.8652445861494868    36.6270713465016513
-24101  -79.7948432481054795    37.1805906883462427
-27570  -78.2372012229299401    36.4382484012738743
-96046  -123.442321806827948    40.615989610630983
-15695  -79.6939619138755404    40.1970735885167443
-30633  -83.2476532262633668    34.1784787964590606
-19940  -75.562082791556378     38.4768432875845647
-36766  -87.0774969100345828    31.9301033079584649
-46502  -85.9751353376623229    41.2599836363636214
-24251  -82.5921163930028115    36.6566825334702102
-28853  -82.7928023043478163    35.7051427391304372
-20802  -78.8383644999999973    38.5184770000000043
-54153  -87.9132770879899397    44.8931419949721331
-50051  -93.1455980900847322    42.1302052720677409
-81238  -112.02033999999999     33.0740146666666632
-76723  -85.3073145000000039    41.2785264999999981
-85718  -110.918849397764646    32.3116301153912318
-29651  -82.2311019956543845    34.9461643824328831
-29507  -79.7567155000000128    34.1830000000000069
-74110  -95.9547930725023832    36.1830328001938355
-95631  -120.853534183348188    39.0112396833183226
-52057  -91.4524742866313147    42.4915163618407163
-28806  -82.6151657656741207    35.5827503117473327
-98032  -122.268092863603655    47.386880591052531
-43560  -83.7249305101788508    41.7054937736527265
-59745  -111.676134393939392    45.5692008112554987
-18374  -75.5694433999999973    41.1704334000000003
-90505  -118.351393431926184    33.8089333995619086
-51445  -95.4601933573608221    42.3279163012372308
-37934  -84.1764300248876225    35.8741530693954545
-96777  -155.478465181818137    19.2717697272727264
-22921  -81.188169666666667     32.6810820000000035
-12157  -74.2960890661620823    42.6643849839233127
-56030  -94.6048916666666599    44.3252584666666678
-45206  -84.4851885810278418    39.1276803909749518
-70377  -90.530356504413632     29.4655390840689861
-15689  -79.4911530161290472    40.2196573387096947
-82070  -105.807461686874788    41.2137639075548137
-33412  -80.2215847074457855    26.7945936777408527
-44048  -80.6444275361642156    41.8573719682687013
-46158  -86.3731192898404458    39.591827126861233
-20565  -77.0190889999999939    38.892241999999996
-68964  -97.9035983017241165    40.2349280517241539
-03590  -71.5558783706473633    44.7145548451024553
-12588  -74.3685034210526368    41.6287510526315785
-11547  -73.6431801574073717    40.8286784722222507
-01338  -72.7939115726316146    42.5801479326315402
-19426  -75.4480321719842379    40.1888653569311884
-23486  -75.8089167164178832    37.5171549813433032
-71465  -92.1933057295641447    31.8757632678241052
-38326  -88.2630273730875103    35.0394489425606324
-47861  -87.5588457364994355    39.0589458138643977
-66018  -94.960983685365747     38.967269450656687
-28467  -78.5767687140694875    33.9136518999349477
-79364  -101.661339410505093    33.4548759943216609
-25247  -81.9926249430893961    39.0054694166666565
-54814  -90.8474130932235795    46.8386981364467445
-65688  -91.6462740999999994    36.6993450333333442
-29111  -80.0127149113832843    33.7944507755763794
-85371  -114.413146733333392    33.9451664533333428
-72106  -92.4605490526834757    34.9674534532001502
-77984  -97.1701465133259319    29.451998570598164
-62910  -88.5722422487575045    37.1554706521056772
-65484  -92.2128599290953161    37.3747345904645556
-64671  -94.0636818319920565    39.5401254478596016
-85622  -111.019996992510883    31.8149012832743807
-76255  -97.6991976550941672    33.8109730195864557
-03619  -119.735935499999997    36.8554275000000047
-89557  -119.659833666666671    39.8857758333333337
-33428  -80.2149514901210097    26.3485208724342641
-15943  -78.833966012010336     40.4745884128840601
-74955  -94.7781304577256378    35.4709111233536021
-79799  -102.633941133333337    33.5063928666666726
-64674  -93.1305050526694345    39.9615792987013165
-75695  -94.7682233999999966    32.4205437000000032
-83285  -111.359940366265121    43.0304080831325422
-25985  -80.8341059380805405    37.7578255356037147
-72935  -94.1380678973988694    35.4975881835259912
-54414  -89.2198723548812183    44.9325622664907769
-14603  -77.6061065000000099    43.1614505000000008
-85543  -109.84107903350727     32.8882130861619046
-94014  -122.450321028132194    37.6982917281041949
-20764  -76.5097978185593917    38.8357858382964736
-21044  -76.8830610056019168    39.2117682098218197
-71934  -93.396982374999979     34.6961760000000012
-92869  -117.794425316372354    33.7929917310365653
-58413  -99.375031063432985     46.0363590930349673
-62246  -89.4196611253881457    38.898065223405851
-03746  -72.2747932216624065    43.4910566423174103
-27208  -79.5380290212767136    35.5560630035043133
-82054  -104.395135630034034    41.0690443646970138
-94558  -122.293863460152394    38.362235084638364
-73622  -99.0094781220930287    35.3876092558139632
-77019  -95.4053201609607981    29.7526003245363384
-59453  -109.615581803999774    46.6799272950000201
-56087  -94.9768877259605091    44.242830129691427
-16142  -80.3373725092952355    41.1345598230574723
-62541  -89.3522872179486853    39.9691844358974393
-22060  -77.1440236030449       38.7028073422611314
-50552  -94.4459065741935433    42.4513192709677227
-57936  -114.005725285714263    48.4949826428571455
-57536  -99.7583724892596564    44.5337281923967083
-04438  -68.9203602939307558    44.5987558214536719
-29450  -79.7946268205851652    33.0324695553126304
-59747  -111.903028128834293    45.6721979202453667
-95064  -122.057546445026333    36.9907198586387338
-68801  -98.332751927546127     40.925213123031611
-25669  -82.4650497901302231    37.928399469088923
-27411  -79.7688990000000047    36.0759714999999943
-28772  -82.8510565253243243    35.1323002925398029
-15732  -79.2115545937571852    40.7275966320566667
-77377  -95.6437004149478014    30.0480597515205616
-68361  -97.6009117121752325    40.5256013275598832
-02920  -71.4678375086065216    41.768587016365629
-94367  -122.703918666666667    47.5252286666666635
-13776  -75.3347452321711302    42.4709877591124965
-71292  -92.2156539590617825    32.4310092897129181
-60552  -88.6857183000321072    41.6438764292620363
-34224  -82.3021639362906114    26.922242055578316
-76427  -98.3799198198052949    33.1635236639610298
-72761  -94.4893262639647418    36.1773508426645236
-15944  -79.0949988421702841    40.3702380731607136
-72411  -90.5719713181817099    35.7478174561983977
-25044  -81.3353069582887542    37.9128233818181499
-41011  -84.527527509099869     39.0704454329436288
-42563  -84.4678370833333361    36.7334087500000024
-94561  -121.708186261155348    37.9885523515525421
-41045  -85.0124949058698007    38.7220225706499548
-04921  -69.1325562723658322    44.5684649356361433
-03051  -71.4109673100397799    42.7654108533237007
-17520  -76.3507853686689231    40.0998801888497098
-97371  -123.202485037682791    44.9824631951630423
-97835  -118.758060443556275    45.9079671978022787
-76856  -99.2286706908232077    30.7204899878456992
-92610  -117.661449629713985    33.6848186076190004
-78948  -96.9735589272886926    30.3030090591327372
-10473  -73.8579156690820753    40.8163389064009863
-70519  -91.9016255365852999    30.0894499512195104
-30802  -82.322219804683769     33.6066603196248437
-56350  -93.2647138354141703    46.2801947395005584
-88041  -107.937344337695521    32.8014979336099941
-54013  -92.2162852971801925    45.0735282414483862
-13167  -76.0577206582771339    43.3133311240694994
-27042  -80.0581327668334382    36.3360829610462019
-07451  -74.1404430000000048    41.0718274999999977
-27811  -77.514317666666642     35.5891992456140329
-67061  -98.392433992647085     37.0954683345588165
-10044  -73.950547718750002     40.7609045156250147
-73487  -97.4608873585584803    34.4799103243243223
-81143  -105.876108968244083    38.0918886313114484
-38109  -90.0769521286105999    35.0394121092114261
-85541  -111.262049246969113    34.2663757914646041
-61108  -89.0115926666472888    42.252825685235301
-70391  -91.056230181818222     29.9784614393939428
-97795  -121.577063599999988    44.2214585999999912
-08751  -74.0767803398177023    39.9492517860182517
-40238  -88.0259255454545269    36.9928152727272774
-16669  -77.9098688194987972    40.6472405338780547
-38365  -88.2331734805194827    35.052243766233758
-12944  -73.4912833735855884    44.4816204437024467
-08065  -75.0266604274181077    40.0029885969535854
-28479  -78.0379004691500455    34.1449074776830415
-85608  -109.385406976470549    31.5585958823529573
-34748  -81.8776743319011189    28.7695120731385003
-95843  -121.366152748290133    38.7162991848016773
-29325  -81.8724617794479883    34.4669097575839771
-78061  -99.0562025015098016    28.8898798698406694
-75024  -96.8034319902189395    33.0770361867341265
-55378  -93.3613369399542989    44.751589678754975
-22670  -78.6469255000000089    39.2480015000000009
-27527  -78.3835401019873785    35.6518142763826518
-93915  -118.906369999999995    34.3977335000000011
-00601  -66.7480409974338187    18.1704226911890281
-45786  -81.6473290533620286    39.5038127097365077
-20106  -77.9905589368535743    38.6760467536054691
-43335  -82.9093540370370334    40.6687491851851846
-03467  -72.4347594079422521    42.9694338182912432
-08075  -74.951613790572253     40.0265133974286371
-57332  -97.6142813194167758    43.5808112531477008
-35957  -86.1847393511233975    34.1968093276719003
-21790  -77.4874930358974439    39.2644924205128163
-71171  -93.7166196666666593    32.5237093333333362
-16830  -78.4419707117103115    41.0277734937557952
-83524  -116.660559399252961    46.3981019640958721
-77954  -97.2856177379740075    29.0788852581149158
-27837  -77.2264107631903585    35.5433428853196389
-98323  -122.03781099562822     47.0547496409835233
-22833  -78.7656852500000184    38.5422992499999992
-73056  -97.6189235911110273    36.152051607407401
-52531  -92.8068674175259076    41.0215778912442417
-67749  -100.533865879724985    39.8212396002290987
-75153  -96.3399718441331316    32.1525488511383486
-10509  -73.5917022754818788    41.4159492889666012
-67634  -98.6032924999999807    38.8307961412776592
-72636  -92.7167109142857129    35.9920738714285804
-49725  -83.9467709944588591    45.9894276357591707
-63736  -89.5421813141269922    37.0907047186311587
-61606  -89.6105779688598716    40.6997851195380278
-24161  -79.5442540503339615    36.9837864108884986
-67954  -101.600223263392749    37.1551048013393128
-80861  -102.737593402597383    39.3695142813852215
-11780  -73.1662372657442575    40.8873711761529037
-05649  -72.3947158263422494    44.146563406879217
-49753  -83.75509587922447      45.0501433005539766
-82845  -106.72062414889696     44.7599132444852543
-60421  -88.092501114900287     41.4273801385561384
-74109  -92.5796903333333319    31.3659459444444479
-11368  -73.8604160357142945    40.7471884821428603
-40210  -85.7877980905604858    38.2325479312683569
-32212  -81.686559117500039     30.2039036299999921
-32634  -82.2497345000000024    29.3602729444444464
-07204  -74.2658777539164845    40.6658061834203792
-31035  -82.7055881213446469    32.8439456474446629
-29939  -81.2429351875000236    32.6701567500000252
-71210  -92.0543427499999893    32.47344425
-00766  -66.48982146529967      18.1252928533123132
-06606  -73.2085283577382455    41.2117733074253749
-85040  -112.027862189363532    33.3963795598434103
-46228  -86.2021292389881495    39.8466966128603772
-56334  -95.3669064772028321    45.5953560216158067
-93614  -119.730416198070401    37.2198929660603142
-07825  -74.957549454627511     40.9705547052742034
-08520  -74.5358094307419208    40.2624409389718991
-75561  -94.2729303773648724    33.4904936763512424
-92697  -117.844251     33.6483428333333379
-30264  -84.8689498518518377    33.4085209629629745
-30810  -82.5909791301116343    33.2446938258506677
-16635  -78.4545059771873809    40.4159291129897795
-79762  -102.349039505640036    31.8894067419324436
-78075  -98.2458227658863024    28.6450697324414563
-30236  -84.3234757773760606    33.5288362091589605
-75961  -94.5510107281260019    31.5832912847558873
-98571  -124.198245823019931    47.2016352908415655
-54838  -91.7817495154870358    46.2418501995897557
-54201  -87.4219450398074684    44.6343925546806659
-36101  -86.2982417500000025    32.3812542499999978
-89230  -104.901096374999995    39.7294642499999995
-25201  -81.4912764220779025    38.345094318181836
-22436  -77.0621767718003952    38.0342024620389623
-05905  -71.6465380366473568    44.6850880495283675
-90657  -122.137291000000005    41.2497222500000049
-24272  -82.3389294488160459    37.0140308460031449
-55120  -93.1353209677959626    44.8719822149728316
-40733  -83.9799216666666695    36.9483661666666663
-30425  -82.0016879365986711    32.6306979843749474
-84029  -112.470842121512931    40.5866925335908988
-38379  -88.4325611951108925    35.1673085899883802
-64125  -94.4941793350304806    39.1042652688391854
-38041  -89.668848694715436     35.6664726800115375
-40243  -85.5385849934847045    38.238866654096725
-89166  -115.335040772636859    36.3027211189326877
-33849  -82.0697763994974991    28.2359254673366564
-56637  -93.8243054564269414    47.6103246753812357
-49512  -85.5668345344585646    42.882816723981918
-79239  -100.742255372960415    34.6641987039627253
-28533  -76.9417329444444391    34.9267229722222226
-90755  -118.166520953594102    33.8006184881367417
-63131  -90.4452843612081239    38.6152681423568893
-24472  -79.2462769650599483    37.9371221556698899
-74884  -96.5100738786895249    35.1732673661420705
-73103  -97.5171771064281074    35.4905325451352169
-78756  -97.7405607369564393    30.3212745543478341
-39701  -88.4546437333981714    33.4790879524053437
-03289  -71.5119740789473752    43.5038341842105325
-99547  -174.20041286206893     52.2055858275862121
-10469  -73.8480938051508105    40.8693555838699112
-28515  -76.7097772139439513    35.1681869373434424
-84647  -111.449381453867545    39.5400248615097993
-32358  -84.512732512725961     30.0717072607652014
-39080  -89.4953179999999833    32.5038962432432541
-98546  -122.913781208632884    47.3157139260243724
-38759  -90.6999039753609679    33.8229373084112552
-92604  -117.787663938599906    33.6883706340764491
-05733  -73.0946107056488614    43.8162195786493527
-04825  -70.7927463611111278    44.4448909722222254
-76253  -97.2554251282051467    33.5837879794871697
-87553  -105.702267674107134    36.1706011035713857
-36502  -87.487317518024895     31.0935268320639047
-94965  -122.499859236040834    37.8584631023929532
-80828  -103.71319772172356     39.270433327947309
-58622  -103.178426506977843    46.8869079350338396
-15379  -80.4341468760330542    40.2395412107437735
-16945  -76.8568683333333382    41.805423999999995
-96143  -120.026321840534393    39.2416404371359775
-88344  -105.371296575549863    32.5911387242848321
-63123  -90.3272758144485692    38.5491367827947826
-76875  -100.024415266725484    31.6196574753521347
-20171  -77.3952084930174351    38.9237128040176401
-15311  -80.1852051510443147    40.0456879629084241
-87015  -106.200636673090628    35.0773582807315876
-11562  -73.7924261666666581    41.1458175833333399
-21521  -79.0371196179418973    39.5452902040699428
-91464  -118.621943999999999    34.1498758571428525
-21631  -75.9518036990074563    38.5890012372718729
-71436  -92.4035202499999997    31.0920314999999974
-73044  -97.4153627428508031    35.846451769198751
-81236  -106.203988818535834    38.7085331799814369
-73759  -97.7469893346667504    36.8048450493333519
-74102  -95.8464390588235489    36.0690541764705799
-07642  -74.0452335334096716    41.0068396638945885
-93727  -119.696115117747951    36.7502166409828561
-95960  -121.093945024370029    39.366054779177631
-10923  -74.0008210714565564    41.2039803155017523
-73102  -97.5203537969401566    35.4716513393601574
-29643  -83.0069646230158753    34.513423620208691
-72389  -90.8777824592592083    34.3289815925925836
-62059  -90.1660838605577482    38.6570181713147463
-55601  -91.3128421404110071    47.2568708972602636
-08038  -75.4697930205128387    39.5008269435897574
-97537  -123.151013255257638    42.4977074710832881
-78576  -98.4433812343905288    26.3005543067394072
-26295  -80.6152969999999982    38.3200804000000019
-98643  -123.651047259791071    46.3064821625326388
-94404  -122.268484418685219    37.5523403890621807
-22718  -77.8166808382396766    38.4641318645327317
-36051  -86.4932685113049331    32.6823408234034574
-67789  -106.287849222222221    38.1631422222222199
-37678  -86.9286863333333457    31.8421260952380933
-33965  -81.7728551290322656    26.4666189677419403
-33859  -81.6163560132858379    27.9011043416927151
-14475  -77.4997873948219649    42.9357297443366193
-49931  -88.5781671548174501    47.1233792086194612
-68622  -98.5165928583880088    41.9274877167755591
-50612  -92.3816346521740002    42.2742825951087084
-85203  -111.80396017543184     33.4394527863904827
-99820  -134.582086608024667    57.4998820586420223
-89441  -119.697252975772884    39.6654182771930124
-81523  -108.770417444482192    38.9624668798819727
-52552  -92.5265339266511404    40.8414364696083751
-07071  -74.1229908490808924    40.8089131949551813
-77505  -95.1445243860454042    29.6493678574892883
-68758  -97.7790296856649519    41.7634816683937586
-79034  -100.143206474966306    36.4141154912042921
-40505  -84.4564595925925943    38.0587642400145114
-54720  -91.4369731735599913    44.8027991091998814
-76848  -99.5474394196428563    30.8719590937500001
-35509  -87.2298014999999936    33.8544698124999996
-08648  -74.7279429134884197    40.2804735574290049
-25213  -81.9014816620389183    38.503826476001521
-39272  -90.2771116268934009    32.195436420285688
-06065  -73.01320444153572      41.9704699397905117
-73459  -97.133048497142866     33.7823955971428731
-74340  -95.017397303867412     36.4816889999999958
-49670  -85.6123715607039202    45.1238294271715574
-11721  -73.3739285755315507    40.8918869165974002
-36450  -87.6223603333333187    35.2577855333333261
-25053  -81.8467689628822797    38.0425044271536166
-62701  -89.6492624074703315    39.8008149083191825
-25927  -81.173571411764712     37.7924434999999974
-45458  -84.1639300877673122    39.6056621726932789
-25137  -81.2292015000000021    38.0693253000000098
-86514  -109.375000294117655    36.9616724705882262
-97112  -123.899993877302606    45.2271173096292856
-01824  -71.3599332442063883    42.5916154224369734
-71223  -91.6830699419114552    32.9050609787234194
-39119  -89.6667452873626445    31.7555163992772016
-45135  -83.5449371590272136    39.3386906878022629
-30901  -81.9722591044988462    33.4612690132934958
-63747  -89.8121605056839769    37.5615122906786851
-51572  -95.7882131432872512    41.9887292679108555
-47394  -84.9828100348566409    40.1659920355157567
-21671  -76.3350891654739883    38.7059000894454499
-17225  -77.7534922006143319    39.7849153039399184
-12140  -73.5692128171076405    42.6881713237240206
-30247  -84.0902443333333167    33.8713673333333318
-62069  -89.7378860007380155    39.08424320787217
-95636  -120.538126495339512    38.6356999893237187
-20607  -77.0192165414906214    38.6697427273637047
-54701  -91.4724828334255449    44.7812628934723875
-50559  -94.324622736162226     43.2052535046125996
-51063  -96.1815057778316742    42.135920341723164
-48705  -83.6765314701589347    44.691659617224758
-48717  -84.6632156666666589    43.793434000000012
-58254  -98.1214742985484776    47.7801758195695925
-28755  -82.2075707032966818    35.8939565714285749
-24016  -79.9526346518270117    37.2724963026037059
-12424  -74.1672161508533208    42.2461918006825883
-02127  -71.0455632235989896    42.3347962928340493
-19838  -75.0367676666666767    40.3285780000000003
-75833  -95.8737613686970604    31.2665261314972867
-62683  -90.1066446829268273    39.483596146341462
-38953  -89.9363211849313871    33.9216222534246938
-25043  -81.0009457131959749    38.4638677542638661
-06883  -73.3684982622341835    41.2212105078677666
-56453  -95.1226713167938129    46.3160046243184382
-29154  -80.425111029753225     33.8929410985431261
-78005  -98.8323632602230191    29.0007395356877211
-74039  -96.232265831175738     35.9095122044913921
-72342  -90.6206131007365627    34.5157816768777863
-48767  -83.4745485351231764    43.6465817716072948
-04471  -67.8353326203361888    45.8784918511685191
-46987  -85.7674072040404951    40.5688920585858526
-04342  -69.7456865814112632    44.0800528734871548
-59865  -114.06950714966662     47.3428920323333102
-23585  -78.5464187500000008    38.7374790000000004
-99591  -169.549616641025665    56.6067745897436012
-14302  -79.0504666666666651    43.0956715000000017
-46967  -86.1948291714285517    40.6945015714285745
-80754  -103.648745374414972    40.7082060717628522
-77094  -95.7038426683509726    29.7724911364262788
-94554  -122.417775357142858    38.4315292857142836
-14082  -78.3867228841251062    42.6559071413673365
-68022  -96.2350017235259827    41.2645892673804227
-14515  -77.7313367666666579    43.252605966666664
-38714  -82.1995540249999692    35.8342621250000022
-73736  -97.6933798576449703    36.3460745905096445
-47809  -87.4090540097087114    39.4717131650485413
-38236  -88.2756842639176824    36.1739230824742535
-39452  -88.5891570350515991    30.8750389155052822
-46321  -87.4994068260510716    41.5470469425272242
-32812  -81.3287544031464478    28.4934944581632656
-59448  -112.790560887480098    48.2738942963549675
-40209  -85.7503582047670818    38.1922952838569714
-36361  -85.7155640689654916    31.4088631724137919
-88441  -104.268259647058812    35.6515803529411741
-35148  -87.0471255867010285    33.7560928916237586
-77084  -95.6686250597487202    29.8417266170413029
-77831  -95.9194145101314746    30.7351070291780992
-36113  -86.3443321697172621    32.3795185440931803
-64665  -93.7953048333333328    40.3307330000000022
-27887  -77.496871132530103     36.2542913493976044
-04676  -68.6449206847356947    44.3448783405388269
-07088  -74.2840220986459485    40.7181394700193096
-10591  -73.8557948828108266    41.0798826371645305
-44857  -82.5980225087754008    41.2343070383675396
-43055  -82.3914498858687807    40.0928887446304358
-92311  -117.131945380869269    34.9323303497725277
-60162  -87.9003282511090021    41.8743018106448872
-67840  -99.9951500339805932    37.051142427184466
-16046  -80.0361985682574755    40.6977524270082611
-30450  -81.9100686311164026    32.5316657237866167
-95558  -124.238426136646055    40.2995214689441781
-30116  -85.0098306196642426    33.5707308315960802
-22480  -76.4177942724885071    37.6655679514116386
-59863  -114.180697192307704    47.2742388205128208
-06360  -72.0843161862135844    41.5383876361725513
-80421  -105.472632797075192    39.4534093061347093
-48422  -82.6485787388551927    43.2676639316802536
-05057  -72.4104276666666777    43.6556202222222183
-95339  -121.265807999999993    37.7783983333333353
-03045  -71.5637718051065121    43.0187590123734154
-84123  -111.921622486458247    40.6570389035080098
-61080  -89.0191348284144226    42.4810749615646657
-03223  -71.6573900351062321    43.8402260303549198
-58102  -96.8031670616109921    46.9035395494770881
-18411  -75.7177777422700444    41.4783607523236171
-79345  -102.254657314917083    33.3412496344383626
-24810  -81.6475833333333441    37.6962456666666696
-25632  -81.9328364832714442    37.7826153779429674
-28020  -81.6319608328691544    35.5199534024328543
-19438  -75.3895058409314203    40.2664434756577876
-12414  -73.9157687379691026    42.2304188812973678
-42351  -86.8808083049402313    37.8986082564711424
-35120  -86.4397692621324438    33.6737224128096244
-58727  -102.813149854626531    48.8503276244614568
-97635  -120.310633794567082    41.9537653106960278
-23067  -77.9944010833333294    37.8318566944444399
-19116  -75.0165801333061779    40.1182936636678562
-74725  -94.8420994999999891    34.3593515000000025
-23410  -75.7480140394703625    37.6429875763176796
-98056  -122.183123930798445    47.5117835550550041
-83434  -111.99704482863099     43.7452020726227602
-04543  -69.4949909753538719    44.0399764655930852
-13849  -75.3130248700500999    42.3379226856770856
-76111  -97.3017861967648088    32.7812777085953755
-42377  -87.2649858999999992    37.4206008000000026
-63955  -90.6777389200000101    36.5986143599999991
-28725  -83.2320529840318812    35.3810357045908219
-98337  -122.635640119331981    47.5694946772076719
-20152  -77.5154356415446415    38.9024199437354312
-90720  -118.071378865792468    33.7950244586367035
-17087  -76.2614581852862159    40.3880416471389694
-74068  -96.5807984666666641    35.911479613333313
-37882  -83.7662930324343762    35.6767786056208891
-61071  -89.6947009611917707    41.7553203581815282
-17812  -77.2375967027359138    40.7503175320538844
-61704  -88.9446378800033273    40.4810236448061289
-96344  -119.612615272727282    37.3737474545454518
-06255  -71.8999832552190981    41.9924240600207384
-71415  -92.1377207336683739    32.0257669748743581
-05059  -72.4264584358881365    43.6510916407555243
-56330  -93.738822568299085     45.7443370666882529
-47281  -86.0989805186145247    38.7819982657868749
-96790  -156.323936862665107    20.7508841982543792
-24866  -81.6086135751295529    37.2625572435233181
-17727  -77.499925845826823     41.5353171742658276
-15558  -79.0892203858192033    39.746777983104856
-31328  -80.8505700794797519    32.008328802504856
-07310  -74.0412965252918553    40.7320686653696598
-05862  -72.1974580568414694    44.3341942025984466
-72714  -94.2173019453586136    36.4650755229831773
-37818  -82.9719024642481173    36.1838629767788618
-54415  -89.9144434999999902    44.6127270000000067
-40475  -84.3060546884701409    37.7693392665676342
-91107  -118.086501915875488    34.1548382394413466
-23079  -76.6757333406407611    37.733818038785877
-75209  -96.8260572107705997    32.8481439218972824
-41725  -83.0324230061100081    37.327241346232185
-36255  -85.7349705328214498    33.1832504094623957
-64484  -95.019121016201936     39.5530412727755518
-74878  -97.0851943959539057    35.027992742774579
-37228  -86.8028247386090186    36.1925114004796171
-96789  -158.020552076922996    21.4723719743589641
-22965  -78.4226911000000086    38.2873105999999979
-65486  -92.3155646185400087    38.0971142501140392
-16255  -79.4484384300417901    41.1222119474941508
-72662  -93.1917737409377764    36.4376167185217739
-25062  -81.448351501754459     37.8648064245613583
-39092  -89.3700681612000238    32.3280868316059369
-22102  -77.2261360966969477    38.9473059461467628
-99523  -149.117594499999996    60.9562139999999957
-52257  -92.1801909224044067    41.9053077049181013
-56032  -93.5629214247312007    43.766101473118276
-35674  -87.7237084971705769    34.679699336805669
-85625  -109.707791876273433    31.901357825523327
-30258  -84.4539011630518672    32.9993671135493543
-37090  -86.2993223973364962    36.1338605840849709
-27978  -75.7615386287879318    35.6797471704545188
-58229  -98.2189854688039645    48.4694320662910627
-01721  -71.4626319127751373    42.2562902894903374
-72854  -93.4710720441081548    35.6576532189598296
-75964  -94.7160759876663434    31.6214532193492275
-24058  -80.6186968137129156    37.187947142302697
-43163  -82.4450867000000045    39.7644006000000019
-96727  -155.478617929824566    20.0859749298245553
-08245  -74.8225267142857007    39.1600967142857144
-61342  -89.1084643492615243    41.5461423614248844
-22713  -78.1308438634088702    38.5363654379544585
-42127  -85.9304546328531558    37.1213142389872317
-68414  -95.6811015402542751    40.3305475508474416
-69001  -100.632322890283405    40.2195231420528216
-27302  -79.271858063502421     36.111689444362348
-61367  -89.2518850461155324    41.6282338706766737
-79851  -105.360109342776326    31.1992907979225791
-58761  -101.612320472421075    48.7577961966325049
-74867  -96.5473801556480566    34.9748703711608471
-48086  -83.1823643333333251    42.5681143333333338
-59006  -108.10402101747772     45.9375202121316661
-54565  -90.4431043513958315    46.3314690147783637
-58276  -97.4440969257504435    48.6276115033600931
-27526  -78.7997935502067577    35.5724202358374129
-57540  -99.6146675148935969    44.4588155404255403
-45899  -84.775736674242367     40.7993418106060659
-27581  -78.7193247631439164    36.2077769822977658
-75671  -94.4764763333333235    32.4063936666666663
-38850  -89.0595582850851031    34.0518615437415733
-17876  -76.8238238442438757    40.8523082471782857
-84305  -112.038818509426122    41.9196996410994061
-85357  -113.519162553956818    33.9311363983813479
-60431  -88.2028843315469544    41.539871694855691
-54165  -88.3218649286722695    44.5137182937853453
-78458  -96.9920683333333358    30.320294333333333
-43566  -83.7362421836148911    41.505338668154323
-33487  -80.0923068932913935    26.4116976623142428
-02269  -71.0116534999999942    42.2376859999999965
-41311  -83.7007521745144203    37.5846382015982883
-73663  -98.9252883824818099    36.1413813678832483
-10018  -73.9917591011905103    40.7546698630952164
-77972  -96.6568690000000004    28.6111310000000003
-48837  -84.7352502982377871    42.7507483916566215
-07710  -74.2567288571428605    40.2182760714285763
-16914  -76.7784933565241232    41.8650297674654581
-55767  -92.7615067431381703    46.4464531667285669
-44628  -82.1369419324893357    40.53430878450866
-28401  -77.9398134263095415    34.2311829064612496
-33764  -82.7428915938157417    27.935986953794913
-42436  -87.5652514407039746    37.4138145742158201
-39996  -80.1721128823529483    27.2091696470588182
-56633  -94.5796509628864612    47.3675838010889123
-84012  -110.139384777777778    40.1940629444444468
-99204  -117.432216744663108    47.6490575910111858
-73171  -98.7912569999999874    36.7026978749999984
-07789  -96.5747672500000078    30.8497689375000022
-21620  -76.0819897250857906    39.216273748887204
-04927  -69.5330280676626415    44.6666661284952369
-87150  -106.175124499999995    35.0263774999999953
-56326  -95.6789832646639553    46.0191015688672564
-79539  -99.8499042218430191    33.3755353054607511
-76771  -97.5855422000000061    32.0228254000000021
-79329  -101.682646879029122    33.6981834221837957
-73507  -98.4057554618816681    34.6635502069111183
-98392  -122.560970411029359    47.7334888139705527
-10153  -73.9731455000000011    40.7639290000000045
-18473  -75.2147527734374961    41.5331848496094196
-25337  -82.2498200266666544    38.5409416533333129
-68419  -96.5107804342105027    40.5989140263157893
-30429  -81.931764730769217     32.1634016538461509
-65586  -91.4313358333333213    37.8595980333333344
-38152  -89.9366170270270544    35.1182215405405316
-77627  -94.0049473253400834    29.974348492459832
-30645  -83.4754424166666809    33.9498278611111104
-32256  -81.5414254498143691    30.2129144615503087
-02653  -69.9764071215922883    41.77828653747018
-74602  -97.0807526666666689    36.5982570000000038
-85128  -111.531784285954586    32.9681891759485879
-46732  -85.6368408557233067    41.3884383456017915
-88103  -103.322339749999998    34.3980867500000045
-71720  -92.6615657032987059    33.7492544492358491
-61107  -89.0212922920053842    42.2819140472724229
-03826  -71.1338828746531817    42.888298133210057
-23153  -77.9468868015652419    37.7744653837415072
-77441  -95.9118576222118691    29.6801895246622571
-77977  -96.8286976586345389    28.6945244959839201
-95031  -121.924875000000043    37.3975168035714276
-04019  -70.1031363034826285    43.697833507462704
-56472  -94.2780114482082752    46.6022330995876644
-83670  -116.317074743252604    43.9993058429065727
-14166  -79.4162561029411336    42.4511654191176362
-13108  -76.3321497538618416    42.9770281194644141
-41366  -83.2322092376155211    37.6198968908480111
-60076  -87.7311279918727962    42.0360775344551882
-30421  -82.1195464244617455    32.1825375447290725
-54170  -88.5673584999999974    44.4508184999999969
-27025  -79.9791807084302064    36.3787076450235176
-44211  -81.3117385000000041    41.1691214999999957
-59843  -112.961283365140559    46.8040891303335513
-29916  -80.9763028946474179    32.7197021401868824
-32767  -81.503043498500702     29.0041277922651268
-65038  -92.8304720735294353    38.2077738676470631
-73560  -99.4263288199446578    34.5764152714681359
-12513  -73.7151361424418639    42.2189644026163222
-54162  -88.2011118007501977    44.6723843738864801
-96019  -122.373303514620076    40.6763852785296436
-32347  -83.5899235640877265    30.1314160762929539
-13826  -75.6396728086419756    42.1102810308642006
-05836  -72.2745956033230641    44.5161522652129946
-26690  -81.1299648645083238    38.2347108141487197
-08888  -74.7367553888888665    40.6187434791666533
-07720  -74.0129247757225386    40.2020823294797793
-57457  -99.1765970980392666    45.8766733540304941
-93143  -120.019839954545446    39.2342049090909128
-55360  -93.9058961361295275    44.8999498954967535
-59861  -114.116830727272742    47.1724647272727253
-36532  -87.873971172829016     30.4993516486487373
-44410  -80.7293728563544306    41.3265474522672633
-62618  -90.413330676767643     39.9976802912222738
-76837  -99.8532144311970171    31.215117376531559
-30176  -85.2992406285773228    33.7597529334271513
-43080  -82.4348078481613271    40.2380818301829777
-22646  -78.0285521463814717    39.0646208700658093
-18617  -76.074861992126003     41.1727787559054832
-69640  -93.9644117187499859    39.9422475312499969
-51301  -95.1513472278302999    43.1488281751824303
-73145  -97.4161371165919405    35.4218519372197065
-06242  -72.0962626130995261    41.8990319738725745
-53080  -87.9705234385229744    43.395909185900031
-60957  -88.1122425823040345    40.4490525996976018
-91387  -118.420357569634234    34.4203218019341648
-73121  -97.4462845434905347    35.5125433110598223
-60439  -87.9790282807155677    41.6641310641656943
-24892  -81.6875000601683894    37.3084051949459194
-45812  -83.8221579316191168    40.6979973916849431
-16441  -79.9879496869285731    41.9471542955887955
-20296  -87.8220422000000127    32.5024298000000016
-02886  -71.4552307834613885    41.7025286129889068
-29656  -82.7608234300000021    34.6116562299999941
-62442  -87.8581271813507669    39.3254268332311483
-63764  -89.9555936952169901    37.3406276051167652
-85331  -111.957753287737674    33.7952894506176023
-34134  -81.8226968774347796    26.3556969892814017
-53820  -90.7184311720810967    42.7034859359699794
-08220  -74.4506959999999935    39.4769460434782573
-37874  -84.4528807142083195    35.5982620178690325
-81137  -107.643931538305935    37.109769619778028
-68382  -96.0238704038461748    40.5967426346153815
-68409  -95.9314939491124079    40.9090608065088901
-83874  -115.857913516666656    47.6271555333333509
-25168  -81.8765593613445475    38.5620696421937978
-80612  -104.884082277992164    40.8433848832046422
-55943  -91.5760823115223559    43.772523274179747
-85142  -111.637395784853396    33.2243466485562635
-41094  -84.6219340275596181    38.8847950674743643
-18453  -75.3635585912512624    41.7500833700913816
-71998  -93.0532654399999899    34.1246954399999964
-04062  -70.4080368316160303    43.7995263695677863
-75060  -96.960289557036063     32.8019332850631855
-51059  -95.8779685798319434    41.9413589831932754
-45652  -83.0881511452202943    38.8391240122473107
-18714  -76.2678024000000079    41.2505789000000078
-73832  -99.7579862681562872    36.1257214767225463
-66067  -95.2725778029876835    38.615121365319645
-95959  -121.006231797125366    39.2977101773677759
-66215  -94.7420034328053333    38.9613556805218408
-26568  -80.2759053217391028    39.4194386739130636
-62863  -87.8207927500944407    38.4149978279610949
-87059  -106.315666414964767    35.043261630902407
-20180  -77.6311855969391189    39.2658594483056262
-61603  -89.5800478263967364    40.7128827059661305
-03603  -72.3817772697702964    43.2550395481066943
-20724  -76.8107562373200494    39.101412192026693
-29560  -79.7674434885933863    33.8586712227141717
-05765  -73.0360849240507264    43.6571182146835
-37711  -83.0460272500847339    36.2822533877117337
-64056  -94.3472652004599581    39.1166402985542305
-11747  -73.4055077066744417    40.790788623180255
-75091  -96.6228955000000127    33.6981123750000009
-66952  -98.593584980324195     39.840267267361142
-78217  -98.4202109444673994    29.5423495292312985
-22660  -78.435519873045962     38.9500758844149075
-73726  -98.4872491041666507    36.5759929088541824
-26505  -79.9505163642203485    39.6481697592590834
-55080  -93.1819720892667647    45.6630158275442781
-00612  -66.711416709881604     18.4576185100468138
-82053  -104.387914836022375    41.2099529720118554
-53024  -87.9454102999846441    43.325000601108961
-01748  -71.5353943845575486    42.2226478059267336
-87557  -105.622255869910546    36.3549862903095686
-15829  -79.1976321049425849    41.1767710653549273
-77381  -95.5040814758477552    30.1782188156566171
-28704  -82.5481766279819595    35.4623762448358448
-96117  -120.319775708860803    40.5270568227848003
-95497  -123.460317925992541    38.716641836823058
-20003  -76.9929496284111536    38.8828137546544426
-22626  -78.3975246999999911    38.9842772499999981
-25287  -82.0451858726376742    38.9708463993426832
-32097  -81.5865289235531606    30.629937002228953
-03866  -71.0063260000000014    43.3642619999999965
-63665  -90.8473583934976716    37.3097001221973343
-26542  -79.7901459751649895    39.5638704780809292
-33876  -81.3462578280429938    27.4362784601639866
-61068  -89.0787662416900332    41.9408290189180377
-87232  -108.139712200000005    35.2878940000000014
-32159  -81.928474568086429     28.931168360891153
-55045  -92.8358181589628373    45.3866700040602211
-12051  -73.8309493679920053    42.343868736493377
-93524  -117.918766562499982    34.9190882187500051
-13417  -75.2923827524115552    43.1013274051447084
-46393  -87.1810149743589875    41.5120434017093984
-16362  -79.9595249867571169    41.4454597578947315
-36575  -88.2624425110610389    30.7658045223572465
-25902  -81.2015235722061846    37.5822026916426992
-77962  -96.5006781457517206    29.0216207035947313
-18340  -74.7507559124999545    41.4179563249999703
-99774  -149.105829999999997    66.0102579999999932
-94801  -122.368400069458318    37.9397001623710608
-41257  -82.8081661305071037    37.9117849143807675
-23236  -77.5843549478300787    37.4747970572032258
-59620  -111.480259249999989    44.8264560000000003
-99356  -120.361516230769269    45.80968887408131
-80864  -104.193844545202751    38.7694194324432146
-60119  -88.4670296155860854    41.8854354571128411
-12842  -74.2655755601053471    43.7623833936889568
-63146  -90.4510366283119538    38.6885345697312246
-37878  -83.9540815404004235    35.6124557941685325
-14561  -77.1257377605456753    42.8222243173696526
-52567  -92.0654287892156447    40.9331752990196165
-95485  -122.930702826278733    39.2166562279667446
-61543  -90.0023616394557564    40.3927767755101925
-78558  -98.0370308472221978    26.2974545555555466
-62611  -90.37363436553062      39.8924390308442582
-92647  -118.006438512934608    33.7221958500594425
-20215  -77.0138299999999987    38.892000000000003
-94546  -122.080266657709643    37.7035389235755503
-14812  -76.9869519551847645    42.2902488318019181
-12064  -74.6612564437919985    42.6101369010067188
-33317  -80.2261072528268926    26.1131434165464533
-56338  -93.8910001696439451    46.0263945765740061
-03576  -71.4306489709654642    44.9073535789981833
-13201  -76.1426179999999988    43.0448889999999977
-85284  -111.9293393856275      33.3356992567294981
-76766  -95.2310139999999876    31.8566242499999994
-54234  -87.1074116545387227    45.1892924312232935
-05251  -73.1130416196247666    43.2554692348160046
-35137  -86.6319804848484836    33.3242577272727303
-39837  -84.7059594025527218    31.1656276983514893
-46037  -85.952700487070743     39.9579992709954439
-14820  -77.3612796059661321    42.19039630320583
-97814  -117.824231844415309    44.796005046343204
-36046  -86.3392443004386223    31.9964144727095814
-68030  -96.4636673958630695    42.3171612253922689
-12043  -74.5148045895502804    42.6986618393552888
-49070  -85.6370435053190278    42.5359599969604574
-24168  -79.9492825581854021    36.7391887001972393
-36790  -86.9035232492492469    32.7288355660660315
-95236  -121.043245633680613    38.0310503712384431
-28339  -78.7071025277327578    35.3264231619831577
-23938  -77.9979070297656563    36.9031550582647156
-60910  -87.7796364208999904    41.0796542278664703
-95446  -122.997654843451485    38.5057700519605888
-73944  -101.186130055555552    36.6161448253968445
-17086  -77.1063452374929028    40.6798140589012434
-06417  -72.4530355386262812    41.3731243175714951
-12426  -74.1453624814814702    42.1628808518518596
-83440  -111.815971727416297    43.8133968753255303
-69342  -102.183746666666664    42.8047579999999996
-28360  -79.0718087989194061    34.672714211580228
-38589  -85.0859734967186228    36.3040660164068214
-68668  -89.8509361333333487    34.6340561333333383
-45805  -84.1539811524972095    40.7342767944477799
-57579  -100.746832272727389    43.576801702619484
-31620  -83.4294408478595102    31.1289756461164089
-38780  -90.9991701627906906    33.2486516395348843
-79088  -101.755792303420051    34.5414841311578087
-24931  -80.596131632175144     37.9081156095166349
-01510  -71.6805258997344055    42.4173926779661556
-78951  -96.8280511111111366    29.5976320317460342
-30238  -84.3793966138592424    33.4967054303217466
-50106  -92.8128643928927914    41.8897757989562294
-66942  -97.9853650526315505    39.7789027947368439
-55018  -92.9886140741651701    44.4103272652260017
-41332  -83.3877302847550652    37.7967550696503736
-08442  -105.81165277777778     39.9769463333333306
-48064  -82.6848483805311218    42.7620976525073715
-72038  -91.2740876481927472    34.4566684289156484
-75483  -95.5418267999999955    33.0344177999999999
-26257  -79.9772473227091183    38.9051682350597687
-65329  -92.9763312220256921    38.6082705864661762
-95223  -120.29699229766301     38.2813121191314707
-43510  -83.9520630416666762    41.4644283124999973
-04951  -69.0439278093194133    44.6011179426731843
-87020  -107.843894985752883    35.1592152344973812
-93504  -117.789113555555559    35.2098119444444535
-01969  -70.9018663317247331    42.7171823408400826
-72413  -90.8143080889009013    36.3189548162715425
-40178  -86.4122059506577926    37.6571139769737542
-28306  -78.9392819918466415    34.9786588671375824
-55424  -93.3393642515535049    44.905010017562887
-58075  -96.7060742167249003    46.2806819601130712
-26619  -80.7327982952136836    38.7705461077823728
-29666  -81.990300590091465     34.1352959523497148
-02812  -71.6594595199999702    41.4738461238461582
-22393  -78.9807905555555436    38.0903667777777741
-89440  -119.646868570238283    39.3068666916666345
-49806  -86.8375251304347699    46.4078311739130527
-21421  -75.8288725000000028    39.5899114999999995
-12582  -73.729337195860154     41.5449006169595663
-55603  -91.2241444566667354    47.4723165485185703
-43624  -83.5473359166666825    41.6587297499999991
-28411  -77.7999585170393715    34.2845330372661792
-35578  -87.4593216078513507    33.9719881598421409
-44024  -81.2057346633227866    41.5759224920411512
-59704  -112.328234500000008    45.5432800000000029
-06057  -73.0164144470786312    41.8427903798367709
-67047  -96.0157592014851531    37.6258762801980069
-37394  -85.8625533504273903    35.5373765811965896
-63117  -90.3294698763542527    38.6306099538389063
-52144  -91.9437588191662059    43.1275983890091723
-95251  -120.470009073329621    38.0808087914177094
-12581  -73.6976231334032406    41.9003997683823215
-75831  -96.0199470257426668    31.4471371181145685
-47837  -87.1116007643626347    39.6250551570915519
-60419  -87.598298869232039     41.6269192586802887
-56052  -93.5243770767214357    44.3304709801646339
-64339  -103.637748600000009    42.5313177999999965
-76827  -99.1164144064136394    31.5241541937172549
-84606  -111.639125868426618    40.2249053792894387
-24247  -81.9917524999999898    39.0069625000000002
-46112  -86.3849117562880622    39.8508352147110045
-93726  -119.763920074396296    36.7940175782031673
-34265  -81.8674616111110964    27.2133670555555618
-79512  -100.873626240489429    32.385714406213026
-58573  -100.180802654582067    46.1148795679758479
-13072  -75.7579241179321912    42.7608574858642285
-66742  -95.3382080813953507    37.9185050116279001
-02693  -66.3581333333333276    18.433244000000002
-47973  -87.2569454999999863    41.0808617499999968
-84333  -111.81053706995084     41.9192399056034404
-32653  -82.3995777055175012    29.7197384536695033
-42204  -87.0684763596909761    36.6974353816885142
-06756  -73.2430197498273969    41.8294675672080416
-11509  -73.7259706877761545    40.5888073932253661
-45014  -84.550745216497134     39.3264998188080881
-33781  -82.7131059306535974    27.8393689370745534
-35979  -85.6086747293605015    34.8329119097867661
-99750  -164.534884000000005    67.7255780000000129
-37865  -83.7429418770687448    35.8602794751712963
-61625  -89.6170327666666537    40.7955346333333324
-02453  -71.2374248963808725    42.370829064286923
-08010  -74.9120249572037693    40.0572600354562951
-93000  -118.847327868055572    36.5434662500000016
-94555  -122.049082725172823    37.5723920782758469
-68774  -97.2754812966507245    42.8117995805422922
-58386  -99.5953849003622764    48.3559612463768502
-54355  -89.8074336666666682    44.7992633333333288
-70576  -92.4193083264706416    30.7809840500000433
-61310  -89.3438995371062816    41.7046601954082519
-58444  -100.135496120653457    47.5100742249707437
-43017  -83.1321211955198862    40.120395546126197
-19931  -75.6279312849999883    38.5730654475000065
-17508  -76.2160690617848644    40.1233330572082281
-32460  -84.9472717652823661    30.746774586210865
-30255  -84.4176888124999891    34.8532886875000045
-61770  -88.5276175744513694    40.4410945082289572
-50072  -94.1239700810397721    41.4957997070337257
-13695  -74.9166735365853782    44.1366205993031215
-87533  -106.166955395424949    36.119785477124168
-93219  -119.271017128082107    35.8882110938357073
-43905  -80.8389847348066297    40.1035087182320638
-12919  -73.4411736679205234    44.9719080988372113
-48177  -83.5799520750000084    41.8083259249999983
-59841  -114.221301421711985    46.3339697912317732
-15837  -78.5176330000000178    41.2705884375000025
-56584  -96.2291827920734448    47.2397600924756418
-11770  -73.1542336347825568    40.6466862565217113
-60428  -87.6909570016327962    41.5978973728572541
-37018  -86.1879307067680145    35.6441565333332306
-15241  -80.0803246939306064    40.3346810779741887
-76114  -97.3995070781727748    32.7776725726805154
-66748  -95.4253075931905386    37.8003894519123733
-99597  -121.151152842105262    39.2332311052631582
-52347  -92.292992116126598     41.7134468692129872
-26623  -80.8766987308642484    38.6573182452675113
-21756  -77.6976271508811607    39.4550143276145704
-42721  -86.4935765365320464    37.4228211220012241
-02189  -70.9317422173005951    42.2120315930027417
-27815  -77.677157666666659     35.9195132777777815
-76008  -97.6345474441372829    32.6929689910733501
-49822  -87.1040651234567633    46.4883586790123644
-39651  -89.9745706666666791    34.9039109999999937
-16638  -78.2042277058823601    40.3314014803921452
-82732  -105.52858550273497     43.7317208269516371
-08340  -74.8728305530034959    39.4382003162543811
-33134  -80.2698264779987767    25.7537806133212506
-47597  -87.3095411244981392    38.6537247561674704
-33809  -81.9528476246141224    28.1523228627705571
-79378  -102.467413681818172    33.0335557979797869
-68326  -97.6769626736841161    40.2815044289473789
-21540  -79.0587040624999986    39.474979492187515
-46375  -87.4533780528080911    41.490803040732338
-12951  -74.5076221666666498    44.9839723333333339
-94541  -122.084494062156921    37.6744798370683185
-52746  -90.682958774999932     41.7172183658536113
-77950  -96.8310818185184985    28.3712079685185188
-79379  -102.63030885844752     33.615164730593591
-45746  -81.4581068148953591    39.6081574834494745
-93646  -119.307987983787214    36.6298737736705107
-89423  -119.744792307267801    39.0151094192789785
-46943  -85.8366847089552039    40.9741229179104565
-38336  -89.0225003999999984    35.7413854999999998
-49022  -86.414687366571485     42.1112615193501014
-07083  -74.2695893146628521    40.6962577603024087
-77081  -95.4824028322384635    29.7090789813037368
-06020  -72.9160317959183857    41.858315244897959
-65102  -92.1785616538461454    38.5553418461538371
-03447  -72.1537126350835507    42.760333935465006
-22482  -76.3613223056934061    37.7215152680022925
-80342  -105.889932222222228    39.2890665555555501
-59319  -104.192186731404973    45.4801222685950535
-55310  -94.8728034209839279    44.7662987873649669
-71472  -92.786999339336532     31.2037770530805858
-45690  -83.0230286714907493    39.1363196301483924
-28129  -80.3298583700688482    35.2349690702797957
-43618  -83.3704221320754755    41.6763839245283094
-93623  -119.645031987854324    37.4715346383266379
-47957  -86.8868321584021714    41.0916783415978273
-23606  -76.4994424528826613    37.0764265845238583
-74053  -95.7411518971008491    36.4335907648533563
-35022  -86.9573049362226271    33.3374254331321325
-74034  -96.5520436357615921    36.2325130662251738
-85038  -112.155251714285711    33.8435784285714263
-91351  -118.470857947887296    34.426096390140728
-17240  -77.572260542186271     40.1454524517230666
-95325  -120.218015710810903    37.4968322716216491
-90746  -118.255622368674395    33.8607065463290624
-37067  -86.7951226840192334    35.9234139631514466
-33021  -80.1886095564672843    26.0250298254719858
-62265  -89.682583576084042     38.5215480573660329
-54420  -90.3112398896551269    44.5984325931033894
-29329  -81.8381331959798644    34.9925757185929669
-60942  -87.6627088549845865    40.4648488548409588
-30634  -82.9483232606734475    34.1988901631878193
-07424  -74.2112855395610325    40.8835291719314924
-84009  -111.995439364085996    40.5589271746215303
-63349  -91.1542176823707138    38.991366610638309
-88256  -104.074266201865996    32.2853114291773267
-45782  -82.0795460828402241    39.4844469585798876
-56687  -95.0055938701298857    47.5021009090909203
-97210  -122.717181424198174    45.5347674720732769
-62554  -88.8593413238972971    39.9312996583278874
-38857  -88.5774705328323364    34.2808883572850078
-30143  -84.4159340908462923    34.4603806005726341
-20732  -76.5399720338040481    38.6659898031851483
-78655  -97.8451965176056433    29.8303742843309827
-28343  -79.5822216216081557    34.765379549246255
-67802  -102.041695333333337    37.4553554999999889
-11233  -73.9188770331633123    40.6780118303571214
-76556  -96.8415132276853967    30.6951051074225418
-32177  -81.6711737232674579    29.6668733864308649
-48748  -83.6665967172805836    44.3186470879300387
-18354  -75.323473214408196     40.9243055926243215
-55027  -92.632064550022946     44.4149198798538691
-49902  -88.402035786259475     46.0429948244274954
-22976  -79.0346452299731794    37.8518896361816033
-11719  -72.9147000107239336    40.7782707117962531
-92240  -116.506487356431151    33.9597490597239542
-93242  -119.715888550892004    36.4360558929697049
-72937  -94.3950939029961091    35.1438879667796016
-62241  -89.8951607078258945    38.0134476349850985
-73333  -97.3804192727272806    36.1415882727272688
-36477  -86.0545928584707696    31.1067459036265923
-48806  -84.5025941489864749    43.1822097369165192
-79527  -101.067170463492047    32.6050509415873506
-26238  -80.1420727579319134    39.0932447367802354
-24073  -80.4226659462623559    37.1365463631228891
-64836  -94.306104004269244     37.1650815302702995
-72354  -90.3131134656532311    35.6172470909347751
-69352  -103.999957511909301    41.8561871482041781
-06103  -72.6751233361753606    41.7672864799025163
-14620  -77.6022875785192667    43.1308027400449419
-06269  -72.2566129876324936    41.8097155494699706
-48502  -83.6895612728972651    43.0138006990653849
-70460  -89.819707955582146     30.2969792857540874
-64034  -94.3318899810395237    38.8467612728085712
-68464  -97.1898279548021549    40.4159543898305742
-76115  -97.3310087911212065    32.6794655294391987
-81645  -106.424381284600273    39.5831786627679918
-01741  -71.3521451904448867    42.529308240339212
-79754  -103.598085937500002    31.7076095624999965
-78056  -98.8956513100993533    29.5521054302977362
-03582  -71.4519424128597791    44.6062348552631107
-71651  -92.308057997866868     33.3667960712457443
-65321  -93.4654198975695749    39.087022300347229
-87319  -108.919214709134579    35.4811659727564006
-29664  -83.1647388817361417    34.8461256376428068
-31062  -83.218619517241379     33.0497047931034515
-55031  -92.9791080733335065    44.6098818451851642
-94089  -122.005922623888338    37.4014654884409978
-73762  -97.9593460276133499    35.7112226955950263
-45669  -82.3587086292842656    38.4860554786142828
-23630  -76.4131560000000007    37.0068940000000026
-02841  -71.323567846153864     41.5143409743589586
-87931  -107.325779547169716    32.9741432801160883
-12108  -74.4201641308289368    43.466248169689166
-72529  -91.5489295498352504    36.2959735139933954
-61353  -88.9881697112156331    41.691647440564104
-85928  -110.583396446777343    34.4304438616943926
-95540  -124.136241997378292    40.5776317405863622
-83877  -116.707297999999994    47.6179921666666601
-43137  -82.9763396931964508    39.7921749345313955
-58501  -100.642584729224211    46.947301183583555
-54734  -92.1348424365853447    45.0400164439024451
-13021  -76.5592450502796851    42.9260971378458152
-13159  -76.1325806381379238    42.8089112495301194
-30124  -85.338111198486402     34.1222557788107892
-93502  -118.232990339285735    35.0708422142857117
-20763  -76.8199637851124351    39.1377556179775397
-18834  -75.7179669687317727    41.8489860066687598
-53012  -88.0260175091988941    43.3166800202514608
-46992  -85.8282625648822659    40.7948439875338309
-13811  -76.1666539628479882    42.2296488216130044
-06906  -73.5242020183194853    41.0705355312623865
-58710  -100.242557824843956    47.8050061057493565
-20627  -76.7010684920634702    38.2732394285714221
-40203  -85.7643122947951184    38.2473813779362928
-50271  -93.5415199272660516    42.4897838065209896
-37140  -87.6833833619908347    35.8588205393664978
-37069  -86.9007426482736207    35.986199057629058
-15088  -79.8981763136729199    40.2723131501340461
-71463  -92.6497530995143137    30.818915599513943
-28581  -76.4178134695652034    34.8518024434782419
-36015  -86.5906706976744402    32.0648645348837178
-42048  -88.2426448721221419    36.7709593643484922
-13902  -75.9065387499999957    42.1018127500000077
-92384  -116.209713750000034    35.9854782100000108
-92845  -118.027405754184059    33.7829481497499771
-78205  -98.4888394560527729    29.4254193421779959
-79011  -100.182462664327943    35.5592693360414458
-66201  -94.6902761111111175    38.9953365555555536
-08073  -74.8674252967032885    40.0103937582417544
-07105  -74.1519048503143239    40.7267724444445278
-24124  -80.837841667275157     37.3249709905830329
-53531  -89.0939652278835723    43.0539002256438224
-65685  -93.1516512212715213    37.7563074321515728
-66734  -94.8220406566864966    37.6213275888223535
-49712  -85.0170345572861095    45.2209363746602477
-15963  -78.800559119169364     40.2286101505878406
-33701  -82.6390927984532908    27.7708174929917284
-42082  -88.5015723164121226    36.9097180099344371
-48039  -82.5163420407133543    42.7046966850605401
-56725  -95.8109548386296268    48.1866408592652533
-01923  -70.9451158170228098    42.5725997730898982
-18431  -75.2519189541133642    41.6089535893859548
-70707  -90.9868040000000065    30.119413999999999
-18343  -75.1096557472384916    40.8925106301945362
-46524  -86.0250297856286892    41.2966417083832411
-02824  -71.5635081176470891    41.9996418235294229
-95605  -121.548145338966933    38.6018308970266091
-17236  -77.9277699759585971    39.7987083647394471
-99926  -131.584658292181103    55.1403305048010566
-45067  -84.4669835468314858    39.4821783275988878
-48759  -83.4208484841699516    43.7331478142858359
-50317  -93.5504514104506768    41.6113960298140881
-32862  -81.3310091111110864    28.4137542777777767
-61910  -88.300936166762412     39.6833337499522756
-25234  -81.1531233906445522    38.7998179395700546
-61702  -88.9541069999999934    40.4932054000000008
-65051  -91.8080814911439091    38.4698236420088335
-84038  -111.325719281385346    41.8492856900432812
-65232  -91.7666270021322106    39.1479400788912812
-68325  -97.7659583111887827    40.0294873461538643
-28913  -83.2714014999999961    35.4969719999999995
-22265  -78.3204798888888831    39.3939947777777704
-45775  -82.1556109566605528    39.0850808019969236
-25634  -81.8437252431507858    37.7284866164383388
-07015  -74.0357741428571359    40.4029214285714247
-75039  -96.9413725328134177    32.8910392033788526
-77616  -94.2018913094644859    30.5721451556662522
-58351  -99.2779241748252161    48.1024226783216804
-20692  -76.5024209677821148    38.1876112757125199
-19067  -74.8363809449593447    40.2197386025083858
-99626  -160.367673749999994    61.512695750000006
-68626  -96.9830791040946139    41.1666420160734177
-50233  -94.2132906390196041    41.5959284863337757
-27295  -80.3034599923773129    35.8710542524491274
-81303  -107.867000899194196    37.189076933274869
-38751  -90.6604242327490084    33.4547895886791338
-92617  -117.837684285467191    33.6398413088235344
-62208  -89.998876444256851     38.5944057857801113
-61572  -90.0285587989689589    40.7905392121992278
-49885  -87.2464047037556156    46.346403127062139
-63431  -92.329184060367453     39.7413644015748204
-15676  -79.4585831218638532    40.2436360752688458
-13856  -75.1460533993170543    42.1805848631490861
-01506  -72.1040840044750695    42.1947682977326366
-27586  -78.0357490740740616    36.4024716740740786
-45628  -83.1976859769517176    39.3854527781723931
-61489  -90.0228979007469547    40.9402454635360158
-33617  -82.3929546135272517    28.0376719206605074
-54526  -90.8933286153846041    45.4627682307692425
-37083  -86.0031641404701332    36.5446772229542987
-63755  -89.6493837352228695    37.4262557850276423
-48619  -84.0499088462348709    44.826497840253289
-50424  -93.9270372730154861    43.3933225293082288
-90059  -118.248021920218051    33.9260504633575479
-84010  -111.870547617197488    40.8737484167351113
-84776  -112.085944108374406    37.6242342725780006
-67801  -100.027049117417548    37.7298757079861815
-77611  -93.8329953846812828    30.0303693049442977
-81526  -108.369387015912977    39.096151126041967
-73662  -99.6466103088281301    35.3097865227206995
-12090  -73.3614905362280325    42.8881756549331996
-10570  -73.7802152185059157    41.1337722153013132
-49747  -83.6057159338890159    44.8429031638890834
-72821  -93.7353531395588959    35.4496912837872387
-43779  -81.4272825600415189    39.8145187035197523
-02356  -71.1179331161452524    42.0549540912933537
-83713  -116.33448449821762     43.6406213316246863
-34420  -82.038057866712748     29.0531095587392691
-47982  -87.527490298076998     40.1965578750000176
-12541  -73.8074825407407502    42.1601260444444037
-78385  -97.7923899750000061    27.2249862312499893
-05830  -72.018137195836033     44.9842024730983852
-24520  -79.0394825468830931    36.5854637652227552
-24137  -79.6430482750929514    36.9542428103633966
-27847  -77.1995068947018694    36.1758663265577951
-53227  -88.0383753413944845    42.994931582344222
-90805  -118.18220378571479     33.8648109234694203
-96743  -155.781790101415083    19.9951265589622693
-46706  -85.0454510517750037    41.3544004247117911
-16114  -80.1823927329816541    41.402174973087007
-38869  -88.8401087973856534    34.360944042483645
-14604  -77.6049238442105889    43.1577631726316469
-98512  -122.978227876145652    46.9742762726196474
-60466  -87.6864932240114712    41.4829438941321627
-11692  -73.796222414201111     40.591629674556259
-57363  -98.258651257622617     43.6965545969951989
-87321  -108.456254826959821    35.1080719004610771
-46216  -86.011476064498666     39.8581788482385448
-19904  -75.574758110233887     39.1672873389153224
-59732  -112.690589821656062    45.4855694989384389
-69361  -103.644215706027069    41.8911629994365882
-21228  -76.7447406456254697    39.2785810392817467
-22852  -76.8432895714285706    35.1414231428571426
-46212  -86.4219699000000077    39.8458161000000004
-95844  -95.4851496666666577    31.4926326666666654
-73743  -97.9996374131736872    36.5648044011975983
-30474  -82.416456913480161     32.2154924999581311
-68033  -96.5177390829457664    41.1453162426356371
-81416  -108.068633304135446    38.729374209526874
-44672  -81.022524003871041     40.9216145903225481
-05843  -72.3446033833704263    44.5006176676247591
-31011  -83.0583760412303747    32.1229235942408167
-50681  -92.0034015224661914    42.7805074294670575
-27949  -75.7309559732075854    36.118786664357124
-27502  -78.8773263902597392    35.7297886448846214
-86732  -87.9468985714285765    32.4528352857142792
-81123  -105.535862955375208    37.4312055608519429
-44451  -80.861622797179777     41.0784123936125809
-15322  -80.0389547960218266    39.9814929171790396
-50243  -93.6952150776255763    41.8635522648401945
-04530  -69.8340846395061874    43.8958361096188696
-94107  -122.395801313286185    37.7656225003930359
-87514  -105.577444825979299    36.5214406936043616
-13352  -75.1231023076923208    43.3118229780219863
-06853  -73.4393518255319862    41.0690370778723448
-20701  -76.7916334541284868    39.1250754174311979
-37037  -86.3743878836424983    35.7079564298060816
-28737  -82.5521449999999959    35.711411499999997
-11566  -73.5539341762134598    40.6686166723750873
-35218  -86.8932789295607364    33.5072798347660239
-80265  -104.994641000000016    39.7480010000000021
-13634  -76.0863149748275163    44.0044576992580687
-26559  -80.1695157302903993    39.5021263319502225
-46122  -86.5225777316655495    39.765318124607731
-24162  -80.2666172994887717    37.1323418686389033
-70310  -90.8036290000000008    29.7906140833333382
-13958  -78.6902600666666814    37.2193161333333293
-17024  -77.30778699458034      40.409547732304226
-05702  -73.0329996000000108    43.5641075999999998
-98829  -119.796669255879095    48.30077869484888
-44611  -82.0837194423007048    40.6034440485984547
-54475  -89.7885912472637244    44.4791924171057147
-98522  -123.296730513513495    46.5714936486486408
-00971  -66.1128859359137806    18.3304265209391026
-31637  -83.4528828409144836    31.2904298310794182
-37765  -83.0706915795146159    36.5716224843666211
-18221  -75.9078435970873215    41.0057246092232788
-57744  -103.212512259401066    43.8272393642406399
-47997  -86.7241131126760649    40.6685983521126744
-51016  -95.7942317286353955    42.4717426248876322
-81111  -105.510481114754157    37.0522499795081899
-32649  -82.5750817499999954    29.0419892500000003
-95417  -123.640018015209009    39.6796572034220603
-34604  -82.4517493017403211    28.4763491308775443
-78617  -97.6098552737478542    30.1477720646043892
-73061  -97.0166380435943267    36.2949930071173981
-66204  -94.678210944773781     38.9913649662883444
-27219  -79.5677668749999896    36.2428013749999991
-71731  -92.6855628064516139    33.1481439999999949
-43218  -82.9247711250000066    40.0181633750000003
-28396  -79.3995006836863695    34.9196323041717918
-60420  -88.4154095278748429    41.0838597363748548
-67731  -101.53640251076061     39.7518478880918096
-63650  -90.6172117727667228    37.6182245967043727
-37733  -84.6251420041840561    36.3228373430962108
-41267  -82.4308734735883206    37.8685597040073745
-90037  -118.287466076314843    34.0033418489521821
-43081  -82.9087736410475884    40.1102689821944267
-26836  -78.9611479816264961    39.048448717449773
-61821  -88.2753354149640899    40.1076468956696246
-03865  -71.0926057425178612    42.8358981021899012
-95560  -123.864187458249347    40.1323159526543165
-84040  -111.926849932963023    41.0849747509552827
-55427  -93.3824453645763697    45.0077624603232849
-49052  -85.3121965377358862    42.1197020807127558
-17930  -76.1491385352696852    40.7159747925310995
-32626  -82.8864065987095415    29.4664759384656811
-40175  -86.0451989291644708    37.8368616073198396
-05477  -72.9838729025840252    44.396379161082983
-38549  -85.1548073823256715    36.5685125678388374
-08776  -74.1405782500000043    40.1371012500000006
-08049  -75.0365757935916236    39.8546125134127962
-18327  -75.1449428684209835    40.9840646785714142
-30459  -81.7625004999999874    32.4007475000000014
-81634  -108.140007199999985    39.1270623999999998
-66619  -95.7045117304582362    38.9457856556603588
-37618  -82.2270440942124736    36.471758104715839
-64873  -94.0534447192899137    37.0155802888675254
-48111  -83.4860431614312262    42.2023685645787197
-22971  -78.8052476416942085    37.7537068904858657
-33777  -82.7601443239465482    27.8526048010117684
-70770  -90.995924620551861     30.6340471383441866
-03942  -88.4741693333333359    31.0672796666666677
-98823  -119.601832263585493    47.2827483977687066
-73659  -98.9471636565657064    35.8680312020202052
-19956  -75.5543625290618195    38.5502369274674876
-39564  -88.7766867292899917    30.4036087377204716
-25840  -81.1115695961349843    38.0404840299054356
-54733  -91.8601303688868427    45.2806823311598237
-28387  -79.3884777023273358    35.1739797778141252
-77978  -96.5605104896552149    28.6783547448275868
-14445  -77.4879207606383318    43.1120564824468957
-60805  -87.7026198929161183    41.7209687951009585
-19096  -75.2741719256291475    39.9966248879775463
-58068  -97.4306588287089852    46.5530995849056453
-05749  -110.643357408284004    32.268530810650887
-14468  -77.7868410915340718    43.2926526827062474
-65566  -91.1371379287234191    37.7356365191489331
-43438  -82.7044917531760433    41.5997960241984117
-24148  -79.8615929335592654    36.5850059603410074
-62883  -89.1052679861829233    38.1654917380541647
-89005  -114.835298465699651    35.9787893388866848
-72903  -94.3624271481334915    35.3561602884397885
-47042  -85.2465187417763559    39.0156143232121408
-39039  -90.2372396002030683    32.8337979207503139
-56122  -95.9514453868479507    43.8971410340134511
-22307  -77.0628380551569592    38.7688821533632151
-44828  -82.8593329787234012    41.2358644042553095
-55435  -93.3371864624295142    44.8748038493679999
-98963  -101.408851999999996    46.8393709999999999
-44304  -81.5079483808563765    41.0823159768261661
-24256  -82.295907559176058     37.2145776034253402
-94501  -122.259103598770778    37.7695587154149663
-31776  -83.7876378750000015    31.1875181249999969
-50848  -94.7614534290388377    40.781443849897741
-59013  -109.106400542253525    45.4473694859154875
-48469  -82.551533371123071     43.4422396834223719
-02906  -71.394236230947314     41.8377110179842546
-30290  -84.5889457697330158    33.4778913278209984
-70438  -90.1197224365781153    30.8671224549917937
-18350  -75.4537992072752672    41.1153114340660295
-30081  -84.2442115555555517    33.8010424444444482
-85234  -111.745514303176279    33.3650419320996932
-87156  -106.436755333333323    36.1869346666666658
-63866  -89.6094265791855094    36.5189112036199148
-46723  -85.3226772051222753    41.2348093952646764
-61315  -89.3678322149999644    41.288708574999994
-45240  -84.5293137090830555    39.287681201102707
-72039  -92.4066977062705348    35.3517241683169843
-85554  -110.955011974619197    34.0935734602368825
-00611  -66.8018871428571401    18.2767293928571419
-02630  -70.2991848914424367    41.6992670737828703
-34646  -82.8392965000000032    27.8546425000000006
-48739  -83.8264910831242531    44.3930120330406837
-49676  -85.288564632792955     44.8366766003741191
-13431  -75.0759799759266429    43.2080938616736034
-04003  -69.9950458635312458    43.7335357972243415
-08059  -75.0923586658841486    39.8848290211267411
-79243  -101.011342092592528    33.7475340370370347
-27559  -79.1117166192671704    35.6347912630467931
-73108  -97.5578012871488909    35.4455491904540949
-11751  -73.2139745008427099    40.7349360000000331
-32692  -83.0807666935483553    29.3786593084677286
-09617  -66.5753859999999946    18.4134901666666657
-28128  -80.1500416567506591    35.2259405393830178
-41310  -83.2431472173076088    37.6395618365384621
-57043  -97.3104127463474242    43.4176380621878621
-15237  -80.0402437405125511    40.5506300971224292
-77065  -95.605093755982594     29.9310737367711219
-98195  -122.305228109890152    47.6567768241758287
-55950  -92.969716068702283     43.7443675954198241
-33041  -81.7953324999999865    24.564114333333336
-04672  -68.251964375   44.4133978750000011
-85086  -112.108909118602909    33.8406155011393892
-54457  -89.8556550718406299    44.2508544420076575
-72387  -90.7726258888889106    35.3125576666666703
-95423  -122.631899112824868    39.0407470525569309
-35437  -89.2085688928571727    31.5832045714285705
-99332  -118.741862181818178    46.7647574545454532
-33128  -80.2044476449135857    25.7766189078694516
-28098  -81.1024857663550591    35.2714977604077617
-28388  -79.3707567391304423    35.1660569130434837
-22577  -76.5550122499999901    38.0600399285714275
-02836  -71.6211521153846036    41.4502916692307579
-23417  -75.7679165806640924    37.71556530076397
-71234  -92.3563175463675634    32.6406828298076448
-08402  -74.5092619224013504    39.3374547368228846
-45065  -84.2111086280682599    39.3687340170756954
-33441  -80.0984158421331927    26.3098947603070599
-28469  -78.4557976122767542    33.9166510226981117
-35365  -87.6133343333333414    34.3012730000000019
-70807  -91.1771751827704691    30.5353814316388181
-97068  -122.654503094464815    45.3630524394815495
-96086  -123.21504980696713     41.8447478309364271
-26438  -80.3186579583333184    39.3463123333333371
-33214  -81.8496526666666568    27.8962736666666693
-46235  -85.9808113341822207    39.8343230907498196
-98230  -122.739695278664655    48.9543959123407078
-77518  -94.9877843549863599    29.5065893151875613
-72515  -92.0514670149586749    36.2790870243767003
-71309  -92.4476903750000218    31.30881458333333
-95041  -122.056581534482689    37.0505852988505922
-10038  -74.0040418903591473    40.7098309943289252
-47039  -85.1645330000000058    39.4032194999999987
-76354  -98.5738479141968611    34.0860240270409705
-30545  -83.7317891253349842    34.7168257136052674
-50137  -92.9064586344085654    41.6073607634408447
-45308  -84.4573271047617737    40.1245493404762783
-27806  -76.7725219397821803    35.3127860822249389
-24288  -79.8339268888888824    36.5165115555555531
-58478  -99.7624151079872235    47.1403053484983303
-32440  -85.5276701081298398    30.9258250904316121
-27942  -76.7613840877673823    36.2838700307186315
-17047  -77.4097253561995302    40.3670912883047421
-30676  -82.7567017500000048    33.7377545000000012
-80127  -105.143795095583357    39.5692080638539494
-67629  -100.17068932456138     39.7039490570175317
-24069  -79.6398090403201593    36.5954524057764132
-25432  -77.7860844764706201    39.2954457647058675
-55933  -92.7020497854784935    43.6552048580857956
-98354  -122.312620076082865    47.2508581991264407
-22312  -77.1519169271203253    38.8190039032571761
-51019  -95.6995573629788936    42.2479466165957973
-11976  -72.3499181124657156    40.925431401303328
-38259  -89.1778635011614114    36.1924888013937931
-47143  -85.7718226917023117    38.4717922746781014
-24829  -81.4535611250000073    37.4056662499999959
-29458  -79.4825822591092503    33.0981817190283749
-54401  -89.6765745251933595    44.9570067311626147
-56679  -93.3967209999999994    48.5835842000000042
-58248  -106.352940333333322    48.1383664166666563
-76357  -98.1926176308642198    34.0781844740740496
-62642  -89.7231111527702154    40.0773439671866996
-83715  -116.129006000000004    43.5485132499999992
-11794  -73.113610468750025     40.9058439062499914
-83707  -116.276173794871795    43.6748443589743616
-87582  -105.986823294805163    36.1531007350649247
-19903  -75.5490424999999988    38.6925290000000004
-85002  -112.105932999999993    33.4708560526315821
-23847  -77.5657521823728615    36.6761167517801283
-68635  -97.0097900771073682    41.0864694818218013
-26146  -81.0381532943592759    39.4577480328727219
-99206  -117.254154051189985    47.6380555112413049
-87733  -103.877369476868211    35.7773774163700793
-43950  -80.9077434510817994    40.0860655393824175
-07494  -94.8194952500000028    35.5873192500000002
-52157  -91.2260691103676606    43.0076915992719861
-31756  -83.9593175795986326    31.1856197405035935
-28615  -81.6564536777721628    36.4593194942315932
-80907  -104.819816410886986    38.8776046888148485
-17362  -76.8671626088218005    39.8545030576509376
-75440  -95.7459082014381551    32.8804716244954847
-13648  -75.3137115279076426    44.1560425255691555
-59759  -112.230536156543039    45.8556847876836784
-89319  -114.983062710526269    39.2824356894736795
-80109  -104.902294415619551    39.3827716675431887
-76467  -97.9401050909090856    32.3148571818181836
-74343  -94.8201793672024849    36.7403931186742128
-18035  -75.5408381911765048    40.750342874999987
-15202  -80.0686815733365336    40.5034757893890216
-37023  -87.7854578994413544    36.5810146867210264
-54621  -91.094046660714227     43.6586023928571336
-57794  -102.374666000000019    43.1459228750000037
-25701  -82.4283663573765466    38.3859082212583473
-51357  -95.273114073529328     43.05340530481282
-66054  -95.2027173141975567    39.1933033417972467
-67341  -95.4232315586035185    37.3475564064838039
-63690  -90.4684144999999944    37.8288409999999971
-16881  -78.3188024064827886    41.0184317525186373
-95373  -120.17140631147538     38.0777001475409662
-96124  -120.443570594724292    39.6492623752997559
-27102  -80.3794526666666798    36.0182289047619051
-04771  -67.9007546666666713    45.9735487499999991
-17764  -77.81285893422546      41.3642596216247895
-29614  -82.361779967948749     34.8729308076923274
-32306  -84.2943116344086008    30.4331908172042738
-08738  -74.0572119422719055    40.0219036294226669
-63539  -92.7631981543438826    39.9262574445471472
-15942  -78.8256299616747214    40.4052217268498737
-39576  -89.3826660801559711    30.2902168667676968
-14881  -76.3546888290155294    42.3987205751295448
-23518  -76.2166481054335634    36.9166702664770625
-31213  -83.6388979999999975    32.8394553333333334
-21607  -75.8535343938999773    39.1386789428942805
-87829  -108.553203946456662    34.3021345842519807
-23232  -77.4443522222222356    37.5598367777777824
-50086  -94.3897154999999941    40.6087559999999996
-00965  -66.1167537540160026    18.434446880522092
-47803  -87.3403083445545576    39.4666878145147351
-98350  -124.627721411764611    47.9036368235293963
-98826  -120.685500882406714    47.716050206856444
-98502  -122.979822302289818    47.0817049985591822
-32550  -86.3473542067300741    30.3844409542808336
-35741  -86.4828818464944504    34.7210590664205796
-78562  -97.932630800298071     26.2996104292101229
-17075  -77.8356488225806658    40.3924043064515956
-63042  -90.3718464635495167    38.7814589362620481
-68520  -96.5864536231431998    40.7937425895230774
-76093  -97.4096474222489093    32.2154243923444525
-53546  -88.9893600289714612    42.6793118367329072
-32551  -86.3569645000000037    30.3857103749999986
-68881  -99.3742599464285803    41.4117716250000072
-31632  -83.3606694448201182    30.9729934261399116
-22192  -77.3141982848940756    38.6827574844463271
-42356  -87.3251829999999956    37.692465999999996
-07041  -74.2993675494238772    40.7226298896300776
-74456  -95.9917663924050686    35.7078864556961761
-85082  -111.500437285714298    33.0905109999999993
-16136  -80.3266815654952211    40.835144760383379
-70032  -89.9973516266549325    29.959852748896683
-21817  -75.8366116815497406    37.9890389916829818
-61705  -88.9893175174774314    40.4559117412110183
-52756  -90.544646326578615     41.7231226422906971
-44305  -81.4647321359883989    41.076045547838909
-19152  -75.0459600050186282    40.0600962739037953
-46157  -86.509711226463935     39.5535603415614219
-66866  -97.1223642738397928    38.1674609841917842
-69042  -100.386169080645161    40.513931419354833
-56349  -95.5117854858446975    45.7328674178082366
-87551  -106.620268609022503    36.7043346785714419
-74457  -94.8456925483144886    36.0046695494381979
-98009  -122.186369499999998    47.6100819999999985
-13794  -76.0334954948453401    42.4018944639175288
-26431  -80.2929911301803401    39.3939502439709841
-08260  -74.8213354000880031    38.9872511855821315
-27892  -77.0792529800526154    35.8119361085033248
-73502  -98.3573361578947498    34.5786229999999932
-58072  -98.0060080299494842    46.9189912554780619
-67886  -101.449850249999997    38.0657107500000009
-07828  -74.7479069295299752    40.8741978125836667
-75739  -95.6249384285714257    31.6424584285714268
-75641  -94.5802300818182573    32.3797905772727361
-14619  -77.648202468873194     43.1357092253742778
-19606  -75.8588176801369656    40.329150496869552
-38963  -90.4151199705686395    34.0069487799330972
-83121  -110.54204050781253     41.8285468359374946
-94129  -122.464701455710923    37.7974402925408128
-89417  -118.478256500000001    40.177225
-55102  -93.1208876924827678    44.9349115880246757
-16901  -77.3129291678654909    41.7353942307849408
-83025  -110.796107196378784    43.5661730027855469
-85932  -109.21355540085753     33.9584438210075206
-61053  -89.9837400706633872    42.1154480632833028
-62329  -91.1738053870967491    40.5774369032258093
-94706  -122.295390366969329    37.8899815441271386
-16343  -79.7485746821306094    41.412052410652926
-84113  -111.834496396373027    40.7634083005181367
-67759  -100.829170500000004    37.3732200000000034
-71229  -91.8919565457305652    32.671219910226057
-58849  -103.185410627272674    48.2975395369697438
-29377  -82.096816789727086     34.9302947752809203
-89928  -110.621595159999984    34.4058653600000071
-64846  -94.3046046666666626    36.545498000000002
-43973  -81.2773837984816794    40.1860759006183272
-29620  -82.4190581839596206    34.1979415337462171
-22534  -77.6620154307035051    38.0812811230277575
-42355  -86.9782106093007457    37.8563503924763438
-68061  -96.2258013087566013    41.7875961713420239
-13843  -75.371858964211583     42.5223802730656857
-97504  -122.828509873206059    42.3350763424108436
-99320  -119.477436797132967    46.2721514578037443
-61773  -88.3852189762570504    40.5493451885474556
-97540  -122.793909057477777    42.2317513593749396
-15225  -80.128524647311707     40.5112513032257979
-90670  -118.068684525576884    33.9360185287164668
-23893  -77.9338442575934209    36.6205690689252492
-14869  -76.7746325758985222    42.3600344452432012
-41006  -84.3501707523679585    38.7901041416928649
-40894  -83.021398099999999     36.8854898999999961
-08028  -75.1176447735109321    39.7064219898565085
-70855  -90.8555340000000058    30.4917267999999986
-61769  -88.3966877774939377    40.8862633229812715
-32788  -81.6968546666666526    28.8047793333333324
-34563  -82.7029289999999975    28.2267980000000023
-21624  -76.2736002658228358    38.8371255443038024
-41713  -83.276314180412399     37.2199927938143986
-11942  -72.5805757812282764    40.8506170386473073
-05903  -71.5756876489397769    44.9589859512367056
-45003  -84.7935571249999782    39.582708714000006
-49801  -88.0646500897268254    45.8238349711311486
-89074  -115.084916351801127    36.0379335411957769
-04075  -70.5671208620689754    43.7982465172413811
-62012  -90.1482395580967761    39.0355977977333595
-22749  -78.1732660278021285    38.6260305981755323
-56167  -95.4320862545994544    43.5467176480711231
-71730  -92.6452485048577614    33.2076976490920686
-45810  -83.8236474600820571    40.7713296640055134
-29049  -80.4497643333333343    33.4678606666666667
-80449  -105.806744319225601    38.968448907758976
-24758  -81.6239453859649018    36.6732892631578977
-99832  -136.226920116504829    57.9591905533980452
-03256  -71.6303358634519469    43.6306531144669663
-65348  -92.9944677988666655    38.7098007116776941
-59701  -112.521071730687723    45.9932610652172897
-15629  -79.5633897254901399    40.5977674191176661
-57465  -98.6307556463676178    45.1295401874999627
-07432  -74.1401077771276107    40.9956150909574006
-44309  -81.5142852500000004    41.087651000000001
-04667  -67.0885160343740949    44.9779119175021336
-25132  -81.3490758195488866    38.2620451578947396
-67576  -98.7707950955632583    38.0229735051194169
-40903  -83.8344702577065135    36.828783700369975
-14731  -78.6601950305811215    42.2931305151729333
-30815  -82.0800288759369181    33.3301909382725157
-90247  -118.297411019234204    33.8907071344583528
-55409  -93.2836598006465465    44.9264546821120518
-03574  -71.6832194524432822    44.2866327990465223
-18018  -75.3940919556107616    40.6275865167650494
-19134  -75.1114721907650846    39.991909083259209
-95570  -124.121783843448767    41.0815515549833989
-30813  -82.2084354403259141    33.4706980690584075
-46147  -86.6196653402413546    39.9649676549645889
-93445  -120.610892090629051    35.1014675332159456
-40734  -83.9767289247729138    36.935024021188795
-12822  -73.8613302362677899    43.2498848153874746
-22513  -76.4833213823529405    37.7272925588235282
-31006  -84.2503070428237066    32.5775486480428071
-14802  -77.7916571289682253    42.2522127698412646
-29801  -81.7088323076951042    33.5786715996816127
-55784  -93.2150238124341257    47.0519517608008115
-95318  -119.832556375581376    37.6613951418604529
-52803  -90.5592036037016754    41.5385110467798526
-87868  -118.82348537499999     45.4892664999999994
-21914  -75.9776113663550774    39.5736738579439162
-38627  -89.2142067345908032    34.420735360053925
-35124  -86.7865402481170918    33.3112933719779107
-98801  -120.334532444327706    47.4253454136466175
-19968  -75.2860286125066267    38.7719507894971258
-14730  -78.9500374782608816    42.1743561304347736
-63102  -90.1885510913460706    38.6335380716783661
-91307  -118.653625629395378    34.2003759678792818
-46988  -86.2359674701491201    40.8716335170574965
-67042  -96.8468497486288697    37.8219759373376831
-29625  -82.7385490142180515    34.5426541137861278
-37066  -86.4586948279254699    36.3871866409049574
-47111  -85.6535869336150597    38.4554656616481907
-64500  -94.8248695000000055    38.9848915000000034
-59258  -104.718729129161048    48.5821007896138326
-32507  -87.3377283420950903    30.3606379277888401
-74868  -96.656606591436983     35.2421259616669857
-16431  -79.5216034230769111    41.5884504615384643
-74653  -97.3104844438962999    36.6767268129869635
-06758  -73.2416960147058234    41.6809017242647002
-62204  -90.102297522166154     38.6314215041165241
-08054  -74.9009298052794037    39.9463644477784854
-01450  -71.5582819664359988    42.6117336665779192
-63940  -90.2246514906109809    36.7661704095381481
-78666  -97.964056379752904     29.8829684277557028
-93650  -119.804275131857523    36.8406854687199399
-37076  -86.594015377273692     36.180269270847738
-24211  -81.9567475899718545    36.6558572175244208
-97739  -121.529602333372992    43.6832695794424026
-53549  -88.8086974584040405    43.00360769468017
-06241  -71.8562418465892279    41.8565890221085297
-30285  -84.2507532306866977    32.9837614581545182
-72186  -91.8252436875000058    34.8265323124999995
-98807  -120.134852153846154    47.7609256923077012
-35210  -86.6814293133539024    33.5347483634462407
-97217  -122.685517110557029    45.575228657054474
-94065  -122.245982878910198    37.5352474255802875
-47635  -87.0958296451942289    37.888977373415166
-45324  -84.012642885060032     39.8065642238238908
-36279  -85.8882133759852167    33.8686836063977452
-41470  -83.1901143333333266    37.8232163333333276
-34047  -86.87834035294118      35.3878687647058783
-10121  -73.9918795000000102    40.7494434999999982
-66226  -94.8542976173212793    39.0287001545282379
-75243  -96.7336570715456787    32.9054802917803784
-35614  -87.0906878656718675    34.862047508156742
-45335  -83.747125732476718     39.6352147373272672
-95012  -121.73759094986174     36.7807067027241033
-33902  -81.998251499999995     26.5163771666666683
-70043  -89.9633096739025433    29.9469221778563721
-61374  -89.3554528495934477    41.5476144756097412
-01913  -70.9386188486375318    42.853680054359387
-80534  -104.940427975402471    40.3436812510198024
-49948  -89.0342346790125987    46.7366967658178751
-05842  -72.2476343127559915    44.5731354529330801
-72950  -93.9448367057277522    34.8016446952181155
-60056  -87.9336780425038711    42.0676246901133268
-43725  -81.5955518277906009    40.0337569266564444
-87144  -106.651565839209738    35.3082355529501726
-43350  -82.6992235400000055    40.3947885200000059
-12092  -74.3818667787465841    42.7012127989100847
-30187  -84.8455085760796521    33.6647096616830623
-08019  -74.539340087512258     39.7974179406751674
-85131  -111.595927991203837    32.7483756821957996
-48054  -82.5173964949237728    42.7727219479694512
-98330  -122.178622881503003    46.757738202312126
-79235  -101.325592561947872    33.9716208230944048
-61949  -87.8627814198473089    39.6451792213740575
-72016  -92.6258807562626174    34.981496677485417
-03443  -72.4702046638477668    42.8872181363636145
-10501  -73.7612322867925201    41.2960342877358002
-11204  -73.9851525621422041    40.6191282740509152
-11364  -73.7506975000000011    40.7495880000000028
-55395  -94.0581080522818525    44.9593494900309096
-12160  -74.36236740297457      42.7570171770538181
-78230  -98.5519891274994819    29.5455151544391157
-95974  -121.763395545918314    39.493422581632629
-32858  -80.4544165000000078    27.7578241000000006
-49325  -85.3131544623468159    42.7622841406887417
-76703  -97.2914701111111242    31.609617888888895
-24361  -81.848467556854402     36.762795219358857
-72833  -93.474856478422609     35.0296998989881203
-88118  -103.663655105283084    34.230185051301639
-18250  -75.8607534812981896    40.8233913987899655
-68009  -96.0939798571428554    41.5856441428571415
-78028  -99.1593809178788774    30.0437942623500014
-44420  -80.6879204219139012    41.164469037531191
-66209  -94.6354412740995343    38.8991547262901349
-99203  -117.404129021942296    47.6300360759188735
-98621  -123.594105522627842    46.3531760043796126
-30426  -81.6794388736420274    33.03879074647881
-97315  -123.958353333333321    45.2058013333333335
-33923  -81.8119549999999975    26.3589899999999986
-72076  -92.1377289748938892    34.8955398284848997
-48049  -82.5700375320436422    43.0232792252116027
-18640  -75.7761760282050716    41.3147879065180987
-79342  -102.39337131555564     32.9116457133333356
-82936  -110.178892588888829    41.0515804222222371
-13046  -75.9549030000000158    44.3210832857142876
-33367  -88.589433800000009     35.1026615999999976
-46222  -86.2146727601973168    39.794713926398245
-20602  -76.9042527559512763    38.5953153872333701
-57032  -96.6841464606770131    43.4343336873629227
-32696  -82.4866567659274068    29.3894993119532053
-54909  -89.3580957276883225    44.3007773312485327
-78118  -97.9127001821212133    28.8883929891643909
-76533  -97.302519999999987     31.0206291249999992
-77316  -95.6514665253303775    30.3223766894179221
-73077  -97.2772113535669263    36.2852864694521173
-35622  -86.8944602027105617    34.3377729582105076
-15232  -79.9315994310850471    40.4531586719731777
-76064  -97.0264159136422819    32.3059777578222622
-74115  -95.9119602345289621    36.1793785745195606
-09702  -81.4595021874999929    35.1181454999999971
-53518  -90.6005090243668008    43.2535371661876411
-93435  -121.013042020379572    35.490672047786326
-78676  -98.1279186394676799    30.0214891695298256
-90706  -118.127735675291774    33.8879712179374764
-83105  -119.749486000000005    34.432189000000001
-89115  -115.0755994821006      36.2227572069641965
-98837  -119.289262117177245    47.1401516104018157
-61611  -89.5357236480686396    40.6911744463990814
-56566  -95.629938001831448     47.2520137271062097
-67513  -99.5500079243697513    38.46294835294119
-29177  -81.2695213580247042    34.1464436419753099
-15902  -78.8921459582537636    40.3113226874489214
-79370  -100.910817978005767    33.4784728597263666
-25126  -81.3699247922077973    38.1976562597402491
-83118  -110.994389707879691    43.0499431188506776
-35213  -86.74517232032251      33.5068185649999535
-44697  -81.4182383474903588    40.6129461312741569
-76247  -97.3171181683733835    33.0895956561085427
-66782  -94.9259544982578802    37.2843354703832759
-00782  -66.2205144343434569    18.2223286296296436
-55391  -93.5230623394697318    44.9594237406315287
-68164  -96.1088488478381038    41.2968444302179165
-22657  -78.3553235330013962    38.9962638861295403
-33543  -82.305800487096036     28.2011406535567595
-76557  -97.3996750395407531    31.2708879860368967
-22835  -78.4636252415362634    38.6649531420833483
-14435  -77.6748091372017058    42.7226294948482277
-11412  -73.7606221500000174    40.6976012500000053
-74559  -95.0620264285714143    34.9911514285714347
-07522  -74.1783689027679571    40.9254990198721984
-06704  -73.031761722343262     41.5792403759605307
-62363  -90.7886428902622242    39.6011048956888487
-69340  -102.297962131443484    42.0143831675257928
-32656  -81.986302952466346     29.7970213645546878
-04349  -70.0625501566860009    44.4425316857270616
-06663  -71.9123416666666628    41.8415646666666703
-68732  -96.983089785507218     42.4539321101449048
-03244  -71.9200644391067669    43.1238287866787431
-56232  -96.049078506486282     44.9289583689190195
-81133  -105.25478142632781     37.4690561161005107
-60188  -88.1434527480636802    41.9234007458216453
-41139  -82.7255221296834975    38.5142509131136421
-87415  -108.086893473492779    36.803022092515576
-42692  -85.0889658749999711    37.0114920624999897
-81155  -106.058528434612327    38.2626121550509239
-95230  -120.842890579956418    37.9846371773420373
-78044  -99.3532050377358473    27.576389867924533
-24844  -81.7786121111111015    37.5059698758170157
-48509  -83.6013620380064566    43.0266850638221712
-07729  -74.2907187499999964    40.2497277499999981
-67732  -101.375055314285717    39.3970365428571014
-56136  -96.4243843548384945    44.5016570491935397
-56478  -94.8816288214285635    46.635152749999996
-26731  -79.0755933910256488    39.1483274615384431
-68726  -98.1974092971576624    42.1781745090439273
-67664  -99.5625713615819308    39.8289733220338746
-38921  -90.0868274292806461    33.9938777500458755
-86034  -110.163450341463431    35.7782986097560922
-94970  -122.651810098617489    37.9065326718893729
-54519  -89.2773294225704319    46.0534178886797179
-93711  -119.833136785667904    36.8319568253414857
-70125  -90.1043009434336568    29.9517114507783795
-32798  -81.5804317027659351    28.721336606544611
-29018  -80.6489731784206612    33.3459349542474115
-74060  -96.2671593368421128    36.2515500789473677
-16351  -79.3976767264929606    41.6772973467211116
-20814  -77.1033027462842995    39.0025412705019079
-28629  -81.371082282178179     36.3398638382838399
-33602  -82.457062132796608     27.9546445278336684
-63121  -90.2985023104266702    38.7063418203783272
-38132  -89.9969709406475005    35.0694669982014062
-40410  -84.649841500000008     37.7136430000000047
-29469  -80.055760084795466     33.2415072587719251
-20301  -77.0179945624999931    38.8890293124999999
-43310  -83.7913232694515102    40.5143475462474356
-19801  -75.5486240199624604    39.738126916044699
-89131  -115.245449617723267    36.3009850512391949
-92226  -114.608580888888881    33.6606561111111162
-98684  -122.520684358963877    45.6308892573735889
-31033  -83.4325876665945572    33.0614267064559613
-71080  -93.139763662162153     32.5473290675675671
-93656  -119.892033179233053    36.4358071066415761
-50252  -93.3040074497926071    41.4543900721991889
-28325  -78.1020056021127402    35.1522120950704036
-71256  -92.710269318693463     32.962275138725218
-61877  -88.0737283605049583    40.0083523633755078
-69168  -102.009976897142963    40.771678514285739
-29841  -81.9463151674694785    33.5176162421147765
-97386  -122.731912739667678    44.3884803838133237
-36258  -85.6682416634524913    33.4464673287128349
-38844  -88.2555454884792141    33.8352432073732956
-46180  -86.6179646035312203    39.6051494133227351
-58323  -98.9291375041322851    48.8370569173553832
-43102  -82.7538914620624837    39.6279402467060322
-36269  -85.3795316288208141    33.7283160128435853
-81437  -107.682306000000011    38.0404877857142907
-50150  -92.9544794761230122    41.1243664962859299
-12741  -75.0791301221531597    41.8327706138715669
-71631  -92.263024369699167     33.5655113240423049
-54545  -89.8381305282669587    46.1301669800159075
-16436  -79.5091646728558601    41.8535495577931513
-06759  -73.1962970929294556    41.7519536362349157
-27031  -80.5592315000000099    36.4877079999999978
-29069  -80.0778412217415791    34.1873207395303496
-54106  -88.4497552590266451    44.4738185321821291
-87357  -108.461016711538505    34.9128541682692841
-47987  -87.2469064094162547    40.1156769721490321
-67730  -101.06549728560843     39.8195102937685661
-40262  -85.1640368333333413    36.6575947777777813
-96089  -122.454953516949161    40.7476502711864441
-87840  -107.064390099999997    32.6493450499999938
-95772  -121.046730392857171    38.9810935357142867
-80646  -104.696743461538446    40.4801993461538459
-06365  -72.0031856719400167    41.5186660557008409
-76055  -97.1520147732853872    32.1679603633572597
-33956  -82.0914839089477368    26.5341658295526486
-60004  -87.9785698863413899    42.1104716496471312
-31012  -83.1695328403226313    32.3936790576612523
-67739  -100.788209591623144    39.8944291727748706
-76502  -97.4117855885691739    31.0999354100125416
-97030  -122.430373545602478    45.5075637722417525
-84520  -110.412218095155751    39.5424194878893402
-32644  -82.8627667865168291    29.4671314269662936
-29645  -82.1312069651831962    34.5947958251480685
-98126  -122.374713136588966    47.5494265029746401
-98322  -122.586883999999998    47.3327446666666631
-47929  -86.9021492212644944    40.6753425874384149
-39566  -89.1618777000000335    30.4517387500000041
-03820  -70.88055455339655      43.1882335217445075
-04071  -70.4664056289365135    43.9162319477648211
-01612  -71.9241516039058979    42.3048916096644163
-66862  -96.5474196666665705    38.1578562235772267
-00605  -67.1541666428571205    18.4372922142857121
-40771  -84.0466714874532528    36.8686020106780106
-07723  -74.002827744360971     40.2495872729323025
-85861  -99.7322379999999953    46.3684310000000011
-95125  -121.89551416067205     37.2948750964900952
-72630  -92.9158147510162564    36.4550195741869842
-92561  -116.542206616392889    33.6174972135681926
-65461  -92.0302767906975561    37.6846408433292481
-32114  -81.0422512941265722    29.2019742609321113
-32080  -81.2774845644194386    29.8392405657087885
-05860  -72.1235630462608555    44.8027393199774551
-72315  -89.9165865936795541    35.9287816225559027
-64730  -94.3268982199064681    38.2588074658675978
-94610  -122.238536040831846    37.8121221139467565
-79776  -102.587882055555568    31.7325402777777725
-01905  -70.9748194599668381    42.4661992112141391
-52325  -91.9216819374099856    41.580128355395658
-92114  -117.053869921735412    32.7058774847359004
-39421  -89.7108701419037686    31.4799522070457201
-78879  -99.7421075483871533    29.6550825275142316
-67374  -95.9025745000000001    37.0963174999999978
-20877  -77.1838381132731826    39.1430116952451641
-59066  -108.534924033898236    45.4227536045197766
-79226  -100.917652045496325    34.9543180598473668
-68058  -96.248915426356632     41.0082027713178405
-70650  -92.9182313043478132    30.2343534906832367
-17813  -77.1763286591308884    40.7833522787000504
-57922  -96.7291474102564024    43.9222586410256426
-68407  -96.2695088825554279    40.9227039685504295
-11020  -73.7181956863116881    40.7730825451520147
-84039  -109.814496249833809    40.4403634717608114
-49785  -84.404597416666661     46.1807641666666697
-25573  -81.9434991833888233    38.2296144485049751
-72043  -91.2610803863636448    35.6498587499999857
-04481  -69.1148592535111845    45.2500711292135023
-28852  -88.1738282222222125    34.8125375555555507
-06821  -73.5090515999999923    41.470981000000009
-53211  -87.8852824899285281    43.0832686990760862
-19470  -75.735087111111099     40.1869160000000107
-85218  -111.431882707482998    33.3647295804988815
-12062  -73.5032051050813635    42.5280109652195861
-76486  -98.042132833407365     32.9935900550867274
-72623  -92.3286938878413679    36.4758018939679829
-47140  -86.3624591605779841    38.3791305743309437
-30163  -85.1300492307692309    34.2880613846153892
-55316  -93.3871685739238018    45.1673680853796782
-60804  -87.7615339908074645    41.8449602273474355
-67417  -97.5430897023136367    39.4367024238323651
-52219  -91.3946614236453456    42.201713586206921
-44251  -81.9279130880732822    41.0309252642201727
-92755  -98.5515738571428557    36.1330965714285739
-76882  -99.6785152233787528    31.8103323554843733
-50084  -94.0548988571428453    40.8481778571428578
-85535  -109.896615722222222    32.9714110555555493
-85022  -112.053087424967842    33.6275630428367052
-64853  -94.1872544999999946    36.876616999999996
-70086  -90.8653277412868619    30.0379786621983911
-48217  -83.1541407013963436    42.2754476052631816
-21028  -76.2454683268275772    39.5653324734021581
-26817  -78.3770856642857581    39.3532692571428697
-41653  -82.771390526075308     37.6575552570563872
-11510  -73.609434719548446     40.6546178850916533
-45342  -84.2597483237560709    39.6258253580901041
-90249  -118.317898075251705    33.8999795953894818
-84713  -112.629080426789798    38.2906950761930602
-91802  -118.126360500000004    34.0927824999999984
-71369  -91.8352498452174473    30.9682992993788311
-38068  -89.3285729846808749    35.2529936437861338
-19902  -75.4799309107142733    39.1239518928571428
-61880  -88.2505847561194798    39.9789221074627363
-50583  -94.9880180287646709    42.4247355979695158
-68327  -97.6119160028734996    40.0165705775862079
-48371  -83.2849366136766065    42.8272835200162731
-68642  -97.508701339750175     41.6972000691987574
-14112  -78.9646345151515163    42.7009971818181882
-55057  -93.1877774619787118    44.4538286161654455
-12057  -73.3469251022284396    42.9635062969359183
-61811  -87.6125268013778111    40.2932171067738523
-71365  -91.8381764117646924    30.8132039411764787
-01929  -70.7795395587135658    42.6312498151019312
-98669  -151.118677749999961    60.442113374999991
-56627  -93.8057099348216212    48.172248223214261
-60961  -88.2413473489692706    41.1051367963917187
-44236  -81.443220398543076     41.2484202527933732
-91352  -118.370134436839464    34.2252906111202364
-12085  -73.967458391304362     42.7016938260869594
-27050  -80.4051863593433609    36.2417016667229817
-91109  -118.154353999999998    34.1552590000000009
-58058  -97.001177535341796     46.1616648435689712
-36527  -87.881344619890541     30.6869728078441817
-02815  -71.6666872310923537    41.771236905462203
-26563  -80.2736204581497788    39.4818743083700525
-26726  -78.964955557453635     39.4290235299690082
-33935  -81.4393589383624175    26.7604846497089284
-67748  -100.855576124483022    39.1253265592327537
-75038  -96.9772811892119933    32.8693437388668528
-75438  -96.0728378397162999    33.6013230761229167
-98338  -122.291370919128397    47.0309038149387177
-29653  -82.2304869705149741    34.2963077702429047
-73853  -99.1725907128713118    36.2614494752475167
-37887  -84.5693343718996289    36.0876849707829805
-71861  -93.4523665503217416    33.1016823392820427
-02666  -70.0596548336485085    41.9946123745612496
-23435  -76.4679071204480323    36.8540065548824458
-35118  -87.0431821624433439    33.5396640523067546
-59487  -111.628676090040386    47.5743364159959867
-97409  -123.268988249999992    44.1283745000000067
-33455  -80.1527777936351811    27.0833687924808828
-29611  -82.4551493126931945    34.8359066131411197
-38361  -88.3073917719096357    35.3118525678106039
-78210  -98.4669373313212049    29.398067417572129
-79744  -101.903281214347501    30.9135287942955657
-96009  -121.155681209999926    41.1116623399999952
-21052  -76.4450779119170534    39.2058384611398978
-99747  -143.611706999999996    70.1263844935064924
-45004  -84.6089665199999956    39.5135428000000104
-98295  -122.220080429577379    48.977118653817648
-79543  -100.385997186862312    32.7286721798469458
-98443  -122.374172243885866    47.2066801117527248
-57109  -96.7459190000000007    43.5059235000000015
-23837  -77.0758182158526637    36.7399478734136267
-13484  -75.6555311208791323    42.8576540109889947
-19078  -75.3218533741195841    39.8790224466474612
-01436  -72.0742479691943316    42.603243742496069
-14719  -78.8726151963577991    42.3305804300087161
-15928  -78.9227315764971422    40.2368004889280471
-98010  -122.014346811775027    47.3195803473089001
-00681  -67.0811917142857084    18.2001125714285727
-56373  -94.2500347471714974    45.8507511011509266
-38134  -89.8651345428504129    35.1921428133366661
-94523  -122.077145693678091    37.9541465186645297
-33852  -81.3667953966031661    27.2873203990954138
-38569  -85.8601787031463601    36.1047414001368168
-63941  -91.1545372962962546    36.8956293838383971
-78931  -96.4424079740457785    30.0242618335877687
-06716  -72.9800603487952486    41.5996314343143965
-61855  -88.6564051369047235    39.915595035714297
-37710  -84.2567568675233076    36.1613221191587471
-03048  -71.7652553829277053    42.7474500604147494
-44650  -81.1739192666666725    40.8750461999999999
-50250  -94.3328586918852778    41.4850931683953661
-25942  -80.9954252715231888    38.03965133774836
-35406  -87.5037864845688489    33.289582880765856
-91284  -116.18063457142857     35.8552224285714303
-20603  -76.9651748939448339    38.6296924999647047
-65045  -92.6636577222222115    38.194342055555552
-08027  -75.2753299729849914    39.8220390234128132
-17102  -76.8903754244025492    40.2727664737657562
-02608  -79.861857333333333     39.5601398333333307
-50444  -93.3859910091464371    43.2827822205285315
-51330  -95.643919000000011     43.4141970000000015
-75566  -94.496120598290716     33.1587493344729225
-72332  -90.3079579398148695    35.1043620925925879
-44707  -81.3607516059591234    40.7760488437870094
-84637  -112.43880201941748     38.8096094352750782
-14837  -77.0044735345986169    42.4961521722580784
-30185  -84.9113751585989149    33.519877337194842
-77447  -95.8163416869877409    30.0985476051954848
-02893  -71.5175420331755447    41.6999039647735543
-84024  -111.339820000000003    41.0431825917431183
-07670  -73.9611900185701074    40.9207582704374602
-01376  -72.5560313855586827    42.5974180349681859
-94502  -122.245218552428611    37.737943123241152
-73457  -97.420078999999987     34.8103800000000021
-77428  -96.1857538780487857    28.7242666585365853
-76135  -97.4527666508138566    32.8257240807654327
-77848  -95.9875394000000028    30.0708978000000009
-68336  -96.6840271208609607    40.9621840579470629
-75411  -95.6170397187005676    33.854197367142163
-38571  -85.0458234619824367    36.0347289618540643
-72527  -91.6933418117258157    35.7238138926507176
-59547  -109.015035926470574    48.5833165882352773
-67838  -101.09157723337222     38.0029011656942686
-37347  -85.6127828203737522    35.064902567224209
-58078  -96.9025035261798848    46.8564986660817269
-73742  -97.9078181732366062    36.1034692427386474
-48468  -82.7704725139240622    43.9561009071729956
-13623  -75.7572018076922689    44.4430369423076854
-76633  -97.3120043759921032    31.6776236254509804
-27260  -79.9881478534347821    35.9550851815096095
-50517  -94.2306030045435392    43.2990051032630916
-25644  -81.9916936071428353    37.7098610892857167
-86352  -112.760677000000001    34.2157112499999982
-47683  -87.378406822784811     38.2782064556961927
-51517  -95.2521265000000028    41.5347945000000038
-85054  -111.962856205821183    33.6868624130284715
-30572  -84.0785100382880728    34.7320094083790352
-19454  -75.2415868101559653    40.224702391796967
-97868  -118.825977051459645    45.4625229923195207
-66857  -95.6241684319384433    38.0986007884003044
-55769  -93.2109709962113016    47.4577174887788189
-17953  -76.0844444350877751    40.7297832035087879
-75915  -94.4299625714285753    31.2382595714285749
-33921  -82.2647103961127186    26.762821676943652
-48218  -83.1353124722806029    42.2710524421052014
-14063  -79.3305042235528077    42.420849067682795
-65302  -93.1773365714285831    38.7000251428571431
-50706  -92.2652096923076783    42.4029753846153881
-65264  -91.6867962452575114    39.0903657862465295
-73491  -97.6565135147783963    34.4523935935960779
-19102  -75.165482649595674     39.952321495956852
-30535  -83.5809991592328885    34.5801054176859353
-97208  -122.679742500000003    45.5273639999999986
-99218  -117.415738772537622    47.7576595421670831
-14136  -79.1648135184806989    42.53147210164272
-60184  -88.251974400000023     41.9303702333333348
-78544  -98.0237841666666583    26.4959689999999988
-39174  -90.1588628800000151    32.3980870133333312
-76645  -97.1326250258033497    32.0129996694814807
-20233  -76.9272929999999917    38.8462689999999995
-13516  -76.7063168000000104    43.3143752999999947
-56636  -93.8297929455570738    47.3995893265222179
-17843  -76.9364571018518575    40.8170345833333457
-46530  -86.1414191516078489    41.7444373283294894
-10279  -74.0084012499999915    40.712368749999996
-17006  -77.5292655776264752    40.3086521302960747
-37996  -83.9310200769230903    35.9509592307692358
-18355  -75.3502225811517832    41.0760582446454521
-23805  -77.3880474700864767    37.1533793555069849
-90713  -118.111453603379687    33.8487959781741878
-62255  -89.7876019954475169    38.3029325007587715
-97523  -123.610967124412056    42.1342079692386164
-72539  -91.7179561856367371    36.3265400621993493
-37724  -83.6889388517541875    36.5400652597594657
-99166  -118.690595239329355    48.6877860695742015
-10169  -73.9765730000000019    40.7542740000000023
-81201  -106.057683381525024    38.5482825115546035
-98105  -122.296558090509308    47.6630635210624476
-96820  -157.922865000000002    21.3368690000000001
-63361  -91.5613819671382316    38.9525186656960614
-16633  -78.2336421571428531    40.1598689499999892
-24635  -81.347685258687207     37.3082978880308787
-49442  -86.1732824538399313    43.2345969946324544
-68822  -99.6391962422024733    41.393956184310106
-62895  -88.5820621818181451    38.3241651765224773
-26250  -79.9627134173763352    39.026224780037829
-28601  -81.3230810471215193    35.770296788937948
-66103  -94.6253944185082645    39.0598269714547328
-90045  -118.396203577009942    33.9636891750226795
-30330  -84.4304899493671002    33.706674531645568
-46076  -85.94293061008851      40.3635652862985239
-02916  -71.3554062819477792    41.84063158808938
-81235  -107.305615591304132    38.0226992434782218
-33541  -82.2171042047422986    28.2334878321598879
-64401  -94.7122215041440967    39.6363983443840695
-92239  -115.441705405184152    33.803986323328779
-12854  -73.3641645128205226    43.4759672051281854
-46865  -85.0188619999999986    41.2497104999999991
-04457  -68.4756507408063584    45.3736904344649261
-35954  -86.0811486353481001    34.0652713858046283
-67159  -98.3031267211328981    37.4413519346404726
-08859  -74.3036677112046533    40.4601682724343092
-12023  -74.1581947243397934    42.6028816848531164
-38375  -88.5870001686481032    35.1611138044753986
-38558  -84.8813455993916506    36.0036649993386675
-77406  -95.767342776636454     29.641402018270508
-30394  -84.420392333333325     33.664933166666664
-08551  -74.8477695769447422    40.4450312474914213
-40037  -85.4127320891000466    37.6536679167534487
-13953  -74.2679344999999955    44.8495615000000001
-77835  -96.5934907803015363    30.1801200115435151
-18086  -75.5462074152046767    40.7350551461988246
-05871  -71.9471326244034515    44.6777390726170367
-26847  -79.1285594267017842    38.981227232329843
-55419  -93.2880079861802471    44.9059322200388351
-47136  -85.9647624152637633    38.2392648044222341
-46538  -85.7694613721961616    41.3184200893110258
-52236  -91.8676170601236919    41.7339957303271376
-43439  -83.0425959803921643    41.517925274509814
-26338  -80.6161506394247596    39.0748494128801056
-36116  -86.22805085786419      32.3112082690684161
-28136  -81.6413272295081924    35.4308230819672048
-06070  -72.8218303347242966    41.8739812802586968
-45215  -84.4617997404895817    39.2318598078713308
-71027  -93.6956157983378688    32.2509260470914541
-83344  -114.101628882212808    42.4666230100142741
-41333  -83.7765315128205117    37.5554233076923083
-36853  -85.7914504801715765    32.7884004466522967
-95721  -120.07961159062981     38.8147154247312258
-19884  -75.5455010000000158    39.7463111249999983
-47352  -85.3656498629540437    39.7977144358353883
-68339  -96.8498562491888038    40.7392668306293757
-45152  -84.134772912471675     39.3495865263102473
-78160  -97.9458631819762502    29.2662419657707993
-20660  -76.6989645206185315    38.3776767268041255
-23872  -77.7258861141834956    36.9826653635280209
-48615  -84.4724818219043811    43.4287656906758528
-77474  -96.1924459290962801    29.7995963309398526
-91032  -83.5094563913043686    33.0238950869565286
-41754  -83.323590828710465     37.3047155002432547
-17224  -77.9067323627856894    39.960267354527879
-64656  -93.6977603921320537    39.6765561916243428
-77077  -95.611598762832017     29.7510403727066475
-25011  -81.8409930247524642    38.5089406732673254
-61838  -88.3436025000000029    39.4802575000000004
-61087  -89.9960678810211618    42.4838769193084218
-13429  -75.4602829999999898    43.4609766666666602
-23520  -81.5895319508196621    38.5549317868852413
-95225  -120.88639737098184     38.1991152780191356
-14733  -79.1843393344886124    42.1409981615251183
-28605  -81.6817931862106548    36.1433328304526498
-73116  -97.5569071340924125    35.5432184100843074
-99681  -165.25604766666666     60.5829153333333394
-12436  -74.0936631307012306    42.1993659428182468
-12846  -73.8201909686302713    43.3310422119205541
-22958  -78.8991500254968088    37.9056694616975491
-47303  -85.3759168700953666    40.2302411239693996
-77778  -89.5260492499999998    44.7149304999999941
-89503  -119.840859291996821    39.5391582798562666
-14876  -76.9306200441177026    42.430187235294099
-76950  -100.610877022445862    30.5507059754902315
-76904  -100.480721636149553    31.3819182178017932
-48626  -84.2209543798375933    43.4178380328455376
-03042  -71.0794758033213014    43.048557657039602
-23527  -79.5554565999999852    35.4645536000000021
-28540  -77.4785281033886406    34.7609782183809344
-21239  -76.5882576230068537    39.3629347759301638
-70734  -90.9927794333170255    30.2410806790424864
-80501  -105.111886457758743    40.1774241840552833
-47970  -87.1193269470450105    40.4690642357553116
-40108  -86.1517855398175527    37.9693197494441748
-29201  -81.0344102286080101    33.9997891833758175
-30260  -84.3271497099874381    33.585710375474072
-15532  -79.0680961522842836    39.7674203502538361
-68512  -96.6936263482672302    40.7439603540111719
-93267  -119.093871743578475    36.1431709497430518
-82721  -104.922433460845127    44.3951284718047816
-30092  -84.2327745341993221    33.9734108223183853
-30542  -83.9000939039246703    34.1717050290684412
-12792  -74.9363139047618603    41.5193562447397468
-73402  -97.0698014871795039    34.1686261025640974
-57262  -97.0995155025367325    45.66868900450946
-72007  -91.9813507622914699    34.9981137144789614
-99950  -132.827620556961989    55.7596692278481072
-38877  -88.8993015454545343    33.9872001363636329
-88349  -105.807265518348601    32.7904943623853171
-47917  -87.4827619526902254    40.468002336734763
-13476  -75.5157572571756646    43.0838156946039845
-98730  -120.149133350000014    44.8482949500000032
-76689  -97.5168639563164561    31.6576909767122991
-61346  -89.7189633385826681    41.512175716535431
-63460  -92.1614901393442665    40.0110187049179942
-12405  -74.0813450537065137    42.3188352708018414
-70071  -90.6997719440745556    30.044949095872127
-26812  -78.8788695974094054    38.882373714928562
-62994  -89.338201790430162     37.9048791505934375
-50375  -93.2814910000000026    42.9060455000000047
-13051  -75.912512250000006     42.8800770000000071
-49126  -86.3733191696429259    42.0344703580357049
-97335  -122.894021848484854    44.6346766363636291
-15710  -78.8702725736434047    40.6421873875969126
-29926  -80.7373030477300659    32.2279848853884872
-76667  -96.482731607401135     31.6569856120066362
-97413  -122.183786426792153    44.1730499814438531
-53802  -90.8871070000000003    42.795478928571427
-99866  -150.113381249999975    61.707382250000002
-72004  -91.7902475697288622    34.2764112349636818
-48840  -84.3907710306688017    42.7572373040061464
-26678  -80.9080992396953462    38.1664189077060882
-42285  -86.2859014979757575    37.2599241950067324
-55413  -93.2484744053355854    44.9985075854020948
-12927  -74.8504017927928089    44.221528401544397
-26254  -79.6006585619469149    38.9361472920353933
-97702  -121.301540198316829    44.0181838495673361
-32949  -80.5431226793796355    27.9226285440067095
-62670  -89.8769462020440102    39.7448934067682558
-21801  -75.6312600545915217    38.3708434372870428
-08741  -74.1669780047581781    39.9352392743854523
-14208  -78.8512573819590727    42.9152140443974801
-75901  -94.6716955306662271    31.3198790262233615
-50262  -93.7957181229508166    40.8570873213114965
-63139  -90.2958977748553195    38.6096246751443886
-65259  -92.5520307940401779    39.4381022286055938
-44319  -81.5306899215791105    40.9866617594289835
-46052  -86.4620873407114203    40.0440486362052255
-49863  -87.5532235000000014    45.6114409999999992
-43440  -82.7680193835985705    41.5275784752626009
-74350  -95.0495356498316681    36.4689961060605725
-17065  -77.1947672839015411    40.1173946447264171
-57365  -99.3938741218748874    43.8054571281250489
-24481  -78.9626670833333293    38.3238912499999955
-36035  -86.1255474831007319    31.7808316381252354
-80733  -103.4849674297635      40.352382191933188
-49964  -88.6301311369047653    46.081791821428574
-12187  -74.4627699105304828    42.6230796991291001
-80228  -105.147079978902454    39.6869844122670727
-75945  -94.0295260000000042    31.9697979000000032
-68019  -96.3749104752661339    41.7796436696931295
-35972  -86.232145829548287     34.0014387781258449
-27938  -76.7296292549635695    36.4040202197840799
-54933  -88.7070834765625449    44.6662706093750117
-83123  -110.227834012574391    42.2500251323627083
-79911  -106.555613615257087    31.8842542620232017
-36910  -88.1799754915966361    32.2345305924369754
-39630  -90.8454944834121818    31.4617391872037793
-27565  -78.6372490573256897    36.3583938348857885
-58032  -97.647655427165347     46.0787771374015591
-17814  -76.3796422653931444    41.2340174322427799
-77043  -95.5605549609794878    29.8060503557766019
-98953  -120.262752518518525    46.4183947480462464
-85207  -111.642454635485663    33.4502370682395735
-42061  -88.7752511071428501    36.8852654642857161
-38470  -89.5791526000000147    30.8464466000000002
-37180  -86.5757686868263221    35.6169464009980246
-38567  -85.9153729849369228    36.1380676537900456
-73150  -97.3307884145254434    35.4070070683797269
-00674  -66.4872051128114947    18.4273481062527438
-35765  -85.8044806565568194    34.6861068042262772
-52952  -89.4257806666666539    37.4915606666666648
-02641  -70.1536396220779039    41.7494354961038638
-39361  -88.6249684902788317    32.980474574387145
-01237  -73.2491367978415724    42.5440635908873048
-78055  -99.3024583562501419    29.8355840073864158
-58368  -100.012290907980613    48.277855764924297
-37322  -84.8156679552006239    35.4954527942232403
-81325  -108.952166199161468    37.9260672641509515
-47831  -87.5222636999999963    39.6672433000000026
-21577  -78.9080446666666688    39.5213237500000005
-16746  -78.1414028818067123    41.7913422612917316
-76534  -97.3851193444284746    30.886753181775326
-61018  -89.5453090778559186    42.4077998008934003
-63060  -90.86409254059609      38.2635268737923511
-84740  -112.224606462184823    38.2382356134453758
-30464  -82.2485112847221984    32.4445315833333225
-76842  -99.0992723210884492    30.902658502040822
-06482  -73.2489158120849879    41.4097361395113595
-38874  -89.2369978333333336    34.253405454545458
-77632  -93.8080275652193905    30.1970216612764304
-00977  -66.0165947999999929    18.353758533333334
-92315  -116.893652528264568    34.2413352217155875
-95111  -121.822657604848828    37.2806229703158252
-67345  -96.1873997755775605    37.3762150594059435
-33401  -80.0652527259192368    26.7148594382352513
-66834  -96.4555830884977041    38.8517020682002538
-33947  -82.2703211386762092    26.8978147486610801
-87537  -106.132365322334991    36.0882396015228082
-10916  -74.245263676955247     41.4402707760501556
-06096  -72.6471152471951456    41.9275342301794893
-51029  -95.545431890745391     42.87428674293065
-88020  -108.846701250660942    31.9735317352422506
-92679  -117.582579113384696    33.62263147193039
-15095  -80.1167913333333246    40.6739326666666656
-79785  -103.789960518518484    31.3139739259259144
-33974  -81.6079424012170307    26.5637077090829621
-33858  -81.5833501388888607    28.0752963750000077
-49418  -85.7624581194631901    42.8826699567085896
-18222  -75.9907980469875923    41.0315447537122893
-79357  -101.400923955789381    33.6590493957895376
-19355  -75.532891686742559     40.0476018653878185
-17964  -76.5079051600553868    40.7114030620386629
-90602  -118.031231570520418    33.9688356785714234
-07024  -73.9761132605762981    40.8471604141630635
-99116  -118.958731617486336    47.9982573200624287
-68324  -96.2866365246752025    40.5547418519481155
-15663  -79.6777198269230951    40.2483207980768967
-25963  -80.8026891666666529    37.3989896666666652
-98501  -122.870388911559175    46.9983738480893791
-24941  -80.3585059449648611    37.5737610550351562
-17548  -76.8829216666666468    42.2694803666666772
-21034  -76.2244649769037039    39.6481805873097102
-13076  -76.1473327069073918    43.3533879707529977
-08327  -74.9820366551180797    39.2556669590551266
-13373  -75.4635380526315771    43.6750091052631504
-99702  -147.078898179604209    64.6822376012176932
-07524  -74.1559152115170832    40.9314497552602248
-71438  -92.8020808241757038    31.1253029413919684
-64022  -93.6854522078430847    39.1973275411764774
-92368  -117.333007601941787    34.6577453503587591
-30160  -84.6104636000000028    33.841740999999999
-03756  -72.2905336666666614    43.704813333333334
-45873  -84.3975340893932895    41.118866857936645
-62815  -87.9929450189274007    38.4582535031545447
-90261  -118.378620666666663    33.8956586666666695
-39338  -89.2200078243777881    32.0902205861474528
-60153  -87.8452578978442347    41.8784624064123392
-55785  -93.7241914805800889    46.9468845939927633
-43963  -80.7021245253456954    40.17260400276502
-95671  -121.162075833333319    38.6894032222222251
-62649  -90.0654610584457203    39.3605811997431942
-03307  -71.4562832220836839    43.3107374902663267
-75237  -96.8725468336541837    32.665801956103202
-23436  -76.5057596151173982    36.8972474257167704
-79036  -101.584758871345031    35.6432199392927131
-84247  -111.724577000000011    33.0708224999999985
-91935  -116.816449616780275    32.7180654493174785
-49236  -83.9531505574628625    42.0766968279851596
-35464  -88.1580179557007284    32.8007235664488093
-58653  -103.149878813121077    46.0640786361829058
-17062  -77.1639292691377818    40.5509896777694934
-31052  -83.821921539433859     32.7825500607317295
-71109  -93.8046705752960293    32.4736296623016969
-55044  -93.2642829407077159    44.6739911564279595
-44428  -80.5820863657298645    41.4424084303229137
-32509  -87.3404437678571242    30.4634371785714322
-28097  -80.3995833659800212    35.2874396565617445
-71414  -93.02310804237284      31.8166951355932213
-95445  -123.547305927193506    38.8177257332663999
-68422  -96.6956967037269237    40.3852836445349013
-83617  -116.523168342311081    43.8899198475785823
-50005  -93.0171182066828948    42.1216782937293317
-43467  -83.489833794117672     41.2429900882352953
-45105  -83.612746882352937     38.7508253529411704
-23250  -77.33267823129259      37.5055436394558015
-36879  -85.547579978950381     32.7328805342054139
-01063  -72.6398075084745614    42.3194686779660927
-38104  -90.0049101341395499    35.1331391797690031
-99830  -133.938805176470538    56.9740192020460583
-59086  -110.611818558114834    46.0213954064646558
-29349  -82.067087075391882     35.0670117603443288
-71845  -93.5984802469557167    33.3432569352167221
-56312  -94.9547461463741627    45.4643245923939148
-83641  -116.580705477145742    43.3784831229011871
-10962  -73.9614019827720739    41.0451490477680991
-95963  -122.211620089061583    39.7476553130552048
-38556  -84.923659468428994     36.4117822685839272
-62289  -89.754561786363638     38.5953313500000235
-75447  -96.1221757627325246    33.7513241988245625
-85240  -111.537396086003397    33.2377008617200786
-23441  -75.6947547749999785    37.7090107249999988
-36556  -87.9788297339449201    31.2025868636959309
-61379  -89.5967706080586908    41.3763145238095333
-49664  -85.8958247969723487    44.8769463529014985
-81136  -105.890793736929524    37.7313293858921099
-51440  -94.8115549085587901    41.9133355179224978
-64470  -95.231151748130543     40.1554360081576363
-37050  -87.6365424542240277    36.3714505521385689
-72379  -91.0230672731277508    34.0413138678413958
-89512  -119.80065269247018     39.5527193004233837
-44087  -81.4503157005830047    41.3291787191209679
-91789  -117.858775136126653    34.0185655160148244
-62973  -89.0827952812500001    37.310816468750005
-40036  -84.9778033008848297    38.4451417262536879
-70426  -89.871334019105916     30.9303810528084711
-94607  -122.284762559656031    37.8063336919485664
-15863  -78.8378707268907277    41.013827130252082
-92154  -117.050685603652738    32.573802369582971
-70047  -90.3764337183303041    29.9684893858439381
-76955  -100.142233572413758    31.3017638689655371
-70763  -90.7359831339490341    30.0382793279445153
-12861  -73.423578138431111     43.7470082762933643
-74538  -96.214963831030758     34.5464368623804319
-15337  -80.3712437672995748    39.9470572379013547
-71301  -92.4623091749317041    31.2904302129652407
-60526  -87.8708554162116542    41.8304883621724102
-32099  -81.7676686666666654    30.3371930000000027
-67545  -98.6483485390335062    38.149378460966517
-49630  -86.0014093710952636    44.8193743461057466
-06754  -73.3664492860303739    41.7736390740741967
-41426  -83.0127619047619021    37.7798203333333333
-87032  -106.048661468697134    34.8573151099830412
-62048  -90.0955366270447371    38.827289631406785
-72435  -90.5677235020821598    36.3274470660321285
-89506  -119.851611454087731    39.6324588747829765
-46784  -85.3849201561149584    41.4939986165468397
-97147  -123.89489786059724     45.6129827681365398
-99678  -160.419849592592612    59.0548393703703738
-94621  -122.191025548021742    37.753649458108903
-30182  -85.2489952701092761    33.6576046323734985
-75651  -94.5395799028779749    32.6752187190647234
-98408  -122.446341118569876    47.2007328575102818
-36455  -86.353001040441157     31.0128934558823701
-55101  -93.0863050120274664    44.9598330481098927
-44278  -81.4261834751589362    41.0993854885801824
-26161  -81.2470538983050119    39.176571999999986
-42602  -85.1408622305478673    36.71699692265274
-92805  -117.907274672157911    33.8333639679148988
-12122  -74.3060129873226742    42.5410832669799248
-17122  -76.8712884999999915    40.2497806249999996
-64118  -94.572103977031702     39.2141255628863377
-37931  -84.1140838175340662    35.9736593422207065
-50223  -94.0192905619468036    42.1667436539823157
-25088  -81.2192589831528124    38.3766216979542136
-96732  -156.47430737784714     20.8803345664428051
-37174  -86.9035393092938762    35.7292925757831625
-77014  -95.4664106160661419    29.9783775307025131
-99507  -149.797583475985249    61.1464723405113943
-76525  -98.1387636313537683    31.4758109514342088
-95116  -121.851652381911563    37.3510722671810456
-61420  -90.8673332958789643    40.551680312004045
-48386  -83.4700364550490121    42.6425860945946411
-74431  -95.9441587166246137    35.4582417821158629
-70234  -90.3181747777777844    29.4772648888888895
-24432  -79.4192219437634606    38.1718272840663744
-33708  -82.795961943728301     27.8126411890729166
-57779  -103.751233854460239    44.5575934307512824
-04239  -70.2112515045137684    44.5276023606892792
-50171  -92.5302327223844117    41.590984048768405
-40965  -83.7159777836976531    36.6218830207650754
-26762  -112.611752250000009    37.4798837499999991
-70052  -90.6931863746439006    30.0550626965811816
-75903  -94.7148950857142751    31.4265633428571434
-22651  -69.9787319999999937    41.8616811999999996
-29212  -81.188288161896935     34.0785609827735243
-95053  -121.933772166666685    37.3458873333333372
-53215  -87.9445919468135457    42.998998799747767
-42025  -88.339774688342743     36.8622781301660751
-68973  -98.5634692905230878    40.4576032897914359
-58544  -100.314397839641387    46.5016225806772994
-80128  -105.081418846023908    39.5781181900958003
-25175  -81.30856552380952      38.0623670000000089
-20369  -82.0101105999999902    34.8844150000000042
-34445  -82.4314978441558281    28.9679304545454421
-65546  -91.2638520625000069    37.8235761875000023
-85027  -112.105921049416793    33.7043339937775457
-70091  -89.3631145374280038    29.2742993339731044
-67645  -99.8230978215223388    39.6290454295712635
-75236  -96.9212050056347181    32.6866060745773765
-62837  -88.3683179447322544    38.3825634745250852
-45033  -84.7638358018868132    39.1767561603773586
-74066  -96.1248851372061779    35.9948951770111023
-17241  -77.4068514986225154    40.1862716703205294
-78726  -97.8354585926348221    30.4336450502426317
-12574  -73.9501277942028565    41.9171606521739193
-53932  -89.0416785877763886    43.3870909141742729
-90010  -118.309840711864453    34.0616437175141158
-42445  -87.8645616314031628    37.1211701804825864
-54011  -92.4821483430545612    44.7344080844206147
-12065  -73.7834916548390822    42.8521478312569783
-16051  -80.1444202976051656    40.9474952381051054
-94020  -122.25171673843461     37.2939163562365437
-05642  -69.9919393333333346    41.8449126666666658
-08831  -74.4332919239665785    40.3307764582481738
-32240  -83.4253780000000091    30.4603584999999981
-42041  -88.8447614090690223    36.5394411274706528
-94051  -110.386503062499983    40.3770184999999984
-64449  -94.9774985975310244    40.0387101074074039
-57244  -97.234014703703707     44.4146836296296357
-99326  -118.901285352963114    46.662991332836441
-15690  -79.5546398954536187    40.6288576194344415
-99736  -162.728810166666705    66.0772996333333253
-83352  -114.424465802750277    43.0081239591749593
-54929  -88.7578432338384431    44.6256822984848611
-12401  -74.0338172198412536    41.9337483181433157
-77568  -94.9786501887614065    29.3680134994064019
-12804  -73.6790879860369046    43.3346112750901611
-43750  -81.5050990000000155    39.9947997672413891
-30250  -84.3180493783784044    33.4351390945945894
-77493  -95.8160235958327036    29.8112891595589176
-30733  -85.0429262377704305    34.4151949869551643
-56060  -94.4271286333332114    43.9248753099999973
-29342  -81.6320039999999949    34.900580000000005
-05360  -72.8847421423317456    43.0380188013975911
-43558  -83.896095858550197     41.5826925229683582
-46351  -83.5039330000000035    38.1016095833333353
-95858  -119.78485114285715     37.7580803428571485
-56726  -96.1938744084266943    48.7007662057423829
-47012  -85.0012345760637231    39.4078235957647323
-80249  -104.749588302168107    39.7876330529609064
-68874  -99.4265650307101225    41.6507062591170794
-07846  -74.8713205348837363    40.9679093023255803
-80216  -104.960417673097481    39.7826668213812482
-39826  -84.3547614717948733    31.8205620192308025
-97884  -118.210800428240745    44.479233265046318
-29812  -81.3638970590205304    33.2216116678451954
-95354  -120.973326999851778    37.6425447009804159
-06409  -72.4168330824175683    41.3465927513736347
-12503  -73.5855427570640757    42.035173277798151
-76621  -97.0945751290321937    31.8717203526881825
-76148  -97.2504392855280884    32.8676453780388869
-56146  -96.0951849722221993    43.5755489166666621
-84329  -113.376712496855347    41.8018250849056514
-66938  -97.4159756107560071    39.5509862300319242
-83403  -111.662643666666668    43.4476766666666663
-32323  -84.5947995217390911    29.8827146956521759
-52652  -91.4550035344827563    41.1365407241379373
-62023  -89.7844117857142834    39.1099373928571481
-71428  -93.0862344545454619    31.6118210681818148
-71075  -93.4635712173346604    32.9975202089469519
-98301  -114.85964366666667     39.2031456666666642
-45890  -83.4918210298825727    40.9706884866595473
-76035  -97.613914793400383     32.5569081323529659
-95008  -121.95709140594731     37.2798951725450394
-41553  -82.1603487600253004    37.4887393660954658
-27846  -76.8865693581384448    35.7832680085239048
-55077  -93.0798806678077142    44.8207256535878287
-03887  -71.061836661953393     43.4777385958566143
-61016  -88.9652178780432621    42.2221979793813276
-07621  -73.9996532205056212    40.9238060158940655
-95051  -121.983637131890617    37.3473774447536897
-32124  -81.1164590814087632    29.1792216613741004
-31715  -84.5134508333333372    30.7394590000000001
-14555  -76.9861703870715672    43.2617194735202588
-62962  -89.3522325532995012    37.1004230253807279
-98030  -122.191570617798021    47.3693112245829653
-70037  -90.0068694503817568    29.8279259689071878
-62281  -89.8013064383075488    38.7136232076873412
-18302  -75.1223679707540697    41.0863409699117881
-36612  -88.1142018231779929    30.7555293572281769
-17106  -76.8773946666666603    40.2990754999999936
-38661  -89.5608880010631765    34.8936535720361576
-13461  -75.5980032321950546    43.0708409502438698
-15061  -80.2937400789210471    40.668124188460105
-94938  -122.704595717929564    38.0175333458364406
-85533  -109.281905359544453    33.0846382689635874
-63386  -90.2333363128518613    38.8736777800187667
-40452  -84.9574950000000086    37.6011429259259202
-72115  -94.2603321578947515    36.4317142105263088
-39671  -89.2541635000000042    30.3938879999999969
-10964  -73.9187379816346066    41.0109753865931594
-26342  -80.8566091877025173    39.0200061866235473
-28026  -80.5784770000000066    35.4093509999999938
-71249  -91.6138436250000012    31.9492825000000025
-04224  -70.4170340486449078    44.5733294511916185
-80726  -102.816011957474274    40.8772745995488904
-54655  -90.7819480312185476    43.3791673155479103
-00685  -66.9871388779821615    18.3403522058622883
-95608  -121.329713280645962    38.6288539925396037
-86502  -109.515823870967722    35.4105913763440938
-93603  -118.995419316463       36.6224024857474788
-90017  -118.264519722457734    34.0529489682203419
-15688  -79.5894984499367553    40.1720065044359629
-66097  -95.2383902701039489    39.3222783705271581
-60141  -87.8384694893616853    41.8584557021276638
-55276  -91.2624524000000008    41.5841789999999989
-85712  -110.887237187494435    32.2521830091927342
-20403  -77.0091699999999975    38.8998854999999963
-38021  -89.168600797101405     35.8712152463768206
-70802  -91.1709719217778201    30.4474330068237151
-94548  -121.655395422680442    37.9741570309277989
-74753  -96.5364001818181805    33.9075791818181855
-97067  -121.964334606562588    45.3372111448458881
-21136  -76.8073447557879092    39.4733015363416371
-28524  -76.4598980257510448    34.7993143369098661
-88083  -94.7102480000000213    38.7807704999999956
-78022  -98.1029598971282013    28.312821760218764
-99833  -132.952443737796358    56.7980682278010534
-97213  -122.600841505245455    45.5370225357855034
-22969  -78.6918302858135377    37.7999737790332659
-65665  -90.6106606000000028    39.753226600000005
-48449  -83.9427262713607263    42.9850490197784794
-49601  -85.4770610039619072    44.2331012268943482
-47452  -86.4319289704133524    38.6460236195215856
-75214  -96.7466163293095889    32.8284903937695276
-46311  -87.5096090352065801    41.4856542066145622
-79255  -101.044762671521113    34.3450186634304302
-84942  -108.786693999999997    41.6805595000000011
-81402  -108.374854428571439    38.2494342857142868
-00768  -66.8562884285714176    18.0306387142857218
-05466  -72.9236911037736206    44.3827464905660278
-30080  -84.5025381368453168    33.872074006405029
-36088  -85.7166988894110631    32.4160866866642081
-81036  -102.750810698832296    38.4471312980664379
-62474  -87.9955602455465566    39.4508588815599239
-29562  -79.0711341578947469    33.8964966842105326
-84027  -110.821414112771109    40.2030772106024088
-24325  -80.5980946463801757    36.806352122273168
-48375  -83.46121670837843      42.4627765986542514
-47167  -86.0861273741753195    38.6058457812010829
-91350  -118.491772671683833    34.4444014684985049
-73461  -96.4320702934909946    34.3606949597633147
-16140  -80.507238754385952     41.0962780526315967
-06243  -71.8080690717703334    41.8483025358851677
-62081  -90.2091387272727303    39.2616244545454549
-57767  -102.598309984433001    44.1592459992587223
-98303  -122.697488957386355    47.1601720790913177
-87197  -106.707591499999992    35.1163537500000018
-20695  -76.9800074275712092    38.5988231375638335
-38670  -90.2906895089946033    34.4444956317460651
-92084  -117.213440774181507    33.216117331382641
-47952  -87.2930004222313158    39.9728571628086442
-21835  -75.954913982716036     38.5416476641975478
-16849  -78.1260514609928833    40.9666350744680656
-36740  -87.8487428783876538    32.630180049339792
-60098  -88.439066154508339     42.318716939217687
-47567  -87.2991196175173911    38.4704107181328823
-14736  -79.7396128128897601    42.1221758711018737
-43740  -82.2165889539473511    39.9510859999999823
-26711  -78.4538187805542577    39.2905521679965446
-72366  -90.9310131311267469    34.5454032417259214
-07863  -74.9726003907561704    40.8127168004201266
-92126  -117.144069495910216    32.915292252014261
-02780  -71.1130372107098907    41.9064416511297111
-72727  -93.9410679026071875    35.9499010614101095
-63943  -90.8256520666666489    36.8523652461538447
-08213  -74.6021379999999965    39.5143752500000005
-46730  -85.1550928178873079    41.4575903132335952
-17954  -76.2608793783186059    40.6903302417034638
-02421  -71.2336602664776422    42.4372421223359595
-14481  -77.9094424175710145    42.7724885514211906
-63877  -89.8495935160391213    36.078557488981744
-01095  -72.4365459032654257    42.1273942868256412
-35405  -87.5267976881095109    33.1405559290842433
-80359  -104.750077818181808    39.7972448484848513
-14536  -78.0781717880968387    42.5420613943754233
-21866  -76.0237000860215204    37.9669880967741946
-97636  -120.537124175767957    42.6487220170648058
-93022  -119.295599198932663    34.403516836298941
-53405  -87.8243383212523128    42.7177082855024537
-41774  -83.1353970367944015    37.1593690871722586
-97258  -122.675573     45.5130105
-32907  -80.677824104059539     28.0154168367775931
-47368  -85.2015484910025123    40.1786899932518295
-04458  -68.5146623902439131    45.3903090975609729
-02554  -70.0961123743509518    41.2771868165452815
-20117  -77.7386763036646613    38.9948064870247251
-60629  -87.7106953456037957    41.7773886863100969
-17509  -76.0268094774693282    39.9186713631383441
-95713  -120.954962754088385    39.0800173426341573
-39178  -89.9312177999999847    33.5355091999999999
-48346  -83.4089291980741336    42.7221333931353016
-13138  -76.0217919069767447    42.895039662790694
-77580  -94.8620131829268871    29.8560512804877973
-21737  -77.0127206308838481    39.2592982451205543
-98108  -122.312039640886624    47.5466211696465351
-24598  -78.7805217353965475    36.6021191365771372
-71866  -94.3951311743026906    33.8751247373839064
-37868  -83.0809443076923202    36.0523974615384617
-40165  -85.6890308533378118    37.9983142697996072
-68790  -97.190795051282052     42.1622526849817021
-29933  -81.0381035357142707    32.9543227142857162
-31727  -83.3884581999999881    31.418564700000001
-95014  -122.049046290088455    37.3149712639018105
-37086  -86.5629499330083547    36.0156550717966013
-54727  -91.1652852520607553    44.9636369956459845
-83327  -114.791224233082829    43.3614114360902576
-04856  -69.1085721578551926    44.1753631513968443
-89179  -115.252654618689547    35.9922417142857682
-05346  -72.5252348352169207    43.0209309042895995
-25920  -81.3409926470588687    37.6903113613445413
-48073  -83.1664236989787895    42.5185473964374765
-68810  -98.4764858991149481    40.863847730383533
-84051  -110.405971340375544    40.39011455399055
-17033  -76.6409220585124871    40.2715498542382662
-42724  -86.0496921428566282    37.670074234687327
-46930  -85.5720317679557922    40.4103110000000072
-55420  -93.276651693548601     44.8360334407204206
-76526  -97.7880716470588283    31.391474235294119
-35074  -87.1140098416666859    33.2102295500000011
-71295  -91.7005221231787004    32.164135637295324
-82401  -107.987974775750857    44.0050862939240446
-85927  -109.466312484351789    34.0297389016393694
-85211  -111.844528999999994    33.4511460000000014
-62971  -89.3849955000000023    37.8671755833333421
-01937  -70.9828280952380908    42.5857827380952472
-42368  -86.7479111071216664    37.7238953925839482
-93626  -119.672727862227802    37.0369249067238542
-91701  -117.594794267481959    34.1353808226750814
-56297  -95.5475708474692595    44.6418151682626956
-68471  -97.7688663333333352    40.7465689999999938
-11797  -73.4707569861981824    40.815691330489301
-43114  -81.737219500000009     26.081078999999999
-04565  -69.8631560827586071    43.7755889551724096
-23454  -76.0263609658297241    36.834270519148788
-62818  -87.9668815041435579    38.3745249613259887
-44655  -81.7807295000000067    40.6000245000000035
-55942  -91.5600149999999928    43.7607619999999997
-51556  -96.0360935363443957    41.6410778666196393
-66751  -95.2980117564991502    37.9126531776429871
-23416  -75.5636628726287256    37.9334435880758605
-36553  -88.0708343008010388    31.2400221386829209
-06441  -72.5801603175455625    41.4672044063662923
-40390  -84.6691389790465081    37.8576908579925018
-14217  -78.8736375296023056    42.9701546258095135
-32417  -85.8424103999999915    30.6708162000000009
-28691  -81.7764840940171069    36.2007573076922995
-67151  -97.254540427048525     38.1333466262491996
-88201  -104.530248513149559    33.435080198246645
-04401  -68.8144348492907483    44.8350328890540979
-63546  -92.548873973432265     40.3163854198182392
-65081  -92.7809581982332361    38.6361073266878137
-97408  -123.070076476056755    44.1145817563518889
-60518  -88.9174382909762784    41.6001185115962855
-97065  -120.725190873180736    45.5885993596674126
-40299  -85.5427493378456916    38.1793218008867612
-37149  -86.1838451784115165    35.8096002154713204
-44092  -81.4671807866715199    41.6022403281419741
-35804  -86.5842077142857107    34.7260822857142912
-29727  -80.2712727347900881    34.7165363583975761
-70124  -90.1075167263367547    30.0096520072254407
-49045  -86.0018641200862106    42.1070004866351368
-55401  -93.2671886126855441    44.9832637462887988
-80305  -105.252966613119213    39.9798105943775255
-57748  -102.116960912854097    44.59885114923744
-18614  -76.4106726323350784    41.5128204804811958
-92618  -117.74554819884942     33.6692664199425948
-30256  -84.3234797353139243    33.0162736198514324
-12957  -74.5734903434944698    44.8494413256505098
-46051  -85.8445681776199336    40.0624426478686004
-16409  -79.6825055000000049    41.0916254999999992
-92275  -115.956921582642096    33.2958911301849696
-74965  -94.6028589698217246    35.9842774012345217
-14818  -76.8298062359466059    42.4421943305131322
-26034  -80.5544977059403635    40.5966712188118706
-95255  -120.514916025102281    38.4022832816815196
-71058  -93.1955458000000192    32.536196799999999
-39593  -86.3232381428571358    33.8333188571428565
-95035  -121.889046157618182    37.437207510198057
-33936  -81.6263110246290609    26.6034964480671441
-48732  -83.8172170622208768    43.6068573542721651
-99034  -117.747638977578688    47.8757639730941733
-60941  -88.0849316817339343    41.0430726494997558
-24343  -80.7022954771490504    36.7620209157994466
-83454  -111.955701823529481    43.5943975823529257
-15066  -80.2763702833811124    40.7440934316639769
-00785  -66.1029309999999981    18.0017967500000005
-40019  -85.1715838317129226    38.3697365325355761
-78316  -97.8197787999999946    27.4952102000000025
-39759  -88.8180754458383177    33.4445557226931527
-72327  -90.3258041119805881    35.2408810608068137
-16692  -78.7182215962003795    40.7559829934370654
-84717  -108.34325471428572     36.7334105714285712
-01119  -72.5112321728546334    42.1261430789281093
-37122  -86.5041813517351699    36.1927516220561429
-96701  -157.927739627240044    21.37900574014337
-39355  -88.650016020669355     32.0515325356670715
-28698  -81.740857266151238     36.329336318533251
-75929  -94.2094579291048859    31.2577476806409038
-61851  -88.440725795546669     39.9599882844130008
-11963  -72.318351255030862     40.9952684518824313
-17754  -76.8933877529883745    41.2855916354280765
-39886  -84.6106513748361238    31.7389183119265965
-48917  -84.6320579102668802    42.7353309268877055
-47021  -85.1585548928571541    38.9808169285714285
-89442  -119.299638518324699    39.6769450693717332
-30518  -84.0294657360709749    34.1208119318532184
-18618  -76.0437378327154221    41.3685223857177675
-14549  -78.0210904705882626    42.6993246862745224
-50158  -92.9125809912898717    42.0396852619225925
-76437  -99.0039310934256065    32.3634216997982165
-02041  -70.6494182499999965    42.078703499999996
-82423  -108.615390005076122    44.9709979137055598
-59339  -105.197057314533481    47.2372826472774463
-56375  -94.2731206712644365    45.6986509827585792
-19061  -75.4389391051315101    39.8323968411763261
-30536  -84.3850182753592435    34.6575668178115279
-52594  -92.6530463915969591    40.8338513957665512
-56655  -94.2281559332757581    46.9645307670395056
-25414  -77.8682745609760758    39.2684730820107504
-93270  -119.039492535627375    35.9545532292081589
-68460  -97.4336497819253253    40.892067427308433
-45387  -83.8904588461538196    39.7994948412487517
-44902  -82.5115952181233467    40.7589251941260287
-55005  -93.2300931807077973    45.3929368531431692
-77357  -95.1878931610879988    30.1634935994272126
-12859  -73.8879807280039103    43.1746370406812829
-54556  -90.2894999242173526    45.5457174349258054
-99572  -149.793522339672649    60.4879300237717459
-92124  -117.096831214056024    32.8231322765627311
-30809  -82.1507908036609535    33.553586848034783
-30054  -83.8787008632211268    33.6746676598435926
-12446  -74.3096698714878556    41.8089996026023343
-24879  -81.7647696142034306    37.3512991785028561
-95559  -123.806336823077118    40.2062166025640835
-71049  -93.9677410233777408    32.0051570397429472
-70466  -90.5001759075618963    30.5649752284788434
-95476  -122.472548017063133    38.2965767843914762
-79928  -106.206509783732642    31.6823684189567629
-88066  -108.272501250000005    32.7513500000000022
-70053  -90.0537746283605003    29.9131002326909332
-49534  -85.7686869968352283    42.980890712025257
-59739  -112.280668036092749    44.6437616488818279
-47112  -86.1287002916928373    38.2005208014208648
-13755  -74.9991967222727709    42.0579142024999726
-42603  -85.0058591181014407    36.7768307091611391
-75715  -94.2741854999999873    36.4760354999999947
-94128  -122.390355973214255    37.6286647767856905
-59010  -107.332574304545403    46.0650452318181678
-72711  -94.0660567142857218    36.4014447142857165
-16054  -79.6560304593024       41.1595354985465249
-58755  -103.596310504078247    48.5358740489396538
-09505  -71.7092237407407538    44.6720116296296368
-72519  -92.1598835851269058    36.1350355777022187
-50836  -94.5253481611669741    40.6199757450979888
-39503  -89.1205831156332664    30.4720847821102545
-68938  -98.1114125557538443    40.4188186752899412
-89834  -116.064609950617296    41.3237490000000136
-44281  -81.7316163213763787    41.0433700221404933
-03034  -71.3050689670008353    43.057767971386788
-11365  -73.7908687999999842    40.7393884999999969
-75570  -94.4424859861457691    33.4584073294849205
-71303  -92.5115370731972604    31.2965985485904525
-61760  -89.0442687067345702    40.8940990884886659
-22715  -78.1860689691418287    38.4126074705882914
-03238  -71.8903553162791127    43.9855691255813852
-96141  -120.157175995099593    39.0848158243942478
-07109  -74.1621666515625151    40.7956075182292324
-06752  -73.3606934197931082    41.5242627696208046
-12461  -74.2568039105627378    41.8998756101259175
-26005  -80.6522381000000053    40.0383481000000003
-18241  -76.1617970627706029    40.9440826601731587
-93226  -118.73569249355053     35.7208704643584483
-80825  -102.79334806163881     38.8061404205945948
-71456  -92.9957174274307476    31.6341559013621776
-21930  -75.8851874299516851    39.3661780579710125
-84528  -110.967544575288045    39.323926234406116
-57376  -97.9575365902140334    43.2151371223240943
-48817  -84.0688532628398661    43.0012116540785811
-77880  -96.1865408978078591    30.2864254634146306
-26763  -78.6903251799501504    39.4658990006226347
-38106  -90.0361199720136085    35.1018605839224165
-10112  -73.9793706666666679    40.7590418333333346
-19318  -75.8156708000000066    39.8507096000000018
-23183  -76.5463531250000102    37.3344853749999999
-09811  -120.369808999999989    47.7372925999999964
-70659  -93.2837931014131669    30.9178808262676412
-43111  -82.2432247202380893    39.501510809523829
-20677  -77.0375506085805313    38.505005021157892
-35119  -86.7699096097560982    33.6504367121951091
-39705  -88.4187130150560137    33.559162519352256
-15078  -80.3887183407709358    40.3589726004056928
-99363  -118.919645831541175    46.063385659498195
-28509  -76.8157210222222346    35.1460351333333278
-34609  -82.5112805756939451    28.4766709243060632
-88123  -103.128981746478885    33.7927033521127029
-08867  -74.965662542041926     40.5807869054662618
-13646  -75.6778560094425075    44.4353145961011293
-37642  -82.7202566215523944    36.5305311746351506
-86343  -112.352602843905998    34.2203057590876512
-60521  -87.9271650760410921    41.7968417220072368
-41651  -82.7572223759689933    37.4653037674418812
-60426  -87.6543544955876115    41.6123002224434089
-47024  -85.2036142181359963    39.48190712304622
-28079  -80.6239027837126088    35.0928972467266078
-16117  -80.2668669745538637    40.8605233567766675
-17084  -77.6085836165560181    40.6799209887005304
-29320  -81.9927263032257372    34.9576268752687724
-38374  -88.2392792647164015    35.5175341879607132
-81082  -104.528161148046053    37.1759342255810736
-45677  -82.7579109857142612    38.7944060714285541
-61230  -90.2137754058649932    41.7586918164046423
-75256  -96.9206258055555736    32.7113556944444426
-04965  -69.3654581059062707    44.8508446164291286
-74041  -96.0499290402047734    35.9427398603800867
-36564  -87.9187320519480693    30.4766453766233703
-61316  -89.1233524571428433    41.2627236142857186
-89102  -115.185254544135589    36.1467265213240623
-35978  -85.7315359866167626    34.6417281603422254
-27403  -79.8241041772671167    36.0650193737066758
-25856  -81.1619211408450809    37.6613438169014003
-95965  -121.566511725087111    39.5993831452043565
-21020  -76.819046437499992     39.5253608749999898
-13143  -76.7094855350525791    43.2313786966570817
-02163  -71.1201957500000077    42.3660422500000067
-73169  -97.6420944575100123    35.3854212213439396
-33769  -82.7123888571428552    27.8965021428571411
-13335  -75.2409468964392545    42.7016182400108946
-76140  -97.2797372538676939    32.6251814029927019
-82525  -106.792443599999999    41.2113973999999956
-95472  -122.854319641638355    38.3963030717337759
-62522  -89.0019060187287891    39.840320483331304
-28784  -82.3937469577464583    35.2325110422535204
-44047  -80.7468488681869445    41.7267860547906295
-99788  -143.721537333333345    66.6544083333333361
-29681  -82.2333473318623618    34.7777255354833983
-84784  -112.982806723028958    37.0060204211617929
-75119  -96.6093570219486821    32.334914732082666
-20687  -76.3469978929695259    38.0823704763904018
-23076  -76.3082895144664946    37.4796370461121313
-46234  -86.3240350016460241    39.8089446759542653
-67025  -97.7891819201511083    37.6472130168848267
-24877  -81.4214953076923109    37.4061026153846115
-31786  -84.154866619047624     31.9037777142857131
-31564  -82.4773305740740597    31.2305279444444324
-18016  -75.4121796666666597    40.6424776666666716
-23071  -76.456055727434034     37.5431190365111931
-13217  -76.1216399999999993    43.0516149999999982
-19711  -75.7370683659685682    39.7110445470000855
-07645  -74.043079518422573     41.0520793105929798
-54941  -88.9571303834772635    43.8428029889026121
-99840  -135.312469614876079    59.4628217619834629
-12033  -73.7032602935507697    42.5399578685172912
-23430  -76.6421520352467809    36.985492653556264
-64150  -94.6208403338541757    39.1766484874999392
-20354  -82.3844793749999837    34.4735203749999997
-35870  -85.0817533333333387    32.4719026666666721
-76164  -97.3573227447418361    32.7828156427660957
-72945  -94.3455960017825959    35.102885071301273
-37650  -82.4335206597360894    36.1220714454875704
-76832  -98.7218347215958545    30.983596954032997
-68935  -97.9645740525362214    40.3731318922100826
-30053  -85.7245671999999956    32.0278127999999995
-73086  -96.9891932728527451    34.5011393165541804
-56156  -96.2131245172189153    43.6573255514900396
-12492  -74.3514003360151605    42.2066117316611553
-48842  -84.5309888988978315    42.6401767154021698
-39354  -88.836745308985428     32.8802132288009687
-85287  -112.537969357142856    33.6915223571428584
-19405  -75.3405562537416245    40.1033243346938733
-18430  -75.4804530142857288    41.7422205142857123
-61778  -89.1021949249770842    40.2391513449222629
-80304  -105.285511000000284    40.0430191016103407
-46561  -86.0766466241152131    41.673951450581427
-44515  -80.7520270098581534    41.095751194334305
-24607  -82.2771205700267814    37.2978657814451182
-06075  -72.2948476666666551    41.9870478333333423
-37412  -85.2378830192552641    34.9972160189156369
-42102  -86.3357889999999912    37.0375453333333411
-88036  -108.012818370786519    32.7836543595505532
-29423  -80.0704199999999986    32.9773870000000002
-41729  -83.218295062294942     37.2642683191256694
-36348  -85.8591765000000038    31.0526514999999996
-50065  -93.7832314761409833    40.6089189875518812
-41085  -84.391091129330249     39.0345019491916716
-25418  -87.2707245     41.1445219999999949
-24465  -79.6123395378297971    38.3859191598518734
-52310  -91.1924488685612289    42.2238829319521614
-27343  -79.1043507223592286    36.4976679100136678
-37415  -85.2844457507871709    35.1186276830997741
-12548  -74.1023824372843194    41.660789369390109
-58581  -99.818078558901675     46.0594736997342764
-95338  -119.91385769087195     37.479849626558817
-98317  -108.749332800000005    35.6212896999999984
-66543  -95.6099180921199547    38.6501112408435006
-71609  -93.9956295000000068    32.9672330000000002
-39346  -89.0966203409640656    32.9693758777219941
-58377  -98.8150800464546393    48.4543862349410759
-16844  -77.9343902044144698    40.8955895563500889
-39067  -89.4597245464720459    33.1091040725060779
-28480  -77.7973443646372971    34.212426087435297
-74735  -95.2589282893450786    34.048848308895387
-20852  -77.1249336267907921    39.0486720194948447
-38369  -88.9698916785837355    36.1277716675058755
-07722  -74.1831244418953446    40.3073495043078864
-68131  -95.9633708771297336    41.2647405432503334
-71909  -92.9698076228965107    34.648837359678673
-69357  -103.79592082183575     41.9257476448964894
-43304  -84.3508965000000046    30.4429890000000007
-04757  -68.1355744586050491    46.6819502558955648
-07206  -74.1907350299800612    40.6530142238507537
-16423  -80.342283036490727     42.0208494588509183
-42643  -84.618732499999993     36.740097200000001
-49098  -86.2535467089463452    42.1869635765155877
-61377  -89.0350998109119871    41.0553838525614694
-47115  -86.2242307428247585    38.3360335865776989
-63501  -92.5921239821219757    40.1813938598914788
-12737  -74.804529414893409     41.4799198034131749
-12107  -74.1215393999999748    42.6663345846153774
-97054  -122.924841935859149    45.9502463674959571
-24054  -79.7141475313745929    36.6650880108580495
-72826  -93.7057324913793082    35.1261142327586384
-58030  -96.7222026339110243    46.0408321358382722
-24588  -79.1090537085487568    37.2696781605892014
-72555  -91.8788172580927096    35.7835422143482376
-99621  -161.436937888888878    60.8113427777777673
-66849  -96.5965762925086437    38.8536968632581221
-41647  -82.7236590081670471    37.438616642014523
-15958  -78.7364685062330665    40.389153868523465
-66517  -96.710552935765179     39.1159587478192421
-08324  -74.9910250398010163    39.2261003631840879
-78232  -98.4705227311161337    29.5848880883151182
-60640  -87.6649925334836411    41.9720064168547538
-38004  -89.7734544924671525    35.4222467726815253
-17532  -76.2920559953897879    39.8612896057079951
-40121  -85.9648228426633807    37.8959672115906798
-68764  -98.2356971625487319    42.3839166501950686
-23086  -77.0659179464137054    37.687471885737672
-25833  -81.1056398947368535    37.7224407894736871
-19974  -75.050742249999999     38.4531102499999946
-98930  -119.914818009504387    46.2561869696905816
-94566  -121.867967663575925    37.658865643587383
-62215  -89.6145502904149396    38.526789538626609
-84743  -112.196696097014922    38.2132795447761069
-56071  -93.5700642337328787    44.5366432866427573
-72812  -93.0329710689655229    35.3922123793103438
-30539  -84.472014756000064     34.6738257639999929
-46565  -85.5859533850119334    41.6916791266719713
-15616  -79.5530391555555809    40.2230085111111322
-46950  -86.3674898491171064    40.88098869823434
-56129  -96.0025501850917351    43.5227851004422988
-76849  -99.7700106348876545    30.4727268143311285
-82832  -106.79269593901374     44.598853524650977
-44223  -81.5176157505061525    41.155424448790427
-63109  -90.2951410718976177    38.5860088001831372
-92504  -117.402290039494758    33.9153912458927422
-75050  -97.0148342857887371    32.7668891812128962
-77643  -93.8666051999999951    29.9669392999999999
-70463  -89.9291394374999697    30.6574110451388897
-78716  -97.6163723333333309    30.168491333333332
-32408  -85.7561986659285225    30.1595048551985805
-84650  -112.635679769230762    39.294099769230769
-24019  -79.9467394135002252    37.3418395940794099
-93307  -118.974398343807906    35.3174344166298155
-12745  -75.0188362700296523    41.7839065637982046
-68731  -96.4495405445990315    42.4144792995090398
-68763  -98.6424097515955793    42.4805245506765488
-34591  -80.4730400999999915    27.5568266999999985
-82055  -106.146798706241455    41.3152904328359085
-20037  -77.0505648150491425    38.9015593326302209
-76483  -99.1772249930435947    33.1637037960869776
-61941  -88.0782171666666898    39.8005895555555398
-61526  -89.6160808158175541    40.9188332383327378
-50843  -94.88611385480948      41.2504183266787336
-76429  -98.6558164383859975    32.7742953097055505
-29719  -83.2479098999999962    35.4738574
-36201  -85.8646455651350635    33.6580944613757396
-32250  -81.4057623436983562    30.282944374685318
-34758  -81.4813917590437171    28.1896137264160842
-62283  -89.2088094615384648    38.6933603076923092
-16433  -80.1432586103660469    41.7317641703094822
-18445  -75.3518850698346796    41.2946464426071955
-46350  -86.7352545925803753    41.6226207147112675
-58212  -98.0449913738258658    47.680846939799892
-47926  -86.596896465245834     40.7860818537705612
-42365  -86.9983693561644031    37.1135172602739942
-12020  -73.8466376620345244    43.0083279209892169
-77904  -97.0122708495686368    28.874901537104595
-56357  -93.7988714404944659    45.6953196603553735
-57634  -101.837878591176704    45.8170409509804912
-90732  -118.31191728251757     33.73841219500504
-20751  -76.5513718333332633    38.7846733902222667
-57427  -98.3119728780336999    45.4864528195396005
-39372  -102.485209999999981    33.4484374000000031
-87064  -106.582040086274446    36.1902162274509891
-46103  -86.6137616551724108    39.6892989913793244
-75925  -95.0606718163327287    31.6256453226402385
-35661  -87.6053609041941428    34.7633633871026078
-67879  -101.763567422978795    38.5046308212766135
-37665  -82.573252487817129     36.5789597603181704
-26074  -80.5947692377622928    40.1686160699300743
-86832  -106.86881266666667     33.9091349999999991
-23551  -76.3018604000000096    36.9253249499999896
-51639  -95.4751019702774499    40.7189753830911911
-99226  -114.732925999999992    33.4305229999999938
-99629  -149.660541494565166    61.6063245054347846
-49265  -84.1630807094016262    42.0226566740480507
-08029  -75.067238040572974     39.8406625155130811
-15774  -79.3317754259611263    40.6619608136104773
-25864  -81.0158318571429987    37.8912809599999889
-91504  -118.329789816417943    34.203230181529733
-37694  -82.2738569442502552    36.3793217296478133
-85709  -110.984340500000002    32.1759670769230794
-74724  -94.8418198620689594    34.3578504137931091
-20319  -77.0173723000000052    38.8670325666666656
-13411  -75.3114302815651087    42.6352051322281227
-35130  -87.1212728495990092    33.6497953063458439
-22185  -77.3059604999999976    38.8766487500000011
-68785  -96.7167362582677299    42.4242230677165253
-41095  -84.8285417370765487    38.7871472957728898
-40309  -85.8559815000000128    43.6817534999999992
-98106  -122.355122524170525    47.5369417072844627
-64763  -93.6944691284758306    38.1407244466737225
-20903  -76.982486027831257     39.0168082888677006
-63833  -89.720232300970892     36.6483463106795782
-73773  -97.9005140140844077    36.2784236909692908
-56293  -95.2600256482718066    44.4131192849259406
-07428  -74.5400488227848399    41.1911853670886003
-79353  -102.576277409836067    33.7822373879781495
-20634  -76.4933280728877776    38.2548865071879263
-06708  -73.0665963556172358    41.5537311225907615
-88431  -104.33271897959186     35.2553924693877505
-56502  -95.8184160967742002    46.7823319354838674
-02346  -70.8831049828894635    41.8869809544338594
-73834  -99.6226213567251477    36.8369485497076568
-31740  -84.8042630705128175    31.779104249999989
-11764  -72.9915444459430063    40.9450301663454326
-24801  -81.5734253952170292    37.4324266079294858
-38626  -90.4055313688081412    34.5247712468055781
-85354  -112.914737373980941    33.4296610830111973
-16125  -80.3722172320283335    41.4015666945695173
-31077  -83.181696863745799     31.9620217250842558
-68413  -96.0076045632654314    40.84531848104956
-27896  -77.9528703783916797    35.7716414381459558
-14005  -78.2452007331099821    42.9172355170295603
-74556  -96.2156767234042007    34.4708515106382904
-78521  -97.4553933461103412    25.9386018662536273
-00682  -67.1493149033515664    18.2177499869145656
-71941  -92.9745581802734762    34.2747813727374222
-62620  -90.1655330000000106    39.1527790000000024
-55398  -93.5829503179840287    45.4554224233334736
-29813  -81.2659157511521784    33.2646421474654446
-57448  -99.4154372750902269    45.6160406830324447
-02458  -71.1882326712873947    42.353165647293963
-28802  -82.6680809999999866    35.6219749375000063
-17254  -77.5863629999999915    39.9695150294117596
-48808  -84.4518573826727277    42.810880231848472
-04957  -69.8362762313932848    44.709644681755023
-74825  -96.4310120372528701    34.8474108529316808
-99709  -147.931707176320629    64.8584776129404759
-72669  -92.8826722248061998    36.0715459534883749
-97914  -116.990674559817606    44.0590255327266789
-67156  -96.9795785917130644    37.2429307416205262
-01950  -70.8889466799780195    42.8137270247138844
-13203  -76.1353977019430346    43.0608884353037951
-71835  -93.4424765377212339    33.6773661629929393
-24882  -81.750455830449809     37.621307323529436
-17056  -77.354355599999991     40.5350687142857211
-24816  -81.7025982999999911    37.4595950999999943
-32317  -84.1328225374656711    30.4664905878748584
-87016  -106.138046975923359    34.780437451709922
-53338  -98.6540774999999996    48.5376295000000013
-99201  -117.434183251965393    47.6626070561294597
-95024  -121.453195909090894    36.8989111818181783
-78838  -99.7203166753926382    29.5322283154450034
-85633  -111.540285428571465    31.575093428571428
-46406  -87.4072851772216097    41.5895107677902232
-43547  -83.8725330575539516    41.4910393237410133
-36260  -85.9956834223991251    33.5891993920893341
-42728  -85.2880925724809487    37.1009577668907298
-43030  -82.4152087567567833    39.960721797297289
-59012  -106.547069300403038    45.3088389012096542
-19022  -75.3399872339657435    39.8648668166214861
-86342  -111.773022364741635    34.6397866352583677
-88434  -103.281335607640187    35.1264514203989009
-41360  -83.6365383778014859    37.7727018527214469
-17554  -76.4269677757919084    40.0416107860818116
-47387  -85.2910417592941741    39.8369013377441874
-29843  -81.2143803774834652    33.2034952387187232
-80518  -105.535771199999999    40.3397015999999979
-64117  -94.5275698301163914    39.1668852929716138
-34695  -82.6959624907090927    28.0072074521523078
-95958  -121.818826342465769    39.5526897808219218
-47522  -86.8999293289473798    38.8949766710526106
-40806  -83.3147902019387629    36.8734167302099891
-28603  -81.2860360322580675    35.6751013225806375
-92338  -116.297324617720534    34.8780690100035713
-84312  -112.153312078513594    41.7640329497065821
-88004  -106.797890159090926    32.2104980000000012
-81503  -108.550490183571625    39.0368281244056874
-30344  -84.4585179672799597    33.675456932028446
-10453  -73.9119050007835625    40.8521199083071735
-14102  -78.5549260076923304    42.8351996128204746
-94109  -122.420014774034087    37.7930883984725909
-95110  -121.898412643680629    37.3359451672200819
-44693  -81.1859023855421782    40.302575746987948
-15445  -79.6813411797574389    39.8796518767561281
-20721  -76.7932084560555381    38.9197317079545826
-57035  -97.0733997071879173    43.6234430395629005
-23305  -75.961036923076918     37.3658219999999943
-56488  -94.1046821999999992    46.7354078000000044
-24878  -81.6421152582781815    37.4247187947019953
-01201  -73.258061110587434     42.4535669081787006
-00790  -101.992947500000014    33.9950355000000002
-38781  -90.7494586266666659    33.9074462400000129
-44202  -81.3509820371631776    41.3188989179875463
-44632  -81.32304122917499      40.9622800927412882
-15438  -79.8364173589639705    40.0854532869283844
-76301  -98.4883824169236135    33.9035566507000681
-20017  -76.9914582294146754    38.9388991770832931
-86247  -110.744863500000008    35.0240200000000002
-27840  -77.2127601733102722    35.942940996533828
-98688  -150.103855399999986    61.7132267999999939
-10541  -73.7505014773794869    41.3756947308997312
-67416  -97.5950295232045164    38.6784140439667183
-29137  -81.3154192911348019    33.6089184893616917
-33927  -82.2161949523809596    26.9328071428571469
-33079  -80.181499294117657     26.3194964117647032
-43961  -80.6273019096045118    40.5194188305084921
-83122  -110.948058836170247    42.8056533765957425
-81633  -108.401981119047605    40.3900055158730424
-32331  -83.6412857951074784    30.4699115297957732
-60560  -88.4368993391835119    41.6381215560304412
-39455  -89.4692168911483918    31.0142217215059084
-16220  -79.2711344444444705    41.4042978666666741
-83536  -116.002316255675666    46.2274751729921078
-46616  -86.2651513978979807    41.6946390788288781
-07076  -74.3752794612278194    40.6366073147010596
-74388  -94.7554168333333138    36.2655559999999966
-43976  -80.9058799848483261    40.3605610323426021
-01949  -71.015356140524446     42.5993604554874779
-50662  -91.9293091473188326    42.6846984339175606
-62980  -88.7066595000000007    37.8673689999999965
-58888  -101.244414212765946    47.7176644042553164
-99006  -117.476737126426613    47.9503633371877314
-12009  -74.0302822056110585    42.6995245964408667
-74935  -94.909739804123717     34.9501984793814415
-55068  -93.1299253681737582    44.7393675799001329
-22152  -77.2326104639331419    38.7735707887728083
-67530  -98.7865090859087616    38.3709126258288293
-00862  -75.2162307692307763    39.7492177692307678
-22641  -78.3876853813038537    39.0744935362854022
-61331  -89.2784382857142447    41.7486045714285652
-66712  -94.7098448623228393    37.5501943348442282
-35906  -86.0722126462897705    33.933090524557123
-13439  -74.9986752756576323    42.8444592246002571
-41819  -83.0820472772047509    36.9862403832081768
-62242  -89.9445686977716434    38.0950193569438369
-15783  -79.3566489084507225    40.5995428169014119
-76428  -97.3011125000000021    32.9204584999999952
-97870  -117.203320466265211    44.78352778875513
-66050  -95.4334938869622533    39.0253076631342495
-23888  -76.974989033333415     36.9571622416667509
-92131  -117.081933166102871    32.9181991909683092
-62252  -89.2935331363636351    38.6051942727272674
-23438  -76.6994599577588474    36.5820777097701892
-86936  -109.395411692307704    34.4993043076923129
-22206  -77.0904673992989444    38.8425675810190469
-12932  -73.5933738379662969    44.2212417779809499
-52570  -92.151019675028607     40.6926275890535436
-27340  -79.3307282950819541    35.943019508196727
-23934  -78.6260706895022849    37.1749008685995364
-33677  -82.6819339999999983    28.058479333333338
-04628  -67.2237948822778151    44.8992647747920159
-38644  -90.4720821428571469    34.4383648896103836
-17021  -77.6579529851887855    40.3475287634805539
-36453  -86.1435335349176796    31.1992691394882051
-58023  -97.098484692307693     46.0971864999999923
-29006  -81.5602174947025844    33.8942535827136737
-60457  -87.8298934637616924    41.7258002510004502
-42087  -89.0136705792902632    36.9786074006903789
-13086  -75.0280798636363784    42.3950284545454537
-63624  -90.6306980383610323    37.7553463130352469
-19436  -75.2516077241379122    40.2015450689655154
-49782  -85.5439534022842167    45.6883335619288999
-07068  -74.3030994316888354    40.8209937609107882
-83227  -114.479969798165143    44.2335227477064308
-12428  -74.4359893971328859    41.7309218238179582
-28163  -80.4270959690817477    35.2115057428472298
-05035  -72.6869344671666369    43.6071233612815021
-58532  -100.114817553571427    46.8533380436508438
-95050  -121.953875729729575    37.3487793086552031
-04416  -68.7616622541255822    44.61449406353141
-78883  -99.3313055708435826    29.6892907526617478
-38046  -89.2458647309090622    35.0532697345454523
-54765  -91.6862725000000012    45.1671280000000053
-52577  -92.6528473260166976    41.2828690001871905
-68761  -97.9648895536480921    42.0543145922746646
-61563  -90.0525302037036681    40.4922974753086322
-40145  -86.3210175368565729    37.6355767955493619
-28673  -80.9973668745906679    35.5989037365406062
-27512  -78.7982114342105149    35.7831467894736832
-13338  -75.1251082884438972    43.474905174352422
-27954  -75.6800977474380829    35.9106226571306735
-05770  -73.3169263509699647    43.8932161103553113
-98852  -120.706686000000005    48.3413062580645061
-80301  -105.212016930277287    40.0482545448356575
-66485  -94.3859104999999943    36.5926019999999994
-92009  -117.248679520964075    33.0942748660420989
-71324  -91.698609333333323     32.0948429999999973
-67822  -99.9004942857142879    40.3449697142857175
-23601  -76.4597541800990257    37.0614035864662625
-97864  -119.421654399881135    44.8024231521094194
-15312  -80.4364097558603959    40.2503435518038017
-14033  -78.6772747483870205    42.6506619064516741
-57037  -97.1638666889443243    43.1027009438322253
-94568  -121.913883184447101    37.7135296979316337
-11724  -73.4523704249411082    40.8658657703530324
-15821  -78.3497168225685954    41.3433383129176448
-29906  -80.7549753217708854    32.4422440207536766
-79098  -102.209464257826752    35.1209841123388529
-68526  -96.5932539997236717    40.7450321144278931
-77442  -96.4395370146677919    29.456936734253663
-51018  -95.6719420886793301    42.4563511754716814
-41844  -82.8701861720000323    37.3341252685714124
-97627  -121.947317853721586    42.1268965883495525
-11932  -72.3041211515025708    40.9374175404841125
-29379  -81.5993478785556903    34.7079095135337354
-90069  -118.380899803482421    34.096751988814006
-67223  -97.4947198000000554    37.7336503942307573
-68644  -97.6830002125306009    41.6991152088451926
-97906  -117.621375699567125    43.8376285913419537
-25151  -81.2063859999999949    38.9446396000000021
-62434  -88.3224247639620614    38.8448397397260052
-46979  -86.2682009426183356    40.4283458050138549
-15847  -79.0426700909090698    41.0905619288537736
-27804  -77.838693547938874     35.9787230004175314
-84044  -112.084524193631012    40.7002146273306593
-93591  -117.827484338461787    34.5947452108717499
-47619  -87.3034961936494796    38.1983450980007433
-12312  -73.6374046000000106    42.4760899999999992
-44136  -81.8138923584226632    41.3101212620805569
-73016  -97.6737549614074965    35.7955822854710419
-11205  -73.9638669756367904    40.6937781926910276
-45217  -84.4974258735848025    39.1639205264151329
-16410  -80.3163882702531708    41.9218963208860771
-75160  -96.295795141655077     32.7548731764585881
-23426  -75.6641600251256676    37.9257072412060268
-57076  -97.3662339378587234    43.984095671801505
-57534  -99.6706957605821344    43.5988693055555672
-28478  -78.0254966805480734    34.6504169446574082
-43033  -82.5973953162791048    39.9600709674418511
-60605  -87.6257700166482181    41.8697829384017837
-32559  -87.2816583661972203    30.3566006478873263
-15906  -78.9334456008947285    40.3556381843041834
-71221  -91.4721284999999966    32.5987955000000014
-07821  -74.7456220027154359    40.9694809178965258
-30739  -85.2200722999696296    34.8053674456820303
-03801  -70.7818323748137033    43.0679936653422644
-25704  -82.5090656434233267    38.3654443711289659
-45172  -83.388429692307696     39.073569175824197
-17970  -76.1897002602002686    40.718399759045532
-67490  -98.4290213830127243    38.7916152424449834
-72482  -91.369461501320373     36.2828118758886404
-65722  -92.776944354796214     37.5833700477441468
-83633  -115.207349307557138    42.976579512302294
-20706  -76.8539269014766973    38.9665071604031112
-45371  -84.1685039708441565    39.9387387608096205
-27972  -75.4684532354987425    35.5528186415312959
-40996  -83.855993666666663     36.8385780000000054
-93108  -119.62754991688989     34.4387241253743355
-44439  -80.9548923214285736    41.4591691071428414
-37640  -81.9793150569438467    36.3367909245353786
-04076  -70.8442734641445355    43.5506101656062086
-70744  -90.6593769485211709    30.5189325757119647
-70070  -90.357644623360116     29.9107697680000157
-01549  -71.8830220000000111    42.2107729047619031
-97348  -123.130180129339095    44.3864450195968701
-27985  -76.4664494999999818    36.2174464250000057
-33703  -82.6288236314515956    27.81727896700475
-72416  -90.7803729394837688    35.941209262950224
-61051  -89.7537857578466287    41.9778023905839603
-55014  -93.1333380919464133    45.156237487820917
-16038  -79.9538579299702832    41.1577823212114282
-17064  -76.4719568279773512    40.2474770047259085
-67474  -98.6945485216345162    39.5627404783653986
-33548  -82.4768247955760359    28.1362371758829859
-41351  -83.6053358524590209    37.3341422786885246
-31411  -81.0472118075755787    31.9307624160302268
-05906  -71.7069930090525673    44.4665526517895557
-32703  -81.4940034852958775    28.6607608667615992
-37128  -86.4561556790293082    35.8140898729780872
-21645  -75.9685148557238534    39.3265761892147694
-39426  -89.6635881454389221    30.6430082000061574
-41571  -82.455604259530233     37.630267786569128
-03741  -72.0323151194957205    43.6671208339509889
-07874  -74.7067035747578103    40.9233350445315622
-85326  -112.556296046666446    33.3858816180229923
-06037  -72.7715781655257956    41.6164529310164042
-32360  -84.7839318275862155    30.3257078103448272
-83451  -111.646084852380923    43.880169406349161
-66426  -96.5084485000000001    39.4394058749999985
-43358  -83.5309446274812615    40.412208463604486
-37079  -87.6706023577230837    36.4881548763535193
-73019  -97.4424435294117757    35.2048846470588117
-18066  -75.7364163615114165    40.6576822995563134
-57433  -98.3202689100601077    45.6317992307145701
-29033  -81.0671625592094642    33.9618957326482018
-38135  -89.850717767901557     35.2350118010684739
-50241  -93.7294533846153826    41.3068345897435805
-75674  -87.7112186666666531    34.7061114999999987
-63050  -90.5732967051068272    38.2623545389091362
-02474  -71.1586895684494039    42.4217739184280731
-49449  -86.3914900761433984    43.8011628123914676
-08026  -74.9686736227141637    39.8358940875842009
-14098  -78.3794387019889598    43.3411863206960675
-54173  -88.0369857948516454    44.6370436003961331
-59829  -114.19461430561762     45.9063895540363802
-08089  -74.8637922749858546    39.7244392879729133
-68463  -96.1374524484445914    40.8714394715135754
-78577  -98.1866161528100889    26.180734919951469
-72114  -92.2650012924301564    34.7648134955961865
-04983  -70.2197782164904254    44.832720322310557
-96246  -120.475854833333315    38.2715294999999927
-31067  -82.9273307999999929    32.8944227724137974
-54166  -88.5997573762970489    44.7774728208627621
-29105  -81.5933273240197678    33.810759803515154
-62897  -88.9009903487260686    38.0869418105095932
-40865  -83.2108540158371852    36.9117389524887116
-31543  -81.8366262673853271    31.3070743026772931
-27299  -80.3828997958491556    35.7573790755561731
-28788  -83.2273461818181488    35.3395128424242344
-48743  -83.8718806995709087    44.4376337768240433
-48843  -83.9029082811113369    42.5842322984191171
-75077  -97.0625192297660817    33.0776915693889322
-67134  -98.6780395548871923    37.488790039097772
-50626  -92.1677401955054165    42.5742307022471422
-41181  -82.9009968242074535    38.2054096772334191
-37740  -84.4174913333333308    36.0311846666666682
-36574  -87.474412752070549     30.5123233136645347
-13327  -75.3117562676087999    43.9342173945748939
-43927  -80.9387718253968131    40.1229204285714331
-59207  -106.274930526315799    47.7550514210526416
-45069  -84.40766210110516      39.3452009238107436
-70452  -89.7746155581109804    30.3999407133850035
-56239  -95.9123701307690766    44.5065696419580519
-43859  -83.7832681249999922    40.6908570000000012
-78946  -96.7849526690501847    30.1579670231693129
-53235  -87.8739822876481327    42.9705943570220867
-84783  -113.672561813936724    37.2999785790230405
-02549  -70.4911856521739111    41.3696967826086919
-46218  -86.1011399830198343    39.8058417855897702
-54202  -87.1315361592672417    45.0679218222479605
-47232  -85.7937494022564806    39.1139379826427316
-02493  -71.2974101012191142    42.3596713273137837
-33771  -82.7544118072232919    27.9098447395905289
-37159  -90.9305525000000046    32.7948042499999985
-03031  -71.6043987318563211    42.8611982003270242
-90058  -118.218864209661263    34.0018000463358305
-10464  -73.7908340239999774    40.8544040672000079
-48847  -84.5901083389948525    43.2752823203815495
-55060  -93.2225583669327449    44.0769456304455431
-86051  -111.823741499999997    35.225514000000004
-25113  -81.0404636398306053    38.5471210544328073
-21770  -77.2502322963200214    39.3492995819883546
-36856  -84.9980924146019703    32.2776267954059719
-05515  -72.9022224999999935    43.1134850000000043
-41645  -82.8010292978361804    37.5325586190205343
-15583  -79.642176500000005     40.1296409999999995
-65603  -93.8452098295454959    37.5501744659090875
-17038  -76.5075344558956658    40.4377181572236992
-99347  -117.57428314474889     46.4874177688876742
-48953  -80.6513084444444388    40.3473439999999997
-43204  -83.0808551931393566    39.9570509292873695
-34436  -82.2886548378457121    28.7364104851043578
-15691  -79.6870859561403506    40.2943368859648956
-92010  -117.299005384789936    33.1616015329750837
-60558  -87.9000797604041821    41.8025552271107657
-70644  -92.9464281614173302    30.7866091824147041
-19341  -75.6424195248149402    40.0427296662092118
-17603  -76.3453381664552779    40.025613083117797
-57064  -96.8556902040298127    43.4541925590023013
-66205  -94.6320880329833898    39.0309541486132616
-41141  -83.1494700307065102    38.5563135402618187
-66944  -97.2901980398089421    39.8518503662420329
-12054  -73.8487357414066281    42.6115541671189675
-22332  -77.0727436666666677    38.803295999999996
-05335  -73.1391569999999973    43.6723843333333335
-81120  -106.207282071451459    37.0960680283030584
-37416  -85.1778506707254195    35.0969563979177792
-88022  -108.187244037775983    32.7832836714184452
-73463  -97.4192732106317294    34.1532138285142892
-19310  -75.9725006957131797    39.9307199047786696
-69026  -100.42149860669457     40.0362406820083621
-53529  -89.5240534404190242    43.2372429496180288
-46127  -85.3193140536864973    39.7167934037222849
-55003  -92.7820921265738292    45.0171340430748614
-14822  -77.8363720358685782    42.4376544550562471
-76309  -98.5392714639769594    33.8935458487658821
-35214  -86.8919514737545029    33.5637097954039234
-66220  -94.8225413068182519    38.9591203223597304
-98671  -122.278056979809833    45.6073775239391992
-96964  -122.532071500000001    41.729728999999999
-68943  -97.8835456470588383    40.0239436078431439
-29144  -80.4984931176470582    33.9913725294117697
-92201  -116.234800238662729    33.7118695722047335
-06656  -72.6231129999999894    44.6708224999999999
-95425  -123.027252303229162    38.8018518181050851
-30137  -84.7612683247205325    34.1218998819833033
-26143  -81.4166408013653324    39.0770549290708757
-17321  -76.4431713246111997    39.7513233673973971
-18705  -75.8454861381580514    41.2698525324248422
-29388  -82.0498532993441358    34.7706085754355243
-02601  -70.299339715094078     41.6543714088205093
-13687  -74.8335993116499765    44.4865090242460326
-37318  -85.9994414825196287    35.1701892173228075
-33709  -82.7276690600446898    27.8164423069306537
-49270  -83.6880342276683962    41.8748181149794405
-29009  -80.3813339359566328    34.4402834343239164
-90003  -118.274622776540696    33.9626462146555497
-11236  -73.9034299321216821    40.6409560102244285
-31326  -81.2327506757168152    32.2900493994750661
-15536  -78.2153057821427495    39.9562514209821558
-28071  -80.327496811340211     35.5211077945507938
-41839  -82.8785308636123119    37.4139102290679162
-68117  -95.9983594232252955    41.2072178532819109
-15931  -78.7448428690609603    40.5128287549347519
-62510  -89.0603713126108687    39.5269592126999427
-75065  -97.030427938694487     33.1211892794737679
-14221  -78.7288756872863615    42.9829022042643771
-14057  -78.8690289186991436    42.6535525675247413
-94515  -122.598010792514231    38.5988257890455984
-65783  -92.9273641699669355    37.7249012310231464
-95468  -123.637863768222431    38.910790371803138
-76098  -97.5348142500000108    33.0018861249999986
-31801  -84.5953506903495622    32.5221610270770682
-17113  -76.8254822034460574    40.2343968193774089
-65773  -92.5356741778916501    36.7579934816983638
-43701  -82.0045003951827596    39.9529350207935323
-28024  -81.775859187500032     35.2256245781250001
-88417  -104.111068737373742    34.8857208181818308
-73443  -97.2798456343586082    34.1707666489593649
-19360  -75.7814008571428559    39.8419995714285733
-18439  -75.3502402338038451    41.8241978675352044
-98055  -122.204333157987946    47.4532720509728421
-41076  -84.4420360826278937    39.0198763182693114
-44021  -81.1576191776409814    41.4537513211747424
-45345  -84.3920127794596198    39.7390315699021173
-35504  -87.1853695800157737    33.887927960779713
-83407  -112.032676666666688    43.5374123333333287
-77581  -95.2671242055027818    29.5610064357014153
-68824  -98.5944027421874978    40.9986147199707744
-91744  -117.937313173682469    34.0294297512142805
-12733  -74.6397397130124034    41.7054374206773844
-22433  -77.8661977256281688    38.3501284643216565
-10968  -73.9183016603773098    41.0407448301886717
-67561  -98.1031446850292781    38.1167376665585138
-24850  -81.8594648792452659    37.3315139433962315
-30078  -84.0208501425033063    33.8621711597512345
-71055  -93.2815333016175856    32.6562274362439098
-04444  -68.9094059440137698    44.7345543337285108
-87936  -107.26828105612239     32.7520410102040742
-56556  -95.8914310007892823    47.6527466621941471
-34421  -82.1611096249999946    29.0827071874999987
-12430  -74.5194021974231475    42.1817550338211262
-24943  -80.7186156099584906    37.8368209792531189
-80643  -104.504469760498296    40.0793427829181397
-06444  -72.9351627465564718    41.5661662286501183
-17257  -77.5066081457099045    40.0545565239564354
-75488  -96.0167193854197905    33.7645676389707319
-67230  -97.1712826421523772    37.6888415208771335
-83462  -113.872189071239092    45.2923594442477651
-66408  -95.9746557246834584    39.9581897009493687
-27229  -79.7926508869154389    35.2614759606660613
-98033  -122.189130948456466    47.6785129207980418
-46379  -87.436268717391286     41.1668255688405509
-53090  -88.1760564680919572    43.4473003954008021
-36512  -88.0361322195122113    31.0121351463414676
-70345  -90.3275270158472097    29.5010582181310603
-65760  -92.2725133009377601    36.6143046598465318
-03461  -72.0098628084581094    42.748476595770839
-14558  -77.6785423636363532    42.8517948484848432
-28039  -80.4319777204300976    35.6820319139784985
-58733  -101.592038773786527    48.1788012582524914
-33302  -80.1478099166666738    26.1222077499999976
-34289  -82.1417339096085612    27.0825826049821963
-67733  -101.511154947213996    39.3382819941349311
-93407  -120.659556999999992    35.3074492500000048
-06282  -72.0736954663750851    41.9460975626024961
-27966  -75.8362087626794334    36.1309843282296725
-71969  -93.6348890851359812    34.6600522400558759
-04578  -69.6901268545783381    43.9744501652701132
-21543  -78.9552975043860101    39.6371827982456253
-84620  -111.93504482996326     38.9195753437499832
-50235  -94.2123220921052109    41.9251965489473335
-28017  -81.667929285714294     35.2374099142857062
-15055  -80.1241191362433796    40.305249416666733
-50039  -94.0018389270385768    41.8315804892703298
-17016  -76.3881298146610135    40.2683634591977864
-02829  -71.5956668571428452    41.8834144761904668
-04021  -70.2687137025216941    43.7988895787787982
-92705  -117.805679007332003    33.7628100058964336
-65631  -93.4362585119366003    37.0150944823398689
-59821  -114.081846877947456    47.1650077202038887
-78389  -97.7003033947915611    28.2330288781250331
-21727  -77.3379067059609611    39.6980233795775916
-35223  -86.740450229120782     33.4858238480931831
-85939  -110.094506517042504    34.4505205836392037
-71471  -92.9408471043478528    31.7486114217391417
-82331  -106.786787679306556    41.4406880715058819
-11844  -75.4942117857142847    41.3915747142857171
-25560  -81.9000457184507127    38.453961063678662
-57653  -102.286371464912278    45.6859000701754283
-67212  -97.4407076975688966    37.7026642636299485
-59256  -104.568097421052656    48.9070784013157862
-03233  -71.934839172011678     43.4222786384839665
-54728  -91.666988389378389     45.3091824750415597
-46077  -86.2835424917903708    39.9654566629994861
-07481  -74.1670319727463436    40.9986073284416719
-35986  -85.8403926146417575    34.5022167121883143
-65017  -92.4933828914395519    38.0869094107004287
-29736  -83.0923837692307785    35.1664802307692241
-67767  -101.369804999999999    39.7871620000000021
-44646  -81.4986826646688911    40.8168457134124267
-98849  -119.395660456466914    48.5280199742704639
-17210  -77.6480496052631679    40.1947801973683951
-93648  -119.530992705665682    36.6151957592067347
-62024  -90.0838305092003822    38.87815388464265
-01337  -72.5771378921698584    42.6906237172795926
-29442  -79.3998821666666714    33.4467519999999965
-52339  -92.5914618887626375    41.9460247100751005
-41650  -82.6822087159762589    37.3548313508030958
-68621  -96.623625161202142     41.4833206256830636
-23418  -75.7008559682171125    37.678467839534882
-98421  -122.410509792324916    47.2530023707675824
-08025  -75.1874042500000002    39.7006137500000023
-25549  -81.8635688181818182    38.2230929090909086
-71032  -93.8037107749447472    32.0925842901884621
-31094  -82.8215442592314162    33.1135954335593681
-39339  -89.0348275814199326    33.0929855847122809
-32139  -81.6127548488831565    29.39288463556721
-99686  -146.228446839233413    61.1077288861357388
-60637  -87.6035383278153574    41.7813166328898404
-62543  -89.1619286407232607    39.9619022012579279
-47119  -85.8836517228715479    38.3565634483940059
-44035  -82.1051014335056664    41.3714512251540825
-14623  -77.629065191941919     43.079916443579485
-04014  -70.4394165999999728    43.3725729466666579
-54104  -88.4140352693601699    45.4395839696969901
-70937  -102.515649400000001    34.1131161999999932
-97056  -122.918350558126349    45.7727695462842945
-20625  -76.8505057735471553    38.2635754869739415
-32779  -81.4195639643887858    28.7064178819197835
-45052  -84.7473940182469931    39.1511184983899057
-47512  -87.3193060753933565    38.7795256110750373
-71112  -93.6643817956626776    32.4756691261642843
-24226  -82.3293324697016828    37.1471837496591988
-44254  -82.0126979672561589    41.0404804341846798
-22973  -78.4675096764278379    38.3148263922985208
-96114  -120.4678915625 40.3078706874999995
-33618  -82.4979364729517357    28.0734560874723371
-45844  -84.2809291061997072    40.9224020446781012
-94602  -122.206580711722324    37.8046707936522921
-20712  -76.9651209146067998    38.9417133558052271
-90043  -118.338300819605891    33.989809363076354
-67137  -96.2355697327375452    37.6392090454915049
-19501  -76.0565047307691771    40.2419660339366771
-42633  -84.8348705107014496    36.8236311070629654
-80504  -105.027487934066428    40.1632651844939446
-68638  -97.9756600434781717    41.363619304347786
-83864  -116.503799690430313    48.3477162124140136
-48421  -83.3806353589510394    43.1540964766697712
-17406  -76.6514081709104005    40.0079143929736674
-14085  -78.9332121105975375    42.7187182350611252
-76649  -97.8789985386113415    31.9733760369889346
-50464  -93.0937039200000527    43.2491281158621348
-69350  -101.706162756803508    41.928980586566297
-76373  -99.1168667182891738    34.1431911047197332
-27829  -77.626973079687545     35.6930123846354661
-16352  -79.0628862557003202    41.7467543110749517
-82434  -108.332496275000125    44.4409815555555596
-16541  -80.0894045000000006    42.1278124999999974
-97012  -122.186424000000002    47.8522783333333379
-63036  -90.3615168353691303    37.9843438966271805
-43840  -81.601553653978641     40.4054367103225971
-18951  -75.3484740270693436    40.4485241608958077
-44306  -81.4886567251826932    41.0458101883055235
-22552  -77.2317638888889064    37.9907764444444425
-68455  -95.8995979184196301    40.8224059343252748
-21154  -76.3453358717097785    39.6520643433205109
-49009  -85.6849906246076358    42.2705167947122504
-68920  -99.3555615421487914    40.1121414685950626
-74667  -95.3249390384615367    35.8510526923076966
-75143  -96.2226030067130864    32.3525652882493446
-02647  -70.3053775656565421    41.6325041090909451
-85940  -109.739182028626118    34.2678922700381463
-67023  -96.656527296103917     37.3116341610389526
-04210  -70.247361898054308     44.0870519880419707
-64441  -94.2671447429245291    40.3901153443396126
-77951  -96.8967525219012487    28.6482519561975408
-58335  -99.0024318409091109    47.9841448454545372
-16663  -78.3673927777777806    40.7862379999999973
-76644  -97.3748666000000043    31.8622584000000089
-76087  -97.7639916910232785    32.6965608610100062
-91371  -118.571049499999987    34.1839795000000066
-48829  -85.0251410321429262    43.4035575334821999
-54618  -90.3377487951281921    43.9255193075250645
-58004  -97.2537749163722367    47.0166264687868889
-50138  -93.0990869730629242    41.301467817008664
-75069  -96.6044139883023405    33.1752818090445984
-23549  -76.0136221428571304    36.9254029999999958
-36312  -85.2453239717145266    31.170081849144438
-95699  -120.848675521428589    38.437472769047595
-43067  -83.4618915707105913    40.3521717264895727
-83443  -111.668578990046072    43.6029686738131943
-56460  -95.2651217272727138    47.2392144545454542
-65740  -93.160093560485393     36.7136037146325265
-68008  -96.1517163782293522    41.5189531746892442
-01431  -71.8179194674228398    42.6741407812199967
-38181  -81.6116627500000078    29.4943519999999992
-57378  -97.9637869999999964    43.2229434999999995
-05359  -72.716237834392885     43.1413225858231826
-97304  -123.087563054549662    44.9706626837070047
-75782  -95.5971496399999552    32.0884690000000035
-36966  -85.663829249999992     34.8027053750000022
-06013  -72.9527131321337521    41.7580992070773505
-17082  -77.4303237923965355    40.5039839192445825
-34230  -82.5317481666666737    27.3363805000000006
-59414  -111.254376451544459    47.5352792310968368
-62231  -89.3424841428362981    38.6347648257266627
-64136  -94.4001907257683541    39.0220664972418589
-33404  -80.0711733024951258    26.7818541898439726
-65534  -92.2860471347584053    37.7334301517967248
-97317  -122.935497539483919    44.900914727358554
-38333  -87.9898863766453445    36.097039936942565
-77982  -96.4303514310441727    28.4413948682299988
-20817  -77.1416188676196981    38.996084830173956
-68047  -96.7898593849912459    42.0966166903393102
-24657  -81.8648105238774946    37.2336243570919834
-43343  -83.9798343618593748    40.3079478688098263
-98264  -122.458314989348366    48.9414320639104332
-12783  -74.8315636610241768    41.7389507368758146
-49690  -85.4152100311821982    44.7788491729073854
-56317  -94.0915238333333264    45.897961500000001
-73043  -98.3780299014084392    35.729902126760571
-36750  -86.835281153360441     32.7770603068908812
-19009  -75.0665158688525054    40.1332841680327945
-27617  -78.7720153216772019    35.908071498258245
-34593  -80.3533490000000086    27.2174660000000017
-48001  -82.5602547101062072    42.627212408849033
-97621  -121.26359619266718     42.4663470726096577
-25606  -81.8284474392803673    37.763946433283337
-18342  -75.2648930743801827    41.1730293140495789
-75229  -96.855376744188149     32.8948274244498862
-12970  -74.2888395321101598    44.4518006422018672
-88006  -106.919422294117638    32.4765148627450912
-17932  -76.1818343333333274    40.7868103333333352
-73155  -97.575917000000004     35.4803979999999939
-90403  -118.490295306372715    34.0309628946079243
-46102  -86.6198505358850781    39.9953788612440277
-93035  -119.218503236117641    34.183763844125977
-66030  -94.9325736654436696    38.8164328703024353
-40828  -83.1729082397166053    36.8626588395533332
-68462  -96.5217498911722203    40.925262482951851
-75801  -95.6099966960454424    31.7456169183965144
-08504  -74.6997276000000028    40.4082093999999969
-97035  -122.724681050920793    45.4163149364214505
-57449  -98.1860959249649454    45.7237982377279621
-67112  -98.4157507511380771    37.4596927096611623
-81427  -107.680357908593365    38.0309773661740138
-20240  -77.0426147499999985    38.8936017499999949
-72176  -91.8879822601770826    34.9988805006882444
-98813  -119.639737620903773    48.0191828627119648
-51550  -95.8874794192139746    41.7025610698689704
-63134  -90.3402689062261288    38.7402914215946623
-25154  -81.7098094796163537    38.1198957434052659
-30064  -84.6160195039173857    33.9383974279333884
-45315  -84.3335204324906869    39.8545690893958522
-83824  -116.876276410301884    47.1048504236234891
-49718  -84.81301981252453      45.724054829745576
-14143  -78.0771839642501675    42.9762540764647554
-16214  -79.3616319053810741    41.1950292919499219
-16948  -77.7521181901363576    41.8732126376606004
-45891  -84.5759506144843556    40.8743400595498585
-64454  -94.6052440330422542    39.6105710877978936
-89145  -115.274972718250226    36.1670309669618248
-01921  -71.0111130593439697    42.6776127285787936
-72475  -90.9368956842105263    35.5644961368421022
-32947  -80.3518439999999998    27.4522868333333321
-67066  -98.7415188588235395    37.7461542794117406
-20901  -77.009974584476069     39.0205024135268914
-01104  -72.5727487820876433    42.1318725725424343
-92557  -117.250104591981682    33.9593207709338287
-83839  -116.245091015724284    47.5612667288276043
-98396  -122.040856987441103    47.1075169183673381
-63826  -89.8316496190476244    36.1805942063491912
-60131  -87.8735712357781722    41.935110624136513
-38851  -88.9766118338459648    33.903167186937651
-24381  -80.8463245291441552    36.7281676161044288
-92321  -117.168050846415497    34.2556473232384775
-28074  -81.8748071333333485    35.246745644444438
-37355  -86.0996936413287841    35.5079620843660564
-86476  -113.619700499999993    35.4574346000000062
-97381  -122.757993271599332    44.9910637857926687
-78959  -97.3095654794600904    29.7192549962832189
-30524  -84.1796669000000009    34.5694779999999966
-67146  -97.1091642194786147    37.3951579428440439
-49783  -84.3164565430743949    46.4434107688837727
-57324  -98.0450999006852442    44.3042630023973487
-29683  -82.489163335106312     35.0200682659574554
-26534  -79.9857989743589997    39.6422671135531175
-39347  -88.9272447837538067    32.0581625838647994
-06043  -72.4409039192884734    41.7659294071477944
-32501  -87.2228865009992802    30.4256004069177912
-43906  -80.7887677671253357    40.0129685618132314
-76379  -98.4743299739130862    33.6487432826087058
-24981  -80.7397355228136604    37.6359033384030255
-81331  -108.821829390191809    37.5722367558635071
-52750  -90.4001607127131308    41.9253076659329196
-40117  -86.1194354032848111    37.899324828467023
-68004  -96.6264631924458968    42.0054366366907033
-63366  -90.721042902289085     38.8175324944952038
-66713  -94.737376047941126     37.0244579701469974
-03266  -71.8549380667195834    43.7991666586575761
-34339  -89.1455160000000006    33.0606870000000015
-13633  -75.4918766768291789    44.4888481178861781
-22728  -77.6938039278620209    38.5807827583235294
-76653  -96.6195398388240392    31.296391221490115
-25005  -81.2663861331443798    38.5784724100567047
-36577  -87.9975027241379451    30.6799487241379225
-26187  -81.4502660352410857    39.3739948032698095
-82072  -105.559740142302743    41.3477879560033301
-70067  -90.1112909281482786    29.7234017770370436
-53811  -90.5191670837288882    42.5378382830509167
-78206  -98.4776886666666798    29.4126683333333325
-84014  -111.880266211317746    40.9273220858725963
-18067  -75.4835448675802496    40.7071793658912355
-07086  -74.0224098324382282    40.7682192438238502
-96024  -122.914209090445084    40.6326968455954827
-61299  -90.5416940000000068    41.5203297500000019
-47457  -86.9048870714285755    38.9117205000000013
-03766  -72.2350887273781694    43.637435448362794
-68025  -96.4926434915658433    41.4355529898502937
-25261  -81.0936665956677132    38.824758640794208
-39661  -91.0860818705288438    31.505314025780141
-62410  -87.7263548885601665    38.5320765512820742
-25438  -77.8602479772895748    39.3087108970625252
-05089  -72.444321130015993     43.4895220712815842
-13778  -75.7648161974647962    42.3406163562896012
-48441  -82.6764090045820836    43.8006581088201372
-98381  -124.35519484202662     48.2774564123200562
-81151  -105.858302550631137    37.2575943967230572
-58559  -100.738095679629012    47.4572573541729525
-17867  -76.6901105570776451    40.712821150684924
-04678  -68.3301700000000096    44.281480000000002
-34207  -82.5788227668082868    27.4396533460992806
-95391  -121.551530211475665    37.7739989331967294
-27555  -78.2040714905660366    35.5627203679245127
-44555  -80.6420246666666714    41.1018964999999952
-56044  -93.9296565793624296    44.560235569424087
-38837  -88.279230294117653     34.6663111764705931
-35085  -86.7397580439470062    32.9637333347006845
-36456  -86.7691333810409731    31.5472070533722224
-80921  -104.814420479902594    39.0383954724590652
-02740  -70.9392981476888878    41.6359567303173819
-18256  -76.1446934784172811    40.9407082194244367
-18829  -76.1703962502178626    41.8343403596338348
-30677  -83.4104986302685916    33.8418317319593314
-87620  -112.730601849999999    37.9956199000000012
-49955  -88.6696145233645012    47.0401767258567176
-63456  -91.7307236840697868    39.6849599527443715
-12530  -73.6903286503067818    42.1987953312883519
-55665  -94.1600710000000021    46.9512725000000017
-12950  -73.555537871504086     44.2983863892667813
-61490  -90.2719392746574414    41.1914365165854761
-23030  -77.0859596751379001    37.3640863128545888
-60201  -87.6995301115072294    42.0567601672050699
-88325  -105.819094341852846    32.9350081492884499
-96135  -120.21442685087726     39.7939176315789425
-87564  -105.64290863001743     36.6024670296684036
-35646  -87.5385543875557772    34.6596625325675731
-93651  -119.51674423066622     37.0031814651319877
-64732  -94.5551672499999825    37.4093037499999994
-74146  -95.8533040515749377    36.1048445091727572
-67671  -99.1455172432173271    38.8611031013802801
-38198  -89.7567541111110927    34.3383993333333422
-15027  -80.2343746834646225    40.66431815354332
-67054  -99.2962655125229219    37.5982364098961739
-78248  -98.5257870004247849    29.5908219770749632
-67549  -97.9428253333333174    38.3352299999999957
-11949  -72.7929864830710187    40.8480904420046613
-78042  -98.8616685555555392    28.1217477222222207
-77586  -95.0370772297986264    29.5758494110429737
-37658  -82.1758494879072856    36.2558606368107874
-37382  -85.990923749999979     35.5575111249999978
-46913  -86.4860703231016856    40.5028110866989408
-04347  -69.8037750474012171    44.2873606694387192
-51240  -96.4524700340401608    43.3092081962653808
-96726  -155.879334666666665    19.4546623333333315
-28448  -78.3083086078430881    34.4758150458750379
-15122  -79.8968754237722436    40.3648099154533355
-15064  -80.1495277032520477    40.3542937540650399
-89004  -115.47502497452227     36.0414563354564947
-70121  -90.1606933688780572    29.9625593265022445
-37147  -87.6549206523297784    35.6880139032258015
-21464  -75.7013633333333473    37.7090114444444495
-01094  -72.1442240913241903    42.3598023881278536
-98260  -122.446291370468373    48.0338755676599547
-19734  -75.6673963044433293    39.39281102483762
-21539  -79.0095901206706799    39.6024793213634112
-26266  -80.4936728427228871    38.4169564389671336
-38941  -90.3377858512238561    33.486901037193924
-75480  -95.1995308304452834    33.0328820448019371
-92867  -117.822246835377385    33.8161541631465852
-48890  -84.965061576857579     42.7709921588202704
-41075  -84.454027015173196     39.0796410785380459
-68701  -97.3780783692988905    42.0113129012812934
-56208  -96.0002302110249275    45.2262233819982313
-56091  -93.6914588978828533    43.9202575043586378
-72310  -89.7999352857142696    35.9156492857142808
-28033  -81.3242793022816812    35.4191607304698266
-81043  -102.218399372222223    38.1201571999999942
-61102  -89.138006026969137     42.2495752706874939
-51241  -96.4479287452342646    43.4502779347920765
-45040  -84.3150591066102777    39.3475535702141741
-73127  -97.6417343678411953    35.4823936532992263
-00642  -66.224817657142836     18.218517457142859
-04024  -70.6854379690000201    43.8338478690000031
-76439  -97.9256476000000049    32.6192247000000037
-63047  -90.4806603409090968    38.1982798295454486
-36789  -87.7468020000000024    31.8634205000000001
-60966  -87.5773087840909739    40.7600421067653613
-67049  -97.8488941379309978    37.1759414568965809
-65278  -92.4118983297872632    39.3415115000000029
-28774  -83.0120384408839556    35.1164838982054661
-06237  -72.3041149210373817    41.7004165359007644
-57766  -103.259208554033449    43.399052736681881
-33334  -80.1336865990170111    26.1828651955249647
-92108  -117.138352885613983    32.7756887796105971
-18847  -75.5746091795787152    41.9262749690866912
-92106  -117.230257639156349    32.7281540785039908
-75656  -94.6050222628844324    33.0153704317359242
-33443  -80.0929747142857025    26.3043882857142854
-17502  -76.6659522574655199    40.1033097017479534
-23072  -76.4850792382763842    37.2926586954472299
-57026  -96.5294852180283556    44.2108355141784557
-17370  -76.7750051718025901    40.1212495523882922
-47236  -85.7249642311321338    39.1524574292452741
-18045  -75.2672676996617582    40.6861712704168781
-54543  -89.5609345200000035    45.7411925199999914
-95257  -120.486659658291515    38.3759290093324594
-93605  -119.245132413978595    37.2044543844086348
-80435  -105.998642284113018    39.6151064585382642
-54115  -88.0749555226197884    44.4206407149487887
-10075  -73.9568245381817917    40.773473098181789
-98039  -122.231992747736356    47.6240502988356766
-51030  -96.198854873473266     42.4889137620908457
-31554  -82.6371741405345688    31.4894521193703802
-28047  -81.79836825000001      35.2557054999999977
-52656  -91.4509015741816995    40.7318700748750544
-04969  -69.2238852836938321    44.7642947271214311
-13861  -75.1270292121212435    42.4898103398268745
-12786  -74.8397968782239786    41.6554816892176731
-12752  -74.9911591504630195    41.6827722175925928
-72425  -90.7375329932704204    36.2015981754150005
-56666  -94.9004676753246912    48.0339878181818065
-56241  -95.5423474579651923    44.7993144945172546
-97634  -121.832557343042041    42.1071413527508227
-60452  -87.7554798365499522    41.6072294314434146
-49306  -85.5784889781091209    43.0749945434141779
-75780  -95.0860181208791033    31.9797768681318608
-24220  -82.2497617235508756    37.1674628470357789
-11518  -73.6679943999999693    40.6401588912620539
-23937  -78.532134629983176     36.9526390365448592
-53523  -89.0446965711755922    42.9849425494310537
-68835  -98.6148991236068184    41.3211789976359611
-97042  -122.544965417228312    45.2115372982379498
-54726  -91.0285952887595613    44.9992101782945326
-56389  -95.0841552258064411    45.7996755645161215
-68812  -99.2722248237937919    40.8854880433221481
-21678  -76.093483719241064     39.3069693960865578
-50122  -93.3060680768944053    42.3026997769878079
-03581  -71.1687675947446223    44.3944361876387532
-12958  -73.5751355669250131    44.9660144299741731
-11371  -73.8871634999999998    40.7684689999999961
-57012  -97.2610938667641136    43.5925827582543874
-71973  -94.3475487811240896    34.3050399076362424
-47469  -86.6101135161344331    38.6062057779119172
-20053  -77.0099479999999943    38.8831136666666666
-21144  -76.6898428334270221    39.1258401245415328
-23576  -81.558109999999985     38.3123578571428567
-54880  -92.0981612002563139    46.6643206630199501
-45875  -84.0590265125413083    41.0215152395383242
-88314  -105.858718227835979    33.1499281077216281
-62558  -89.5610398939549981    39.5966320447698195
-74047  -96.0141318128822547    35.8531474342224428
-98335  -122.614291237300179    47.3003660115957061
-76460  -98.5145040341393781    33.2880047155049326
-30828  -82.6501157289007296    33.3834758390069197
-16116  -80.4544336891721912    41.0377534757961939
-31034  -83.2333690138888755    33.0508074166666646
-05677  -72.7088562392778073    44.3819569056022871
-07728  -74.2746629301504981    40.2382108537121894
-13206  -76.1078523244781024    43.0699000290051259
-62301  -91.3777731500169921    39.929978541325184
-11417  -73.8477112222222161    40.6733204444444354
-84755  -112.712765972477115    37.2541913119265971
-20759  -76.9246730233159894    39.1562177746113562
-35123  -86.5496483333333373    33.5595816666666664
-32220  -81.8220595935811019    30.3304760413918473
-28545  -77.4552333750000059    34.7155766249999971
-03457  -72.1302900193370675    42.9995656756906897
-74540  -95.6943042459016766    34.5414295737704933
-07927  -74.4532368920703505    40.8224318406755202
-14228  -78.7922280079971955    43.0327217619954538
-16665  -78.4341201595330944    40.3914799610894519
-63901  -90.4394943228270023    36.7764369699460758
-42433  -87.2806434999999965    37.247738499999997
-77076  -95.3822394653539476    29.8590087156031636
-31739  -84.0640669166666754    31.1618912500000071
-38376  -88.3616039498326984    35.1095895183946141
-74036  -95.514193200762918     36.1537188682337245
-21791  -77.1882042874620851    39.5431380977203446
-29048  -80.3155082022853435    33.3929211018720764
-94951  -122.65264802823539     38.316318470117551
-71356  -92.0400185942228433    30.837033568088021
-65063  -92.084224901813343     38.7216739137549979
-47435  -86.2950109000000083    39.265960800000002
-83428  -111.208591251950111    43.3514976833073362
-85726  -111.067449909090911    32.1911620909090885
-76673  -96.8852353810693216    31.745416984634339
-95951  -122.016233857923567    39.7353738488160246
-75788  -94.9210688117646839    31.8263569117647158
-22940  -78.5900270476937379    38.219270705450711
-15858  -78.28609944444446      41.2891566666666634
-86912  -109.998419499999997    34.3925584999999998
-54775  -87.708223000000018     44.0740023333333397
-35051  -86.6148994601644517    33.2049545356258022
-60436  -88.1125338958730424    41.5060757694126465
-62565  -88.8027911063216635    39.413839912835364
-08609  -74.7384367189234951    40.2233088312686817
-19444  -75.2578252680009285    40.0882787241775489
-77326  -94.8213445061728493    30.5166531851851914
-35226  -86.8370708870317287    33.401652270040266
-24915  -79.7983282122093129    38.4524723546511424
-86047  -110.696412300738672    35.0315540178227707
-59053  -110.463585043935083    46.4603851585482701
-45861  -84.4203127383178327    41.0897503644859938
-99614  -164.037034199999994    59.9384778000000011
-65661  -93.8235989594410427    37.4532708972510591
-19432  -75.5720704166666621    40.0800593124999978
-98685  -122.688156331967477    45.7119021997807096
-98736  -122.811311500000002    47.8816355000000016
-06460  -73.045353619854879     41.216013030389469
-58654  -103.817927387744859    46.8171505419387302
-52359  -91.8135922203209134    41.3565993871657653
-18456  -75.3450331181102797    41.6166579268841161
-60189  -88.1077087144686288    41.8422262616694169
-80247  -104.877168636830035    39.6947501132867941
-24122  -79.696633729383251     37.415155340269024
-49970  -88.5954446929935955    46.5537520305732571
-11419  -73.8243061176470832    40.6892516470588248
-27981  -75.638421681189584     35.8433665110650139
-62953  -88.8432836441948268    37.2083589475655501
-40010  -85.4487586746639067    38.3725783291746581
-38930  -90.1478678259826154    33.5070793305226573
-38848  -88.2850943937722263    33.9450936714239546
-62031  -90.5276611109947851    39.1113372023665704
-71378  -91.7012456866039969    31.9607771848739972
-71029  -93.8258921239602159    32.8296865890182374
-50602  -92.7990808309261297    42.7439044885301485
-42759  -85.5185620322580462    36.8374727311827854
-13842  -74.723123465816272     42.3741831076532094
-42534  -84.4816640000000092    36.7134166666666673
-70718  -90.8623572500000023    30.196768500000001
-54603  -91.2496585687927677    43.8507010801296744
-79781  -101.817386418803437    30.7272453461538397
-15102  -80.0378639646821881    40.321976039217553
-97221  -122.726921757270389    45.4972559195326909
-83251  -113.695375679760005    43.9369186464713124
-54820  -91.5736843408009094    46.6118551233933118
-30322  -84.3244762320675108    33.7939417383966472
-70730  -91.0970231941480364    30.8158428421614516
-25678  -82.097168519832934     37.5995875782881086
-91188  -118.142203249999994    34.1496169999999992
-42274  -86.5970930909827672    36.9494870431763331
-57577  -101.677357353571466    43.5494772714285645
-61236  -90.3587901494253174    41.5166305517241341
-46184  -86.0878591484965483    39.558939318138961
-59856  -114.790705345678973    47.3862550895061858
-62339  -91.0443549959612852    40.1262051607431616
-62933  -89.0269200775755962    37.7750744084848833
-64457  -94.6951891182059171    40.1622704393767052
-16728  -78.9079239000000001    41.5711005999999941
-42357  -87.3332759791666717    37.6474680208333226
-21522  -79.2278315714285952    39.6057294258760422
-16667  -78.530464320936801     40.1760058530761128
-98448  -122.422862800000004    47.1368261999999945
-67455  -98.1439853553327737    39.032518892751888
-71999  -93.0559071428571372    34.1273026428571455
-99847  -119.503213408450705    48.5134697042253435
-37012  -86.0164124079222603    36.0726110012160817
-25119  -81.263263999999964     38.0502696023391849
-60617  -87.5569396664094199    41.7219842842117146
-28645  -81.5412945777667346    35.9461634742003113
-29921  -81.1843812478992248    32.6855531974790097
-61252  -90.135069436514442     41.8509120658683145
-78107  -97.5804329580924303    28.5370041228323821
-75765  -95.2215324966605294    32.6674863388990673
-30025  -83.7150425073947417    33.6403746952251055
-93280  -119.366490841511705    35.6035824018612459
-83262  -112.612921539338544    43.1315401033827897
-98136  -122.389285797456822    47.5363870908265511
-26582  -80.3734045247745996    39.5262415690363937
-30669  -83.104632573955314     33.6628395724076341
-07644  -74.082053486245357     40.877179052788108
-23188  -76.7622697350914649    37.318659864190181
-35764  -86.3156574189187751    34.7110030315315043
-96752  -159.718220826412391    21.9714176303607758
-03290  -71.105436491703955     43.1242304195417958
-64499  -94.4350397925311853    40.3944473817427578
-97377  -123.115024096990751    44.4610238784691489
-42044  -88.263489786362058     36.9490599390352941
-77745  -96.6781466666666773    29.4924769999999974
-75421  -95.7137115278711121    33.6512304217596281
-22709  -78.2183145928969594    38.3318048368956994
-03276  -71.5783266550101445    43.4383612839611999
-68715  -97.6004435365685055    41.9791772672292609
-32164  -81.2237992122268935    29.4986929683774903
-28722  -82.1542821529857576    35.2414408975504188
-71357  -91.2771687322191383    32.0922145542168877
-28516  -76.6292879255493347    34.7967872334154436
-27404  -79.69107249999999      36.0891055000000023
-01003  -72.5223112311827691    42.3911235698924997
-01347  -72.516469316129033     42.5564819677419237
-07457  -74.3112834913856943    40.9927343498127215
-77541  -95.3496297205644652    28.9824610735756849
-95684  -120.649653927123794    38.6086880572189131
-38637  -90.0509802241209769    34.9532426395786615
-67553  -99.3074908245613415    38.660299938596502
-66413  -95.8556071463814732    38.767689407483509
-17922  -76.1376170368235989    40.5948364192817905
-00780  -66.5470882771209347    18.0438934915166875
-93460  -120.065943739625084    34.6441708337025815
-30641  -83.5718287844110961    33.7697198761747259
-11415  -73.8307327954545372    40.7100902272727296
-20187  -77.7401088792758088    38.7344638568648776
-56080  -93.8552012896551986    44.0797536620689812
-08518  -74.8015595940592561    40.11679113321334
-28650  -81.1595405691005851    35.5711474913026535
-16943  -77.5910883283191168    41.8462413726965536
-68542  -96.7596246666666531    40.7846916666666672
-75977  -93.7885718491853595    31.0180529427813063
-74426  -95.529008475893022     35.4544148548588183
-19146  -75.1803525323268786    39.9392852601937136
-17768  -76.7369806555790461    41.5524462917893445
-14529  -77.6272672399999948    42.5390272799999991
-77971  -96.5415197299035128    28.8482030836012768
-35744  -85.9085319346371818    34.6109409583118435
-95148  -121.786710371984412    37.3310066781112653
-32714  -81.4117819625764412    28.6639595206471505
-65452  -92.261963724458198     37.9556341241962869
-38726  -90.9814342663317319    33.7651245100502706
-93463  -120.132839300864191    34.6075836340928049
-68431  -95.4421372847966012    40.0710215117772961
-92225  -114.607871660591314    33.6256306395003008
-59218  -104.489466971443008    48.1295416369199742
-38057  -89.3823179626284343    35.0644871946433412
-23603  -76.5745108679138866    37.1984686921769097
-17941  -76.6109493934923762    40.6793237010915263
-85711  -110.884892410603015    32.215369366605259
-56183  -95.4117912972503746    44.0371713007358636
-27409  -79.9355964910044037    36.0851567599356358
-01606  -71.7970507622335674    42.3135378311090804
-48836  -84.07902115061529      42.6585177873365566
-64631  -92.8780162175091419    39.8117107199157729
-24899  -81.7061125517241464    37.3222391379310352
-24350  -80.9957653757790865    36.8195351531612616
-53001  -87.9497571036036305    43.6208620945945711
-07955  -74.7220116666666598    40.7160559047619159
-13863  -75.9036594537190865    42.4427991206612134
-12571  -73.8242111245802448    42.0020867199744572
-16374  -79.8014135617803504    41.2644057600920959
-20194  -77.3449366465771533    38.9797046569143149
-07662  -74.0796150577096739    40.9082563940487134
-10172  -73.9750300000000038    40.7555754999999991
-53572  -89.7328489543408381    42.9798948552639146
-12176  -73.9628275207956705    42.3871630452079771
-15619  -79.5039859196428012    40.3173619910714294
-35593  -88.0783282118497368    34.350825192282592
-96737  -155.77672126415095     19.1057499433962263
-68954  -98.2318636693548513    40.6219647258064498
-00683  -67.0346303996102932    18.0848676291423303
-63738  -89.9566703928571485    37.0826265714285768
-95619  -120.811421152264387    38.6840922911148581
-83278  -114.881103167088469    44.1914539417721812
-75939  -94.7932469291676369    31.012617679942764
-85862  -95.3597565000000031    30.8826205000000016
-49078  -85.7190506845605711    42.4616295927111622
-29810  -81.3301065672420265    33.0080381220896513
-03237  -71.3955803178176751    43.4236719954954467
-19340  -75.671882999999994     39.8654633333333308
-75246  -96.773175396797086     32.7926416921707826
-47116  -86.6104431361896872    38.3321189758990002
-24070  -80.1908671569185003    37.3597969858284102
-15744  -79.0832349372196717    40.9221881300448302
-60713  -97.2815310000000011    40.7779090000000011
-85724  -110.945447181818182    32.2411812727272675
-18069  -75.6116033816909408    40.6239858619502101
-30337  -84.4609547215223557    33.64946822353253
-48059  -82.4877281669500064    43.0675954458922732
-28002  -80.1865763846153783    35.3289703846153813
-22810  -78.7769736126543876    38.8158218599537364
-31639  -83.2266435137576366    31.1960888352573171
-17249  -77.8956608843536884    40.2456347823129335
-47838  -87.3781991687410198    38.961087507670058
-25647  -81.9885463070175859    37.7892441432748711
-14897  -77.7791651459488094    42.0310925188726401
-28367  -79.7229448372093259    35.1676332732558308
-82710  -104.260803006584396    44.6890658814815183
-63958  -89.9707605294117627    37.0884759999999929
-17543  -76.2966555110527338    40.1624675158528817
-20880  -77.1742725320000034    39.1394996200000094
-98305  -124.29335219495546     48.0593314328562542
-63072  -90.8102062343908614    38.3678129226004927
-65716  -93.3717804999999998    37.4727664999999988
-42027  -88.6325260989096364    36.9164736675316476
-56218  -95.9345790687500539    44.8288158339286156
-24167  -80.7352399007907735    37.2459478758893141
-75210  -96.7472459127737352    32.7711291273722978
-62295  -90.3069192083794263    38.2918155838735217
-59913  -114.038869709764867    48.4268219303798162
-67149  -97.6168155571239993    37.5402656307896407
-25030  -81.2306049411491813    38.4546440254866084
-92883  -117.486693720338039    33.7750131786627605
-62711  -89.7263871107557804    39.7661671677329025
-46550  -85.9958516892350957    41.4530575029932251
-92555  -117.182527499148932    33.9223803722910873
-11755  -73.1160239317184306    40.8570845432525473
-28681  -81.2192790906572242    35.9076135073373877
-41649  -82.7662637371930998    37.5691797917550119
-25141  -81.0307939606879302    38.6332712162162437
-51647  -95.321220320754648     40.6060258777358385
-38034  -89.2451509441192599    35.9064991459248617
-81301  -107.814623599404726    37.3574769690421249
-96780  -155.213537630434786    19.9720393478260938
-77551  -94.8296414019682175    29.2787381137396743
-50634  -92.2142525236363042    42.4177309509091032
-71230  -91.5608368249999955    32.2439659499999962
-72941  -94.1624889442668547    35.3462834302500752
-93455  -120.429463179665362    34.8790691276708813
-53583  -89.6914199409808788    43.262230844275976
-36474  -86.6106562914607281    31.4149511656416003
-15522  -78.5385519048727474    39.9803039876147963
-61742  -89.2691532988980754    40.6273148264462662
-61425  -91.0531759239130878    40.7522430905797464
-74977  -94.8682725000000033    34.6763860000000008
-95419  -122.985113970674519    38.4491615527859523
-14212  -78.8200706314984529    42.8946135402650555
-67361  -96.2013647558619596    37.1085497620690248
-87544  -106.293516512971692    35.8838027501684991
-12726  -74.9858709213450965    41.697817794528298
-55975  -92.3882325737645971    43.691149123629927
-79309  -85.8066840000000042    43.7740836666666624
-03773  -72.1863142255478607    43.3566458238467618
-11730  -73.1842703661378806    40.7294443793000625
-75180  -96.6147387928629939    32.7187321526697303
-03113  -85.201068333333339     33.8569558333333305
-05069  -72.1471368343559192    44.1737385358762396
-55957  -92.2877765581551728    44.2606559445187315
-79109  -101.881099636273561    35.1688882095229616
-54722  -91.130131009868407     44.6825772212170733
-68818  -98.0089876056923544    40.8375076532898333
-61114  -89.0045219351802643    42.3074409019111854
-02338  -70.8541286048972836    41.9971500155634203
-49256  -84.2220233230884361    41.7470437899743558
-53817  -90.9729070769231072    42.9401323615384669
-59089  -107.398976047244062    45.0930761653543541
-72933  -94.0342484995993857    35.3223112540318027
-37863  -83.5635369669645058    35.7878745620759915
-19320  -75.8271333785713892    39.9801209697541751
-32816  -81.2151140925925858    28.6050707407407394
-68405  -97.0614459136816237    40.7618377166595423
-45734  -81.1903950079265684    39.6378806184866832
-36482  -87.6490414171881014    31.6332280175219367
-56231  -95.7644459037958313    45.2762027912303608
-43608  -83.5335916606871791    41.678912769838881
-60919  -88.2601714743876613    40.9915424988864245
-75409  -96.5263017118384425    33.3510083062808889
-03253  -71.5019213793960091    43.6346599710880767
-28320  -78.7830231834703056    34.5617448824705207
-63379  -90.9795731151415055    38.9914584704563225
-97431  -122.822848983934506    43.8987684362727322
-16922  -77.6773320432650962    41.6674981590331583
-54577  -89.8979645749999889    46.2029555749999901
-93023  -119.25643645669723     34.4715841686349123
-96095  -122.562148045454506    40.6344812575757572
-30147  -85.2029106824179792    34.1506878137465648
-12200  -73.7952204999999992    42.6588449999999995
-34208  -82.5248736311275906    27.4879357081048461
-12920  -74.0602042321519463    44.8968550716456676
-45897  -83.6516764698795043    40.8331008313253037
-15711  -78.9624444482109737    41.0016387288135533
-98558  -122.502948235294085    46.9405282205882415
-81603  -108.219347333333346    39.335290333333333
-55396  -94.3720347163568221    44.5485903352667663
-55758  -92.7303871258740884    47.512790818181827
-53830  -116.38730799999999     47.1237355000000022
-81654  -106.984435467948728    39.285440441794897
-09725  -85.5129190000000108    30.1294450000000005
-11530  -73.645274342580052     40.72628127953449
-27338  -79.7547739999999976    35.1508343333333286
-98923  -120.722052074886889    46.665713752098064
-93252  -119.389273917344326    34.913616202235815
-94133  -122.410081652389792    37.8008534535617926
-57702  -103.350130318738209    44.0490743523457411
-04030  -70.6962157572092735    43.5982220245638885
-61948  -88.1690473333333244    39.793024333333328
-30732  -84.6940245862069219    34.563844379310332
-49978  -85.6779310000000009    42.4500134000000031
-32691  -82.8867891428571255    29.7115767142857159
-60630  -87.7599012884933671    41.9710611836833536
-12150  -74.0469011860465969    42.8757936550387413
-19967  -75.1195591141869272    38.5396156585928722
-50652  -92.6912155212120723    42.2625292666666468
-18105  -75.493699333333339     40.6010153333333292
-60064  -87.8548039296621823    42.3254938259646423
-46322  -87.4591541211025145    41.5483834743744822
-37148  -86.5038758745762379    36.5729262523874183
-25387  -81.6649903676506881    38.3806232740580526
-97140  -122.859087095295124    45.3518544592810429
-97368  -123.927820293350692    45.0133050250164501
-32043  -81.7300210677223617    29.9925923562853036
-30028  -84.1804784289880956    34.2885087893900007
-92003  -117.201758204691387    33.2815015093040998
-63303  -90.5433831660426449    38.7544420512909369
-33994  -81.9509160000000065    26.5532233333333352
-87619  -105.622997285714277    36.7855598571428573
-52590  -93.1148759120929981    40.6757700427906812
-55322  -93.7875282272041488    44.7723606988574474
-05061  -72.5786456501670045    43.9352014271094049
-35023  -87.0527622480553589    33.4613238211879747
-80840  -104.860132617647039    38.9801090735294338
-03103  -71.4470524692856799    42.9618335315634283
-53205  -87.9340724367675364    43.0533906076496109
-74710  -85.7189570000000032    38.7331814285714273
-19076  -75.307547011734755     39.8849782903061154
-95224  -120.348883758509757    38.2201275317919738
-60511  -88.5738834428570954    41.7493861785714344
-47223  -85.4828036113525656    39.0540188115942613
-60631  -87.8097509418061293    41.9960754010826491
-39191  -90.4150327706728945    31.7071098206171413
-37723  -84.8431307128213632    35.9464965282895292
-30566  -83.8968367139926698    34.2377086294439508
-01519  -71.6843642819791427    42.2007513381590513
-44626  -81.3767143537975528    40.6966160397152379
-33173  -80.3594686824228575    25.7018941937704994
-73481  -97.5058702767213816    34.4317107954098702
-57218  -96.6157329667774292    44.658229405315609
-02464  -71.2209676427907254    42.3135058576744356
-97982  -96.4187074999999965    28.4466675000000002
-30414  -81.9721109696969563    32.1623844848484879
-79051  -102.252384709090919    36.4862542363636209
-45226  -84.4299752632704497    39.1174260815816552
-59940  -88.8621954999999843    44.1679050714285637
-37738  -83.4715020532610339    35.734134718643098
-77417  -95.9584120392473636    29.4870886586021399
-61545  -89.3529926001012313    40.8725601910796001
-80933  -104.917655249999996    39.122212999999995
-49075  -85.4501256511627787    41.9172900000000013
-10537  -73.8849626847612484    41.3377335055592425
-38455  -86.8835589433962667    35.0635671698113143
-75156  -96.1092467708333515    32.2857677169742985
-39609  -90.8402223749999962    31.6426385000000003
-98844  -119.26743817621346     48.9131741324663949
-87127  -106.944567285714257    36.099300428571425
-52253  -91.3661382237025634    41.8971092248128514
-66414  -95.6894449623476504    38.8256282491693838
-39739  -88.5616948990923305    33.2379059583554124
-11789  -72.9714805092004468    40.957362784543264
-78564  -99.1410042909091231    26.6332088363636572
-03601  -72.2986699375480555    43.2325312197377869
-77375  -95.5852645621720427    30.0885880419681335
-23176  -76.419036403521531     37.571773050623591
-95676  -121.729455346774301    38.8975543064516032
-16671  -78.4004959159090902    40.8007486272727391
-37273  -85.3674321666666742    33.594324499999999
-87735  -105.118796637362593    36.0574838571428629
-74079  -96.6656273383354687    35.7529591055935327
-16326  -79.4316207690742857    41.3579976378433543
-12115  -73.5833729979878939    42.4722271830985818
-30823  -82.4559787626524781    33.2112642219214322
-63045  -90.4597866422018626    38.7612898440366962
-75844  -95.447274617980014     31.4996957379916971
-41606  -82.7356211190964359    37.3386466067762157
-18352  -75.3608005604113345    41.008579071979419
-76261  -97.9401468745019343    33.8177915856573605
-99575  -158.138326333333339    61.8671916666666633
-50170  -93.1122137730403807    41.5312856939981216
-84747  -111.615665926875508    38.4343413950617929
-30453  -82.1158313931567818    32.0468774825694709
-26346  -81.0452555182013441    39.311115127408975
-85032  -112.0047768090582      33.6251632639104727
-52033  -90.9979470257612775    42.2826558109547932
-73841  -99.574089079625324     36.5713284309133613
-53135  -88.4055060000000026    42.9328014999999965
-20006  -77.0422856625955177    38.8980253923663497
-92562  -117.243103988528361    33.5654971350334748
-52358  -91.3257065317696686    41.686200997005983
-07033  -74.2935029832690645    40.6761241930501924
-31724  -84.8728585384615428    31.5265413076923053
-63016  -90.6424424003650557    38.3552611429995025
-28703  -83.587279594594591     35.2041048108108114
-79101  -101.841004213286723    35.2055383096903185
-06021  -73.0982943811852834    41.9971206760645472
-78595  -98.5612391170350151    26.283802823146921
-72088  -92.2710558484299668    35.5969597592049283
-32655  -82.5967997894736925    29.8299610000000008
-30347  -85.2152983333333367    34.463062833333332
-78347  -97.4727244166666793    27.5892863611111103
-59761  -113.531336286879181    45.6056426323202047
-51656  -95.1594704823529156    40.734444988235289
-39668  -90.7485248698082785    31.6736836022364265
-42149  -85.732603714285716     37.1106847499999972
-92833  -117.960907620380553    33.8793980489953341
-67154  -97.1222352825485302    37.9674863022159528
-95038  -121.58193      37.153655999999998
-64734  -94.578639232086644     38.6567169054266699
-50225  -93.2671335949868165    41.3775629034007935
-23131  -76.477904499999994     37.3182635000000005
-00934  -66.1250124077669597    18.41025643689321
-31605  -83.2511352300781624    30.9215580204275398
-08857  -74.3259436684218855    40.3913949217399875
-15108  -80.1876285561071143    40.5038195810032917
-15762  -78.8306997691353644    40.6016487410012914
-54801  -92.0090814379731086    45.8634986449865352
-47708  -87.5733988006135462    37.9738960245399042
-49499  -86.4307179999999988    43.8135235000000023
-89016  -115.024359500000003    36.0578210000000041
-43968  -80.6735455251195361    40.6290601127169708
-88230  -104.421273788415945    33.2373905845236521
-46725  -85.474739676892554     41.1712666391735809
-26167  -80.7324850889893924    39.5637615324283445
-81502  -108.54260450000001     39.048311499999997
-10931  -74.1693093819578877    41.1247776372360576
-14826  -77.4980132388701151    42.4911970562046761
-38241  -88.5950884889122818    36.420641826399148
-23504  -76.2666025639460941    36.8578432338961832
-17403  -76.710902092544444     39.938175695473042
-36432  -87.0478688416747985    31.2985126237584979
-66607  -95.6490174511681062    39.0424622816462943
-22318  -77.1610013333333313    38.8222909999999999
-01841  -71.1658738420865973    42.7108845088705564
-62011  -89.2120366794257933    39.1136249186602996
-50324  -93.7118235439189249    41.6060214245495388
-44417  -80.6659885603603328    41.4363047081081106
-62418  -88.9758110070093693    39.0206833523364622
-71753  -93.2086326289038709    33.2423719196304006
-31726  -84.3615929459459437    31.8285632702702692
-02454  -71.2456378235294068    42.3572802352941196
-07746  -74.2583870902847565    40.3136563215242916
-58213  -97.2424537999999927    48.1879491999999985
-93534  -118.150612917665441    34.6940406247859059
-29075  -81.3839758080255962    34.1940173682194981
-44491  -80.9741480384991235    41.3728765355749601
-40221  -85.7508401666666629    38.1888668333333356
-68063  -96.5037003473053829    41.7341320119760368
-20534  -77.0124100000000027    38.8938566666666645
-17340  -77.1070672082762627    39.7517921891485955
-18210  -75.5504720474332174    40.9965025195437391
-56520  -96.5730635893369538    46.2674697812087103
-79003  -100.101380497206691    35.6108513966480658
-94704  -122.259281082587322    37.8668871383238539
-40272  -85.8523673004698793    38.0960044751979439
-03784  -72.2950347761263998    43.6477085267069711
-25423  -77.7997826363636307    39.3125569090909082
-20011  -77.019778360214616     38.9528776172378883
-68510  -96.6471418264327866    40.8063216474522719
-10527  -73.7567699556451544    41.3105998205645051
-45242  -84.3554194815498875    39.2407233932058617
-41643  -82.8316719122806973    37.4617037684210388
-99517  -149.938030113838636    61.189711267698236
-07087  -74.0317715696290719    40.7677171347096774
-35025  -83.5805571428571454    34.8572509285714318
-46163  -85.906814917470939     39.7348218182030024
-26253  -79.8709727554180802    38.8281749715170221
-20734  -80.518897999999993     37.1244186666666636
-89835  -114.929709321003884    41.1123424029061866
-00717  -66.607711342412415     18.0137087821011619
-34797  -81.8215679121798019    28.7427913596445492
-78117  -97.952626289812045     28.9619587082096857
-24503  -79.2345430972228968    37.4474973425237962
-81222  -105.763594689979286    38.3644290668058616
-41143  -82.9559599034641479    38.3232879545815237
-28115  -80.7872691695435776    35.5806844242657689
-96721  -155.14081035000001     19.8518499999999989
-62903  -89.2694627774917109    37.6721532180626966
-68977  -99.621178294277982     40.0977177166212684
-71330  -92.242629522293015     31.1102717388535197
-24532  -78.7432267499999909    36.8915554999999955
-35041  -87.2267908749999776    32.9196586249999967
-49858  -87.6182575078189103    45.1206413675803546
-45617  -83.1571075192307632    39.2816890576923043
-48035  -82.9118648675031267    42.5574663311167072
-06001  -72.8656513692551187    41.7916780487200512
-15530  -78.9255137323574445    39.940264842156445
-24572  -79.1111592211076697    37.4644133839908022
-93202  -119.70906493077733     36.3119966911607719
-32403  -85.6312382644815955    30.0935372057927069
-48169  -83.9215142151926727    42.4557886765116663
-87835  -107.230521333333328    33.1905576666666704
-71942  -93.0063978985507163    34.2248597826086964
-23878  -77.0116656618751136    36.8204240819993487
-92059  -117.068539435597515    33.3870796450317187
-98424  -122.350791594771309    47.2350465470303362
-98201  -122.200069956288843    47.9865365251508464
-03818  -71.1568967529881604    43.9732090628076691
-27016  -80.2205812378965533    36.4462439415475359
-71831  -93.860575846774168     33.7911648897849304
-50853  -94.7700145588821954    41.247617500000068
-99778  -166.345989847826075    65.2594794565217455
-80108  -104.876795998631991    39.4485106341446397
-28347  -79.5556431616341087    35.0343672646536604
-97045  -122.555698896557018    45.3379644667446158
-15335  -80.0654591052631588    41.6315718421052665
-33175  -80.4115518345599298    25.7337811286437059
-97759  -121.546526794264494    44.3224016252907447
-35045  -86.6594001480424936    32.8197825462946966
-57051  -97.2928005717516271    44.2045094683256679
-30667  -83.1599665041194669    33.7805498156539059
-75222  -96.8948350000000005    32.9072469999999981
-37036  -87.2787251919918532    36.2330955480610299
-49037  -85.231281430551789     42.3371849726874387
-11234  -73.9205738390318885    40.6179906039078347
-45407  -84.2172792007041977    39.758536507042237
-11666  -78.5557385384615543    40.1780090769230753
-39532  -88.9448471736932618    30.4717586154473103
-40962  -83.7631240489089066    37.1683652269832621
-43101  -82.7464459413680373    39.4660142280130017
-13020  -76.0727744821428615    42.8182027678571444
-37060  -86.6353806079868178    35.7484619402174317
-54539  -89.5741618463016209    45.7969071934150449
-30215  -84.4614278510466363    33.4015239529644177
-37302  -85.0232150484634417    35.0142514138997853
-61440  -90.597050055456819     40.3155160792748219
-79789  -103.156066637019137    31.7533284687500235
-72742  -93.4956687309168473    36.0000120218435669
-13797  -76.0350733854299392    42.3385827477535202
-96754  -159.405871894305648    22.2068514606083838
-10460  -73.8798652516752838    40.8400359277735916
-21779  -77.657903137644098     39.4256038681177756
-01368  -72.1839275949120633    42.6787479559686673
-21076  -76.7206165146987189    39.1628607909380904
-74848  -96.383300203349151     35.0801272111778601
-61061  -89.3378283967766151    42.0093329344413391
-20143  -77.5671383119691598    38.8606863884170082
-18508  -75.6607405026332458    41.4413093197827891
-47523  -87.0189123761491459    38.1748399319673055
-51532  -95.1196335881367787    41.1407814232574154
-83202  -112.473553568502567    42.9325196751412292
-16323  -79.8339395919072814    41.4111207050744454
-92127  -117.119104339972822    33.014933318735487
-15059  -80.4785973288609711    40.667639943649327
-77707  -94.1759834943262746    30.0599592261192221
-47393  -84.9990190363572111    39.9611798488120797
-61953  -88.286696350974438     39.7969047225872572
-82939  -110.347389549976313    41.2575901217432204
-52550  -92.3473230753737084    41.3181920896685853
-48822  -84.7692448434277281    42.8272370394796482
-19453  -75.5025366341852191    40.1388438466453721
-98158  -122.301080435374146    47.4555972312925149
-35968  -85.7685353019849828    34.4913011705268531
-48233  -83.0641055000000108    42.3234300000000019
-56251  -94.9230908278844652    45.147216635096278
-76132  -97.4188330699919902    32.667795506263559
-78839  -99.8247520227426577    28.6874961982348786
-23421  -75.6293850926304287    37.7741868365228299
-72326  -90.8409498793676988    35.1125042011231159
-57471  -99.3388003282733791    45.4287733358633545
-50036  -93.8822103488569013    42.0731783401513368
-40353  -83.9412271195577091    38.0613933382969876
-75751  -95.8734805819879199    32.1692001980948845
-98288  -121.350508394834009    47.7127726949569251
-02482  -71.3015278625028657    42.2977452945406895
-40906  -83.8847921409915926    36.867141146336472
-12964  -73.61483903888886      44.1501376944444743
-61085  -90.0391033648090513    42.336245539295966
-70591  -92.833066336342597     30.242357088994094
-99216  -117.21711834826219     47.6668788711117912
-13801  -75.7792976556604003    42.5034207616683872
-50074  -94.0715363324697478    40.8572538108807635
-61740  -88.8628449893559775    40.8829946736423935
-46017  -85.6023016190476511    40.0892104308525603
-66307  -90.7619613333333319    38.5865603333333311
-37607  -86.8019871666666631    35.9347583333333276
-68727  -97.2094552892415891    42.5028538871252479
-22508  -77.7839905424416997    38.3238955953909439
-56437  -95.0413577073792339    46.2543051159578553
-93313  -119.055748153538701    35.2772800521529604
-73002  -97.7416360541871967    34.9502003990147259
-25510  -82.0656005264462607    38.4044306833056268
-71751  -92.7748416538173188    33.4109956361601874
-29848  -82.1473316119578527    33.9992803132474677
-27858  -77.327674704928441     35.568743527915565
-78841  -100.83921470588237     29.3557360588235277
-96779  -156.379433549458383    20.9134562859205673
-27021  -80.3437604039642821    36.3121280715458212
-12585  -73.7074967008263968    41.7234364504132387
-50041  -93.2353904239999736    42.6217268159999989
-68976  -99.7337123882174552    40.5828818670694602
-10463  -73.9071430954138293    40.8814917738535115
-49277  -84.4575293737769499    42.3855981643835449
-27252  -79.3553384010989902    35.5598586088267723
-02837  -71.1648598232983858    41.5122340948770585
-74963  -94.5408788126801056    34.4185995072046538
-81618  -76.0195523888889113    41.3813181666666594
-15547  -79.0695457897196405    40.1594236838006395
-38666  -89.9019541000311051    34.4189577319410276
-18246  -76.1909766060606302    40.9663318181818283
-36402  -87.5271656666666757    31.0194976666666662
-20201  -77.0159658333333397    38.8874818333333323
-23138  -76.3031348716486519    37.3658567564175215
-31304  -81.3742905999999948    31.5139116000000001
-87839  -108.307715444444455    33.8722481111111122
-04353  -69.6105719935831928    44.2051792924038196
-02071  -71.2727598403755991    42.1003258560250515
-43149  -82.5687083043146828    39.5405471341163661
-18057  -75.4700428750000043    40.8652736250000004
-73453  -97.2153945110663642    34.0490345352112556
-19041  -75.308747955092727     40.0121266879270863
-37314  -84.301406915789471     35.2508644315789539
-32190  -81.4991983021553779    29.3325032998459925
-50115  -94.5417447573783534    41.6827282891887307
-46624  -86.2525095999999962    41.7024660000000011
-58856  -103.750326267190616    48.5631177819253921
-99612  -162.299555058823529    55.0613331568627657
-34128  -86.2551906249999973    33.5287418750000015
-73554  -99.5080670633829385    34.8783957602137704
-57366  -98.0602845372468153    43.41016538307845
-26412  -80.6017413335599713    38.9110861217273012
-33321  -80.2681004927432298    26.2106976229733419
-20606  -76.7404947020202286    38.2515614663299317
-47359  -85.2776232075813994    40.5512377732359042
-22153  -77.23828836593961      38.7472071462771979
-62475  -88.0628902636625952    38.8814032368168299
-25019  -81.1118822798634369    38.3746184744027516
-60543  -88.3341641861644291    41.683386821417308
-61279  -90.7247516642617597    41.3225927162096554
-04779  -68.3124479123562764    47.1456097521551101
-94937  -122.876729572254106    38.0935000684007861
-01009  -72.3427643527606534    42.2102260582821813
-01106  -72.566719402780592     42.0513364766166831
-13303  -75.4605297367088355    43.3558197341772029
-86029  -110.032729975352055    34.9794335035211503
-38237  -88.840840120314283     36.3515140361216282
-16034  -79.7329808537686944    40.8606021359622105
-98616  -122.145848680000057    46.0599304478260976
-98378  -122.047917600000005    47.1093619999999973
-40892  -83.6995603333333378    36.96332533333333
-13454  -74.7616845066007158    43.1668832450494264
-35383  -85.6231912499999908    35.9851884999999996
-87017  -106.7855851614583      36.2600485182291266
-54446  -90.5030965507519483    44.7291442048871914
-82802  -93.1380475714285865    35.3073301428571398
-13691  -75.7828833328512275    44.2248277092975286
-58431  -98.4838131558029488    46.5172408744037966
-04571  -69.67389837376804      43.8995074624715187
-24549  -79.5067151143598778    36.7139224260562926
-38966  -90.3511887853185982    33.9407858130193887
-78957  -97.1814175316990543    30.0202465551216733
-85749  -110.759130518614654    32.2753132967297987
-13154  -76.7671575744681007    43.132143851063816
-17538  -76.4128825104225626    40.0890960387956454
-79830  -103.636650648902517    30.3104214858551408
-39885  -84.3499628548387221    31.7208964032258187
-01056  -72.4639141226267185    42.1781486744480034
-77099  -95.5972388331511382    29.6753927409610974
-38821  -88.4430441253782789    33.9788418912184227
-12402  -74.0763789999999887    41.9171989473684192
-14547  -77.102835363636359     42.8905706060605851
-60827  -87.6335190018717611    41.6509179015259861
-56056  -94.5713453749999928    44.0707373999999987
-52050  -91.3125383414264462    42.620215013050057
-88054  -106.905048117647084    32.4963053529411638
-75850  -95.9029156428921539    31.1434676050172712
-26067  -81.4414159999999896    38.2196369999999987
-55359  -93.6838386161240493    45.0055874528588546
-63469  -92.0327062882322338    39.8195930217729384
-03448  -72.2653998830549256    43.0444100996420005
-75159  -96.5439377324850057    32.626769657110799
-99664  -149.403079442717456    60.1748022661596025
-03825  -71.0418944320400954    43.2137515426232852
-08620  -74.6662680319276433    40.1739068617039266
-44699  -81.297553646349229     40.276345619893668
-22035  -77.3605714722222189    38.8545045555555646
-05156  -72.4786503809524874    43.3029868678082082
-27607  -78.7043321952988322    35.8040864154974798
-49682  -85.64111259616881      44.9681338351613462
-21757  -77.2616843368673614    39.5893119609639115
-58480  -98.2581475754146965    46.9385811395173462
-17353  -77.387778599686996     39.8822391669510665
-19973  -75.6072056708411253    38.6406276079950075
-39148  -89.9882991489361785    32.0665914042553197
-90808  -118.109468027105692    33.8223672091266963
-65401  -91.767420578091631     37.9337520284164569
-04572  -69.3732951454548186    44.1088230204179865
-42020  -88.2931883490493306    36.6916843602028564
-32026  -82.6556950000000086    30.1795735000000001
-49058  -85.3034087266140943    42.6383238846328467
-65325  -93.1793295029270467    38.4364815745042918
-04614  -68.5806952469285989    44.4100275945556007
-33941  -82.2615004999999968    26.7395094999999969
-38363  -88.1120830903362986    35.6685383120410862
-28329  -78.1043295000000057    35.0282424999999975
-38070  -89.238293074829997     35.9486632040816403
-92039  -116.616454000000004    33.0887194999999963
-63565  -92.9487828613624174    40.4824742430814624
-52362  -90.9949193218390917    42.0654895238096742
-23062  -76.4955876815672866    37.2579625104855765
-80473  -106.166524031249949    40.4591591475694941
-50588  -95.1798719620763052    42.6505163649067995
-12434  -74.4982700792235164    42.359985290136386
-15660  -79.7642427571059471    40.2483292428940729
-24619  -81.5293300467289583    37.2403360934579482
-99921  -133.136379984478907    55.4774676452328279
-91901  -116.749094012842136    32.8193927731715576
-62321  -91.1013982865639207    40.4031342364597421
-26038  -80.7310187767954517    39.9613341406996909
-58844  -103.719622231707319    48.893027982926867
-24862  -81.9309360402844362    37.4876303744076296
-68424  -97.017262194789609     40.3010119110219236
-38138  -89.8008135519816904    35.085664623965485
-76250  -97.22337141315775      33.6316766157894804
-84736  -111.995317400000019    37.5633025069767612
-92289  -116.234704857142873    35.8759428571428529
-31563  -82.1773533168033623    31.7559948019268674
-15051  -79.8604178904847544    40.5661249443447218
-29140  -80.3514977499999929    34.2233170000000015
-94538  -121.969497998145783    37.5243156671881408
-31070  -83.7754435752065802    32.1859992123966521
-42081  -88.3850455923011822    37.1967034851419669
-99336  -119.178865990488603    46.2105781651347627
-77808  -96.3103968334259832    30.7754190031380439
-25906  -81.1272371029411801    37.8387288823529531
-72772  -93.7011631249999937    35.9925070624999961
-14783  -78.9035148690095269    42.0936670798722119
-46767  -85.5801647606080849    41.4671869443272882
-97418  -123.286379040816357    45.3714837142857235
-28833  -88.3596803333333298    34.7952817333333329
-32055  -82.6675734528607791    30.2270049955416411
-61616  -89.5741114326340551    40.7439718222538261
-27705  -78.9640607473918408    36.0184414822070309
-43971  -80.7083042979397902    40.1597838177496342
-46531  -86.5112250309869211    41.3593690130068552
-06388  -71.9764463749999948    41.3446604999999963
-23095  -78.3134639999999962    37.4714956666666623
-69036  -100.296507301075266    40.049427526881729
-78259  -98.4352380371008024    29.6303850542646572
-33944  -81.3127993114754872    26.9485384163934221
-04055  -70.6034366472685377    43.9618004459619129
-79343  -101.406450420184143    33.6486898528746607
-45616  -83.3140659806913817    38.7619956363041211
-83616  -116.367500090777241    43.713348438738997
-14556  -77.827045499999997     42.6821987500000048
-16831  -76.3086686666666623    41.033060666666664
-66736  -95.8416495497782819    37.5490445881832287
-41747  -83.1412839545454716    37.3034739545454599
-28642  -80.8319131989901933    36.2226353106622625
-72005  -91.0782815200000044    35.5542005025000023
-46117  -85.6140727480104005    39.8112489071617546
-46793  -85.020021146804666     41.4525223984455451
-50257  -93.8420535284697621    41.1924730017793408
-13112  -76.4115292450844237    43.0981970960219627
-26278  -79.9393674397164204    38.8645827943262461
-03245  -71.5961047558825641    43.7417807035294572
-41855  -82.7872099035345173    37.1878096089837911
-17244  -77.6533817354010409    40.079660745459698
-31907  -84.904757857362867     32.4782886163512146
-58214  -97.491949501275684     47.924293650510208
-17011  -76.9297015621137348    40.23907729173132
-45030  -84.7730110133768875    39.2584082005477697
-97429  -123.086530010965689    42.9516384550823105
-75036  -97.4500572000000034    32.6060092000000026
-36751  -87.5371910144928194    31.8247332173913264
-30063  -83.5984542916666697    34.1469292500000066
-67756  -101.818579729618719    39.7727703055717825
-33802  -81.9697264999999931    28.0289067500000009
-61439  -90.3437359009008674    41.0266092027027156
-48105  -83.7041885220358068    42.3118036443562389
-43113  -82.9468558477476563    39.5928608011704739
-33715  -82.7193084071174525    27.6903187580071197
-02748  -70.9638789476319545    41.5795798105902747
-29166  -81.7125050799604367    33.9030506377098106
-98660  -122.684149932187722    45.6423702514852252
-97394  -124.048333786425502    44.424405625181727
-14065  -78.3257115200432565    42.4875274972914596
-53079  -88.156924056466309     43.8228135081967238
-54770  -91.3886012702169808    44.5525089526626985
-70562  -91.7457584999999938    29.9307605000000017
-80126  -104.962210761261659    39.5415544102894216
-83851  -116.890945778462495    47.3171166119095119
-04623  -67.7605539164109274    44.6727143920163599
-40008  -85.2732118513562369    37.9203052852620175
-98340  -122.5679887991746      47.9081307647868684
-71276  -91.1800351214953224    32.5752172211837916
-04956  -70.1302281043955134    44.8035601153846343
-37311  -84.8979269151201805    35.1387192512871422
-31721  -84.2531860588424593    31.5745069009307571
-39212  -90.2656839313316652    32.2485451537000003
-00616  -66.6693616850828761    18.4346599907919035
-05355  -72.7981533669777292    43.0201143473878247
-28454  -77.6456882807289617    34.6896306854696732
-84180  -111.901103500000005    40.7694257499999964
-36117  -86.1641737533103793    32.3661787882072076
-31753  -83.8732140999999842    31.1992994799999934
-75650  -94.5734428056635039    32.5383619786605749
-36761  -87.0242971062364035    32.0983683809631444
-57620  -102.498442124868689    45.4396184575026254
-40447  -84.0395391210549434    37.4572276715392363
-43408  -83.3623199473684195    41.564304513157893
-39158  -90.106438565217374     32.4232847826086967
-17778  -77.929906485427054     41.3003121346733906
-36032  -86.5503278998674404    31.9769873610743254
-85931  -110.799365990853559    34.3372774079268552
-57761  -102.761789865961134    44.2370001640214667
-54716  -111.308539843749998    45.2155062812500006
-43952  -80.6428641404883706    40.380255551942426
-67637  -99.5605073906201739    38.9448328580147276
-76823  -99.1457201589388148    31.7163247354326643
-76947  -101.21098783333332     30.6991594999999968
-36031  -85.7190352043010364    32.2501629677419288
-68448  -96.0283516079828559    40.5484913321454172
-22645  -78.2735745566193231    39.0170848976538309
-56563  -96.7563715909090973    46.8673607272727182
-65053  -92.3646897086824339    38.5432117544409962
-12022  -73.3626801350482651    42.6744405602894332
-52535  -91.9666706061126717    40.8596442219112532
-65282  -91.8241641905940327    39.3849076287129094
-89408  -119.214853444263923    39.5930565641946899
-98812  -119.774122790924466    48.1301407166147399
-13436  -74.6602686096939294    43.8146170918367659
-62462  -88.4476901217104228    39.2266497623355477
-27612  -78.6942353598906976    35.8517473406579015
-67430  -98.4391894187794492    39.5166357755868844
-63052  -90.4262924119966556    38.3902083879139937
-33898  -81.4852855970251539    27.9049895088435633
-31523  -81.5894040148700697    31.1817375707371554
-32243  -81.9906009999999981    30.1505305000000021
-07638  -72.1553059999999959    43.8671156000000053
-17043  -76.8997228059308782    40.2475189749587443
-04474  -68.7843377383024546    44.7224833790838474
-45402  -84.2086260684994983    39.7591000917986435
-22824  -78.6100907284088208    38.8416285238440224
-59442  -110.627882490520065    47.8519773079924633
-06053  -72.7908504098379723    41.6884507162934881
-51460  -95.5736576338028527    42.1291364225352041
-44273  -81.8775378941344627    41.0325594377683132
-74055  -95.8174203874901025    36.2860628357745725
-05833  -71.9799598518517882    44.8360048796296553
-75694  -94.3135521447368745    32.6861269605263018
-74453  -95.9049029999999902    34.7278169999999946
-46933  -85.6003404005321897    40.4872092246616901
-00710  -93.7036810000000031    32.8988662000000005
-56026  -93.3017526525033816    43.885199056653434
-56072  -93.5057709475201193    43.9091544599626786
-83238  -111.068625654941243    42.3498507855946187
-94549  -122.115036664339499    37.8993778252589522
-32195  -81.9056880375141105    28.9796314249720268
-51575  -95.6075674280938017    41.2451182809363743
-66091  -95.3191595083207375    38.1743693419061785
-56759  -96.0722094953270584    48.564567246225657
-92310  -116.746708882295181    35.2295712918031967
-78069  -98.6731263716819882    29.1876227058407238
-23169  -76.459700111111033     37.5925883968719319
-48756  -84.0226186636363366    44.2086257879446052
-04643  -67.8078034821647009    44.5950451894218602
-33615  -82.5824343890414667    28.0090907801752138
-46058  -86.6522727477759815    40.3535337259685747
-75503  -94.0952547573233034    33.4740019916723384
-48430  -83.7348869734625794    42.7768946413240698
-18337  -74.9037107086589913    41.3200776882628702
-30005  -84.2111241497836431    34.0816399956191987
-14010  -78.8599982500000038    42.7732057500000025
-46250  -86.0691315380192776    39.905598277215887
-20872  -77.2139268400084262    39.2789199375131659
-07504  -74.1433509869214618    40.9123552484909041
-36034  -86.1096381806451205    31.6271288258064729
-76012  -97.1382445928700093    32.7554013100415489
-94901  -122.51399433528475     37.9754074941473405
-79502  -100.258025325177442    33.1669312241515115
-12307  -73.9354678045977352    42.8050684417076823
-71735  -93.4654932499999944    33.6215447499999982
-92808  -117.743596425182915    33.8550771165628106
-95953  -121.68820842938851     39.2602163116697938
-08217  -74.7182595581395219    39.5765384418604711
-80549  -105.025828912399732    40.7392722921035713
-58772  -102.616308562020862    48.9548502399639176
-73539  -99.3332926417910755    34.4788793134328202
-98672  -121.465497919532183    45.7743995519234232
-32962  -80.3924881045299031    27.5862735273212678
-44102  -81.7359566009042169    41.4734928020665379
-15675  -79.6398809431330079    40.3308549721029408
-97637  -119.879325574380189    42.4049897768594874
-61799  -88.9364442500000223    40.4883272500000047
-47860  -87.3302341244239955    39.7255122258064617
-27312  -79.1763902689228587    35.7658453600371473
-27006  -80.4392577897285292    35.9655375109097477
-43447  -83.4327926579280899    41.5661159073994781
-74046  -96.5607677111111258    35.7515335555555538
-80924  -104.722937081619037    38.9613032574651825
-96784  -156.452821142857147    20.8694422857142854
-67401  -97.6119374636732573    38.8276678874850845
-48187  -83.48440041997425      42.330557045903177
-76836  -99.5647862642857149    31.4066795928571416
-50228  -93.2430491932391732    41.5747061661242796
-66845  -96.5485333843930391    38.3408343111753851
-88005  -106.79293864106279     32.298977547637918
-87316  -108.496322404327998    35.5034916412300419
-45424  -84.1205010337855583    39.8448007165074003
-72102  -91.8409577742979053    35.1507457329912896
-73107  -97.5754436219098835    35.4848672257593947
-18447  -75.6121963233003669    41.4968594326671649
-65641  -93.7279732855626975    36.537604764331256
-95632  -121.293603493278454    38.2680500468342331
-73346  -92.3988354999999899    31.0864617500000016
-50046  -93.5280978906134948    41.89841518662233
-95376  -121.431676909933472    37.7277651815155366
-29655  -82.6210850123498233    34.2957656746924613
-67815  -100.230238800000009    38.2913604000000021
-42748  -85.7123610707202488    37.5685007849364752
-04469  -68.6680709096573167    44.90011654361372
-76859  -99.7817050297151411    30.8866697938144306
-03043  -71.8043058914427377    42.9910524830535721
-18630  -76.024888096832882     41.6619569180140275
-51053  -95.2890764476241259    42.4935518492589779
-29822  -81.8893996744185841    33.5003535348837289
-38063  -89.5486852874831385    35.7553492056031956
-49254  -84.3217531323842593    42.2262527188612466
-49999  -87.556486552631597     46.0093093947368175
-84324  -111.943213947037577    41.4957624676839885
-55070  -93.3669372970622646    45.4001366354985976
-15360  -80.0819254175231947    40.088212069566147
-71260  -92.2563288069916609    32.8942266248692192
-25152  -81.267378670329677     38.052461219780227
-36870  -85.0997501651000476    32.4832936181152192
-44117  -81.5259064110671261    41.5685392618577652
-98848  -119.858108192003414    47.1827148381079269
-31641  -83.0859761101805816    30.9346141625227951
-62893  -89.0265695810683724    38.4771972652297123
-43614  -83.6299290640218089    41.6034936084540234
-22948  -78.126339584569692     38.3613230267062448
-33668  -76.3364513333333292    37.0174280000000024
-30125  -85.2573017692766797    34.0094467752156788
-38058  -89.8224837114397872    35.4521174463784661
-03907  -70.6034236243816196    43.251468962897448
-02472  -71.1808003126929094    42.3712303178284913
-38037  -89.4099129178856487    35.7965730258220702
-13061  -75.7459630476329409    42.8583002677188745
-28465  -78.1259962345419581    33.9147016159925201
-98562  -124.212830623655933    47.2365124569892387
-38914  -89.4539588661597094    33.876912607604531
-61849  -87.9637303149366261    40.0263513604906365
-23114  -77.6433126123405515    37.4835482249687715
-31331  -81.3879203715889332    31.5410544933361265
-48885  -85.1507401218353692    43.2502417325948656
-21913  -75.8676578456375665    39.4045320536912556
-05825  -72.2481005683759889    44.8703166239316715
-51235  -96.2143516516595412    43.2901316650134262
-20613  -76.8163231619685263    38.6756793808559109
-77068  -95.4872170641577611    30.0058518365449629
-38952  -90.341548551435281     33.6371437212918565
-17093  -76.9299604596491235    40.3092976350877379
-94971  -122.902904420187681    38.248457314553967
-92596  -117.094804878385446    33.6229233314014166
-01266  -73.3786500715386012    42.3164684239900879
-17292  -80.2828910000000064    35.6459185000000005
-84761  -112.851748877324866    37.8386328897210618
-18360  -75.2752810167207258    40.9811474875199622
-02067  -71.1779452252134917    42.1095283203589972
-24984  -80.4100621162029512    37.4904997495908248
-25231  -81.585147400000011     38.603751950000003
-08512  -74.5333779515284647    40.3123989077389453
-21711  -78.020537475558271     39.6539492426071831
-12750  -74.9567904972222436    41.7405565027777996
-77547  -95.2405921850913018    29.7376953590263433
-26627  -80.6049335296295624    38.7575019759259476
-50071  -93.5153204917734797    42.6497042601699619
-15116  -79.9605091738874876    40.5377525454191598
-36039  -85.8187603829114778    32.2909781803797173
-26833  -79.1773709114448963    39.0866856972506582
-12490  -73.9288145687499991    42.1221138875000065
-99318  -118.223712105263147    48.4236147368421044
-91911  -117.048751274091686    32.6106724622385187
-62550  -89.0300030893695151    39.6164063057384723
-49337  -85.7243104021648747    43.4320516161575085
-37359  -86.3946824643925879    35.2055765477656379
-76593  -100.3431535    31.7219885000000019
-34125  -86.3729061000000087    33.5937607000000042
-49428  -85.8302134332919735    42.9100791161610289
-71236  -91.5373638999999883    32.5766571000000056
-68738  -97.448787799999991     42.105549400000001
-57640  -102.68139530784714     45.734730112676047
-00624  -66.7176936503760203    18.0504658975564034
-92326  -117.199110485232097    34.2364926962025251
-17057  -76.7288278222619908    40.2021327313189047
-46069  -86.243505529671026     40.1294178518830336
-49349  -85.7498125930679294    43.5734215668958811
-54426  -89.948370425215515     44.9120462084447709
-60106  -87.9458103273743319    41.9564272722532365
-28690  -81.5744340157737184    35.736011746385266
-75248  -96.7934049720651331    32.9695966617424219
-98575  -123.824404074725393    47.4779831208791379
-82643  -106.290062875432511    43.4292179031141927
-91722  -117.906702181625931    34.0974867721225152
-75865  -95.0219877402597319    31.0316815324675481
-65548  -91.7421332920862795    36.9856654921351051
-82729  -104.388264333485537    44.3806630600730827
-13803  -76.0559963052320427    42.4587975504788488
-38052  -88.9141510777809714    35.079252621682329
-50548  -94.2277154916557294    42.7128034989687251
-18913  -75.0523828215613378    40.3839221747211568
-57046  -97.3189796633166111    42.9505820062814152
-81428  -107.59855212479232     38.8739983915343501
-38388  -88.3490864163529324    35.771708550820648
-20111  -77.4361133501822962    38.7531669297513943
-00743  -67.2499447857142911    18.3399427857142889
-71859  -93.9048896764706456    33.7430859402574015
-40316  -83.5259606150793417    37.9375482642857023
-91184  -118.159466500000008    34.1397525000000002
-38011  -89.7128388913554318    35.4694808597755298
-40509  -84.4071434323055598    38.0035488062517004
-38620  -89.9139116186569254    34.2379212698233459
-32225  -81.4930463459728429    30.3509220200772383
-54555  -90.4043744757412924    45.6936941583558252
-20772  -76.7842967959607989    38.7917706882014315
-01284  -73.6883656666666553    43.4726583333333352
-52131  -91.6310366842105424    43.4842063157894714
-58843  -103.369485718357893    48.2208995290763553
-78407  -97.433362729511515     27.8047568954380253
-33061  -80.1641759999999977    26.245257500000001
-68137  -96.1240189620719576    41.2038574861679194
-58550  -100.712917500000003    47.4920759999999973
-63039  -90.8266241812297324    38.4945360927723215
-86441  -114.317215712795516    35.5685588820769212
-71025  -93.6936430000000087    32.034026499999996
-47108  -86.252383551198605     38.6609451201331495
-67467  -97.7079307222221445    39.1237994491818313
-79016  -101.917088000000007    34.9835628000000014
-61569  -89.898265886651231     40.6762956870644388
-16022  -79.7303497386362778    41.0566894791666286
-01902  -70.9394154260189111    42.4716813775884674
-70788  -91.1636355056925964    30.1601465298861378
-77881  -96.3017329999999987    30.531094333333332
-52354  -91.9859249126315461    41.9183052631578761
-92706  -117.881844720849486    33.7657754600454467
-41539  -82.3157686007751295    37.4983420903804969
-80918  -104.773267705992339    38.9134285687091008
-88210  -104.434553213053633    32.8365919982184238
-41766  -83.4286382720587909    37.1852778186274548
-40409  -84.4329935121540416    37.3756210747348874
-61242  -90.296764819792287     41.6879944587660702
-56376  -94.6675528486485973    45.5020835891892048
-84315  -112.114139266243996    41.1682755773148088
-35443  -88.0174805536890403    32.7637613145586641
-33143  -80.2970212939769254    25.7027539205390241
-18822  -75.7944112187962418    41.9520414107710309
-85141  -111.495309293103432    32.7091290632184197
-48737  -83.7058951439859129    44.5419848505320175
-62463  -88.6273760824999783    39.2690700833332684
-39756  -88.7533689585237653    33.7834685471842064
-43972  -80.9765161206897091    40.1028765258620581
-18517  -75.7128603147002508    41.3925710679431234
-48098  -83.1792027387331103    42.5992683787968929
-31084  -83.60275145833333      31.9491353333333343
-49342  -85.3072479844678355    43.7000046861581879
-91739  -117.522548566047078    34.1356661465707916
-56557  -95.893487710867447     47.313163727195807
-79838  -106.155142451174299    31.5002012398022373
-54648  -90.6277569411970489    43.82647393575553
-31315  -81.6062821938461553    31.8907397692307981
-95595  -123.466661435348144    40.1460667834735148
-68846  -97.8944804713261476    41.0729687231182936
-47541  -87.045214761787463     38.2380741840918077
-25140  -81.4853642762667363    37.855279941597523
-83302  -115.059557529411677    42.1118425514706018
-22030  -77.3375298907973416    38.8425388261066189
-24086  -80.6436123511521288    37.2768209059907747
-12849  -73.298217761732829     43.4439183122744126
-77038  -95.4477387772249557    29.9154121228707872
-46960  -86.5177740609009476    41.1645273503894487
-75168  -96.8795240000000035    32.378264999999999
-16681  -78.4250328947368587    40.7987507368421021
-98390  -122.215255653919968    47.2000944810274987
-32960  -80.4027956419794378    27.6347779814442696
-14591  -78.088007687061193     42.82833564125702
-36550  -87.7283113677092246    31.2563989746407387
-35902  -85.9932989999999791    34.0178819500000102
-72473  -91.2082307402438914    35.7205597676828219
-34142  -81.4265102454717464    26.4029742141861803
-48079  -82.5188678167289709    42.8460534408364495
-58524  -100.083599630094042    46.6163145987460794
-67758  -101.742045706879424    38.8806110488533676
-02494  -71.2327331483805466    42.2993364448908977
-68038  -96.4630257038106294    41.9411507984988887
-39456  -88.814322402755181     31.0667221958134903
-68340  -97.7286790165974253    40.138815014522784
-10031  -73.9490687944784213    40.8251139079754779
-47041  -85.073779654683932     39.2355081618854342
-68869  -98.8807706520434238    40.9797487274235266
-77331  -95.1449044212468493    30.6235070467806558
-23419  -75.9214017457626937    37.3095275932203521
-50273  -94.0276578907830611    41.3359634272438043
-48198  -83.5860453225106568    42.2536247871167632
-37375  -85.8965802011758228    35.1781634268677337
-14059  -78.638162598537761     42.8318795076287202
-83810  -116.442736854131851    47.5426182658070218
-96757  -157.007963597484263    21.1522802306079392
-30537  -83.3396119115929253    34.983391947682648
-64459  -94.6569694549763199    39.9253376909952564
-65712  -93.808784352491088     37.1071012462660619
-14179  -78.8651575000000093    42.3196005
-64757  -94.4428325000000086    37.2483599999999981
-45238  -84.6107212883819955    39.1102530167091729
-39093  -90.3651493333333207    32.6419156666666694
-47562  -86.9803583055369103    38.8337670879096493
-49707  -83.4724823263341591    45.0943782188211841
-65247  -92.4882773192628065    39.6342224048751604
-66777  -95.9396194907938593    37.7814494387302062
-72346  -90.4661056515992499    35.0970083684434897
-62452  -88.0234598306166589    38.5863600163005032
-59915  -114.332773722921871    47.8233303602015454
-85623  -110.791216633129537    32.6080314455891056
-12884  -73.5931663574879025    43.0877829275362103
-62257  -89.7285028971252387    38.2664166022807279
-52322  -91.7688455663292046    41.6907317893063691
-19369  -75.8943263921568843    39.9808608235294116
-67515  -100.046163346153861    38.6697350641025608
-25173  -81.2319613205342108    38.0838472838063353
-81506  -108.549065509820636    39.107802729204856
-29568  -78.7605486754520854    33.8925528243004308
-39664  -90.6722192198288184    31.3316167721825956
-66735  -94.7061447859588696    37.5235838184931723
-99122  -118.187005156736461    47.7523314966627197
-58781  -101.120089739480193    48.0263499588489893
-36524  -88.0547971438684414    31.7928602627054104
-99502  -149.955315284318885    61.1575692981077381
-33712  -82.6657947813820044    27.7393254203331807
-10152  -73.9727460000000008    40.7587054999999978
-01757  -71.5266251018788495    42.1551692182188589
-27869  -77.3054505627031858    36.2746758468776775
-51466  -95.1120244356725664    42.2563906179337465
-82058  -105.601024903553295    42.0998751133671831
-95329  -120.365944732676866    37.6730486604637562
-60491  -87.9486720727181961    41.6126538608064962
-04761  -67.9792447169068623    46.110187473132342
-33565  -82.1637223990824594    28.0647855573393663
-14026  -78.6900216739130656    42.9353664891304376
-32138  -81.9301568739495849    29.7320227226890701
-67432  -97.1872926926923526    39.3581257187158897
-71065  -93.5057872834308625    31.8048747892841064
-15622  -79.3363631738543376    40.0411423296495457
-05848  -71.9360992844036673    44.3486399449541295
-38833  -88.3342072102056619    34.835317722633846
-06807  -73.59226702635668      41.05720919586566
-04635  -68.303758122807011     44.2961553245614184
-55902  -92.4957994646732971    43.9896247129133542
-95834  -121.520646253550638    38.6416626983889273
-04333  -69.4997384545454651    45.1465327272727279
-01752  -71.5435312086215731    42.3518444151589506
-65621  -92.891540599999999     39.5834037999999993
-15779  -79.2263582420748946    40.4186712046109449
-42210  -86.3011264171768886    37.2095491849481874
-79247  -99.389978401960775     34.3541214117646874
-40847  -83.1539422129629457    36.8698121574074165
-65767  -93.1443418518908288    37.8442988609944138
-77010  -95.3617140268456609    29.7547191342281998
-13606  -76.0101784490071708    43.8687680361011161
-41164  -83.1698656185825058    38.2888284606466556
-92459  -116.733198117647063    33.7313498823529443
-22664  -78.5216383729408847    38.8896672586617598
-97171  -117.73468419999999     47.1140424000000024
-32810  -81.4310514037500326    28.6223508647511125
-69365  -102.549643999999972    42.9568644705882363
-28740  -82.2596437281373767    36.0035865372611568
-96725  -155.949676696969675    19.6154758484848415
-73024  -98.7872472287390337    35.3699011143694904
-18932  -75.2582096275000083    40.2940142750000092
-63384  -91.5639007135249727    39.0761046418175795
-87419  -107.636877411652307    36.8785006580707559
-51364  -94.9564097056316285    43.3020079200188164
-23178  -76.4585491739130276    37.3972746086956462
-95366  -121.128352835958054    37.7489514475314465
-52513  -109.452749083333345    43.585100583333336
-31008  -83.7677204758644223    32.649336238312415
-72538  -92.1054437681187039    36.4399875039147005
-47336  -85.2045425769304217    40.3897901538614192
-39436  -89.2911583222222589    31.4417756555555563
-41666  -82.8020797331498244    37.4446381533700077
-24884  -81.619508914675734     37.2446022013651969
-41179  -83.3820617684894501    38.538842345255496
-41502  -82.5394288947368437    37.4725030000000032
-15024  -79.8461606760278642    40.5794893808133637
-53576  -89.2474966322616154    42.6292533451776805
-50239  -93.1936437343750299    42.1432408656250743
-37360  -86.2544801063171462    35.4388312971817143
-49864  -86.6483677193877355    45.8476217704081535
-24138  -80.3171100265330438    37.0471919589065664
-63449  -92.1471723461538517    38.0745318846153822
-16925  -76.7690824233525291    41.95551370151437
-58441  -98.3761913398533068    46.1782636821515879
-27841  -77.2769912234042948    35.9112287659574534
-63137  -90.2185594377538536    38.7494691039000756
-59525  -110.326064105263171    48.6223530971660125
-30663  -83.6100080079343542    33.6027715852948603
-14414  -77.7275697324524231    42.8975192599653639
-06098  -73.0865237176578404    41.9215021118426918
-73733  -97.6931520866666148    36.2579890499999777
-22209  -77.075907656424576     38.8941578128491656
-74006  -95.920532463784113     36.7302167921879743
-74015  -95.7138360978822931    36.1786940207712036
-95690  -121.574663259093455    38.2339957383535491
-28405  -77.8546130151622577    34.2583060323295499
-31405  -81.1581858129425626    32.0429903616495295
-86924  -109.773891500000005    34.3485344999999995
-86362  -112.761617999999999    34.2160009999999986
-04841  -69.1162773510302486    44.1114204620381614
-48092  -83.0620469167398454    42.5138380347159384
-22967  -78.9889268582702044    37.8038752719628519
-80447  -105.85904323416878     40.2231721170841183
-52214  -91.5052637196385348    42.1972060730205598
-43210  -83.0198908496731036    40.0026513071895451
-84941  -109.969894499999995    33.8295274999999975
-60051  -88.2253660400403845    42.3542806207356932
-70046  -90.5711649999999935    30.5392500000000027
-39411  -82.8121752857142894    32.2248948571428571
-44041  -80.9459744348215224    41.7891260970275269
-01532  -71.6468461515759572    42.319968485542617
-16063  -80.1250029337441845    40.7713702535951228
-07081  -74.3239841896718332    40.7000926213707217
-97027  -122.591576395903033    45.3896723572343319
-78741  -97.7172911124627888    30.2293448840616499
-42744  -85.5097528245613745    37.0197091052631748
-42634  -84.3990963135832999    36.8654303815911533
-88008  -106.639963630461494    31.8571708897509787
-46259  -86.0129224960153067    39.6585903795537575
-04057  -70.7011554000000046    44.1019566249999997
-57274  -97.5299535830091884    45.3197086157588274
-47272  -85.6131761451976558    39.4202756443155309
-57269  -96.8091655292856359    45.219332437857183
-79106  -101.886412700492215    35.2035403899139112
-96126  -120.360610576271185    39.5766395988700879
-30452  -81.8889555979558565    32.3266367536627115
-71233  -90.9273728606557512    32.3266370409835986
-15323  -80.4101252105070188    40.1066643629231834
-61728  -88.6197206098997583    40.5678601685327678
-66002  -95.1360497758623893    39.5527895464461992
-36548  -87.9716638087718934    31.4891702292397504
-52659  -91.4425656645962164    41.1284610699792808
-51044  -95.9101429353160029    42.2989420661709161
-24889  -81.6174388734177398    37.2782701898734388
-31631  -82.656758179577281     30.6861231285211282
-53732  -90.2073712500000084    41.8515672499999951
-04435  -69.1284683332342524    44.9637394988109165
-82640  -106.175942324607277    43.587033015706794
-40068  -85.2851871811208326    38.3881833537183752
-80816  -105.287745050407992    38.8861111337412808
-32110  -81.3440909991380181    29.4459365441415528
-44619  -81.161514389610403     40.8931037272727096
-58060  -97.4336525182961566    46.2599135092250364
-83201  -112.42871834726445     42.8873425191203452
-74349  -95.0229880555555297    36.5196167647058445
-95002  -121.97300422702709     37.4259231216216008
-49263  -84.18363524444446      42.1584592222222199
-75158  -96.3713261143004587    32.4686145161128223
-23075  -77.3220520571103265    37.5451392883799215
-93001  -119.304575050532804    34.3111630107371539
-78234  -98.4372929274261281    29.4687477054852671
-60470  -88.6398914037581989    41.164149573895422
-60551  -88.6834616806623046    41.5227625571017711
-39114  -89.8316521981291487    31.9483703126821155
-44099  -80.9697403552479642    41.5429598979238861
-57350  -98.1916234141989719    44.3826527406808964
-20170  -77.3818843442278848    38.9816891118841795
-29626  -82.748926745878336     34.467656537444114
-94123  -122.437380320881658    37.8001815584812775
-94956  -122.844908288375279    38.0715208823362659
-95650  -121.167908553490662    38.8139828052752378
-47357  -85.1486423256760787    39.7655682881651487
-78370  -97.5984046935954268    27.9554582616447682
-32003  -81.7145360922197881    30.0993430548032705
-49339  -85.5142841116786769    43.342855319343073
-59067  -109.229305269930236    45.9295423118881914
-19144  -75.1734047910037617    40.0333559125248897
-33868  -81.8351288087011994    28.2124447185136873
-71417  -92.6447031508614884    31.5173764833618684
-44848  -82.2811471363636571    40.9213548181818254
-36571  -88.1008744281569847    30.8342178248513328
-94571  -121.719265583302686    38.1537782298639883
-10305  -74.0748688999543674    40.5986514255368078
-15082  -80.2146322913669394    40.381474010791365
-32413  -85.9275446141334669    30.2575247467618915
-71261  -91.7268831011842281    32.7742261575887852
-43501  -84.4532051216016697    41.6700139490854795
-44321  -81.6557370929263868    41.1084979042540439
-22652  -78.438887524825347     38.8269322882643806
-25083  -81.3960823052209008    38.1355210120482369
-83239  -111.389926575257647    42.4805900412371074
-57301  -98.0308986256730321    43.7131173611685142
-17027  -76.9935819122807175    40.1566448713450299
-15781  -78.995108342105226     40.9656639342105251
-36857  -82.9020625714285586    36.3549413809523827
-75779  -95.4857881818182364    31.8683222528409011
-59910  -114.295197595441635    47.7963130883191383
-29335  -81.9113434265104701    34.6614899520209221
-00585  -66.9908259999999984    18.3396754999999985
-16503  -80.0637711163495283    42.1261822064561358
-77050  -95.2731974211854578    29.8983948688523782
-77386  -95.3898997549986234    30.1185938725571809
-10801  -73.7851162390039406    40.9175077440930224
-45804  -84.0816741281264939    40.7233837997955419
-50313  -93.6189632898714308    41.6453700544216616
-50842  -94.4627615130434606    41.03989660000002
-33314  -80.2264726996868376    26.0680385631806537
-21755  -77.5560772216189207    39.3620774710879004
-56601  -94.8597764383823687    47.5069696283676208
-16639  -78.4737248552004871    40.6854482750963413
-85290  -111.557566821989511    33.6295598507853342
-87121  -106.729875113878904    35.0485153878765274
-95424  -122.676690827160442    38.9782346872427965
-43211  -82.9735739375242645    40.0116014261121578
-57645  -101.694559535087777    45.947470907017582
-43522  -83.8537045532068106    41.4205013289143906
-06060  -72.841961868944523     42.0110296874043456
-45715  -81.6226162891694713    39.5933524193064486
-58052  -97.2705766581456714    46.6426112508666151
-71302  -92.4106337159818878    31.2529652104070159
-97101  -123.197495655429293    45.1034096116462067
-50020  -94.7426351555653099    41.4314273957054837
-51439  -95.5786929865264909    42.0726193592024345
-49757  -84.6298227220052155    45.8588775149739547
-05776  -73.2061532916358715    43.2477230310880714
-30071  -84.2035557397299357    33.939773137027494
-93619  -119.611589051714816    36.8761666079448318
-97145  -123.960112229411607    45.8696911705882613
-98058  -122.139177682289784    47.4457161939482219
-06785  -73.4440261999178858    41.7008465444489715
-27020  -80.8192590794813697    36.1065811743189897
-68415  -96.8088575830005738    40.0610244805666866
-55444  -93.3048947642990498    45.1056694320134
-72464  -90.1538140217390946    36.4556174782608622
-73131  -97.4640350681630139    35.5816856012745575
-75402  -96.0834112297890073    33.0712861151057069
-95477  -123.618255420000054    39.8549356600000024
-61536  -89.7889794999999395    40.6865275059242606
-04354  -69.4289539622436251    44.3919876262480244
-56165  -95.7097247499999924    43.7259674644549463
-01776  -71.4265244553996865    42.3859210544153058
-57474  -98.2754440615940581    45.2891441915760495
-71429  -93.4532505009363348    31.4017889226408933
-29161  -79.9441551333103035    34.1260411078562242
-21723  -77.0143163177291683    39.3240168874502487
-12198  -73.635020352123135     42.6808583954977649
-77385  -95.4267901354014896    30.1857299378245081
-34217  -82.712290476651404     27.4997448959307
-25059  -81.2085701264591506    38.2553653677042647
-68820  -98.7015394497735343    41.1013735085972982
-68979  -97.8545895175519576    40.6111695227703819
-24624  -81.9936690909090942    37.2061850000000049
-65032  -92.3810843967833932    38.3550808558041822
-43844  -82.0518879203163323    40.3299802636889595
-32162  -81.9930643568328748    28.9099803163997215
-50566  -94.3229471994302031    42.4388851832857625
-45654  -82.3887127275431652    39.3847248243740395
-44095  -81.4453610776235308    41.6527332935867776
-10587  -73.686892499999999     40.9596645000000024
-04952  -69.1392207561251695    44.4044562100816833
-53245  -87.9775735000000054    44.0846145000000007
-82321  -107.656626124054497    41.0362461754917689
-40919  -85.2047759000000013    38.3933779500000085
-38107  -90.0210024547008203    35.1661826203201429
-29684  -82.7094281490489465    34.3890277925071857
-56683  -94.7510525846098091    47.6968176336614604
-46303  -87.4505093171282084    41.3751626678882189
-00733  -66.6433080740740706    18.0459614074074075
-19706  -75.5948633611764933    39.5731759364705695
-31044  -83.3518672683433977    32.6618025845310029
-98293  -121.743868444444445    47.8667477777777677
-36563  -88.2549835000000087    30.393892000000001
-50831  -94.218506166666657     40.9498547777777802
-40370  -84.5366667073427038    38.3923989359678473
-68871  -98.8434911549708204    41.1312735146198705
-03258  -71.3997359066716797    43.2516092743628278
-92550  -117.159441375  33.5404086249999978
-46555  -85.6875963926607227    41.3253846506421851
-38955  -89.4669320283018976    33.7748940471698091
-02540  -70.6266785340764898    41.5707051511390731
-66937  -97.2519509286192658    39.5835241854568878
-96041  -123.178594916069812    40.5176479081204306
-48390  -83.4790009245646303    42.548655248854196
-15338  -79.9618389410410089    39.80647620497475
-29832  -81.8017509912224483    33.833431952178465
-69354  -103.348781679331324    42.454874995440754
-15435  -79.8502789108911202    39.9430797821782235
-23456  -76.0679611841715513    36.7554183092367879
-32954  -80.6093628000000137    28.3040407000000016
-14530  -78.0040609993505285    42.7296361574614068
-19094  -75.3453376946721249    39.8764669788250856
-35626  -87.9085364999999967    30.593300499999998
-21205  -76.5717198176899529    39.3017955058860906
-72959  -94.1117541419736057    35.8069027725241611
-04413  -67.7441215180571845    45.5779989414695308
-57569  -99.5645808220994297    43.8412349458563639
-63956  -90.5415511230769425    37.2097892153846175
-46142  -86.1589873471125003    39.6194705830175451
-95952  -122.642817599999987    38.2429401999999996
-63113  -90.2466721956404001    38.6573698321526678
-28771  -83.8048727606800412    35.3347745927268662
-54745  -91.1376441358786877    45.2459290806648866
-73542  -99.0125260726463523    34.3914874225352136
-78965  -97.118048642857147     30.0551271428571418
-79522  -102.47156733333334     33.4770726666666647
-83654  -116.301487578925062    45.0233072185274636
-77452  -96.3263228181818221    30.048964090909088
-07022  -74.0009965847089148    40.8173769383144887
-87774  -104.806627499999991    36.3541970833333323
-75645  -94.8734219332421418    32.6763395106983339
-45264  -87.8275720000000035    32.9755164999999977
-32423  -85.0634192416513599    30.9382768191093831
-91343  -118.482722297513405    34.2393036271344329
-72057  -92.3189223700054669    34.1483449670471373
-27830  -77.9585343383767366    35.5513340917952689
-37692  -82.308119842812161     36.2058390621463531
-14001  -78.5123064597975144    43.0364059846950155
-31789  -83.7315466154512364    31.4903383018826872
-39601  -90.4561916339516898    31.5656010355786947
-29922  -81.2516778052841886    32.619134435956326
-36131  -86.3005624999999981    32.3790385000000001
-49960  -89.1939431794871496    46.7325588644688779
-95420  -123.805959086666704    39.364318643333327
-64762  -94.5018689831649823    37.5526373471753772
-54020  -92.6413808701603188    45.2906511373472895
-02054  -71.361333700511949     42.1686230095746524
-12935  -73.7911800021428945    44.8370473696428462
-32461  -86.0310529036964482    30.2864695953307432
-60192  -88.1465918230590546    42.086860735104402
-45204  -84.5708606295831373    39.0970683870832332
-15646  -79.3393454901255666    40.0900806175942463
-56271  -95.4183920618444859    45.2198644467144675
-19474  -75.4051560677083188    40.2246948229166748
-85277  -111.896230199999991    33.8064755999999988
-43837  -81.4763818302605216    40.2999200730806635
-95209  -121.343664064749817    38.0399462573558793
-83254  -111.320536538792965    42.322204108411583
-79053  -102.616043833333308    34.3886800666666659
-25527  -81.9518361428571467    38.4565997142857086
-35042  -87.1453688376390971    32.9677089981070495
-16040  -79.8392819133443084    41.0956883222590506
-10154  -73.9732009999999889    40.7580800000000067
-17312  -76.4854236071428346    39.9437123035714237
-67869  -100.545246292670782    37.2711959432769504
-19478  -75.4600276874999878    40.2764061875000152
-55750  -92.1272742322647673    47.5107116552812698
-54215  -87.8006154374999994    44.2256680624999916
-63120  -90.2619390591718656    38.6914088795857936
-82325  -106.808055976351483    41.2059534180743583
-58580  -101.920703958833684    47.2857611526586297
-46711  -84.9382451387298829    40.6628044678298224
-71115  -93.6816419251065042    32.3924410353191732
-13620  -75.4485096011409837    43.9014684168494469
-54895  -91.4113264705882358    45.4230035882352965
-66079  -95.11774544282747      38.5487208577961979
-30521  -83.2988395426242079    34.3652768412241016
-51061  -95.7211507991924719    42.5803583143289615
-03561  -71.7989180525775197    44.3191151146063618
-77703  -94.1185956427088115    30.1114363688898763
-37396  -85.4988995740742297    35.0033864542483926
-96576  -122.676927000000006    46.9162329999999983
-55949  -91.94683594087671      43.723450390819842
-16680  -78.4061803333333671    40.757301035532933
-36543  -87.445357801801805     31.2121353423423393
-94511  -121.633522860317456    38.0257635989418148
-40376  -83.6964137688564449    37.7945943041362398
-73684  -94.9836956000000043    32.2369665000000012
-21502  -78.7679263118278215    39.6432630736320135
-62601  -90.0443871240544098    39.7487350438729621
-64147  -94.5448639065934344    38.8464630238095125
-17404  -76.7648601048270081    39.9893179303086725
-05738  -72.8574190064534406    43.5229881829506482
-81142  -105.622867083333333    37.0819819166666704
-68876  -98.7436611418839334    40.807639206646904
-30321  -84.3935699852941354    33.6399224705882531
-69210  -99.8645017707979008    42.5186141522354646
-96826  -157.827482030171979    21.2923306860632131
-49433  -85.5239647500000046    42.593069749999998
-55992  -92.6762473244993146    44.2997912316358864
-29817  -81.2834862773563174    33.3625398060316911
-58074  -96.8975257926829272    46.3281219146341456
-10634  -123.390777545454554    46.2128964545454579
-85009  -112.125991620292382    33.4562332190661351
-21657  -75.9814632213897738    38.955764614781998
-67335  -95.533995902415171     37.2700087441253203
-49331  -85.3498401813906185    42.948460046358143
-38843  -88.3818525810715698    34.268835831936066
-29632  -82.6856171999999958    34.7842289999999963
-83263  -111.818368335915466    42.1479499382927898
-49089  -85.234917014045152     42.0183934792134437
-06442  -72.4441099103942321    41.3440433290323384
-17862  -77.0611328141592793    40.8605178982300714
-45360  -84.0918833559321968    40.3305597711864223
-02809  -71.2695833081746457    41.6856879564564125
-71970  -93.5107869757915324    34.6681853005586618
-10560  -73.6029075929203884    41.3327611260569867
-92663  -117.92818167500694     33.6199794734167057
-34448  -82.5764356192392484    28.7982021378547124
-28804  -82.5604977637869979    35.6408718818513321
-45234  -84.5359175000000107    39.1145329999999944
-10107  -73.982720999999998     40.7663845000000009
-53038  -88.7724894168420349    43.0773168329824401
-57367  -98.5333952710843448    43.0635861204819221
-05444  -72.8999966554872856    44.6533512679336297
-71315  -92.5078176666666678    31.1473996666666686
-97918  -117.299788236068153    44.0104841735036203
-53536  -89.2891957975691639    42.7691656100168558
-36914  -81.9888224000000037    26.592672400000005
-59868  -113.474831000583919    47.1732570846797614
-17943  -76.3837883095237942    40.763981011904761
-54007  -92.3719880898810288    45.1970802249999934
-07049  -96.4992542758620573    42.4934112068965462
-85716  -110.924729748858681    32.243221950587305
-67203  -97.3646379558323645    37.7044919261617864
-15063  -79.9248993333102931    40.1931561384375158
-53566  -89.6417136165457862    42.5990307602164009
-66102  -94.6779553794873436    39.11488468346095
-25067  -81.4398263354944021    38.2132660875202959
-36305  -85.4779766404972463    31.2139165287640381
-68969  -98.8698545344827977    40.3999178103448102
-53404  -87.8078534879642802    42.7465097937593157
-67031  -97.6456809370759373    37.4050002270202953
-10598  -73.7926283174667788    41.2928397868065815
-51431  -95.3562949009287877    42.3488461625387629
-56282  -95.2104371731843031    45.0325571054004072
-64120  -94.5277603550401722    39.1260901333629931
-62889  -88.837231556742168     38.4579054410325156
-50479  -93.3954315855819317    42.9453489877740822
-89027  -114.080104828717666    36.8148979495448287
-75605  -94.7380200830063188    32.5623121908066366
-19942  -75.5789554285714331    38.8709248571428603
-92323  -115.467639296212795    35.2764299156898389
-12827  -73.5118853817870672    43.4228872326038058
-95673  -121.450778252666922    38.6897576071321154
-17264  -77.986885166742681     40.181386154539247
-22529  -76.6924735089285576    38.0380257232142895
-54424  -89.1759955789473793    45.3271701578947415
-93292  -119.246368991337008    36.3459620313153167
-25464  -81.9348609545454423    37.8092034545454538
-06710  -73.045524353400566     41.5687389250919068
-99644  -152.504777999999988    57.9227277045454514
-32706  -81.2370669705882165    28.9664993529411703
-22503  -76.5064184137664967    37.7445270501622971
-22725  -78.1588298999999864    38.4379199285714392
-47246  -85.7608000897625828    39.2917545520680349
-29846  -81.2261957321428838    33.0359696785714334
-19101  -75.3118154000000004    40.0183315000000022
-32422  -86.073798565217416     30.7338526956521711
-62271  -89.5309826410486949    38.4387091220615105
-22848  -78.8968676428571456    38.3835630714285685
-78102  -97.7882155941007625    28.4446642608681621
-62963  -89.1628425757211573    37.0878154915865181
-54639  -90.6178254780022598    43.5716315980975182
-85293  -111.787262468531424    32.8095626223776051
-30666  -83.5881714670750853    33.9630958117535613
-68062  -96.677234248466263     42.1967192392638069
-10941  -74.3545922226781073    41.4843578974262783
-13636  -76.1298317220543481    43.7393885830815563
-45350  -84.5697563333333306    40.3254010833333396
-15019  -80.3351803591919378    40.4099127621794025
-27564  -78.7468278571428613    35.5647558571428561
-16927  -77.659455250947758     41.9606706474601197
-32189  -81.644558233671134     29.5574865160722524
-19567  -76.2045743941033322    40.3886428300697276
-76403  -97.7124854999999997    32.3189688333333365
-81141  -105.932080816165737    37.1699614155937255
-32058  -82.098311673913301     30.0505571204177038
-68465  -96.9988463855787586    40.4888307433547467
-39055  -90.0105165000000085    33.2277681999999999
-78557  -98.2409044962462872    26.1027880251501934
-46345  -86.7001213231706771    41.5257174573170644
-06484  -73.1352559294449094    41.3043368331343359
-23962  -78.6996543284929686    36.9394145412088122
-33199  -80.377278000000004     25.7610470000000014
-64632  -93.8063396611002673    40.4516923123772756
-27592  -78.6801704632668049    35.5632804450564493
-95587  -123.757108618514764    39.9674771342828024
-59469  -110.694167078638415    47.2068720715962087
-57675  -99.6154922500000026    45.2077282500000024
-85344  -114.295054625537119    34.1063654751424536
-41535  -82.2793712797493555    37.5982377463465482
-95628  -121.258107688052448    38.6551712315265377
-69152  -101.036384039953035    42.0996545881316138
-03055  -71.66733678626413      42.8240727061924389
-23306  -75.8625769613479548    37.5646852779980449
-29593  -79.8791409594387289    34.4899446162247472
-98112  -122.29685070953272     47.6303902766537277
-48303  -83.2535799999999995    42.5751968750000032
-63739  -89.8045579573825563    37.3557191954369259
-72686  -92.8655403883882826    35.7668432862863312
-26102  -81.5616346842105315    39.2691676842105224
-07721  -74.2358480699373615    40.4354864979123221
-05257  -73.2479398213248487    42.9459509142939311
-93532  -118.489411475156928    34.6924208994860095
-95982  -121.765678374821846    39.1656349121140011
-50702  -92.3295292879822398    42.467923366765568
-51573  -95.0940347139016922    40.9764327142856359
-07018  -74.219332605417236     40.755438415080512
-08740  -74.1354119093610961    39.9260105007429473
-29840  -82.506038402578838     34.0017213968481045
-92941  -109.799155500000012    42.8518820000000034
-83687  -116.534893428328189    43.6010503915737075
-10975  -74.1509903201834391    41.2432418440366959
-13044  -76.0000461265229745    43.2817166813496854
-35244  -86.8124348926274081    33.3580259170374021
-31557  -82.1076590227517187    31.3772982888115095
-72926  -94.0563462309044809    34.75554358887711
-49064  -86.0501134741533207    42.2122453975044323
-73858  -99.8761201222142319    36.2712838734722922
-15320  -79.9931191336406471    39.8799871359445888
-38014  -89.7678283571428608    35.2734977857142837
-25272  -81.692295944444453     38.8655958611111103
-04236  -70.1453203832035967    44.1923657396037228
-22151  -77.2117361674200851    38.8038689941879298
-85925  -109.303722831813388    34.1015386398176474
-21085  -76.3556106344152425    39.4350853507815486
-39209  -90.2630935376302403    32.3385952578154914
-42740  -85.9337476551204134    37.593002052495649
-52751  -90.673115358161013     41.8424952041378972
-39090  -89.568996825003822     33.0259539695357276
-73749  -98.1747087310925224    36.6958999873949452
-28604  -81.8411891526912427    36.1750351021379473
-22101  -77.1676051930014495    38.9335053527852111
-95715  -120.656548481997703    39.2943910290359923
-27105  -80.2355451731939695    36.1517870133810462
-68113  -95.9158211007957391    41.1311758116711275
-08880  -74.5286141027132913    40.5535602441860519
-70050  -89.5956487031963462    29.3885630502283171
-46526  -85.8510765665410673    41.5649681644985165
-52626  -91.7196215845882108    40.641518589902617
-66740  -95.3633490848000065    37.4651348015999801
-53017  -88.2493040556587829    43.2066017676842975
-62896  -88.9170835347773476    37.8935611415388109
-29486  -80.1307552952359856    33.0725225226888782
-98232  -122.41742205512638     48.5732369600234364
-72112  -91.2501915988837453    35.6058023620438959
-81130  -106.990636579527788    37.7877499971320745
-07739  -74.0405816987381939    40.3357378886435782
-21532  -78.9417371324749979    39.6530441974235757
-63133  -90.3053512799518359    38.6792415659240376
-60659  -87.7037050987718203    41.9909653103535305
-12590  -73.8900576625725165    41.5912183861657496
-29635  -82.600793627100046     35.0767111445528599
-74365  -95.1038271071847277    36.2988417535688583
-79730  -103.060645284671509    31.2324842299270138
-28439  -79.0197195643921617    34.2997493924536911
-23483  -75.5032604374999892    37.9278133749999995
-85938  -109.283410385890079    34.12877339157194
-56323  -95.7259084192201044    45.626592613509743
-26141  -81.2586767316295067    38.9343111456868627
-26739  -79.2486793121452706    39.2471493053348581
-62533  -89.6342093562379461    39.4462618445297366
-19028  -75.4449730000000045    39.975084333333335
-63645  -90.3014879858628206    37.5507157833090659
-98348  -122.319239375000009    46.8341847499999986
-35034  -87.2342989396589132    32.9166366413258444
-95630  -121.149450240492627    38.6744002956587707
-61044  -89.9105333841726519    42.3200719208632705
-59999  -89.5673725000000047    44.7147170000000003
-18654  -76.0697771698113598    41.3234819245282949
-78586  -97.6372422191228679    26.1187520580344348
-84055  -111.196333536437905    40.7657229413398738
-94574  -122.429625375336272    38.5228519559267326
-04947  -70.2278015309895238    45.0313010230033655
-78148  -98.3045031512080101    29.5508112079112557
-98584  -123.077959820822343    47.2243117096769822
-70818  -91.0484759427859984    30.5440580581706662
-50110  -94.9808707380952058    41.8404382380952313
-27522  -78.6766064246631061    36.1061729643576257
-03781  -72.3121072018691109    43.5541054110280541
-43570  -84.4335888748759658    41.5917334108665671
-53716  -89.3145530998938995    43.0676722588747225
-86339  -111.784150277777783    34.8641032222222194
-67653  -100.171412417410721    39.8533458080357192
-70754  -90.7519244761193988    30.4162556842610883
-28530  -77.4261774562073128    35.374816662278306
-02838  -71.4734626566916376    41.9656489900249667
-46361  -86.9190133999999972    41.7006620999999953
-55922  -91.9102046579407244    43.5478909249563841
-49322  -85.3682290644351127    43.3623361665272213
-00918  -66.0630692539682087    18.4161030083541952
-69341  -103.66303408696804     41.7904541049673171
-14211  -78.8216915364440638    42.9086969274168482
-83657  -116.294142275771534    44.234763392646002
-42171  -86.1647452186354457    37.0309882142931031
-90049  -118.483318675431349    34.0775065377155215
-73827  -93.0627816153846368    35.3841824615384581
-40495  -84.0712727142857119    37.7016455714285712
-72841  -93.7554589587124241    34.8660257116864685
-80749  -102.523581434762605    40.8786780608575739
-53555  -89.5567249365220306    43.2899394897713776
-46128  -86.7435598587648116    39.6734565492465023
-43571  -83.8019520755989191    41.5212643010462514
-75073  -97.6768998333333371    33.158256999999999
-23234  -77.4740058292189673    37.4521858302103681
-30072  -84.2061413308270659    33.7916144987468883
-27026  -80.5482055000000088    35.8477118333333351
-36451  -87.7941068974823366    31.6996239252530678
-39206  -90.1748952486878323    32.3691869269800137
-68046  -96.0480786048612316    41.1408712112560693
-73526  -99.2921539147841798    34.7837230985626746
-93042  -119.086307391891921    34.1028422972972791
-97626  -122.011889688144365    42.682261664948463
-56078  -93.7554771241240843    43.9987353543544728
-56046  -93.2760509230769372    43.9627108461538398
-44272  -81.2018758144532313    41.0892234739583913
-73740  -96.4019730000000123    33.861109285714285
-55020  -93.3551975973153247    44.5704788635346034
-82426  -108.071995896350998    44.4973526859865771
-61455  -90.6703475565079344    40.4499557134512528
-20909  -76.9340768333333358    39.0837051666666682
-55329  -94.5651260513080132    45.3230246287726644
-15828  -79.1404832483531635    41.3300654683794804
-92886  -117.803469347895089    33.8899983326827297
-19421  -75.6338597352940951    40.1386542352941049
-16915  -77.9866005920228673    41.7928035826524678
-56074  -94.197474510240113     44.3049990911017204
-61243  -89.6768372558139788    41.6184297291383061
-84518  -110.864240462046226    39.3581281639163834
-36615  -88.0671028456376632    30.6397798758389328
-73033  -98.5556926837606824    35.3035467179487057
-37020  -86.4060240418551899    35.6241178889140286
-96772  -155.612551376470549    19.0470365529411794
-39269  -90.1888959999999997    32.3005129999999951
-35541  -87.180107961750906     34.0752556418785986
-03209  -84.0500521111110999    30.5979300555555547
-63105  -90.3289721313233969    38.6434981387570815
-28005  -81.6574080000000038    36.1216489999999979
-74476  -95.3042844000000002    35.9554999999999936
-25873  -81.2217421877193999    37.7506119982456383
-53969  -89.3099192290748931    43.4967221674008826
-30736  -85.1494997001452703    34.9107278099357146
-50613  -92.4595778694594657    42.5237043055365831
-52411  -91.7227093929127903    42.0416436229443775
-11418  -73.8331994137930963    40.7041150689655211
-68368  -96.8118019096175004    40.5534043070683552
-48618  -84.5536720181376609    43.7480675276123705
-65653  -93.1086798676886502    36.705920677309507
-36871  -85.1543279415890169    32.1631032055861183
-35570  -87.9964921491933438    34.167896576571394
-31735  -83.9554135932761199    31.9668135121951451
-80488  -106.883918769952999    40.5091544272300439
-83703  -116.245314957995504    43.6576003196560336
-31707  -84.2031040035554383    31.587138068527242
-95074  -122.543947857142854    39.8847171428571414
-45177  -83.8535068253679157    39.4628240595201376
-80227  -105.085471422183261    39.6673806583674633
-38701  -91.051836275087723     33.3755110938388384
-58027  -97.644326309530868     46.607180860920117
-23130  -76.2750850020899236    37.3964456959247329
-63559  -92.7389278644855324    40.2214854025697619
-39017  -89.9196128571428659    33.5059721428571464
-52801  -90.5752555890804985    41.5218945258620735
-74031  -95.5273638571428592    36.4267880000000019
-37886  -83.8130121721540746    35.7472748199517056
-55129  -92.9039691051716687    44.9052231975144309
-77448  -96.0781690454545583    29.4054106818181715
-11370  -73.886946100000003     40.7762943499999935
-05149  -72.7063046501268104    43.4049596569256551
-74943  -95.1074155085714068    35.1030633371428564
-57440  -98.2842888684637046    44.857736518010725
-35581  -87.7059712494285293    34.3557460227907754
-45847  -81.6706064444444451    39.3513341111111146
-72369  -90.7859144999999899    34.443299500000002
-33975  -81.4365192916666985    26.7814402083333363
-64745  -94.5046280444444307    38.165434733333349
-53051  -88.0997092702702957    43.1390934729729736
-52136  -92.0914765219665838    43.3811882271509788
-70540  -91.544329166666671     29.7980382777777777
-48770  -83.8135535391245838    44.2412337261273478
-75013  -96.6983590251139447    33.1129727531000313
-79377  -102.113175115151506    32.9399668303030282
-95615  -121.564002664506972    38.3121592023037891
-25106  -82.096335369308747     38.7795547951096182
-19980  -75.5702162769230767    39.0721033230769308
-83867  -115.954251813218349    47.4985873534483005
-70543  -92.5070791349305352    30.3301530182228731
-36320  -85.3175093977438337    31.05644755203787
-28466  -77.9448656257432759    34.7502943937384003
-97028  -121.747721546718182    45.2952271196911624
-60151  -88.613736934302068     41.9025119753632183
-03751  -72.0743300066225885    43.438153323178831
-14871  -76.9094500692067982    42.0438911811820759
-28585  -77.4181924020893746    35.0622596267540061
-06114  -72.6796771198910392    41.7382443235694183
-50540  -94.8386046796176885    42.5994760243092543
-10597  -73.5958645637371092    41.2967687078384671
-95686  -121.44819096862733     38.222501500980421
-61738  -89.0200116722331671    40.7347243202891747
-23223  -77.3915003436915327    37.548920621923223
-75469  -95.8281093462532709    33.4250942105943025
-78763  -98.3004906000000034    26.3179652000000033
-82945  -108.949201974647863    41.7551876760563232
-71842  -94.3057687998839924    33.9354770657399243
-50003  -94.0178616609065472    41.5950088404180889
-87323  -108.17669572485579     35.3633533574632324
-18254  -75.9607069872448903    40.9162144260203888
-14807  -77.6956448184455013    42.4186143372002178
-16435  -80.3743200079537274    41.8160516811279876
-93268  -119.434757949478836    35.1768203087410285
-68609  -96.2968788999999958    41.2512827999999985
-38552  -85.8198143837657881    36.207242352065343
-44133  -81.7481243306590528    41.316994983954423
-99776  -143.359169250000008    63.3771776250000016
-95838  -121.443804875992569    38.6416690543401558
-20746  -76.9180234473800084    38.8379310975212277
-68054  -96.0823405714285457    41.0773279285714352
-89183  -115.150332674563117    35.9984685579800896
-15561  -79.0902775665024365    40.0970906009852186
-46701  -85.4404835835150038    41.3604563059275776
-72042  -91.3212969825611651    34.2890362736855323
-50238  -93.1832715245903245    40.9814944724292687
-60621  -87.6402561818700718    41.7767378567774657
-22306  -77.0857450975544651    38.757484867180068
-70359  -90.7666238445944771    29.6885741038407147
-72353  -90.9742732739725994    34.3322714520547905
-06456  -72.5498972625698286    41.5517218808193292
-08066  -75.2261617216381779    39.8308211587531673
-46126  -85.8930204454850781    39.6197599673324987
-21216  -76.6718301516648353    39.3099532729601577
-13322  -75.2129299211878362    42.9691691941747038
-41805  -82.9426844090909015    37.2947265454545445
-10514  -73.7705782418714193    41.1716513378525164
-73004  -97.8627245814751632    35.1591648439108155
-92570  -117.303797005916309    33.7936329456203026
-52748  -90.5592873848712827    41.6628369535565213
-53023  -88.0471736298932655    43.7984094911031931
-60938  -87.9881561755961172    40.7697236757240873
-17055  -76.9883464323510651    40.1861147010598998
-78387  -97.5506862200682718    28.0402671941934507
-32226  -81.5442281595272647    30.4707559481381516
-47834  -87.129787434134002     39.5243318081448862
-61540  -89.3825617402731893    41.02357395954661
-87109  -106.567067026133614    35.155209451766865
-28431  -78.8315392412875156    34.3049451423348231
-33613  -82.4509428252392098    28.0821310059181535
-28112  -80.5511315945801414    34.9157576593092998
-84752  -112.927605806913078    38.2163858688914999
-98027  -122.028840476910162    47.510702271423078
-02121  -71.0811936953097643    42.3076315391988302
-01901  -70.9458367244094319    42.4628413753280824
-33044  -84.0534460000000081    33.9158139999999975
-06258  -71.9637495199999933    41.8875855866666598
-14782  -79.2553007826086997    42.2651092968291024
-63719  -89.5270770000000056    43.031313499999996
-30069  -84.5198225000000036    33.9218784999999983
-64423  -94.8467158018398777    40.1873772581483664
-00724  -66.7146160000000066    18.0047982999999974
-85367  -114.407596452368736    32.6586614346663495
-48657  -84.3892898618364455    43.6990238980622649
-17301  -76.9836088732481869    39.8898145938959274
-16232  -79.5507219579424287    41.2214939074731603
-64504  -94.8739737165062706    39.7007112071685526
-79553  -99.8125276116060576    32.9399228230392609
-76662  -96.8982616666666701    31.2831119999999991
-86510  -110.213507258620652    36.1616638879310273
-37340  -85.5328628133432005    35.0272608680659658
-15672  -79.6273394007243809    40.2407237371519244
-54205  -87.6216448918205799    44.5766450343007747
-78670  -97.8333591607142807    29.7785025178571452
-20166  -77.4468613860839099    38.9922826827832196
-67102  -96.7762994961831993    37.0429898015267085
-75063  -96.9700366553142459    32.9235271129226916
-22385  -78.579267333333334     38.6305983333333316
-96729  -157.079325393735957    21.1623836286353573
-66521  -96.222006151767232     39.5035524708939576
-19934  -75.5883486269630964    39.0960756528397226
-98934  -120.418391409470772    46.9852295626740926
-18911  -75.2527641914893621    40.3699940425531878
-95638  -121.16575824172449     38.3150010246343271
-43105  -82.6241421705300354    39.860782013130212
-05455  -72.9642605725027806    44.8078321331902245
-23089  -76.9053281369269115    37.4425975138542739
-86338  -112.669882697552509    34.5303043959790585
-27808  -76.7757969878267517    35.4674327917042049
-19542  -75.7679743846153855    40.2587296153846026
-59261  -107.370162426229541    48.5119598797814788
-44405  -80.5909835258345453    41.0773211192368777
-43908  -80.8812956548735684    40.5056925415162752
-40855  -82.9147018977272694    36.9638009299242327
-04964  -70.7652003629864623    44.9183489614773421
-06232  -72.3774418769153556    41.7361112984175762
-04093  -70.5410484242307092    43.6467451996454869
-21010  -76.2955865606230077    39.3904525873192384
-38617  -90.4974943352855519    34.3761561068813748
-59322  -106.558276010416648    47.0689083541666378
-63432  -92.0382243333333321    40.5604483333333334
-48176  -83.781094430708535     42.1674429665180313
-48306  -83.1601875723218882    42.7166698287031679
-40735  -84.7001348260869662    45.0937048695652223
-95937  -122.006309126050496    38.892985164465756
-49010  -85.8706281276318748    42.5339736133946431
-55982  -92.8824605950001114    43.8130481583333662
-62250  -89.2634015670103196    38.5396053195876007
-95920  -121.971535995384684    39.4425468369231211
-41160  -82.9943474923077105    38.0300239384615395
-70030  -90.4447016400989838    29.8157429767326896
-43130  -82.605588940002562     39.7061237811852905
-60530  -88.9588881881655738    41.7893248520709975
-18331  -75.438477967340603     40.9110791306377024
-48040  -82.4826564570348637    42.9123545898646626
-56562  -96.7714889999999883    46.8676833749999986
-33431  -80.1018028182951696    26.3801703419181877
-28078  -80.863562255261769     35.4121838809509484
-89318  -114.781281563805109    39.3979596658932749
-92595  -117.262626762404835    33.6182809245948278
-16029  -79.844764677559894     40.8782550871459662
-75647  -94.9535461912997931    32.5255354309667553
-74578  -95.3282921477176046    34.9061841260199088
-49760  -84.9182521984732261    46.0626691297710167
-95139  -121.766646167824064    37.2255929301697179
-79549  -100.928082643019223    32.7524133367907666
-67701  -101.045911828748231    39.3896418521320513
-33258  -81.5593345000000056    27.7555885000000018
-10311  -74.1743093103447961    40.605106172413798
-96044  -122.49205843874924     41.927488573531015
-37338  -85.2084402725529486    35.4267691201124393
-20640  -77.1488505838392911    38.5694402064847708
-02878  -71.1758618752553218    41.6246541808108574
-92662  -117.893029862527541    33.6065836274945156
-16228  -79.5353908823529423    40.7608676588235355
-56119  -95.4886651096047245    43.7144193138418373
-18612  -75.976257388728925     41.3449180265116709
-29919  -81.2413659999999993    32.7473030000000023
-72070  -92.6984607661387798    35.0250574393474068
-99573  -145.40453235714287     62.0689830000000029
-34648  -90.4045320000000032    31.2173279999999984
-53954  -89.3026025436446957    43.5314262036753732
-43316  -83.3808336386307616    40.9494207414833298
-24750  -81.3076544999999982    28.7330100000000002
-50275  -93.5960865763000953    41.0302744748509127
-42701  -85.8525585109381097    37.7075101734921319
-10918  -74.2607143384842772    41.3474239940563919
-43044  -83.5732741488063056    40.0543762702117405
-23108  -76.7258659579832312    37.6447201092437069
-55416  -93.3403473672217814    44.9506430325118131
-01029  -73.0440941051769244    42.1768160756882082
-42330  -87.1362530660438068    37.3128308316718886
-62022  -90.3326597746130062    38.9959193985066577
-12493  -73.9683337987680005    41.8033206591375901
-72566  -92.0847937487623227    36.1932640581683103
-33182  -80.4038311942241251    25.7761684586636406
-10804  -73.7851487008493478    40.9494331970570187
-14845  -76.8388740483642891    42.1896705874338451
-15022  -79.9248309500513443    40.1351798432265241
-07027  -74.3231671784387373    40.6511372936803141
-14058  -78.161304638699562     43.0973819098059252
-54140  -88.3109977855952621    44.2861146815154214
-54313  -88.1040534374396174    44.5676794330227608
-48834  -85.0391163150424916    43.1285920449385713
-49072  -85.4619763279400928    42.0100748981847261
-41062  -83.9279352222222457    38.6883967142857017
-08852  -74.5487842799997935    40.387259581242958
-62998  -89.4380628647871561    37.5041195914845034
-59430  -109.905707170522589    47.372028943016339
-50668  -92.223450320974635     42.6921796154660385
-02835  -71.3749161486736625    41.5138364033004379
-77530  -95.1267141773437572    29.7900692584882201
-50609  -92.8172017213822897    42.2092844546435799
-67762  -101.975002367768596    38.867670731404921
-73179  -97.6518632538568028    35.4232998443198071
-64636  -93.986240012413873     40.1154690096551789
-44128  -81.5485960408257284    41.4402861034248247
-03053  -71.3823068520957946    42.871015915570581
-04350  -69.9483923873029738    44.171296180212309
-16850  -78.2935856666666723    41.0967113733333207
-75109  -96.3112215269893994    32.0225852259407162
-25971  -80.9823523121040978    37.4771417645881755
-65898  -93.2500668181818213    37.2375174545454612
-32811  -81.4434865235436121    28.5217052091556944
-12440  -74.1485393387980167    41.805757183542255
-43207  -82.969069764401965     39.8953019980034185
-54245  -87.8946028726743975    44.0282005255813473
-16039  -79.7937203796296615    40.8321985185184957
-45653  -82.8286016624107617    38.8877590816137726
-98871  -119.988392666666684    47.8017426666666623
-50650  -91.6583491429794464    42.6094607803937606
-87554  -106.011489515384582    36.5130796384615337
-01718  -71.4291800042553149    42.5197482382978649
-49404  -85.9483223378319252    43.0559787073774132
-78767  -97.7398703750000095    30.2672954999999995
-67851  -101.010383600513364    38.0490457188703104
-40204  -85.7243711895349492    38.2374118773256626
-53091  -88.4541709026945995    43.5161283877245282
-57950  -81.8366599999999949    28.1730265789473755
-21542  -78.9467059425287232    39.5909850689655372
-33426  -80.0834452961582031    26.5285252112897041
-04084  -70.5622784830560192    43.7681364567875306
-41803  -83.7722635000000082    42.2800610000000034
-27826  -76.1981647980652781    35.5591683373639569
-77651  -93.9600185822366285    29.9791804665571071
-23125  -76.284872448476122     37.3443997068215054
-27529  -78.5920660312635988    35.6603224789196886
-67444  -98.1194392581551114    38.5532595699754239
-29108  -81.6187777636803133    34.2873727901019691
-48888  -85.1142957330554282    43.3032071011726316
-52549  -92.9351450941767609    40.6162238907261255
-08326  -74.9359360777338139    39.5268354044795771
-70131  -89.9870305421162442    29.9160145583617769
-43567  -84.1485938084578464    41.570052036268315
-76050  -97.1972771201244257    32.2849533182561927
-75708  -95.2247913129140073    32.4046496242054474
-27953  -75.8035896321352425    35.8950383498942998
-45118  -83.9487586632372853    39.1806484936614936
-68466  -96.6528018347260627    40.0844094992866502
-41222  -82.8436298554802448    37.7683284159099557
-81066  -105.279104379999993    37.7023513399999999
-32180  -81.4527632992925703    29.228232323082203
-73569  -97.9110962781456635    33.8996079403973667
-16153  -80.0965744297688786    41.3305062140292208
-54447  -90.6899067931034466    45.0682937586207046
-92008  -117.321732563235088    33.1534186713407948
-32246  -81.5100128825839789    30.3014652726344309
-65085  -92.0692098427856109    38.4096599767871183
-19083  -75.3103120104912023    39.978246221191327
-38838  -88.2478556328113513    34.5521101771429358
-50542  -93.9260889317193204    42.763551013057544
-27355  -79.5630484986106268    35.791502213293434
-73847  -100.193667750000003    36.8727157500000047
-20758  -76.588250706907715     38.7328068934796406
-82236  -114.249191666666661    44.5038396666666713
-80804  -103.284226171688829    39.349561942536802
-30067  -84.4614867413116457    33.9359513576860934
-60556  -88.7686517317990393    41.7630707979079432
-50058  -94.6966778720093316    41.8597917145633502
-71961  -93.832054078659155     34.6038703737138817
-93235  -119.20940543287675     36.3789712780822043
-18435  -75.0206118290240767    41.5040860389907138
-84652  -111.86828227643646     39.0050102930890645
-99126  -117.983425903215419    48.7378373025723377
-84564  -111.076506624999979    31.7299833750000033
-77591  -94.9939982929434308    29.3911582826161712
-75756  -95.5974490057570989    32.2969489364805824
-05473  -73.2052234227160028    44.2483437044444301
-05457  -72.9018253824536231    44.9729375563171629
-99676  -150.044404923132532    62.2286935221175597
-58558  -100.534674009245919    46.8052923958395155
-17568  -76.2326111153846284    39.9466711153846106
-25571  -82.1671281901987953    38.2863770426977368
-60129  -88.9553013604060681    42.0286238172588256
-39111  -89.731019361739186     31.8739699405342449
-80133  -104.911255559779377    39.115867858982206
-04254  -70.1557118273073144    44.4434450975980013
-17758  -76.5643131618453623    41.3430019176125896
-60181  -87.9788963424470438    41.8847387975095415
-25826  -81.3567173132529859    37.5728491325301093
-52749  -91.1261267087628113    41.3530212912370843
-07832  -75.0513928929046585    40.9449919215523508
-42361  -86.7018589979854966    37.5188727803895787
-07208  -74.2287452893183257    40.6731597595277137
-55062  -92.3160049999999899    46.2385080000000031
-11944  -72.3653690240173546    41.1067986082969838
-95828  -121.401034603052537    38.4815459449702928
-98593  -122.976198422248913    46.4041865550239194
-67764  -101.198609058236229    39.0174056755407364
-04022  -70.8044318126207486    43.9830726662373479
-57374  -97.5692125147194531    43.7237385896964739
-37376  -85.9229243892239936    35.0406972612069154
-42040  -88.5080975896980107    36.6187598927450608
-44689  -81.6537678192955809    40.648572147013752
-48093  -83.0098248506586884    42.5154127655928562
-07403  -74.3333073975187659    41.0170344510209972
-12967  -74.662998268337887     44.7718700649953547
-47918  -87.2208606602724359    40.3072809733187754
-13630  -75.3158059158879922    44.4994985493701236
-57202  -96.9175643000000093    44.9936684000000042
-64699  -93.1132146666666785    39.9978623333333374
-81631  -106.799401051623462    39.6446872285818372
-57455  -99.7500723987341047    45.0093762088607647
-47846  -87.1971593710617014    39.3685927882146771
-64843  -94.4366097377388058    36.7348471830774486
-79566  -100.111830316337191    32.1425535189038882
-64686  -93.6270456291208433    39.7433339478022063
-58429  -98.1796595863095547    47.1933519579081917
-72626  -92.5376788433576394    36.2940139193654474
-32449  -85.2111120181819359    30.2647206055944125
-83114  -110.96383509975459     42.1334097980376896
-16929  -77.1367795881727147    41.9761255536636355
-37365  -85.5550881422050793    35.3761543792141495
-99156  -117.195868056949422    48.1539642461187256
-62079  -90.1391155980392256    39.1038149044117347
-60011  -87.9034272499999929    42.0549112500000035
-99014  -117.595166239130421    47.5610375869565232
-50845  -94.3435523146495569    40.8174375783439345
-59071  -109.534463254623049    45.2952218349928728
-31741  -84.7126758163265094    31.2875592244897938
-79250  -101.615876886071007    33.8706871943035921
-08559  -74.9689982453538022    40.4379023670442947
-41804  -82.9866331212121366    37.1483347097480419
-85920  -109.126351681383454    33.8372593090506868
-35755  -86.1152309482116891    34.512568036885213
-42159  -86.2447542738457997    36.989479034882109
-84310  -111.847072897508056    41.3265718957944586
-99143  -117.844381872611109    46.7682038988385287
-03586  -71.7915866054475202    44.2255176591439394
-08016  -74.8395345447113556    40.067930620808653
-97752  -120.308955060800045    44.1198998159999789
-96140  -120.105305821765782    39.2000484894503458
-97326  -123.618362282720653    44.626323559761957
-17327  -76.7456511758880282    39.783897867566381
-57251  -96.9129823784615354    45.2782524738461163
-04109  -70.2011662454090413    43.6682061302170368
-16851  -77.8129740931780276    40.8093370632279715
-58436  -98.5601281908427183    46.0296430500192315
-02818  -71.4879989786844021    41.6461511389290564
-02674  -70.3042197142857219    41.6336354285714307
-63862  -89.6423396650165643    36.5883642731023357
-59330  -104.736658422825144    47.1414325891503907
-80611  -104.303604819775586    40.599897096774157
-71410  -92.7789402647058523    31.9656327294117695
-85901  -110.056118106904847    34.2828195703687157
-36483  -86.6575862201837168    31.0297210693578052
-48117  -83.3997663183534286    42.0504394346677373
-32094  -82.8291004638553687    30.1842953228469462
-80121  -104.952795793757801    39.60813809669515
-38255  -88.8488560367393916    36.240233462686632
-55087  -93.3924961784702532    44.2480276232294685
-71108  -93.78262540762924      32.4486255865548827
-29631  -82.8147385897543842    34.6829764828306679
-98850  -120.133346720286013    47.3628894075066995
-07738  -74.121767368479837     40.3386853345964624
-16933  -77.0717113827800659    41.8113895723216373
-62234  -89.9810667342051147    38.6835539248772093
-03945  -88.6297039999999896    31.0869356666666654
-15613  -79.5769072240798465    40.554788848272139
-74436  -95.7263653661529332    35.8310512445690676
-58345  -98.3508119020027323    48.298195208512098
-01604  -71.7696982628584408    42.2515802714484039
-45841  -83.7331309513556761    40.8763216826155755
-56580  -96.6116220697485488    46.7474424448501296
-15770  -79.1632754011516511    40.997095387715909
-36024  -86.0206504167534405    32.680921466852709
-30259  -84.7463672426131183    33.2708357685008878
-43545  -84.1329956940741823    41.38763229518716
-30082  -84.5364397360514204    33.8571045732792442
-56149  -96.2842757245509517    44.2882760419160775
-45205  -84.5766921922780739    39.1108010142857268
-79121  -101.930236516574524    35.1740175821823371
-61265  -90.4961160905369297    41.4898387686588919
-61256  -90.406299389108824     41.5534776801980001
-62803  -89.3006547778794157    38.455052164533754
-13452  -74.6288949293014952    43.0280194677499139
-12838  -73.4024377897573714    43.3434230687331237
-36353  -85.3688258385022465    31.470995847806897
-11714  -73.4852553104214508    40.7400739415496673
-57432  -97.9922864099306565    45.6767944487589475
-02026  -71.1690599230023508    42.2449046375230211
-28787  -82.5446248781519785    35.7289667873217027
-61610  -89.5958463168785357    40.6447004693285336
-88255  -104.174134983870928    32.8865403064516073
-37118  -86.1954334184572417    35.928692908264523
-85546  -109.695785481429795    32.7982337141132163
-91923  -117.116166833333338    32.5908805000000044
-30241  -84.9744045719818075    33.0275377271427715
-41092  -84.7091424603770946    38.8131739251089201
-14787  -79.572919665015732     42.3173467219720649
-02880  -71.4653573333333298    41.4340507777777773
-83245  -112.231505868743739    42.8090555596171498
-00622  -67.1706258119891402    18.0162103841961745
-33838  -81.6160222799515793    28.0205134683340624
-38647  -89.2032025179784966    34.9591642327502541
-32514  -87.2205301252679845    30.5268932905924792
-47532  -86.855982934633559     38.2295448259749051
-94513  -121.716019989125613    37.9338293107228566
-35896  -86.653980500000003     34.7532890000000023
-34940  -80.3362029999999976    27.4650800000000004
-18469  -75.1364968985365635    41.6983375790244537
-33542  -82.1821752184478242    28.2382401965855827
-33874  -81.5694794999999999    27.8983154999999989
-46572  -86.4035879285714117    41.4110224285714281
-65354  -92.890588539643602     38.6474090092193876
-69850  -98.6519509999999968    40.4648090000000025
-95448  -122.880079903450167    38.6171157495677591
-34433  -82.5163418145632477    28.9971194267939474
-66886  -95.079708999999994     39.1122039999999984
-14744  -78.1933563050294254    42.4230052834748648
-15668  -79.6785503242588788    40.4530619129566062
-61830  -88.7199281757322069    40.0137568423989265
-65339  -93.3808864757535844    39.1817564390563291
-11104  -73.9215071999999935    40.7441941333333304
-56456  -94.3325847142857157    46.6461641428571383
-30183  -84.5858697920313602    34.334613395488617
-39558  -89.4369390999999752    30.2516729333333423
-05485  -72.9731351666666512    44.9028225555555593
-17536  -76.0737043117031533    39.8412052612528598
-37186  -86.2151695498390751    36.5825969282956081
-52738  -91.3827483578676407    41.2778805676285785
-04275  -70.6402504992248055    44.677289685788125
-43939  -80.7979182889610428    40.1752475649350771
-46224  -86.2578244812727064    39.8000559959843159
-04015  -70.5208496622966692    43.9629921603361424
-67871  -100.914047368448323    38.4920631382093177
-05073  -72.4679840999999954    43.6331875799999978
-43220  -83.0687094662593637    40.0485850613690246
-80530  -104.930806549496083    40.0999770853586881
-05483  -72.9681342696923565    44.8898376931734049
-03084  -71.8480736776043472    42.8209770993947814
-24269  -82.3782921451850854    37.0731021890369874
-26296  -79.5486819999999994    38.8130006666666674
-40472  -83.8757678543241383    37.7168840075518546
-98107  -122.374738036440775    47.6673589355692471
-65648  -93.1629885347776252    37.3901821532451564
-35757  -86.7492336876330086    34.7841266072190933
-43315  -82.8805926644765236    40.4891878415940454
-44406  -80.7632268411373957    41.0267280572110735
-47848  -87.2586192164674799    39.0579096002656954
-98198  -122.31325695305047     47.3925897350903327
-71749  -92.7824359641039536    33.063821524377822
-16674  -78.0847757456926388    40.1897073294279608
-66023  -95.3768038151781354    39.521880093959652
-62426  -88.6467339329957582    38.8945511040124359
-45849  -84.4483848114210502    41.0081494309428507
-55056  -92.9843048269672607    45.5067293177260552
-81147  -107.06582598913549     37.2265854099189539
-51650  -95.5586179833887712    40.6764782441860433
-48846  -85.0652976727116368    42.9867785027512213
-52637  -91.1350899862681985    41.0132891122979473
-49267  -83.7094263894080939    41.7597342170301005
-38929  -89.5610155677870949    33.7476012596434742
-78548  -98.6475209560439907    26.2730050153846229
-87028  -106.838434484162832    34.3832902217194487
-33815  -81.9873328372422066    28.041035394314143
-30319  -84.3360733679676997    33.8775563078089306
-65617  -93.3384896895037173    37.4303485450556792
-28134  -80.8864879360522622    35.073286861990276
-95821  -121.381521865563315    38.6239942070222639
-05032  -72.6623125071580489    43.8003022459973437
-56387  -94.2270493696220939    45.544410677735975
-50054  -93.2445598364750055    41.6902703610441776
-55711  -92.6808852079729633    46.8552725148551374
-61486  -90.5769270788612175    41.1974930670812114
-17501  -76.2057026362661531    40.1569840472102726
-98345  -122.624720621082602    47.7005898603988143
-26378  -80.4428842213736317    39.1186343408790407
-36504  -87.4939740000000086    31.0204363000000072
-41663  -82.6495516617100918    37.5709132565055626
-27948  -75.6866710559848457    36.0144791254363668
-70349  -97.2908265000000085    35.568866749999998
-19401  -75.3344138290154035    40.1269163367309716
-25317  -80.0928277142857326    40.3040919523809578
-22845  -78.8127637777777608    38.7911607422222247
-95567  -124.178701905936478    41.9470075087792935
-71647  -92.1187294140150357    33.3903167145156843
-61237  -90.8572626842105393    41.3376405263157949
-12309  -73.8705254605985289    42.7935262873203257
-22448  -77.0427204966442645    38.3280934899328827
-03774  -71.9980078223246664    44.0822532942024594
-91040  -118.331750718849364    34.260429129118549
-91648  -108.851043491278986    39.9812006976744101
-67523  -99.5382498333333388    38.1915843790322711
-13309  -75.3368836745543717    43.4767172824124302
-08061  -75.207835803187308     39.8026232653386174
-36616  -88.0814987272727308    30.7248158181818134
-44246  -81.8829514999999901    41.1131230000000016
-24812  -81.2818614166666862    33.2519475833333402
-76445  -98.5524841440329453    32.2605249308641575
-62908  -88.8529070234543212    37.3106457594883167
-45898  -84.7661772934460487    40.73972622198729
-49237  -84.6464430873635365    42.1749389344774386
-28547  -77.372214091228102     34.6940152269005466
-57763  -103.232946137082607    43.1557045623901843
-78516  -98.1127417071240586    26.1839382958241522
-84319  -111.848241710294232    41.6295941355043553
-98493  -122.575818499999997    47.135917500000005
-72865  -93.5626635988023878    35.3053236505812862
-56128  -96.1150103023721414    43.8776832526842
-55555  -94.9135610000000014    43.0308039999999963
-12577  -74.1196994887995686    41.4343833026995725
-16832  -77.452446903482695     40.8506243840796444
-47031  -85.1429500119584191    39.129789967862628
-65464  -91.9337514422493314    37.1829516656534267
-27560  -78.8413432043397364    35.8419020533671144
-48192  -83.1684491041231126    42.2045053210330892
-27596  -78.4558156386933518    36.0163344025107008
-66941  -98.4395282981817417    39.8416505709091098
-57062  -97.9111186540915668    42.8576679170053225
-80545  -105.654387862476355    40.8392136621559061
-18109  -75.4391858588209345    40.6256884583332862
-19154  -74.9784223487841501    40.0903169967704827
-88323  -105.456505653333309    33.5237487333333277
-15823  -78.7153759777622639    41.265962664666425
-93205  -118.482535757686961    35.5825016810463453
-45377  -84.2049250593969703    39.8871893976608263
-37645  -82.6619154780734817    36.5602304716031412
-32008  -82.880018724767595     29.923385209847492
-17851  -76.4203652906613939    40.7998847389105279
-27928  -76.4241765831549316    35.8609554655080842
-78260  -98.4935064467307768    29.682848463660207
-83647  -115.665895795559805    43.1844376272585535
-67525  -98.5619290590894366    38.578642523732718
-28715  -82.7055845505423974    35.5320497835140685
-40740  -84.0400447739393428    37.0198080615949792
-64369  -95.0944785000000081    36.8752367499999991
-68980  -98.2708880801724831    40.6843327698275701
-42965  -83.7317617619047638    36.5952249047618992
-37773  -83.5891190000000108    36.3911749999999969
-93634  -119.219094202166019    37.2136252815884276
-75030  -96.5660163529411477    32.9077246470588349
-55110  -93.0082336785921626    45.0823795684995261
-97378  -123.411112192813647    45.0947416941306329
-48906  -84.5687197834819813    42.769322018388614
-39192  -89.8061814208058422    33.2056339197019739
-77098  -95.4142706255638871    29.7348319258145395
-43761  -82.1245983461538458    39.6704181538461427
-40385  -84.1305403698516017    37.7282839808764408
-97469  -123.372414090819717    42.9313737560655042
-40228  -85.6287344531008756    38.1367507737307321
-25244  -81.535329121831623     38.7706573618151822
-75433  -95.8125355195316359    33.1083164087499497
-48239  -83.2907651274600624    42.3799099283873915
-43553  -84.2283198333333445    41.5316639166666803
-35990  -86.2954874536082031    34.064579886597933
-88132  -103.174408830424071    33.9156034276808072
-33612  -82.4536831800829475    28.0499035519709103
-66960  -97.4078710197368451    39.9342506776315815
-79608  -99.8330734999999976    32.2750805000000014
-56324  -95.9039388025425126    46.1687016326270907
-57941  -101.333651000000003    46.0912330000000026
-52754  -91.2397045664497455    41.3474617381015079
-02830  -71.6472378867633211    41.9773100241775126
-16141  -80.3979235544077824    40.8614886806703552
-00996  -66.0896819999999963    18.3095350000000003
-85704  -110.987052233109992    32.3356979610228521
-78940  -96.6659624923016452    29.9413440191513125
-25630  -81.7053325677749314    37.7965761739130528
-33624  -82.5252075141640944    28.0775685561418058
-01255  -73.122171330789655     42.1169383944736282
-18428  -75.1340805340925044    41.4398246711380054
-13733  -75.4779985045814925    42.3071308237989641
-34786  -81.5524150506123107    28.4865748112756698
-36526  -87.8749371761759619    30.6229542519572817
-28463  -78.808955205267111     34.1209584064100753
-87132  -108.012351312499987    35.6081130624999957
-27063  -78.6237226923076946    35.5886509230769121
-46150  -85.603994104445448     39.5491241579629076
-64854  -94.4550481057705298    36.5463965172323171
-17302  -76.4055257672264645    39.8054851138290218
-65552  -92.1712078870714322    37.5381506529075182
-57572  -100.950545687224775    43.1430022422907271
-57104  -96.7237392113487431    43.5759478766645856
-85366  -114.473937893333371    32.8821950400000063
-34470  -82.0972339575160959    29.1987610980391921
-79301  -102.410739750000005    34.2303597500000052
-31650  -83.0211560991977251    31.3957464906360286
-34608  -82.5554567216388335    28.478698228346488
-63089  -90.889017833938567     38.4618474815423426
-03740  -71.9714315320446474    44.1594703193697669
-86367  -113.201712823529419    35.504220411764706
-62867  -88.1340806567967832    37.9130087341856594
-46382  -86.7653867927780169    41.4750097396928226
-62819  -89.0157587980050096    37.9810694887780755
-87536  -105.736064142857145    35.5866115714285698
-24061  -80.4198010000000068    37.2230179999999962
-25499  -89.2290734285714109    44.7836485714285715
-46776  -85.1618745184523078    41.7323249511326679
-35126  -86.6513666831849321    33.7209065531319325
-72770  -94.2621433548386989    36.1787595161290341
-41231  -82.3933816322751795    37.8056396157407661
-70815  -91.0635004693838681    30.4537970444704946
-56221  -96.1882601985158061    45.5524798497217347
-94305  -122.164157810963971    37.4204146064901835
-77533  -94.6441196718345736    30.1130938036175557
-94117  -122.444506485294099    37.7700875561975238
-19137  -75.0736606613976534    40.0010367346090305
-54817  -91.5224320515105632    45.676185601084434
-47130  -85.7107373425000958    38.3168342534167508
-32060  -83.0478393919168099    30.277227833914111
-62036  -90.6103252202797336    38.9232692727272891
-83858  -116.886373739136928    47.8319017318480846
-99239  -117.381574999999998    48.6634064999999936
-25520  -82.1740206424714756    38.5613184679064815
-33598  -82.326383153593568     27.6966938051139842
-80834  -102.881442244212977    39.3219366851851717
-70393  -91.0254840853658749    29.991274857723571
-31320  -81.3961775899423259    31.8018596750801059
-78732  -97.8992472092378563    30.3666873372179964
-95746  -121.183270716311654    38.7459618506489036
-38504  -84.753727669948276     36.3871367805907369
-78659  -97.1468674363827631    30.1918437615384931
-67621  -99.1224452378947234    39.7762970926315731
-23233  -77.6207091442668542    37.6384806817975743
-21524  -78.7975020770577999    39.6957804956216833
-05060  -72.6787142363246375    43.9606061773503853
-72376  -90.2922628342960962    35.0953422673907909
-26764  -79.536540038421478     39.4595020692329399
-58332  -99.7803376909546813    48.03574234422112
-91745  -117.969037627095815    33.9955927509920812
-47139  -85.9038011874999938    38.7012236250000043
-99683  -150.256863818805755    62.264615899107703
-28443  -77.6508023405730654    34.4028130077093977
-33584  -82.285250172545588     27.9956392837512809
-65550  -91.9441833645132789    37.8476703947958342
-28459  -78.3725045017793747    33.9535464875445001
-50556  -94.1954923649359301    43.4552185267117608
-15431  -79.6202535764866042    39.9629983099181629
-27958  -76.1273847838219098    36.4944797309923814
-74367  -95.1088270625869114    36.3955073685674506
-56608  -94.0135536250000001    47.6576697499999966
-07401  -74.1343164934311858    41.0316743346213002
-84015  -112.051291476079342    41.1236987855468996
-92546  -116.800350307692298    33.7147738461538466
-19395  -75.5364833333333223    39.9459321025641003
-22202  -77.0605296446546646    38.8537023710459124
-95829  -121.341036808021045    38.4670766798727826
-55731  -91.8589299738672906    47.8922531931705109
-93528  -117.636018560000011    35.3717496733333334
-92243  -115.57519727776419     32.7833584005752954
-58768  -100.986381667368434    48.279011220350867
-12083  -74.0348086475908929    42.4285036120380852
-47855  -87.3001061397435763    39.1858319615384616
-99329  -118.141625704081548    46.1449869540816238
-32084  -81.3407719526224327    29.9027257412073588
-70524  -92.3036390481284457    30.5723269652406167
-71939  -94.7163129333333274    34.8006550666666641
-54977  -89.1909565047619708    44.4693989306122646
-66070  -95.4521735282575321    39.2080917066978927
-15473  -79.7688495430359126    40.072997114240863
-49318  -85.8255392635574879    43.2548741659435834
-16150  -80.4593518547788165    41.2726609008661001
-97885  -117.506516540548191    45.5995359259679205
-53556  -90.2599462180676539    43.2326145480107371
-49723  -85.0157576461538298    45.6378114153846326
-31774  -83.273377317209949     31.5705810208333482
-66856  -95.820409133116172     38.391834664649906
-66872  -96.7592576863560225    38.7975838620942497
-97494  -123.332204873239448    43.3301493802816964
-80911  -104.721694806954886    38.7482374531404474
-25114  -81.8245775384615825    37.9748295346154094
-24719  -81.3216290517241447    37.4866687068965518
-59904  -114.173102636363609    48.1992676363636221
-16426  -80.1427357211308617    41.9855186449447899
-62939  -88.9691986408024746    37.5623504881758947
-12962  -73.5813964985529907    44.6953182102079012
-68718  -97.6741658809383466    42.6417002692082932
-00925  -66.0508146221910408    18.4005410308988857
-03217  -71.6342529680088518    43.7129465611592494
-28069  -98.7262713333333295    29.2447569999999963
-54514  -90.4577547261525581    46.0409325746234401
-43534  -83.9352005197932982    41.3615881781410621
-65701  -89.5262816666666623    37.3153846666666666
-77082  -95.6302973984289935    29.722073955331112
-46168  -86.399179322553195     39.6976901487797775
-48167  -83.4961793092305129    42.4371593311837998
-13357  -75.0643624946982158    42.9911404231240226
-19027  -75.125225282385216     40.0729109546220741
-94132  -122.47864164488        37.7225495228758092
-01355  -72.3346999277387255    42.5032617485847979
-27341  -79.7173608283682853    35.512101181304736
-00954  -66.2496635555555571    18.3988496666666634
-79622  -100.02184802564102     32.0925573076923101
-83850  -116.240200099156766    47.5221626467281766
-42749  -85.8763682142916736    37.18929694797162
-40220  -85.6188957639156598    38.2126847262509415
-92130  -117.213167226732537    32.94809348247081
-61524  -90.0328958823529319    40.4915105614973427
-47443  -87.092886573206485     38.9748164348462964
-56501  -95.8291739672583702    46.8179712125897254
-68067  -96.4756077000000403    42.1524742681818481
-27027  -79.9834687456239664    36.4362642716895451
-41472  -83.2384227018833229    37.940971049495829
-41828  -82.789645347968559     37.3109483184796957
-67854  -99.9451274218180288    38.082146664545462
-04461  -68.6249130843100659    44.9525913644612984
-97330  -123.277028650844159    44.6058867892806603
-80215  -105.117201744805143    39.7461634236461165
-20659  -76.7223641683575579    38.4257716668393741
-10104  -73.9796479999999974    40.7607964999999979
-26234  -80.3234707616160364    38.7819633964646826
-90717  -118.316958146096269    33.7934293243399111
-06471  -72.7723243067933936    41.3296803761141121
-99335  -118.514505515400543    46.6675610718685689
-18232  -75.882896182795804     40.8315057992831214
-70420  -89.9965388713069245    30.4895411108996441
-56740  -97.2068551875000111    48.9997177499999879
-19046  -75.1078371744839046    40.1007479213508375
-39476  -88.8898378257663495    31.3741818214265962
-42642  -85.0392545297707727    37.0538214605736371
-65344  -93.20126907982592      39.3062686835994484
-28375  -79.039599587500021     34.4776360375000124
-16028  -79.6328992875676249    40.9674252003603598
-27738  -83.5230101764706063    35.7427766470588253
-37015  -87.0692064735033426    36.2909135895011374
-35652  -87.3044489756234015    34.8447296429974926
-49282  -84.4083802590361643    42.048680042168634
-75094  -96.6148752362232841    33.0204675677810258
-93668  -120.261139475281752    36.64175234952301
-02919  -71.5044560649880907    41.8275829583828482
-23429  -75.9538053750000017    37.27647975
-56721  -97.0024153230566384    47.9334716892093695
-03446  -72.2942646766655201    42.862170898014206
-93063  -118.696030224668775    34.2803383506895116
-79103  -101.805580418076801    35.1851098926899439
-17952  -76.0566732547770812    40.7580196942674959
-84124  -111.818690627461109    40.6796303041768965
-30213  -84.609560609268101     33.5841025813358769
-01876  -71.2220138155763749    42.6048281902184911
-10577  -73.7163460639485066    41.0362340532187702
-97433  -124.181735071428562    43.2931060000000016
-59728  -112.407512047601415    46.512337351803744
-30571  -83.6854553571631783    34.6994083802030531
-04985  -69.8997315323529733    45.3405915313725529
-39208  -90.0899420442157037    32.2671200991714997
-97149  -123.972327919734951    45.1080234494194841
-57010  -96.8023209563064029    42.8113863303234297
-80731  -102.680864905179916    40.6085911553884458
-32073  -81.7441672084876529    30.1686140125236157
-30650  -83.4661668687246845    33.5922021452604653
-97631  -122.822365000000005    44.8336180000000013
-17313  -76.6497883780573943    39.8959683651187476
-75134  -96.7856315248643284    32.6183423108047066
-78164  -97.5056612322018879    28.9913503532697412
-32606  -82.4336293732906711    29.6801216448650322
-68378  -96.0075534759259739    40.401076881481508
-03110  -71.530537705691529     42.9408725892848508
-75969  -94.8661430026180454    31.4378914268612242
-40849  -83.1178772406417181    36.8943389786096247
-07452  -74.1253213600238752    40.9595800017926379
-10606  -73.7769065991420376    41.0224479923736567
-43013  -82.6919740728605603    40.2238354850856012
-15534  -78.6962433572896316    39.9161892144323218
-25031  -81.2837686124401699    38.1506806698564631
-63701  -89.5674355364240142    37.3370861457724814
-15216  -80.0366296927304006    40.4000516160380982
-74827  -96.3340781146245178    34.9465001363636176
-61259  -90.9236333359021387    41.3848250700063289
-32111  -81.755896694915279     29.4618214915254164
-48638  -84.0153475252293447    43.4209507211665269
-14169  -78.53215078260871      42.7654830869565146
-28589  -76.5088972550607309    34.7887103603239041
-15724  -78.8141086852865271    40.7320772430682823
-71277  -92.5713712567673497    32.9560974119578702
-75858  -95.1429104657534594    31.3946853150684966
-99654  -149.444804613072193    61.5865877641449444
-68305  -95.8477581844605311    40.3830359637411078
-92028  -117.211859419467359    33.3738961758428161
-62450  -88.0822933544432374    38.7233229798162313
-76113  -97.2534405000000106    32.7600534999999979
-99133  -118.982741478247135    47.9486117674491084
-51467  -95.1123900203442929    42.0698433719353488
-04563  -69.2547829212090136    44.0118806499612774
-44123  -81.52376910702489      41.6031852809993694
-30055  -83.7498257839445586    33.4976891896719238
-19002  -75.2097789935622529    40.1762873447522395
-28564  -77.615515000000002     35.2229019999999977
-45855  -84.5835397641025963    41.0874608358973958
-06094  -73.1459742909090807    41.9011563818181898
-18224  -75.8956906558616851    41.0178813358518326
-78585  -99.0905389774436003    26.5079366541353458
-02911  -71.4735390355257465    41.8548055108399524
-37938  -83.9436559870479044    36.1088878176171661
-76710  -97.1915728898844407    31.538305165542539
-83244  -113.025156214285687    43.8452534409938153
-24219  -82.7572166061684271    36.8560155134656569
-12883  -73.4590379088073036    43.8502265095412511
-73547  -99.3836951771770174    34.9664180750750901
-74888  -96.6875060000000133    34.9457340000000016
-25934  -81.093263052631599     37.8619034210526308
-54470  -90.2005782030612835    45.3211511744898061
-37615  -82.4508254548941437    36.4026858234151689
-24945  -80.6810149495933615    37.5294474357723544
-27317  -79.7972825478978365    35.8274248939459454
-56187  -95.5955678257935233    43.6230118633575046
-21102  -76.8581561501535617    39.6846256987715122
-65201  -92.2793643660883447    38.9235609081494687
-71927  -93.6396446666666833    34.5486229999999992
-95501  -124.155729379189523    40.7937218455507988
-30132  -84.8274341872975697    33.982444087203298
-80401  -105.222270352840326    39.7211395937098573
-41566  -82.1931819764419203    37.4038777627944086
-04632  -67.7399477499999989    44.6954051666666672
-78881  -99.5097361103104987    29.3614280426829239
-70749  -91.4142506747448778    30.6215967219387792
-66224  -94.6308398878448145    38.8633280649502311
-98860  -119.109156916586713    47.4448859165867702
-30705  -84.7799883265123952    34.7570981372110381
-97865  -119.1686748705621      44.4234609423078624
-91608  -118.358531120000023    34.1384502000000012
-86443  -114.302164083333324    35.938893500000006
-79057  -100.611716029205596    35.2259812348130765
-24569  -79.1261580151066539    37.0468495619048426
-36913  -88.4568074384615244    31.9356493000000086
-19808  -75.6654856671454894    39.7360006957420495
-78782  -101.799571499999999    32.1351620000000011
-93041  -119.183659586271361    34.1561692682699061
-30354  -84.3875845385482819    33.6634795127868713
-60475  -87.6268734870289876    41.4712539703520591
-61048  -89.8317310604904691    42.385127142779254
-10020  -73.9795635000000118    40.7591782142857113
-29179  -81.6014055625000196    34.5220875416666786
-02744  -70.9136974595343332    41.6092799933480961
-62010  -90.0498574158738592    38.9188385315765615
-73084  -97.3456192333574535    35.5202183367216335
-37142  -87.4980175865717484    36.4082089006120455
-44054  -82.0945754919197839    41.4711699101486886
-58469  -99.9203666666666663    48.9289933333333309
-36344  -85.7031476417605234    31.0974421753381023
-93255  -118.145282785502914    35.7013053343194997
-85750  -110.842864705906138    32.2960101261425692
-29112  -81.0786897127165105    33.6307031616117484
-36642  -82.6237376551724196    36.5808907931034426
-95973  -121.851411046086199    39.814423174127505
-13696  -74.9123498815789617    44.709996697368446
-85539  -110.889381462814626    33.3979952346666664
-48157  -83.4405841439874223    41.8113013544303698
-18444  -75.5122336427012186    41.3411731726127982
-47358  -85.1096760250090227    40.049903963755014
-83427  -111.900262917525694    43.485788070692216
-78340  -97.2083291540504888    28.1037720066400887
-56114  -95.6085080108625078    43.9732275865815438
-19607  -75.9510093135035333    40.2948692557866224
-45107  -83.9864367787672421    39.2805886780185745
-45624  -83.3425625481481518    39.1679733111111048
-32459  -86.1993000222364287    30.3591334091688942
-69103  -100.692715833333338    41.1012080000000068
-85243  -111.56236669418962     33.1632742859327152
-20057  -77.0871176338027908    38.9088205211267422
-56118  -95.0427882472382066    43.9570510391162372
-55614  -91.2681898650716619    47.3189781765551416
-66532  -95.3788894885412901    39.8233299676245238
-78844  -99.4849072500000062    29.63429
-39035  -89.1891577368421196    32.3038612631578985
-33993  -82.0176539282551573    26.684509575305345
-74050  -96.0643678355555011    36.0736196488888936
-29107  -81.1172845955334481    33.5271251381307138
-68310  -96.7491228638808423    40.2598409620401725
-75089  -96.5470388085053628    32.9286155011620849
-98940  -121.054426931812387    47.2602865157651593
-50311  -93.675103980904936     41.6017281494396016
-67068  -98.1181458296714482    37.6404941408787508
-88436  -103.10830140336131     36.1621922184874194
-38018  -89.7783393795778437    35.1409559035793535
-72060  -91.5869156584580253    35.0876755305139341
-95672  -120.988997296204815    38.7192015767091391
-53188  -88.2644829696628221    43.0204236480266431
-02664  -70.1969567319888341    41.6706881052100542
-56750  -96.2831149492592857    47.89409508037037
-27982  -75.4668450804597768    35.5665358333333401
-14008  -78.630688447070014     43.3141262230624164
-58001  -96.7269167647058907    46.447384411764709
-45221  -84.5196569999999952    39.1381126666666646
-23942  -78.3129884426719087    37.1484215628116061
-00627  -66.853554250285768     18.4690470091428409
-63547  -92.3164844584905353    40.147016990566037
-26212  -80.2589445555555727    38.7580574444444466
-70645  -93.3639450812624716    29.9881203646742769
-21001  -76.1898706185655357    39.5096043063543902
-36511  -87.7385370298102742    30.3208561070460725
-77002  -95.3661104927446672    29.7550503000000148
-85000  -112.426798000000005    33.5809309999999996
-65488  -91.4908233333333243    36.9971146666666684
-14482  -77.9750723167742166    42.979831916017055
-22737  -78.0139877247043501    38.5852826528566553
-90026  -118.264997663832844    34.0804413220460418
-38828  -88.8653575742018944    34.4258216730641351
-72211  -92.4208860520259492    34.7520752511859357
-91759  -117.598383061470884    34.2347432766191275
-33525  -82.2118059143939206    28.3417893955947058
-96707  -158.070935064814762    21.3258624722222265
-07463  -74.1258399239470265    41.0121037230889343
-93015  -118.909589085293149    34.3980195443624268
-49971  -89.6024854217289857    46.7402142184578935
-26039  -80.6651898261225426    39.831416103673476
-78024  -99.3837556527891337    30.0488227764158182
-97801  -118.762561778411467    45.6666243028308614
-36859  -84.9989836666666605    32.2115640416666693
-33980  -82.0567666346838251    26.9855496843276335
-65777  -91.9894899480610491    36.5368635948753635
-03361  -72.0223520000000121    42.7873795000000072
-26108  -81.4254225714285838    39.1975332857142789
-51446  -95.2870968082939385    41.7379898703748964
-40853  -83.3569315000000017    36.8468105000000037
-29485  -80.1779589789936438    32.9732917407757853
-90723  -118.163560551930402    33.8977638247103457
-04041  -70.8336836158039063    43.8548513453223379
-77619  -93.9165717742904462    29.9467062904841477
-79041  -101.89282776498564     34.0521379309230667
-77872  -96.0967691563666619    30.8913051583787421
-95944  -120.882169769491639    39.5245407322033699
-62842  -88.4000737516483355    38.4545737516483683
-97839  -119.665700452002795    45.4833269987286002
-57246  -96.6774539577205303    45.0552753511029209
-83554  -116.30647644850751     45.7140292309701621
-04693  -68.0855888657598314    44.3934902720283731
-15353  -80.316527666666687     39.9664713777777791
-57075  -96.9677054684105144    43.9825348375702774
-29823  -81.8193967777777829    33.8654184444444439
-57622  -101.497917000000001    44.6049470000000028
-15801  -78.7365025377201562    41.1316861662171718
-84644  -112.405638318777321    38.8833461877729007
-51526  -95.8558275702217912    41.3617784589229061
-12068  -74.3847519146977589    42.9562812043571682
-57001  -96.6356911965632577    42.9812538908468937
-46164  -86.1278723240262281    39.314933716981038
-45754  -81.3006107551020563    39.65225651020409
-57223  -97.0072329294835782    44.7155204913935904
-49796  -84.93915310165481      45.2678809479905624
-58514  -102.003737000000001    47.4580924999999993
-51444  -94.9721603857143037    42.0064013857142768
-52065  -91.1030777264408727    42.5725247874575743
-52340  -91.6758961504917096    41.7080573634032277
-91932  -117.117021891464191    32.5791387185202197
-47342  -85.5143780472786688    40.3217337751510172
-06880  -73.3491043844452406    41.143923024083179
-53037  -88.163632358541264     43.3214130491363392
-94544  -122.064679865999793    37.6343136419486228
-58707  -101.301964499999997    48.2451599999999985
-18419  -75.8020709746902668    41.5765673302498158
-35553  -87.4002758315674981    34.145194079826851
-15490  -79.4469137183787524    40.0706486345213548
-53063  -87.8001504635127361    43.9615845589413823
-51514  -82.3334791578947431    37.7441567368421076
-49805  -88.3885414214743435    47.3320882580128242
-39171  -89.690876805555547     32.851278277777773
-11553  -73.5918584378761551    40.7024909370552095
-79962  -106.582066400000002    31.8540998000000073
-55063  -92.944487685827383     45.8235523076811404
-79064  -102.13509099257665     34.1807377030568347
-54209  -87.2856032397296957    45.0259666471683673
-11565  -73.6728213909335068    40.6752682943999702
-57570  -100.857187617924509    43.2392452688679114
-20130  -77.9460236976026124    39.0270051933487778
-70372  -90.9629095957278935    29.8293829414557443
-03575  -71.4538891397589992    44.2608460963855634
-57018  -96.9840794641183948    43.8009183050160189
-49878  -86.8974140180959012    45.9039582848149337
-14513  -77.0945617881612719    43.0601511974195859
-05982  -73.2247323333333355    44.3878640000000004
-24285  -82.7967105666666754    36.9410852666666827
-80653  -103.99181533891732     40.3496560560567303
-33155  -80.308320885899164     25.7390237328341414
-51520  -95.4605070425790672    41.96812694160581
-55744  -93.522135463995312     47.2384672809790871
-97477  -123.015065954715482    44.0599520181561672
-98836  -120.430451022580641    47.4937467580645247
-72019  -92.6366733690431801    34.6032808081796404
-41739  -83.1225917853881384    37.3292433299086852
-44905  -82.4719847339956971    40.7757125382539982
-28651  -81.2756326328223935    36.2521509903156556
-78781  -97.7240885862069035    30.4925907586206897
-40023  -85.4172325936617796    38.1481240296095336
-07622  -74.4775793333333382    41.1443016666666637
-13675  -75.8448209402985043    44.2756250845771007
-81656  -106.877162595084144    39.2746236727037186
-25670  -82.1563618433782352    37.7253498779270586
-21071  -76.7829817037036975    39.4972353444444764
-49202  -84.4086387767183624    42.2640716984505147
-38964  -90.3706574072847388    34.0686371291391055
-63560  -93.1166151653645926    40.3535521458333406
-24177  -80.3710813597883913    36.6956386931217082
-60522  -88.6901254999999935    41.6162220000000005
-58765  -103.030565928571477    48.8594932816326235
-78545  -99.1060762860824696    26.5721168195876345
-76127  -97.4254866631016085    32.7788689429590221
-31015  -83.7932904493811179    31.9407690893664054
-54661  -91.4345121773912979    44.0067115834782498
-79764  -102.452635166504976    31.8754549836717587
-25276  -81.3348318513337745    38.7839125969676104
-12790  -74.5147358007065606    41.5916146251806964
-49761  -84.5204566595744922    45.563114680851065
-14004  -78.5126199130910294    42.8912604371715886
-52324  -91.7930166937552485    42.0460752968349141
-95827  -121.328650133886057    38.5668336937730132
-81524  -108.798093376874263    39.2311831056314162
-51631  -95.0061845811965071    40.6013518926282302
-38767  -90.7930040987654365    34.1465298271604993
-19141  -75.1458619359016353    40.0373409031708292
-77079  -95.6014101996742767    29.774610553382292
-54023  -92.5607679033852264    44.9783294146280923
-21613  -76.1099520189035417    38.5522957543194167
-38965  -89.6121416657668277    34.1491077389355411
-25717  -81.426290999999992     37.7673240000000021
-85748  -110.770673469952357    32.2145469658666954
-38628  -90.2549408181818222    34.390310333333332
-76567  -97.0066784410020801    30.6493817275383229
-05730  -72.8221283664400829    43.4168085482992794
-28348  -78.9264222011419605    34.948576222691031
-74571  -95.031931029638514     34.7461134937759368
-74748  -96.4424140706032773    34.1569607535301003
-29807  -81.6624975000000006    33.6732545999999999
-40374  -83.9043489922558194    38.2176219377452497
-27895  -77.9639304000000095    35.7192577999999941
-79401  -101.847935431859767    33.5906455825659975
-58384  -100.201276785539463    48.6171163600075076
-85310  -112.177924387258486    33.7000363268111371
-72533  -92.2477547482924649    35.9595665278048671
-55352  -93.6018864118431111    44.6602323494105775
-01070  -72.9220031579152845    42.5195679443796521
-77571  -95.0461569484616575    29.6577461241913056
-50582  -94.2965318906942116    42.7829533456425963
-43009  -83.6389706179342056    40.1671663579136791
-44403  -80.5766687371823167    41.2378122352434602
-95585  -123.666854626456839    39.8041233327505068
-89014  -115.065228090029436    36.0588419692086575
-57551  -101.71559496452943     43.1703917598908831
-35447  -88.1482655269159352    33.2531551411018143
-10518  -73.6095534543670738    41.2713241246320166
-57544  -99.843454259864032     43.8746340353741431
-70560  -91.8525703414841672    29.9885928212480017
-11042  -73.6948829036145128    40.7609028192771063
-12285  -73.2917056666666582    43.2836239999999961
-57769  -103.331900160875009    44.2334567229436146
-75041  -96.6431470600229829    32.8820216424422895
-76902  -100.664594599999987    31.5831121999999986
-25322  -81.7245819714285773    38.2610361428571437
-33915  -81.7671822000000077    26.6178367999999992
-64742  -94.547257842581061     38.516856465399016
-78851  -101.928168791071315    30.0472353303571396
-92272  -116.257817347826062    34.2058255652173884
-23325  -76.2397916142466556    36.8138622143311096
-12439  -74.2016719564459635    42.2898704024390213
-32711  -81.7336970909090752    28.5573090454545451
-88444  -104.367832791666657    35.6298748749999987
-41048  -84.7120023646851195    39.0898582464190056
-54474  -89.618586838224175     44.8829215647103013
-64661  -93.5378424860198976    40.5087793363486597
-16928  -77.4310110299441021    41.9481279582099518
-55307  -94.0973915649503709    44.6039970936845762
-18505  -75.6639395030211546    41.3914212331055325
-94510  -122.15667391587148     38.0736610674013747
-13418  -75.3824715555555116    42.8431077078189162
-48915  -84.5714744609377362    42.7377771683593863
-72368  -91.0134503095597438    34.806229807307318
-31810  -84.5452371487889849    32.5777657543252559
-62539  -89.2573375723921032    39.856810153300124
-89031  -115.169836054664714    36.2595442329356672
-14578  -79.9141923333333324    39.8897753333333398
-38972  -91.0730865000000023    33.5957395000000005
-39647  -90.6972051192176281    31.4947998720591791
-10171  -73.9745734999999911    40.7562020000000018
-63743  -89.8277450670102979    37.516446018900389
-33483  -80.064902748931928     26.4597502229202775
-32324  -84.803105046701873     30.6724046775637902
-33162  -80.1783441107643284    25.9295358082168512
-04863  -68.8412398612502443    44.0712705737312973
-57213  -96.545627916540127     44.5379262807283496
-15031  -80.1646934678029623    40.3494472575758039
-93441  -120.10930207969632     34.6832068263757094
-06834  -73.2466097894736805    41.1428882105263156
-36425  -87.209777993877367     31.7331128969387741
-25420  -78.1200838827777915    39.3801339043055378
-63703  -89.5456439992465789    37.2950351606631472
-78471  -97.392660499999991     27.7962912499999995
-22637  -78.3562690822318757    39.2633521733969957
-82062  -105.236713885714281    41.578028057142852
-72638  -93.4099695951098283    36.3373375487678345
-66531  -96.8310191196270154    39.3045566103001676
-12812  -74.4152788994709056    43.8568605978836317
-54425  -90.2926261685933156    45.0094756994219694
-97024  -122.441691557592591    45.5420033750498305
-60515  -88.0157701472210476    41.8065512817761231
-42754  -86.3118938281076424    37.4817331297043808
-73744  -98.3403684193548173    35.9677889516129099
-24601  -81.7242164285714523    37.1140041047619036
-71677  -91.4766145948718048    33.7758011076923168
-89418  -118.133025820379984    40.5947265112262983
-47610  -87.3828737855580755    38.0385916487965119
-28461  -78.0581128709280563    33.9533643711739757
-96020  -121.229484631033515    40.2850609780869746
-65672  -93.2325379086734642    36.5862158136190345
-18936  -75.2330484745762504    40.2289435593220333
-76469  -99.1966601475410528    32.3759489890710412
-54967  -88.9909684210526279    44.133667289473685
-73903  -94.3476050000000015    35.36146733333333
-61741  -88.4024135007002201    40.7614574666934644
-52213  -91.7798921471752749    42.1899447859266843
-64458  -94.14015886798515      40.5136561036878149
-38067  -89.0341368909362103    35.0948901263280533
-02632  -70.3477587085792209    41.6603327048318945
-82061  -105.1707544835443      41.4917998734177331
-04491  -67.437263999999999     45.5635688316062186
-93576  -89.41704266666666      30.2713963333333318
-06383  -72.0448573666666761    41.6047342833333218
-83346  -113.884873364500891    42.2338351473851006
-14753  -78.6261942015342044    42.0268291520222874
-11953  -72.9493871357385189    40.8868433057603369
-99620  -163.552967999999993    63.0345005714285662
-34653  -82.6953391862787583    28.243798945175687
-02325  -70.9613967916666724    41.9933868333333393
-79786  -103.795966166666673    30.9420839999999977
-84112  -111.842514548192767    40.7644430286144157
-96080  -122.319243688817437    40.1846224732772086
-18218  -75.9089555718653912    40.8263180846075642
-02872  -71.3152668625072153    41.615229991912237
-87023  -106.759879378120303    34.6054079581497973
-06779  -73.0853803245485665    41.5922632990435162
-46808  -85.1677825465699243    41.0959453470813827
-73122  -97.6147935770678288    35.5201285490810292
-29067  -80.5415296518233674    34.5415415210677139
-14134  -78.5182800719424279    42.5345246258993015
-47244  -85.6997445838274814    39.2320798237196655
-64652  -93.439294752168351     40.0169372354398973
-78574  -98.35561210335851      26.2869217471012604
-43072  -83.9546878822587814    40.1203041084944019
-75980  -94.3715287298808647    31.1443223666925597
-94512  -121.852332233516492    38.1309312609890299
-28470  -78.3850014183242791    33.9508848777126104
-84756  -113.535124101562403    37.7060735093750168
-26546  -80.0333755955881969    39.6663079154411804
-27862  -77.1893012648536114    36.4898530744900782
-95802  -123.104936833333326    47.0269916666666745
-46914  -86.0981842846225192    40.6362521881566536
-24894  -81.6969389127516905    37.2918151610738278
-35756  -86.7960405297943396    34.663727064587043
-50611  -92.9050690598005957    42.8012128571428789
-55404  -93.2620584398321029    44.9623353777985457
-17229  -78.0126831663420006    40.0810624869134173
-50469  -93.1915741185610358    42.9932643512132628
-20224  -77.0267680000000041    38.8921650000000056
-03904  -70.73447540163653      43.103975096584783
-50232  -92.9625260286021415    41.5531700100107599
-38752  -85.9550647142857116    34.7174658571428481
-47434  -86.5477687042253194    39.0129788873239605
-20052  -77.0481594767442033    38.8982727558139416
-50801  -94.3807117632069179    41.0805936169420676
-03720  -71.5094579999999951    43.4844009999999983
-48327  -83.4101543776000227    42.6413754816148298
-66512  -95.5464294793578119    39.1957451963634398
-70736  -91.337866320158156     30.6382041897233179
-87710  -105.289179460972179    36.3726515355915083
-99790  -149.093603500000029    64.557417749999999
-51451  -94.6984172660944381    42.1802516309012816
-74470  -95.1384787281795639    35.5093786433915355
-52252  -91.2249562631578783    42.1909435000000101
-39862  -84.5354780244389161    31.4144694523690475
-62075  -89.2887309451744358    39.2974425953083184
-53959  -90.0008484081830318    43.5392401773015791
-07960  -74.4939345266379433    40.790329377015162
-03752  -72.1257178375284411    43.2990301171625021
-46778  -85.1525397441860719    40.6119862325581522
-55807  -92.1705718082975238    46.7398680883317752
-71154  -91.1699459999999959    32.8075256666666633
-82224  -104.860555640642872    43.0020374925372622
-14739  -78.149634667865655     42.1898707851718555
-29104  -80.2189271915223543    34.0031189378094183
-61528  -89.7305238620806449    40.7754755731543455
-70422  -90.4850031192128199    30.7342508907512695
-76569  -97.2303728030634744    30.9437665070334624
-97220  -122.559961619409805    45.5446775777376871
-68049  -95.9494713333333493    40.9177356666666654
-22180  -77.2541830911643643    38.8947814359493975
-25965  -81.3125555964912223    37.7479911403508765
-10025  -73.9673065790032496    40.7986369427359037
-10505  -73.7455259880597538    41.3414158328358496
-39332  -89.0129583047473147    32.3102196572230369
-95232  -120.574537729273587    38.3558323939838957
-31000  -82.5761468000000036    31.3069720000000018
-48006  -82.6934719373296474    43.0685998410535618
-39402  -89.4041276515723666    31.3142986106598151
-36921  -88.236817913881282     31.9543996260322203
-20818  -77.1611523578791463    38.975494703976473
-46074  -86.1645894624778208    40.021402306626328
-50644  -91.8911316931537385    42.4718441464644698
-76256  -97.6380471999999884    33.6393498000000051
-45056  -84.7422078838662003    39.4921237779869898
-26267  -80.0932330350877066    38.9448718175438984
-10467  -73.8694161841390411    40.873794733297153
-73722  -98.4122740839160741    36.8965555594405501
-93084  -119.155551800000012    34.2788292000000041
-30520  -83.0895886329606839    34.3422095652456747
-61818  -88.7318584148093379    39.8826834701653397
-99640  -154.861212018181789    59.9577413090908991
-67568  -98.3098993068525289    37.9905926884370047
-28625  -80.8929056020867705    35.8544270065468567
-85204  -111.786277503826412    33.3971896934913062
-54160  -88.0981630900900825    44.1195337207207317
-59644  -111.467756291463658    46.3565449548852371
-59231  -106.545044572254184    48.404153221579989
-04054  -70.5966568461538486    43.2785089230769202
-16032  -79.7608857000000029    40.81764376666667
-77538  -94.5852629016978597    29.9944416809651422
-55615  -90.8247260146430477    47.6187900707749918
-16544  -80.0791414999999915    42.1110605000000007
-52537  -92.4147224476616458    40.7720921127192213
-91345  -118.459581392556871    34.2639940097086821
-47360  -85.2572765501982843    40.0126490952920761
-48126  -83.184990562438216     42.3312633230921165
-30103  -84.9213741977214056    34.3707634781735933
-26761  -78.6996330268596154    39.2741007830578326
-57385  -98.314477357995969     44.0427929753371927
-26035  -80.5540708716834502    40.3502802911711029
-90042  -118.192470720064833    34.1154194243821749
-27291  -79.159809260645531     36.4045531092590622
-87131  -106.617880571428572    35.0903123142857183
-49409  -86.2151108888888871    43.0803501944444349
-94519  -122.012198250163991    37.9824464073051402
-32216  -81.5824271228709534    30.2847972949202244
-41014  -84.5055193651329972    39.0663559055690186
-48891  -84.9185986593075626    43.4017405303562285
-54466  -90.1830739903708576    44.4281965739215678
-28152  -81.5844389584732284    35.2499799264398135
-24142  -80.5477659999999958    37.1388965000000013
-33945  -82.2101555750000301    26.6085875395833504
-15428  -79.6663571831325896    40.0744326179001433
-67832  -99.9052976874999956    37.8169936250000021
-04783  -68.1776920043209316    47.0178816740741183
-56430  -94.2380889090909051    46.689401636363641
-50067  -93.8563649019886412    40.7199235596591009
-97257  -123.347150571428557    42.398646428571432
-07831  -74.9440541153846169    40.7390275769230854
-28709  -82.4320361866895439    35.7666239910218735
-33823  -81.8024505668428361    28.0842392792045246
-65662  -92.5807712852759437    37.4281498950238216
-96774  -155.273190499999998    20.0103183333333341
-24466  -79.6100986363636451    37.9821300000000051
-40434  -83.9298465185185023    37.3881247037037028
-13162  -75.7282115229007644    43.1904817900763263
-32193  -81.666263234848401     29.4839279666666769
-73774  -98.3506012499999969    35.9689479999999975
-56161  -95.3234725159237684    43.7130508513800535
-58008  -96.98552939935594      46.2939355499195742
-35576  -88.108071517254686     33.5748304848039467
-95832  -121.490083937278712    38.4690770930703536
-74959  -94.6110555014417258    35.2471983309984651
-82934  -109.850998165584485    41.5603247662337552
-61561  -89.2026905735416307    40.8017684502875255
-39735  -89.1948378436171367    33.3464669923788009
-49233  -84.3696730186536854    42.0596892681053802
-15501  -79.1224408808211734    40.0290044574216708
-35526  -87.8716314117647102    30.645158117647064
-30230  -84.9245884442185286    33.1704381976941889
-30083  -84.2013395683176498    33.7918253297528395
-43345  -83.5834876197720575    40.5168558471482783
-61070  -89.4712702727754134    42.4149161038136171
-15345  -80.101788738545693     40.0242026633039316
-49730  -84.8663238470129926    45.018744808121582
-97496  -123.472982025648903    43.0743132645039353
-87083  -106.337743376237626    35.6483908382838095
-95303  -120.674549137291194    37.458402837662284
-83886  -116.53493828571429     47.3026898571428589
-63860  -89.5761781712328968    36.6646713013698644
-78214  -98.4884676668081056    29.3614366477199873
-50103  -93.6049833627451022    40.8004319425770277
-21053  -76.71240490437566      39.6934145325508112
-39483  -89.9285637305818994    31.2319073521377391
-28742  -82.6053363296743015    35.3588092912521432
-49841  -87.4318313111600531    46.2991370800270161
-60505  -88.29658738252256      41.7617945816913192
-04011  -69.9696094698754933    43.8998250413517255
-07847  -74.6230300636254924    40.880526860744304
-28528  -76.5397071725489866    34.7295119803921608
-05047  -72.3400001566265161    43.6625980481927982
-03251  -71.6538540211080743    44.0538917331323105
-16910  -76.8285403529411468    41.7061938382353006
-02536  -70.5653867482119068    41.5879883436132616
-76085  -97.6963081588600915    32.8485427609532579
-00793  -66.2890096666666722    18.2435893333333325
-61042  -89.5683394162162614    41.6901349231231748
-85942  -110.040314453488364    34.7634870116279089
-33322  -80.2744276731576463    26.1480907093619059
-05858  -71.8139565839736207    44.5123770559824479
-43933  -80.8888681604701532    39.9389101439805856
-82218  -104.126461694444458    41.903038583333327
-50558  -94.1697389013989579    42.8681111685543428
-38316  -88.8074647778713171    36.0643793769458938
-14653  -77.7324844999999982    43.1534400000000034
-04463  -68.9408034071040419    45.2429949456947895
-95128  -121.936528075879167    37.3171672189698995
-58845  -103.877088797164546    48.5566447371865664
-28135  -80.2174843453202726    35.0619985389011362
-95930  -121.163251443381156    39.5408445438596274
-19804  -75.612370791718206     39.7208797983569681
-67452  -98.3849974911763496    39.2561968647058777
-78661  -97.7470028162392879    29.7333177820513015
-63439  -91.8449329761526627    39.8030202098569035
-63128  -90.3757471210482493    38.4969563239155121
-75726  -96.1503757500000091    34.0168012500000003
-78652  -97.853656510231545     30.1340959466192047
-79756  -102.896666908881983    31.5775253086623131
-54960  -89.2186527471429258    43.9647668142856674
-67835  -100.331913283273579    37.9481235023980119
-54864  -91.8018946865613827    46.5982822864844124
-13093  -76.3551166451612886    42.6442435806451527
-32133  -81.9739833020833544    29.1095608333333224
-19043  -75.3089277663158043    39.9006941357894505
-38392  -89.0319341462216158    35.4685386053313536
-89765  -117.850936500000003    33.9768435000000011
-17765  -76.9621872080202536    41.5831546430033256
-70513  -91.9075696774194171    29.9070623306451608
-25917  -81.210343748805883     37.9603775574656552
-96092  -122.115137789757625    40.0189732331536447
-23022  -78.2673431910230306    37.7432634391092705
-01590  -71.7481479851929862    42.1412123231876592
-50520  -94.3990843653543266    42.7989623401574661
-21769  -77.5497511860654924    39.4450156811474457
-79015  -101.924402034823004    34.9921316349618081
-10452  -73.9217984035248605    40.8384840166975991
-11795  -73.299384439218656     40.7091594126683702
-26385  -80.365255915228218     39.162530681566011
-41390  -83.3787574497206521    37.4210045474860209
-16247  -77.5799994999999996    39.8014735000000002
-84524  -110.855737000000005    39.6839525000000037
-43333  -83.9147182885019447    40.432443429852313
-96759  -158.061427278846168    21.4596604615384692
-70756  -91.6154505765766771    30.5573144864864901
-73658  -98.7063322925531708    35.9417248510638245
-52761  -91.0426243730543234    41.4361386615274583
-63548  -92.5132868062929958    40.5231795054080237
-48457  -83.889751207384279     43.1894298046928995
-86018  -111.951164712180017    35.2728653560900085
-80745  -103.362472366291939    40.872893416479414
-52804  -90.6318170801940823    41.534832576507398
-11754  -73.2442896052973111    40.8840640775016979
-99684  -160.792115272727273    63.8774702727272654
-41074  -84.4677708533047706    39.1100773078891208
-47649  -87.4417322088067124    38.3469126278409362
-24229  -82.3710006666666601    37.1508149999999944
-85238  -112.026130665030706    33.0373317251534147
-98101  -122.333910049504794    47.6111742673267528
-63870  -89.8304755491936078    36.6311407427419056
-58275  -97.1199843555226323    47.6983335767944752
-31032  -83.5598835441004866    32.995427176088036
-14424  -77.3108662225333774    42.845527178424156
-29016  -80.9838939794198183    34.1945487644578208
-29208  -81.0316258487394379    33.9931287899159571
-37777  -84.0355124391949886    35.8329489828851919
-37719  -84.4309238966566085    36.0266775197568236
-24448  -79.7903779155844148    37.7987394123376532
-67640  -99.0414386766744883    38.8834497840646449
-36755  -87.2233475000000027    32.4573443333333316
-38506  -85.4551418259803626    36.1717788229943196
-47362  -85.3702352308787624    39.9291487062236996
-76624  -96.9602000611286741    31.6603988746081662
-00604  -67.1384295000000009    18.4999669423076938
-03840  -70.8473909427861344    43.0377493004422433
-96122  -120.468283682716802    39.8229053197417429
-11559  -73.728086800949697     40.6126853308271052
-17317  -76.5212946685714854    39.9719371314285752
-47874  -87.2725505388146559    39.6187504870618525
-29520  -79.936715293283612     34.696493649004907
-03662  -68.2829938125000098    44.293118312499999
-50237  -93.3634824620690438    41.5360942344828104
-12528  -73.9946467752211561    41.7196676584134707
-59250  -106.420144090232483    48.8426719767442066
-80432  -105.780754134900491    39.2129561391159314
-60479  -88.5217168348214187    41.231573475198438
-47356  -85.5184132801299626    40.0359324009439987
-99157  -117.807623950345473    48.9070367039597826
-87576  -105.758244882352955    36.1321128823529349
-55030  -93.1033677744154602    45.8390249170106046
-61235  -90.0262542167249933    41.4042900223177881
-28730  -82.3887871412805453    35.5299038005447088
-06249  -72.246147579810966     41.6298761815588989
-33036  -80.6501661480637182    24.9102410315652634
-18046  -75.560160530612265     40.5486205306122471
-78938  -96.6990355737102618    29.8409352432432158
-78350  -97.9712664999999987    28.2435386250000029
-54482  -89.5045717245772039    44.5346641487791501
-85259  -111.817888780248197    33.589308971484563
-30043  -84.010038122421463     34.0044781621365004
-30906  -82.0308277199921463    33.3959680601070872
-66053  -94.6738281607009782    38.5944716062818927
-97432  -123.428083573333282    43.1039987733333305
-25703  -82.4189456254152617    38.4212655049834595
-50059  -94.3456203829786944    41.9193669148936152
-74221  -96.0222784999999845    35.7612361428571432
-28702  -83.6116555040136973    35.3846025156728459
-95545  -124.086756275315423    40.2565514713513792
-53804  -90.898871569595201     42.8715212833168522
-30331  -84.5417045224674553    33.7073229026279932
-50242  -92.6767559577532012    41.5680189035044663
-16131  -80.3754039074257207    41.5465879217822476
-42120  -86.2661792804645131    36.6719451633411992
-35615  -86.8810660666666621    34.6579715166666489
-81226  -105.129955441910695    38.3640383949733064
-87573  -105.66483653008126     35.7801053951219572
-12520  -74.0155850579639889    41.4389047320993811
-45267  -84.501600499999995     39.1367469999999997
-17365  -76.9396993830243332    40.0549984037089644
-19032  -75.2810411941439099    39.8929200763844563
-82209  -104.653436567901224    40.9630374938271444
-50222  -93.9537208638574413    41.2281670267423834
-49872  -87.0855861713287425    45.9883051713286761
-68927  -99.6419625721605229    40.5303904372330592
-15540  -79.2429278821105925    39.7854738004946853
-50420  -93.4451528547294856    42.8180905054053795
-88136  -104.721435436000036    34.4203066920000111
-28144  -80.4705827257050288    35.6896954098457329
-43821  -82.0152915915789151    40.1342291160148861
-53034  -88.6045802777777567    43.3446085355555581
-15824  -78.823988421428993     41.2409038201929761
-98353  -122.545135628571416    47.5541802285714184
-56758  -96.5047935028208599    48.464586170713865
-57857  -83.0729851250000024    36.3826664999999991
-24345  -80.6253886666666659    36.7314783333333352
-55753  -93.0788993410042025    47.3970026422593662
-27538  -78.0661462500000027    35.3648205000000004
-66442  -96.7972261846153685    39.0817124512820371
-24976  -80.5164094879227719    37.653844589371964
-80863  -105.077086927175188    39.0054893744256077
-45316  -83.8263617899159641    39.7972899495798274
-84138  -111.670363516746406    40.580820392344485
-72677  -92.6930922550789944    36.2547821060948223
-46761  -85.3660037249100014    41.6310119356209398
-05439  -73.1619780624999834    44.4963545000000025
-48082  -82.8899429306599274    42.5258249540517852
-38642  -89.346902715478933     34.9196194419210428
-76834  -99.4494140857313624    31.8528966505432258
-10475  -73.8269905260805075    40.8780870134127667
-13077  -76.2070248285673983    42.7051752321989539
-05495  -73.0955182421488558    44.436930419154443
-51564  -95.9131251046714794    41.8132417238319434
-77355  -95.7434157887332447    30.1571230697229105
-77335  -94.9250680680485885    30.5930642192022297
-75218  -96.7014591121262583    32.8432378484811949
-78419  -97.2720045918367759    27.6914042040816391
-58541  -102.063513879858633    47.3432909770317991
-55805  -92.0962006133530764    46.7994912284865947
-72018  -92.7423590999999874    34.5594284000000016
-32435  -86.1243152012028474    30.6870241903238252
-04351  -69.8661942106490983    44.3304647171881996
-57369  -98.8664432689777328    43.4063650352439012
-35564  -87.8464696979512638    34.2660325197348783
-75772  -95.3082811666666458    31.8162173452380941
-39482  -89.5786037086050015    31.3625383234702895
-18923  -75.1836509148936614    40.3630314057751178
-29118  -80.8877710414107582    33.5533158332651453
-19375  -75.7455633595505731    39.9035652752809042
-19473  -75.4694951985449478    40.2542142621349086
-75217  -96.6739001235941657    32.7221696960840163
-87577  -105.889867216049495    36.5901181893003837
-85534  -109.138378191251562    32.8173003512132908
-55384  -93.6310275707071042    44.9364416060606331
-28678  -81.0623769743025093    35.8398828562077938
-38311  -88.1083534160366639    35.4379449362212782
-76871  -98.936884187431815     31.3167315010929208
-98640  -124.04689005786777     46.4999948144670512
-05101  -72.4756700751849792    43.1629986937534156
-06890  -73.2879027767885276    41.1442159472178233
-93901  -121.658271506074485    36.6669013833738333
-65049  -92.6901208588573127    38.2009320307094313
-36036  -86.174408008732641     31.980626181762787
-26524  -79.804547234234235     39.5420811621621624
-55795  -92.8455283392628843    46.3093182009208633
-02025  -70.8136452908012473    42.2424594091464485
-79935  -106.330152464743676    31.7732052084936178
-87442  -105.413451846153848    35.8037490769230828
-54963  -88.7553066150442476    44.0451986429395532
-71418  -92.0738383620063274    32.1432806770154187
-76570  -96.9470316511028471    31.0922276977942005
-97218  -122.600736373329212    45.5629328277643708
-65432  -92.7292243333333204    37.4773798888888834
-68768  -97.0599088888351531    41.9891847327211281
-36908  -88.3073854595897387    31.8902870963303151
-77087  -95.3020803177716829    29.6858884470379785
-72851  -93.4538819576268622    35.284160617907169
-78663  -98.3001851156829218    30.4107904349452625
-58453  -92.5921857499999987    45.5299949999999995
-82421  -108.593625954770644    44.9110504981412362
-80138  -104.689649817505384    39.5152455281631703
-92707  -117.870748509854138    33.7169283225060354
-15204  -80.0596812766688828    40.4556824050226282
-43542  -83.7508471686086438    41.5603443947908957
-77560  -94.615514715863398     29.8703452821285111
-23980  -78.9449675000000042    38.0791204999999948
-28628  -81.7859428504465171    35.7284068370536048
-44443  -80.5916895639651756    40.9225146845278118
-38655  -89.5032743820534904    34.346351606650444
-29525  -79.5354468643476764    34.5806125986085959
-47564  -87.098277066834342     38.4750571862417061
-03044  -71.1230705245086625    42.9883795370330688
-92083  -117.246623223325429    33.1932050479568872
-04938  -70.1157736666467883    44.6545490720765272
-38482  -87.1402462254645371    35.7695689397711334
-99571  -162.204502789473707    55.4720060578946956
-14756  -79.4217385730994181    42.1982841637427057
-78560  -98.4700043257965376    26.2410800842754348
-53203  -87.9147638523623272    43.0384253543307267
-61020  -89.0921013821527481    42.1037111113759153
-27881  -77.4495558774510187    35.9694740833333455
-17822  -76.6202151111111078    40.9806724999999972
-99599  -149.880448000000001    61.1865485000000007
-13464  -75.6075143634374882    42.6806119631250809
-18962  -75.2696094017857291    40.3467104017857281
-35040  -86.7398469971086712    33.1099215783247516
-66840  -96.9187792562634911    38.0529329551647777
-21309  -76.339379749999992     37.4004639166666593
-14387  -77.0863630000000057    42.4963682499999962
-47447  -86.2817667999999998    39.2674984000000009
-64066  -94.1321065555555521    39.1304753333333437
-62832  -89.2345982229103498    38.01169409664341
-74452  -95.0782165814814562    36.1119080141975743
-53584  -90.2920003125000079    43.2815965000000062
-47305  -85.3844920676327632    40.1930007869028714
-88114  -103.240729787234002    33.5311412127659594
-44325  -81.5150598214285793    41.0763677142857091
-60305  -87.8168722489625537    41.8944870487552237
-43314  -82.9584160706621674    40.6390932067220305
-22182  -77.2681617406548327    38.9317315168695401
-13219  -76.2253281748035363    43.0402802756913658
-83547  -116.364729078125137    45.3097362585227472
-15368  -79.9913456754386516    40.015602307017538
-20778  -76.5589187467787298    38.8341594952380618
-71750  -92.7054720000000145    33.2469601111111075
-54742  -91.3375216972567614    44.7604930935161178
-91602  -118.365738835010134    34.1512978209254854
-53562  -89.5259633680934428    43.1065568916210964
-83272  -111.319518761904945    42.0862284555984019
-92371  -117.539787502588041    34.4635409784606637
-05344  -72.7350235558194385    42.8542529619952646
-91355  -118.562484671178765    34.4109519491259732
-19382  -75.6018208888085894    39.9314332334797086
-11741  -73.0701944805365713    40.7961415834024521
-32837  -81.4169470983612342    28.3774191255383315
-28659  -81.1083260844195308    36.1804553722040581
-74472  -95.2531180432099234    35.252495546296295
-87042  -106.688619221780698    34.8255276435054526
-62860  -88.7240397905218714    38.0427933495878676
-35567  -87.8638844259259599    34.2303513333333385
-65011  -92.7285503706445695    38.3700951729676447
-02889  -71.3924076301829018    41.7079884712850983
-50038  -93.8927312133332634    41.5166923000000381
-01550  -72.0344513974820728    42.0704955445305444
-24132  -80.6215252585033966    37.2117661234207731
-17303  -77.2897310799999957    39.925572399999993
-01350  -72.970583006694568     42.726408194979058
-43357  -83.744485412249503     40.2612825089676818
-48640  -84.29352365482859      43.6118378591870481
-03513  -84.2693473333333287    34.7892296666666638
-62912  -89.0406969382541291    37.479864469836734
-59318  -107.522700653295033    47.4678921375357845
-56263  -95.5519487388723547    44.4150666988130922
-98946  -120.700852554036544    47.0752677819010259
-39404  -89.3317057368420961    31.3095378947368417
-69317  -96.5017914999999959    40.691422750000001
-60136  -88.3651448507542767    42.0913302559266924
-19611  -75.9432029279632275    40.3245744687721057
-98446  -122.374677540306351    47.1235944582828594
-93133  -121.850494000000012    37.3799399999999977
-24102  -79.9964222440116117    36.8420295761737506
-53964  -89.5157403308899262    43.8925086984293387
-32351  -84.6416148469962337    30.55126651791117
-17856  -76.9240254681941877    41.0574366096042738
-57754  -103.806419085627098    44.3124010609858416
-47036  -85.2351992579670394    39.3873060000000024
-26685  -80.695142897435872     38.0941043846153846
-79631  -99.3101734500000077    30.4568224499999936
-87552  -105.682858717527949    35.595158743119292
-91746  -117.984391233723201    34.0467456629697907
-31030  -83.8800178137727386    32.5717370585839063
-71672  -92.049753999999993     33.6136077499999999
-88575  -105.636273466666651    33.4074116666666683
-28016  -81.2841708867694734    35.3146656708859581
-45828  -84.6545775478122806    40.4839132046768171
-93237  -118.908381468208106    36.4704301560693622
-29011  -80.7269165000000015    36.1964593333333298
-16744  -78.5763043359872455    41.8774395127388956
-84753  -113.895081610169512    37.8215836876513478
-52070  -90.2115103043480815    42.063461288800994
-17118  -76.519685071428583     42.7630504999999985
-72940  -94.264650018293608     35.1129211871750115
-54110  -88.0461174149051118    44.1728954664994333
-48861  -84.9086744564199023    42.729342261480781
-19330  -75.9177754837469934    39.8717681782150066
-25764  -82.4315712857142984    37.8966387142857144
-11220  -74.0144368553644654    40.6407102756371472
-52807  -90.5342020288323113    41.5787068985347332
-56464  -95.0778412067469674    46.7736833704621944
-12469  -74.2345320389298706    42.4439431112967114
-14373  -75.4205243333333328    43.6224203333333307
-48726  -83.1779167760569464    43.6024560676015867
-19544  -76.279993349999998     40.4277346799999933
-46922  -86.4167958548387674    41.1392521129032147
-22181  -77.2922183079431449    38.9022783526970741
-28745  -82.9748518161082842    35.5203893232359746
-39861  -84.9794430349616476    31.1256219315134146
-64658  -92.9356767202380496    39.699888018298104
-47637  -87.1383592911265055    38.1264902445164537
-42135  -86.5775119565217324    36.7230026086956585
-39648  -90.4181606092209194    31.2129119089893869
-40003  -85.0362598141591093    38.2677325535121682
-63454  -91.6499763578810445    39.9293870430662636
-04222  -70.1218796156605748    43.9657479225934154
-79844  -104.316708608695649    30.8879772608695689
-44275  -82.1007958423238051    41.0993802049792336
-17887  -76.8829636991150238    41.0826421814159204
-24421  -79.1659805085215424    38.245402653615983
-04926  -69.5376264089068883    44.4250942874493902
-31551  -82.2703747763159328    31.4934919429824483
-65738  -93.4807421426533836    37.1256509235164245
-04658  -67.8697069922395997    44.543803377771539
-27582  -78.5681360902777755    36.4537907604166378
-70009  -90.220091999999994     30.0051120000000004
-73049  -97.2986466340836245    35.583670794256328
-00660  -67.1147528873739958    18.1336375969176409
-70733  -90.7909832488730899    30.3069164401601974
-20779  -76.5758530432123763    38.7635241402364841
-26228  -80.3702049076923402    38.7525718102564198
-72022  -92.4929343077974835    34.6130626793645746
-93020  -119.157360000000011    34.2138635000000022
-07035  -74.2992347819860299    40.9224264988453612
-97465  -124.479737021827518    42.7473077977156706
-42232  -87.6589654806980292    36.8558635219461266
-32904  -80.6708953154765283    28.071125355821561
-28791  -82.5045385916661616    35.3516243471256004
-61361  -89.7471894276357176    41.4082892583788862
-50135  -92.8850996669847859    41.7364151140267055
-12723  -75.0237054357694433    41.7721646212625899
-99164  -117.156080111111123    46.7306028888888889
-94596  -122.043378352339147    37.8906379577678791
-13883  -76.5092869000000064    42.2070125000000047
-95006  -122.139343625260196    37.1614976232263743
-83464  -113.432928433080761    44.6871585147306192
-47035  -84.9018567850877162    39.312425521929832
-27792  -75.8048233333333314    36.3044229999999999
-18833  -76.4374361232608663    41.5904625643953381
-93243  -118.880805981657346    34.8331264081231708
-47011  -85.0761557291520489    38.8687108622985846
-74720  -96.3820332387542749    33.831162882352956
-21766  -78.3714262894192473    39.6714075596474132
-77664  -94.3946593937130842    30.6091103471947754
-53559  -89.0781007180909086    43.1685342042734916
-21836  -75.7601623928571541    38.1058811785714298
-72717  -94.4231429112475098    35.8425159372034372
-51577  -95.2102136716383001    41.4559764789512286
-11385  -73.9072085312976981    40.7037895587786025
-97710  -118.471416035087728    42.1940029502924077
-57649  -102.821687367592588    45.4979432777777077
-64427  -94.8233550196629409    40.1212243584269999
-50864  -94.9806711751170383    40.9628002615024087
-47367  -85.3906867580645326    40.0791512258064415
-07031  -74.1321633997832379    40.7904161776814504
-19317  -75.6012411162511171    39.8584926894316851
-16256  -79.1357300732132387    40.8626100002905304
-81081  -104.184608388435393    37.0975484673468756
-78006  -98.7085149037351357    29.8259200975489733
-91342  -118.423355037148482    34.3064228715842674
-99344  -119.233867120241555    46.8353326737908944
-46111  -86.3691968333333477    39.5395807430555593
-58054  -97.669144683299379     46.4315769925323707
-72655  -93.1312153564356038    35.857170732673282
-77802  -96.3321624075076386    30.6579207236024338
-31071  -83.530338049398523     32.1378334737972864
-66223  -94.6672783439476291    38.8591984317572283
-34636  -82.2709127222222207    28.6649232777777776
-62088  -89.7901851188200624    39.0147376754524231
-78068  -101.310991000000001    35.4443395000000052
-82831  -106.069568147607683    44.5931017688995723
-42140  -85.8223816325167093    36.6585400268852197
-55604  -90.3799584402860887    47.9004300359678226
-88052  -106.599862275132196    32.4252871375661229
-66615  -95.8435166235194487    39.0511343288212416
-20191  -77.3508598627310135    38.9345731337548457
-08875  -74.5202847567567659    40.4535855135135307
-29802  -81.5714731249999829    33.7250849062499967
-39529  -89.627200000000002     30.3586023333333337
-27897  -77.2032489544547644    36.3313283430116272
-44308  -81.5181766971214614    41.0804685707134496
-63362  -90.8970247781270189    38.9368887582111043
-32580  -86.496360031496323     30.5069455787402042
-75074  -96.6753396084974526    33.0330015308049596
-50436  -93.6519681485350191    43.2677572639506707
-81419  -107.748575490405401    38.8468893203837453
-06763  -73.2137271997573009    41.6895887599271973
-68863  -99.5308396924309591    40.7616984925372989
-28786  -82.9944013776555494    35.4792960689526282
-45431  -84.0821082783945997    39.7629001970178706
-15733  -78.9620251022727331    40.9841470795454654
-47613  -87.4305402444066999    38.1546627861017171
-66412  -96.7727516918326245    39.9162233678791978
-59480  -111.143928579784713    47.2699096481048429
-89431  -119.754247696939018    39.5449670916021248
-19036  -75.2943395821263408    39.9035610409860908
-28274  -80.8313957142857049    35.1884611428571432
-60102  -88.3105455727678788    42.1645067407837146
-57722  -103.205240348484878    43.5329631045454448
-76706  -97.1204037510640745    31.5018565272690729
-33563  -82.1293543136999915    28.0157123922321531
-60656  -87.8147405824084899    41.9745541504058508
-21054  -76.6735337117290356    39.031178615186441
-01501  -71.8399172176690115    42.20248824091221
-15084  -79.7960994558770551    40.6266583974513651
-12987  -73.7751486666666381    44.3347257240617623
-57059  -97.7301398376014419    43.1366693591504529
-80550  -104.913630440241761    40.4771972188936502
-18910  -75.1896106065573662    40.4261133770491838
-68467  -97.5881365205554516    40.8684608430326222
-14873  -77.297443003373445     42.5207258527428351
-33478  -80.2138021248381108    26.9363454995376301
-13835  -76.1712467523339427    42.3817728737034258
-59716  -111.353131807566086    45.2668588082547316
-27936  -75.6137037365785005    35.2444399835360755
-97909  -117.463576388297881    44.2018938829787089
-26354  -80.0288834539557001    39.3492553286572004
-14815  -77.0882108334988914    42.3783577490897088
-27509  -78.7626986288521493    36.1338615868691093
-80031  -105.038863614531436    39.8764197504951667
-96778  -154.927720236504001    19.4867611079691549
-18766  -75.8888560000000041    41.2453918333333363
-38281  -89.0509166666666516    36.421835333333334
-44302  -81.5397673747166891    41.0904875782312828
-42055  -88.1624959045297913    37.062284886096883
-73066  -97.3314462499999991    35.5007690196078372
-78242  -98.6121366279220837    29.3509903766234324
-85742  -111.048426448224646    32.3820625151025112
-54467  -89.5360434236587395    44.4503026790243183
-52569  -93.0389239294025572    40.9624115330513376
-74048  -95.6399254586812759    36.6972407345894709
-97446  -123.115369481657794    44.2680555991180853
-80860  -105.115368720805392    38.7069799174496225
-47361  -85.386231274336339     40.0039147345132804
-16866  -78.1928787667017389    40.895590362626784
-56685  -94.5177998937381574    48.1617987637570693
-23920  -77.98609932784737      36.7265456302982614
-24368  -81.2927820957437177    36.882365685892367
-77875  -95.9536241835442922    30.6127849556962097
-03770  -72.2673510771929841    43.5345839251462152
-13069  -76.3923408984325647    43.3260979537683824
-15480  -79.7734638759442021    39.9868599141154348
-25870  -81.4982078421052734    37.6548739649122695
-93125  -119.085530124999991    34.7475749999999977
-38677  -89.5373723546797748    34.3589605024630487
-43970  -80.8901296842105211    40.46804571052634
-59229  -104.486003000000011    48.3340120000000013
-58773  -102.66776439118226     48.62077950619814
-56549  -96.2950423218073155    46.8415611800173508
-63841  -89.9749305496749088    36.7883170986351828
-05481  -73.1392587499999962    44.808086749999994
-11428  -73.741162700000018     40.7188487999999964
-22630  -78.1678700332309262    38.9290378491729498
-35459  -88.3023052153075696    32.7612834041487559
-70748  -91.202463654692508     30.8248238861696215
-18460  -75.3395873444676596    41.2652891962421577
-87123  -106.505089334862419    35.0653994341210833
-32174  -81.1119670157565764    29.2930519261733515
-27503  -78.8857178390824032    36.1641951734177525
-99153  -117.348912901909074    48.865569980908468
-30311  -84.4738345228667669    33.7242431091712618
-11715  -73.0349596374217214    40.7489443795881741
-79059  -100.692119526315835    35.725735996567515
-78059  -98.8427683822685168    29.185400713168324
-66088  -95.4545864708246654    39.3333954363336673
-04742  -67.8446542119136211    46.7764682243911167
-76802  -98.9171334607488149    31.7496607086783413
-76041  -96.85417885039368      32.2469304881890011
-17059  -77.3724028953221392    40.586435330879965
-24935  -80.7967551584021919    37.5793282988980977
-11414  -73.8374447301587367    40.6593400634920599
-19768  -75.1892965333333336    38.8051314666666656
-61634  -89.5925453333333479    40.6898148333333367
-11005  -73.7211424999999991    40.7563969999999998
-93401  -120.64083359727907     35.241715077108509
-61532  -89.8201408218390469    40.3554435264367015
-40902  -83.6384037229381647    36.8293245068728226
-01085  -72.7547485607077249    42.1374735082114924
-90620  -118.012697158204176    33.8422591421445631
-63555  -92.1698482005836013    40.4606525565281316
-89134  -115.308136373666429    36.201967573697118
-59087  -108.273480282383346    47.1071058575129555
-75033  -96.8568871972889553    33.17275490542238
-36915  -88.3610394045655312    31.9583814020291861
-32354  -84.5226499999999987    30.5516777499999996
-63849  -89.9810250037736381    36.1316927056603774
-82063  -105.9628934750301      40.9207800559710719
-61604  -89.6427212162841442    40.7092425626258958
-89893  -114.046039000000007    40.7393542500000052
-77067  -95.4541581334029701    29.9546356929841764
-34434  -82.4532553107481192    28.9959817609805484
-63629  -91.2115374907749867    37.4667442579335059
-66425  -95.7235160436364367    39.8184403919999994
-63847  -90.0322280985915171    36.4417543943661926
-59645  -110.948804984189465    46.5499094016250794
-94950  -122.771203469626045    38.0392927616822618
-40616  -82.6850053333333364    37.598945999999998
-12955  -73.9749894096069198    44.790036468122274
-53102  -88.0787822499999891    42.4995912499999946
-36081  -85.9328584749102475    31.8422382210409616
-20868  -76.9721302592592735    39.1220863024691567
-56737  -96.0390763649540133    48.4274536714098218
-94935  -122.502736029411764    37.9456394411764748
-31757  -83.9181764624790389    30.8783940358156599
-80220  -104.916120373351248    39.7331711523519289
-61426  -89.7064683544303705    41.1181164177215166
-78649  -97.839618999999999     29.9897017500000018
-55069  -92.9864537496741974    45.6883120724753411
-28442  -78.6082462223483418    34.3111635252410281
-96108  -120.39401455216688     41.7547131540931318
-58602  -102.790042999999997    46.8693815000000029
-62987  -88.6699262281184275    37.6310033202196337
-57030  -96.5493227236757718    43.7427783301671269
-11930  -72.1132980411128983    40.9842121590532216
-27888  -77.7044445207673249    35.590999819435666
-22517  -76.5348560714285497    37.7313725714285653
-61065  -88.8454717988108342    42.3617927135091037
-04431  -68.6554543793102994    44.560348586206878
-77356  -95.6578400421236239    30.4082968555151218
-10303  -74.1599518993951534    40.6306921396370626
-74062  -96.9144133895107984    36.0409940288745076
-37016  -86.1038090184759994    35.9555328027713301
-59545  -111.243061414141465    48.9333122626262522
-95919  -121.267234231440924    39.4362412718915039
-92840  -117.933968246061241    33.7863239418864723
-97734  -121.269255056031469    44.5281298043258786
-32044  -82.1623310947971675    29.861909190035302
-61465  -90.4685763270157395    41.2053201519253065
-61529  -89.9408646762630184    40.7805216456168083
-42333  -86.7604007902791921    37.3641541128970402
-28756  -82.1745898137074136    35.3427750504459226
-38545  -85.65143037155309      36.2286608101595391
-99403  -117.097511160023046    46.3936450437472985
-67675  -99.099033832251834     39.4152269896170679
-64802  -94.4824963333333443    37.062625666666662
-31415  -81.1190099141955869    32.0747554602523763
-53527  -89.1987748034276677    43.0753372717753891
-59054  -107.865102085555094    46.5839952526667531
-19121  -75.1738352867083819    39.9809899888655522
-79984  -105.217793999999998    31.747038749999998
-55904  -92.4162445943758826    43.984022835011892
-81128  -106.773676671207696    37.0442379397517669
-08064  -74.6280270947368223    39.9624438771929604
-16003  -79.7457777142857225    40.9479131428571392
-19210  -75.5961787000000101    41.0222788999999963
-47325  -85.0168320115307949    39.6898794417495466
-32577  -87.363800741124777     30.7301360118334941
-99212  -117.305940094960889    47.6719864334868717
-49416  -86.236470312499975     42.5212867500000016
-84641  -111.736895000000004    40.0001014999999995
-85236  -111.708672922127448    33.3193537535613302
-70526  -92.3763572370636581    30.2170679932760571
-40013  -85.4836346462242602    37.9432812387613581
-44652  -81.3263487555555855    40.8970517111111249
-87231  -108.301615749999996    35.4185414999999963
-82028  -105.850559315789454    42.2647393157894697
-41563  -82.5359403176008328    37.2257729242870568
-21765  -77.0713654999999989    39.3353070000000002
-79458  -102.151808166666669    33.3992348333333311
-89883  -114.097158534022483    40.7401755245477659
-48131  -83.656738446498025     41.9625130556905148
-34788  -81.7824822784820213    28.8608585971417391
-25288  -81.3717186666666805    38.649013888888895
-12851  -74.0094997609045606    43.8054094614971206
-45650  -83.4216140795453782    38.7465970832111424
-25620  -81.8367632857142837    37.6784594285714363
-24655  -81.4915983333333287    37.1262605833333339
-35801  -86.5655345882304204    34.7262150609593334
-54635  -91.0171515164835085    44.3822305192307738
-80547  -104.959610958706136    40.5254708368891912
-57354  -97.8380274117646991    43.1877945882352918
-68724  -97.8611586507177833    42.6251097942583712
-15746  -78.8827007321428653    40.758643866071445
-06079  -73.4034124840425761    42.0319656914893827
-52151  -91.2598684190312781    43.3435917968140458
-92649  -118.043771620566105    33.7206022107547483
-06854  -73.431139327914309     41.0935355547184287
-53081  -87.7301620037447805    43.7285042798839072
-47162  -85.4823381601624845    38.5513547141408424
-26404  -80.3124126437499939    39.3544528187500262
-37203  -86.7905269046162147    36.1501416869456591
-63336  -90.9423727912835886    39.3433460159936601
-84656  -112.097408524096451    39.2576340572289055
-02671  -70.1098856991526134    41.6825991345339091
-68441  -96.255436427616857     40.2179003986636943
-45334  -84.045558162037068     40.4462969421295924
-92273  -115.693177859838286    32.7942569272237137
-33040  -81.7602051640300687    24.5658055870865226
-51524  -108.866205714285712    39.2222490714285641
-62026  -89.9961493103448333    38.792489586206905
-49719  -84.3169188293414322    45.9982150237218477
-54966  -89.502054737327299     44.2315320493745858
-21628  -75.9238518851063873    39.2376985148936015
-03325  -71.2954755714285682    43.4285641428571338
-19610  -75.976479270411744     40.334092510257527
-64481  -93.9121820938372451    40.3615020013916634
-25035  -81.4929916702252939    38.1900635800711967
-95388  -120.596956547706682    37.4130969493884393
-58204  -97.3700261175337403    47.9588521599229125
-44805  -82.3210501604723532    40.8674240226854693
-05863  -71.9286014285714401    44.5547788571428569
-32421  -85.1813178234729662    30.5327913861183546
-75002  -96.6254988858518544    33.0937373900101548
-25135  -96.2712307666666334    33.1281353583333313
-17564  -76.0638026315789375    40.2362229473684252
-60075  -87.9125503000000066    42.4923141999999956
-08825  -75.0266348933729006    40.513166729424718
-90846  -118.139318000000003    33.812736000000001
-11435  -73.8093780625000164    40.6996367812500068
-97310  -122.992613999999989    44.9094864814814727
-15957  -78.8942253713389192    40.5414748347280991
-26283  -79.8153062573233285    39.0499912504307289
-46510  -85.8900541664562809    41.1169270953282719
-03323  -71.3818560714285866    43.3337751428571352
-21405  -76.5461022700585971    39.028736769080254
-15533  -78.2486288607792488    39.9817883319480458
-68444  -97.5785743170732047    40.4080581544715685
-64443  -94.6535253492783113    39.7427375899518225
-45001  -84.7113553600000415    39.1393783057142741
-15430  -79.6643399221556763    40.0413393712574788
-20373  -77.0123935098039283    38.8584967843137292
-55438  -93.380754921724801     44.8263109442437795
-29829  -81.8459826556188972    33.5666893208915127
-47968  -86.7318637090607183    39.9585777581046884
-94806  -122.335141908409383    37.9756808946618847
-55752  -93.275205601388663     46.9574372033335052
-97451  -123.262869831914841    43.8129072808511211
-05874  -72.4440212009925801    44.8721713465674057
-54857  -91.5967273411764893    45.6000022352941201
-45106  -84.086579658611285     38.9479993014269184
-32445  -85.1842693457005851    30.9678566383981213
-22408  -77.4649368380370049    38.2364607006400377
-03850  -71.3069177135922416    43.6925226334951731
-20566  -77.0557699629629695    38.8975410000000039
-21822  -75.65936363677271      38.2842545879138356
-00741  -65.7635938202898132    18.1614064681159348
-72325  -90.2291812968750548    35.3013043125000081
-36768  -87.031071401850042     31.9032887499144344
-14808  -77.4751814206641569    42.5570558782287947
-27281  -79.6344341051645159    35.2027693365253072
-81129  -106.01724639130434     37.0902223260869519
-04777  -68.4591438534884702    45.8857401941860488
-53108  -87.9448562767467052    42.8192370949781065
-27614  -78.6101905389954254    35.9409310480704036
-98072  -122.128471289504859    47.7574339312714145
-50145  -93.4998658550724571    41.2032728550724627
-02324  -70.9698031376286593    41.9787423111973652
-64422  -94.490884529500704     39.8955974478063808
-51559  -95.6490635596216379    41.4521081914382776
-12981  -73.816934748827876     44.6291989588173905
-33313  -80.2261752044613417    26.1507495361263409
-86015  -111.815429848101317    35.2338463924050913
-36877  -85.0960993416812528    32.5426037811694826
-04721  -69.1282257142857191    44.4955799999999968
-64625  -93.7936862903408013    39.7417296568181655
-61852  -88.0716949098497963    39.8990162220366784
-24347  -80.6734241555883216    36.9779325372969012
-29640  -82.5807973815972218    34.8708409357548987
-47170  -85.8184953487947695    38.6787508564393718
-53184  -88.5935215535373857    42.5300722466539085
-82902  -109.078720911851264    41.6772578765915895
-60549  -88.7523143391214973    41.4874821920326795
-66526  -96.1640413099053717    39.0813520919811594
-32431  -85.4006593597564745    30.78215483529765
-52030  -90.5952527709924311    42.1556909781897815
-38028  -89.6362966025213836    35.1881363580376316
-71616  -93.5620412499999929    36.3496287500000008
-22736  -77.7185665799132579    38.4020203390056949
-23894  -77.8267505163661326    37.1272418617234621
-62976  -89.195562097688935     37.2140836838235174
-04650  -68.712983162725223     44.2910611447072782
-93464  -120.130797799999982    34.7364362
-65426  -93.0759058333333229    38.1021419999999935
-38354  -88.8457489000000038    32.8907067999999967
-61468  -90.3854054190475864    41.2710596761904611
-48085  -83.1184280288943995    42.5983613795073097
-26865  -78.4914001370143808    39.1828747719835846
-42339  -86.9721060392154612    37.0997286850979506
-68723  -97.2005175393731093    42.2897437438838537
-57755  -103.311862809139711    45.8190180107526288
-24622  -81.7941791468855968    37.2151253414485481
-94618  -122.23799396952414     37.8432191284535975
-28278  -81.0099629647216943    35.119508860325567
-94703  -122.275819319796923    37.8642279253508249
-37411  -85.2362818717594024    35.0268980115407018
-78066  -98.8899444534883827    29.4873277567829319
-68412  -95.8402469999999909    40.6628596666666624
-43431  -83.330303796797196     41.3879645651244772
-86544  -109.069941499999999    36.6061394999999976
-46135  -86.88146900961776      39.6525834141554014
-96045  -122.939433875939784    41.8303550225564038
-11429  -73.738422799999995     40.7117880999999926
-76638  -97.4254543047970714    31.5563420047970915
-48730  -83.4585419841982485    44.3170903952837349
-63853  -89.8704692090909134    36.0571307818181808
-49027  -86.0755506764705416    42.3468795441176553
-98314  -122.646105111111126    47.5615704444444418
-27926  -76.6094420007756867    36.5178339278510293
-29696  -83.0107241474548943    34.7764562464326659
-44684  -81.8351604693877732    40.5841956734693881
-87116  -106.554597648725178    35.0591291029272867
-80732  -104.293199809523813    40.9586749523809459
-04360  -70.0105401151407278    44.5407543411972213
-76581  -97.1162398888888987    30.8986902222222142
-56223  -95.8139667975123785    44.7786158343284342
-33168  -80.2096826622908026    25.8927893075933184
-75494  -95.2755758173793623    32.9274228642541686
-77301  -95.4437364378875941    30.3124393578922131
-32301  -84.2604543374251875    30.4282364278148059
-13469  -75.2990156398892196    43.2189567396122172
-44606  -81.7969292458621311    40.7362268639959169
-19477  -75.236278637931008     40.1837502241379454
-12937  -74.4847378042895087    44.9719716691688873
-74061  -95.9015535191738735    36.5406020132742668
-37127  -86.3427662845223409    35.7839760439768
-68454  -96.2835760591621579    40.6937175760065699
-27513  -78.807383147326064     35.794904144567866
-73053  -98.4080759577736046    35.3637471036468156
-11201  -73.9897485630803686    40.6948641867831995
-29575  -78.977257291621882     33.6219091755847046
-33540  -82.161028993186477     28.2394481197776841
-72083  -92.0136247489878372    34.6006872995951653
-80424  -106.038116510062849    39.4735022050549063
-10983  -73.9505302954462564    41.0276670370232921
-79300  -101.555621176470609    33.3222111176470577
-92405  -117.299475846894765    34.1463843649949794
-12133  -73.5157912222222052    42.7933503333333363
-50647  -92.4755396043885725    42.6460218821317127
-40995  -83.8189140418604381    36.7636746232557883
-93239  -119.984464213754663    36.0372558438661699
-83523  -116.442389156082029    46.2577395193756971
-63345  -91.5730330152671286    39.2739292951653454
-08731  -74.1995632049187464    39.8438130260140113
-33068  -80.2176250531274349    26.215504982683612
-87060  -106.717681161111102    34.7385852555555701
-12603  -73.87514267244255      41.6744519435439926
-27283  -79.641446404924622     35.9492116326182085
-42764  -85.6284405270216951    37.4391139447731263
-62644  -90.0672876143987651    40.2962282584593936
-19107  -75.159052760732294     39.9514843895201821
-97862  -118.381882404455666    45.9421528961784205
-13039  -76.0882409834602669    43.1740213554723056
-93549  -118.00118355231136     36.2494955462287223
-06155  -72.6864124999999888    41.769283999999999
-63960  -90.130320231157782     36.9480200366951976
-52166  -91.9325956972477059    43.0661718256880448
-42133  -85.9660708469057937    36.733000462918163
-46107  -86.0937757905023346    39.7124232779909434
-81443  -107.906019684210534    38.0719606315789392
-56295  -95.8278284963821108    45.0366929276410701
-30228  -84.3051142167929299    33.4160616243253088
-38835  -88.4668589999999995    34.9598037500000061
-50153  -92.7886916741718863    41.5650452849791066
-74651  -97.1691396757623664    36.4731811524879461
-66039  -95.168590894449423     38.0910148880800961
-97010  -122.110209315068502    45.5800737945205512
-62892  -89.0668198263647071    38.8067759459929746
-20755  -76.745744030612201     39.1117890355101707
-59215  -105.651998015994039    47.4962813699963959
-29936  -80.9693679183802288    32.4842032180193954
-91606  -118.390028121212325    34.1868422775629455
-12195  -73.4658580352941044    42.4831416039215597
-32456  -85.3377473975822625    29.8199060662636022
-62560  -89.5915377334178942    39.3053865626784429
-15038  -79.9259632222222081    40.252469516339886
-42151  -85.5801883882726742    36.6463576767036656
-28687  -81.0382120000000015    35.8585154999999958
-27508  -78.2455470828728323    35.959182771639064
-29850  -81.8063696052631286    33.6116692368421042
-12515  -74.0590560212568789    41.6798786774491248
-92882  -117.595990361055286    33.8601800501629953
-21251  -76.5867146000000076    39.3426558000000028
-62689  -89.7614362380952571    39.5386117551020533
-29133  -80.7955572367337425    33.3583814597194248
-47876  -87.4132269310344725    39.6251576551724156
-04958  -69.9277054104226323    44.9053312295993692
-69737  -93.3911710000000141    36.5967708000000016
-01740  -71.606087937284201     42.437307537852611
-49068  -84.9509313533628472    42.2756016519614448
-59751  -112.292988376168225    45.6794747464953588
-23692  -76.4562671719736926    37.1752758850565215
-75470  -95.8021296751151681    33.6002732857143016
-23488  -75.5909363321033254    37.9469338597786177
-95337  -121.23196248454434     37.7738819773461927
-78877  -100.602653472693177    28.9471744425612094
-76655  -97.1947093837484317    31.4021523740607975
-83431  -112.017591660827961    43.6927634426751652
-74234  -96.8686697999999922    32.911117400000002
-46937  -86.040990037037048     40.419009888888894
-57386  -98.0046708036649932    44.5148013734728991
-01061  -72.6375999230769338    42.3020598461538455
-36793  -86.980748872663824     32.8386623142112057
-55787  -93.1208650541877319    46.6741089211822171
-61730  -88.72059493379777      40.5326051106271734
-64503  -94.8222925405544999    39.738790886603411
-13450  -74.800382390581774     42.7086066398892115
-74530  -96.5039738489583101    34.4098122812499909
-17760  -77.6885980727728196    41.367395554161476
-24919  -80.8899590000000046    37.6752176666666614
-58330  -98.4509189647373546    48.4424176888290461
-98291  -120.780348782608712    47.7580496956521827
-19460  -75.5264203086343002    40.1272353448966186
-64770  -93.9777289766925321    38.2720244942655299
-59721  -111.907546330717835    45.7912597144993114
-45243  -84.3508748927514347    39.1813694952451428
-48220  -83.1342901883012644    42.4595147174144572
-54521  -89.2563867515760307    45.9172671153876664
-56252  -95.295509175454626     45.1902804472727055
-60527  -87.926760927060684     41.7512207275308427
-14478  -77.1236454599714989    42.5850247214589501
-56610  -95.0258848     47.8778456000000006
-76670  -96.9699933373786678    32.1277430825242121
-14129  -79.0007042338203718    42.4766633263743287
-76267  -97.3642877083333076    33.3636193333333395
-12024  -73.5279477180451124    42.4847597443609146
-26562  -80.4429488317013863    39.6400050807834106
-63531  -92.2220765999999514    40.2669230086956347
-06905  -73.5439725702470639    41.0878650131595791
-88312  -105.646755451972012    33.417434652377942
-67862  -101.923832361828929    37.5261711630218855
-26636  -80.9562537151369668    38.7528151769964921
-53540  -90.2989864210526605    43.2211396526315923
-20177  -77.5580741481481368    39.0992424444444566
-35188  -87.1653108065798108    33.1875186780746176
-03301  -71.5369765587271047    43.219758813503951
-78348  -98.2275348333333369    27.8687011666666677
-19363  -75.9704233169006642    39.7840262711767991
-98824  -119.816576089552228    47.0842702686567023
-93305  -118.986459331988996    35.3907955268012131
-52338  -91.6888256457816482    41.8298135993645701
-26555  -80.2128783333333217    39.4672043333333349
-72740  -93.692228851887748     36.0996586709048373
-70774  -90.8386564690209042    30.2374036850086618
-60921  -88.292685992974782     40.7441554435573039
-33846  -81.875829666666661     27.966654166666661
-03592  -71.3565148101116193    45.072968251884646
-97876  -118.014995703103622    45.5130750071973011
-60633  -87.5518539242339102    41.6514427513674619
-75116  -96.9143121294002441    32.6587195906462355
-46975  -86.2373393080579831    41.0746249087277775
-73887  -97.4681410000000028    34.477206333333335
-59332  -104.729739230320746    45.3365184956268337
-18979  -75.4456767142857103    40.3171235714285743
-75606  -95.3660370999999998    32.464236200000002
-02364  -70.7459417262176089    41.9898435374092003
-96105  -120.192472981715909    39.8631945991561238
-71054  -93.6768500000000017    32.0273134999999982
-21794  -76.9735385168801827    39.2890475192084949
-29569  -78.9021194598863786    34.0366797036185815
-67647  -99.5545544422657827    39.9394638562091657
-77061  -95.2830835435979537    29.6612617912479237
-16221  -79.4418020793651181    41.1022261269841138
-75422  -95.9375270654923185    33.1486733938573224
-48426  -83.0693005509517519    43.5020102407615141
-74830  -96.6679768867924736    35.1436122830188467
-30530  -83.3869584057128606    34.2200884222086827
-78204  -98.5046585163804735    29.4031633017160665
-59436  -112.001844635186259    47.6343109751136495
-05352  -73.0699666853531227    42.7709455941192758
-28311  -78.8898943105727852    35.1417119773974278
-96022  -122.35570533253852     40.3333518888112081
-80517  -105.527004205857864    40.3598744516501569
-39877  -84.5069067665148737    31.9121903599088448
-65755  -92.6480030882352139    36.7799693713235669
-70402  -90.4702117199999947    30.5172195600000045
-48341  -83.3028082414500659    42.6293064578847876
-56676  -95.1651238118272573    47.6025536360739494
-15334  -79.9842659303797348    39.8133272911392524
-75693  -94.8589045099009951    32.5352327653465494
-58454  -98.9244646802719672    46.6004477776360062
-98311  -122.635170453922726    47.630293331755567
-99744  -149.189919512903288    64.3466355387096911
-67336  -95.0611330033683828    37.0518235195788463
-59454  -111.870059598208698    48.7474603403335536
-45888  -84.0866978306451642    40.6020252661290471
-98061  -122.646388999999999    47.7335748749999951
-86429  -114.534435500856063    35.1708297377783339
-77053  -95.4565174692464069    29.5962134997963062
-96013  -121.669736389010168    40.9190819527061933
-05845  -72.2992317542813652    44.7972941360759762
-64664  -93.7029797756833744    39.7436747200753828
-76203  -97.1503456923076811    33.2095806410256458
-06468  -73.225804473794625     41.3346690445717968
-33865  -81.969385929499083     27.4243652606678978
-21401  -76.5395928927213589    38.9870599179207957
-67556  -99.5387657261613441    38.6222498459657544
-12801  -73.6485305850753065    43.311660495369118
-35254  -86.8500681363636318    33.5240090909090895
-95346  -120.179492877832203    38.064432655708508
-57652  -100.924226307692308    45.0726125384615344
-41601  -82.7245680825770933    37.61097006261339
-98028  -122.246173069425211    47.7562585519540974
-51535  -95.1546070162602575    41.233810024970964
-34292  -82.3843839954949289    27.1002996238314999
-83871  -116.747384295160231    46.7417506958774069
-28537  -76.5745401324374768    35.2553840978886299
-48014  -82.933715998053458     43.021871095377108
-37339  -85.6298123445094035    35.3771934147230525
-95669  -120.872494819266791    38.4886266256241214
-50439  -93.6339706151636335    42.9418054572084316
-79546  -100.494372088440073    32.8588903216296089
-84719  -112.836750787348279    37.6968504540146299
-85735  -111.190686584326357    32.1498514956002595
-20874  -77.2810737425332235    39.1589576595601656
-74944  -95.0049762717475943    35.1333700700539211
-41043  -84.1911295323024973    38.7549370701457292
-38630  -90.6549330853658546    34.2542946463414637
-98248  -122.611113243874016    48.8625333106432436
-93264  -119.822429     36.1909025
-92327  -116.875246740763671    34.8616192395320184
-16363  -80.1970447500000034    40.2528454999999994
-00921  -66.088387267652962     18.3932865521183224
-68740  -97.2970724627788712    42.1608020744425929
-25085  -81.1854132186177395    38.1628357263752136
-33193  -80.448443408646682     25.6995671482243253
-71129  -93.8958704366293375    32.4081553415312911
-38925  -89.6423059423280648    33.631805711992989
-60468  -87.8031092403583813    41.3347340002488579
-60123  -88.3132657095550115    42.0382897887323352
-77655  -93.9384347841879901    29.7160021752136565
-53792  -89.4313581111111233    43.077578888888894
-85703  -110.975319333333331    32.2370666666666637
-65784  -92.320809011428608     36.7031782685714347
-24090  -79.875093887610916     37.5088617839806915
-86316  -111.958612000000002    34.6508494999999996
-59559  -111.966681400000013    48.7524605999999991
-23693  -76.4355688167030394    37.1167611572154996
-54837  -92.4052871239810969    45.6802363022307745
-89523  -119.903620910403617    39.5291300505902186
-22160  -77.2211839999999938    38.8110989999999987
-22730  -78.1735325742972122    38.3679775662650471
-08561  -74.5889550737705065    40.2051626721311521
-47631  -87.9028640625905524    38.1043071304978156
-39773  -88.6459984162241739    33.6118585540560773
-28783  -83.0552769875466339    35.2488813683052058
-37175  -87.8887434709146333    36.3317438435567936
-81432  -107.760521255421693    38.1502441400053129
-04925  -69.9491660263620076    45.2166239771529206
-62672  -89.8191328545454581    39.4002962090909108
-25265  -81.966783171032418     38.9864453374422055
-07755  -74.0209515994913403    40.2639597005721441
-95302  -120.654307727272737    37.4398725454545485
-18030  -75.6630194541063048    40.8006297826087092
-48625  -84.799226489754119     44.0462572495978577
-70811  -91.1248500207651091    30.5304342834070717
-48703  -83.6456134083872485    44.0548391867741813
-56760  -96.4425449956408016    48.2469603041582431
-98251  -121.648213622665324    47.8420391122771562
-60915  -87.8588638434799805    41.1464420942753506
-40513  -84.5807271387100741    38.0129246272472514
-28662  -81.8722005496085075    36.0253004164490918
-29333  -81.9113062016806879    34.9710641344537905
-92107  -117.243521987785883    32.7388981554120733
-17004  -77.7297255009154213    40.6048909056415681
-93266  -119.809316356557389    36.1835280581967069
-56483  -94.7934202380952371    46.1995706190476128
-05769  -73.1116021622031127    43.9167223799898636
-41169  -82.716459053059026     38.5236839888745521
-69101  -100.783036665791087    41.130027633438921
-15226  -80.0141629763064088    40.3959877184260137
-98239  -122.659300142663682    48.1946228627641418
-32040  -82.1966351024921948    30.2944404646957146
-59064  -107.958370565668901    45.9763489181429037
-88033  -106.970529421875       32.2523697499999855
-76205  -97.1239716669239499    33.1875350747681921
-58452  -98.2373069411764561    47.5422324117647008
-45415  -84.2584953878369163    39.8351239399537249
-80516  -105.036928270652808    40.0437280795068986
-32687  -82.2379548749999998    30.4280911666666718
-92411  -117.318856648767024    34.1223730140154657
-23414  -75.5930745249999916    37.8093215625000028
-71461  -93.2865059675323209    31.1128054978354918
-78620  -98.1165222214063419    30.2304586866468554
-33060  -80.1223129505155356    26.2317914806935946
-73054  -97.1960256928500712    35.659313893756277
-94534  -122.112004827827718    38.2452577501249351
-06370  -72.1884346281321285    41.4672494918776664
-07108  -74.2012316965678735    40.7232159890796055
-38486  -87.5362094238989101    35.1793398538228601
-98862  -120.220474593160262    48.4951480682432106
-93686  -97.0024425000000008    34.5133824999999987
-55089  -92.7240954527720049    44.5771442076493472
-38669  -90.6611610727272677    34.2714444181818223
-62324  -90.9722415022037438    39.9814661667099998
-75665  -94.3662149999999968    29.8237757500000029
-85258  -111.892861292955118    33.5648483506609878
-15423  -79.9240103147108414    40.0877044433056824
-11355  -73.8244269032258131    40.753484903225818
-92584  -117.1771634240216      33.6675323436857852
-81401  -107.831811844163838    38.4782054347762212
-20149  -77.5129254999999944    39.0360064999999992
-35461  -88.2156194978130657    33.4221704661307584
-92832  -117.930312064434659    33.8694990615325011
-75910  -94.8050434999999965    31.4200935000000001
-72734  -94.4522691895976152    36.2681101848284371
-73909  -98.043398333333343     35.4100791666666694
-12059  -74.0566188906573046    42.6205367620916675
-43953  -80.7034839549726257    40.3682748097907691
-55984  -114.679959333333329    47.5929179999999974
-81434  -107.321587154886558    38.9782049973365332
-31079  -83.4584816949105175    31.9410290023952008
-75491  -96.400737234225744     33.4921926361137849
-42056  -88.963463237090167     37.0784537382056172
-04668  -67.5959093733376761    45.2119794466428218
-74116  -95.8141329728387774    36.1745409445294541
-29015  -81.3354604767482954    34.4385263615894175
-02534  -70.6177912758064252    41.6668793895161684
-48065  -83.033765066175377     42.8304996927109158
-56646  -95.6383976079446398    47.7263881606217879
-52639  -91.4552232558493188    40.5223500256603302
-24528  -78.8975298714578059    37.0954513467560716
-41812  -82.7601675325239512    37.2442098473546963
-16412  -80.1468037796960147    41.8788647136047487
-72853  -93.3381004510307406    34.996625908791529
-72417  -90.5759322100841047    35.9177712853488416
-32176  -81.0592755610653342    29.3245219027794377
-99583  -163.415052731707306    54.856341585365854
-41548  -82.2516402854664364    37.372340207808989
-56571  -95.5535532582854614    46.4435213656652337
-92305  -116.909484610987022    34.1818602389219279
-32257  -81.6020044212631461    30.1912680104458424
-60632  -87.7105118732568059    41.8087907637793492
-50013  -93.6423339999999911    42.0243194545454557
-40702  -84.1442003789473745    36.9314686947368287
-72011  -92.473099309273735     34.5240520905369337
-19131  -75.2270896943190479    39.9838275098646108
-24460  -79.6312567043477486    38.0248695558742327
-69149  -102.661588655229281    41.1971694899372807
-29435  -80.4787362227494611    32.9720881415012741
-36274  -85.3755481655406214    33.1629796241839045
-35621  -86.7256224939179674    34.3504929292548482
-61345  -89.7898571535486525    41.2892584432477605
-64725  -94.3726580084178721    38.500666223512404
-10021  -73.9595366118299324    40.7693634343807716
-79367  -102.162948772727219    33.5757551115702597
-83138  -111.020964000000006    43.1795380000000009
-48455  -83.3077730519914468    42.9417206058465055
-68248  -97.4628452499999867    41.8335604999999973
-61285  -90.0726185280746137    41.9828487877005188
-13024  -76.6430733750000002    42.8597740000000016
-81302  -107.867821653631268    37.3929543184357271
-32730  -81.3427623029476194    28.6517529492358989
-59530  -110.685177782258037    48.5581578991935245
-54861  -90.6381583999999663    46.5855882749999921
-93908  -121.677792670939937    36.5841472663775633
-18349  -75.3735222344827918    41.1009664034482611
-78082  -98.5761498749999703    28.6075408928571377
-36345  -85.3164644894931712    31.366790948800034
-43143  -83.2452852504963658    39.7003877969871652
-99031  -117.377296241464876    47.4437793090054427
-21649  -75.7754395270412857    39.1425137661717741
-48873  -84.8458888613091204    42.9963411283214825
-42235  -87.6777020000000107    36.9158062000000058
-89040  -114.450083305231573    36.542822907623318
-27823  -77.731095497901677     36.2090876619704076
-04468  -68.6926776649382589    44.9644436503240001
-49709  -84.1610575370782215    45.014607270115242
-31139  -82.7295464166666648    38.4979998333333313
-95823  -121.44301765438199     38.475693674892689
-95124  -121.921860623411277    37.2577901703945642
-18925  -75.0734571828424748    40.2892401460763239
-67459  -98.3007873100164176    38.5770889813741888
-64463  -94.5054294657647489    40.0634166576464565
-91770  -118.084174551876757    34.0657789845474568
-23501  -76.3120109999999983    36.9365044999999981
-70656  -92.9257217649373501    30.9241862088817392
-70122  -90.0644342726173761    30.0077655453556886
-97859  -118.462993329286618    45.5128970015174517
-53944  -89.8971750206677456    43.7078732050874308
-24445  -79.8734862230605103    37.9713764999999839
-53516  -89.8788792388707236    42.8038465856016259
-43659  -83.5353947777777677    41.6470287777777699
-07470  -74.2484278063354424    40.9493569807765851
-31550  -82.5916988950032049    31.1332418203668304
-50157  -92.5524830145338058    41.7410439943282086
-36143  -86.5295991666666708    33.0447922500000004
-20871  -77.2715243874035025    39.2484482788443074
-62465  -88.6216404753361786    39.3497064506726417
-13905  -75.9375206803676122    42.1439187036112344
-54400  -89.7394696363636371    44.7882157272727284
-85003  -112.078277340908926    33.4509528783422567
-85619  -110.748482441817416    32.4310586365322209
-70584  -92.0906879004955954    30.3928696023947467
-08039  -75.2663943942307725    39.6858758942307688
-84314  -112.097493894139063    41.6398758098085366
-61568  -89.4784334080003703    40.5064756700740034
-76828  -99.2659543891892184    32.0058812360360108
-45872  -83.6760135883437073    41.1845602589449697
-75102  -96.6402719406731592    32.0846098625213543
-98367  -122.656047571570483    47.4700258016422154
-80801  -103.081653188679326    39.7330766635220343
-13658  -75.2761832662226169    44.7356899420181335
-16341  -79.5724302820689786    41.5654247165517532
-93422  -120.683672082003142    35.4774741934564446
-25130  -81.8042159841268841    38.0451773654664862
-06410  -72.9040930818972441    41.5064397064595383
-30293  -84.6005862206414321    32.9747467702272559
-67004  -97.764719516230457     37.2778062544503328
-12131  -74.4671859831387479    42.4534062840466575
-11142  -87.3595103333333327    30.6077686666666686
-74360  -94.8329818910170417    36.9828221053352379
-45346  -84.7141603420043907    39.9820785814844797
-22939  -78.9706339447175196    38.1006482366712689
-26587  -80.2955521955923359    39.5318951404958838
-51054  -96.3450726788453693    42.3979039590792723
-99961  -151.184371225806416    60.7191160645161361
-32203  -81.581922800000001     30.1809472000000021
-28562  -77.0958214902087917    35.0882650689946232
-36475  -87.2140537252215609    31.4058276065905488
-49666  -85.5177291328124625    44.6254538281250106
-95916  -121.392438142856747    39.6446915505951623
-87114  -106.69430085240748     35.1993247106764997
-84790  -113.565121017710453    37.0707549487447778
-63435  -91.5677325698110423    40.1511633047236387
-07543  -123.501800636363612    42.3561033636363575
-68786  -97.5385759114389543    42.5050094732472772
-80808  -104.318652689944059    38.9743069945190612
-66049  -95.3018437705269861    38.9740491666867044
-19081  -75.346499854462536     39.8967784883408996
-80428  -106.929328408787185    40.7724300785577114
-92179  -116.919288000000009    32.5692939999999993
-40077  -85.4424065603582648    38.4933209878755065
-49402  -86.0585322053458412    43.925399111098244
-98651  -121.562035866013048    45.7378134578794331
-72827  -93.6027710595492977    34.8783868540772346
-56132  -95.7540379830579838    44.2035408903007152
-16311  -80.0290430751095982    41.4619718174341969
-06855  -73.3979755006989905    41.1016173773584441
-15417  -79.9110115507463803    40.0175064601807051
-94945  -122.559652005302524    38.1137210450292585
-20770  -76.8817966310790695    38.9986553303596395
-94506  -121.912683813961763    37.8084508356484008
-50272  -93.2566604423077194    41.088285858974352
-17830  -76.7951611981388282    40.6856979475714553
-31904  -84.9816200026652524    32.5292550974258248
-06027  -72.901493490990859     42.0017538738738097
-23881  -76.9726047069413681    37.1838804850587863
-25182  -81.450352571428553     38.1587955714285698
-68875  -98.6903872717814039    41.4763754486345775
-29582  -78.6788254383857293    33.8247919443735867
-68944  -98.0952088411910808    40.6329897673697573
-64130  -94.5424643462641399    39.0346630862068622
-47263  -85.3296225118483704    39.3089123649289505
-49764  -84.8254142406015177    45.4228587368420946
-72860  -93.413046884279467     34.9468730796943277
-93955  -121.830739926183753    36.617481269143326
-60091  -87.7270541910441182    42.0766404580562039
-04932  -69.1307288816259984    44.6941239011381839
-75691  -94.5688489487014579    32.3114712831168589
-67148  -102.620297999999991    41.4981340000000003
-94306  -122.129819796387949    37.4170471858915761
-64072  -94.2914272561576752    39.2393873448275912
-64771  -94.4444965243003907    37.7621243092783629
-60443  -87.7430096321505175    41.509018738284702
-70586  -92.3073513825254253    30.7177946080570088
-64050  -94.4107981356064982    39.0999669985986529
-32001  -89.1063606666666601    35.7501126666666664
-92660  -117.875855432182888    33.6317759776001353
-78944  -96.4910241007120533    29.9996817629704751
-98547  -124.085168950598828    46.7784673113772911
-47118  -86.4839727690526843    38.3028466545600708
-19526  -75.9805975283102413    40.5377758328893378
-93740  -119.742536159090889    36.8137221363636442
-70772  -91.4612391367521127    30.4410397863248008
-04976  -69.6828093313158519    44.7845751294374566
-53718  -89.2781223881171542    43.0926864839248012
-93421  -120.567011857142845    35.039351428571436
-61421  -89.5965594548542725    41.1824242704948205
-46040  -85.8634473791877468    39.9371577134236446
-87538  -105.567788723097081    35.4804540826771273
-28089  -81.6598785591397558    35.3199538924731229
-96125  -120.637865390206329    39.5792694824742313
-10310  -74.1159723832257669    40.6319019354838105
-78223  -98.4231744839422049    29.3458834465403982
-04564  -69.4649748786659131    43.939218866589961
-64653  -93.1864763452021236    39.893502584188397
-74072  -95.6125115758466819    36.9904049764359542
-70651  -92.9424356203554396    30.5346962439418448
-71459  -93.2121486037013369    31.0703787517550154
-73568  -98.2358483468327535    34.2703915711319524
-22989  -78.1224253312101098    38.2923812802547801
-61333  -88.8886860753055572    40.9906668787286179
-27583  -78.9408619137943504    36.2893506013100478
-90741  -118.074821499999999    33.7211844999999997
-69030  -101.924488524046382    40.1374241359867057
-90306  -118.343824833333343    33.9564503333333363
-60104  -87.8774390448821947    41.8827756293042626
-55038  -93.0003013417433948    45.1612792757483348
-40242  -85.5907888366447622    38.2785883949226431
-29378  -81.9701042205882544    34.9683203529411699
-62449  -87.9020090957403823    39.009019914274397
-41016  -84.5458701191398205    39.088118556536152
-79915  -106.370672291772323    31.7446382120209485
-26149  -80.8893147452469492    39.474329969805396
-80003  -105.063670924489259    39.8271172805445914
-32961  -80.5045120833332817    27.6335961089743343
-30575  -83.718686728747528     34.2009492271252071
-29915  -80.8549431727924031    32.1230486272076448
-29045  -80.8109113363629916    34.1745266328187753
-48075  -83.2253490078773694    42.4635621555070131
-23625  -82.9825078571428634    29.2051990000000004
-73933  -102.511721833886952    36.7304469401993217
-99104  -117.164086999999995    47.0889965000000004
-19044  -75.1502888123357309    40.1839652490337684
-78405  -97.4402596625438946    27.7700521853658486
-95313  -121.050753285844706    37.420533856621006
-66415  -96.1304367205100476    39.7075053028692864
-19358  -75.7943201527272663    39.9588760072727425
-61955  -87.588718113821102     39.5800351869918856
-87518  -106.530367403846157    36.5255096826923094
-11229  -73.9421134986908299    40.5992963842125363
-54220  -87.7000249761916137    44.0984970462366377
-28308  -79.0131993415637623    35.1717518189300407
-95492  -122.807294431588886    38.5423006844571248
-96145  -120.142816344082675    39.1671537472895892
-18410  -75.6810318750000164    41.4746597946428395
-26886  -79.4679212857142829    38.849922969387741
-28211  -80.7951866348999914    35.1686363670660143
-62358  -91.259402595003607     40.5898793314566717
-80498  -106.129399624294493    39.7048117310853712
-12045  -73.7942951836158301    42.4738879858756917
-22741  -77.8652211584301739    38.4379982078488354
-72729  -94.4689925490076234    35.7963636526053861
-30276  -84.58400035021468      33.2773256883260657
-42742  -85.4636174399038282    37.0754252403845754
-64048  -94.3543444299603493    39.4473168173189492
-24313  -80.8041595526429717    36.9048194546626362
-60554  -88.4330651017829439    41.7779513472015225
-49710  -84.1798727920722456    46.2696534721836628
-72099  -92.1439999265232501    34.8984751487455114
-84035  -109.367170861673344    40.3652078130903789
-61750  -88.852845084507095     40.123474147887336
-26033  -80.581786591461352     39.8380448563220639
-62355  -90.7700642466188015    39.4456549610183629
-41183  -82.7377252012072546    38.5509854014084397
-72129  -92.5469760029096449    34.3195770543161345
-91108  -118.114761482410614    34.1220483379446904
-24874  -81.5302898163374294    37.5980630480513085
-02562  -70.5329045878671792    41.7922108592870671
-11427  -73.7477595000000008    40.7309387857142795
-35653  -87.8189697308243638    34.5185443632220625
-47521  -86.7413746823385594    38.3884203851185291
-59731  -112.788306527082369    46.5755755867091494
-29425  -79.9482465510204037    32.7845809591836854
-26375  -80.5755547333333197    39.2809141999999909
-68654  -97.7868146926752217    41.0738710907643565
-14821  -77.2207439430739981    42.2321621370018221
-66338  -92.4906224615384502    38.5740878461538443
-43050  -82.486022383168077     40.3819393077704589
-85476  -112.660135172413774    37.5203574827586195
-30248  -84.1116345859337002    33.355900575044096
-42419  -87.5968708823529454    37.8011463529411742
-77573  -95.0906943686572106    29.5013180461292599
-84083  -114.024199507653037    40.6339784438776306
-94454  -120.22448134615388     34.937438307692311
-90631  -117.952547504065947    33.9389749032085604
-20032  -77.0015485359140541    38.8346478389965029
-99777  -152.037449150000015    65.1822885499999956
-46155  -85.429651566666692     39.7436002222222342
-33566  -82.1266230761630851    27.9910284464133774
-49281  -84.3759728297872726    42.0384405673758792
-98371  -122.320318885777212    47.1970975501092624
-27370  -79.9897777706923705    35.8327963291614253
-88414  -104.005332208333371    36.741242216666663
-74021  -95.8359155955305653    36.3561975924021823
-53204  -87.9265747176524712    43.0170935218394774
-51530  -95.4327624385507391    41.7878500926410226
-43603  -83.4946805000000012    41.6456179999999989
-36608  -88.2093560002751929    30.6917202883595941
-42409  -87.6990577286352107    37.5329199849192534
-58792  -100.804134864190374    48.0537568682530392
-50477  -93.3206774830370307    42.9856842180937022
-38871  -89.2011889419850377    34.328062682251975
-62411  -88.7322984496545644    39.0595329386834678
-48684  -85.6793604999999872    44.7018025000000065
-50142  -92.7766905152776928    42.006344311111107
-54744  -91.8217701458333408    45.2907341458333406
-38001  -89.1461935645210843    35.8051509526402256
-17776  -77.3265861058842745    41.3875151361115741
-10986  -73.9893250687950399    41.2624078093525526
-77562  -95.0504377704343426    29.8223998548074221
-38225  -88.682398854095851     36.3123335026131073
-33174  -80.3571275039595037    25.7628733294267178
-63041  -90.7919690331263212    38.2543065217390463
-86028  -109.804047521739136    35.0411850869565171
-72227  -92.3737190409969173    34.7748960441127437
-15429  -79.9343736938775464    40.0085878367346908
-27922  -76.8609915163298894    36.329962764385634
-54755  -91.6675080773572546    44.5693214189722653
-47320  -85.2570776877999066    40.2902290367608202
-82051  -105.777116992725908    41.6444803858677375
-41064  -84.058367138056397     38.517506256862994
-34746  -81.4562331812339124    28.2617210065490738
-15228  -80.0438839349074414    40.3719777476536024
-39082  -90.12320120309424      31.952366225477288
-93032  -119.199650500000004    34.4717399999999969
-04769  -67.9967663503076807    46.6823227798597955
-67103  -97.5462720291262144    37.2651946388349415
-98516  -122.784548594283507    47.0929333819746816
-87711  -105.131794870604693    35.2075431167370283
-25813  -81.1154208813085518    37.762662930175253
-93673  -119.483460476780095    36.4536653126935093
-41838  -82.7538759967399216    37.1854125085574836
-30349  -84.5286162952623812    33.6214717172957549
-40824  -83.3756020310262613    36.8372898186157158
-02892  -71.6004068387719457    41.5057701631570595
-53086  -88.2750663245713696    43.3288174314286252
-25825  -81.092094868236174     37.6559532324650874
-58472  -98.6413530932767344    46.6531185066626719
-95043  -121.058975221450154    36.5549140891731099
-25503  -82.1195042486589983    38.6014229053640534
-50251  -92.8650198452286588    41.5657244840951492
-05839  -72.2136874710723475    44.6808138381545419
-23326  -76.2395204999999834    36.7739084999999974
-01507  -71.9654572117302962    42.1341897733240884
-48757  -83.688541262098596     43.4594805426123685
-63920  -90.717400000000012     38.1823923333333326
-28563  -77.0387869999999992    35.1043243333333308
-98568  -123.278616335712371    46.8402087145208768
-24962  -80.720213061032851     37.6702651737089482
-90029  -118.293710986634395    34.0897083450790106
-55968  -92.0807294666666678    44.4006337600000194
-08902  -74.4846182806635966    40.449464499319923
-44814  -82.4749164886751913    41.3243450940117043
-70657  -93.1640343490263518    30.4665210714813526
-02034  -70.853932400000005     42.2526434666666617
-73559  -98.9212822484661984    34.7229818527607179
-02507  -81.4461514545454435    38.4384401818181729
-76485  -97.8634276666666807    32.870402242424241
-88257  -104.38140566666668     32.5144811666666698
-61840  -88.3059020133962633    40.2975764783293755
-68746  -98.4308223298508835    42.8132765208955632
-83455  -111.114372785714721    43.619000675167122
-75610  -96.233016117647054     32.8173983529411828
-33960  -81.4043927774219043    27.0878268298639071
-97459  -124.203371254176687    43.4570522036813287
-75680  -94.7128132702702885    32.0026846486486534
-40160  -85.9413338992442419    37.8221250582473658
-20119  -77.6367461255178313    38.6363007166149757
-52747  -90.9214410548230063    41.6221384031922241
-18461  -75.3388295134044199    41.9349007825928126
-39342  -88.6485890981817448    32.4235810845454253
-71067  -93.520598475257998     32.582389668209359
-13368  -75.3341014851949637    43.6395189584415846
-18064  -75.3233284526967282    40.7564294463420111
-30127  -84.6944031640691435    33.8766112466301124
-14219  -78.8223255486059742    42.7895350679055397
-72830  -93.4886942919986552    35.5147594840086995
-81646  -108.041114087967614    39.1683311041455937
-10924  -74.3296384317409036    41.3864492723086173
-49623  -85.6742361941086301    43.8956369457022646
-64102  -94.6036945905171933    39.0952945862069043
-35559  -87.7376391428571623    33.9071793684210547
-27864  -77.6435684340714261    35.8032323106412633
-45671  -83.2429353761823023    38.9670656380051739
-60963  -87.6436593794607575    40.3677250560816105
-46231  -86.3235279279528527    39.7388476002770332
-08807  -74.6286093241786261    40.5960350356825046
-17060  -77.8901878955006879    40.4790626600144563
-22844  -78.6600118115110121    38.6585341611944528
-93442  -120.837533602018055    35.3837633588990386
-55816  -92.14094750000001      46.7685010000000005
-65040  -92.3165193720736994    38.3693656438187887
-58504  -100.695225253580446    46.7580110220255278
-63440  -91.7377414844814041    39.9812774477667361
-72680  -92.3219803225444622    35.8864042501403588
-40046  -85.1633171722917837    38.023310585439134
-29438  -80.3131577459518979    32.538634305527566
-84539  -110.392151368663548    39.5514849585253572
-65567  -92.5449102066684759    37.8636764131001442
-11545  -73.5971417762267635    40.8283277257307375
-28542  -77.3760588571428656    34.7092005714285747
-16694  -78.1380315978836251    40.1670533280423214
-52566  -92.498646524590157     41.1406833770492
-48027  -82.6870803124470228    42.9479656147332207
-87821  -108.041075562223753    34.0693915723310354
-17507  -76.3600250806451726    40.2059605806451614
-65279  -92.5200165069215075    38.9972153152744241
-28338  -79.751482037015009     35.0928073823283952
-79963  -97.4842046142856731    28.8563269285714306
-47922  -87.3673491910427487    40.8687287143218398
-50104  -92.3836007841727138    41.4881512374100865
-34267  -81.9457646774193478    27.0862837903225859
-59933  -114.769645160714262    48.6811820357142508
-51453  -94.5413406219843324    42.2672500150804353
-10010  -73.9837534307036577    40.7393512899787567
-44119  -81.5478843273138665    41.5868080194130982
-92526  -117.095829499999994    33.7681764999999956
-70714  -91.1380742522284635    30.5829955650140768
-10019  -73.9857348030534041    40.7652483648855224
-27412  -79.8017587049180293    36.0868782213114585
-96786  -158.034907203424495    21.5000852034240104
-28723  -83.1678529649222895    35.2462406844412186
-05448  -72.8759719036672635    44.7559614850845264
-62920  -89.2417607870302305    37.5457939815817241
-54486  -89.0626115308370032    44.735423766519844
-61615  -89.6390907562147703    40.7742968381170456
-06751  -73.2108374751092441    41.6378750159768458
-71118  -93.7998260872392677    32.3957741121472438
-48143  -83.842098486486492     42.4574030945946106
-25422  -78.3518409935366975    39.5635481995532885
-21612  -76.264559058350045     38.7591141016096614
-06740  -73.3618991904761941    41.4024715714285705
-41727  -83.3045061700507432    37.3607102179568287
-77359  -95.3131896265734753    30.7417143286713319
-67448  -97.4193714275137239    38.6525034870917494
-12032  -74.4997590056599392    43.1545599115669418
-66868  -95.9933860510947312    38.5455148925385629
-07840  -74.8305666435622925    40.8561418769659781
-04787  -67.9379317628781507    46.5592872224039098
-40171  -86.4416820436111379    37.9609052119358026
-20622  -76.832745379424523     38.4635504553956977
-68114  -96.0533154288723097    41.2639155112799543
-53151  -88.0931030660020724    42.9768401333511534
-65564  -91.9644145807085778    37.2394180748031545
-18845  -76.1768910222222786    41.7871561286549635
-64446  -95.3945139580513484    40.3194564381114304
-08204  -74.9248017102821962    38.9717405307846434
-52554  -92.24228067598564      40.9213696333333559
-20682  -76.8476552916666549    38.2847229166666665
-81058  -103.876378066509119    38.095480701692253
-38469  -87.4203414734561761    35.0700315757871763
-45142  -83.7998773598203144    39.2070116427694799
-75560  -94.3553719762408605    33.1810777550158562
-31729  -84.3478585438596724    30.7293334210526368
-76566  -97.9874938484042701    31.5009447371454456
-89439  -120.003452749787286    39.5188204042552513
-66601  -95.7454721666666728    39.0596178333333341
-96028  -121.49020778203797     41.0527699283246506
-38758  -90.494743333333318     34.0773213333333373
-80434  -106.30333281976749     40.8822022906976983
-43506  -84.5606699401116373    41.4712023283743036
-35490  -87.2369340232466897    33.2139654488441138
-22820  -79.0322765847221831    38.7380469861111152
-93723  -119.93572814564078     36.797519590307239
-67673  -98.7883384848484667    39.1241374011543712
-93013  -119.511697701754784    34.4020132053005554
-69165  -101.19657714839073     41.2362772933636421
-00690  -67.0976033810263601    18.4927216438568998
-17048  -76.7271880241538469    40.6064150399189145
-11568  -73.6030047427560703    40.7848973802120796
-05487  -73.0205369580570789    44.2348867435344886
-46534  -86.6104376570105501    41.2763205696203599
-59347  -106.375781258557822    46.2829813073561738
-76226  -97.1529592123953876    33.1073412514334393
-96052  -122.824762705108014    40.7184397296660094
-49272  -84.3446045719557418    42.389645079704863
-76455  -98.3683624583800906    31.8206113624487479
-85030  -112.147131000000002    33.8833424999999977
-31076  -84.1225027570039856    32.5498432832178537
-26602  -80.6686495000000008    38.5363613333333319
-17749  -76.8195977902097411    41.0725630000000095
-42338  -86.7677257359999174    37.5613803080000039
-59461  -111.22423641666667     48.4624659444444461
-06320  -72.104455913392755     41.3478973747450098
-68932  -98.723227652234641     40.3457709092178902
-32681  -82.1871700967741816    29.4257201797234984
-47983  -86.7725433826715005    40.2854041155235052
-68837  -99.0453339319726922    41.6679249455782283
-37722  -83.2377488527317126    35.8240921459291144
-78236  -98.6176334350453203    29.3848870876132828
-66779  -94.9738168721461875    37.8469732180365099
-67024  -96.4921421841529963    37.1030513612021764
-64483  -94.8338050879828103    40.0449071294707295
-99345  -119.759041934782502    45.9027650507246108
-24834  -81.6449543626168577    37.5609587551401987
-28227  -80.6685767483828045    35.1891028863995601
-85609  -110.056741429319345    32.0408683186237511
-04082  -70.4807466000000034    43.8374043999999969
-49635  -86.2060888152618219    44.6312072015971921
-62515  -89.3864486513091236    39.8625003258203634
-37074  -86.14503716687463      36.4205595472936565
-89727  -118.836749076923084    38.9850221538461525
-66076  -95.4399742436593215    38.6283953958378419
-29202  -81.034812707317073     34.0115039878048648
-80474  -105.500842375469389    39.9177758235294107
-67650  -100.08215861864403     39.3244518474576239
-20754  -76.6506325003512501    38.7398501503020611
-77838  -96.7727403846153607    30.6045298461538451
-24808  -81.4089997622601658    37.3352252611940045
-66653  -95.6696693333333315    39.059429333333334
-77871  -96.146674423468383     31.0575444895752462
-21775  -77.2936559999999986    39.5657393999999982
-57346  -99.4536168679245378    44.2440633018867828
-71040  -93.0164145276786485    32.7769383722391083
-89103  -115.21985717240581     36.1141858308848569
-14225  -78.7606634973970472    42.9293215608219683
-78074  -98.8062938934426143    29.9454658360655692
-95427  -123.571930803703594    39.254460131481558
-71423  -92.5443475232300727    31.5347102252488263
-83335  -114.071180873585902    42.5702319279390693
-71444  -92.9017511388888835    31.1611195833333277
-95556  -123.56136242606884     41.2959161391030563
-58740  -101.452585913782386    48.5607106864927118
-53825  -90.5801462999995692    42.9180135301333721
-20674  -76.4938323417719914    38.1329414371957256
-64001  -93.5385165328718529    39.0995596678200457
-82410  -108.107010326343442    44.3775385792922847
-80007  -105.18283716649718     39.8305937070543266
-30297  -84.3660519210821178    33.6147333416056568
-23947  -78.4638992954927801    37.0519934858482571
-40510  -84.60014625704612      38.060507104471931
-48145  -83.4440298452721692    41.8481017879656321
-03285  -71.6361218941895288    43.8960936299695206
-72774  -94.2039454683057755    35.8918616439202367
-37201  -86.778316346444754     36.1660419909228139
-01730  -71.2764608050945583    42.4955721739353578
-20120  -77.4567562495269897    38.8512137579656667
-69544  -88.1420474615384535    41.6326584615384618
-87113  -106.589700273415687    35.1771892512772411
-81153  -105.409504818181816    37.1847670000000079
-83639  -116.830984162045411    43.5362370805891743
-59083  -107.541176276595777    46.6831827234042436
-85542  -110.432429583514036    33.2978946420824258
-72319  -89.9199952727272915    35.9608035454545458
-95947  -120.883281192156474    40.1330826657755253
-01984  -70.890867829512473     42.6020198876331619
-65079  -92.746830888006059     38.1548655930348062
-51566  -95.2284399214430692    41.0128472259182217
-23137  -79.5990052500000047    37.0145967500000026
-42444  -87.644684704081655     37.6397597142857236
-07757  -74.018377720670486     40.3145518579410194
-37179  -86.8946451572492009    35.7997959168945528
-91977  -116.995566694522651    32.7264916937179322
-29384  -82.0904975001862738    34.3301856667597036
-58771  -101.910923345249685    48.0720155675807987
-37330  -86.1338025836322458    35.2775754659759215
-80111  -104.880190469682731    39.6113009626770989
-58565  -101.371417134090905    47.4981287772727256
-96749  -155.006095740350787    19.590242491228075
-42324  -87.0076848749239673    37.1466476897389057
-35117  -86.87372866980688      33.6684106632849449
-44445  -80.6201803918988986    40.8472645489563533
-21162  -76.4145455306844212    39.3926274284027897
-48002  -82.9173175106676439    42.9359158472126552
-45102  -84.2149601451218928    39.0266660022973326
-99765  -158.11064038461538     64.7306035769230732
-61459  -90.4019911908472693    40.5025170160661503
-13488  -74.7590152010220805    42.6863260988074842
-19601  -75.938896622490617     40.3500561190085634
-15564  -78.8782102514285555    39.7349793200000079
-81227  -106.290985591836716    38.5511484489796104
-02563  -70.4742720998896459    41.7156035014061288
-99165  -117.136316000000008    46.7318998333333298
-78932  -96.6963008609736647    30.1500739566831939
-33593  -82.2076967916666632    28.4370787916666679
-40914  -83.5748803669106906    37.1115343305860534
-15698  -79.6860883877551771    40.215306089795952
-04292  -70.442618927408887     44.3740789442003987
-14747  -79.0948559116364862    42.1554384315495341
-31521  -81.5831117826086967    31.2267118695652179
-37183  -86.2941470031438769    35.5080430984459383
-22643  -78.0015506865942712    38.9023797744566124
-51360  -95.109344220497249     43.4325651200519118
-70550  -92.183834439490397     30.5197472165605035
-45656  -82.5964387234736108    38.879658606813237
-57793  -103.591740704674834    44.4839777848081184
-17935  -76.2821230094877478    40.7937898434534745
-07421  -74.3652351357671648    41.1682094820058566
-99727  -161.128449657142909    65.975254514285723
-36916  -88.058025157399328     32.2068685329341591
-92069  -117.158865837240285    33.1597855676700917
-85333  -113.450452656742598    32.87992205954464
-97343  -123.758640086255923    44.5982603278591938
-80026  -105.104877972627207    40.00156295366493
-45066  -84.2210547868380388    39.559763492426498
-15434  -79.8742820636704209    40.0797936404494308
-78016  -98.9141754325231801    29.1645109950431944
-80230  -104.896126744057923    39.7215535157046702
-98582  -122.633746144284842    46.5196113360400005
-64442  -94.0040231622265736    40.4895828637011945
-03071  -71.8671570760953102    42.7505060549577323
-62060  -90.1546415751120378    38.680590126681615
-68440  -97.0129109790475468    40.0451564019047765
-44710  -81.4173436518469629    40.7911554599862924
-76940  -100.134532957317077    31.4504932317072914
-56068  -93.7960394470757421    43.857496908651548
-48076  -83.231488978652834     42.4977207812861693
-42437  -87.9253242118796976    37.6573917028751737
-20860  -77.033485791436533     39.1486356491712257
-65668  -93.3124036124138883    37.9316767503448133
-87314  -108.013669857142872    36.4434478571428571
-60080  -87.8484729999999985    42.3125239999999962
-02553  -70.6174457382919769    41.7089221184573518
-23128  -76.4330033452767594    37.4528922003257634
-23015  -77.6330609353492918    37.9299367977841726
-47025  -84.8650019958280808    39.1633598762594346
-52722  -90.4839648170977853    41.5571402509491179
-50501  -94.1810167602577195    42.5028874609841694
-47928  -87.4809477711063721    39.950767846069887
-22898  -78.1243596428571578    38.2884994642857137
-11957  -72.2808996541916571    41.147490579341337
-57330  -98.1731454837240989    43.2898979609019818
-25147  -81.2566247777777875    38.1250040740740701
-32353  -84.480449764705881     30.6069716323529306
-10543  -73.734074112325743     40.9520517344666786
-75760  -94.8494410374006378    31.8095161639592412
-79359  -102.557454078516727    32.9453948767720632
-20645  -76.9179459241773316    38.3030894892704197
-68769  -97.7999454659475163    42.3450811409305032
-95836  -121.524575200000015    38.7156379111111093
-74740  -94.6392331944444862    33.8052298230994026
-76270  -97.7731785928333892    33.4461724891390872
-78123  -98.0377323535823706    29.6038619470405422
-57220  -96.9100792486654541    44.4622404541813907
-77592  -94.8950844999999958    29.3868085000000008
-34242  -82.5487257828902301    27.270569351495034
-78535  -97.7326170125000289    26.249203231249993
-45725  -81.9726864615384443    39.2483228846153835
-08739  -74.0591707333333318    40.0276818000000034
-77333  -95.7817994358974261    30.3564767435897558
-61920  -88.1740603792467539    39.4796949472758527
-78483  -98.5302133749999882    27.4462749999999964
-33458  -80.1226649295904281    26.9273465810488339
-01840  -71.1615261168830386    42.7079650111317548
-74553  -95.9098021426954119    34.7083456002265009
-36767  -87.2153148427093754    32.266666814090712
-65597  -92.5573462727272585    37.9533974545454598
-35571  -87.9407835886257772    34.3407143640114967
-99624  -153.987370526315772    57.533724421052618
-32352  -84.5857200515385017    30.6467796492450262
-65301  -93.221307891661283     38.70670896313014
-38117  -89.9043236373533148    35.115880367470794
-92356  -116.91497362438173     34.4390549643218549
-62839  -88.4937730693663269    38.6653287949769435
-62624  -90.3562245195196567    40.150921513513552
-17306  -77.2557306710526603    39.984492894736853
-45251  -84.5910746108413889    39.2582614862053916
-17259  -80.1799804000000051    41.6222764000000041
-18320  -75.2862104871795026    41.0545794102564017
-70256  -100.8563616    33.8991925999999921
-93667  -119.403829617311175    36.9861796831790031
-89436  -119.704626257776013    39.6028375691154721
-13637  -75.8332939555452725    44.0801381810265767
-37088  -86.311677538461538     36.1715105384615399
-62723  -89.2260065833333442    40.2726224166666711
-91042  -118.284422255960081    34.2552262098105018
-53004  -87.851092921916532     43.4962803315587507
-98332  -122.597522848941267    47.3658327404357635
-32336  -83.848959545980108     30.3529349584250454
-27861  -77.3176081428571393    35.8190360439560465
-79065  -100.958545761240003    35.5457892814141019
-21128  -76.4470771884999749    39.4043774904999964
-49840  -86.0243082082093196    46.0270809726353889
-29925  -80.7663907098765463    32.1974882901234523
-22520  -76.7745457682378003    38.1221164389029141
-89044  -115.103540531432358    35.9396380675909342
-82535  -106.755544999999984    41.241141571428571
-06105  -72.7035627302968095    41.7713365598770565
-17068  -77.175197168025619     40.4064046649677238
-31055  -82.8986237477968047    32.0114518429238473
-64356  -103.473328749999993    41.8170319999999975
-18902  -75.0950068016890953    40.3486828442693124
-56016  -93.3387159887483193    43.7622160506328939
-48467  -83.000353576513362     44.0240130453412348
-28872  -82.824978999999999     35.141689999999997
-61340  -89.2446316686746144    41.2631515481927593
-20250  -77.0272379000000029    38.8875573499999874
-16137  -80.2373355211359041    41.234066360288125
-51552  -95.1024348973384406    41.4990400773130617
-35353  -85.417371799999998     31.4095729000000006
-89012  -115.058520938490332    36.0151276353334211
-94517  -121.913196656857096    37.9264772628394624
-11914  -72.3839984285714308    41.1048079999999985
-29741  -80.1971222225454028    34.7243431483636655
-84712  -111.978357869409663    38.1415788765653048
-15492  -79.7658616779660861    40.1218061610169414
-38859  -88.3847226450333778    34.5233210072847925
-02021  -71.1290112355967921    42.1689263034235466
-49834  -87.8396143636363576    45.9617258181818258
-05732  -73.2026973627530566    43.6639829000000503
-46991  -85.5078619097296126    40.6255733853178995
-34759  -81.4833815460780642    28.0981350561998866
-12874  -73.5114138449197725    43.6899859331551212
-25425  -77.7859630027181055    39.2802999042154539
-15949  -79.1340393828124746    40.4021790781250161
-24484  -79.7910278001718467    38.1203038528147928
-28160  -81.9251221002284922    35.3589080280142483
-46371  -86.6015678750619031    41.6849344530240629
-79510  -99.5286530550444866    32.3312951270523641
-76685  -97.0267961374999857    31.3411661124999981
-62264  -89.8977059390537363    38.3173288544572159
-47016  -84.8990120835633348    39.3736417158061798
-09717  -66.6169020000000103    18.0077229999999986
-82645  -70.0119645000000048    41.7168879999999973
-87061  -106.318859434724004    34.7212878573351702
-06069  -73.4526327395300456    41.857801251270871
-70537  -92.5709271299143381    30.2607419675213656
-24224  -82.2892214644309092    36.8620051626405285
-91046  -118.24071450000001     34.2117977500000023
-54634  -90.4242835077989184    43.546928624164444
-71855  -93.7505623952118299    33.8607425752948927
-43068  -82.7913498185315007    39.9566061458055799
-86301  -112.441429357312032    34.574726154126374
-30519  -83.9371291270029189    34.0897620463688966
-73550  -99.9131231002677964    34.6908642598930612
-95666  -120.519445471601983    38.4713155606776454
-22942  -78.1918325708082733    38.1112182764366665
-79069  -100.273752749999986    35.4475890000000007
-78146  -97.8119804799636228    28.6112774162113013
-48189  -83.7890075173153264    42.4245637911378921
-15007  -79.9329353661971851    40.6517689464788958
-80446  -105.922037785051359    40.097368900699486
-15351  -79.926018748743715     39.8788374145728923
-20388  -76.9961179999999956    38.8728064999999958
-41099  -84.4655595000000119    39.0355840000000001
-75252  -96.7962655634410538    32.998329634412741
-65250  -92.8284219033136395    39.0491801420789315
-80209  -104.964641077363098    39.7063316750735567
-24522  -78.794243661791711     37.3630940461165508
-59105  -108.468230571256555    45.8386457369087665
-56720  -96.8938460888888926    48.5722101555555525
-01057  -72.3250962416830561    42.0949813511879469
-59936  -114.00851093865856     48.5133271323919217
-98034  -122.205038959738175    47.7192395435659122
-71340  -91.8308333631394618    31.7852167075360938
-50231  -93.6019500304878136    42.2381640182926503
-84353  -105.208940600000005    34.6039141999999984
-65475  -92.0360973999999885    37.8582933999999938
-78551  -97.7169739999999933    26.2409758750000002
-75021  -96.4972672133032887    33.730211278836741
-82324  -106.414218777227731    41.6760557673267016
-10471  -73.9044559820392664    40.9004016309386031
-28638  -81.4792656838961733    35.8414198207350267
-61525  -89.6452576516993247    40.8403819693666321
-20715  -76.7429287094301316    38.9804510733254261
-25685  -82.3592353749999972    37.7957313437499991
-97070  -122.767242515311011    45.3055774370655513
-27533  -77.9684482244898049    35.3542016258503295
-19551  -76.1439876668298155    40.3576009838394185
-46161  -85.6966020328613638    39.6744149914505968
-10468  -73.8998251030149902    40.8671646541038385
-00659  -66.7938469104156383    18.4659064796399264
-47921  -87.3732985669432338    40.491027302725044
-23915  -78.2833884953757746    36.706376076011658
-04039  -70.346203218998582     43.8843800484120976
-76539  -97.963618679061625     31.0807887802250278
-47459  -86.7348163794906952    39.1010725345089938
-21029  -76.9433290281137232    39.201715644669882
-62325  -91.1627352310557768    40.0443392447205113
-62946  -88.5376884765535266    37.7165173234786693
-68844  -99.0435458713178463    41.0461152372093281
-26543  -80.0088770514706482    39.6595918308823485
-44138  -81.9188182633593698    41.3708057811973049
-31090  -83.0743226406151507    32.807678431045538
-37869  -83.2422827321038596    36.5130452219203008
-84501  -110.798880599422716    39.578101793937833
-59045  -111.302895500000005    47.4862524999999991
-07945  -74.6008848045993318    40.7840392132478797
-19446  -75.2939918803024       40.2362627249445453
-99689  -139.728583354375928    59.5474543744619922
-01235  -73.0796018195073742    42.4323751835092153
-41631  -82.6536547308411826    37.4667521757009894
-49667  -84.9394232720587326    44.345354260746646
-03280  -72.0847131799141465    43.1665234970633236
-49748  -85.1803785417544361    46.3568593164912883
-11697  -73.9137177029411987    40.560310632352909
-93543  -117.94765559896156     34.5189159961819527
-46106  -86.193951993352087     39.5240683769321208
-57529  -99.5739731509663386    43.2030380012077231
-53192  -88.1833332325581125    42.5119643023255946
-30334  -84.3890252127659721    33.7472246808510761
-57428  -99.6818774970762718    45.4533719532163545
-47106  -85.9155512600024593    38.4530741775216711
-65330  -92.9665598738937149    39.2125635464601672
-88411  -103.195310842794754    35.158877539738036
-67870  -101.00416090246533     37.4870876827438124
-53130  -88.050350740495503     42.9413741062787295
-62087  -90.0597127026209705    38.8276365100806302
-66621  -95.7018882999999789    39.0332713000000027
-54440  -89.3869406296983442    44.8007948098499895
-82836  -107.319167730346535    44.8701648081149784
-95247  -120.448214250734608    38.1474325567469563
-16058  -79.6173512608695688    41.1827341304347812
-27993  -75.6865913999999975    35.2229010000000002
-35502  -87.3010826984127135    33.830727857142854
-38105  -90.0359186353442027    35.1515356890951836
-48741  -83.1760229377962617    43.4024220811611272
-28403  -77.881435406706828     34.2220287396957232
-70340  -91.0884075662650616    29.7818139397590542
-95736  -120.970578434645574    39.0383954015747818
-38120  -89.8626811850053286    35.1208533506863603
-87532  -106.052352735464254    35.991387391632621
-15315  -79.9769214561403601    39.7723119005847892
-68655  -98.2531902619046775    41.6527811761904658
-14024  -78.2488353274597159    42.5760304519824331
-78829  -99.6277803930014159    28.9508149636608216
-00647  -66.9394941235954661    17.9616191878009772
-64037  -93.7292687818072778    39.0543115634142382
-78115  -98.0494702499999988    29.548030875000002
-87665  -105.597696999999997    36.7225454999999954
-42732  -86.1074349474902192    37.6086992045045037
-02143  -71.1014209616612192    42.3825172900957838
-78567  -97.7454832989690203    26.0509064329896809
-92518  -117.274624426691616    33.8862386879699358
-67010  -96.9828607979126502    37.6796284364553884
-54125  -88.4075469861386125    45.5958567366336425
-69301  -102.883627304729202    42.1457715667781443
-60523  -87.9585893187493042    41.8355917943607309
-62902  -89.1516872075470559    37.6725165828237039
-75551  -94.1879981675203624    33.1200037698485517
-83720  -116.163961833333346    43.6028553333333306
-32535  -87.3365931314468469    30.9681241288950488
-42757  -85.7245548336466072    37.4058667037236958
-58012  -97.1929449934114729    46.9136099443631025
-35774  -86.236722174496677     34.7451693456375637
-62557  -89.09455377470168      39.3952917361213437
-24173  -80.0646983333333395    37.3133589166666724
-07607  -74.0628499624776566    40.9034250035735454
-97497  -123.391630160062064    42.6632608421135231
-38359  -88.3718881827008147    35.3696801897617519
-47421  -86.4739027540378942    38.8702587200706873
-32259  -81.5966706926154188    30.0892041203871834
-01778  -71.3569791496630899    42.353109014253647
-42716  -85.6333439148615554    37.4822675163515271
-48230  -82.9217614193548087    42.3834450215054588
-04929  -69.3129444719471621    44.7720650220022378
-63879  -89.8179447690802846    36.347696258317022
-34461  -82.4820756105658432    28.8463233717949024
-63066  -90.8217981333333739    38.318288966666664
-28034  -81.1801010271366152    35.3461348317642461
-62871  -88.2693381998022772    37.8759942735352055
-99714  -146.935631456866474    64.4769884837408824
-31625  -83.5260915903209735    31.0017412285577088
-53561  -89.6303777003969202    43.3722030912698386
-19468  -75.5331675242560863    40.2055207343876475
-61241  -90.325480981211399     41.4835803793724125
-40953  -83.8175391789473423    36.9366650429149956
-02381  -71.6848304999999897    43.1476213749999928
-68949  -99.3740238120300461    40.4422765480129272
-03819  -71.1205362141033817    42.927380907483851
-98921  -120.314603312499997    46.4291856562500058
-43356  -83.0480062561099146    40.4655250254583478
-66603  -95.6759215817942845    39.0557562889181824
-80013  -104.776529129073779    39.6586687083610059
-21035  -76.6315805648467716    38.9382470979315585
-47250  -85.3528895769269269    38.8000492884950887
-02827  -71.7286824713684155    41.6957579699474081
-24106  -111.857006124999998    40.7187121250000033
-50154  -93.3929753348923413    42.1644757913938122
-01970  -70.9029720323480035    42.5125331603020058
-38743  -91.0524478750000128    33.0079147499999976
-29624  -82.6420902385599021    34.4641467801006627
-06878  -73.5820016723008479    41.035673471493574
-60557  -88.7709552474226626    41.4396418762886753
-57317  -98.970555871770344     43.1187533703348578
-78635  -98.5537929887279063    30.2239600917874327
-98394  -122.776783555396079    47.325960062082288
-04226  -70.7187864666667139    44.6237620051282136
-52584  -92.2540316584507138    40.6620628943662155
-02382  -70.9389778676595597    42.0809638896811009
-10953  -74.0751302579617601    41.4078176496814976
-62934  -88.3648248435467565    37.7134410205996602
-00958  -66.1951193333333094    18.3408442380952401
-43743  -85.5761093333333491    37.2041510000000031
-25526  -81.989481073646914     38.4346980426519593
-18467  -75.1280542500000053    41.6904076249999989
-16648  -78.359333004315161     40.4406923183578968
-45041  -84.6939098796296008    39.2201255648148219
-15449  -79.7857382878787718    39.9687163257575904
-57644  -102.166213865016786    45.4709094814398327
-83674  -115.696815000000001    43.1065569999999951
-56536  -96.5348009193011052    47.0487690049916196
-93003  -119.220341702645698    34.2721677218690246
-35975  -86.0423198858306364    34.4431525847773727
-70812  -91.1177012141455265    30.5049798189726857
-18831  -76.6050774117005346    41.8919579840116185
-60463  -87.7928227910782795    41.6625102267655691
-25921  -81.2575824079540467    37.7057548318983322
-55366  -94.2298077403846293    44.671162429487218
-86004  -111.542250579527931    35.232235909841215
-33547  -82.1782009554530077    27.838370341031041
-92222  -114.567811128205136    32.7864579871794888
-81251  -106.334108355712601    39.0890115877503135
-64085  -93.972681420149371     39.3183612718386826
-00705  -66.2702996560789757    18.1384014545454733
-67132  -96.6343755393586292    37.8012213542274225
-83712  -116.161918313480626    43.6051711481401369
-68950  -98.6528338306556378    40.4267138758141442
-84718  -112.054928602150554    37.5667543870967719
-52627  -91.3418477360589094    40.6478227351273489
-29151  -80.4045358750000076    33.9289890000000014
-60541  -88.5368937728027134    41.5282941827898355
-57452  -99.8624501356413816    45.5423936606130937
-93402  -120.829605962978917    35.3107045657447074
-23577  -87.3060890000000001    30.7228264999999965
-30350  -84.3269523690719893    33.9768092299417859
-18519  -75.6246860383481021    41.4627257564264795
-76657  -97.3755269537721944    31.4514737788547372
-24084  -80.7335352511128121    37.1075122637564476
-87543  -105.689749419014049    36.1483637640844933
-12487  -73.9979709138643926    41.86034395870211
-55655  -89.7295773333333386    44.7884526666666645
-52336  -91.4401028771187043    42.0598838290960373
-89410  -119.672466257672411    38.8860014883228047
-71838  -93.8056184669008815    33.6680087887057411
-06778  -73.1065532215161795    41.7118269110304496
-30750  -85.3863699945682413    34.9406267923230516
-64064  -94.3574170711166289    38.9915317469833056
-24265  -82.9501963078445783    36.8353554916799411
-03608  -72.412273458291736     43.0728336254569442
-29439  -79.9376600473783867    32.6592609210359583
-55708  -92.3374768282442204    47.547828068702259
-91737  -117.580067104825986    34.1490273356101426
-40045  -85.3568257020149446    38.6938051971523365
-56734  -96.6586066684635483    48.7382033773585235
-23442  -75.5711230575758037    37.8998344436363297
-08759  -74.3263545672743504    39.9811519868817484
-87585  -106.044031833333349    35.6336623333333335
-23102  -77.8388374234224898    37.7132959657064362
-50622  -92.3498913817596616    42.6736620664527777
-58428  -99.7796688593668648    46.8201387820360253
-43147  -82.7596966629308497    39.9058463640370036
-53948  -90.0742877159482873    43.7956245711207828
-51057  -96.1969071999999983    42.8950360000000046
-21643  -75.8713167332228835    38.6484581701777046
-28522  -77.3958799999999911    35.115089250000004
-71913  -93.101382255817839     34.4659696011320094
-66014  -94.9757294866893886    38.2259088614334033
-05866  -72.1297994104918416    44.6259743637158195
-95344  -120.311199423076914    37.3375908076923082
-44012  -82.0060102695719166    41.4958122539683885
-99251  -117.415671250000003    47.7511365000000012
-45663  -83.0689782212657377    38.7511262160569103
-99608  -154.435790432432441    57.5636159189189129
-42372  -87.2730741682204609    37.4160342188056916
-48178  -83.6596477562602416    42.4586723024330865
-96059  -121.835423056698787    40.439844496569151
-44412  -81.030377155339778     41.0959850828976698
-30817  -82.4396010746827557    33.7739534476687382
-02150  -71.033767291666706     42.3970449787297454
-29355  -81.723433786075077     34.3731317214934364
-53933  -88.9113534646302384    43.5627766077170762
-82925  -109.99893627648477     43.1220420497591519
-11962  -72.2704553446567104    40.9364110184005838
-58756  -101.793427842632397    47.9880270457795817
-94403  -122.300850558027705    37.5374834407672822
-45856  -83.9968303782442547    41.1115128056116674
-71334  -91.5547474064016882    31.6503286164358038
-28323  -78.8502116717432955    35.3090681552564902
-32926  -80.791248487772819     28.3897308853712538
-67519  -99.099720967654946     37.9489399811320922
-20165  -77.3851746357251784    39.0458261559573643
-71611  -92.0144688181817969    34.3531660000000016
-60623  -87.7180860040994759    41.8494721245486261
-21156  -76.399139159259164     39.4363405333333219
-86444  -114.071145685379051    35.9749316098495058
-66710  -95.6515968318583845    37.5412333525074047
-35918  -81.1026045454545539    37.7061805454545436
-87743  -104.224760196288941    35.9131718535156423
-06457  -72.6626569097060013    41.5500096386965296
-28753  -82.6850547255417609    35.8385400170330968
-97489  -122.629636269922997    44.1298492583548025
-70548  -92.3069439218905075    29.9808418649646526
-22483  -79.0435186666666709    38.2947683333333302
-31252  -81.4945605555555517    31.2383983333333326
-62891  -89.0405975735849609    38.0157598037735909
-15684  -79.5161891753623991    40.4626116391304009
-71633  -91.582046599999984     34.1225850000000008
-62809  -88.3571224834123115    38.3021065687203759
-97060  -122.388125908102467    45.5258777800613643
-80541  -105.463509968512014    40.5579650711021529
-48021  -82.945917940783275     42.4651686714422638
-84111  -111.883853433826928    40.7545774656797235
-50316  -93.5990293151459127    41.6077608102854839
-83843  -116.969498413762338    46.7346834001171771
-89086  -115.122415050139224    36.2798416657381679
-19301  -75.4801446302111145    40.0473582788306501
-62926  -89.1447983934319979    37.3790046461356482
-14724  -79.6755099356807364    42.0548981540811511
-43219  -82.930730819792231     40.0082820015308798
-72412  -90.6788487611045895    36.1231929195678845
-56013  -94.0991620008602325    43.6283356690009896
-33544  -82.3669064749905999    28.2365532595093462
-85632  -109.129494313981624    31.9215960429405072
-34447  -82.5102363529411775    28.7727797352941188
-61330  -89.2828287857517608    41.5414438242535411
-86516  -85.8340201999999977    31.1259969999999946
-67837  -100.630216234031238    37.5759851298980294
-71433  -92.6502550923280097    31.0164764161477926
-23040  -78.2530180662375017    37.5038674161162078
-30610  -83.208029499999995     33.9274575000000027
-48146  -83.1811298138842119    42.2431437924895334
-08007  -75.0560642949878343    39.865383419884985
-16731  -78.3722097984899193    41.9472171644644902
-05076  -72.2319982085855656    44.1327863189394662
-61774  -89.2078450000000913    40.4319703954469389
-97203  -122.737100171787915    45.5898674155930053
-61032  -89.6424328813762514    42.3037282477494898
-85327  -111.935771823404352    33.8112868510638407
-34250  -82.586669594339611     27.5725521811320711
-33524  -82.1512716333333515    28.1823012333333303
-70658  -93.0464073054137657    30.5195719339462492
-79002  -100.730879538461537    35.2084852692307706
-26151  -81.1466384957215894    38.8634537490017706
-86503  -109.610454606194708    36.2150535884955644
-59078  -109.479559872222197    46.3262671515873805
-76604  -94.7046574999999962    38.3887725000000017
-57368  -98.4642715155817427    43.732766829373567
-83876  -116.907535491750778    47.4580702524561318
-95688  -121.997933330027564    38.3914822514184877
-03570  -71.1711018162901183    44.4840774645334918
-33189  -80.3444600902869439    25.5746088688741757
-23225  -77.506810361618534     37.5207445717497947
-97842  -116.80784991568494     45.4662042585245345
-16838  -78.6303206029283359    40.9800096303187615
-15674  -79.4962860581395176    40.2093299302325491
-66514  -96.8825471977954322    39.1210278714022976
-14843  -77.6490000466801291    42.3255877917035974
-15006  -79.8784871574074486    40.63232672222221
-95563  -123.536629162072416    40.8806828076075561
-48168  -83.4987377896166834    42.4083960343275592
-59842  -115.407930042253582    47.3990504366197385
-23422  -75.8213113245901411    37.6354415836065641
-12936  -73.3952185914084794    44.2814227397603091
-77834  -96.2500315999999856    30.3150168000000022
-54017  -92.5401445216648426    45.11940231015938
-71354  -91.766838725290043     31.4348073150812333
-94037  -122.506395506310312    37.5415132769116227
-54450  -89.0417442670454733    45.0059784147727271
-94589  -122.246713103319905    38.1461343335555654
-18824  -75.7942993108311498    41.7070278302266431
-79430  -101.901831000000001    33.592209666666669
-31626  -83.8000918665845091    30.793730174300638
-41536  -82.1216519999999974    37.4712703333333437
-57733  -96.9131110000000007    48.6418689999999998
-85757  -111.102037896254259    32.1331036688223293
-72927  -93.9756407323381069    35.1013453943685505
-25749  -78.178607999999997     35.9456786666666659
-41174  -83.0238048955123844    38.6963077444741614
-12791  -74.8875231192843103    41.8069923399602033
-98075  -122.029057364213372    47.5863389009236784
-24856  -81.7179835641025676    37.2586205897435931
-32426  -85.3719365182828369    30.9499565975760902
-79908  -106.386162470238148    31.8249570654761946
-79021  -101.995665756302486    33.9836836218487406
-37507  -83.759529999999998     36.3069449999999989
-20198  -77.7646646206660677    38.8875538101017781
-22935  -78.5515603035994445    38.2528915964675846
-31463  -82.6745294999999913    30.9929600000000036
-21601  -76.0781428426191155    38.7761750038511153
-85283  -111.92846285299963     33.3647849786635149
-92536  -116.822944770734949    33.4930931649467425
-20842  -77.4106152328285759    39.2200995678055477
-07934  -74.6700539017013227    40.7246466493383963
-33146  -80.2719553144010121    25.7198788556796423
-47340  -85.1304021830693642    40.176053898467913
-03596  -70.8407158928571477    45.0028824999999983
-33778  -82.7969824121963711    27.8819352072274889
-15953  -78.8978616019900869    40.2114444726368134
-19472  -75.5677621818181962    40.3385612207792192
-98357  -124.619321164313746    48.355952111834867
-87432  -105.968960249999995    36.0000630000000044
-14624  -77.7336668902630095    43.1239700703301736
-15074  -80.2473687951005701    40.7177471503767734
-05079  -72.3260180509244606    43.9574311279598859
-33330  -80.3157163213561773    26.0633619449067631
-29152  -80.4796286162679593    33.9848670832535689
-08736  -74.0661763685383647    40.1199564161398499
-84150  -111.616248727272705    40.8384926363636396
-21225  -76.6146015331731434    39.228356306195046
-37033  -87.5151395035259299    35.7606258247795878
-42035  -88.8285785217780557    36.9002029746665983
-38224  -88.4826975976051813    36.3825906399874555
-75163  -96.1101850811468523    32.1962396386258618
-48506  -83.6365773841845481    43.0566735503400082
-28813  -82.7690805714285744    35.4292841428571492
-16115  -80.4538009457481422    40.7968450688984205
-68634  -97.4951017297297966    41.387335117117118
-37809  -83.028364793663286     36.1579509052649541
-56033  -93.9249298418646532    43.565661998171862
-10178  -73.9782884999999908    40.7511109999999945
-79582  -98.5027925714285715    26.5215570000000014
-21227  -76.6785781769727777    39.2424451737831532
-38765  -90.8676404594594516    33.2483923243243282
-07306  -74.065888254655718     40.7332026266781568
-13081  -76.6363601081608152    42.6683833885200485
-12506  -73.6911121999999921    41.8759844000000001
-24246  -82.7437390043668017    36.865400218340632
-87435  -104.665876333333344    34.9109626666666699
-18636  -76.0720181848851809    41.3986216257310105
-76234  -97.546434635174208     33.245405596024888
-77539  -95.0405377242096421    29.4639677523603503
-68351  -97.4477175215190243    40.6508277620253082
-62027  -90.5497082130435302    39.2826361826086909
-40176  -86.3440897760395529    37.9316405317002037
-60540  -88.1501238051082225    41.7623583741523063
-64485  -94.8326572249814745    39.9430185970655671
-24279  -82.6072514330614212    37.1037525676357021
-29470  -80.2262792270356329    32.7991931237945522
-29204  -80.9998499974609985    34.0276193987978601
-62035  -90.2260241107781695    38.9524292085914681
-40981  -83.4979183229571902    37.26972757587545
-32951  -80.5290364419933269    28.0021793111110213
-50575  -94.6926268176033687    42.5591456698480002
-43536  -84.6350869623250901    41.3051208449945833
-29580  -79.5583337973066733    33.6647678845116758
-47660  -87.337749714196562     38.3123203635418506
-77073  -95.4028432642281246    29.9966592528457312
-54769  -92.2619344999999953    44.4833882499999973
-01864  -71.0854188920403942    42.5824881662269945
-59000  -108.204383084010843    46.641982478319818
-07649  -74.0335177196341192    40.9545798798433225
-26605  -80.6788170000000093    38.3416375000000045
-77031  -95.5414631550563058    29.6556144692134787
-86442  -114.453575260320861    35.0273933853863468
-45160  -84.1365461556017493    39.1235958672199473
-16428  -79.8305766494821967    42.1927847223674135
-86440  -114.583130250000067    34.8929081547474951
-55797  -92.3859026372817453    46.5702702987450365
-22473  -76.3944762022455564    37.8873144780943818
-96819  -157.881048903975142    21.3448390012504738
-54956  -88.4974355355255113    44.1835312246549847
-60606  -87.6365224825073597    41.8810944125364273
-79104  -101.791766908935571    35.1995748230012708
-91361  -118.851055200960303    34.1449978618395704
-50532  -94.0018541208792016    42.4602351312576403
-03087  -71.3031083523322025    42.8075967928602594
-18348  -75.5296683601895609    41.0950548767772545
-38390  -88.3751189120140737    35.8405788043370137
-89949  -117.232006124999998    38.0622908750000022
-98650  -121.514389771288151    45.9803370839225636
-47581  -86.7756445951975905    38.6577272604363955
-32071  -82.9347131315945063    30.0388513962740689
-32113  -82.1035374719247244    29.392361387230018
-37881  -83.3498030718036489    36.3973272726953923
-78725  -97.6127629160803281    30.241493154304333
-07857  -74.7015599722862618    40.897924980369524
-66756  -94.6401909323509898    37.550166074346933
-57216  -96.493436143489447     45.2958563900126023
-13492  -75.3146573562736705    43.1157379956113971
-75007  -96.893334976612465     33.0060610780543087
-60163  -87.9112156704022141    41.8868460896506178
-61755  -89.3397430643212971    40.5356349772906626
-10982  -74.0992889999999989    41.1087773333333359
-17920  -76.3380006829269036    40.8137292737127382
-04648  -67.5754935929857794    44.6539120710659958
-55703  -92.7524038562578141    47.7499464850061841
-16322  -79.3746286384778159    41.6077071797039935
-27110  -80.2234450833333312    36.0883095833333343
-37357  -85.9249435256053573    35.6102748967447766
-01746  -71.4410870344520106    42.1990188250803584
-81430  -108.018170425153727    38.0292845268349282
-75104  -96.9551606101538397    32.5860643681232744
-14210  -78.8270743762638233    42.8644335160438956
-05452  -73.0825131836404722    44.5067548623970666
-48180  -83.2663312738487065    42.2301865628632314
-54874  -91.9300062152560145    46.5805660500464711
-38050  -89.2243801793611482    35.8191454398034139
-36327  -85.3267540769230806    31.6757192307692321
-39193  -90.0721787586206943    32.2371720344827537
-59411  -113.369407575342265    48.8961142365296837
-91010  -117.965368676225097    34.1373029715151475
-27568  -78.244175686371122     35.5097973924466146
-35670  -86.7284478475928893    34.4674662798695053
-68859  -98.7944312690354991    41.4921029746193071
-93518  -118.45406086165849     35.3934843520145748
-67454  -98.1383718145639818    38.7098786943268891
-74333  -95.0836659816156526    36.7965896545961115
-97113  -123.050529225884233    45.5070125472501488
-42219  -86.7809251333333265    37.1711588666666657
-13834  -74.9630779999999675    42.5387712545454519
-58769  -102.255469565485342    48.3595953127889189
-30275  -84.8706689999999639    33.4321275416666666
-46823  -86.7289715000000001    40.5943380000000005
-40161  -86.3969082645577942    38.0004877534148306
-00978  -65.9859715000000051    18.3627694999999989
-76992  -97.4211695000000049    32.0296689999999984
-12035  -74.3602714902596347    42.7277545075757246
-15464  -79.4438173404620898    39.9341320648499405
-34140  -81.6474040273972435    25.9249286164383506
-17740  -77.2593691543112158    41.2221340686067563
-32430  -85.2152370469511453    30.4515295213414667
-67127  -99.4881509042552068    37.2067634326241432
-11040  -73.6793791883158775    40.746150115848323
-15639  -79.5958783025071881    40.2084217085901869
-01529  -71.578983643755663     42.0359380741239477
-15238  -79.8800877087098513    40.5310256056139977
-26175  -80.9611039109424411    39.5425880324464885
-24312  -80.8586572653983779    36.8320939395826841
-74076  -97.129414666666662     36.1448836666666651
-93615  -119.288227667463374    36.5126145360414185
-02420  -71.2180793323610573    42.4563101134721776
-96093  -122.928757911543826    40.7312652551052565
-89061  -115.92600276315342     36.1239446954305023
-25143  -81.8242212962041293    38.4201410824671541
-40840  -83.4201321608442612    36.9398258580785992
-32163  -81.9883947511914073    28.845523880690255
-61729  -89.222094298701407     40.6266074523809166
-30345  -84.2834449746973888    33.8506526387502333
-57029  -97.3779612989153236    43.2869744776216265
-37331  -84.5369522008007692    35.3226087453451569
-80902  -104.803459779560811    38.7444237457770768
-48729  -83.182041644746306     43.4948961644031229
-53171  -87.8840837681159286    42.6165809855072482
-72461  -90.2912597198398572    36.2709990944270757
-46995  -86.21575693333331      40.4422654666666617
-63125  -90.2974636247382278    38.5205700138900795
-76248  -97.2377457853169034    32.9229048177073764
-59467  -112.303660910471251    48.0707324198038179
-78263  -98.3131219181088483    29.3608110755593685
-26419  -80.6526307481031779    39.5686265159331896
-60031  -87.9500967544832406    42.3737127031492591
-95352  -121.016689500000012    37.6288205000000033
-12087  -73.894828722769077     42.4281914584615052
-97490  -123.60305920815739     44.0315018152836615
-44010  -80.8616023798508365    41.7619736238806141
-54613  -89.9121971368874995    44.0554156372478261
-85391  -110.798567333333338    34.3297970000000063
-41859  -82.7835918227147118    37.3974873144044082
-75608  -94.6246026818181605    32.3711445454545412
-35909  -86.0195038999999895    34.0740813000000031
-67067  -97.274834947925001     37.7943942001626922
-48209  -83.1130886199844952    42.3074601070602085
-16847  -78.1605782741312396    40.9970370714286148
-12454  -74.1712535372196982    42.2853966017937211
-23963  -78.8085985662921189    37.1931144949437993
-93643  -119.509066839584477    37.2258285814646825
-32738  -81.1913775570780274    28.9084917341918377
-79423  -101.874827634423752    33.4894390259344732
-43337  -83.2516975730824242    40.6823145045826209
-54616  -91.2285237536496254    44.2936506441605502
-34499  -81.9681630000000041    28.9707739999999987
-14882  -76.5457712732285103    42.5673173086614796
-73758  -98.0470582878788406    36.9544023131313395
-95735  -120.138646001818231    38.8049077163636653
-04432  -68.6623831363636157    44.5616317727272744
-21788  -77.4116817729059221    39.600517481992938
-95466  -123.500036881589779    39.1047381954582747
-06823  -73.321716500000008     41.2050964999999962
-41549  -82.6038666851851673    37.2925212592592601
-39127  -90.5647625625000074    32.0771595625000003
-71038  -93.0974558388556801    32.9375910781973147
-16151  -80.2069787397260399    41.4444481369863098
-57036  -97.1442608273694077    43.2723367870378155
-92102  -117.120212233907679    32.715221641772537
-04955  -70.0094061700049224    44.6363721275631988
-46360  -86.8685987444803089    41.7063665834263446
-46527  -85.8183346666666722    41.5601960833333379
-63687  -90.4904702857142951    38.0136419999999973
-83438  -111.760344333333322    43.9567333333333394
-02129  -71.0640964461654363    42.378491684926253
-43901  -80.8637463769144205    40.2152391542855909
-15641  -79.5920893351548386    40.62725234061935
-42256  -86.9588054715279668    37.0138883135911314
-97420  -124.20559796047398     43.3485580658653973
-35594  -87.8025360488401674    33.9105161697795481
-72658  -92.2819278537436247    36.1944998229745067
-47633  -87.7793151616627938    38.1587144801385065
-58327  -98.5591334425919001    48.0877553432731091
-54875  -91.5763298000000106    45.9259303999999986
-49029  -85.0883491603426734    42.1387424449204815
-07062  -74.4038009927227506    40.6311217992295113
-15904  -78.8588209152564161    40.2931525483989503
-82694  -106.373976499999998    42.8453224999999946
-80729  -104.172912311781758    40.8678261446360267
-29040  -80.4569017093023717    34.0280971817684588
-65681  -93.4644931022148597    36.5599165632966745
-79111  -101.675449264184337    35.2274390797872314
-47382  -84.9180207857143046    40.2360495595238206
-36885  -85.2615185151515078    33.0330284242424241
-60614  -87.6521085326646698    41.9224724138097287
-43151  -83.4760769262294957    39.7328267745901726
-55422  -93.3400753701032073    45.0102175462887715
-68350  -97.0836974686940835    40.0553864812164591
-71016  -93.1151480351260972    32.2160368765627823
-23919  -78.1073263181775275    36.5792272679283812
-60550  -88.8709099121288517    41.7709376943069799
-68459  -97.2734978333333515    40.6811713333333387
-28501  -77.5476886260918832    35.2730416227894921
-20794  -76.7913886260094074    39.1521928917739146
-49066  -85.3498229260699333    42.0326296666667218
-79233  -100.442087256830547    34.5445710874316845
-43964  -80.6525721503973898    40.4731953524946846
-15825  -79.0574821428352834    41.1651067487088582
-38935  -90.1951285833333287    33.4989257291666647
-69169  -101.170580851480906    40.7937995283101671
-15725  -79.3436274987608812    40.5189929649938918
-77029  -95.2615914346257995    29.7614793440035896
-78753  -97.6753710398018455    30.3738517645965906
-97850  -118.094441001620325    45.326660458247467
-41274  -82.8096811927601237    37.8671692859728068
-74946  -94.4467214999999811    35.3944841979166611
-27884  -77.2700043542354962    35.7067496875687169
-29943  -81.1415120057552599    32.4995642028776857
-36528  -88.1189517289820969    30.2538988313053139
-58750  -101.381543393816415    48.6302913049276455
-30638  -83.4343036060605954    33.744594515151519
-77305  -95.4671212500000053    30.3362410000000011
-53221  -87.9467298839173566    42.9531835507131419
-72390  -90.6578359803605309    34.5468587830632643
-32054  -82.3971992160530249    30.0161194802665925
-49344  -85.5681288274816154    42.5945034980494697
-11701  -73.4135179155285158    40.6861243975626152
-32648  -83.2729178442804852    29.4913912258302098
-32330  -84.7428294121306322    30.5733145598756231
-04442  -69.6202422903929801    45.4721820524017275
-56733  -96.8990362510822365    48.6410053549782901
-64655  -93.2195395629369727    40.4517753461538874
-70357  -90.2465646038068314    29.3296716664714339
-95319  -120.903033625592386    37.6385402701421867
-95635  -120.905235381385282    38.9114436396056789
-61349  -89.4441564698039286    41.5464735903267623
-79516  -100.885793099999987    32.5637499999999989
-54028  -92.2840794407802605    44.951973713475212
-32187  -81.5801165824743606    29.598070669458739
-12028  -73.4434038580247091    42.9434466651234175
-18414  -75.7390533737719238    41.5357730768751168
-69123  -100.373056057314002    41.0226257573688997
-83717  -115.836726499999997    43.7455867500000011
-40310  -84.7562745706213576    37.7895030875706155
-55944  -92.7375986593452666    44.0094114094575843
-12110  -73.7677923022175577    42.7489136871320241
-57295  -96.5167288333333317    44.9342861666666735
-63857  -90.0470110789558618    36.2383548534147124
-32609  -82.301499443077347     29.7247766336470463
-91780  -118.055053646704593    34.1006965318267632
-49087  -85.6700809067052234    42.1168446831876082
-28803  -82.5142832529201939    35.5334496365078749
-71242  -91.411727935483853     32.7975366774193589
-74533  -96.2027229803406527    34.2212306264744299
-42485  -87.4401057000000037    37.8217069999999964
-73034  -97.4393240637096909    35.6940839571127313
-86437  -113.632681391304388    35.4105364565217329
-29074  -80.8032977449920793    34.4500364197138822
-24540  -79.412075492772658     36.6343819755972504
-34137  -81.3609788577586244    25.9586533275862266
-25690  -82.1114596666666756    37.7027558620689689
-64783  -94.1080758069216614    38.0089160455373332
-15143  -80.1489879951260207    40.569939182489378
-79093  -101.032535978494607    36.2758539032258085
-19533  -75.9923244222868277    40.4260677761040625
-57639  -100.805606043269194    45.6703849615384314
-92401  -117.290970637472256    34.1049579290465843
-72675  -92.7640686214971737    36.0387606460918803
-29571  -79.3926645037676337    34.1582363879864133
-46249  -86.0089277272727344    39.8617403636363576
-39542  -88.6487100909090771    30.7752048484848473
-45768  -81.2589080101991499    39.4119197000971226
-93544  -117.772888209916417    34.4934755891348317
-84321  -111.834173586512605    41.7211466837685734
-35678  -87.7438259999999985    34.6897184999999979
-63541  -92.6277810092349085    40.5068902269129438
-14479  -78.3014850155038857    43.2421462945736366
-54926  -89.0173944285714214    44.6155694285714262
-32215  -81.8899982857143129    30.2329247857142889
-48315  -82.9933448312544328    42.6643466504033668
-78861  -99.1166430002427745    29.397678067762282
-98077  -122.060339714633884    47.7505245414178177
-17366  -76.5613139656148434    39.9275142312763762
-79603  -99.8001417887906257    32.4498116175689049
-99663  -151.675470702414458    59.4556791667602624
-29702  -81.4931127241660391    35.1160655119285963
-95983  -120.754110715469466    40.0441309033149366
-64746  -94.4942607812800617    38.6213572627854802
-46911  -85.9379684783042848    40.6277960194513739
-66093  -95.5129948901098658    38.2160505481577388
-50638  -92.7866885471230631    42.3569665661842336
-53095  -88.1832675989861769    43.39830593020762
-77046  -95.4343258846153475    29.7318795769230739
-06267  -72.0142672727272668    41.9565756363636382
-42720  -85.4248979999999989    37.0946177142857181
-87002  -106.746473448821263    34.6412716867692083
-14886  -76.6857765855266251    42.5101426282896782
-81022  -104.398413538674205    38.1502785756215701
-67002  -97.1256640194173855    37.6914147179842161
-85232  -111.39011128981285     32.9890669613306002
-15748  -79.1192786318782169    40.5312542662103965
-17931  -76.2268001795264638    40.7841451715049885
-60954  -87.6310433915967337    41.1537114518207829
-74555  -95.9673576484917703    34.260561153132258
-93314  -119.181243685102302    35.3824235639725799
-25453  -81.9953919090909125    37.8280188181818247
-91023  -118.065743866666665    34.2265765333333292
-28902  -83.9509146483713806    35.0270513242408015
-92658  -117.929946799999996    33.6188484000000045
-74344  -94.7621822692248799    36.6000785692524317
-98683  -122.511135718772138    45.6038214781066529
-58017  -97.8185817173377075    46.0583013223088571
-31765  -84.0485822808963832    31.0833522471715185
-77459  -95.5414093010260643    29.5441245415705041
-56550  -96.7781349702233342    47.2670590446649967
-32629  -82.7236896666666723    29.2184203611111073
-14606  -77.6924976885986069    43.1692676866050249
-44240  -81.3509050595973946    41.1454563162359221
-62084  -90.0733763515483048    38.8418572422586621
-40819  -83.4645580060791161    36.8212433232016281
-10162  -73.9507184999999936    40.7696990000000028
-29934  -81.1165601334980408    32.6125645957972239
-23604  -76.5785015326340783    37.1537155909090586
-95988  -122.219711529517184    39.5240710958473613
-30274  -84.3993547670662565    33.5471118953500422
-74458  -95.5804848099173938    35.8957081198347367
-72716  -94.2409804285714472    36.3657147142857156
-63753  -90.1951053000000229    37.2345209999999938
-74856  -96.8005316256219146    34.3945575547263758
-75452  -96.2510971926006818    33.3915599115320845
-75340  -96.8368389999999977    33.1165419999999955
-67204  -97.3608764193729002    37.7579482007840213
-32612  -82.3650388805970124    29.6403009104477633
-94605  -122.154863756282467    37.7624401629280086
-92241  -116.394753552860863    33.9011848376373095
-17314  -76.3357485197405765    39.7570457092284997
-89015  -114.967832051782963    36.0350139508065013
-30467  -81.6338299641608245    32.7233827976515812
-67859  -100.737684802792401    37.2205404083769906
-77365  -95.2624084754195621    30.1057726142554962
-01719  -71.5159273404089078    42.4844970311845103
-37427  -89.7937445000000025    31.5383599999999973
-51060  -95.6962412995215601    42.0472313784689433
-38748  -90.8923720812868083    33.1721863192667072
-35660  -87.6967096098946115    34.7576199077499268
-60290  -87.6816555000000051    41.751852999999997
-16602  -78.3888210868119302    40.5037876230324656
-39160  -89.7416252797621041    32.9869532353479897
-27548  -78.2086186428571466    35.98915792857143
-44328  -81.5206516666666658    41.0758626666666657
-24430  -79.3620764387160023    38.077949342898826
-72554  -91.5743873124263814    36.4486989991951305
-60165  -87.881134903376136     41.9034699057042772
-46748  -85.1605164531512031    41.2404259983365975
-52175  -91.8186654080429037    42.9939303902305454
-86337  -113.022680157916696    35.283763426250033
-60608  -87.6698458960802327    41.8508831830534049
-55349  -94.066653213666271     45.056825311828014
-59106  -108.662005862133356    45.7775807265050503
-92281  -115.617655229074828    33.0390987973568215
-80218  -104.971879321039253    39.732120870429867
-30140  -85.225724357142866     33.9263504761904855
-72712  -94.2343973033825932    36.3655054523826706
-40402  -83.9745073894317358    37.2985771046249539
-98052  -122.120377314429732    47.6804727014125191
-36742  -87.7539017030332218    32.4410692435927857
-29374  -81.8579766621605813    34.7920329687314549
-54111  -88.4219434586846091    44.8259946736930246
-93653  -119.869988479417131    37.252137955830058
-78832  -100.386596113498513    29.3425539537599143
-62423  -87.5727759804575783    39.4575656806483295
-49119  -86.5489791923076552    41.8764472948717881
-38502  -85.535243692307688     36.2879163846153787
-34270  -82.5441011428571443    27.4030526785714308
-47942  -87.4478651989771123    40.694088178005039
-62094  -89.3530823107226695    39.2467581297393693
-02070  -71.3750374634146567    42.0292550487804775
-71064  -93.6783806823979006    32.910192967034682
-39204  -90.2296876199699938    32.2817175431728103
-60175  -88.3401451663640387    41.9309013545068865
-43511  -83.8299318702023015    41.26495460153523
-75148  -96.0173415718116701    32.1826781519292879
-52327  -91.5770925960870414    41.4850381542977544
-70583  -92.110401600399058     30.2529809711591007
-80742  -103.822299294262294    40.6982496508196405
-67217  -97.3599858728723717    37.6191286208431848
-56220  -96.2806716748274312    44.7280080841065768
-80640  -104.867347254113909    39.8933656768276563
-64471  -94.1887408454906421    40.2555850991736293
-17949  -76.2427731416666461    40.7939860666666689
-56475  -94.5287317464751595    46.0968053774942206
-71404  -92.7591049269853158    31.745704172611017
-73533  -97.9558491242490703    34.510334437469453
-75446  -95.90130146550257      33.6099853688868109
-21890  -75.6974863333333445    38.1538136666666645
-10511  -73.9409304569697383    41.2593549757575602
-85702  -111.220807999999991    32.0535212500000029
-95602  -121.088590505344754    38.9889475260646705
-75754  -95.6790161320529933    32.4184642638691045
-61550  -89.4551967819120506    40.6156336913795499
-79248  -100.296496777970987    34.0110447553856616
-78713  -97.8437950999999941    30.4665491499999987
-92620  -117.762409736464534    33.7121457463085079
-30456  -81.7912278326570146    32.9834967139959687
-03804  -70.7338537419354765    43.0776859032258059
-45169  -83.6523232672469703    39.5024952036168386
-85929  -109.9818556595269      34.1617803722917301
-16370  -79.4300035392781751    41.5669337388534217
-68882  -98.4012122196667889    41.3851248778747802
-58069  -97.8034865682703156    46.2384345162548343
-97103  -123.747197548458004    46.1581084379275168
-70544  -91.6670430101405884    29.904343891723812
-58495  -99.608161672357511     46.2648649671102277
-46635  -86.2120823830869938    41.7155414992359042
-10120  -73.9893329999999878    40.7503515000000007
-82637  -105.847673056607221    42.8361632017594829
-24902  -80.453050300000001     37.7791431499999959
-61475  -90.7444514202756665    40.5831854586614185
-16157  -80.3364273982544859    40.8866506948400854
-33018  -80.3521817357525521    25.9086353206232047
-66213  -94.70792638588172      38.8990311228069814
-52666  -91.2434381999999999    40.7497666000000009
-67628  -98.9789180540541196    39.6522525495495586
-98019  -121.942554635240171    47.7354915376094411
-48656  -84.4359801059330266    44.3544018119481862
-74023  -96.7546860760008229    35.9829513182280607
-48382  -83.5048167948514646    42.5922197911402378
-76690  -97.7864885168723106    32.095047431275681
-93665  -120.666101686666636    36.9712874866666823
-66464  -97.977831000000009     38.5998335999999966
-49095  -85.8790399012423507    41.8927006301241462
-24185  -80.2735357449629134    36.7984600321345781
-07922  -74.4328541738315153    40.6749513128970435
-27593  -78.357150741935456     35.5822241612903056
-58783  -100.733885838245641    48.9117945315789839
-01965  -70.8303732384615472    42.5604810538461678
-09656  -66.813421500000004     17.9963490000000021
-83655  -116.799405203124678    43.9508146353283067
-66113  -94.8228955849056803    39.057377754716974
-43410  -82.9719638528597585    41.299574330742189
-22946  -78.5629623881987982    37.8546489782608262
-72206  -92.2765202826067537    34.6459197456896959
-48749  -83.8971830558609355    44.0555632884614923
-39422  -89.2588061149531455    31.9611418321911067
-93545  -118.077591354687527    36.5880487445313136
-84526  -110.925771951668239    39.6884923105216956
-48644  -84.1681223125000031    44.482318124999999
-11941  -72.7256755889831368    40.8288631372881241
-22434  -81.1719703571428539    36.6469435000000061
-17720  -77.2204028613861198    41.1870964455445403
-04966  -70.3718020425531279    44.8419131479590973
-49903  -88.4071197631067918    46.2982594097086846
-43527  -84.1734030195217002    41.2514951312835549
-67071  -98.8452453842887167    37.2909806199575087
-13775  -75.1471219926162064    42.3339606083684146
-99585  -162.083748777777799    61.8789634444444445
-10911  -74.0630090833333128    41.277152895833332
-33901  -81.8728662279055897    26.6206586874633011
-79347  -102.821546769316228    34.1343768566050088
-13813  -75.546201306692808     42.1664388133857386
-98902  -120.532608435200899    46.5934685755710731
-07045  -74.3668330414913186    40.9070434105348824
-79073  -101.448767000000004    34.1244347499999989
-99577  -149.504103624853485    61.3086353720698227
-71758  -92.917700423811354     33.3142850298507369
-94066  -122.432451729331234    37.6251026610296222
-07011  -74.143514911388948     40.8791785218809807
-66549  -96.4417572737355187    39.4490370386579343
-14168  -78.9908892121212176    42.5187635353535498
-16941  -77.7562208859648933    41.9872092105263235
-17356  -76.5967647160291278    39.9047340561899233
-12553  -74.0626735683746915    41.4613653594075657
-67863  -101.209053144599338    38.5603039808362027
-18014  -75.4061519888002039    40.7610684601143589
-12808  -73.7592810979571567    43.7463073043478445
-81085  -105.008182000000005    37.5090294999999969
-64054  -94.4402892122388664    39.1103331287032532
-73557  -98.4980507161016874    34.7311784978813236
-14061  -79.087866428571445     42.5933522857142819
-21901  -75.956103878669964     39.5890189145281397
-08095  -74.8667666144578163    39.6573732168674695
-28754  -82.5199662678586634    35.8857840746369163
-50587  -94.4891230000000064    42.3395689999999973
-41425  -83.4272155133687789    37.887690817847627
-36202  -85.8303892499999961    33.6643019999999993
-67853  -100.508097362097018    37.8745276994463538
-93562  -117.392307324055764    35.7134950896840522
-47396  -85.503001579900058     40.1841602957694448
-67735  -101.73236517677141     39.349344489958348
-55302  -94.1214052964000416    45.2524883467998933
-77583  -95.4527804865125233    29.4239738110178664
-14586  -77.6857016299123018    43.0438467096624535
-32654  -82.0788863448275805    29.4587452413793045
-49205  -84.1895379999999989    42.0125485000000012
-20007  -77.0783241308335363    38.9154965294922306
-30711  -84.768531210697887     34.9282201249784379
-92599  -116.700276428571428    33.7528497142857162
-30639  -83.1435933809523817    34.2823450761904809
-68849  -99.1064639285714151    40.7006282142857074
-44624  -81.6661927011004991    40.6087579622861625
-16061  -79.8859343068859857    41.0005987520544934
-07657  -74.0017214677897925    40.8319071828543443
-38855  -88.4968119228300196    34.3281434818254354
-07405  -74.3759642273350465    40.9909026313964944
-75771  -95.4352950215927081    32.5234222475482113
-48807  -84.4041199602648788    43.1521699668874419
-12855  -73.7433242358491441    43.9806970843159419
-45710  -82.2201627804985691    39.2010942963880638
-72032  -92.3771520685828733    35.0807454050013234
-68940  -99.2496036618496191    40.5249408815029071
-31824  -84.538946079913714     32.0527252358530603
-63638  -90.9669725639796383    37.2279424249839934
-13060  -76.4222242236672145    43.0245061959253761
-74133  -95.8838118445417962    36.0384995982674994
-39479  -89.4651296331747119    31.5416931018288409
-19955  -75.6654265199999969    39.2274205800000004
-57647  -100.803025333333338    45.8186015833333329
-07006  -74.2744510427940128    40.8520908381549788
-73460  -96.6614674847187558    34.2526976399755014
-08821  -74.6863661386861537    40.5219166861313838
-16803  -77.8990118043797395    40.8052776910679
-18832  -76.5431597380368061    41.6999002011875461
-76017  -97.1658259338613419    32.6617059058513561
-60507  -88.3123755000000017    41.7559650000000033
-03886  -71.2612771663903999    43.8576056009280819
-16407  -79.6450267240636975    41.9178512478144825
-30356  -84.4602515714285715    34.6293629285714175
-81501  -108.549026000000751    39.0759975042712142
-27007  -80.590381383037041     36.3899783126148364
-25343  -114.065433249999998    43.3057340000000011
-97901  -117.066055404331863    43.696406548736455
-72733  -93.9061102222222246    36.4632248888888881
-24020  -79.9428379651162828    37.3575984651162969
-72823  -92.9222429612351419    35.2697975143188671
-47578  -87.1889110562674006    38.8991290440111399
-93563  -117.778533864563997    34.414275740259697
-65501  -91.575519101160836     37.4633032620232171
-48724  -83.9288556377953086    43.4589367913385942
-72015  -92.6042164161334824    34.553780108529736
-31606  -83.1930755172584497    30.7917302857375397
-29670  -82.7322602386188493    34.6432848068250081
-55155  -93.098863850746298     44.9524040000000014
-19012  -75.1058945907288802    40.0596686382726546
-66026  -94.8739814705881486    38.4081891836442537
-15450  -79.9714347300275676    40.0054873719008057
-46745  -85.0128565680573018    40.951626326590798
-48877  -84.8469639221051182    43.3988683415790177
-61871  -87.9728304746835477    40.1924958734177125
-62660  -90.2007481666666564    39.8545586666666622
-66940  -97.4626672910448093    39.7996170559701454
-84036  -111.280436032363411    40.6324457708580837
-56972  -94.3083629999999999    46.5990944999999996
-93386  -119.009953461538458    36.4030012307692346
-20128  -77.9690289384615483    38.7553652769230794
-73661  -99.0385536696165616    35.1712470058996729
-45879  -84.5600283159186574    41.127477409728499
-91733  -118.045363928114043    34.0531921734039216
-80645  -104.691094105912768    40.3226505721248358
-73731  -98.5794848171642002    36.6649953880597224
-78536  -98.4060192812500532    26.6749541988636416
-63122  -90.4147742587339707    38.5839375138629777
-51433  -94.8569180612461054    42.2895205570221577
-29506  -79.6969227948015373    34.2035271388889797
-80906  -104.833022869144344    38.7834963429445949
-48708  -83.8753216623128282    43.5810705178610931
-64445  -95.1292352884991033    40.5269995142948787
-96094  -122.390509537865626    41.4643755365385545
-12847  -74.4528885133014739    43.9673092738746192
-77353  -95.5939909803921353    30.3582848823529368
-76120  -97.1826767967363736    32.761718800106479
-33629  -82.5082234761903948    27.9211022743272181
-40371  -83.615191068772944     38.1037455553670839
-21717  -77.4325965538461389    39.3318663076923016
-48310  -83.06917752531578      42.5674295517577335
-56224  -95.0572344560359994    44.3743446833084576
-18627  -76.0224765555555706    41.3154727777777779
-35202  -86.9496069999999861    33.4354626249999995
-70113  -90.0839450844614191    29.9415680833784812
-49437  -86.3827784493036717    43.4424615958031595
-37684  -82.3733606666666702    36.309564166666668
-55107  -93.0864682578837801    44.9283847468316608
-32934  -80.6919673568218343    28.1501828320840417
-98375  -122.319712627607927    47.1048421062586584
-67855  -101.694861118253129    37.5579543189400979
-45068  -84.074822647776088     39.5310932929655365
-72352  -90.6445945227273029    34.7907962499999925
-70529  -92.1560356287741627    30.1979474399052492
-61273  -90.3954970545497645    41.3627624204990525
-65606  -91.4079589013062872    36.6966711161102879
-82007  -104.807628602643632    41.1080314711392631
-35550  -87.1678976292431145    33.7584818225408014
-45162  -84.0772486564625865    39.2664687482993955
-28634  -80.754873721806959     35.9679842526728493
-71336  -91.6195705297866567    32.0337810017160933
-58505  -100.794601200000017    46.8202535999999938
-32570  -87.0086200372302585    30.7425597754848177
-48223  -83.2467141632969145    42.3945175279300202
-28043  -81.8700141928412393    35.3135738312055523
-34482  -82.2548852474429566    29.2319718474425869
-95211  -121.311238203389806    37.9810098644067793
-94559  -122.287894263583127    38.288054802481021
-24440  -79.1547547476136515    37.9893468090960269
-21640  -75.8173512985994478    39.0717412655461516
-74738  -95.4918580200000093    33.929592126666698
-80618  -111.978404000000012    35.2435502499999984
-73006  -98.3668563656342627    34.8866399230769417
-66246  -93.8435520000000025    40.5741926666666686
-94949  -122.544071549925434    38.0629726920542524
-58271  -97.2581187116327186    48.8821666095794995
-29581  -79.1096200180085987    34.2071909337093274
-94303  -122.127473822815105    37.4485267574159622
-60034  -88.431237923614006     42.4654018999611651
-24352  -80.5355928172618434    36.7133083045637676
-39216  -90.1673869118135087    32.3371666626456147
-99353  -119.358987994342186    46.2928549311984625
-95689  -120.611643118285443    38.4734973090564836
-49812  -87.5509809697803263    45.5906578516483592
-32192  -82.1282295454545732    29.3527415714285738
-61067  -89.4763408800843365    42.3075716851332544
-78243  -98.5722812380952575    29.375660952380958
-57263  -97.0213207722328264    45.1292017594368744
-90806  -118.18696906232752     33.8032012724302717
-93066  -119.007939331057486    34.2862631737697541
-48629  -84.7459599828675323    44.3193279794126198
-44062  -81.0291053453689614    41.4584669746205137
-92250  -115.371181437752185    32.7969315177987184
-65737  -93.3701272132875033    36.6943405279535071
-07628  -73.9922258292681505    40.9452332277522046
-98223  -122.087122660352748    48.1913098813529572
-92644  -106.558968999999991    42.9226644999999962
-95641  -121.597514007908742    38.1653793361159757
-89135  -115.32939511285403     36.1269666493390744
-80917  -104.739587688237691    38.886314397488448
-60145  -88.7733834453355115    42.1025695584635145
-43324  -83.8273851740153475    40.4584160811375213
-77389  -95.5181317438213568    30.1177077609989858
-39934  -82.4704534000000109    28.999071800000003
-76866  -99.9279287670886589    31.4784833569619806
-77483  -95.8728449588235634    28.8027493882352843
-05841  -72.2972078268843035    44.5980461047964951
-99107  -118.142009133333346    48.717449533333351
-18377  -74.9507261249999885    41.3165499999999994
-39439  -89.0063508262962841    31.8601980824046933
-33409  -80.0966858420036374    26.7189508766859021
-40460  -84.2524353380155873    37.385425437836254
-16855  -78.3641719953051989    40.9974494154929587
-78073  -98.6206056540167282    29.2282263393297228
-76688  -97.3986455000000007    31.7024737499999958
-70356  -90.966500883912957     29.6633069163229486
-21555  -78.5900672969146541    39.5801819979897758
-85221  -111.896799116666656    33.1400165500000057
-60651  -87.7412169563915683    41.9020440949257065
-13777  -75.994986418803407     42.2494774627594865
-29356  -82.2517250681805052    35.1487233328611737
-81638  -107.504891970099578    40.3200374828349766
-14034  -78.8746372779898195    42.5027035324427587
-76733  -96.501466999999991     33.854853250000005
-48876  -84.740926022159158     42.6348963221590864
-58570  -100.925256262387336    46.470737164414345
-97873  -118.977682308270616    44.1382085939849702
-84868  -96.6544020000000046    35.1657930000000007
-16659  -78.3785536968325971    40.1645774570135785
-70630  -93.0515195327455302    30.062666081863977
-32359  -83.3670220894796472    29.6762536742195842
-11363  -73.749818610271916     40.7749920785498432
-06349  -72.0844256226415041    41.3959807924528391
-60203  -87.7171015059522148    42.0489818110119273
-56284  -95.1971677241519814    44.7860501180173429
-65721  -93.2136072578037584    37.0062628512294509
-63021  -90.5340861350000807    38.5736279642256221
-87714  -104.939050577439517    36.5153314118173782
-96132  -120.633448109090935    40.9120982181818178
-33149  -80.1667950805801439    25.6935633875906291
-55343  -93.4186208797348598    44.9153575076885261
-14616  -77.6569302506534598    43.2337753437909029
-77964  -96.9030954916553497    29.4216248099952651
-22663  -78.126084838618894     39.0604185838618676
-08835  -74.5921328283718452    40.5394436177877182
-60657  -87.6573148939678646    41.9396882579836827
-77465  -96.2661434899111157    28.7431561718431787
-36330  -85.8448098271851734    31.3205016177566584
-28365  -78.0469751253892241    35.1765378970590206
-94595  -122.07024495035671     37.8787578315619911
-28408  -77.8946940000000012    34.0271660000000011
-47270  -85.7082457910364752    38.8389247834772746
-14463  -77.0659764756097587    42.7944509512194955
-45353  -84.03316599999998      40.2951465681818419
-85072  -111.62184400000001     33.437479500000002
-53522  -89.8093882902584681    42.5770585208747505
-87507  -106.037837030936203    35.6368088534665617
-67505  -97.9179559145220679    38.0171014010416215
-67747  -101.030400192488244    39.0830654976525835
-25444  -78.5071680264009046    39.4398133679956686
-74451  -94.9672300706521213    35.7484704684587768
-57101  -96.7311349999999948    43.5205435000000023
-11776  -73.0465374395253235    40.9118661300775415
-82941  -109.869001667296899    42.8811978051579956
-30223  -84.2717925371306222    33.2807633541215822
-31598  -81.8521907500000054    31.5942840000000018
-62262  -89.282209941731395     38.9489962045293865
-39730  -88.5414207805814328    33.8534168638115247
-49112  -86.0343198506103448    41.7938774805269375
-65622  -93.1015110387899369    37.6176796355273311
-64772  -94.3556399398124341    37.8343098782435874
-79852  -103.574018048903909    29.3614568195615675
-85006  -112.049625297327054    33.4656342353198752
-90704  -118.361459418307433    33.3567314800425052
-76033  -97.452789075997913     32.3086194946757672
-36610  -88.0819919170878194    30.7382140052107076
-12810  -73.8820582327044519    43.4872630584906474
-32145  -81.4608073138487612    29.6651535700935085
-21163  -76.8594153296798339    39.3344401309724887
-63101  -90.1927403436330479    38.6315166694756371
-98663  -122.662243675934903    45.6509192501412784
-07540  -74.6511670000000009    40.3709290000000038
-57178  -97.6343519999999927    44.6296051428571516
-61011  -88.9271445403529128    42.3601774642753881
-61547  -89.7365659056145546    40.6136889033534487
-80454  -105.264038141747378    39.6509735558944882
-91411  -118.459196018762782    34.1774061897151071
-55926  -92.7100062263538547    43.7477774927797256
-19080  -75.3575799999999987    40.0433470000000042
-22907  -80.6461181428571479    32.4705239285714171
-28607  -81.6589955245504626    36.2137450163475876
-21850  -75.4027870134687248    38.3772710071468452
-36112  -86.3481357499999547    32.3798619894366411
-06376  -72.2540570218978075    41.2946621277372401
-62058  -89.7634707552301023    38.9675419246862162
-37769  -84.1483964395261381    36.2162788360637222
-90016  -118.35380717547163     34.0278148441038795
-39046  -89.9833932511396029    32.6207269291455475
-68711  -99.0301332161615733    42.190064098989879
-45761  -82.0858954428760654    39.4256423070878554
-53005  -88.0990925693949407    43.0638552471663587
-46818  -85.2178594916484542    41.1503888980143628
-29646  -82.1531173126467422    34.1614502373710422
-35749  -86.7613954466651904    34.8159278919072719
-08591  -74.6367464999999868    40.2290959999999984
-44120  -81.5810068911918904    41.4738363187655494
-04286  -70.8601284691358018    44.3908938765432026
-78962  -96.7448800687956521    29.6732961126209887
-62985  -88.721930446344345     37.4649741149764495
-16113  -80.42434226890758      41.2794480546218381
-16946  -77.1442063588610267    41.9200492750118272
-45816  -83.7942791294117484    41.0044256823529452
-81091  -104.896902908430619    37.1954995773290946
-27203  -79.80273267764656      35.7175014245101821
-55024  -93.1609258148534138    44.6629330135842011
-08005  -74.2583015649670415    39.7602934000719301
-71666  -91.2597861271186162    33.7747781440677954
-70514  -91.5446600016116037    29.8501925543916258
-68323  -96.3636723198923306    40.1379609543010503
-98008  -122.116701608845602    47.609711916570248
-07608  -74.0586168508771721    40.8585233596491122
-14526  -77.4582122449052974    43.1431427943869039
-11577  -73.6382620749822081    40.7843564196620392
-90002  -118.247785790357199    33.9493416867340656
-48456  -82.7432933193210118    43.6704656499595671
-71959  -93.9243611033376595    34.2452958550526176
-50440  -93.0696586979361911    43.3361436097561423
-18980  -75.0201359504132199    40.2760069338843039
-15664  -79.4847079999999977    40.2022130000000004
-29665  -82.9087775341365329    34.7251336867469789
-56761  -95.6881815496315937    48.6082201452122362
-14777  -78.236650861872107     42.3962188584474333
-10533  -73.8585562577487877    41.0374625859706654
-67626  -98.7029934928057742    38.8689369010791239
-90041  -118.206262343356087    34.1362122373100192
-72685  -92.9545608979100138    36.068658602893926
-74002  -96.1433235857688118    36.5562169148666172
-70471  -90.0842569070187551    30.4032375887735427
-07661  -74.0397122514178392    40.9250813088846996
-80829  -104.912593295580564    38.8507670555250897
-60050  -88.2827428427425076    42.3413650948053757
-81041  -102.337265331298212    37.9203689043549375
-69156  -103.289415618211493    41.2528558815542894
-92652  -117.743904200000003    33.5026968000000025
-31834  -84.5963336666666663    31.9626473333333365
-60618  -87.7036800951808146    41.9470191810194493
-28654  -81.1562539602350341    36.0629659432143583
-59059  -108.081488425120412    46.461779093600029
-48439  -83.62620541583739      42.9218882136254507
-36657  -82.5353461111111102    36.0412432222222208
-95546  -123.705745555180698    41.1208565387951808
-36134  -82.7388498333333331    31.0284723333333368
-38071  -90.2853065999999984    32.4776834000000036
-46268  -86.2264553174154571    39.8946702046727495
-75784  -94.977109404121336     31.8907080137377932
-36067  -86.5366352823521083    32.5063519272432231
-32196  -82.1650769999999966    29.7903625000000005
-49870  -87.9015830766773831    45.7926095694887749
-19720  -75.5969633480092824    39.6670278920596928
-47423  -86.8936429999999831    38.6861174666666656
-33071  -80.2658836691343538    26.2439796351693744
-33759  -82.7160650882777873    27.9824090226725026
-23960  -78.5563139085973745    37.3111305527079438
-98505  -122.975562702127675    47.0658870638297913
-32666  -82.0105883020562487    29.7315278190654091
-78631  -99.2840347358950197    30.3008546669545886
-86641  -114.438061428571444    35.7050032857142838
-75098  -96.543968519185384     33.0154838553887657
-89451  -119.956105161868194    39.2570183366820231
-21155  -76.7999312781067687    39.5713477474710515
-55432  -93.2538435006414375    45.0963729503336239
-34484  -82.0562761564879253    28.9276527822211733
-71661  -91.5606986986165623    33.125189177865586
-23856  -77.708919171013406     36.7840449743826525
-02134  -71.1329676515775731    42.3554837754914644
-37409  -85.3307571739898236    35.00124220318488
-92581  -116.928422560975605    33.7852196585365974
-45894  -84.4678266039725401    40.7618025168220015
-94922  -122.96787408856504     38.3512933901344653
-18954  -75.0048431286315491    40.2189861811949001
-22853  -78.7706339086576577    38.6470130376488186
-65047  -92.5778342333585584    38.1678672154076253
-58790  -100.944093770405559    48.0512158488678125
-49405  -86.1926426356709783    43.9032415826839895
-75709  -95.3908861435793227    32.3129356228004951
-16636  -78.5245886480895479    40.6068437647228677
-75550  -94.8815421011007203    33.5257726078272285
-61469  -90.9383527551643454    40.950555254016848
-64432  -94.6693758268156813    40.2657978212290715
-56623  -94.5435394755039766    48.692473155472122
-57547  -101.465113044117658    43.4773577794117685
-34638  -82.4971679148047201    28.2404081039471642
-66720  -95.4552451289023622    37.6698770129267544
-04488  -69.1089437039765073    44.8824753376288612
-44134  -81.7053796152839737    41.3850624805681377
-78052  -98.7813043899138137    29.2182476480114737
-79411  -101.856672741123376    33.5702384318915605
-77041  -95.5861269842124273    29.8597538298742293
-93446  -120.730103223932844    35.6395580387258804
-24576  -79.0065628333333336    37.1171493333333302
-52651  -91.811977073843849     40.8568340019890073
-88732  -108.797741599999995    35.0841941999999989
-58801  -103.657859829255869    48.1688625282477005
-96068  -121.154426714285691    41.1158010952380977
-21919  -75.9398722787580169    39.4271375232885788
-22560  -76.9292230035199367    37.9079238884325136
-78237  -98.5655078128268656    29.4212406789822332
-78648  -97.6428591892005926    29.6880248704357115
-52335  -92.0675730458715407    41.4616136623852682
-48360  -83.2719019841964609    42.7444729929388743
-67446  -98.3069295444839071    39.493560978647686
-67340  -95.7113014979253052    37.0588043983402642
-28226  -80.8188939154301238    35.1069595246438411
-73766  -97.8043294787233606    36.6670641954787015
-50029  -94.5506524019736929    41.8316847243420682
-08232  -74.5260639789736103    39.3954107551436508
-12563  -73.5816662919870907    41.4867378576797492
-63108  -90.2542946728563606    38.6451956991896708
-98206  -122.326161699999986    48.0183564000000018
-78155  -97.9576429931660897    29.5558291866366467
-87502  -105.789091404255331    35.5797011773049547
-02802  -71.4574926617646895    41.9528785294117839
-98203  -122.226541380294833    47.9449013162385924
-58420  -98.8598893800048444    47.0636646529966924
-97810  -118.439732111634882    45.7259430507430409
-05746  -72.7178398428571313    43.7611400571428675
-71638  -91.4637040626578965    33.5323604555379475
-94550  -121.726850432316283    37.6522571419136725
-30620  -83.7628959643159163    33.9286907961422557
-75487  -95.1853280574801772    33.3276286414160907
-67631  -100.034175318435658    38.9950579310986924
-73036  -97.9400644722196319    35.5170265710961459
-75068  -96.9413273046308746    33.1799930341369773
-82714  -104.666838801948103    44.5585894155844002
-13354  -75.2697411542623342    43.2633603819974013
-83763  -115.430114000000003    44.1137595000000005
-59935  -115.848979823758967    48.5329368921929003
-12862  -73.9149588917431686    43.6694015633027561
-78046  -99.4668629772496757    27.4564621969664557
-38221  -88.0464828907594494    36.2390372742795535
-93043  -119.195802652173924    34.1606229130434755
-19522  -75.8105524503204151    40.441241848811984
-82731  -105.313075194849517    44.8011112822772049
-20762  -76.8848907191282365    38.8037048910411571
-04634  -68.2394032250597888    44.6251451381970341
-86021  -112.98001027162266     36.9839126361686965
-71968  -93.2629668572388937    34.5045318733547433
-19475  -75.5915934012948583    40.1712413750789352
-97115  -123.023825012615916    45.2777824158534372
-48423  -83.5233019471217375    43.0299800694284968
-43757  -81.1518130652173966    39.8569241739130433
-60067  -88.0619507750967614    42.1078472290418944
-89403  -119.552327075687998    39.2711931727474735
-35971  -85.9418602541800283    34.4569114157344316
-79547  -99.8946496958073453    33.1855010793934113
-98526  -123.892063507418399    47.4805456092977636
-64467  -94.1532545763735698    40.4061963373627009
-68735  -98.4213350477099027    42.1902877910305349
-05774  -73.1921121116177886    43.4308656497838328
-14425  -77.3459820627761871    42.9783593591678752
-36026  -86.0973915148255315    32.7637590070847438
-69348  -103.146358094476142    42.3343518457142949
-68854  -98.0006742157831212    41.0096268032786995
-08801  -74.8874367593968628    40.6262131203911352
-71887  -93.5066767499999969    33.8104042499999977
-15091  -79.9806846470588368    40.6007772058823591
-22193  -77.3510000644151745    38.6447035332975304
-97466  -124.085110351637752    42.8775749633911474
-02842  -71.2828272527780342    41.5178944621864545
-12740  -74.5075674092763052    41.8632946381627349
-37049  -86.6800796467614703    36.5558752660255379
-49726  -83.7157185744149785    45.9971281575072126
-67601  -99.3278048481741251    38.8811822031518872
-01535  -72.0811261872369471    42.2686372656031111
-38638  -89.7987218181818179    34.7198965454545458
-26137  -81.0422764458597271    38.9954021743629582
-99180  -117.30211935206583     48.2950619291763559
-77582  -94.6704502022058847    30.0262639816176566
-79713  -101.741645343228242    32.5198394397031763
-73438  -97.4909001232753383    34.2475892069586578
-37748  -84.5237494221584171    35.9372798259681829
-04042  -70.6236426324467033    43.6294485951151998
-04495  -68.3518509802414655    45.4489724127333403
-26148  -81.1775384800000239    39.0701025680000171
-99209  -147.903078666666659    64.8758298333333414
-14877  -77.6870061429656715    42.0654992639362817
-12457  -74.2530608775308423    42.042117559999987
-21206  -76.5394852137525561    39.3395326785133079
-75182  -96.5690768005664211    32.8024197190940967
-32438  -85.4197244930351332    30.5022222290515295
-33704  -82.6361912952979338    27.796579812118793
-87560  -105.444982099648826    35.3285560763828244
-00677  -67.2404328144272654    18.337843042400884
-10001  -73.9959531674641227    40.7496638437001906
-48613  -84.1255522205405413    43.9383191697297661
-55040  -93.2743485574971345    45.4724218058542959
-18211  -75.8345360515907885    40.7457509634720552
-10503  -73.5034126315789536    42.1414023157894704
-28203  -80.8565316842688731    35.2079706624815785
-43772  -81.5306481856782312    39.883398727503284
-06353  -72.136344904040385     41.4541665858585802
-92417  -117.208496000000011    34.2461565714285641
-58256  -97.2293075317202664    48.100456397462473
-58712  -100.540112540404039    47.9666662853535044
-44419  -86.2920389999999884    41.6714280000000059
-83827  -116.179632088397796    46.7820030092081183
-61354  -89.1291126372075269    41.3323699652406447
-99513  -149.885995166666675    61.2149097499999968
-83716  -116.048474866504108    43.6170496030551433
-37876  -83.4933601726678489    35.8514796526220536
-76104  -97.3192251337286081    32.7297875819145787
-70541  -92.046029124423967     30.4195199124424143
-65781  -93.4176149384305745    37.3338561638909994
-28626  -81.5079615277058878    36.293837450788125
-13802  -76.045331622902296     42.2491671085883809
-59447  -110.511756789253511    47.3207443133286674
-68713  -98.9601047463124814    42.5431273185840055
-71475  -93.1028941393442722    31.2210151967213001
-18704  -75.893846366276577     41.2747807358717438
-37097  -87.845535988494035     35.7769815589421896
-38478  -87.0131366656312935    35.2103345854947776
-34453  -82.3611036542093018    28.8706582098367264
-55088  -93.37808984520872      44.5304940417689892
-77051  -95.370808696069858     29.6614188690980711
-92173  -117.03969896114171     32.5582767476217896
-52244  -91.6943793863636216    41.6107005227272708
-77429  -95.656189759842718     29.9843467689647234
-77864  -95.9095858892610522    30.9599930376891521
-57353  -97.8155537170592027    44.4228882732719441
-44843  -82.4069694955181404    40.6955857319157843
-24383  -80.8103010454545512    36.8993901363636283
-19345  -75.6865026363636275    39.9313632727272676
-05469  -73.1275096153846249    44.246637923076932
-16668  -78.6312165781528023    40.6344475217090491
-78372  -97.9854983243959907    27.9629376661079938
-67478  -97.9322125320196761    39.3846958522167583
-49074  -85.5370429999999971    42.3163509999999974
-89721  -119.639129999999994    39.2644590000000022
-31763  -84.1620676917013526    31.6890025852126911
-47580  -86.7732504771241935    38.3552030653594542
-85033  -112.212453874553177    33.4941314681339009
-44307  -81.5455466025596536    41.070126857893122
-90813  -118.192784110226853    33.7808428089931567
-83624  -116.135753373195953    43.0006822027491111
-10037  -73.937884417670702     40.813260742971913
-56039  -94.3343053403924898    43.6679280267829029
-77034  -95.2097388049735258    29.6264653900529566
-38320  -88.1077039582448691    36.0496674479552013
-29590  -79.8483561145374949    33.5684256035242896
-44081  -81.1442012762127121    41.7654422516954469
-95659  -121.573145513325514    38.8676756720742134
-33836  -81.6181711282051339    28.1618650256410277
-78383  -97.8958311562459329    28.0503470109624793
-60174  -88.3003759257982637    41.917058426282523
-97845  -118.931724178512098    44.4024056932668998
-29726  -81.2269603673565257    34.8598093080902771
-92075  -117.257314477542721    32.9958131206332155
-31042  -83.1822725244350067    32.7728431211245166
-21533  -82.8661900000000031    31.4507557500000026
-38069  -89.3592063945360167    35.4511981115401866
-31775  -83.6059585808403227    31.334257417250079
-37134  -87.9505816338647293    36.0064565575697344
-86837  -99.7510755714285722    31.2459239285714325
-93553  -117.893308605734973    34.4756182144021111
-27747  -82.9249322222222247    35.1180387777777909
-15262  -79.7532358750000014    40.7144903125000042
-68421  -95.7451220596420711    40.4839122534791258
-05403  -73.175634933210489     44.4496445182694657
-23434  -76.6022634642117453    36.7346212217799959
-82835  -106.419113285517227    44.6784465717240948
-99648  -159.163804476190478    55.9141133015872853
-71346  -92.4035836161830133    31.117217377211535
-93516  -117.655166510471176    35.0059409790575913
-34652  -82.7305956210034026    28.2367223423904505
-43340  -83.4844177136325243    40.5567516109726043
-46070  -85.6543332048152735    40.3429586447888724
-27591  -78.3864645813779504    35.7899242264978525
-45727  -81.486598829567086     39.6476379292131753
-02520  -73.1440590000000128    43.0843513333333306
-06066  -72.4662609807845257    41.8394466990824156
-94028  -122.209394628742615    37.3782140576605357
-61422  -90.5159841392699462    40.5505445898894834
-38229  -88.6099281053790548    36.216632007724229
-78827  -99.7621366633166105    28.4478457319932758
-66967  -98.7872807482891346    39.7870433299120165
-63824  -89.5229294776119247    37.0028640298507483
-14467  -77.6121060158177443    43.0466077021448399
-50152  -93.8198619545454875    41.9675513909090867
-44836  -83.0558741981246698    41.2465045662453917
-29532  -79.8806903933266028    34.2839054814260038
-77631  -93.7371150000000029    30.0900145000000023
-37786  -83.8671978571428554    35.6933172857142864
-96747  -159.612766666666658    21.919727933333327
-70808  -91.1449762574372215    30.4075634054091779
-15865  -78.8192960786407326    41.050623751456321
-63457  -91.6953832044053172    40.1631526246696069
-73567  -98.1715933745928311    34.7484580879478955
-23016  -77.221419214285703     37.7336022857142908
-45249  -84.3256232294925496    39.2755742416626958
-20621  -76.8035227818407549    38.3303688397699958
-39442  -89.0832821956521883    31.7369373695652115
-24244  -82.7916291653016714    36.6979584025409977
-19840  -74.9490839999999992    40.2181695000000019
-56518  -95.2348346270190262    46.4796744684288257
-74836  -96.6238281176471077    34.43974886425341
-75485  -96.4619136938775625    33.3630990408163228
-92629  -117.703036587081115    33.4777340113778834
-61776  -88.8923041168988135    40.5777042695336547
-97412  -123.551935162126441    44.1856838431244228
-69345  -103.745678147572917    41.5769527436892901
-43530  -84.285184000000001     41.3235102499999982
-74831  -97.0504528968291282    34.8972866326120155
-22723  -78.3944795907781184    38.3519943573486941
-85650  -110.242739812188333    31.4937188611868564
-74179  -96.2194929999999999    28.8680404999999993
-01077  -72.7729041454428653    42.051461089620318
-42459  -88.011518422154964     37.5672454682158588
-10915  -74.363586181818178     41.542474999999996
-75486  -95.7294404671982875    33.7434724301097546
-93527  -117.876089545214057    35.7383367183743133
-37216  -86.7233779612342346    36.2136448649579634
-24239  -82.1408813215340246    37.1032488761062069
-40312  -83.9408257948543906    37.8543599121784098
-16443  -80.4657912684606202    41.9403043842302949
-34990  -80.3003310408026465    27.1704495944404876
-61812  -87.8805480281862401    40.2709896924019546
-31525  -81.4991203048961523    31.2630696046719869
-12769  -74.4544381617021145    41.6534045659574588
-26366  -80.3358623846153677    39.3790180000000021
-54862  -91.1325463148761798    45.770059148760339
-64601  -93.5676221163756878    39.806461759941655
-17944  -76.285121955156967     40.6710587668161452
-67635  -100.42412027814575     39.6126165231788079
-12749  -74.8314489787685915    41.6898859320594539
-17519  -76.0235888233977164    40.1414046835991911
-54448  -89.8329338921777776    44.927999059368247
-60134  -88.3223788258342495    41.8845338602890536
-44740  -85.169762999999989     38.8707199999999986
-87510  -106.328420686557919    36.2393016633165956
-30296  -84.4434603703283102    33.5642793684855789
-91755  -118.117672033907411    34.0493563022067534
-62995  -88.8786579773110503    37.4190915466695699
-99734  -148.405397203389867    70.2285380338983032
-47546  -86.9296027405697487    38.4091271102859366
-33025  -80.276603568273373     25.9926481800640943
-88053  -108.222839315789528    32.8703684972298618
-44264  -81.5468458538174303    41.2278308319195332
-79414  -101.919240043442372    33.549316616880354
-33744  -82.7709159999999997    27.8138299999999994
-66401  -96.3067150717372158    38.9919654515989933
-50218  -93.8795500671642174    41.3489922238806074
-44060  -81.3336349077039671    41.6844210249265217
-78027  -98.5081690317919794    29.9791460685383306
-70355  -90.4839530805501795    29.6982141277013696
-78402  -97.3900072859337627    27.824255890853177
-45225  -84.5498309882480612    39.1409812601496228
-46990  -85.733372823850047     40.8959448026635144
-14865  -76.8347812898890226    42.3500002746932154
-85540  -109.337790210791354    33.0532881179855949
-06607  -73.1649577690980522    41.1779636823665172
-06063  -72.979938527052866     41.9200909090754195
-07961  -74.4308526666666666    40.7826088333333345
-85641  -110.701598002485923    32.0108960946479115
-40144  -86.3759201289335721    37.7567841373852531
-49854  -86.2876591217112434    46.0171745929104858
-30420  -82.1455461577687203    32.2946386221766133
-39044  -89.9780742182582571    32.0185829520721228
-59456  -111.554807201474219    48.2562995171989328
-66073  -95.3787101084035385    39.0964117631989865
-76941  -100.811513887940478    31.2714702923933032
-92078  -117.189550474921035    33.120378260833931
-77374  -94.6183052196668797    30.3945100428231072
-61565  -89.4835056631363841    41.0207898501680432
-85336  -114.771617491891917    32.5625566216216171
-15053  -80.3637017927461272    40.3856282538860256
-77351  -94.8999645673471548    30.7032504972462945
-91962  -116.487517630816072    32.7953286704806217
-01097  -72.8249950692307948    42.1635492153846201
-51554  -95.6917197919463121    41.1431094093959615
-70729  -91.3622209332538091    30.5753605220500724
-29455  -80.0950713326352144    32.6734209393639929
-94087  -122.037421832195236    37.3511027539919382
-62314  -90.9046474096692947    39.7687011068702674
-61478  -90.7572875994123081    40.7563585249754894
-26641  -80.7741057500000039    38.3365768749999987
-49441  -86.2759446842654683    43.1933674299810804
-68065  -96.8493047728625243    41.0704903717339818
-79404  -101.812849499250447    33.5462465313248046
-92011  -117.295977853668262    33.1075489311380835
-38762  -90.7332170804240548    33.8817018603491249
-11004  -73.7076726666666673    40.7475554999999972
-67877  -100.84120227933451     37.5049307723292458
-40241  -85.5813151572692732    38.3053011477926262
-16245  -79.296882921212088     41.0077455393939374
-76360  -98.9840398375955175    33.9911719012022999
-77358  -95.4371679787690965    30.5476944704148075
-19095  -75.1503530058963207    40.0861770652515901
-21212  -76.6130964574442572    39.3668281080891873
-19962  -75.5050707491586905    39.0667042396757012
-23358  -75.8676729063926274    37.6396047922374422
-18011  -75.6366129121340691    40.4799456809168561
-00957  -66.1871958325791923    18.3699999185520362
-63530  -92.4691950307222044    39.9015409155147012
-22746  -78.0166045973451645    38.6351830575221058
-67590  -101.901494000000014    37.0000138124999935
-80809  -104.987083799269158    38.9130328660923226
-63734  -90.0942959450981107    37.2665321921568804
-35143  -86.543014543947649     33.0808627043111656
-07513  -74.1496475994622699    40.9060234731183243
-84655  -111.80554399880883     39.9832536157664507
-19716  -75.7530059166666518    39.6801866304347612
-96853  -157.947990454545447    21.337616727272728
-38101  -90.0564722499999846    35.1304188750000037
-60932  -87.8013976039603961    40.4667030495049644
-67333  -95.9142703672244608    37.0198243251823129
-17946  -76.2481792263157558    40.8120253394736707
-73064  -97.7314759072971384    35.3920997509178505
-35611  -87.059937765909865     34.7863579431827645
-32669  -82.5741007797097097    29.6474224232804815
-12130  -73.6576868002915717    42.4438051516034847
-08055  -74.8209887093230037    39.8660204111824186
-55445  -93.3720808639641291    45.1182859255094115
-15370  -80.1777853172136048    39.8898880023590436
-35151  -86.3435758624404599    33.1271211889065498
-46346  -86.6940624835979463    41.4807733619047667
-14505  -77.1699331762002885    43.1593877822547185
-04846  -69.0558701249999984    44.0835998750000044
-25598  -82.009018999999995     37.9384000000000015
-14506  -77.5023623259423857    42.9982601651884977
-75234  -96.8784512009726768    32.9287555502735216
-14838  -76.6661013656321302    42.1846369545799362
-10524  -73.921235057012467     41.3658966590999455
-47836  -87.1764781447368051    39.64666180263157
-64657  -94.1891625521403881    40.143282134467583
-44320  -81.5714526873950803    41.0818494766159503
-38328  -88.2113023329526698    35.6740425211187357
-12489  -74.3595008809917744    41.7607480330578298
-29409  -79.9643266712328682    32.7954514246575357
-47585  -87.1374248414164612    38.2719688806774059
-67357  -95.2678031363124092    37.3403568494274936
-76271  -96.9088159957628932    33.4697865497881821
-77436  -96.2397546339285412    29.3904377142857172
-53069  -88.4373490000000118    43.1139679999999998
-20124  -77.3949923835703117    38.7908513223749054
-27877  -77.1873056395939017    36.5143590761421208
-98628  -121.115856463687152    45.8240841206703706
-93444  -120.502584142991196    35.0372207880162918
-35616  -88.003995888086493     34.749853711687706
-12959  -73.6887229080977022    44.9570400334189912
-66733  -95.248531329423173     37.5840143069404036
-29168  -80.5067809160572949    33.8905392124005687
-29420  -80.1040510252114899    32.9290711043689655
-22542  -77.8837370873604442    38.2965972462826727
-32258  -81.5596889670875527    30.145596272646042
-18053  -75.7043962455929318    40.7107553298475082
-68070  -96.7963498701969485    41.1966525787253204
-89021  -114.47176865085514     36.5985995188770943
-95226  -120.864279326460576    38.2218742508591163
-74045  -96.7196509126506356    36.2103344397590732
-02132  -71.1575740779770314    42.2794515166453024
-06018  -73.3136121061761656    42.0273092203330165
-29597  -78.6873734285714193    33.8888088571428554
-62021  -89.9916911779461657    38.979227618078589
-27883  -77.8021572429739052    35.5929688562075057
-45819  -84.2603968931298084    40.6241562366412268
-26134  -81.2648910814607035    39.3774353089887583
-95140  -121.702788247511734    37.377401574642974
-20220  -77.0341999999999985    38.8986853333333329
-55311  -93.4911006725870095    45.0952829450465984
-87567  -106.023612841059574    35.9873789529065462
-37867  -82.0659432000000066    36.1990002666666655
-42782  -85.64063039797378      37.3466865680767057
-23879  -77.5965779864220337    36.5925907574312035
-12167  -74.5920600866485728    42.418765819615146
-24293  -82.5589693803507174    36.9956678836879505
-63735  -89.7958095478131781    36.9981919718310337
-08755  -74.2248341953609838    40.0176542038045184
-54853  -92.4582797124504339    45.5728017451229732
-23925  -78.6966234444444552    37.0620402222222296
-59242  -104.551216189542544    48.429705767973843
-75099  -96.8002104999999915    32.7711000000000041
-54128  -88.7859195027932202    44.8489559273742842
-53183  -88.3770884438841193    43.0046314662673055
-59736  -113.47697198781978     45.3243303410475136
-44887  -82.7911326553745965    40.9038501947882267
-43805  -81.9713792230769798    40.4062244230769281
-54154  -88.1716383411313842    44.8773922002445076
-78880  -100.179078934511224    29.9968137252253193
-32827  -81.2939774992224784    28.4236067134981454
-96903  -122.419438     40.6288723333333337
-34430  -82.4544798076923229    29.0590501538461581
-20190  -77.3396922159890607    38.9624107189701263
-21244  -76.7670262998617403    39.335783628189823
-76757  -100.154672375000018    31.3623768749999989
-91910  -117.049695496630491    32.637404943051088
-03609  -72.4468200752941414    43.142232950588209
-92220  -116.889485623390456    33.9192773512486028
-41101  -82.6494139924397615    38.4698073899789037
-58063  -97.8093131245371268    46.9802487699074831
-10985  -74.354955813953481     41.5765378046511671
-20429  -77.0395693333333469    38.8969636666666645
-73772  -98.4159111127393942    35.8513407213076505
-15068  -79.7261833542078051    40.5673257563648377
-13088  -76.1873102759989962    43.1109768121236954
-13073  -76.3833022819685681    42.5870844583717201
-87703  -105.227112000000005    35.5437960000000004
-50450  -93.5325691066065019    43.4211682564565464
-75034  -96.8665117897818533    33.1306879681248532
-62040  -90.1085162947357929    38.7248039496150369
-98231  -122.727968166666656    48.9949481666666671
-90802  -118.192089016447838    33.7674509682018709
-58362  -99.0748299646946009    48.2289120601144887
-95758  -121.436913844988098    38.4219373203978094
-89310  -117.081045801730212    39.3055139992790004
-20815  -77.0772915315984335    38.9833733496040509
-40050  -85.1766639779263386    38.4389630655518388
-74441  -95.1425353914402194    35.9775770790273199
-64630  -93.1461782587966667    40.0280521572077177
-37605  -82.2884757407407221    36.2741054814814845
-90071  -118.254597925619848    34.0527666033057841
-46738  -85.1343861026160909    41.3377807037144365
-83355  -114.722710268088989    42.7509089524582109
-77074  -95.5113661858264749    29.6897794953833021
-62567  -89.1886773722025907    39.6462449646643833
-23185  -76.715893913909639     37.2526444725585861
-42653  -84.4602803018022854    36.7654345416719437
-70395  -90.8338572431387945    29.7050555626319444
-16319  -79.6257721989341718    41.316306348134944
-32038  -82.7050195540339672    29.9309668664587107
-30328  -84.384940301735071     33.9334798289199213
-07647  -73.9498555953329202    41.011063841775794
-76365  -98.2204860018324126    33.767297426424669
-40359  -84.8152672621796739    38.4871703708856572
-94583  -121.959863894535872    37.7525171154123527
-68770  -96.7307835973722234    42.5631350563115021
-42032  -89.0994796615385098    36.7589199934066073
-06247  -72.0681380315684663    41.7665426105895179
-01879  -71.4276979095882041    42.6650388159768568
-36617  -88.0933775255050051    30.7152342328282408
-10510  -73.8348869421634362    41.1450046254993538
-40831  -83.3193440215578676    36.8145314059284559
-01236  -73.3715626008716981    42.2635754813200251
-55319  -93.9416929284661109    45.4767837239974426
-53209  -87.9466363724144315    43.1241700637534677
-07010  -73.9891969958653135    40.8217325380980682
-89141  -115.204791405267784    35.9913077101288152
-11786  -72.8955940741006145    40.948309786248636
-43073  -82.7546091363636691    39.9967633181818201
-73639  -98.8965329131886079    35.6793833005008239
-77028  -95.2860980047253889    29.827374278401269
-99501  -149.875569725586104    61.2153235736086785
-12837  -73.2656274314540923    43.5025653430266743
-54921  -89.5307653041862324    44.3112175854151573
-21650  -75.816962701257907     39.3137571792453215
-45062  -84.5503818095238699    39.4813267210884291
-37151  -86.041162529899708     36.3186551375734368
-85375  -112.358953429337902    33.6762708697929156
-91607  -118.399755574796558    34.1665341187313203
-07342  -74.1363412999999838    39.9025615999999985
-12939  -74.1651152760181134    44.4203628009049609
-27515  -79.016747250000023     35.9479299166666735
-44280  -81.9193658647459699    41.2354011204482447
-55906  -92.4314320726717824    44.0685427776101193
-11702  -73.3244725991627462    40.6900663008895975
-43532  -83.9813962022443548    41.4617437284288428
-42776  -85.8956995612143714    37.5102958313065002
-44846  -82.6006801131084529    41.3067198365597363
-25214  -81.5473430836431987    38.1935046282527821
-25540  -82.1597912233727641    38.1550930902367185
-52401  -91.658369494345834     41.9752006171244361
-15044  -79.9535054162999614    40.6348456413729195
-81326  -108.098406707887008    37.2052719833060905
-67674  -99.0891243012047909    38.8641365180723071
-19066  -75.2495478433388314    40.0042399925986132
-29899  -82.2524609999999967    33.9288444999999967
-63459  -91.3648866413928715    39.6021702671220766
-47520  -86.6409490332889618    37.9697518943630925
-87942  -107.305262344117679    33.0920123397059029
-14067  -78.5670921343076714    43.2090417407611156
-08555  -74.4748201516853641    40.217679474719084
-44303  -81.5366942135069479    41.1035540905512065
-91402  -118.44279573930767     34.223503545598625
-08323  -75.3545659227697513    39.4056278482024069
-37388  -86.2302672655771403    35.3512148103874608
-47034  -85.3274974923077139    39.204367169230764
-96057  -122.116111373724664    41.2432171459040688
-32158  -81.9280510000000106    28.9215322499999985
-42452  -87.5420636043231042    37.6863809055744881
-84726  -111.604424281026922    37.7681102346647037
-99609  -162.519327766666663    60.8729993833333509
-70710  -91.2628291816339043    30.3598724287643442
-47017  -85.1778908189706101    38.9393535083863895
-43613  -83.604600688827631     41.7063285549990894
-01108  -72.5555332142700138    42.0830865141169284
-67118  -97.8542231305142707    37.4676367289321703
-27103  -80.3182868292686294    36.0607647731973131
-12491  -74.1215113433714237    41.9814589757620595
-94929  -122.964847949899891    38.2527883466934284
-29353  -81.6650266946287076    34.826326331176837
-61875  -88.4307777783912456    40.1197324747634383
-15552  -78.9976476973506863    39.79778576870374
-08690  -74.6585910353163911    40.2245495958229498
-67356  -95.1251985369918032    37.1713195793679105
-11406  -74.6066743333333449    42.1517346666666626
-54824  -92.5291996692979382    45.464609157041977
-30126  -84.5544157288502021    33.8173321414899561
-27609  -78.6325327838386272    35.8461866278268388
-49024  -85.6189867377002685    42.2139145938549731
-98245  -122.913521551123878    48.6655196852167293
-91406  -118.494006134085879    34.2018374058228574
-45252  -84.6297397375628293    39.2684846316377758
-94127  -122.459175226753658    37.7356220932182467
-83450  -112.413872027749676    43.8525235443996166
-53704  -89.3470352879123908    43.1243403999408272
-12748  -74.9241859706030624    41.7802536974151337
-28422  -78.2007607764617632    33.9969619810325909
-98270  -122.146383901966274    48.0618411970019679
-75272  -95.9300592499999993    32.8923989999999975
-61936  -88.7174932076502643    39.7993428688524702
-61531  -90.0200066704896074    40.6825798583034839
-48617  -84.7331839498752259    43.8360148043018825
-65050  -92.6878979701420178    38.5418820616739737
-62085  -89.8050603567567549    39.0791115405405236
-64424  -94.0366437747028669    40.2582165970569719
-15032  -79.8428290384615451    40.6438958461538462
-67428  -97.4157910848923336    38.3768979496403162
-48335  -83.4010575819885105    42.4630870853621971
-24614  -82.0706893163037421    37.3088097294049135
-95637  -122.199091160642595    38.8351044799196714
-27371  -79.9501656769959368    35.4039175614974297
-74445  -95.8400769052164492    35.6187130514588404
-08818  -74.3731484545454578    40.5374764545454553
-49031  -85.9841049998731393    41.9016479665904313
-58216  -97.4251250885145339    48.8711161981864279
-54982  -89.287582832477014     44.0716872826310038
-51454  -95.2199700058808673    41.8856571744609596
-86431  -114.210602803278704    35.4083205737705313
-03079  -71.2177823138484314    42.7904322936834021
-71320  -91.7412261612903279    31.1514165935483796
-12821  -73.4012868720379714    43.4544595473933484
-32789  -81.3517373711836171    28.5983277020373663
-53222  -88.0289706397407343    43.0826267025677083
-35049  -86.5999870296113414    33.9584594214461717
-72847  -93.272972773114617     35.3623929192796425
-58317  -99.2497418348006732    48.617735201375524
-80106  -104.56936201876573     39.1247558339768915
-12137  -74.1276423339961212    42.8585173929754859
-73134  -97.5817995162455247    35.6166892072202401
-36831  -85.5194722500000069    32.5767712499999931
-93246  -119.881862000000027    36.2647605517241445
-50131  -93.7229718947248216    41.6792058110563133
-56210  -96.5589850674157049    45.5594836516853761
-12305  -73.9437905866142415    42.8146245065616782
-87193  -106.551741285714272    35.0926797142857154
-82001  -104.791727222416455    41.1426167238925089
-79227  -99.7027516486054566    33.9488590581673009
-02885  -71.266021974347467     41.7259547296254851
-42050  -89.2037987740266232    36.5455880870725522
-43116  -83.0622090099668497    39.7718734875414697
-43048  -83.1301609999999869    40.2495663333333269
-32825  -81.2442351937264817    28.5389183611353374
-62277  -90.1119385708086469    38.1114405798332641
-12455  -74.6561321529762978    42.1611374312632492
-83549  -116.340058122832374    45.3900134046242201
-38915  -89.3540493006276364    34.0261405755494053
-32222  -81.8156853997248845    30.2266911272059708
-32541  -86.4487718523104007    30.3953126935501494
-08226  -74.5908464620623732    39.26800863672959
-26435  -80.0855908999999997    39.2708334000000008
-31600  -84.2448996666666545    39.4219000000000008
-24370  -81.7320862405098438    36.8942607657058304
-26104  -81.4942710020280003    39.2803580683568825
-58779  -101.852600909859319    47.8197957033656351
-12442  -74.2320512962257482    42.2208845077704638
-87034  -107.626613511430861    35.0495240313293976
-85050  -111.99694131062796     33.6811237329710735
-54812  -91.8709296079063193    45.3968936910779846
-79001  -102.727341632000147    35.2004343939999984
-99508  -149.816962123329887    61.2028969801112339
-01341  -72.7023219672416587    42.5158827433349842
-56468  -94.315461126904367     46.4925223603757445
-12858  -73.664111405375138     43.9002879294512809
-74468  -95.5675228358209239    35.6143038208955218
-24095  -79.737107325085077     37.2181737731460558
-52641  -91.5763451722307593    40.9716378415833447
-73701  -97.8613811901312971    36.4053672236981143
-00888  -93.1431151071428758    33.8776077142857091
-72392  -91.0967424025245265    34.9460403842917771
-41049  -83.6410170133733146    38.2761560733831701
-95962  -121.261824472299651    39.3505843721924791
-95903  -121.340671646300763    39.102674169451106
-56036  -93.2380791683296479    43.551401363557396
-44232  -81.4619181000000054    40.9323452000000003
-29447  -80.5929958461538547    33.1078838846153829
-39535  -88.9673914999999909    30.4338890000000006
-44855  -82.5900628066913498    41.10301840201803
-15087  -79.8527780930232467    40.1910328197674218
-81020  -104.778350393847163    37.3540009589331277
-92545  -117.019907715848944    33.7398062523943523
-75956  -93.9298176186974985    30.6859415906012067
-20783  -76.9713335321540058    38.9945265956423341
-04657  -67.3921279645821301    45.0029680420586757
-32732  -81.1136313745431465    28.749868959428909
-17025  -76.9592931316326059    40.2919054880202694
-39864  -84.6328769166666603    31.6070335
-85215  -111.703377012612904    33.4722479207543842
-82084  -105.470056676209282    41.0467939812437734
-49733  -84.7144945905065185    44.815820806382483
-63968  -91.0108025000000112    37.0032099999999957
-54082  -92.7501203710160951    45.0670062395417759
-63465  -91.6778912162162243    40.4908670810810563
-89109  -115.168355164805618    36.1195996854062287
-68122  -96.048816955036628     41.3371925729931959
-16505  -80.1695596683781275    42.0941602145376237
-28337  -78.6016421825334248    34.6491734220362844
-79031  -102.433238002092054    34.2510829811715496
-54442  -89.6664406999999812    45.3026847999999944
-28557  -76.7635387768635837    34.7338261452780515
-40057  -85.0478327247417667    38.372037195891302
-74964  -94.6038765396085637    36.1403727306616958
-17012  -77.5883909166666683    40.3793883333333312
-78747  -97.7578641989082513    30.1413309295372116
-30324  -84.3557243509383881    33.8201982311372404
-95519  -124.069461536859009    40.9426879289728802
-38310  -88.3942602161065167    35.2516936078431229
-33972  -81.6162672160293852    26.6430782298616187
-04598  -69.8949998571428495    44.856972285714285
-49721  -84.4724698108074676    45.5925948317084533
-27501  -78.6981659447745443    35.4930531291476896
-19547  -75.7676218601725253    40.3870899782969275
-60043  -87.7153256726138153    42.0887440187332729
-26276  -79.7384505115863504    39.043772404634538
-96058  -121.957842813656271    41.7813614085901435
-42327  -87.2693762781839411    37.5784246055844449
-18437  -75.3136947412731246    41.8564874462697105
-76249  -97.2643045968299589    33.2694817376522778
-33485  -80.0618379999999945    26.4816685000000014
-06477  -73.0268561151316504    41.2821529498817981
-70668  -93.596106260172192     30.2008906856544463
-43925  -80.8440112992126103    40.4428867874015694
-72457  -91.0580193218142426    36.0813653304535649
-68157  -95.9931554614271647    41.1817193534232828
-28736  -83.1098488905607695    35.1772480454856407
-64784  -94.2564667653410879    37.6656652518409132
-27710  -78.9350589999999954    36.0046304000000035
-55116  -93.1730739781825292    44.9121652232078574
-03852  -70.9745499760307723    43.5046063585810145
-65014  -91.6270129115367382    38.311305232876677
-79045  -102.421491062639689    34.8862269938180205
-55439  -93.3747200132644934    44.8770708150861708
-42830  -83.9022937999999954    37.7593239999999994
-84780  -113.501351872956491    37.1231757080561096
-42088  -88.7387381600596257    36.617245161753921
-72752  -93.6189947705775438    35.8066600072449006
-05084  -72.444275887850452     43.7203964236760001
-86405  -114.200519999999983    34.7517201428571454
-92804  -117.972477799161553    33.8180824881341451
-52351  -91.8326635332102938    41.8777999317343017
-21872  -75.2937011719696585    38.4122882151515768
-18827  -75.6347367647058775    41.9618525882352955
-38473  -87.1719470137468164    35.029758677749399
-01238  -73.236749828453128     42.2997692282877935
-93247  -119.084187510885954    36.2040472695307898
-51052  -96.2777278852125704    42.3139723646185075
-49345  -85.682025719484642     43.1577008356330012
-23307  -75.8834351525542559    37.4319347018894319
-35183  -86.3206150714284774    33.0249323668831138
-59039  -107.376690117346996    46.5911787499999903
-04049  -70.6991283576419534    43.7332172751339812
-12526  -73.861206714402897     42.122846749846218
-56121  -94.6173182266204975    43.5384863364671304
-28040  -81.7559751244631059    35.3613130032001095
-88120  -103.330391991522745    34.8032319084435713
-00646  -66.2863843377334945    18.4407561040054588
-91773  -117.816890391343563    34.1002287769284038
-76801  -99.0274392835447941    31.7402466387792046
-71933  -93.3649739086226731    34.4058987986567857
-67470  -97.5126025766208784    38.8985166630648536
-76129  -97.3648123692307479    32.7077943076923034
-79734  -104.022030253666287    30.6017993569779989
-54554  -89.0602147804675894    46.0558632774675232
-07404  -74.3390320714285764    40.980132142857137
-41616  -82.8749448543308063    37.5866776309055126
-43937  -80.8682277500000168    40.1258627083333295
-27831  -77.5700282792297884    36.4777987998874949
-23023  -76.9630047144993483    37.7900042989537042
-89535  -109.910255333333339    34.096541666666667
-35549  -87.5247776731914939    33.8590528937520361
-10980  -74.0044683345973198    41.2315780456331638
-99117  -118.435148356518141    47.7857375989171018
-44107  -81.8017680474539617    41.4820154305555207
-11302  -74.4859054285714279    43.1349072857142843
-17529  -76.1020025835767484    40.0379637432652302
-32034  -81.4738259813224062    30.6201690861501774
-61448  -90.2609380211780916    40.9176177701301569
-37754  -84.0329990429850398    36.1255457559560682
-05464  -72.8264907128588277    44.6479711774343428
-10167  -73.9747710000000041    40.7546485000000018
-99567  -149.448392881230347    61.4094453911643967
-85061  -111.311673666666664    31.5759383333333297
-03464  -72.1004821127645954    43.0868498790132932
-45344  -84.016877953899936     39.941441604428654
-98853  -119.283413093567276    47.4454019005848053
-25252  -81.5300359222191844    38.8810417886864244
-93620  -120.625864717871977    37.0216884622798901
-29429  -79.6895214797467446    32.9522939641310586
-72449  -90.8142228616071492    36.1671517142857013
-69130  -99.9651861473913925    40.8747281657605015
-87013  -106.975355290025988    36.0045899203224593
-68815  -99.1112600094191123    41.4164040894819223
-57045  -97.5111736293144133    43.2021077473737236
-42629  -85.107847217792937     36.9520517332436995
-40868  -83.4152671833260371    37.0911752680053013
-98619  -121.276952111420599    46.0010679805013396
-62881  -88.9477808394144347    38.6301337030540921
-76388  -99.6506966099071718    33.3222977399380724
-56722  -96.649664194174818     47.9820637548543445
-39669  -91.3607979867692706    31.1351857908933702
-53010  -88.2813246353943981    43.596034723880571
-52630  -91.705862293804671     40.803227508171851
-67210  -97.2598302076824979    37.6355725742187133
-40743  -84.1165379032258187    37.0751723598014991
-07901  -74.364041938540737     40.7140490391221022
-05736  -73.0135175514158021    43.6045728494783873
-00742  -66.9423301632653107    18.4716066632653053
-73052  -97.6114792411015202    34.8851069746020173
-25057  -81.2524797070707336    38.1246004040403932
-95003  -121.886697677872874    36.9831627074507239
-18087  -75.6031212049689145    40.5505367173913029
-25972  -80.7275104988066801    38.0491914868734966
-27205  -79.8407742017183466    35.6619452283441021
-00960  -66.1582152499999978    18.3573661250000022
-16226  -79.4989205420478555    40.7290022824878477
-48706  -83.9237315695285986    43.6056489585400655
-43502  -84.3042246841328478    41.5260825268329299
-97823  -120.193961353729307    45.2111739653262177
-63944  -90.4031420121273044    37.0837721733198293
-19406  -75.3728987100772656    40.0946484896844595
-15562  -79.1271837166438559    39.7457075171938925
-65809  -93.2021663936778992    37.1729174216225502
-02681  -80.1444860999999946    25.9471210999999968
-98591  -122.808865290475268    46.4470374362751457
-52156  -91.452942143588615     43.0628376125450814
-16611  -78.1007241636159222    40.5626878721949282
-31240  -81.8793998000000016    29.7360013999999993
-73686  -96.9674887500000011    34.5668560000000014
-76116  -97.4430842789470546    32.7199516113255555
-12190  -74.2884940828547826    43.3982715611156351
-13102  -76.2922171960784539    42.5533170980392228
-57780  -102.44204569482288     43.8043271702996861
-90033  -118.210139587076611    34.0501527751375264
-79339  -102.32539885568373     33.9017729181468539
-69789  -97.9781184999999937    42.5103474999999946
-27702  -81.4401392500000014    35.0924552500000004
-80033  -105.098688044009265    39.7726548895850129
-07718  -74.087799500411748     40.4174065687808337
-40041  -85.6639333599999873    38.2546226799999971
-19151  -75.2536350973630448    39.9766775584854344
-21617  -76.0461033836124898    39.0516767389197028
-10969  -74.4857329779710113    41.2902469762318489
-79639  -98.4123149999999924    30.6327203333333351
-95312  -120.639552406896584    37.4435233379310333
-80020  -105.060187455846702    39.927226758649347
-13104  -75.9673112605472767    42.9882866494895026
-60425  -87.6126892024056474    41.5467951642711029
-50598  -94.4151463208630304    43.0753566273381381
-79350  -101.837505301075254    33.7340899569892514
-39581  -88.5200479942363074    30.3932347015232622
-58433  -98.7120736107234507    46.3886945240543369
-12117  -74.2395829827786002    43.1433408320895069
-12175  -74.5731666127332602    42.5615120093268402
-22932  -78.6899822808423011    38.1172888952497075
-01066  -72.6287395729166434    42.4115100208333473
-28353  -79.5300680833333331    34.750016666666653
-32773  -81.2772420983215227    28.7622342433665814
-47018  -85.0656334535617304    38.9847796304896193
-22405  -77.4211482475398469    38.3210626162511261
-71764  -93.0382410950391971    33.4033116482721084
-76285  -97.5235638000000051    33.6949569999999952
-49621  -85.7805578539679772    44.8703332177488292
-99208  -117.44374732474536     47.7500876725688812
-39660  -90.5064800000000105    31.2420079999999984
-73746  -98.6773620000000022    36.6603627857142911
-50061  -93.7938889402987002    41.4890653204809539
-15693  -79.4088420746268326    40.2529991641791156
-97236  -122.510096557246968    45.485959056665564
-14832  -76.9223946249999955    42.6032047812499997
-44418  -80.6098703688253977    41.2991183150383989
-05761  -73.1474267153129318    43.3561857198868026
-17840  -76.4576483414634112    40.7791299219512453
-68745  -97.0837637756920202    42.4277038938460294
-98617  -121.169888748560581    45.6295783550863305
-23966  -78.2805624982384103    37.2777534357313982
-66963  -98.0361622478632455    39.6437977008547122
-25736  -81.2259991724137791    37.398084689655164
-16041  -79.7328165607823109    41.0026432119653066
-25857  -81.2243575597484124    37.6208350440251564
-22543  -77.4915446666666838    38.2388475942028947
-53046  -88.1701122701811784    43.1497391894563762
-91123  -118.159402099999994    34.1448658000000052
-71446  -93.2275519760815143    31.129332451536758
-45678  -82.3823185916116216    38.5996394023347875
-76040  -97.0995756589187948    32.8219439470270586
-61063  -89.3454745326171462    42.3103110896009511
-06419  -72.5750896449651179    41.3702771999621817
-17026  -76.4290668060837959    40.4581861203150197
-92115  -117.07033228540125     32.7604412788319905
-70646  -92.9208345294117066    30.108077799999986
-75253  -96.6057247105854628    32.679378855574349
-83014  -110.855092481078955    43.4928133652241371
-05661  -72.6119642402661043    44.5454791737309108
-52246  -91.5732550359870316    41.6516442010104271
-66411  -96.6480742719376167    39.6540900338424152
-34677  -82.6823968178317159    28.0505489579408049
-50579  -94.6431393763823507    42.3912519240099073
-99829  -135.440329239999983    58.110815875999954
-07512  -74.2194106178836392    40.9057349090908033
-15760  -78.80472383394833      40.6479980110700723
-93436  -120.4354894784652      34.6531085697462515
-78703  -97.7643507771729077    30.2935327913958972
-77432  -96.2144911694915663    29.0605066271186452
-71237  -91.4835374853801397    32.5968111881091431
-52217  -92.4190619235241115    42.082892724507964
-40728  -83.3767533999999984    36.8361002000000042
-25839  -81.3792419711836743    37.7775031549844016
-30840  -82.0000169999999997    33.0652735000000035
-49740  -84.9934613131836727    45.4963684332840899
-06424  -72.5034176248149151    41.5655285142398085
-14127  -78.7427830189683107    42.7601452768860426
-11946  -72.5198465541234327    40.8787447862786948
-37337  -84.857608557142683     35.780931466256142
-49908  -88.5276194752083398    46.8036477332163301
-25404  -77.9166081277279403    39.4838205626556658
-21829  -75.3922670412370763    38.0990629907216984
-06278  -72.172078768157462     41.8918265813792701
-46573  -86.0452569720155225    41.5397599953787662
-02904  -71.4370296860102911    41.860958581420924
-98290  -122.028817782813178    47.9403161744212625
-54893  -92.2826758984142259    45.8786715627799708
-65775  -91.8686992598860144    36.7099511572881099
-96152  -119.997289307692327    38.9211716923076949
-81140  -106.022397370547935    37.2845038808582316
-63218  -90.4006597500000026    38.484661250000002
-12052  -73.4831914806105004    42.7532909975573148
-78519  -94.5884535555555459    30.217856888888889
-75834  -95.0289200909090965    31.2590482727272736
-20135  -77.8762675926684409    39.1000188700332956
-32544  -86.705218255520478     30.4144566403785497
-73530  -99.0675811766916752    34.2450475639097718
-76239  -97.5475768968444328    33.519821594053397
-66221  -94.7104705158880904    38.8547413659486409
-70036  -90.1162763565768614    29.7095770760696851
-74469  -95.3174678694992679    35.506048928679796
-25169  -81.7773475302806787    38.1257123766617028
-46383  -87.0323435637209855    41.4823555375524151
-30012  -84.0092533331590374    33.7030849742869023
-80642  -104.621596016511745    40.0330217203302254
-12465  -74.4717894510637564    42.1440493157446312
-00678  -66.9348090957019792    18.4650530355300795
-50128  -94.3042420793060785    41.8504722218091274
-75481  -95.3740921102942281    33.3255558731617398
-30307  -84.3368685106207039    33.7693527273664955
-17417  -90.4827429999999993    35.9162722499999987
-65033  -122.116495999999998    37.252443999999997
-99925  -133.082591906666579    55.5596885826667233
-17961  -76.0661562909806719    40.6471954078948414
-85322  -112.785856812572646    33.3269399383003346
-48212  -83.0581442447389691    42.4103678532271857
-14055  -78.6201772816227589    42.5586214964200877
-45352  -84.7441363333333015    40.0501789416666725
-57548  -99.6030538122270173    44.0732465174672683
-44607  -81.1043390940171207    40.7040407777777915
-20168  -77.9294260000000065    38.792543000000002
-37178  -87.7828641291713012    36.3234029381052537
-98638  -123.767219635046445    46.3647989744398501
-83548  -116.51171439653028     46.3501914151177132
-72858  -93.0440820399480089    35.238235129447645
-37652  -82.1739613333333381    36.2839503333333369
-58006  -97.184075670000027     47.1064164125000033
-86035  -110.928204383333323    35.4150610333333375
-24589  -78.7756984881252293    36.7748858362867992
-64673  -93.5924110577347648    40.3898312080111594
-86043  -110.486773249999999    35.794254500000001
-12979  -73.3683533279043871    44.9864611476655512
-97109  -123.182741291077761    45.729898022735
-79607  -99.8210934619953463    32.4173375225653402
-84098  -111.538585428761081    40.7356602196032327
-17010  -76.5851796835443253    40.2777058227848173
-49246  -84.4956301202403068    42.1070355318637368
-16350  -79.3360221546539179    41.9632855694509033
-83414  -111.033283946725888    43.7685814150943671
-20630  -76.4676253977619496    38.1781395615463026
-63103  -90.2138051532209886    38.6308523253046445
-92501  -117.371294490654705    33.9936468714577558
-03872  -71.0292397416221775    43.5759194676608956
-18765  -75.9087791999999979    41.2362748000000039
-83446  -112.183935463414656    44.359483536585337
-01772  -71.5311881523104205    42.2956665996862782
-11783  -73.4903318299619599    40.6811902122136786
-66061  -94.8456983007764336    38.8993794458721354
-07876  -74.6568124084453189    40.8526944881650778
-11935  -72.4692466189389393    41.0115054965772288
-27835  -77.3880417142857198    35.5943567619047627
-44818  -83.0037827138660873    41.0077018046415489
-83811  -116.148338082300043    48.1333900365013818
-35728  -86.2547095000000041    33.4960525000000047
-93311  -119.119525604955314    35.318774287641105
-60096  -87.8335798242203936    42.4823551348723427
-36601  -88.0416135000000111    30.680277499999999
-74536  -95.3912582023047264    34.591416651728494
-57657  -100.766045193775085    45.4876410783131675
-17262  -77.7415393880749832    40.1507101839863694
-19481  -75.4733530540540869    40.0917466216216241
-76573  -97.5011049999999955    30.8127145238095181
-79763  -102.432610705323853    31.8327204397029035
-75681  -94.6907059017171946    31.9437670777415903
-34952  -80.2954163376014804    27.2886696403469777
-54527  -90.5945854066925023    46.1472692462462888
-89054  -115.202226447058834    35.9340255294117696
-08108  -75.0621438240190599    39.9153046242568195
-56433  -94.6921712233445021    46.9957242566405142
-47392  -84.9354944880952303    39.903114666666653
-07103  -74.1948536504207397    40.7382038156844928
-65284  -92.3155157132399182    39.1865198220037314
-79855  -104.820584469807812    31.0421900988105932
-01244  -73.2555399791123278    42.1024783681462296
-77382  -95.543856670578549     30.1996548074509512
-47190  -85.7320339999999987    38.2863690000000005
-49780  -84.7223893385208413    46.2182056354721738
-54138  -88.4835874738806325    45.32291919933229
-90210  -118.415097362522573    34.1026176045092626
-42402  -87.6079655714285934    37.771096666666665
-06483  -73.0867017886512826    41.3838520943146975
-91539  -82.569943181818175     31.8479738181818206
-97131  -123.871690545175966    45.7175999122227594
-76865  -100.141467043261287    31.8633771630615747
-25846  -81.1548085813953008    37.9271534593023247
-31512  -83.0080997141038068    31.5544753377904819
-39096  -91.0448051627642911    31.8234133635065497
-44661  -82.1125951052632104    40.5956821842104958
-04555  -69.4778721930833711    44.0997365809798367
-15721  -78.7875332339744006    40.8127671314102685
-60660  -87.6665426388358497    41.9910744875526021
-17238  -78.1306768723618745    39.8517303858176604
-84722  -113.626044971518979    37.4181584905063289
-72744  -94.4358329857934251    35.9555704718634459
-01375  -72.5634472205147318    42.4614998524778571
-49423  -86.1138266893590725    42.7640810277799659
-79529  -99.8181175356109094    33.4242665315575849
-49917  -88.3782398125000555    47.2837324017857199
-39935  -81.4375082857143013    26.7768814285714321
-41630  -82.8573122534819078    37.4660901236769064
-89143  -115.286945010726242    36.3149650196138154
-77443  -96.1996009870129569    29.3469013246753292
-50102  -93.3988957755101552    42.2350397346938564
-43026  -83.154760268933245     40.0233522800075505
-06375  -72.1172253681577899    41.4018394519862483
-56034  -94.1811270712468485    44.033097048346022
-74567  -95.3372625917159979    34.450549846153848
-30041  -84.1061194395200573    34.1878920600909169
-47722  -87.5317632500000116    37.970023249999997
-48096  -82.916924328888939     42.7576004955555788
-57402  -98.4578569523809364    45.4534524761904777
-13116  -76.0098291628371072    43.0756424595403615
-42760  -85.6050690000000003    41.3468704999999943
-56540  -96.2613755614545425    47.5376451472726345
-65714  -93.3096743058822682    37.0424699042092129
-60714  -87.8164869537623076    42.0320131612760264
-87937  -107.146961351270519    32.6593073741902984
-24373  -80.8550758333333448    36.6438254999999984
-15062  -79.8824707014691739    40.1512017504372025
-35625  -88.0309376000000015    30.8928429999999992
-39173  -90.4616356909090911    32.7265794999999997
-68879  -99.4810997621818416    41.8605991512726945
-13037  -75.8710023024953699    43.0544928702317193
-18237  -75.9928534426680784    40.8923018985667568
-40380  -83.8007651947346091    37.8241902548593458
-59466  -111.611041837894263    48.7899398437824487
-73754  -98.0767593623011464    36.3812817454100283
-25268  -81.1104968602362106    38.735381917322826
-73565  -97.9440043785309911    34.0171378968926845
-02110  -71.0541727914980044    42.3563669655870925
-47805  -87.3385741328454515    39.5404997171548018
-92603  -117.806233564633246    33.637617570624478
-50570  -94.3758050872726244    42.8888598901818341
-48610  -84.1438015316985144    44.1426591835780471
-18817  -76.6264573052631874    41.8674867789473737
-02180  -71.0962004752155394    42.4822504367193545
-83847  -116.389711895430978    48.5893654246274238
-44675  -81.2468653699109353    40.507650766206325
-24450  -79.4861251146666348    37.7892691481350695
-49820  -85.7348235483870837    46.2128162903225927
-44865  -82.6682111353659508    40.9877498274388685
-23043  -76.3400491752788497    37.5549690931228
-72121  -91.8129562683533891    35.4444636154877699
-73011  -97.7250014549355939    34.8610127081545258
-51529  -95.6217961355498858    41.861296856384115
-56229  -95.711308305993299     44.5961812201048176
-44103  -81.6421849953561178    41.5140520915892495
-83233  -111.213904354430355    42.1827833227848217
-36124  -86.1722224444444436    32.3769969999999958
-95375  -120.011848924430723    38.1984008685300509
-53207  -87.9001489914250982    42.983661768284307
-62469  -88.3315382806068783    39.3544525362946942
-87052  -106.348754266187058    35.5194862661870516
-12524  -73.8930121560594557    41.5393960145171945
-67560  -99.9062495008605964    38.4358149268502132
-29115  -80.866244252009011     33.4905403922468636
-68733  -96.689855649404123     42.2918983904674164
-59808  -114.089897942139785    46.9425600229825335
-96722  -159.477145870476448    22.2179122800000179
-48323  -83.3768675499905783    42.5699564530566974
-63621  -90.6019835258374115    37.517146738277539
-59912  -114.180934505528413    48.3703326303197798
-28555  -77.2416923747624082    34.8568343865797061
-85705  -110.986165454516041    32.2647450883442914
-54485  -89.1752278000000302    45.3728929999999977
-32404  -85.5588002577769089    30.1887283788366041
-94143  -122.405478050000013    37.7696042999999975
-81242  -106.075539530460617    38.5021595052005878
-36590  -88.2560914444444649    30.5022011111111127
-29555  -79.4812167860101226    33.8335535646979508
-55389  -94.4336034402661966    45.3149794018800947
-78221  -98.5007233097192625    29.3262598063061084
-45742  -81.7232744885424438    39.2817307778185025
-54428  -89.1066394329004368    45.4541315108225348
-46149  -86.5583791260211939    39.8864502514585411
-66539  -95.8519814627260729    39.1328750877812581
-67100  -97.7773349999999937    37.43293933333333
-13207  -76.1651197664190107    43.0187420567608214
-75758  -95.5028830990007833    32.2578080974294892
-65251  -91.9708811190099169    38.8482602032796933
-45619  -82.4524417432085812    38.4659002380950668
-81126  -105.368462538631348    37.1654892384105793
-25203  -81.8812546633663345    38.0221845280528257
-08710  -74.1825524999999999    40.0876269999999977
-83104  -110.839889999999997    43.3644469999999984
-03304  -71.5418282469762943    43.1349145660788693
-58109  -96.8077565999999905    46.8297302000000073
-48880  -84.5914877645546852    43.4324796184241109
-37803  -83.9745836602627094    35.6953511961861096
-01080  -72.3643448116958439    42.1813754397661143
-17130  -76.8824835000000064    40.2701284999999984
-08879  -74.2783209289326578    40.4655053732928849
-41540  -82.3007067095134346    37.3779169426289073
-00984  -65.9849955999999906    18.4093465999999992
-35565  -87.5940355618370603    34.2160668296410577
-08861  -74.2766985706820151    40.5213956190910309
-05875  -72.2595905974712878    44.7126699011494964
-45853  -84.1988323911765519    40.985420630882345
-81074  -104.524750000000012    37.1160995000000042
-21409  -76.4542586107439632    39.025223706528827
-68843  -97.8860707053315338    40.907157869956805
-67019  -96.7706856769534198    37.3181661969796608
-76681  -96.4308088871866573    31.9049657061281344
-44085  -80.8513754611448547    41.6090931829229405
-04268  -70.5895207173388286    44.223756807396633
-28369  -79.0303344801547354    34.4503821229382083
-38623  -90.2729077022471813    34.3642340449438208
-00767  -65.8801580323102485    18.0560565444264967
-89405  -119.47326493922651     40.4704390994475247
-30747  -85.3258276117129242    34.4917553570798034
-14514  -77.7973665562381882    43.1044539702268352
-80602  -104.909875583807349    39.9569298882559707
-53088  -88.3024150592592605    44.0737146296296558
-59639  -112.633859328108272    46.9585172837407043
-63673  -89.987325676659168     37.8330397388878197
-07752  -74.052531956521733     40.3227041304347864
-44423  -80.8986518541665305    40.7578639333333825
-12768  -74.7217087977558805    41.868856688935324
-80819  -105.023739503951276    38.9336450024316179
-41397  -83.6736275390727968    37.6657103284767842
-83722  -116.002843999999996    44.1515594999999976
-40701  -84.1280613539766904    36.9392181245372555
-10928  -73.9820805586042667    41.357256847899734
-47020  -84.9359496207218285    38.8108353294958803
-43630  -86.8893843333333251    41.7139716666666587
-21653  -76.1780973913043198    38.7515106195652166
-28421  -78.1630188910956178    34.5139686431645316
-16161  -80.4951476171734868    41.2013284597495399
-97520  -122.649693155704782    42.172619730530279
-06401  -73.0718011757753345    41.3422582533235072
-00982  -65.9878108812260535    18.4029454214559358
-86022  -112.613928732502501    36.9403214755513147
-76470  -98.6868927648764185    32.4773323004181478
-80478  -105.88194721232442     40.0009799848672429
-51201  -95.86161656994922      43.1832058235914076
-52241  -91.5848490622292672    41.6965739104635418
-98601  -122.453936246457957    45.9251867588019351
-99333  -118.137174201923045    46.7539059615384716
-18351  -75.1004806616915204    40.9218116318407539
-77986  -96.7503254047619237    29.4256849761904853
-91748  -117.896926130087721    33.9819015449852841
-68072  -96.5047807499999806    41.6091570833333364
-23320  -76.2361265804180732    36.7565622012557185
-33159  -81.897521399999988     28.8986243999999992
-83634  -116.406691913253894    43.4893559276638371
-76873  -99.3672796726997802    31.4980991674208042
-97430  -123.719393305953645    44.1435150110253218
-45837  -84.3036869411764513    41.0554726078431358
-31357  -82.0587507999999985    30.6635714000000021
-30306  -84.3506854951018425    33.7887128766014513
-62013  -90.5732203521126706    38.9516681173708861
-03218  -71.2805559173653052    43.3346474520958012
-07928  -74.4069114555318691    40.726312538306999
-90036  -118.350105527695987    34.0693800397462994
-75212  -96.8722742500395952    32.7810588107430689
-36123  -86.2217339999999979    32.3483925000000028
-50432  -93.7901027054545295    43.22053492000002
-28436  -78.2590870295541805    34.2901692438217154
-36207  -85.7554422130679797    33.6597196535131573
-47150  -85.8264377271482175    38.3091527765700945
-46404  -87.3741199807265332    41.5871560903855624
-66208  -94.6297741263274759    38.9989194542175639
-11426  -73.7187859000000003    40.7354500000000002
-89008  -114.474614000000315    37.6599482346055154
-79035  -102.725642627466172    34.6353621692556501
-93657  -119.498457923155556    36.7526428475834166
-58641  -102.588033386584328    46.6972598711385913
-73135  -97.4314843474983121    35.4019490849911733
-32035  -81.4509102499999926    30.6097399166666655
-33843  -81.5385657316094097    27.7381479613640103
-52046  -91.0096234148463026    42.4402967891215681
-64642  -93.8459097491373058    40.1775662893050622
-89444  -119.430245906893376    38.7692779956728515
-44129  -81.7354921460991761    41.3925142651707674
-73624  -99.1735139356912754    35.3538011832797565
-49629  -85.3962781347559883    44.9073503761932358
-14615  -77.6560840519801161    43.2095921989480587
-84050  -111.728924622410034    41.0783466381975941
-36105  -86.2977384724302681    32.2725890256304169
-80919  -104.854039104179648    38.9283820720640179
-10282  -74.0154434074074175    40.7163710740740825
-83872  -116.973619914640267    46.8661796615384105
-49302  -85.431313949269736     42.8317436002568641
-27860  -76.6645010971786718    35.6347079749216604
-84586  -79.3058194615384622    36.5626755384615407
-73092  -98.0939480350467221    35.1017993995327231
-17326  -78.0956383571428603    39.7234921428571468
-96102  -120.697233999999995    39.7819107931034637
-76571  -97.558842037271063     30.9479671779355456
-67552  -99.2543572901353457    37.9046561083172051
-03037  -71.2547237232264479    43.1408807118811808
-28640  -81.4087677512328582    36.4034909328346643
-74646  -97.4367952285714836    36.8198154609523627
-46202  -86.1594159544224709    39.7817019848073485
-42566  -84.7888813711789453    37.2910800825327584
-30725  -85.3497552733888369    34.9202367309792763
-55372  -93.416475243544312     44.7018335124509605
-06492  -72.8168806225087195    41.460993016136392
-98566  -123.880342499999983    47.4121359782608565
-42565  -84.9056989088554843    37.1474501196271376
-76825  -99.3391370308849417    31.1245252153588297
-95695  -121.802683149681059    38.6769454907293593
-12413  -74.0199878244773117    42.310717114832606
-17094  -77.2215167949809427    40.5887046536457916
-80422  -105.481562612004751    39.8650153382351533
-73951  -101.067067702127687    36.9549408250591185
-02148  -71.0596634234386215    42.4308996255691611
-22747  -78.172406067789538     38.7155931661873183
-12177  -74.2870024499999886    42.9527140692307867
-28460  -77.4142758548867533    34.5289891156344666
-30151  -84.3729540420168007    34.3829164537815117
-28021  -81.4001064412295392    35.387141356875766
-42374  -87.146552938110716     37.3320910781759068
-08889  -74.7642434697605864    40.6007652569343946
-93531  -118.620234302385825    35.242051908713691
-97428  -123.207408270833284    43.728762687499966
-78541  -98.1997806472116395    26.344116428671505
-39146  -89.9950355212692159    32.8778804211273368
-58237  -97.4021637783756091    48.411708381605699
-48091  -83.0607483328276999    42.468481384102077
-89424  -119.392300520618562    39.7622708118556787
-94601  -122.21793311586903     37.7784462914357135
-65584  -92.1313142307374306    37.8293945196051951
-11416  -73.8535038611111077    40.6840946388889009
-58365  -99.2609882826558874    48.861078385705099
-97040  -121.373740805753144    45.658279128113989
-22032  -77.2914429468688411    38.8191526270440477
-25841  -81.0960324128242291    37.5553647961095081
-61233  -90.2904262147650769    41.2928099865771898
-25046  -81.3844809999999939    38.4726294999999965
-01026  -72.9148982295918984    42.4626948061223715
-86939  -110.052436066666672    34.431902799999996
-92255  -115.569869250000011    32.8521402499999979
-59450  -110.717396387594007    47.5893858693676606
-00728  -66.6484844903505831    18.0103626759989197
-36053  -85.3992728901056921    32.0225805250504223
-52308  -92.1594545447761107    41.5819320373134289
-63828  -89.687231081249962     36.7535856187500229
-17252  -77.8024613155634484    39.9129377054437455
-04535  -69.6280488186412612    44.083898331836032
-01534  -71.6490652131357848    42.1424105829287114
-74620  -97.3833300000000008    36.4920550000000006
-53073  -87.973956997397309     43.7457948435510602
-73105  -97.5023154631110174    35.5113251409774122
-68345  -96.0456560066445491    40.0362815681063182
-56474  -94.3745869198765917    46.7334880959146304
-68408  -95.911081666666675     40.949456000000005
-01068  -72.0513883385102361    42.3475691074982308
-28770  -82.2831052356321777    35.620095022988508
-98583  -123.484934886792445    47.0026537358490657
-04227  -70.3091074545454688    44.564166626262633
-01144  -72.5906724999999966    42.1022009999999938
-65702  -92.4974588842652707    37.0922536033810104
-08887  -74.7935450308748528    40.5242583224699828
-39574  -89.1273560468944623    30.5974890693871338
-74304  -94.8126056666666699    36.6524550000000033
-73647  -99.1745046949404951    35.4017842514881096
-74430  -95.6571938795180756    35.1249061566265013
-84684  -112.995962600000013    37.0064068000000006
-71345  -91.9680654226803824    30.7402989793814392
-28716  -82.8400791849141456    35.4993775529112625
-55066  -92.5447064837514688    44.5356451094899626
-89106  -115.163372006849272    36.1838595916847439
-42101  -86.4682591098172537    37.0468778008420188
-34605  -82.2301968333333377    28.4787325000000031
-08757  -74.2536933196819717    39.9706083008520849
-67953  -101.828434357142825    37.2427440267857222
-44093  -80.6070201961745454    41.535631671897967
-84053  -110.020399967266712    40.4380033617020871
-62016  -90.4006359634509664    39.3000332636309011
-56325  -94.9509334858757228    45.562398214689253
-87045  -108.054462454884245    35.3720970484712538
-14891  -76.9217661346301469    42.3765720940078339
-24818  -81.6209845640432121    37.6049415223765422
-68781  -97.8280885787006014    42.0102438801071187
-50226  -93.7045126613072341    41.7753001205910692
-13743  -76.3373006779853824    42.2157928638556825
-56319  -95.2663361818739958    45.9949363831028322
-87048  -106.62294277045622     35.2392690216028015
-97199  -122.410256333333336    47.6551520000000082
-20661  -76.8825282666666823    38.3597862000000092
-54867  -91.2222701323056953    45.7617849884392385
-83213  -113.305449609292467    43.6319924551214271
-96793  -156.506972916091314    20.8966600932915902
-28757  -82.3038074247065765    35.6457776140887646
-45231  -84.5404687314028536    39.2444067309868174
-16033  -80.047304726240597     40.7929477180407076
-11558  -73.6542670307591578    40.6043854522251593
-67860  -101.276339093023196    37.9570466699463651
-07091  -74.1887629999999945    40.7505270000000053
-95569  -123.905882769792996    40.3780244007308156
-31009  -83.020482061283559     32.3083184782607802
-02771  -71.3209245022804765    41.8386923243159288
-45817  -83.8940829054035504    40.8842833104407219
-37408  -85.306686222147377     35.0303880676539805
-95374  -120.866082224112063    37.3421186263131375
-33773  -82.7619046665994915    27.8809397227364322
-13318  -75.2580744453125163    42.9288597010416595
-72562  -91.4197061206236725    35.7399052910556634
-29370  -81.9716693134422059    34.3821789425250444
-50068  -93.4648879130998154    40.9382949079117893
-25025  -81.4219688774703343    38.3112178142292308
-79095  -100.216112693670738    34.8569831914557184
-94972  -122.933621834688395    38.3170062249322783
-84005  -111.98782217354271     40.350138585200213
-73093  -97.492229102206494     35.0942249808565521
-31016  -84.0962763553061876    32.8601191975509792
-50478  -93.7775991468346746    43.3924169732071974
-87753  -104.983273069306961    35.818808673267327
-19316  -75.8322487534246648    40.0580875890410937
-57040  -97.5913546927711337    43.0652502891566371
-34488  -81.9288396076046013    29.2068257164449392
-08033  -75.0397374882767849    39.8946193231810895
-61564  -89.6546647797468523    40.4937901215189839
-01569  -71.6342588443413746    42.0634426645353656
-14125  -78.2733911519529073    43.0851436313537519
-45409  -84.1885479643269861    39.7227466651321635
-27939  -75.8785681618570749    36.2368728021749007
-03607  -72.2750808456873415    43.1907997688678478
-17220  -77.7416523240290616    40.1808000521844235
-19422  -75.2804082736869447    40.1584922230424368
-67480  -97.3833659395127285    38.9320712628371695
-81006  -104.523679494718493    38.2409789728847755
-50160  -93.7411310226244154    41.3741918280543146
-78953  -97.3467001253633128    29.8819891054379383
-44285  -81.0697992222222297    41.1599007777777857
-15340  -80.3135338534048202    40.2880344170870259
-60649  -87.5714267369603476    41.7615126438943278
-16427  -79.9701303116882798    41.8752095324675295
-90068  -118.331563119275302    34.1201228926317839
-46175  -86.9744924196977678    39.8251843293829353
-18846  -76.2425586888372067    41.6032370060464345
-19953  -75.6936441867041054    39.1521568102311051
-24566  -79.2600968391195835    36.7215136502963517
-21038  -77.6673273333333327    38.6199916666666709
-65473  -92.1235437467432234    37.7797945513287701
-28266  -80.9172989999999999    35.2301146666666654
-97125  -123.193609379254497    45.6591524059967568
-36108  -86.3703132835466079    32.3454536190583894
-72952  -94.2922496127256551    35.5634891823521215
-02777  -71.2126045600797966    41.7497720034630362
-28761  -81.9028665003426397    35.6719667937603901
-49249  -84.4363361294137746    42.0545531873370138
-25964  -81.3117570625000212    37.7441258437499982
-31216  -83.6947189454414939    32.732981641152044
-84535  -109.302000152242641    37.8776660625492028
-48094  -83.0367565439513697    42.7325172895905965
-16430  -80.1590745353535254    41.9727161010101
-78537  -98.052745029643873     26.1879482312251035
-84720  -113.113865094443867    37.671330304289981
-32708  -81.2764369383705088    28.6827545268036488
-79719  -103.394774991341947    31.4621991991342185
-54971  -88.8384938820905461    43.8712512534523995
-10927  -73.969033220451422     41.1964679614873646
-14569  -78.1618663731396452    42.7406214860564901
-75448  -95.7990132195995159    33.3159059663804911
-95212  -121.257835837698309    38.0328372096829526
-35582  -88.1122890367700364    34.4533705663301433
-44455  -80.6068089451645307    40.776697744516369
-27921  -76.1537730071017194    36.3343645164226672
-39156  -90.7954714115487889    32.5078051792389431
-14201  -78.8849860862341075    42.8970745015822246
-84640  -112.377380290983567    39.5103877172131064
-25180  -81.4249012064677231    37.7916916666666438
-31745  -84.8857250555555538    31.0047078703703782
-66048  -94.9515602405851666    39.2919105348486966
-43433  -82.871826541666664     41.5039689166666719
-66095  -95.4358675747277516    38.4674783968987057
-22524  -76.6975826333333117    38.1368016333333273
-60191  -87.9790041720766709    41.9630035577661147
-34661  -82.2623500497925022    28.6448484232364962
-85715  -110.829302920715676    32.2484156388890213
-07435  -74.4466388409594657    41.0472331590406085
-31822  -84.8908049149831356    32.8667420644068855
-65541  -91.7683964865470614    37.6378421165919477
-26056  -80.5801991382978855    40.5323298297872512
-71659  -91.7870270312500054    34.1433417187500012
-82443  -108.300651448588908    43.7250563017623648
-03753  -72.1267307482763727    43.5140482301598936
-85307  -112.309087651608607    33.5305248121546526
-66533  -95.9480865629899426    39.1576318571428672
-74729  -96.2759290021674161    34.1356227685305598
-04735  -67.8382126047059302    46.4244099505882346
-13455  -75.3550004000000087    42.9137811818181873
-18092  -75.5207496201027766    40.4691746160886865
-45159  -83.6912891231195744    39.3215089137412903
-95925  -121.206818282392035    39.4720171004982632
-14069  -78.6420660920097987    42.6032092046004891
-63043  -90.4457337196721198    38.7225964773010674
-29303  -81.9631392296736152    34.9886250096933509
-80631  -104.695591599072301    40.4247337927101569
-49050  -85.2472864435721362    42.4995964465161506
-57224  -97.1347058421052623    45.8405970300751733
-05786  -68.1567256666666594    46.8216466666666591
-56440  -94.9578889099496308    46.1381598991567046
-98342  -122.52281398096514     47.7513176743711654
-92870  -117.855342745231908    33.8825452909053482
-43420  -83.1130641286122511    41.352903558284801
-02053  -71.4302490925123266    42.1533553796552454
-96791  -158.12824044897954     21.5713345306122442
-49028  -85.1907475077289575    41.8461008843848248
-30339  -84.4681290756928576    33.8661739414978769
-80533  -105.194201115384629    40.206274461538456
-54835  -91.2483913098564869    45.6909940883825385
-54552  -90.3058581182291533    45.9719294392369022
-14853  -76.4848716347825786    42.4491148260869693
-58847  -102.888676103559874    47.8770993074434159
-46143  -86.1315418481016479    39.594825962320563
-20199  -77.5244162222222144    38.7797231111111103
-98205  -122.124722545335132    47.9756660078844632
-28147  -80.5534408162255602    35.6735147347784931
-62202  -90.1598809999999986    38.6162729999999996
-14632  -77.6156620000000004    43.1065585000000056
-17584  -76.2706320077052453    39.9604047092127033
-24924  -80.1413343887376044    38.1861256130790139
-52215  -92.3951556635796578    41.9080037594350614
-77511  -95.2534179571791242    29.4115119207115541
-38520  -89.4412355000000048    30.2565719999999985
-72105  -92.8681475945946033    34.4472131351351223
-92260  -116.384712679081005    33.7210356905905684
-13325  -75.4823890748685074    43.5626085993524299
-60461  -87.6919603009340278    41.5174575977974456
-52621  -91.5217521973269896    41.2051543942610579
-98439  -122.526196198384099    47.1281411337522513
-62656  -89.3684304877059645    40.1465124874349328
-84115  -111.889147776065982    40.7156151285399091
-35487  -87.5337216315789419    33.2165123947368386
-29647  -82.1632221999999928    34.1788454000000002
-50169  -93.3466732416880518    41.6593972502131464
-31808  -84.9997490134332594    32.6350078057056621
-11210  -73.9463079943532478    40.6277848613961865
-71373  -91.493118149438331     31.5276260294382702
-20139  -77.7061245560000344    38.6594108200000335
-46617  -86.2355584455465731    41.6850928988295308
-27510  -79.0810276783074215    35.9146330522559651
-55965  -92.1084834740041458    43.6523098858113769
-79702  -101.956060000000008    32.0597095000000039
-31380  -83.731998395833358     32.4912327291666756
-78109  -98.3124471108800861    29.5028446980651644
-52551  -92.1040816777513243    40.8187998043551232
-92704  -117.906215524354124    33.7238954397856432
-38771  -90.5466837158376734    33.7388752355631496
-77322  -88.5459993000000054    31.5779356
-98589  -122.842473381766652    46.8580841401711439
-54469  -89.8653821071663543    44.3482717896121699
-27580  -77.9775376470588242    36.4572943725490219
-72052  -91.8724477952756473    35.1313972834645583
-08068  -74.6776397250167037    39.9670559570007242
-68319  -97.755714496978996     40.9049360679758465
-97053  -122.872644885587107    45.8223794466566261
-18413  -75.6013016210526274    41.6392698842105204
-24546  -81.9162057499999889    38.3081135000000046
-48081  -82.8998872747953328    42.4958800285108467
-22553  -77.6230375032874633    38.2457766054245027
-53515  -89.7507680064990296    43.1197413336111239
-17331  -76.9759039823801459    39.7941588068729644
-35458  -87.7999521681818322    33.3187694545453823
-47408  -86.4812403614844243    39.2112718768342887
-62914  -89.1810114107142198    37.0130164297820841
-45318  -84.3588879044299063    40.128850068187873
-21623  -75.9723635591483628    39.1266341606860735
-89033  -115.139862375000007    36.2658113124999986
-10574  -73.7974223333333299    41.3585293333333368
-21875  -75.5587933875047071    38.4419385711000601
-42647  -84.5527766348869392    36.7113352083127324
-17352  -76.4935173722742405    39.7685736721184071
-05408  -73.2533879242700294    44.512124087591225
-78949  -97.0603670987652691    29.8173395586420504
-60178  -88.6853127725279933    41.9957664832165918
-23035  -76.3718504856696256    37.502979804361388
-50581  -94.5388916035270768    42.8395518767818331
-91906  -116.456816028111817    32.6592218074341005
-64116  -94.5747105581027512    39.1585913592321475
-59934  -114.914173293020966    48.6688871792542344
-79452  -101.816150750000006    33.543725000000002
-59440  -111.172854867285778    47.7119923587008756
-88211  -104.424355358974339    32.8193673076922963
-02833  -71.7757617741935832    41.4732394940577578
-21204  -76.632245975557808     39.404051851876666
-66739  -94.648856762778621     37.0770978082015645
-58630  -102.566212116792286    46.8564708196986004
-39521  -89.3945601764705913    30.3610232352941161
-03830  -70.9943265073370071    43.6294771562499832
-45717  -83.844517416666676     39.0664335833333283
-99321  -119.932376306074829    46.8432392733645244
-72275  -115.970851399999987    33.2692382999999978
-75942  -94.4285400105263477    30.8197631842105118
-47431  -86.8940819184944502    39.2372046547124924
-50959  -93.0838430000000017    42.2864985000000004
-15952  -78.7727602438017271    40.3010590066115455
-06762  -73.1196941352131233    41.5289846170828838
-46105  -86.8041558073792601    39.7633968038168888
-44144  -81.7360850181931937    41.4358490407030615
-78060  -98.1047892941176656    28.4511454411764717
-80440  -106.032521443884406    39.208663911766962
-32940  -80.7015385100285556    28.2272688275844281
-61454  -91.0650810939597761    40.6802265100671292
-13676  -74.9364598082887312    44.6507052906158819
-28379  -79.7637547577230919    34.941898543576734
-25913  -81.4719032500000253    37.6969387595238103
-95334  -120.732497885883717    37.3762014357713781
-53189  -88.2533710775705771    42.9746005659261101
-65787  -92.8733934836469075    38.0699032012881347
-84579  -112.384542624999995    37.7090368750000025
-99348  -118.451658447257387    46.3501135000000701
-35046  -86.557034607161583     32.8991633114669355
-61772  -89.0644944512921626    40.3941319264413252
-37207  -86.7762484543390116    36.229401432583721
-21661  -76.2265154092860087    39.1381885362319508
-29434  -79.8619099711118707    33.1401471279811446
-95745  -121.721736500000006    38.7923139999999975
-70364  -90.7137911856235064    29.6327018277980443
-48845  -84.8518176214099782    43.0994464151436318
-59326  -104.904256308599571    46.8257147498771786
-27104  -80.3244351571120774    36.0950432518196962
-72829  -93.3712305514706031    35.0186397058823502
-38614  -90.5798499353340389    34.1908229627071663
-95432  -123.673584579802764    39.1378123093441914
-13426  -75.9856855378151437    43.5673114537815067
-61637  -89.5940763437499896    40.7002630000000067
-89165  -115.06107775000001     36.2754452500000042
-14824  -76.713365541666704     42.2684445533536817
-53920  -89.6197671204379418    43.6620592518248358
-63608  -90.5501735909090826    37.9918551363636396
-73350  -96.5840149999999937    34.4335894999999965
-70049  -90.5577428167177345    30.0397230046012922
-85235  -110.764581222222233    32.9995730429292919
-12144  -73.7167529999997697    42.6368351492031863
-35980  -86.369264627134271     34.1816622645334789
-17222  -77.5207609461504603    39.8920275662362585
-99724  -147.411903907563016    66.3609469999999959
-79259  -100.4333743402062      34.3782521030927839
-51026  -96.0674972257162096    42.2646465492662458
-83535  -116.718201833758215    46.5403573442121115
-74471  -94.867766198273614     35.8193965986106662
-84947  -111.591274999999996    38.3993334999999973
-63448  -91.5416827696698903    40.0327199114847545
-68447  -96.0850868240418521    40.1896067351916528
-35584  -87.0855315150214011    33.8234343605150301
-49328  -85.7586410563757795    42.6317999494407047
-21634  -76.2087240608247072    38.2999104185566779
-57623  -101.623534639560361    45.0989608681318543
-34272  -82.4500472000000002    27.1363957999999954
-74477  -95.3769385714285818    35.9579392857142821
-81365  -108.065598631578936    39.3759541052631548
-22812  -79.0130606674675846    38.3852432356348885
-66064  -94.9721673796402399    38.4830363743906574
-28677  -80.9189422213488712    35.7491822302042053
-20716  -76.7280189657304419    38.9271325048883341
-36430  -80.7464224999999942    38.9118139999999997
-31799  -83.9975220869565362    30.8216825652173831
-87063  -105.992751174285644    34.5715386628571153
-06263  -71.9072366722689225    41.8404547394957973
-04061  -70.7308424472933552    43.6416415652421534
-84903  -111.84376675   40.6046954999999983
-83555  -116.691625437689964    46.1722713884497935
-02152  -70.9804808873355739    42.3755089952474719
-01850  -71.3052158782515448    42.6554481181359222
-56364  -94.0702689233550586    46.0035949481705586
-97712  -120.344227994219594    43.7445552658959542
-11520  -73.5865249341593568    40.654150407079598
-49242  -84.6312005091057671    41.8966648726561175
-07640  -73.9798525564852127    40.9915269702464116
-07344  -94.7905418846153793    36.5772824615384593
-75054  -97.0497849626903957    32.5926707954315162
-74873  -96.9747985831665176    35.2419066592598966
-97525  -123.065306765787952    42.4400161710585806
-78411  -97.386572372557751     27.7314958021145124
-62861  -88.05055169536422      38.0361005099337817
-41519  -82.3232139744792306    37.5888940661457909
-95062  -121.98853473263577     36.9722571526716592
-32409  -85.6510294542582784    30.335411270958236
-29819  -82.2101678016349098    34.0445516417803304
-54489  -89.9879599141829658    44.4589979515259799
-49677  -85.5307127629965862    43.9037980204586518
-18622  -76.2600924044750741    41.2026221118760674
-12460  -74.1609787402777698    42.4145009277777874
-18335  -75.1058073345521251    41.0697085694698103
-59840  -114.163634388979517    46.2150820044665807
-58838  -103.932002554347804    47.8076131666666697
-30475  -82.3731736949152236    32.2039506779660982
-68034  -96.2078421493506255    41.4555952708719175
-64113  -94.5952119584906654    39.0129654064690712
-03809  -71.2192151066799255    43.4647913330010667
-49250  -84.6343932464110082    42.013191079874737
-48855  -83.9129771277433321    42.6686941664836112
-07648  -73.9548745606909108    40.9940949837480844
-25852  -81.2174610000000001    37.6646276666666679
-28519  -77.0209451099656519    35.1224663951890008
-02661  -70.0399982795698861    41.6759607849462412
-59713  -112.607512510994681    46.606948863874301
-63301  -90.502807258762644     38.8094896902544946
-73170  -97.5418590341186302    35.3367461648521157
-77983  -96.680586460479887     28.4069485163193178
-42086  -88.7673180490720313    37.076455724770554
-04903  -69.631007666666676     44.5522316666666711
-78643  -98.6697610935498659    30.7187273456748429
-15003  -80.2172365365479862    40.5969716793834152
-98113  -122.354413352941151    47.7642428823529244
-26289  -79.5155466708074385    38.9892677950310684
-32830  -81.5526752554162897    28.3738727274800411
-31713  -84.7232525652174076    31.4414670434782586
-59226  -104.445907972904379    48.3366310355631157
-12778  -74.8141952980391949    41.6605132261437348
-45697  -83.6609208565539291    38.931625351421971
-54830  -92.2278254100686894    46.0192631833777668
-77444  -95.7796843463414405    29.3180213209756424
-46540  -85.7040875695705324    41.6803298361599133
-44135  -81.8057792079301862    41.4339570691526973
-64161  -94.4664069326384777    39.1619922381715853
-47596  -87.2345825061349416    38.858075769938651
-16417  -80.3156535496821959    41.9821962150605117
-40223  -85.5523920282550847    38.2565070677340131
-94707  -122.27838508259039     37.898252730887279
-60969  -88.1466666805554695    41.1087278055555529
-85281  -111.932075631887542    33.4250640577784566
-71678  -91.8155751999999978    34.020975
-37805  -77.1948990000000066    36.2537592857142883
-61710  -88.9551629047618775    40.4767435476190585
-45505  -83.7780884560405212    39.9094232180025017
-33178  -80.3690894111210952    25.8331573436771151
-47966  -87.4059713796993236    39.8843582631579068
-83349  -114.173591892665442    43.0771780411448617
-64426  -93.890773510838045     40.5085099707088432
-84094  -111.862229604947103    40.570871084098826
-60476  -87.6075044891233148    41.5717431476598378
-08093  -75.1315951876341899    39.8585738702645216
-23009  -77.1739795309811996    37.8027069707106094
-26218  -80.2866097955328115    38.8572490324660791
-68374  -96.605534666666685     40.2035925053763279
-76527  -97.7866461946448595    30.8379694783573157
-07830  -74.8149460323694484    40.719515807760267
-74859  -96.3277438137205451    35.4382344609413806
-17041  -76.5392024890511209    40.2196882189780993
-44870  -82.7120818772295223    41.4293296749076347
-45881  -83.7804797086860304    40.9576768841871086
-19035  -75.2823634092766696    40.0462799066510797
-01886  -71.4375393804260881    42.5893866237949439
-89081  -115.111854697311259    36.2599178674416009
-87195  -106.773608090909093    34.6289982727272729
-27377  -79.5992095666481703    36.0447126951377115
-73553  -98.8326788750000134    34.3709921250000008
-52732  -90.2207111115575202    41.8730519357855826
-14422  -78.0651953938898799    43.0793960976541399
-17323  -77.0282573870967724    40.0762648064516256
-02804  -71.7760977891227441    41.4315009936842813
-33569  -82.3051381161810411    27.8437605868931612
-77485  -96.0492015375840538    29.6352262257388936
-32504  -87.1852522290667906    30.486104455048487
-44216  -81.5800406055362544    40.9352495439182462
-24477  -79.0325347061066452    38.0187415459207259
-32303  -84.3292135925894257    30.4919490452039668
-54610  -91.9005459328215721    44.3349030825336214
-96002  -122.330559066758667    40.5429023431236502
-29274  -80.5050574999999924    33.0505124999999964
-60150  -88.880075984413196     41.9207743672674056
-35403  -87.5365777222222334    33.1881959444444377
-33924  -82.2049979454856583    26.5582586899488859
-20002  -76.9907675924543184    38.9035429382349704
-37580  -85.6764537499999932    35.0034762499999985
-30522  -84.345090833150806     34.7930891150228518
-70341  -91.0664929829912779    30.0253437063532154
-77460  -96.3967281308411117    29.3965744205607464
-18966  -75.0051355917454288    40.1894709024339107
-84626  -111.963332105555565    39.9665551777777637
-76103  -97.263954636126698     32.7493330875947066
-52272  -91.1213245000000001    41.6609650000000045
-25008  -81.3495135345996658    37.9375047883310756
-95121  -121.808953980860196    37.3048605869358596
-28827  -80.8243046000000049    35.0828829999999954
-79707  -102.156500902182088    32.0239870147551926
-82432  -107.935142665280665    44.257476324324287
-17304  -77.225116261515268     39.9743031830985487
-75859  -96.221159918554946     31.8952385729461696
-92710  -117.815670486486482    33.7115028918918895
-72924  -94.3973594235294371    34.9065867294117567
-28108  -80.6742903437499592    34.9354749843749914
-77832  -96.4174745714285706    30.1618901428571426
-75216  -96.7938904131067375    32.7097430903384705
-98103  -122.343594614346131    47.6709025232034378
-04619  -67.2538382797696528    45.1663455247315966
-64167  -94.484812044354797     39.3190563306451821
-53412  -88.0203223999999977    42.495215199999997
-49633  -85.2138625373269321    44.564550600307804
-48207  -83.0239397386690712    42.3522290005396869
-58789  -100.820933523195961    48.5586987216495132
-30811  -82.2332292500000079    33.078863041666672
-98576  -122.672493631429305    46.8778982033656391
-16111  -80.2862497567009257    41.5178544840205888
-93440  -120.286094309933944    34.7474046847681706
-74947  -94.5039072999999945    34.9937323999999848
-71801  -93.5931291784707042    33.6539585926440381
-14819  -77.4410473259881371    42.2182894014906722
-74347  -94.772654505803601     36.1817148912295963
-98611  -122.901483312437122    46.2875751703151579
-88242  -103.153402824843837    32.7889522344355271
-92041  -91.4635198750000029    34.7903882499999995
-99135  -119.09873512032901     47.6524782922271655
-02739  -70.8123363299396402    41.6612846495449674
-02925  -71.712075258064516     41.8303237741935519
-33388  -80.2540474000000046    26.1206572000000001
-14830  -77.0387377207104151    42.1299850205133311
-24898  -81.5880088114754187    37.6032551803278778
-46062  -86.0587079500353411    40.058103086833178
-31750  -83.2480373140432022    31.7256958063172014
-34753  -81.891192186984        28.5794318348199248
-28618  -81.5154170294439666    36.207812549431317
-85656  -112.934392666666668    34.355355666666668
-35083  -86.6014306268311742    34.2004946613339769
-77370  -96.5766035000000045    29.5301089999999995
-90012  -118.240319458426129    34.0629184090474055
-10573  -73.6753996289253905    41.0149838726940104
-95210  -121.297395106721524    38.023052038432084
-41531  -82.2324309014259001    37.5994471146931417
-25593  -88.0475213636363492    34.3866958181818134
-89427  -118.800317870967717    38.9450666532257941
-95682  -120.959671863377423    38.6451802385391332
-52536  -92.6076751746736164    40.9597962509138327
-29662  -82.3059883781650825    34.7760702236434582
-33851  -81.6272991428571686    28.0449865343915334
-20115  -77.9025339786377629    38.8152752062550164
-99171  -117.628276151405274    47.1000259579934948
-14411  -78.2078604903028634    43.2346967477529347
-00720  -66.3979026580882703    18.2110437279411634
-33625  -82.5564217742035567    28.0676926413546468
-13337  -74.9827387819173481    42.7446969909131553
-41603  -82.690157577918967     37.5580999677577339
-56360  -95.1248811225402022    45.8816673234001939
-80452  -105.568536713181331    39.7411390086667495
-95453  -122.921631182476673    39.0532731299956453
-30608  -83.4945254999999804    33.9913258846153781
-98859  -118.927113321407489    48.8103899758497377
-12452  -74.3625854217142432    42.2367537371427701
-45732  -82.0722086841858385    39.5103244361466324
-99029  -117.815837029299985    47.7134046291373153
-47404  -86.5736399993304389    39.2102529541172231
-98235  -122.425879098314624    48.5319692752809004
-74253  -95.0792414999999949    36.1614505000000008
-33957  -82.0890086623645345    26.4491167023856448
-30605  -83.3307620321288596    33.9147593461668464
-43347  -83.6609296126435993    40.4733785459770843
-75573  -94.2536738333333091    33.3647681153846136
-48221  -83.1502691147455124    42.4289425129802709
-22719  -78.2810333522523365    38.5214815067567926
-02659  -70.0224657076853987    41.6806548151875091
-54008  -89.6005790000000104    44.7144168000000022
-85080  -112.126050600000013    33.9162007999999986
-27511  -78.7839424402286141    35.7635084118480506
-32338  -82.4584192000000087    27.2356267999999986
-25696  -82.0775056562499969    37.6603727812499969
-02713  -70.9337033522267575    41.4204627773279412
-74044  -96.3850120751128969    36.0979868256194152
-59471  -108.890812774005724    47.3477251183316525
-45429  -84.1612286538892675    39.6848950173160802
-29209  -80.9337148311049503    33.966809178635458
-82938  -109.560231325555577    41.1895997299999621
-65257  -92.5232507231060879    39.2764196447399883
-73085  -97.7517789298245674    35.4872856140350876
-68367  -97.3456576035502508    41.0183370443786117
-31777  -84.5310984999999846    31.9289072469135817
-68665  -98.392105963761054     41.7156765484818663
-98951  -120.462825648177812    46.4517623910582671
-83116  -110.533204464480917    41.7735183442623068
-60973  -87.6561999336824442    40.5392000942408899
-93110  -119.767754849201751    34.434979302594158
-38338  -88.8500556097561116    35.8689865243902375
-77456  -96.1035821273584929    28.9603106981131546
-62850  -88.5930648941176173    38.5031839529411641
-90272  -118.536467237920519    34.0508489824881266
-80497  -106.091685617135141    39.6845256894243548
-12139  -74.5493346751893284    43.409943397727254
-23845  -77.9983643550724537    36.5657206304348179
-48216  -83.077856810283194     42.328228131526572
-43178  -80.9737306666666683    40.027005370370361
-47634  -87.1878175839148071    37.9342272765694872
-88009  -108.534203776435035    31.9197355287009046
-10512  -73.6974446520967774    41.4449992514535666
-16328  -79.72559265853657      41.6521043658536456
-25916  -81.4916720888888761    37.6808144111111218
-98119  -122.367148317730567    47.6396347688286781
-55969  -91.8532712382198184    44.0898892031412473
-98059  -122.131659531118487    47.4945749111607398
-77055  -95.4951071603239967    29.7967289674057412
-98556  -123.141006666666669    46.8837176666666764
-98937  -120.900078087194984    46.7534145994103767
-06415  -72.3464107867639257    41.5552288800806764
-53045  -88.1500326151636386    43.058987820883317
-03841  -71.1781675307429254    42.8833950509883195
-73543  -98.3672397860038785    34.4848787271805435
-81131  -105.686505135402768    37.9584465506385484
-75654  -94.801892759137246     32.1007524242002091
-03814  -71.1659750670135196    43.7713593092595659
-17518  -76.2474058361315628    39.817523631021956
-23850  -77.7416299695819788    37.156847607889695
-92383  -117.096989000000008    34.206944
-66970  -98.0359806119402748    39.9340001492537198
-15565  -79.0432881862744807    39.7492545098039187
-85648  -110.98845960329173     31.4775537288125804
-12459  -74.6774023527324147    42.2358489524485208
-68432  -97.0048167500000034    40.9012730000000033
-12061  -73.6739007321078816    42.5971027108691018
-60934  -88.355691015592484     40.965915139639705
-73541  -98.213601340500162     34.798925983764903
-30662  -83.142516319660416     34.2681841255950133
-45735  -81.9320551223645452    39.2474238470445727
-39296  -90.1718143999999882    32.326453800000003
-23304  -76.5751438022599444    36.9940334632768426
-48894  -84.795700958250606     42.9304368270377665
-13324  -74.9757516016521635    43.3146230447198022
-28296  -79.3812537999999961    34.893768399999999
-91302  -118.662835065836148    34.1377248195959453
-72718  -94.2235440814332463    36.266558556188869
-32724  -81.280021457923624     29.0402760850419313
-80722  -103.272487049620466    40.5380739725627919
-12942  -73.7839420566571533    44.2605330730248241
-07052  -74.2614614281921774    40.7877405348220208
-77201  -95.3652555000000035    29.765194000000001
-24271  -82.4252370025726719    36.7524000158749473
-02052  -71.3025941014387854    42.1836689677040368
-45644  -82.8548115048492093    39.4662360751697747
-80525  -105.05297446716672     40.5272394626408357
-62093  -89.854230609999945     39.0694628599999874
-78414  -97.3719303073019518    27.6659609776382709
-62664  -89.7184168778491227    40.2119272937852443
-01028  -72.5024057453321689    42.0637392392438088
-64780  -94.0343107365898732    38.0606323687739589
-45154  -83.9260754401772715    39.0480959466556712
-49083  -85.4476915938662529    42.3787726117101826
-88339  -105.503785925532341    32.9000779979541136
-29126  -81.4235096590252851    34.3128988775429917
-99691  -154.377776899999986    63.0173846749999811
-33597  -82.107637274615783     28.5767694307299926
-67050  -97.6773762306350903    37.6609178050478164
-54531  -89.7554999421604407    45.7719363661751615
-80721  -102.159278022889865    40.6766797110157441
-30033  -84.2831523529919764    33.8153235309943341
-55782  -92.2430297413534248    47.8278694045112616
-87120  -106.709949742386172    35.1381041778476657
-75974  -94.2440325879074834    31.92776355300375
-39202  -90.1775722413431424    32.3138343773466943
-65663  -93.2460868091787063    37.6257689871980858
-44511  -80.6975818871569146    41.0692576703972918
-16652  -77.9841766452312299    40.4963751116434807
-24437  -78.9317338796598875    38.2130072524526057
-86331  -112.111915572262731    34.7495953897810068
-60411  -87.6088478870055667    41.5078540632745927
-14737  -78.4320144114208091    42.3307435387102586
-85085  -112.09862580054218     33.7527135605276101
-30312  -84.3773071993975066    33.7445265472473324
-65043  -92.1091882822829291    38.6335107560053999
-46755  -85.2667723251865937    41.4511891348494359
-02460  -71.2078163091512408    42.3509457191347423
-65614  -92.8988635393909163    36.751272518382379
-08248  -74.658192429319314     39.1961109790576003
-52619  -91.5661233335860629    40.5246210379506522
-75151  -96.4849853199999785    31.9638299199999949
-62635  -89.4826445067713507    40.2955316321537182
-75682  -94.9460791690477066    32.2310503309523355
-71046  -93.9506911834101999    32.1691158198157154
-13730  -75.5347810065553915    42.2343886801747743
-84041  -111.98207323935722     41.0709978014269765
-66058  -95.5237722967837044    39.5472110964912176
-15460  -79.910784640000017     39.8061363439999951
-99783  -168.092563615384591    65.6108515230769314
-47720  -87.6362967041266643    38.0444237477163014
-57234  -97.1285996748110847    44.6532435452606578
-47117  -85.9672383785604382    38.1098626222732477
-16843  -78.4655994391534506    41.0026987857143155
-62351  -91.2740088550077928    40.1100936253276714
-17219  -77.6923984936424858    40.227315735976056
-48623  -84.1292562540323274    43.5157764729839585
-13681  -75.3779931921234549    44.4255398105375718
-38389  -89.1205026790123469    36.0973292592592614
-36579  -87.8335134372841111    31.0797834479012245
-48911  -84.572595171280355     42.6802370734360537
-36020  -86.3314189286360545    32.5040657335139898
-54762  -91.9920891791044539    45.2497937216244708
-63203  -85.8893360000000001    33.586820000000003
-65637  -92.1945368407604491    36.7414664747475612
-56265  -95.7068613436820073    44.9856459911294309
-97206  -122.599831921102776    45.4823258866627711
-98292  -122.313986057846208    48.2126769683529375
-13697  -74.8181514950841802    44.7452672131320881
-48607  -83.9330470848276207    43.4317654696552609
-23664  -76.2940816952925047    37.0624477889780906
-37212  -86.8012090385513915    36.1337858627410924
-32967  -80.4567926437442082    27.7097069378107221
-65010  -92.2557239746258233    38.7827951827739668
-13490  -75.4218954473683283    43.1063558322368152
-80752  -103.230916250000007    40.6291615000000021
-26376  -80.471243824782178     38.7820544883834373
-99827  -135.484531009039046    59.2467556674595954
-95943  -122.022360517699155    39.5949932529498838
-82923  -109.63488713723288     42.7127275821147236
-13134  -75.6842531071428795    42.9677913928571442
-58770  -102.114700599868527    47.8484744116294465
-76048  -97.790054969528768     32.4260675092764856
-74338  -94.6781547392702407    36.2520591400321877
-87001  -106.421113639335388    35.3933096811360883
-12188  -73.7027824643495393    42.8171941887699461
-47971  -87.2371260755980842    40.5259723126794782
-18615  -75.8599204129870941    41.4590324238961259
-65802  -93.3167696394450559    37.2116342033114549
-54534  -90.2061827508593268    46.4086498185136804
-32766  -81.1252106690943862    28.6417407865308071
-47146  -85.9015998529411746    38.3354343235294124
-93719  -119.738434499999997    36.8648524999999978
-69041  -101.741811202166076    40.1424364386282022
-87320  -108.762181249999998    35.8522339999999957
-75975  -94.41362931021105      31.8937807231644683
-98939  -120.468489297297268    46.5009488918918734
-52585  -91.9863268768588966    41.193935284354481
-12185  -73.5318799620880412    42.8874537620297716
-22472  -76.6303839999999923    37.9499035000000049
-30671  -83.1694027158469851    33.7515021420764967
-21838  -75.7421854577463449    38.0229521627842573
-55071  -92.9903442328825349    44.8339427654268476
-85139  -112.117121782571502    32.9651275436877427
-05478  -73.0994064992193415    44.8011282381880989
-81369  -107.13271446511628     40.5192226627907104
-40803  -83.4221077807262645    37.0240241354748392
-97089  -122.449137970546346    45.424677493842502
-81615  -106.939730518266657    39.2157882867220025
-00732  -66.6299918723404119    18.0453872127659558
-83961  -116.582365750000008    47.3162942499999986
-39066  -90.5991424083167232    32.3014015875252696
-93645  -119.629579378008742    37.1793403774617346
-41004  -84.0976916340068641    38.6569029047394253
-29113  -81.1251300575666363    33.4446968398375617
-99791  -157.420918308943129    70.4811686178861549
-72133  -91.6301173894736962    34.1945438842105318
-27932  -76.6201747969711278    36.102207822275389
-35960  -85.5871931179732428    34.1368107792734321
-00784  -66.1224080415865529    17.9829563257605258
-18054  -75.4373389202072104    40.3523192097691918
-52563  -92.2854169552590662    41.1639391478097849
-76630  -97.2338256207770542    31.3467855371621766
-00792  -65.8465101999999973    18.1742194000000019
-17307  -77.3096239932050509    39.9376603626270921
-19535  -75.8018379062500003    40.3362303750000066
-54870  -91.7421221210525744    45.6809498473683817
-04352  -69.9634016301177724    44.4658397084870813
-25221  -81.9920875384615471    38.2377663846153837
-56084  -94.4446303124999957    44.2734508437499983
-87940  -107.067559297005999    32.6584859616766536
-84311  -112.117298018499469    41.8158163658786748
-05820  -72.36003687882733      44.7424817977577334
-38453  -86.8044097654553042    35.1216539201948237
-01022  -72.5577372598822024    42.1936969007568905
-12953  -74.2778905875048423    44.806841536243553
-77451  -96.0008834062499972    29.4492814375000016
-89104  -115.108928299839661    36.1517788691953399
-79252  -99.7822675875095513    34.3188495690054296
-98442  -122.399262999999991    47.2952624999999998
-62868  -88.2341700732876149    38.6975711919807992
-40874  -83.4644356124567963    36.9843909833910161
-26537  -79.7139005870508441    39.4803452092163809
-86928  -109.457066400000002    34.024712000000001
-55720  -92.502604083370116     46.7274836404998766
-62253  -89.294023267052097     38.7588702445086781
-02478  -71.1753586340107347    42.3932136327719533
-15617  -79.6602108571428715    40.2695720423280434
-62918  -89.0842688258836972    37.7708290421718829
-28449  -77.9091706673714128    33.9975574341085078
-95030  -121.984022015794096    37.2279093015505183
-93261  -119.108475225419667    35.798930318944862
-42033  -88.0845350000000025    37.2701352499999956
-25124  -81.7650483472868075    38.6280438614986821
-33702  -82.6430292476114232    27.8426111333587976
-75968  -93.9682647789629897    31.2645219720484562
-89413  -119.94322269870699     39.0635829163792678
-45760  -82.0964055048422949    39.0100451599010896
-78331  -102.051652499999989    32.8514059999999972
-56658  -93.9404709767441659    48.0958824186046456
-65052  -92.6911829579820363    38.0544672753709747
-00663  -67.0221634285714316    18.4535566428571407
-61862  -87.9541732257597033    40.2962073675832144
-62427  -87.6676065732701915    38.881630438673092
-48133  -83.4937858576678593    41.7659783979285706
-98325  -122.784695290628278    47.9779306818080968
-59917  -115.019002500523769    48.8834152971534053
-58046  -97.7592861554053343    47.2630201036037008
-37132  -86.3596928351648216    35.8458692857142864
-42761  -85.4431219090908911    37.0924385454545416
-07748  -74.1159689736405056    40.3984586328975652
-12404  -74.2361442148592374    41.8179632401110126
-02814  -71.6838051922162691    41.9006944730386266
-62831  -89.2243163269545789    38.2312645341717001
-19111  -75.0797175494376887    40.0594765271109594
-79503  -99.6984002074324707    32.876868684459474
-50101  -93.6181182715355504    42.6737982528089859
-17522  -76.1775619495871581    40.175213650102414
-68303  -97.3814470350877457    40.2440886188197808
-83333  -114.3136253468315      43.5437653244614751
-28779  -83.2135787006688332    35.3549309927122835
-76820  -99.0542722003709883    30.7415247198515615
-01083  -72.2004027480999468    42.2063402660151894
-27929  -75.9956763169230527    36.4271919958974664
-17407  -76.7146515394063613    39.8810107359263384
-62967  -88.7640356140109787    37.5804124739010774
-63675  -90.6787018596490952    37.2980121520467733
-35243  -86.7443202808205882    33.4434114243811678
-04072  -70.4523740224400541    43.5229914415190677
-24324  -80.784775738596295     36.9742210844513934
-44485  -80.8451242780684112    41.2409481788731398
-47847  -87.4826152181743879    39.8302250421612811
-25235  -81.0886727078125205    38.6746032515625089
-48190  -83.5964443466386058    42.1232600399160049
-77376  -94.6882566240768568    30.4442480494830185
-79080  -101.196782587686585    35.6298334701492792
-30720  -84.9868191197642773    34.7651531130693172
-21777  -77.5304002304347648    39.27967677282615
-23502  -76.2144833700329087    36.8538234352897973
-39211  -90.1301162766830828    32.3710669301223319
-05494  -73.009899622718649     44.6122634458778364
-62436  -88.2514992582197237    39.1838836351242961
-44638  -82.1361416911848607    40.6336900753064825
-30436  -82.2975636878282302    32.1669050497233755
-46759  -85.1854209786061602    40.5985997665036322
-13847  -75.2789257326732582    42.2001117029702968
-77011  -95.3083976698312654    29.7424922217827046
-30703  -84.8331630000000132    34.7618708000000112
-37232  -86.8019931428571425    36.1401322857142873
-04627  -68.6551376135682432    44.2177975666777456
-70711  -90.594051495095286     30.521512752194063
-32234  -81.9813999570478842    30.1975733665849475
-07865  -74.8919200368814018    40.7837079077966251
-73598  -97.5850313333333332    36.4398363333333393
-08832  -74.3005610176211775    40.5184930748898822
-74674  -97.8723077333333435    32.3091603333333381
-66016  -95.2322970532543849    39.4770381808959812
-56385  -95.2279349890416711    45.7094292173803254
-59001  -109.51478880619598     45.5194735823726617
-55082  -92.8350217682616403    45.0583539851589663
-97817  -118.760909941176507    44.684307051233354
-85262  -111.836351007318598    33.7889382012514545
-70538  -91.5374494790301156    29.7803013738000537
-04859  -69.1573495088888279    44.0044426572221781
-88350  -105.692804654772729    32.6288884732060183
-30964  -84.5428354999999954    33.9546475000000001
-39303  -88.6790025833333289    32.4117946666666725
-62760  -89.8864783181818154    37.2665498636363708
-69107  -100.768477000000004    41.0516633333333303
-87255  -105.657060999999999    35.5785471250000001
-04629  -68.5183234674329782    44.4188964137930853
-68450  -96.1945732468421113    40.3682432578947967
-97441  -124.11059440549819     43.7301255257731896
-06792  -73.3130398387096847    41.6347746451612934
-84724  -112.145783836392653    38.6782961979249293
-99324  -118.382509974383808    46.0439217960367984
-59074  -109.258826519287581    46.3464559701987184
-97536  -122.530249710188841    42.7508556664150774
-77090  -95.4480699742800027    30.013573432003831
-36726  -87.2999395676971659    31.9916889554015675
-29721  -80.7783367272727304    34.6975400909090865
-81220  -107.481900393739494    38.3277614717091168
-65439  -91.0876901776859569    37.6698325537190115
-86423  -114.19971971428572     35.6196248571428598
-33782  -82.7100009797847093    27.8609546336533
-83611  -116.030240085862005    44.468793120603479
-69141  -102.961030467994505    41.3160775135135125
-29789  -83.3808972222222309    35.4347081666666668
-27401  -79.7715531901648802    36.0706662061755594
-92355  -118.365098099999997    35.6131386999999933
-33147  -80.2381359227918978    25.8516965465649555
-20107  -77.5291434047618822    38.9718764285714272
-74734  -94.557014406666724     34.0209944766666652
-53503  -89.9505534362162393    43.1362562211513918
-22821  -79.0449124604344746    38.451373643398874
-67015  -97.6555025555555432    37.2914916666666656
-07656  -74.0404919740149268    41.0349275499715276
-57627  -102.020156304347836    45.0231443043478237
-37022  -86.3051268962368425    36.5016746877424936
-50069  -94.0122419054327594    41.5309853420523325
-19148  -75.1585300719951448    39.9205461397193844
-33122  -80.3177059913606541    25.8012162246220136
-45766  -82.2517728194699203    39.324545184259577
-66407  -96.192765374414023     39.2464306423308358
-98467  -122.53764753313412     47.2053412201422518
-01904  -70.9642734166667992    42.4911146609731603
-24854  -81.5827399485714437    37.7232118399999905
-71254  -91.2267035818540819    32.7841472741616471
-93556  -117.629524396551744    36.0472790172413653
-62512  -89.2049232429780687    40.1319193111903161
-58007  -97.4673431714757044    47.0451459777411145
-15510  -79.0455850666666748    39.9635846333333404
-57560  -101.221649831578929    43.4759533578947455
-02558  -70.6588231495512389    41.7462790707876437
-88433  -103.815446899999984    34.9101862999999994
-54660  -90.5058517268022911    43.984514508402448
-80135  -105.070699112934619    39.2906255136394691
-92549  -116.722559895425618    33.7494293019376741
-74038  -96.5501979349974704    36.164969383255297
-30309  -84.3866183439825193    33.7975787303773458
-38738  -90.5162273000000113    33.9163627142857109
-76002  -97.0946971484238475    32.6198055235564581
-20005  -77.0310246992552123    38.9041280837988523
-83620  -116.430768999999998    44.8386534999999995
-54487  -89.7387812341043656    45.5667388139464151
-53058  -88.4061866447963922    43.1089311357466372
-38938  -90.3321192000000082    33.3689693999999974
-25133  -81.1208005816163791    38.4865684162704866
-93304  -119.02305365648472     35.339927447506831
-27703  -78.8246371181961365    35.965726045293458
-91903  -116.665563785714099    32.8149038982684047
-18602  -75.7526440359333009    41.1827228492550574
-11971  -72.4228310420481023    41.0580137541631558
-20776  -76.6145663594385269    38.8714237132055089
-54484  -90.0547268044843605    44.7991714878923943
-94805  -122.322737265596146    37.9421435742912649
-41385  -83.3594169854332705    37.6429801400825426
-38757  -82.9948912499999949    36.3969013500000074
-83873  -115.926714187554708    47.5266242585451195
-90248  -118.284090260016981    33.8780635844774025
-02832  -71.7232951927888109    41.5076862278008676
-72170  -91.4726269799196672    34.5810081686746997
-66602  -96.6322808571428595    39.0411965714285643
-85383  -112.282856630757806    33.7306672649335866
-88334  -105.209477728395015    32.5395619135802434
-73521  -99.3233858928989548    34.6496325251239696
-67017  -97.1134349704666846    37.8174549787360377
-38499  -86.7917908750000038    35.0653680624999993
-39897  -84.3267687857397874    30.9091507921891306
-59749  -112.141212518696435    45.4350223908454467
-71474  -93.0180481253870255    31.2574873978328149
-12901  -73.4692618820416214    44.6976824210239343
-49340  -85.1177101187637106    43.617860185871983
-24927  -79.9707285057267967    38.3505517374449951
-80264  -104.986008249999998    39.7424782500000049
-06029  -72.4490576141645164    41.9117280787537609
-04554  -69.5065174115130304    43.8626122384286745
-63381  -91.2392497596087679    38.9937193501048398
-27407  -79.875064110083585     36.0231594570126603
-67843  -99.9375323888888829    37.7314678888888935
-15346  -80.1245887061403295    39.9499813157894934
-78043  -99.4579002109105232    27.5087938250088158
-24579  -79.5231120257984401    37.603906950614288
-55734  -92.4887995581813556    47.3978904687910969
-96154  -120.145381999999998    39.1593033333333338
-13164  -76.2996686241610718    43.0923315693512876
-57272  -97.4878041344697408    45.1024907272727447
-78672  -98.4509107758220239    30.8646023141813259
-32526  -87.3308002818688891    30.4880346724244902
-97396  -123.517151745748336    45.1089021235411565
-21780  -77.465073171016769     39.6826312064666453
-13810  -75.1069526400757184    42.6105040197402403
-95481  -123.162189395348875    39.1321815116278984
-43812  -81.8832674381821306    40.2774005006816296
-70726  -90.9191957852492152    30.4572937630292202
-01568  -71.6043799122449087    42.1722212799999525
-12578  -73.7969987482084946    41.8062479579804176
-72896  -90.7981576666666683    35.1994241111111137
-72571  -91.5173792473989636    35.6403617942195794
-60510  -88.311495503601634     41.8456050744719619
-56003  -94.049847002265281     44.1853308614397591
-03235  -71.6573134985206366    43.4456933941485843
-79346  -102.761709708497349    33.7329734223969524
-53510  -90.3122284108337254    42.7380370121728319
-95306  -120.089526333333325    37.4339890577264569
-16686  -78.2373097103556461    40.6625135150628125
-96150  -120.001613935423407    38.902764428119724
-05490  -72.8720468095237948    44.5086979404761749
-33881  -81.7173774164311908    28.0511383693904293
-32010  -81.9922721666666803    29.9778398333333342
-61822  -88.2961743987673771    40.1117727544814855
-88232  -104.351518944614483    33.0998448253482991
-13493  -75.902748488692751     43.4246329646994909
-56591  -95.8461575999999695    47.0979671000000053
-64855  -94.4752442134250146    37.2514907877223109
-05735  -73.1774599741463874    43.6403058598448013
-72418  -90.1866126000000179    35.7599784000000014
-15300  -80.2308567500000009    40.2167287500000015
-90025  -118.442902772610566    34.046543553643339
-58522  -102.523348499999997    47.2790852500000014
-62261  -89.9940112290610159    38.0296102500000117
-70777  -91.0800219370284481    30.7332635290259333
-41386  -83.7843004402730713    37.4799151467576692
-17983  -76.5441413839934341    40.6387463734841674
-68659  -96.9372141443662088    41.5310166971831123
-73095  -97.3033524257293863    34.9116147960874841
-42069  -88.7555993887588386    36.9145450510204256
-89422  -118.117061676375329    38.3825126213592469
-87070  -105.901314861111075    35.0192854444444492
-43115  -83.1543757797724936    39.5014366231781437
-19119  -75.1900583950784949    40.0535193455922638
-56444  -93.8786978878035683    46.4214160327272154
-23681  -76.3825767758620486    37.0934369137931057
-98648  -121.928190505217032    45.6801284054594916
-69133  -103.486195782966973    41.2078778818681428
-11778  -72.9348381580186498    40.9555625911234102
-12814  -73.6658590939524771    43.5787048831145256
-15625  -79.6774906174863702    40.2662873606557525
-26040  -80.7300170480110211    39.9865446282578887
-74354  -94.8614979272336285    36.876847230667984
-24555  -79.4698890448646296    37.6693181161203015
-42160  -86.0653085169842029    37.0657398864801735
-71044  -93.9008173618215807    32.964098493761739
-78084  -98.8042583333333369    29.9491006666666664
-05753  -73.1728185371220547    44.005600811608339
-75460  -95.5670671317559766    33.670449754836028
-34983  -80.3501833677249095    27.3189969442929694
-08885  -74.8366501612903221    40.5762032580645169
-00915  -66.0484262768024877    18.4366090261486377
-01504  -71.5275068331841055    42.0330554247647399
-29944  -81.043463534857338     32.8195713022861284
-94587  -122.049333549760718    37.5903944042874798
-69138  -100.16117253085288     40.9540567198952274
-12325  -73.7399591000000214    42.1163897999999932
-43519  -84.395661397590402     41.4251794216867424
-98948  -120.327093415456119    46.3530867562923561
-78619  -98.0264476057021454    30.1060494287251252
-26521  -80.2376959344262417    39.7138229999999552
-06380  -72.0524272572815505    41.5658603074433088
-89129  -115.289563051733907    36.2321285301659586
-70056  -90.0301766329286153    29.8893215513763408
-30559  -84.2716836166385264    34.9493953400846564
-18324  -75.0117692968120053    41.1359219406703929
-89125  -115.265227499999995    36.2248797499999995
-84063  -109.730045262872466    40.2195204823848584
-93920  -121.677940068473333    36.1366061091298363
-65657  -92.9958526985215741    36.8474268342134152
-77469  -95.7280897206411368    29.5437503376916304
-38125  -89.8030680019556087    35.0273039112836742
-77242  -97.5424013333333306    32.6142103333333253
-70512  -91.9371714207791371    30.4062562298201335
-00913  -66.042221713043503     18.4513165304347808
-50524  -94.3543335304623838    42.595991940651281
-48226  -83.0509423579008939    42.3303546273586022
-73160  -97.4798575290612064    35.3376966371709926
-14415  -77.0201538218623654    42.7560504655870872
-34690  -82.7274207782678275    28.1912907482135431
-04455  -68.2992652603129216    45.3629379903982723
-58486  -99.4199003004736994    47.4193113516588056
-73023  -97.9693031875000031    34.986183812500002
-26574  -80.1803616250000175    39.5596687830188429
-35486  -87.6607935294117766    33.319026588235289
-60513  -87.8488351832028371    41.822570120928745
-41093  -83.5729391886171413    38.3899269654474367
-10972  -73.9865493000000072    41.3291593000000077
-78671  -98.6284920033806003    30.2092976348884932
-77470  -96.5766492199999504    29.5314503280000018
-65441  -91.2162379729995649    38.1351814826544739
-39363  -88.7782360451362962    32.1344372140078249
-16212  -79.5773742101911239    40.7584357961783326
-40372  -84.8910648302589692    37.9124227836261412
-19939  -75.1951862516713732    38.5632706343422598
-52306  -91.2577874741462125    41.9099757389532641
-77503  -95.1582123506288013    29.6882888650942718
-83338  -114.487801932862979    42.7069451961310875
-47327  -85.1749412577487277    39.8260834514548918
-71203  -92.0326325124811291    32.560763595584973
-59212  -104.171759768910547    48.2107902172102456
-48784  -85.453249999999997     41.5204450000000023
-49618  -85.6021891285641487    44.2995844202101239
-29623  -82.9601619999999969    34.5096209999999957
-36930  -87.4703455000000076    30.4290177500000034
-40076  -85.0833921848226993    38.1154605515242011
-49823  -82.9441705833333316    36.9925004166666724
-58278  -97.1212651322595804    47.7798977147390005
-75642  -94.1831703594202878    32.3710868086956651
-54538  -89.9130145470182782    45.9557537756705656
-29527  -79.1291644683309698    33.8111960309153048
-36278  -85.5170851193695682    33.3422808782262692
-22931  -78.7169814629907734    37.906319789032132
-32079  -81.8170958900343663    29.9798687319587742
-22850  -78.9231213025125697    38.5624068572864758
-32539  -86.5056151101491793    30.7728078713014526
-30118  -85.1371045535714472    33.6305074464285596
-25264  -81.9014413702171424    38.852299778697045
-93554  -117.521219520858111    35.4719437711561341
-67057  -98.7097558076110744    37.0362722875264296
-39077  -90.3978737142857227    31.9362951428571407
-29407  -80.0024916384839884    32.7972967408383553
-53550  -89.4877122500000013    42.5257370000000137
-12421  -74.5459131132342634    42.2465827377920036
-18344  -75.3542501588234757    41.1230207408496966
-33130  -80.2033858363903676    25.7678295634629677
-74379  -94.7070408333333376    36.685415666666664
-85346  -114.197139633161882    33.6876439785966255
-52210  -91.9987102652271176    42.3322258831672897
-24521  -79.0783560376878256    37.6144093748410242
-71431  -92.6625223333333423    31.2511681666666625
-79381  -101.733628414623766    33.326824399408288
-42758  -85.1977969140625078    37.3742934609374942
-23964  -78.6236036320482867    36.7817233884556174
-58249  -98.3571904970916222    48.7835739360125871
-78145  -98.0027817977527604    28.6419121123595453
-93238  -118.434333145423395    35.7693712763044971
-32340  -83.4120097345183211    30.4864441667512303
-02950  -79.5015457500000053    33.4133377500000037
-83686  -116.574349187986954    43.5352530587181477
-66839  -95.7666862817947901    38.2074202445692279
-61472  -90.3867298568588211    41.1001439403579312
-68947  -99.05806384362144      40.3202896440329042
-17311  -76.8414573428571686    39.8165095428571476
-95032  -121.951559526507211    37.2379745246875657
-04010  -70.9151084401497513    43.9283715396252816
-96825  -157.694497414308415    21.2919413482429469
-41044  -83.9748926337542514    38.601397222302019
-24473  -79.4015575732930046    37.9023599578314574
-58463  -100.479223346887849    47.4955389316313159
-53170  -88.1689945557970844    42.5511957630434878
-21869  -75.8931127517451074    38.448658541884825
-04901  -69.6057203785723999    44.5508237129840055
-43930  -80.7634175830629317    40.5755219209206004
-62917  -88.6315558511273451    37.689234725795778
-12411  -74.043820896247226     41.8789707947019991
-48048  -82.7834756921097608    42.732208596269281
-64781  -93.8100574807692169    37.9822543653846125
-91963  -116.611991482509907    32.6210026343310844
-80743  -102.967948514718287    40.2255088734230668
-39577  -89.1122416533164028    30.880441342761781
-93541  -119.14238347902868     38.0261174922737482
-44625  -81.0024381955836077    40.7520332925150299
-98604  -122.519024414382486    45.7955018340457727
-63330  -90.7979922822085399    39.2518254447852755
-59489  -109.421794448609901    47.6157778812131482
-22726  -77.8228175757575258    38.4048650051215787
-66551  -96.275378405152253     39.5234736463700074
-52048  -91.2581977968749101    42.7333612816177606
-29923  -81.2365764455645802    32.8626536754032159
-04967  -69.4123100970039957    44.7792315997053905
-98208  -122.189487447693352    47.8914308884951367
-33621  -82.4846394886975389    27.8508183509149667
-83241  -111.758658328605875    42.522223245913473
-67658  -98.9298507971014374    39.1014566690821184
-15696  -79.3660851517509798    40.2798062957198582
-38315  -88.6223657397111424    35.2683057674614204
-32688  -82.7104596666666652    29.2609456666666681
-47023  -85.3859023939594266    39.0866555519415328
-43019  -82.5733485726172773    40.4973545875919214
-63433  -91.1760256015037385    39.5475591654135172
-04485  -69.6094337390397442    45.3639435292274769
-20646  -76.9802932140188858    38.5214886390354749
-77905  -97.0677157201568406    28.7751881761427768
-40074  -82.8674037777777812    40.3145871851851894
-75241  -96.7786474103494925    32.6691787705018939
-41214  -82.5757015337672584    37.8042944963385352
-07677  -74.0620959539748185    41.0245610191771348
-26631  -80.5573290867309026    38.7853541571534421
-53042  -87.9814057640565039    43.9404033562127125
-28041  -80.4580100355329932    35.5869004060913809
-43986  -80.9959050625513299    40.3815537492455476
-98815  -120.491493571541596    47.52295757480492
-24273  -82.6330290711715492    36.9539275654851593
-30664  -82.7934888571428473    33.5601441428571476
-90807  -118.180857285629031    33.8326193308645813
-14032  -78.6381262439805511    43.0271114189406134
-39367  -88.6680401546008738    31.6753299381029194
-89412  -119.389249504545489    40.6697940636363668
-54016  -92.7087368264225944    44.9797336160397734
-72311  -90.8976789588235334    34.7144361470588194
-59020  -109.933958934291667    45.0169088952772185
-76136  -97.2891533333333314    32.8498136666666696
-68939  -98.9536392253086348    40.1069482445987617
-43723  -81.538783336576742     39.9623710901509028
-48097  -82.8199073438179312    43.1254371435286217
-28363  -79.5429254253464251    34.9413408260646889
-18303  -75.448270470588227     40.9447354705882276
-07430  -74.1595996793209906    41.0740620874245153
-11763  -72.9810975702101956    40.8261246761964003
-14788  -78.3741812878788267    42.0598230757575777
-26330  -80.2392226528322539    39.2950584849392897
-86556  -109.136854526315773    36.2352909473684264
-12870  -73.7799223468589389    43.8343152644696019
-57441  -98.5264890241403748    45.8205017639565284
-01107  -72.605243885764537     42.1214193643819712
-07038  -71.329118666666659     42.8819139999999948
-25517  -82.4619727336347523    38.1133601218793387
-15047  -79.7971484195121974    40.3128298097561029
-14075  -78.8390743258523941    42.7323268089618153
-62612  -90.0528302638958849    39.8877456843447789
-14879  -77.1991079605853656    42.3126040489698738
-59354  -104.376826520000037    46.2165541199999907
-15425  -79.572192821866679     40.0288476232470316
-53502  -89.4342171251042259    42.7079653227690059
-83806  -116.39413872277224     46.859904858085784
-92121  -117.195252815189889    32.8979684158637724
-79521  -99.7073159496750208    33.1325865262059551
-44109  -81.7013513295275118    41.4464591466856689
-45661  -83.0992911425853009    39.0393057418582217
-61474  -90.3754623792272298    40.7332614774556845
-60016  -87.8967447801855428    42.0468400802464046
-04573  -69.5544184564437558    43.9470972303103267
-98005  -122.167754820148645    47.6173231720081347
-13807  -74.9872236441989344    42.6081869502762842
-02170  -71.0177074079586816    42.2669758427693054
-45681  -83.259859717662934     39.3082522777244208
-58051  -97.0353993672081003    46.6314201610792978
-16130  -80.2195787582716235    41.4403267076922717
-30263  -84.8284391782125198    33.397186367698886
-63872  -89.5633798750000096    36.4138016250000049
-12777  -74.7246626077940164    41.5633913149802723
-32307  -84.2875328076923154    30.4264076153846155
-78512  -98.2069775714285527    29.4034160000000035
-61240  -90.443469528882531     41.4350592121155756
-06420  -72.2644122783752465    41.4818527119808422
-42154  -85.7264683723305296    37.0506669238626642
-03542  -71.445290384615376     44.606429076923078
-00669  -66.8752340710022679    18.2804043693317197
-54757  -91.4941472633708912    45.2404527356600425
-22656  -78.0870824346868915    39.2161449597511478
-48322  -83.3826269570742369    42.5415767171565093
-74004  -96.0363669999999985    36.3180943333333275
-74049  -97.3417408148147985    35.6097782592592651
-72437  -90.4519435438095769    35.8315369990475858
-74464  -94.9638023177649302    35.9431558901367723
-64646  -93.3159356382429053    40.1008051033591926
-49901  -88.391834650980357     47.2982833999999883
-94121  -122.493102183753138    37.7794287458731546
-73442  -97.6653740232558221    34.3256948217054401
-83135  -76.2789156000000048    43.2022539999999964
-70358  -90.0046332742638953    29.2309772377317501
-24729  -81.2467710975609663    37.4457373658536454
-27893  -77.9169498189938139    35.7107217432594553
-29360  -82.0422069392572126    34.4943265446702938
-24092  -79.7685010248292201    37.0117802538597189
-92552  -116.287076333333331    34.2260599999999968
-07080  -74.4149584165700304    40.5807071798957679
-74930  -94.7533392776287258    35.1866978897825362
-77017  -95.2531868229330172    29.6863067030030763
-72182  -92.0685091694915343    34.4348089830508499
-74425  -95.6331332531512572    35.1762426050420345
-37731  -83.0125340070671456    36.5421047292614034
-26421  -80.9284053878786978    39.1841455863635701
-47542  -86.9585307723868368    38.2997183146930027
-49665  -85.1477003781855188    44.1031082230466467
-55426  -93.3805870872666333    44.9549686289197368
-88104  -106.712190499999991    35.0117559999999983
-75437  -95.4717399565216596    33.2578562664595836
-48622  -84.8718602458333464    43.8565039868056132
-65804  -93.2522034616042816    37.1550602347016152
-45410  -84.1575841581621091    39.7476026289541053
-75670  -94.3885489528188799    32.5544747131147147
-32683  -82.7766989283582006    29.316238940298522
-37063  -86.4046055000000024    35.6544999999999987
-72479  -90.9091356559185897    35.6307626600413059
-27878  -77.832680912732485     35.8523331402003436
-24861  -81.3669405416666649    37.3729731250000015
-32041  -81.5954981874999845    30.6243501562499993
-83250  -112.205752932344708    42.6546801714549346
-38958  -90.3552685128205013    33.6008230512820631
-02806  -71.3168928090944974    41.7444178485629109
-37879  -83.5285858826728713    36.4788419641720054
-19901  -75.5133209462664468    39.1556416296194314
-06259  -71.9861784505705202    41.8707274041508839
-62464  -87.8809470198020222    39.0069460594059478
-21252  -76.6114602608695634    39.3948462608695635
-39151  -89.7876566136364005    32.083680295454549
-97119  -123.166895829341897    45.4423884966048774
-28027  -80.6650265031895941    35.4064069466790272
-33942  -81.3963628571428615    24.678487714285712
-59247  -104.483787738982997    48.5061868203389182
-52403  -91.6074614649392913    41.9813296921076429
-76304  -98.4851467499999984    33.9473781249999931
-98258  -122.083760739377624    48.0123237694155662
-55026  -92.3387689290779718    44.5173550023640914
-14013  -78.4138401453719069    43.0747092010220456
-68776  -96.4193538950123497    42.4668483425181194
-58560  -100.309754905518488    46.6626639607023037
-67846  -100.836348148445026    38.0075218352189452
-29206  -80.9621436012646143    34.0298033946076757
-93501  -118.189388021889044    35.0230083148914844
-33308  -80.1102075629701886    26.1910323883064891
-69121  -101.707182581728688    41.5547983330602761
-95316  -120.786287756530314    37.5334551907344576
-79256  -100.851305018487437    33.8739391512604939
-66217  -94.7765315300706988    39.0170226883844933
-31329  -81.3224435738522118    32.4008004824902827
-14589  -77.1768577229275934    43.2418121860372722
-65438  -91.507460929625438     36.9549892883087381
-86054  -110.665280828571412    36.5736053142857287
-96025  -122.278239215484746    41.2081816489427695
-56214  -95.32596656146508      44.6049181028530768
-94750  -112.263925999999998    38.4335748000000024
-30172  -85.0493064666666641    34.3381149999999948
-02337  -70.848416555555545     42.0174366666666685
-60619  -87.6044183927004241    41.7443465510889595
-77901  -96.9883095451328217    28.8099240884955563
-58736  -100.381357608833866    47.7994691850460782
-28081  -80.6569315461897105    35.5015083169775139
-23127  -76.7700191666666569    37.3712393333333353
-98573  -123.706276500000001    46.6747024999999951
-19530  -75.7827076425357831    40.5462344736809897
-37864  -83.5433751307692063    35.9632481076922872
-62984  -88.1773715144948937    37.7081611720401924
-03874  -70.860263300346972     42.8836922746377738
-31323  -81.4456149619157941    31.721058571840743
-73436  -97.0455896805555653    34.2442475277777731
-40424  -86.1507036153846144    42.8282864615384682
-65786  -92.957233254374998     37.9617699476155082
-46504  -86.1106093727357802    41.3023563970447682
-44682  -81.4040956149732011    40.3975110240641868
-98021  -122.213350131800823    47.7923341124175565
-81233  -105.836463030974642    38.4274186095480772
-42868  -81.4207746666666736    37.4191220000000087
-86300  -112.585839666666672    35.1617985151515171
-40060  -85.4401284410900104    37.5344522094576405
-88028  -108.628730727601393    32.938106383286474
-87524  -105.521630201612936    36.9713635282257798
-74159  -96.0831767499999927    36.0773377499999981
-35170  -86.8004420000000039    33.6711415000000045
-09008  -114.506984333333335    37.6138103333333333
-54965  -89.0138737500000019    44.166931500000004
-24365  -81.3636416771929731    37.323275487719286
-82212  -104.525692020491746    42.2290851284152637
-02199  -71.0829531428571357    42.3465531428571325
-63077  -90.9860601831327216    38.3298602442511935
-73058  -97.2449563006058924    35.8002570715151833
-83110  -110.949995486105891    42.7168418526837002
-36561  -87.5529629953607724    30.2907891082474627
-44070  -81.9150819876005158    41.4180158688277231
-57630  -100.921041518518507    45.4458330740740664
-30115  -84.4087095628991051    34.2094588069068948
-58430  -100.269960284960547    47.5757398976630768
-83801  -116.681397675249642    47.957673255587558
-47611  -87.0497127293611612    38.0267998370423541
-56589  -95.7068742356021431    47.1646051905386656
-11101  -73.9437227500000205    40.7469456730769224
-23927  -78.5326150868294945    36.6191121265539863
-79373  -101.798975421878751    33.1842776830975197
-08519  -72.0300816153846171    44.4235757692307587
-85653  -111.267053891376733    32.4133690951530795
-70566  -92.5755249999999847    30.1874883333333344
-13753  -74.9205093019035075    42.304459214059122
-79541  -99.8196395832164569    32.1527652132943302
-56166  -95.366527291899331     44.1948840370111213
-56531  -95.9604283719257154    46.00452440821838
-38633  -89.1904503849882104    34.6280028931584667
-58831  -103.672743852998011    47.8559940309477767
-35904  -86.0081304063299541    34.0565383588804949
-39507  -89.0373536717409024    30.396681437353557
-84534  -109.183159171052637    37.2404995131578858
-74576  -96.0162646408450229    34.6674399084506888
-35033  -87.0234569782185901    33.9601006132423322
-67363  -95.7167468297872404    37.3274495744680834
-32130  -81.3278255643839429    29.1421546163405587
-48734  -83.7446698789609911    43.3397100916358085
-98134  -122.333233502854412    47.5776956274975902
-72355  -90.7528491274709239    34.5888981758690903
-71841  -94.3278414324539654    34.1681836426858894
-59314  -105.31976276827092     45.0292326149732318
-95674  -121.493840841593794    38.9611343352769453
-84638  -112.284884497006018    39.514018263473055
-50070  -94.2474552620898578    41.4904810358471323
-30643  -82.9225842377024236    34.3759226624245287
-41660  -82.6434398216925956    37.4125733746918314
-84092  -111.809609737070176    40.5609808217274406
-55967  -92.5099414853572029    43.7871751554080575
-32826  -81.1824920539458219    28.5857961269623893
-51443  -94.7108950171820965    42.0835917228766831
-12823  -73.4110255828969969    43.1849967713787137
-40022  -85.3356093561054081    38.1533553103818619
-97484  -122.895402548916934    42.9070653823046371
-22924  -78.7255376000000098    37.9993436000000031
-96155  -120.080088534351191    38.8105308874045605
-73434  -97.593688782608794     34.6353514478260962
-29821  -82.1037128320869556    33.6439896108090224
-59366  -104.824522153846161    46.5399701538461485
-89107  -115.213296495634793    36.170597160404256
-60516  -88.0124989486830316    41.7629549898110497
-18202  -76.0253896431790963    40.9631104147685292
-42275  -86.4311887387554236    37.2229090773711349
-81648  -108.717649360724351    40.0032476701097792
-29062  -80.5819884129930415    34.0221265290022998
-63702  -89.5624972499999927    37.395933333333339
-52218  -91.5599807988733829    42.2914177604374046
-50431  -93.3692471229947074    42.7326535882352943
-05850  -72.0313386402214348    44.555904714022077
-70601  -93.2057070523706273    30.2258244832676901
-39365  -89.1333111963438682    32.6054565297902315
-13660  -75.1563842294628159    44.7734014703638934
-44141  -81.6216570750951576    41.3092665089353659
-17355  -76.698173379629651     39.7610040833333329
-36205  -85.8024976638176469    33.7188772592593011
-20837  -77.404379721776948     39.1320290313960157
-15551  -79.2653793737635652    39.8844432956792971
-24738  -81.3134318666666474    37.3041697999999968
-77049  -95.1713348904293213    29.8256445640115544
-81423  -108.266137000422447    38.0994796078142457
-33139  -80.1420361318929224    25.784677943244052
-47525  -86.5632860487655194    38.0176790018517821
-41438  -82.7367394000000047    37.1873619999999931
-47283  -85.5809787639224595    39.1746410778044876
-10604  -73.7451594274833582    41.0508592066225617
-49312  -85.810989070351809     43.6842061231155512
-77437  -96.2797983634092418    29.2044443232927478
-54970  -89.1096174618868559    44.0449066883018361
-62820  -88.242576104434832     38.2429345836910244
-29146  -81.3065910077708907    33.5223386749430645
-00606  -66.9780882924528527    18.1806341226415107
-15077  -80.4200464071856231    40.6266420239521224
-28037  -81.0099589997342093    35.5118616375469571
-74525  -96.0933625492016432    34.3281000150160907
-18915  -75.2576165436893234    40.2706627973300542
-77454  -96.2330588253968386    29.5475526746031711
-93021  -118.88341799585092     34.2860643736397535
-48202  -83.0779231093309107    42.3756133807729114
-25514  -82.5405291854342238    38.0968999071838041
-02093  -71.3611501152231682    42.0518497735882519
-25574  -81.9396321111111092    38.2566500555555606
-95639  -121.51550143089429     38.3692815609756082
-50561  -94.8386269496125323    42.4136704511627443
-68842  -98.5204681081081048    41.554225044515114
-44840  -82.1808749194752721    40.7921392911984313
-68862  -98.9315776177083137    41.6059182212023018
-16926  -76.7087792583803889    41.71375013333342
-39769  -89.0161541992641361    33.3410615133193247
-12134  -74.1637966975617218    43.2379384239129791
-43136  -82.8162816904458907    39.8058501452229265
-40033  -85.2542891155414395    37.5576834244725006
-27557  -78.1989944164919706    35.7834724836074258
-16372  -79.8447039371069849    41.2103345660377371
-79802  -102.305917999999991    34.2283089999999959
-98466  -122.536911602939611    47.2263169086002534
-86336  -111.780482939773336    34.8499451123712021
-65326  -93.0966615791273284    38.2053966912841148
-96075  -121.835680890827774    40.3464482210290214
-61401  -90.3726879451873515    40.9485618914579419
-63532  -92.5727938118723443    39.7508159199646656
-58405  -98.6987909230769276    46.9129004615384559
-82301  -107.245835907232745    41.8024317940251038
-15310  -80.4843409342282143    39.7918858375839193
-46978  -86.5102938586888115    40.8523091752340903
-23508  -76.3002678153617495    36.8877699587076648
-30134  -84.7708985317773625    33.777567783576373
-32209  -81.6930531041822263    30.3587499476840605
-68716  -96.8188006220221951    41.9295874505028863
-07419  -74.5747361683189922    41.1532340653059805
-74073  -96.0181648245450532    36.2957905272727075
-45044  -84.3820743808470439    39.4559444809668207
-18252  -75.9701429398296142    40.7835150873719385
-54490  -90.2405858947368387    45.3267374736842044
-68937  -99.8459755754681595    40.6063572668011972
-48654  -84.1355642681066342    44.4735687664124342
-43915  -80.9008190607452775    39.7580821878679913
-53403  -87.8113126339796821    42.6971834429876012
-70456  -90.5004285471856349    30.7891403753477846
-72144  -92.210766333333325     35.6272203333333337
-43734  -81.9080471367925043    39.8824402959905555
-22509  -77.0502150278884272    38.0849020717131523
-13864  -76.3926672531265609    42.2908335527763484
-90011  -118.258214517453112    34.0076886214356051
-49947  -89.6551527803807318    46.422646508052722
-99710  -147.676303450000006    64.865289599999997
-95549  -123.890150800135999    40.6655607459380519
-61260  -90.8792594577376747    41.2366637662402837
-48652  -84.2004504933963034    43.8557514349056206
-07064  -74.2456025165744933    40.5716394709944908
-75154  -96.8274337915732417    32.5274538910232422
-21811  -75.1792872491860322    38.340840526546792
-39463  -89.8161461481481638    30.7612471851851836
-28117  -80.8932364489268565    35.57461298965206
-38452  -87.7913661987092837    35.074860786826811
-72027  -92.5818956635700943    35.3637733398627034
-65256  -92.4384809684754316    39.122819730240991
-17109  -76.8244099351546765    40.290888763180071
-34691  -82.7571122265730423    28.1936429535586868
-55053  -93.0809621456220242    44.3524713304148293
-92691  -117.665332697162199    33.6125642894508445
-37681  -82.6236435566937644    36.2483787304736467
-23940  -78.1725436818181691    37.2068826136363668
-64502  -94.8540944736842135    39.7667017368421014
-43722  -81.5218458167115756    39.9184420943396177
-97532  -123.487537869501722    42.5420111053138825
-05065  -72.4239183781068476    43.7956095787941067
-35752  -85.9396575361764832    34.7508953705882746
-62030  -90.1618091739130278    39.1562790434782713
-42451  -87.3732190642544424    37.8558315115408988
-74127  -96.0305554812894826    36.1650284875047205
-31547  -81.5620616727272534    30.8048379818181814
-48302  -83.2948280587536516    42.584924913897332
-05161  -72.7944529693938591    43.2997707216009289
-55448  -93.3006878367258992    45.1901588748375218
-08346  -74.8640219333333761    39.5617747686274726
-34743  -81.3544844405469547    28.3302313672395059
-47324  -84.8486852340425486    39.7415689361702178
-15827  -78.5041216808510995    41.294450609929072
-48191  -83.5638297268491641    42.1313920669772415
-80475  -105.583622916981099    39.4347361433962433
-61276  -90.5860573108108014    41.309482054054051
-50322  -93.7310917313377985    41.6333509801669663
-24649  -81.9101367127539106    37.0800424183068955
-86305  -112.528825471285586    34.6364958672713499
-57270  -97.3388148714023629    45.8374957264116958
-45305  -84.0813791551925505    39.6410760552208359
-38054  -89.8726601932692688    35.3378760355768904
-39717  -89.7950320677965834    33.3563900508474447
-75321  -96.744527000000005     32.8620042499999983
-60409  -87.5468629242520819    41.6124031793456908
-73000  -97.3907051999999993    36.1237119999999976
-32329  -85.0035892105263144    29.7605559473684202
-81239  -106.642272026644449    38.5073467248126349
-64436  -94.6951512365184982    39.8596619763481144
-07881  -74.9072549242424088    41.1683356515151289
-23045  -76.2685063729792034    37.4317905034641925
-01253  -73.1040992157350757    42.2025267717764336
-13650  -76.2139320900746071    43.8230420992540388
-60302  -87.7896438234762115    41.8951456531072353
-75965  -94.6281055812538199    31.6848023849310003
-98908  -120.624850686782906    46.6091001585459992
-03642  -87.1094387999999924    31.4198414000000028
-95421  -123.1578716300629      38.5626724366605345
-06385  -72.1488950901222523    41.3477410615686978
-13435  -75.1491720592592571    43.3045238074073993
-61720  -88.5166537356521843    40.5488054782609311
-51503  -95.7944737865988571    41.2547389433738161
-15661  -79.359122371057552     40.3212916883116534
-13812  -76.3537425567038781    42.0287405308642334
-39573  -89.1480957854883087    30.7279448194966101
-32344  -83.8926922401202262    30.5135461751407178
-63388  -91.7511059313726207    38.8715601546003171
-97544  -123.279210319723163    42.2332423472475611
-72632  -93.7478548694182905    36.3853100168346089
-71837  -93.8707737092490078    33.2769787894227562
-25912  -80.9947705000000155    37.8523512777777853
-07855  -74.858754250000004     41.0527787500000017
-50211  -93.6797953537491708    41.4665213152066841
-46786  -85.2719245500000227    41.5316599000000011
-70117  -90.0304692014961319    29.9700968206030502
-93423  -120.413509999999988    35.484911799999999
-12450  -74.2375123734939564    42.1414306720214
-14466  -77.5814967253634649    42.7789041593969372
-65261  -92.9140238832578405    39.4824017389140636
-97342  -122.116827563542827    44.7399388536585576
-73719  -98.2933369999999798    36.9257218992248113
-48428  -83.1399000668926789    42.92805075493213
-56442  -94.113643002561588     46.677498046699391
-34432  -82.3856009849208135    29.0755728574990115
-62958  -89.1952987364172571    37.6221534230984105
-20001  -77.0189078485905725    38.9099584664723182
-52205  -91.28039307782322      42.1064445537703591
-25969  -80.9892168382748423    37.6440283899370982
-37461  -88.7290075000000229    31.2226638666666609
-75434  -95.3548190895522509    33.4175249253731366
-12093  -74.6298809167501815    42.4930302478791404
-54756  -91.849642216666652     44.5128988666666743
-32332  -84.6627369673093852    30.6126420955574403
-48875  -84.9083868857246244    42.8591983444384468
-59063  -108.925931692042511    45.6335110867566911
-73401  -97.1284569460118377    34.1791171016634792
-72199  -92.287416144981421     34.8312461328996505
-43708  -81.4360981666666675    39.922660999999998
-44311  -81.5206038563380417    41.0637142430583921
-60109  -88.5505251270718361    42.0498563701657559
-46537  -86.3069576007193859    41.4583834208633562
-01370  -72.731112309839375     42.5997548710905036
-61428  -90.1253796380513279    40.9507483326013642
-01010  -72.2042006561142529    42.133527708207744
-75778  -95.7053149196281936    32.3106200013936515
-05465  -72.962058422752591     44.4746963673627533
-49394  -85.9639295454545476    43.8532049090909055
-71958  -93.6642165609966497    34.1040428978891583
-58634  -103.29749531935488     47.4137314629032289
-05739  -73.0252539580988724    43.3566951460187298
-22205  -77.1395740759153341    38.8840312494542601
-79650  -94.5427477500000037    32.5948697500000009
-62941  -88.9703909883575079    37.2415604686070907
-37871  -83.6767252094135188    36.0415535275364931
-05823  -72.1424419444444425    45.0052604444444384
-25402  -77.8969598064515907    39.5164223870967746
-04288  -70.3678057179487126    44.1718381794871675
-64844  -94.2477813628057106    36.9129782274838618
-16213  -79.5576542142856766    41.1260618246753467
-32194  -82.1657859999999971    29.7903619999999982
-74171  -95.9577690000000132    36.0515685000000019
-95213  -121.226973249999972    37.9044997499999994
-44255  -81.2335671340564431    41.2881870323844709
-33486  -80.113729243202684     26.3454586835696958
-72644  -92.9546211501761945    36.4256605223894709
-75564  -94.2660716129032181    32.8999041451612868
-62879  -88.3602645079365345    38.7643465714285753
-33955  -82.0198046314613833    26.8179446532321073
-29945  -80.8020296391720478    32.6840748124452176
-94603  -122.173909228834844    37.739162150578025
-42411  -88.0311490630492557    37.2077990737487028
-63037  -91.3155379765931912    38.4147569184971189
-30016  -83.9428970792995983    33.5446319310485421
-08733  -74.304519075892884     40.0159060892856502
-66964  -97.8172511422222044    39.9244117733333468
-53126  -87.948664330905018     42.775652560661193
-11772  -72.9976938230078218    40.769597406283971
-63461  -91.5716448597669057    39.7914755121373105
-33323  -80.3133055302541976    26.1523389641961188
-40958  -83.582820498673783     36.8046683746684309
-58103  -96.8198546967299762    46.8573100884131435
-59875  -114.189870655858371    46.3889022383390142
-57257  -97.0048047500000479    45.51302167465753
-52642  -91.6854156666666569    40.980164666666667
-04852  -69.3195088371334691    43.7622762312703628
-75959  -93.8208673243317577    31.5106131227970998
-99349  -119.857602555435307    46.7217947903574569
-16133  -80.1194683987849601    41.2734700102334457
-49775  -84.453756868983973     45.7616112339571615
-45869  -84.3894253527107452    40.4495233725005576
-76858  -99.6604341778741798    31.2341738199565668
-96713  -156.040980700344221    20.7571128179543258
-25702  -82.3537134327233957    38.4344420177609436
-11733  -73.1024184516980142    40.9311096426914958
-86537  -105.081472500000004    40.3493119999999976
-30742  -85.2435769296374701    34.9520898394761161
-47808  -87.4511635000000069    39.4131539999999987
-50278  -93.2946478149395091    42.1524882689156399
-16750  -78.2994841232493997    41.888003662464989
-93624  -120.12620901179254     36.3917104551886723
-16050  -79.7685350194766158    41.0397008554515281
-48895  -84.2893454817310186    42.6930533633128135
-67951  -101.338607625247619    37.1687915131616222
-59273  -106.904248210526305    48.3508576578947427
-08610  -74.7141421528600489    40.199351176442164
-74081  -96.4446233494281415    36.1840410139771151
-40820  -83.1720673135392587    36.769863855106891
-36517  -88.0912984999999935    30.8141260000000017
-62217  -89.8413803287237442    38.1751013563807859
-83830  -116.394032457920915    47.1056179336634386
-14218  -78.8192294890923648    42.8186551567466793
-17076  -77.3110614374999869    40.6171693828124987
-25908  -81.2348143854961933    37.6639952013358155
-78913  -98.9710176000000104    29.9677708000000003
-62015  -89.542068148114808     39.2224425174919702
-56331  -94.6758093001818253    45.6844466764169894
-54473  -89.3475640199772556    44.6448434380979293
-04443  -69.4006411633353082    45.1756619002474196
-51578  -95.3949896551724379    41.7192134827586116
-27215  -79.4743471834778603    36.0574450576304173
-36619  -88.1975690712928184    30.595777213741453
-56551  -95.4708163748737917    46.3249251056351881
-95679  -122.241489009708744    38.8951867864077627
-22033  -77.3872503173000723    38.8773109664882952
-67657  -99.5029561089374539    39.2462544683544152
-32452  -85.6148726249999896    30.9796591250000048
-31083  -82.8257552459016324    32.0503009918032831
-59041  -108.937583435428323    45.5041533352380938
-28586  -77.1661565302218548    35.3085782070467857
-44114  -81.6752211971623012    41.5096089021526424
-24015  -79.9798528488355629    37.2564918554498234
-14469  -77.4611935249164532    42.8739232765117251
-69131  -103.020125163789615    41.3949731408450603
-95201  -121.390338789473674    37.9858269736842118
-13667  -74.9666205521628939    44.8278550071247111
-12174  -73.7871533318181889    42.3698978636363393
-21062  -76.6410768333333294    39.1856539999999995
-45340  -84.046608307759513     40.369796398430644
-18503  -75.6661784246396252    41.4100105058977803
-21236  -76.4835918926234797    39.3919405402663472
-49115  -86.6318371091810775    41.8733466116625195
-98503  -122.797698607836054    47.0240840481208906
-35602  -86.9676705217391373    34.5979370869565201
-42376  -87.090792122896886     37.6104502663110125
-49751  -84.4214089048624601    44.9750680583156708
-43903  -80.949984011798108     40.4739387987882395
-75120  -96.624403749999999     32.3605796666666663
-18742  -77.1187287142857087    40.7783462142857189
-91316  -118.518235453114499    34.1610794524590773
-56266  -94.9246774200505001    44.4090519605413476
-21541  -79.3598562431152601    39.5525303949644993
-97048  -122.965169253291236    46.0528424719958167
-79846  -104.187830102040834    29.4360239183673436
-62761  -89.5409005925925499    39.8502056296296203
-87715  -105.379022207289267    35.9913210455581023
-75062  -96.9677502417499682    32.8482637520800438
-14804  -77.8261574684373301    42.3123973535701907
-97346  -122.396542783829076    44.7536178551376125
-25410  -77.7545910000000049    39.3610109999999978
-08161  -106.875633000000008    39.2550339999999949
-12479  -74.6128786666666599    41.4459648333333277
-68958  -99.501387607438005     40.5080450764462867
-14173  -78.4716205722543094    42.5226491618497064
-52072  -91.3907026181164639    42.9231473089207682
-67070  -98.4861611774840924    37.021766775416431
-06514  -72.9374194166365299    41.3671001064629138
-48023  -82.6797949581436029    42.6923908023206238
-42574  -86.3588379999999916    37.5661696666666671
-49686  -85.5455800013340451    44.7902779686247143
-49833  -87.3307633954248956    46.2919977418300519
-56355  -95.2464884040978035    45.9255737364826544
-27514  -79.039124518947574     35.9472390911993998
-02535  -70.7387039603842993    41.3568102367029411
-75244  -96.8377334635045202    32.9218481616394314
-00753  -67.0457831041666878    18.0877090625000001
-52037  -90.6216413514917036    41.9692045045207465
-69157  -100.203341742857091    42.0470700514285909
-43215  -83.0050244665641941    39.9660864648585203
-38271  -89.1154899999999941    36.4890680000000032
-67349  -96.2690222926208747    37.4803672175572657
-55308  -93.8406832109078692    45.4284975738338872
-76491  -99.0427813445096064    33.0128155993294712
-25860  -81.1101798543689227    37.7664612038835159
-90014  -118.252479458204391    34.0441455386997021
-99184  -117.623431875000009    48.0592077499999988
-33741  -81.1464227142857197    26.9740755714285747
-31078  -84.041091504117361     32.7026885360293491
-27521  -78.6590688098159632    35.4109803460414838
-02138  -71.1301535293055451    42.3787100058209205
-40317  -83.2698045362318737    38.1878238985507039
-98045  -121.7543589813491      47.4745078147465023
-27107  -80.181585427787752     36.0187271445552284
-59244  -106.279603770392811    48.6643856465257585
-21114  -76.6814395753808782    39.0104236837781997
-58476  -98.9938530741687828    47.1915547485737008
-53951  -89.8586644794008009    43.4434951760299413
-45385  -83.9382916975823861    39.6806604170195598
-35173  -86.573621540362808     33.6439995944645389
-50120  -92.979531258527885     41.9337372782764675
-35579  -87.3558387256142908    33.6815810643774967
-12580  -73.8788588437951859    41.8533185303558852
-36904  -88.2461152486760625    32.0919302088096998
-83445  -111.69856723456158     43.9571343942222725
-94062  -122.268141203014423    37.4382646754828059
-63822  -90.0037085758810633    36.6620982994434641
-11357  -73.8267464333333265    40.7912292125000064
-15037  -79.8551451336798834    40.2634255202047271
-29385  -82.1007173633262255    34.9685510382321212
-70654  -92.8952842300435577    30.7140360413642668
-27610  -78.5705882223972338    35.7552933989354216
-97844  -119.508955734885618    45.8901762624859586
-59930  -115.162329469401371    48.8896031459314457
-60449  -87.7694674945611553    41.418698740327649
-62445  -88.3240249683860981    39.180052997781516
-65634  -93.1759201280000013    38.0474474959999682
-25064  -81.7398494931608468    38.3701089220536744
-97538  -123.590766338451317    42.2739286262863274
-52767  -90.4233602513368879    41.5699660534759161
-34973  -80.8546696103896068    27.3275938181818319
-23085  -76.8632720985916364    37.7009294628325975
-02951  -66.2334984999999961    18.444386999999999
-39602  -90.4512107750000212    31.5746282500000071
-55735  -93.007099125372676     46.2118198054396316
-60922  -87.9150409510975237    41.0062700075236037
-59941  -114.028834000000003    47.8900190000000023
-23161  -76.9233717016128224    37.7142449306451724
-96765  -159.500420470711333    21.9234173263598464
-47591  -87.5018600230002619    38.6694444011117824
-72123  -91.2347273816793916    35.2566693206106976
-23510  -76.2882145988504732    36.8532665356322156
-55029  -93.1999288461538384    45.6365589038461579
-43407  -83.2482097984748606    41.275146572984724
-16655  -78.5348516777214058    40.2351282032774265
-19050  -75.265804019129618     39.9383940566349409
-37332  -84.943102068045377     35.5880781188302038
-34982  -80.3260746280178637    27.3895549074430242
-16662  -78.311331848626125     40.3065535505527777
-13031  -76.2905294623805901    43.0410591436058141
-15771  -78.9992450854541346    40.8375626823750508
-24147  -80.8178513179839086    37.3901732682016288
-95403  -122.749002158541998    38.4866903336885358
-37342  -85.9610138122760361    35.3895820011042659
-05840  -71.7460365874999866    44.5785135750000308
-41843  -82.87545921253259      37.2729753477807009
-25827  -81.2372563612258034    37.7366525138479076
-62571  -88.9715006146273026    39.3991420914205719
-02717  -70.9653246520180403    41.7611706040124773
-28166  -80.8809751028116892    35.6776814522855901
-43793  -81.0993149476461923    39.7399508811126765
-56511  -96.0048185695229677    46.8215384421514216
-73529  -97.9812193138863137    34.369427126325931
-60537  -88.6015243510054091    41.5630762193784449
-94585  -122.00889960439666     38.2336221311638482
-00658  -65.9704655714285479    18.2550401038960963
-85248  -111.866175795510387    33.2331082997816978
-85522  -111.701105486486455    32.8898041351351296
-81435  -107.89745198386268     37.9342768626961444
-66951  -99.0416920561796559    39.8046042966292504
-02048  -71.2113065205581961    42.0216944341042478
-55418  -93.2397355118041276    45.0209798652219462
-96017  -122.325233927030339    41.1189161744924547
-83467  -113.88523086169495     45.1261449433600745
-40983  -83.7549864813688458    37.3347538760832478
-20735  -76.9011386315147689    38.7542002567106181
-21201  -76.6229986282917963    39.2945712130316664
-91916  -116.625597656377764    32.8922629561662632
-53224  -88.0329993617117026    43.1569393252918587
-29002  -81.2349169999999958    34.1324334166666645
-04330  -69.751231251294783     44.3471834107045808
-01908  -70.9262133449752525    42.4261716507353768
-65543  -92.2846709651474271    37.4904661675602924
-15507  -80.1430622000000028    40.3979513999999966
-99016  -117.149647704525975    47.6423872298564248
-71232  -91.5191524784376327    32.4117462452515213
-12173  -73.7572588396881912    42.3777308149913949
-17037  -77.4088426947988211    40.4364897618579135
-67865  -99.9427547493473725    37.4884689618798959
-02667  -70.0191459829439964    41.9297092482830109
-34442  -82.3959312389061722    28.9215703714598362
-49435  -85.8436093055710785    43.0216227501378015
-29451  -79.7570496909760607    32.8025692293732831
-46239  -86.0063973983965155    39.7244943577895668
-73620  -98.9832228689956395    35.5863696462882046
-01784  -71.5601566666666571    42.244048444444438
-95134  -121.940549511839933    37.4094140267152184
-95444  -122.868578172932402    38.4348613408521302
-04937  -69.6493648929435238    44.6177340619919249
-27859  -77.3412565000000001    36.070526000000001
-73165  -97.3496229340080816    35.3375945106092431
-05086  -72.3098749280675008    44.1046539339858725
-46049  -86.2212551768389375    40.2948400459049552
-43540  -83.9404327672744444    41.6970199741416039
-71743  -93.1454088972131444    33.9313893886143845
-58223  -97.0401720478723178    47.5103503829787215
-88416  -104.215752502369611    35.3707364344391593
-57065  -96.6232638364347025    43.9079572091086519
-81323  -108.489104179335101    37.4875211244652036
-52766  -91.3064881020314374    41.4700403232505792
-45013  -84.6180619444845377    39.4061525962655494
-44659  -81.7024102682926667    40.6945566991870038
-83542  -116.30599330588241     45.5590055788235091
-17073  -76.255327011385134     40.3043090469209844
-71469  -93.2959010852019048    31.6852421872649579
-55808  -92.2280421152211289    46.6762353517283941
-40313  -83.3922696184211674    38.1403577346245157
-48966  -88.2068882000000087    46.5440749999999994
-77989  -97.1431595714285834    28.9972902857142891
-48816  -83.9492608181818269    42.7593063030302929
-65265  -91.8885738039761009    39.1786560872807073
-60944  -87.6106695000000002    41.0738712500000034
-40107  -85.6338734018712131    37.7620271187620489
-80970  -104.684243212121217    38.8416550909090859
-47891  -87.0244720000000029    39.7388440000000003
-68752  -97.7153643294335836    41.9909265872718365
-75428  -95.9146465361092027    33.2569732360332679
-68069  -96.3040307370382465    41.2579114398509219
-42201  -86.6865956086956402    37.2506306086956513
-28637  -81.4208702473373194    35.7171897650887615
-61437  -90.9534788691357363    40.8656607135802545
-34762  -81.8819733967742138    28.7523232473118178
-40059  -85.5936776006824687    38.3564227028994438
-12916  -74.5137630923231598    44.837420936277006
-43535  -84.0276882184872846    41.3142655990395085
-58120  -98.0130649999999974    48.3691464999999994
-06262  -71.948760339743572     42.0220277275641294
-07848  -74.6873474518242375    41.0994040755377981
-76433  -98.0130308321776056    32.3151802545076023
-79105  -101.907473500000009    35.1917159999999996
-21223  -76.6476409267521319    39.2864155619869067
-85613  -110.352772782258185    31.5635274677419275
-40292  -85.760078749999991     38.2185193749999996
-16840  -78.2023079543011193    40.9258397392473299
-79837  -105.192948022500005    31.9330977600000061
-83237  -111.783652154030847    42.0295911468329777
-85739  -110.900451103724123    32.5143022551976202
-76070  -97.6567719854798924    32.2552594286616241
-61756  -88.9625384190791522    40.0321723437499699
-62273  -89.5935405821428787    38.7793340500000099
-66732  -95.1853184808916808    37.7997811011145828
-65774  -93.5316886366278908    37.924380375000041
-33186  -80.4067399184102811    25.6591187108465562
-46945  -86.3838978571428555    41.1237705714285724
-12759  -74.6516100298012475    41.7846128245032489
-78645  -97.9799133759039051    30.4490528590694325
-94533  -122.027656694494695    38.2708266677407991
-39343  -88.3329294285714326    33.2286485714285718
-36318  -85.95379671643731      31.1789999828616402
-30646  -83.3075261077143097    34.0653271576786949
-43967  -80.9184257483870937    40.017283341935503
-66075  -94.7076591409287971    38.1861011851197389
-01865  -71.267334538461526     42.5341187307692152
-12498  -74.1111754340015239    42.0370474551945819
-35206  -86.718455074464174     33.5694999568551538
-62447  -88.4379952872563848    39.3189973889055082
-45714  -81.6105599192518696    39.3054880589673914
-60304  -87.789658170621621     41.8725815946843056
-39362  -88.5262901038662875    31.4313117223747618
-00929  -65.8878701666666586    18.3925388333333366
-67578  -98.5958684766536351    37.964644450713358
-03564  -87.6414468749999997    34.7139428750000008
-79761  -102.353778577527507    31.8570746660032604
-91709  -117.729943139440081    33.9709824205200661
-17315  -76.8561464802016587    40.0095456355926942
-95428  -123.18495164756618     39.8297525828663055
-29474  -80.5375703943691548    32.9601871052199158
-98554  -123.562826195652164    46.5575518695652306
-31803  -84.5066470708257782    32.321379364572941
-30070  -83.888521351851864     33.5729225000000042
-50208  -93.0415456882165159    41.701791695024383
-21217  -76.638601333917336     39.306616491765979
-99030  -117.117741766044915    47.4793769464836544
-49910  -89.5911723398304787    46.5870586830508842
-01202  -73.0942330000000027    42.2589307999999946
-66080  -95.2472033205008444    38.415616801484191
-10976  -73.9264534265873152    41.0287890932540051
-92508  -117.323761812641408    33.8925843207222428
-21903  -76.0498127106865667    39.5695775301771135
-49722  -84.8620334405594576    45.4244482237762313
-38947  -89.9189586219511767    33.5172585731707215
-44044  -82.0529389354209968    41.2817162852794297
-22003  -77.2168373594304427    38.8302158910574846
-40492  -84.3047507777777696    37.4247581666666633
-55792  -92.5235730490775694    47.5566272322078021
-07747  -74.2373607273907368    40.408966464926614
-76019  -97.1096106428571346    32.731541
-80438  -105.706523584143525    39.761073330590861
-12180  -73.6364796606330145    42.7368797426221647
-17072  -77.0390703972603035    40.3361318767123294
-98433  -122.578705702482011    47.101567443174396
-77575  -94.7560532309041861    30.0761847722522866
-76963  -100.591220857142858    30.8573918571428578
-55370  -94.0433255987524888    44.7827462681912607
-75022  -97.1104651617346235    33.0264162756168034
-93550  -118.093338253934149    34.555467842628083
-36029  -85.9182601032992181    32.1906691984856934
-04556  -69.6256295101607492    43.9687340018198682
-12885  -73.8174230839238135    43.5217910867846882
-76431  -97.831422734000526     33.309205071295132
-75686  -94.9775534739398637    32.9829722862190238
-85291  -111.447878758620661    32.986026862068961
-38474  -87.2272997665864267    35.5270400797759507
-60553  -89.0246444200863891    41.8218833698703847
-15367  -80.059096781991002     40.2678611642969884
-36587  -88.3359753446298157    30.8186180166899746
-52760  -91.0897104633152992    41.5864440258151689
-52333  -91.5184390293240284    41.8010515908393927
-74524  -95.5904589999999956    34.505972749999998
-54161  -88.2211464090283783    45.1138840259077085
-23090  -76.7536289999999894    37.3394925999999998
-32052  -82.9959350000000455    30.4944464201205001
-39078  -90.1916485623398785    31.872979439795099
-39190  -91.1585786749999727    31.5839773250000064
-35207  -86.8187690120195015    33.5606949054246186
-33981  -82.2240307730331637    26.9193509902913739
-79320  -102.676782467687346    33.9214438244048182
-62812  -88.9175419796327446    38.0016400856827161
-47282  -85.6108078271028319    38.9778505093457852
-15775  -78.772558873357255     40.6367022616487716
-65725  -93.2743880124308617    37.4150295635358816
-30652  -83.4668967142857099    33.5930608571428522
-04862  -69.275377183338378     44.2512192028848972
-53186  -88.205891686416237     43.0114242326183458
-21662  -76.1933720946798729    38.7178431045987779
-55436  -93.3739745096722515    44.9032547771516377
-75544  -92.2133395714285768    36.3657167142857105
-53713  -89.3930463011987086    43.0368656833633594
-88265  -103.278277174193533    32.6705941354838743
-49680  -85.2530845705703229    44.6315997224366896
-83220  -111.396619413333298    42.3581509155555409
-94349  -70.0017964999999975    44.4047134999999926
-16254  -79.4528425291978238    41.2659970052631024
-15446  -79.385766335174992     40.0298569318600101
-27019  -80.2406490246023196    36.2959639290003295
-36851  -85.0815847803030181    32.1411222196969604
-69024  -100.832906043645735    40.2269393209242665
-94579  -122.154166756589007    37.6880637151733211
-62473  -88.5691119522498127    39.0234581010100854
-23301  -75.6608948279196767    37.7135214891724289
-39572  -89.6023724553225378    30.250965367909842
-19055  -74.8372248966943658    40.1493341740495495
-54481  -89.5838315394520208    44.5203081221520804
-97492  -122.500320230576236    43.7559445476190376
-54124  -88.3515424403689451    44.9053825641458815
-93669  -119.538780066115805    37.2683762937640779
-68020  -96.2547199936907987    41.9900925993690493
-76472  -98.1647599707242478    32.6245590080893635
-77378  -95.4203788074373449    30.4487158153569553
-60195  -88.0983013717276719    42.0624211652123918
-01002  -72.4983749173491958    42.3745030946057781
-49108  -86.2354343999999884    38.5038371999999995
-94040  -122.085045893585374    37.3794664357078616
-75640  -94.7030928363282811    32.7216631486962726
-15020  -79.947435008375237     40.2289833467337061
-91436  -118.490981779736046    34.1475308039648198
-79748  -101.651290938388556    32.3946427772512067
-72832  -93.6714177120000215    35.4332858639999841
-58313  -99.9682499263158491    48.1214610894736907
-79548  -99.9435014125560599    33.065397576233174
-30455  -81.7996411438640081    32.6912034121061268
-70549  -92.7315245299170101    30.0797566053126708
-58106  -108.66464666666667     45.7859379999999945
-48851  -84.9410960200125089    42.9623132213883281
-58356  -98.994309817685874     47.6871172914142321
-36005  -85.7314986672898129    31.8621440181817093
-33619  -82.3776754762452441    27.9412984921200724
-43555  -84.2557769807692125    41.4375864615384728
-36788  -87.6576094318181731    32.1225662727272763
-63785  -89.8129625259904572    37.2723669570590488
-80219  -105.035571933615557    39.6954407208123001
-02062  -71.202162067201499     42.1864670432296407
-53177  -87.9212469609281015    42.6990607606837713
-72202  -92.27992003102041      34.7427667338045865
-60564  -88.19996023282728      41.7033192658862149
-85924  -109.741066105437724    34.4574891571618664
-87831  -106.910317504451058    34.234471207715174
-37866  -83.8254272934414502    36.3419933442344814
-76022  -97.1469706425064601    32.829830001155095
-49122  -118.301944121212131    47.8955609090909249
-87512  -105.45140996836551     36.9299043936731408
-02660  -70.1580647301231295    41.7118697176651807
-11572  -73.6366593166484762    40.6357156644078117
-68841  -98.1536376918858622    40.7605121801900268
-30244  -84.2661391666666759    33.6474084444444372
-21203  -76.6017835000000105    39.297480500000006
-95412  -123.365403552679766    38.7125753048706684
-55451  -94.706293500000001     47.2537843333333285
-16222  -79.25415723134617      40.8732287373637249
-22535  -77.1664763282560529    38.1508680327494361
-70712  -91.5697183020133991    30.9531202281879168
-49728  -85.0179053118058334    46.4436822131944922
-08538  -112.431723250000005    33.3497984999999986
-96858  -157.884403137931002    21.346860793103442
-08830  -74.3183581416946026    40.5727562800591741
-31831  -84.7177378643502124    32.6798387204555354
-66971  -95.6001420000000053    38.3879019999999969
-55421  -93.2470108418795434    45.0504416860063301
-73435  -97.4898525580110373    34.3605577845303927
-04032  -70.1006253633341885    43.8539967286642991
-98001  -122.271800222857195    47.3140397502236354
-54406  -89.3108293394110717    44.4207391120909136
-74866  -96.8550873636363718    35.0750855454545487
-42765  -85.9191467761013712    37.3053936220119553
-04086  -69.9638644128789338    43.9511416847746688
-16056  -79.8372937736366595    40.7308940821255945
-43336  -83.5827400526315927    40.2927655526315789
-19147  -75.1551693944065988    39.93690836870244
-60542  -88.3391134987277127    41.8125510229009691
-70755  -91.5444396360076524    30.5721020782778972
-42849  -88.6987925000000104    38.5650341666666634
-02858  -71.6471226090534685    41.9620685864197753
-95382  -120.849416303656113    37.5238308937400546
-48164  -83.3831464441015413    42.1314175014332619
-55394  -94.0506129999999985    44.9704805000000007
-69367  -103.275941276628373    42.769318187739465
-15427  -79.9633745234183948    40.0634650981923315
-50473  -93.6762208810927461    43.4680547530796559
-69358  -103.954367425712249    41.9759894645632343
-65776  -91.9259059999999977    36.6573878749999977
-73038  -98.447273645778921     35.1428397911226611
-17827  -76.9498042489540239    40.7575155606694537
-03234  -71.3424677257504527    43.2169280321879299
-54947  -88.7004644281509371    44.1958104688253215
-95981  -121.010838607988944    39.6664262610311269
-20686  -76.4262964301675964    38.1970087430167666
-17547  -76.5707776133041733    40.0691784079343165
-03839  -70.9934339089950726    43.268363450456782
-35984  -85.5652932779999134    34.537135299362042
-37205  -86.8699659227608549    36.112140590423671
-12443  -74.0817297160096899    41.9301245094529023
-03469  -72.3361713015075765    42.8665532864321506
-27051  -80.1586758007859714    36.1804384686439207
-35449  -87.3399361290322389    33.1608464516129118
-28307  -78.9911901188151262    35.1441289052733978
-98674  -122.686359748687238    45.9318718927808831
-92333  -116.937765259539219    34.2685499965999441
-24232  -82.449319999999986     27.3452897999999998
-99738  -141.383979548387117    64.3965291290322739
-93515  -118.679450750000001    37.5677744999999987
-47992  -87.0535350044850276    40.3167272693745673
-17581  -76.0460340650602262    40.157139551807262
-95013  -121.740644212765915    37.2153570851063833
-50276  -93.913110112351859     41.8643250351945895
-89430  -119.301315887508693    38.8042564789509754
-47568  -87.1340096536843589    38.7925593905263071
-37309  -84.7373451552001455    35.3029632522717804
-02331  -70.6825552500000072    42.0101269999999971
-98304  -121.995009411910615    46.7493672741934674
-30728  -85.2490901883306265    34.6938425110348803
-48197  -83.6310533288112907    42.2131475944520105
-95389  -119.658935505339869    37.6397425930298155
-31635  -83.0786254586770383    31.070857906517876
-12509  -73.7353477333333274    41.7060523666666683
-36763  -87.9473810707070953    32.2497150656565879
-63961  -90.2681406413807537    36.577238038610048
-58475  -99.562339513531839     47.1549568726577704
-71325  -92.3239036250001419    31.0150033896360817
-67437  -98.5513227486237469    39.4859730385321299
-49412  -85.941730458502434     43.4656150234771346
-98559  -123.327472750000013    46.9588480000000033
-21436  -80.6509033684210408    37.3505610526315834
-95017  -122.243557380059414    37.089866625370135
-19335  -75.7206903296962395    40.0222897940670279
-68453  -97.3266190296391329    40.3998276784793333
-07472  -74.5116254999999938    41.1868861666666675
-76906  -100.460118166666675    31.4284068333333373
-68827  -98.1838316437956991    41.0384384802919442
-89046  -114.905575308383149    35.4690098802395326
-37101  -87.6421523312348683    36.0991421621975164
-85230  -111.679204136363651    33.0485706818181839
-33609  -82.5063939139189984    27.9428358530648318
-50057  -93.1559795524296987    41.1789069420290019
-91791  -117.895414979212603    34.0604064902176447
-37696  -82.4304115000000053    29.415673833333333
-12841  -73.5099517940199974    43.657454621262417
-62338  -91.2540559693344449    39.9782622008227264
-45330  -84.5265134184396345    39.6488041347517495
-16896  -77.7011514285714213    41.1874662857142795
-24710  -81.26301633333334      37.3156263888888873
-85710  -110.823784274859889    32.2122887642950602
-03835  -71.0669494988040924    43.372159949064482
-75006  -96.8849478076501782    32.9660997767293651
-63017  -90.5360378703428665    38.6450442174060242
-62288  -89.677113438952432     37.9894154330442717
-64076  -93.9546901017668716    38.9866031494910033
-43318  -83.9092906815333919    40.3094425297020109
-87322  -108.662717457413208    35.5281361293375468
-95135  -121.753321573932453    37.2941306235112009
-35748  -86.3912153950689259    34.7203947167597278
-03902  -70.6237051770385023    43.2148716676935862
-59276  -105.182546444767411    48.9120149389534902
-18459  -75.426486636363606     41.5073633939394071
-64641  -93.4044198653061244    40.1504169600000367
-93355  -118.524282374999999    35.4826525312499967
-57068  -96.4947340749803999    43.5731589526030447
-11333  -70.9616819999999962    42.0140975000000054
-59730  -111.236902482693196    45.360147663092512
-33344  -85.6585599999999943    31.0707260000000005
-33574  -82.2528069090909071    28.2925575909090945
-29456  -80.1199190002756438    32.9931011879835552
-60933  -88.271483006097597     40.4651422987804921
-79519  -99.7382565026315859    32.0580359210526282
-80212  -105.047290829275568    39.7712894666247223
-54911  -88.3942019393832226    44.2785357187758208
-33469  -80.1053064051526746    26.9696639539948855
-65388  -93.1445195000000012    38.2540052499999987
-53574  -89.6341095560459138    42.8189331491615519
-93102  -119.907815749999997    34.5451204999999959
-65679  -93.1096450602865957    36.6068654006488714
-14748  -78.6469771179302484    42.1411841083032712
-77095  -95.653763796098275     29.9031394054469182
-57007  -96.781396944444424     44.3186094444444336
-05405  -73.1953110612244728    44.4716312040816391
-14816  -76.7364871991786259    42.182835796714599
-35056  -86.8472732307692326    34.2095393076923102
-72512  -91.7476482224910797    36.2222990213335763
-04847  -69.1885503576826295    44.2450443029538789
-22213  -77.162439624831336     38.8959693819163093
-13209  -76.2430430387000655    43.0785343565658252
-79525  -99.8215555053810562    32.6320247253551798
-49779  -83.8853729209987762    45.4118783344248769
-53220  -87.9925780082786275    42.9675500523910685
-35491  -88.0871622542373274    32.9261521694915302
-63875  -90.0139628999999957    36.0953029000000001
-26432  -80.8093228888888859    38.9773763611111121
-61733  -89.3218302424630366    40.6168085537155079
-46712  -85.4253185714285621    40.6971104285714276
-96112  -120.1411037398601      41.8756677636364074
-47302  -85.375281404159395     40.1540337361715203
-15728  -78.9770984042484656    40.6795841512713423
-01890  -71.1463669128571468    42.4515350642285938
-40461  -84.3949656282361644    37.5935506764138339
-83353  -114.338380430907435    43.6817427396600593
-62950  -89.5592826631312136    37.7535769747474887
-32157  -81.581777574181146     29.482267649325653
-68601  -97.3601705927567309    41.4401740431660244
-29672  -82.9437709348477625    34.7362215488635186
-34688  -82.6977643711401527    28.1464833051054448
-15042  -80.2086429338874893    40.6845856215773054
-26003  -80.6724336834033267    40.0727961904216698
-36737  -84.7883143333333464    31.2412466666666653
-65016  -91.929830602659095     38.5481575769944982
-14222  -78.876335705765257     42.9189547852882427
-30507  -83.7724905656203731    34.2487562499879132
-48331  -83.4083213818051519    42.5080566679556568
-72126  -92.8391420002793097    34.9612810502650788
-40844  -83.403088867441852     37.0695232837209332
-61820  -88.2447440022787362    40.1143850196553799
-67003  -98.0385593666987205    37.1481614412897514
-27265  -80.0248147492524282    36.009722560324569
-59019  -109.269922955159444    45.6090355050385696
-59711  -113.044512300391318    46.1476244237987316
-97436  -123.604724649490734    43.6371454717679228
-14051  -78.7020422202211023    43.0284889535461801
-01027  -72.7010639191680355    42.2766142972243131
-05440  -73.2840317051471715    44.9490378943628315
-41122  -82.8652028571428474    38.4354734285714343
-31220  -83.7991390425279121    32.8712693728396843
-76161  -97.4250889999999998    32.8328365999999932
-66830  -96.0932780239520241    38.6183245312232657
-44880  -82.2225378471518837    41.030898692047387
-76932  -101.485160629970039    31.2463534284294511
-43403  -83.638263072727284     41.3769871272727343
-83612  -116.52114678570247     44.8364224511083904
-15727  -79.3066086263736452    40.5594501428571377
-07764  -74.0173987388535579    40.288062651929522
-27259  -79.5202754999999968    35.4821784999999963
-38075  -89.1550584607465879    35.3613909637524131
-12977  -74.1008536049382514    44.2956010123456849
-36470  -87.5160971535087668    31.5280934166666462
-40162  -86.0108969706623299    37.7502191697547715
-68652  -98.0761546902106431    41.8640250706319463
-07202  -74.2182227022684486    40.6547816342154604
-79324  -102.776271748251844    33.8642226524475447
-76073  -97.722852511889144     33.0987991550928129
-21847  -80.5600409999999982    35.7007967500000021
-62655  -89.9922424298779333    40.1660305998475451
-59660  -112.462271333333334    46.8083951666666636
-48213  -82.9950808501946256    42.3973472246297618
-89018  -115.663147916363513    36.5126739727272565
-26581  -80.554206481159369     39.6444651681159286
-54546  -90.6721946205727534    46.3081150330728875
-23024  -77.7774198062179494    37.9289796675959963
-26384  -80.7109368055173917    38.9682789963218994
-21762  -77.2467492340425252    39.4845464255319101
-22964  -78.9878458449744727    37.7153611533219575
-22460  -76.6145044072442687    37.8721701570108067
-35053  -87.0736709157940822    34.0441783332520913
-02322  -71.0465128584069703    42.1262006110409075
-68662  -97.4213433073391855    41.187100096330262
-86311  -108.587406958333375    35.5834034999999957
-65778  -91.312570235955036     36.5313986741573089
-13316  -75.7590220931921436    43.3679702539477319
-61761  -88.9778172401057219    40.5188327842886977
-97476  -124.428016442557634    42.8197982662337111
-19086  -75.3712358024377949    39.8899962712910394
-24467  -78.9751140703466348    38.2605668182430421
-81431  -108.357417997073057    38.1755414224390464
-23175  -76.6074284103636387    37.6549710810412606
-34602  -82.2904976264504882    28.5005193012239246
-34285  -82.4342699203327669    27.094469031780438
-61754  -89.1587571200632283    40.3263055458136677
-14767  -79.5047610814689847    42.0515806112283599
-02060  -70.8857924893616911    42.1006805106382913
-81004  -104.67528599256967     38.1544937545914564
-49660  -86.2490490596263868    44.2387728927026416
-99113  -117.146696945980594    46.592420529260508
-62206  -90.1685002936197577    38.5631053041390643
-59237  -106.916368904761924    48.3536470000000094
-78739  -97.890648454981303     30.1828090782265726
-22179  -81.8478490000000107    29.1291832857142872
-38423  -90.2735136666666591    34.3580833333333331
-43541  -83.828508798076939     41.3014023557692411
-88240  -103.143750761940154    32.7127814820993805
-51106  -96.3505571903347828    42.4662975460762411
-64063  -94.3560592282428701    38.9130203022839183
-64750  -94.1160575337954839    37.9350536429809182
-08511  -74.5605818726158134    40.0457308065395523
-83217  -111.879273753815951    42.7630768719842536
-17841  -77.3694429099443397    40.7102220200123881
-83823  -116.554422855421905    46.7777856383891901
-24739  -81.0351530234510591    37.3715109562992041
-95742  -121.230133757388728    38.5658785888275872
-65962  -91.591374799999997     36.6919111999999998
-45449  -84.2379935766253425    39.6627516494914616
-59304  -106.235707399999995    45.1266316000000032
-95683  -121.099458466112097    38.4994618892045395
-80622  -104.474511196261687    40.5394424018691382
-46201  -86.1096470395376912    39.7757671637806496
-95045  -121.540596374999822    36.8426350556308222
-22103  -77.2339763333333309    38.9316159999999982
-92276  -116.353320232275905    33.8102946290423034
-13218  -76.1603192500000006    43.0578912500000044
-93222  -119.160345597448497    34.8466537324593162
-55373  -93.728795215635941     45.0938838870478165
-89156  -115.03549481454688     36.1998252772204623
-01012  -72.8386054066193509    42.3887686518912616
-32465  -85.1956309421302223    30.0707536565228573
-73538  -98.3027772662848776    34.7631863495174542
-17032  -76.8716884038168047    40.4804818180524109
-33853  -81.5517213983498834    27.8976667070201501
-02770  -70.8387473828918957    41.757846803227288
-56017  -93.8117921408220496    44.3004873380821138
-64015  -94.2967126287055777    39.0210244327854525
-96797  -158.006627223140526    21.3908016446281053
-37821  -83.1962365171009282    35.965116476401505
-31709  -84.1823691347849632    32.06400553764108
-70647  -93.0089433220309587    30.2531532551319415
-12738  -74.5867153864077608    41.6617203436893462
-62780  -74.7335245000000015    41.4068129999999996
-44853  -83.3067928199167795    41.0508025078837875
-05053  -72.4992206765881093    43.7126976010661963
-62970  -89.0967630719055848    37.2078161597328787
-47123  -86.4760104161290144    38.2791018935484146
-70517  -91.8635163795193392    30.2963346728822707
-81248  -106.412509987499973    38.4837950867188141
-36059  -85.834874058823516     32.0700662941176518
-54935  -88.4363750216363229    43.7693503364947958
-62047  -90.6230128227146992    39.1503340927977419
-29745  -81.2020069877425783    35.0060164043066351
-36420  -86.4923937498277127    31.2476885750439131
-66758  -95.5623874245900993    38.0161319590163913
-17631  -76.301872000000003     41.0345410000000044
-13342  -75.1846005697479001    42.64193825714284
-78157  -97.6348176666666632    29.2644870000000026
-35242  -86.6779479068260343    33.4158229815428953
-43076  -82.4079685163130193    39.9101123841122458
-36104  -86.3088423044355011    32.3766382205333301
-89716  -105.50133776470588     44.6144734117646991
-31638  -83.5084268610905269    30.9244055862583913
-02126  -71.0907879673220862    42.2755370965875414
-97069  -100.304647799999998    35.5639848000000001
-93601  -119.726198095768495    37.3803907969098503
-65036  -91.5597437142857018    38.6708038571428503
-66450  -96.3073951249999993    39.251282874999994
-45808  -83.973702486607209     40.8322185446428776
-11501  -73.6399481157895082    40.7474439723197008
-74942  -94.9816528021977717    34.8968628241758267
-23031  -76.5476082800000057    37.6121297599999949
-45887  -84.3559535851525624    40.7100333916898975
-29860  -81.9678187821809416    33.6022944603986957
-66542  -95.5521935163023812    39.0180555891829641
-42045  -88.2613428614563276    37.0641214229533915
-49744  -83.6630928377424397    44.9929717830687608
-61103  -89.0814616313948164    42.312153418727469
-54849  -91.710848485853532     46.4935981161875915
-34288  -82.1295321179844677    27.0529883624998497
-13757  -74.8889854916102422    42.4123593190173196
-23347  -75.9650780471143321    37.3575902650176488
-97427  -122.786471999999989    43.7022846666666638
-57233  -97.4011688883299911    44.5119962022132327
-87103  -106.834602909090918    35.3725197272727243
-47240  -85.4606937636814195    39.3296892741427726
-10004  -74.0158890911062457    40.6966554316703153
-68658  -97.2996858352181846    41.2077945161551256
-74153  -80.2129704999999973    36.6399258333333364
-82227  -104.73349260092958     42.7499703320052618
-68730  -97.4905096704544718    42.7744480872326349
-07402  -74.3934610833333494    41.0127141666666617
-32276  -81.1841362307692265    28.6512390000000003
-19097  -75.3714959999999934    40.0609683333333351
-52301  -92.0794253481531797    41.7944856224301802
-16510  -79.9914311988086553    42.1215085595620664
-38649  -89.5205340869565021    34.9561721521739273
-63664  -90.8525663180065806    37.9260165033076362
-13789  -75.6384650000000107    42.2453843333333339
-10605  -73.7470553950616505    41.007666601709559
-33738  -82.7811590000000024    27.7857580000000013
-50654  -91.6015512628203368    42.4687115810023315
-06390  -72.0029303738141238    41.2673921290322241
-46165  -86.6542855796102458    39.8495214776603603
-96766  -159.367187433376188    21.9752717061473923
-58793  -101.0272148047721      48.8662351243673001
-53934  -89.8441010606538129    43.9788110443977374
-79062  -101.494554146464637    36.0155535530303013
-11226  -73.9563083292397607    40.6456740233918339
-52650  -91.1641546446828102    40.9467488953516749
-42153  -86.054308363681713     36.6692164651741592
-40691  -84.0898765000000026    36.9244230000000044
-39059  -90.3425288212749251    31.982782906083834
-95691  -121.549067565160613    38.5583958125462374
-65077  -91.8031730974133069    38.7641138343423819
-73738  -97.5778791387336355    36.4409202951582998
-49230  -84.2307900903972211    42.0891355465324111
-31002  -82.5836767573253638    32.552524149574765
-84072  -110.690946640540446    40.3465675824324421
-92230  -116.783378882971718    33.9119613136094884
-15270  -80.0444616000000053    40.3811088000000069
-23511  -76.2978260951156528    36.9379105835475414
-48865  -85.1172586763669159    43.0846357945326019
-13656  -75.9545392285276506    44.1925248346626205
-44706  -81.4124736095201627    40.7653304761992885
-46915  -86.3931184919354962    40.4824781801075062
-72467  -90.6768043695652182    35.8418393478260811
-28693  -81.5485099927350916    36.4652890569443713
-85616  -110.315491703086749    31.6817900295601937
-38002  -89.7165087529329099    35.267362210579293
-38119  -89.8457617722712314    35.08066695541347
-67038  -96.7246447946189392    37.1463506089685893
-49307  -85.4804250915512966    43.6939666313783022
-28124  -80.4055764508836432    35.3963802135394587
-38457  -87.2916611641321794    35.030051703985265
-55084  -92.6926858060342909    45.4395878550646017
-03867  -70.9771317021309756    43.3023106093702026
-33620  -82.410583346153814     28.0638111153846168
-05443  -73.042959555491521     44.139358434563519
-12158  -73.8208377806410567    42.5473442665747825
-84021  -110.399843589001662    40.1656904291077979
-31217  -83.5334677175272162    32.8419532110611385
-03441  -72.4371037876923225    42.7780085399999663
-46951  -86.1100442974843219    40.9465721335471571
-79782  -101.820532775856378    32.1473541963377443
-98548  -123.191372268602208    47.4306365457053047
-42726  -86.153553460481632     37.4088147735985856
-77482  -95.883684388942882     29.0450761454898156
-91423  -118.434086484198858    34.1444579632442071
-20774  -76.7973755271025595    38.8827964607415169
-23867  -77.4745755669545559    36.8128613733352523
-17058  -77.5207142628533035    40.4997398270345101
-83287  -111.426440104221982    42.0280330395588351
-62298  -90.1632010455615784    38.3219754467961451
-18546  -75.3902942222222237    41.1109769999999983
-74366  -95.0387643918170539    36.3896313938974245
-95747  -121.34385068279839     38.7708057463489553
-69045  -101.365611566594524    40.4435510979122199
-15313  -80.0222149834368395    40.0643863664596651
-86508  -109.062679269230756    35.3449051538461561
-75468  -95.4058150166943477    33.5318823864774274
-30281  -84.2114925103628877    33.5547340683008812
-13355  -75.4317629948525052    42.8216682765559185
-05146  -72.6053850776679184    43.1848998153951058
-52530  -92.3033463439768269    40.9910795878084002
-16432  -79.8355085000000031    41.8109324999999998
-47080  -77.0871677142856981    41.799366571428564
-46320  -87.5072280929660025    41.6141012025088131
-43736  -81.2525365588235218    40.0695681176470657
-45848  -84.076352903225839     41.0249882741935537
-23970  -78.1768871983349243    36.7378790539387623
-48195  -83.2046288222219204    42.2054996305343408
-41313  -85.6695049999999867    38.541409250000001
-20636  -76.5664216858287716    38.3454536746723349
-88012  -106.714109644314433    32.4036105003924462
-12212  -73.8176924999999926    42.7405894999999987
-29671  -82.7128017624294074    34.9253826178178031
-84116  -111.939976706109405    40.7879355888531734
-66561  -97.0102516666666617    38.3627119999999948
-73018  -97.9442171464079649    35.0359164461439505
-95270  -120.22799517187498     38.7819916718750122
-05474  -73.2808389429473834    44.8343883986402929
-41832  -82.9501406671428612    37.1439978228571093
-62996  -89.1594139883076195    37.1695606750769585
-37129  -86.4308337188396791    35.9131016846011022
-17701  -76.9936909504532423    41.2790324938972191
-46166  -86.5871545373134097    39.4281190095522192
-72616  -93.5615647587645043    36.3541872224920226
-93383  -119.021321     35.230342499999999
-73096  -98.699250477406693     35.5319166970887323
-73072  -97.4907623659085374    35.2170959903147391
-44825  -82.9308359836065847    40.9521338196721274
-74731  -96.5669168790280565    33.8737453946454679
-04593  -69.2713657999999981    44.8357644000000022
-37363  -85.0686743979498061    35.0891287291333782
-71447  -92.8112726035413687    31.4268909271183858
-33471  -81.1417730994216555    26.8645395815028643
-33774  -82.8281192130512807    27.8822487822728355
-98817  -119.978746013227408    47.8132257010581796
-48465  -82.6896552090450996    43.6180083095477045
-38477  -87.0093954280114446    35.0538478163459359
-03065  -71.6490329090909199    42.8108024545454526
-68666  -97.5972882366346113    41.1133906783523173
-49548  -85.660996087764488     42.8638486180450542
-99562  -149.860521818181809    61.5392298181818234
-76676  -96.9437728279569768    31.8601339381720301
-37686  -82.3425084254941027    36.44135649740155
-98368  -122.817601512127894    48.0853807050902233
-57700  -102.628289199999998    43.8650005999999948
-25557  -82.1655478261672414    38.0976398356879642
-37371  -84.5633067499999953    35.4463538749999927
-51109  -96.4823929477416016    42.5529659992535159
-06110  -72.7355229890077339    41.7318680805109992
-21627  -76.0527778333333657    38.2389413703703696
-23480  -75.6931774647887465    37.6066931244131766
-25446  -77.956274670833281     39.2397839524999199
-07460  -74.547726511474508     41.0972570740103293
-78855  -99.230456999999987     29.8263319999999972
-16679  -78.2043141689022434    40.1608920298062202
-97455  -122.918517469153159    43.9670712180773791
-56096  -93.5899533465725568    44.2337981240155003
-97036  -122.65319949367084     45.3988975949367131
-19008  -75.3612515252832793    39.9746417141062906
-84022  -112.722085837897112    40.2572462760132552
-05937  -73.3554464999999993    43.9774104999999977
-66101  -94.6256705601865775    39.120085948725027
-44003  -80.5706254321870574    41.6183637194938711
-98819  -119.759786478435359    48.5587778174523947
-84601  -111.688057668745401    40.2352214492776952
-21030  -76.6517536822357073    39.4812818220939192
-70094  -90.1827411550529376    29.9199973559453163
-17061  -76.9152741250121039    40.5564796000000101
-70542  -92.5534088880967118    30.0213978176712217
-36536  -87.7208824545454462    30.4345880909090951
-61614  -89.6073508313292706    40.7571154189414671
-46807  -85.1456686303271795    41.0458413286138324
-25832  -81.1032693824043207    37.7279244119422685
-61443  -89.9329286633653027    41.2551371833210183
-81087  -102.445723009900945    37.3692013828382628
-15680  -79.4757892674418542    40.4799738255813963
-06451  -72.823200908537288     41.5357096063816016
-34711  -81.7411327835328336    28.5233278504339971
-43983  -81.2061759520957338    40.146942735710418
-89161  -115.367067721633859    36.0589855975794435
-31327  -81.4064813790849939    31.4617333725490163
-66933  -96.8676613478261004    39.6503608867542852
-31533  -82.839641918639785     31.5261369677970933
-79394  -90.6189522500000066    29.7011167500000006
-71458  -93.1148813333333436    31.8971109999999989
-70820  -91.1805758393463179    30.3764130092507898
-43082  -82.9087831232347412    40.1557598888168883
-71851  -93.9254265553601613    33.850455176918544
-80532  -105.44478955447596     40.4664398077723888
-76684  -97.1187637499999852    31.7228576666666662
-89530  -112.783715857142852    34.0010034285714298
-46131  -86.0519695362198433    39.4834222386799851
-18520  -74.4890582727272772    40.2675603636363704
-16422  -80.3167321750000269    41.661128990000023
-18434  -75.5669822077098559    41.4722080063492768
-30410  -82.5137531671641824    32.1814231787313219
-25911  -81.1856976708074427    37.749668204968934
-86402  -114.091074016509566    35.2495873419811119
-74423  -95.2103916056338733    35.6498961197183135
-79701  -102.086097742587057    31.996187363850634
-60929  -88.2974443508053355    40.8815928919472142
-02852  -71.4657379047109345    41.5850278559610373
-90027  -118.287690051857709    34.1103075783212546
-12853  -73.9605330015602647    43.6985252598010661
-13674  -76.0596745208333402    43.7369821250000044
-25185  -81.2132916111111172    38.2377842499999758
-87718  -105.287681899845992    36.5458536723163405
-47529  -87.074702661525933     38.8701268969156146
-67516  -99.6949884571428981    38.4413830666666669
-73430  -97.3259563415962674    33.9188704853743417
-24616  -79.9036696097560935    39.1364132764227719
-04673  -68.67358829227949      44.3040073915440971
-93117  -119.913724450656815    34.4518443001691637
-31206  -83.6812993402383825    32.8001205939160911
-21557  -78.9278088136607749    39.5004472357570862
-14717  -78.185225379578057     42.3699489655937853
-95411  -122.821122903225799    38.5952375483871037
-46391  -86.9141355936995694    41.5603676631467138
-50655  -91.8958608415370009    42.7728570664940193
-32224  -81.4610453676744868    30.2816551913300529
-49274  -84.7729286972736844    41.849285054528373
-08533  -74.4906327853508543    40.0791478882918
-44507  -80.6557327001692528    41.0743185702992761
-76884  -99.5535437472826317    31.7074917663043614
-29164  -81.4178324030635849    33.655005918463516
-73026  -97.291408714332718     35.2307050138322353
-22528  -76.5503441249999952    37.7933638749999972
-47993  -87.3875174184359196    40.3011527881393619
-01247  -73.0967368264004449    42.6948515648918274
-71862  -93.7150418478516798    33.7591314781237841
-40004  -85.4555424816106211    37.8063254777942603
-14893  -77.1062116197183229    42.4642271056338103
-39322  -88.5224700681752665    31.5819267951733771
-40213  -85.7107620699710111    38.1877659497083712
-43947  -80.7830903008459842    39.9589245871864094
-29079  -80.1083203436893143    34.2920863553398476
-11765  -73.55533524253282      40.8810463440860588
-35112  -86.474585291536016     33.687491846394984
-41526  -82.5122768717948674    37.4339780769230757
-75812  -95.3855554705882298    30.9551122941176438
-15640  -79.7322170492610951    40.2256601231526929
-46217  -86.1840516135484478    39.6595897899552057
-72419  -90.3319632588332269    35.7509596992604344
-38709  -91.0395565000000033    33.3779004999999955
-14801  -77.282926374067344     42.0988868973736814
-87301  -108.747368642942348    35.5173165009580956
-05454  -73.0206015776073656    44.6947666645955621
-08051  -75.1793410900924215    39.7873999207850133
-14839  -77.6397578422285193    42.1392894517789287
-84331  -112.226549324649326    41.9731173667334758
-50603  -92.4756590227388386    43.1895137549266934
-05859  -72.4365442639299602    44.9596253320156123
-23186  -76.7188508378378202    37.2836010540540599
-99802  -134.401166999999987    58.2813977499999964
-15560  -78.9069210566037071    40.0177217688679008
-03227  -71.4396622514449433    43.8062749325625589
-24260  -82.0112789843201284    37.0317236344689746
-26691  -80.6654959336323287    38.3878408520179235
-80908  -104.699209833492901    39.0385003521975946
-45156  -84.2120432222222206    38.810565402777776
-97146  -123.920108149272423    46.1295597315568386
-75845  -95.1110022524823506    31.1163484673659418
-84069  -112.467902766514797    40.3517852340546668
-29534  -77.9369280000000089    35.3523476666666667
-23018  -76.4587241428571502    37.2622617142857138
-00727  -66.0560355643189325    18.2341565322648904
-33825  -81.5005166243658863    27.5986777012947826
-98339  -122.762828284771615    48.0268400179468742
-38118  -89.9260524747236758    35.0462199456216581
-03104  -71.4446958020442509    43.0086367037734689
-40744  -84.0637995592650356    37.0566724078360394
-34201  -82.4707141755992836    27.404512013735534
-02481  -71.2771262137836317    42.3138945327332934
-72336  -90.7479310689655279    35.0113128275862024
-96930  -101.169659624999994    31.1306418749999985
-72203  -91.7560413599999833    34.9603449200000043
-15761  -78.8905494814814858    40.6350115555555433
-30473  -82.4738501482231072    32.0190579158054405
-13657  -76.0452475000000021    44.0282180000000025
-74064  -96.2832459999999912    36.1389994666666681
-75101  -96.6958476926069324    32.2664587315175169
-20136  -77.5666495208353979    38.7469364689176672
-92539  -116.667408391473657    33.5357750747388295
-07926  -74.5701468878504841    40.7981108504672676
-45354  -84.3767093204225773    39.9011431866197128
-73070  -97.410362704545463     35.2232385227272715
-08110  -75.0587673083370959    39.9647150362483217
-97875  -119.201995060568336    45.7953290199811889
-61264  -90.5772837421644113    41.4165204538442921
-31805  -84.7444572336517012    32.2900477273641044
-37048  -86.6017308297941497    36.4974383294051634
-66219  -94.7724987292831429    38.9659572537570256
-74543  -95.4584214563758451    34.341198255033575
-48038  -82.9440892098091354    42.6021136325785577
-83714  -116.277586542176294    43.6842056364640499
-81008  -104.628693144147135    38.3341452881208156
-04271  -70.4986230595238226    44.2619852857142888
-02187  -71.1111185000000035    42.2079056666666688
-69353  -103.474779161290314    41.7643841935483877
-46791  -85.2496251299491661    40.8338770710660199
-39326  -88.6811732359983438    32.5789593116716389
-28644  -81.2821335058806937    36.4264381014072569
-48242  -83.341338578947358     42.2244540350877031
-13844  -75.6463836925549344    42.6059258441349868
-30819  -82.5889837142857175    33.4584432857142886
-97148  -123.227634148878721    45.3551920376185009
-36776  -87.7344475616873183    32.7557677704745842
-72757  -93.9853793749999937    36.3596445416666612
-38601  -89.4750577706349901    34.4756529701058057
-38560  -85.8630031173430268    36.2234250755513116
-00976  -66.0040336574163007    18.3508528693780022
-44878  -82.5256198418231719    40.9502476782841427
-07065  -74.2824800568825196    40.6081333532348978
-16873  -78.3494467499999985    41.1084509999999952
-21713  -77.6658988802408601    39.5226276981928422
-59252  -104.822631442326028    48.9041558436605825
-06412  -72.4694554279403746    41.4029881108774021
-17945  -76.3726718424657776    40.7841944178081945
-17363  -76.5908261736128679    39.7675153315342271
-97453  -123.891335118521482    44.0296436538600631
-78142  -97.7950147379678896    28.5317949572192333
-70421  -90.4000597142857174    30.2819577142857206
-40947  -83.6972565333333449    36.6968581999999941
-16677  -78.2542186745562844    40.799726023668633
-58650  -102.621375944370016    46.3184978672922156
-11411  -73.7320950000000011    40.6903418333333349
-58065  -97.9430073333333553    46.9789508333333288
-43752  -81.0116794999999996    39.7169535000000025
-35574  -87.9562181467269681    33.5788909546156233
-27209  -79.7654471177453672    35.3454051465977912
-98327  -122.657424320906628    47.0963403596977344
-64211  -82.3100524999999976    27.4311155000000042
-97130  -123.934529495579071    45.7196707577364805
-07028  -74.2047109948275363    40.8032563818965954
-14721  -78.2687093333332484    42.0120355102040577
-00653  -66.9016920862982971    17.9870409394398223
-92070  -116.721348525761229    33.1577916980964673
-64134  -94.4995884293981305    38.9307820072335744
-99764  -141.866281813688175    62.9865219581749045
-64701  -94.3384042353790306    38.6350948651595303
-78225  -98.5257482340239505    29.3882837443868965
-75451  -95.1205386094580376    32.9678921663124171
-93954  -120.951520187499995    36.103864267045445
-22015  -77.2794743441200751    38.7872469494017693
-26351  -80.8355826953288954    38.9304366570933027
-79922  -106.573963478931603    31.8223390587150767
-53543  -90.3594500646939878    43.0566116731672182
-97032  -122.791832491833276    45.1811678653312256
-28006  -81.0942212498502073    35.4067689610545528
-99260  -117.43016837499998     47.6658406250000013
-32117  -81.0570594001645333    29.2358556301606711
-48460  -83.9850017731554033    43.1241864866561784
-76577  -97.1915735023685556    30.6179849824922741
-60060  -88.0215219196216481    42.2652330241633081
-70427  -89.89456743403953      30.7504252878669853
-05201  -73.1722851345333538    42.8825357573335282
-42539  -84.9477065943524821    37.3032476681033671
-87146  -123.924326000000008    46.1093874999999969
-52124  -92.2893217500000134    43.5350605000000002
-79769  -102.539896999999996    31.7545564999999996
-95677  -121.23603421617527     38.7894706779479463
-94530  -122.302823955383332    37.9202142726390221
-36111  -86.271283376307963     32.3386755429745421
-46733  -84.9308615952295725    40.8318464218306048
-27923  -75.936590006992958     36.3680086405594665
-75960  -94.8266601521284116    30.9168670163991059
-38672  -89.9494461508164846    34.9333974433339307
-54645  -90.9279290281689896    43.3159504084507105
-30101  -84.7103159898184259    34.0428984091346436
-18707  -75.9257775050342048    41.138419400897412
-33676  -87.0448028571428551    31.8629887142857129
-05837  -71.8621115282509493    44.6637400646284775
-75365  -95.1558217500000012    36.294286249999999
-75672  -94.3098324069236753    32.5013544988524146
-37616  -82.7470523628956585    36.2194451439099154
-65061  -91.6427237932310703    38.6000191872971143
-58554  -100.920379929331617    46.8078751113248686
-84082  -111.398239768280845    40.3768126661918885
-05041  -72.5551017989556186    43.9660769321148877
-22025  -77.3416103787462816    38.604383287824426
-82642  -107.739268344232642    43.3546295844686824
-80457  -105.276467280550747    39.6421027177280436
-46931  -86.2643970618556608    40.947471876288688
-70092  -89.8990126756588523    29.9019485759096746
-98249  -122.538311770796696    48.0201367873155789
-50319  -93.6487637777777877    41.5417743333333362
-16720  -78.0641996345834599    41.5914353856621162
-36261  -85.5068329555555522    33.7082239333333362
-31772  -83.9535196974606635    31.7091090453809166
-44080  -81.0610539727272936    41.3698723272727378
-37742  -84.1675103726414875    35.6770268133122599
-83808  -116.121677562034705    47.2696170880893476
-64055  -94.3993765682841826    39.0508063847699702
-91360  -118.875190656226152    34.2107884234339679
-74802  -96.9031391571428884    35.3426179571428563
-16864  -77.8451985894736964    41.0892247157894772
-15956  -78.7828485471439848    40.3523602032575539
-54511  -88.8396828803417549    45.6921538585858187
-49111  -86.28835219722842      42.012603749274966
-75661  -94.1543857378550513    32.6488408945921691
-84240  -111.548793500000002    33.2394894999999977
-48429  -84.0011350647752693    42.9120157754283085
-18312  -75.0672595624999985    41.0594357499999987
-77368  -94.8310787870369865    30.4543593240740833
-28355  -79.2014972777777899    35.3951341666666721
-30233  -83.9673000500322928    33.2982982610684957
-49776  -83.6711308049137443    45.2493804820122989
-14722  -79.4651011397260021    42.2100475465753675
-33833  -81.5524839090909097    27.868507000000001
-52571  -92.8150107367564061    40.8750100665468068
-08321  -75.1712197000000089    39.2385788181818143
-60022  -87.7620208874905501    42.1348670605107003
-03755  -72.2404278862392744    43.7159696635309132
-42635  -84.4010942738775043    36.6687807628083249
-71441  -92.1596201624388698    31.95656433288827
-37217  -86.6585013412569367    36.1012540330377831
-73787  -90.0699935333333457    37.0843762666666734
-73561  -96.3942143076923088    34.3297776923076938
-54542  -88.7383430285194663    45.9347936356772806
-46031  -86.0173547743281546    40.2121412119403487
-15416  -79.72893961240311      39.8583109612403206
-57006  -96.7937168548746598    44.2817391486978309
-01523  -71.6897466275264037    42.4665536328440325
-65083  -92.4393667531207939    38.1401477718447097
-78681  -97.7212456270724061    30.5258548844003883
-44438  -80.531952349738873     41.2295783605517414
-93621  -119.092658624440176    36.7369609993602637
-73031  -97.6111496371681397    35.010765486725667
-98828  -120.200351800145711    47.3402884792627674
-63129  -90.3228227773081187    38.4649700120968774
-76523  -97.2729085212766051    30.7882277659574619
-78952  -96.9708812499999908    29.9332969999999996
-37787  -84.4918894000000051    36.0798830000000024
-19021  -74.8991986764881545    40.092452889583285
-64016  -94.2064151758286386    39.1240876624898135
-72747  -94.581406570212792     36.3750453957446638
-69856  -94.3828243333333177    36.5923453333333342
-50265  -93.7460615393493271    41.568367978064316
-85018  -111.984333112395234    33.5021438033085701
-95355  -120.948280560386038    37.6714171144455463
-41031  -84.2835643960766561    38.4258348444777056
-13416  -74.9741689737506931    43.1844226350409954
-06782  -73.048441871034214     41.6631330329624916
-33917  -81.8599920229046774    26.7178591849026468
-49622  -85.2728666604346017    45.0733516026084686
-13026  -76.6710752242465787    42.7416361093202966
-30755  -85.0405655287399185    34.8646693794289249
-50240  -93.8047895503774214    41.2928753012237877
-11208  -73.8730762714043294    40.6746670013535692
-12211  -73.7645706350942731    42.7064281113698314
-98315  -122.723165819444432    47.6908895119047074
-57704  -103.14120245454545     44.0566014545454578
-51570  -95.4529593010497877    41.5177088726717969
-11235  -73.952301573554891     40.584141748355826
-38651  -89.9880792966048659    34.8969248347826451
-30756  -84.9786425517241781    34.9022734482758423
-28023  -80.5950079439891027    35.5641699874604598
-26288  -80.4054301179291713    38.4964048971963209
-32308  -84.2259622785603597    30.4799834397697254
-30318  -84.4459401580259339    33.7924657693195769
-97026  -122.91946912679191     45.1070789990442123
-86062  -106.760278749999998    34.5295547499999955
-03813  -71.0433269609575007    44.0281994299325845
-83526  -116.383118451820039    46.155377670235552
-13684  -75.110663232690186     44.3887880025538024
-29330  -81.8031991766591631    35.0495454267053006
-26590  -80.3108727647058487    39.6718209963689503
-54541  -88.7845929621288406    45.5953670957741295
-70575  -92.1574932272727381    29.948883852272715
-76258  -96.9460503372024078    33.3769093404349206
-45694  -82.7994915679789329    38.7469029290632605
-97123  -122.966751339398598    45.4734423772169691
-25831  -80.9132082917888766    37.9286445524193496
-39825  -84.7170824563688711    30.9481854482757761
-01944  -70.7641006984594441    42.5786449505991413
-73868  -99.8680399999999935    36.2790900000000036
-87174  -106.684737499999997    35.2744325000000032
-53060  -88.0599446444444709    43.4275580488889261
-36874  -85.1947446730177234    32.5741279438384197
-47909  -86.8859438558316128    40.352647847241208
-06074  -72.5548477196569195    41.8354323553967049
-60548  -88.6370790252364742    41.6435965178233687
-27011  -80.6995017171842193    36.2170138491896694
-93737  -119.651585694463421    36.7673421961939439
-00688  -66.6112832781065123    18.4180175088757316
-52226  -90.7394277931034594    41.9922014827586239
-13615  -75.9767013177257553    44.0083139431438042
-15443  -79.8775508436019237    39.9290339763033373
-58338  -98.647407582706748     48.5017807509398722
-14517  -77.8976666508925035    42.5883818996752836
-06830  -73.627088729831371     41.0405112206067884
-46928  -85.6669673732498609    40.4105712101807413
-49827  -85.5512070769230917    46.1253578205128179
-31003  -83.2110391566950511    32.6469810113960435
-15282  -79.99164831249999      40.4356496875000033
-55331  -93.5857409291595843    44.9006853899415432
-17566  -76.1497265784875736    39.8746600629885464
-79606  -99.8021473333330107    32.3676721935699163
-83101  -110.546339966644183    41.880848517590394
-41862  -82.7884056371635211    37.3505226625258544
-88336  -105.310463286567099    33.4035572895522535
-75442  -96.3556250519212227    33.1761411901698366
-45821  -84.5774932373504953    41.2318055458449564
-15005  -80.1813924155576387    40.6455182150981642
-05148  -72.8039873531397461    43.2355196409608382
-40525  -83.4642789999999906    34.894402999999997
-38679  -89.6379570447761154    34.8490249552238751
-63758  -89.5377179677419264    37.1805454032258069
-29714  -80.9171529966755969    34.7058692524379069
-62810  -88.7527068657115734    38.2075565393912342
-47235  -86.1371755389078686    39.0029957224156973
-53910  -89.8120846443534901    43.8987079517304011
-28906  -84.1143644571877758    35.0773386064152106
-46989  -85.4855027357535846    40.4527525420496374
-96037  -122.928205804147481    41.5442729953916867
-75146  -96.7699568721633483    32.5831052148719778
-44333  -81.6295198619802278    41.1536886284842609
-12863  -73.9261495197739578    43.058435384180811
-11804  -73.4569282560739367    40.7653107249756772
-21057  -76.5099814913807563    39.4531378842307276
-44032  -80.6632607102976777    41.6713446512586714
-35096  -86.1180764003716064    33.6117090177039017
-44215  -81.9005986445643543    41.0686112852737324
-29031  -81.4283191423583474    34.6028558811093703
-70506  -92.0669976661371408    30.2063762173876249
-47351  -85.5042541546391561    39.8975462164948311
-12095  -74.3941306633113015    43.0190799819108989
-12149  -74.5671601708060194    42.6245067224194187
-11354  -73.8269133181818091    40.7674038409090898
-80223  -105.00259690266617     39.6982632658610299
-14774  -78.1378743066666601    42.0886322933333403
-35180  -86.8308169009123674    33.8349455718376433
-93926  -121.437461522580762    36.5152782435483232
-62821  -88.1623500645798117    38.0787288450824875
-56309  -95.8021725654633372    46.0736878821655083
-75141  -96.7057503010620678    32.6444682152777972
-67457  -97.9956574362366979    38.4021914509371598
-68317  -96.5057171491065304    40.6806336407887059
-15236  -79.9798636256902569    40.3446973747042605
-37202  -86.780113857142851     36.1578152857142854
-98065  -121.847879620205632    47.5316911811326861
-43916  -80.8142847727272766    40.138472174242402
-17215  -77.891981871559679     40.0903880996067485
-76872  -99.1500612388816194    31.3237221315120848
-16821  -78.2040355451895124    40.9644991107871661
-39531  -88.9688532511827219    30.4041935046286191
-83218  -112.165531508474672    43.3153312754237589
-90831  -118.20019769999999     33.7680256999999955
-32205  -81.7217988914041484    30.3065420336723506
-71468  -93.1711530183519301    31.5020027629213359
-03455  -72.1890258679400318    42.8975362580252195
-97362  -122.779253533382033    45.0699410490593522
-15738  -78.7866564540539827    40.6956965000000253
-32141  -80.8904382341497836    28.9400156679122453
-50645  -92.45975831026783      43.0259259620536554
-37334  -86.5705593888037583    35.1497465761240946
-46760  -85.5649165137310064    41.3447929275568242
-29346  -81.8364998174273381    34.9455356182572672
-31694  -82.1756369999999947    29.7930630000000001
-83553  -115.951310022457903    46.3796033100437342
-50597  -94.4369710796285915    42.9724587043794699
-15535  -78.4466471486008317    39.8264237759512412
-43031  -82.6674846669821193    40.1565253430857894
-19605  -75.9431403146079731    40.3967460642016292
-23004  -78.4061869490980712    37.6785043062070457
-90405  -118.471335099867943    34.0099447327320092
-83301  -114.47797280421463     42.5399364992527467
-82515  -108.592523125806423    42.9095560532258204
-05665  -72.5948970000000031    44.6664060000000021
-24146  -79.8080966666666569    37.0224523333333266
-05742  -72.8788835617811515    43.4418443179001912
-24895  -81.5624082083333377    37.3774510208333268
-31744  -83.9146671620085698    31.3330912935490851
-57735  -103.926928486883369    43.5636621011282301
-13787  -75.6623057841320019    42.1954469805738341
-85620  -109.94794897202793     31.3380542377622362
-92806  -117.874553401631459    33.838134828683053
-48071  -83.1026244049964902    42.5023938760030475
-76088  -97.8874792137576435    32.8315578883049355
-61424  -89.6329271538461256    41.0788454945054937
-63048  -90.3932670217975556    38.2584425120724276
-68068  -96.2088692976190458    41.3975307380952344
-28751  -83.0937025125690099    35.5199948420903127
-49649  -85.5419234842450891    44.5741519768005574
-15411  -79.3584897115299412    39.7489065600615916
-54843  -91.3388548533510232    46.0204696929231432
-51046  -95.6867017427633613    42.9689860211877175
-64779  -94.3746139228352803    38.0875078034993635
-28738  -82.5238258275862222    35.2816020517241355
-38803  -88.7923815333333408    34.1726162000000002
-35014  -86.2649026694000156    33.3668133800781916
-78240  -98.6092350790095367    29.5214463542650485
-00607  -66.1052646250000038    18.2558573749999979
-08528  -74.6056929187817133    40.3846461421319916
-48361  -83.2455786000000018    42.7888918999999959
-01254  -73.3616550849674809    42.3749798562090518
-64659  -93.3000095239129763    39.7885015434782829
-48138  -83.1560802449285887    42.1363423236553558
-57790  -102.222472121500189    44.114883304807087
-71219  -91.7074586431584891    32.3046202265236744
-15778  -79.1869922000000201    40.9671226101694756
-99119  -117.333499385500971    48.484912558274857
-02215  -71.1023413914969069    42.3465253702391138
-38372  -88.1733446595959691    35.1798280127369125
-76629  -96.6550253266009634    31.1636048443350262
-83869  -116.856835786761408    47.9836029410656906
-39762  -88.7886023799999577    33.4574539466666749
-31734  -84.409246571428568     30.8319542500000026
-39425  -89.1273632523767105    31.0395066827201767
-12409  -74.1714366231834816    42.0462652584190337
-11716  -73.1120681764266607    40.7700978299142207
-28111  -80.5493386666666566    34.9713316666666643
-34943  -80.3352232499999843    27.4282562500000004
-45113  -83.9895782785641529    39.3996755322325924
-74032  -96.9088165233160908    36.1967055891192473
-76880  -98.3198884210526529    31.4620173421052662
-47975  -87.2531012962793824    40.4417296696914335
-05763  -72.9980555756552576    43.7232798253871948
-40730  -84.1475235432098287    36.7059965185185462
-77979  -96.624443107088382     28.605815349580336
-47867  -87.3689646666666704    39.8287003333333303
-01430  -71.9227939510889343    42.657342105713532
-64489  -94.5672144451131373    40.2281046246110847
-77968  -96.8291858980766165    28.8982795480769603
-89540  -109.736519999999999    34.257593
-80520  -104.933791634285754    40.1128676323808975
-36272  -85.6333448945802758    33.947973137586068
-61933  -87.9169437551127402    39.5428843838489215
-39534  -88.9210901071428452    30.4031004285714168
-15243  -80.072140532412007     40.3748893788809298
-26448  -80.4882990020759195    39.4143647351720574
-37160  -86.4685569962017411    35.4666236343936632
-50483  -93.990190735869362     43.1015761670814399
-10110  -73.9807365000000061    40.7538579999999939
-04005  -70.4742328260007156    43.4871066506820725
-28372  -79.1787717780930791    34.6979043078770957
-60155  -87.8546465421024436    41.8587417677491942
-70642  -90.5518940833333517    30.4311595833333293
-59938  -107.863101749999998    48.3595655000000022
-58494  -100.28409550335563     47.1748904288908903
-44633  -81.9310451683758316    40.628959352041754
-77940  -96.5717369999999988    29.5252800000000022
-96326  -123.615382124999996    44.6030863749999895
-75044  -96.6579857922599075    32.9601566016495937
-20656  -76.5938167389033993    38.3141918328981816
-62923  -89.0228646416722142    37.3415649270072763
-61368  -89.5141545783232999    41.2677550514780052
-72035  -92.4562273124999905    35.0759532499999978
-63443  -91.8513722307692291    39.6799418434065672
-87729  -104.813169437125822    36.3551556347305365
-05054  -72.1958312039473498    43.8444008026315615
-33926  -82.184398935483884     26.4882068387096723
-50213  -93.7637648922994345    41.0292538339247699
-70082  -89.7975277062315342    29.5789469139465879
-31054  -83.2041341646314123    32.8796973903307972
-82322  -107.559896356481545    42.238131212962962
-92058  -117.351706401715177    33.2370070615300861
-62947  -88.4120791456044373    37.597228083791201
-54916  -88.7202455000000043    44.4266270000000034
-35054  -86.32517225974523      33.5078475231329449
-77204  -95.3456241935483888    29.7188888387096704
-03769  -72.0676834193548501    43.7791539354838832
-15831  -78.6047642500000023    41.353024750000003
-45502  -83.8203917767188926    39.9300093664905447
-78041  -99.487507488114133     27.5477357565307237
-98572  -123.309797232865265    46.5632937663089095
-99903  -132.257219833333323    55.7387643333333287
-87528  -106.978154806263177    36.9224140668789929
-28521  -77.7436896509993147    34.8275513135377679
-63623  -90.8404471678929326    37.6814909632105639
-98596  -122.942222858822035    46.4938976436556217
-47575  -86.8125328559017362    38.322867156081486
-78132  -98.1851401970394591    29.7647832637696652
-72168  -91.9957050612484721    34.4348795477031402
-32132  -80.9141375580743727    28.9800840887972484
-99563  -165.59213331250001     61.5268993125000065
-72444  -90.8770233843428059    36.4285487288329648
-23401  -75.7727502374429349    37.622317383561672
-56626  -94.2437149436509571    47.344023882142821
-61919  -88.1459429143481259    39.7856537190397503
-60084  -88.136281722588862     42.2695952235014403
-65350  -93.0942980671725877    38.6659639130930373
-74759  -95.7000751463046129    34.0527694389140336
-78566  -97.4703530867748498    26.0957226509844062
-26527  -80.0668320416666859    39.666137291666665
-19430  -75.4072508709677436    40.2207858387096735
-97846  -117.173036556652704    45.350694516738244
-27311  -79.4734239694129059    36.4872110605882867
-04991  -67.4285496666666688    45.5694064999999924
-07418  -74.4842394132967769    41.2360316216587321
-83709  -116.301880300770264    43.5689426664190051
-35217  -86.7648185266519363    33.5945190465859298
-35456  -87.4450534314429149    33.0909662641184994
-75932  -93.618967090440762     31.0783299669510207
-54228  -87.6489166597776688    44.2661925094290964
-67761  -101.512689316326515    38.9180445578231229
-11713  -72.9441241264418352    40.7751370794143781
-47135  -86.078415946113779     38.0483160768844684
-01775  -71.5157632564144734    42.431874451384239
-87617  -108.338487111111093    36.7125579999999943
-74951  -94.670710478767603     35.1732881606993928
-24055  -79.997891907930395     36.7557204297778881
-83255  -113.430153749253833    43.7504063962686516
-64841  -94.4134479255951788    37.0787908571428346
-74569  -95.9766361372548573    34.460786496732041
-84414  -111.971651498449177    41.3142524597168119
-71250  -91.600697392983804     32.9725808348442655
-65807  -93.317702246040426     37.1661310825161948
-97437  -123.382186153460125    44.0944177126117509
-91208  -118.230160334510387    34.1891255420450335
-24128  -80.4897776457798244    37.3204331163580392
-24063  -80.4641643333333292    37.2036306666666619
-49916  -88.5421125754468363    46.9888096906021957
-87823  -106.909407419243905    34.1654299885451991
-66544  -96.2825260065264672    39.6927012835388382
-98639  -121.973308978409037    45.6412683295454116
-61554  -89.6247616015204329    40.5623859454864331
-41268  -82.7837446391097131    37.7867599077901062
-59435  -112.114766136170189    48.5873948340425699
-73059  -98.0260614216432771    35.3215698868432924
-77857  -96.7247700766183129    30.7837189035667684
-24380  -80.5015631497874722    36.8642991929933501
-15934  -78.8030277337278022    40.2801863964497002
-56051  -93.7131259545453759    43.5340823892962234
-98224  -121.478467179803005    47.7652640541871492
-25405  -77.9601115353943754    39.4133363277407796
-93622  -120.51853340178674     36.8384241259484853
-72526  -91.757860912479785     35.8732499189627347
-83543  -116.235469937291853    46.282412150943351
-68853  -98.9562565717566116    41.2827289402985755
-15060  -80.2925343402555285    40.3673114760383172
-78719  -97.6766099631999083    30.143654062399996
-75636  -94.8126191111111325    33.0302491481481368
-53565  -90.1615794219549258    42.851377145598974
-11228  -74.0124371794311173    40.6179992757111279
-72651  -92.4780097420911886    36.3896785297586618
-33808  -82.012833152777759     28.1497672222222235
-56568  -96.8075492274882237    47.5133324999999971
-97911  -118.115199154536526    43.8057199112662161
-50516  -94.138301767441817     42.6213306774519651
-57013  -96.6046149556553502    43.2904271903052873
-76507  -96.9810615000000098    31.0718715000000003
-70059  -90.0451311428571444    29.8696414285714233
-27909  -76.2446345343910536    36.2869042417100687
-97133  -123.011741628526025    45.6599353470525955
-12771  -74.6349213397614335    41.374962280188214
-94434  -95.207451666666671     35.7709422222222173
-34655  -82.6674635322429339    28.2035502727319951
-63038  -90.6653169917958763    38.5848704822640798
-38341  -88.0807876939313132    35.8807987410188289
-04216  -70.7527471747540773    44.6311127091957758
-49919  -88.4646071232348135    46.5275607804877964
-61436  -90.2246293099778285    40.8542841356150532
-48060  -82.4498477071144578    42.9830648319233575
-76011  -97.091497142435415     32.757382075927957
-13329  -74.7498214807236963    43.1069320199903316
-58477  -100.522132649950194    47.2199690106277856
-14898  -77.4323550287023323    42.0609178071182868
-61238  -90.1863132748396623    41.2880050193652792
-51101  -96.3966912038759745    42.4943420852713984
-28446  -78.3505028333333229    34.8650791666666677
-33055  -80.2786032232331905    25.9445214510160049
-62523  -88.9533070856102626    39.8432643843351926
-03275  -71.4384377420694818    43.1552781990808469
-10958  -74.428770541380473     41.382203218703367
-84081  -112.026418202076187    40.6108337353877644
-22565  -77.522426387096786     38.1289241935483929
-82513  -109.670028203461001    43.559909815257285
-40334  -83.759351278551577     38.0188547910863335
-95550  -123.879968413897316    40.8079190453172345
-29135  -80.8164934304217866    33.6826337113431009
-92372  -117.627514879953267    34.439995839066853
-84749  -111.5847811857507      38.3933982188295104
-95467  -122.571493425403759    38.8105513586652719
-44301  -81.5203586086257701    41.0438103129786001
-79376  -102.593430475260405    33.1394978958333155
-62089  -89.4959834140844777    39.1299624985915528
-24825  -81.348110052083328     37.4179676458333503
-12922  -74.6877962773973536    44.2918111849314968
-43617  -83.7169945750488722    41.6688248502923315
-94709  -122.266338815565021    37.8788393139659192
-37130  -86.3524542627141898    35.8681258927397622
-81027  -103.7447671415093      37.1839597760674536
-21101  -76.1585546666666602    39.5116860000000045
-27306  -80.0035530094346825    35.2490170370288141
-44874  -82.3650555789473628    40.9646276315789564
-31534  -82.836907031746037     31.516270698412697
-55973  -92.774819732309723     43.8096748230974882
-80406  -106.323809000000011    39.2618295000000046
-32437  -85.8924735228890484    30.4363908199389996
-83334  -114.280318851674792    42.4886806034024289
-49099  -85.6786466775623268    41.7916903947701215
-39571  -89.2735396298904647    30.387671810126438
-38721  -90.783688286392362     32.9946707262658663
-29341  -81.7055130661484696    35.1148483552688546
-17901  -76.2277590886271668    40.6814938986474743
-01222  -73.3173546062053276    42.0589627040572083
-63660  -90.7081092048192659    37.907015720678622
-58523  -101.77663757313249     47.2706105703262622
-24130  -79.9860782727272692    37.6175686363636359
-45119  -83.9991876666666855    38.8781881379310406
-95728  -120.399087246731227    39.3092717646562662
-04850  -69.128552285714278     44.320958142857144
-68878  -99.5142384147179229    40.9636661451168891
-72331  -90.4566232729203819    35.2898508222437854
-57719  -103.040775192931704    44.1453036149020903
-36551  -87.7545544659020464    30.6140382061597158
-29132  -81.1263927368421065    34.3060248421052734
-29055  -80.9141355853096229    34.5670632117338528
-11560  -73.590642954545558     40.8817671906159035
-75795  -95.1079765882352888    31.7266171176470593
-50465  -93.8615114472318339    43.4379417301037307
-30066  -84.5039402365988224    34.036199276976582
-87008  -106.365322550641338    35.1297001551826185
-58015  -96.8065300659025496    46.5884938701050189
-36702  -87.0125067083333619    32.3859573333333373
-68321  -95.6719530664160516    40.3972985087719181
-92922  -121.09472022972966     47.3232785540540775
-34210  -82.6230363477454119    27.4494214431248942
-08848  -75.0999283394040162    40.5932787185894526
-34451  -82.2843200000000081    28.8751504285714269
-20064  -76.9970424999999921    38.932900333333329
-61736  -88.8512924268878095    40.4017562370144176
-28606  -81.3051572286960607    36.0583760902010582
-58039  -96.8035337500000139    46.1545017500000085
-45054  -84.088787798877874     39.4457483963534798
-76639  -96.6965106095593399    31.8919712588454374
-76935  -100.489926722080995    31.1868506414973545
-37385  -84.2985738936405369    35.3472485148895288
-00751  -66.2726356024033834    17.9971942173458856
-36744  -87.571821613614631     32.7352669726360119
-79351  -101.809880433212854    32.973322769404291
-14113  -78.3439774217732321    42.6788878409387067
-90803  -118.127743928353382    33.762103753252994
-59804  -114.113758336363489    46.8615511538032479
-78233  -98.3652294720266553    29.5531649405005901
-70531  -92.5037053399260145    30.2325862886279211
-21851  -75.5416630377360008    38.067585296969547
-10301  -74.0943644488457238    40.6279953790253714
-32633  -82.2257487777777811    29.4856090000000037
-18065  -75.609410583333343     40.6961047916666772
-47102  -85.7916839672337659    38.7507274190803273
-10930  -74.1115871106181316    41.3586156183809308
-15432  -79.8596443885209766    40.113801337748356
-67880  -101.333850433596055    37.5912525974940905
-74429  -95.6574091054676501    35.9604585985540126
-34498  -82.7114081646512176    29.0316257190697691
-70119  -90.0859194831794241    29.9760399027193785
-39040  -90.4140573138615196    32.6450192309281206
-68304  -96.3916866948491986    40.8846603411079244
-72958  -94.1253617430004965    34.9047749692777955
-33394  -80.1391504999999995    26.1216469999999994
-67442  -97.7474882615131406    38.6606842236841501
-43325  -82.8419317023809612    40.6688351190476283
-32796  -80.8430190563813227    28.6269850806853015
-34452  -82.3440527849865589    28.8003387597621341
-65080  -91.9865070985877509    38.6377428308119661
-17074  -77.1547578090450514    40.4760512796335163
-12988  -74.3069744074073952    44.2657964814814804
-24174  -79.6641420180587687    37.3528557968808173
-42122  -86.3583567993532739    36.8653964661804778
-02350  -70.8482109137930962    42.0181320517241232
-45369  -83.6057143162045975    39.955995597372187
-05049  -72.4202310000000011    43.5464936250000108
-67422  -97.6059875414173064    39.0194961327345595
-02450  -70.6465451600000023    41.6045438800000014
-01050  -72.8704743131386152    42.2760989401459071
-56686  -94.9107110587879816    48.8170331793939667
-99628  -158.937591941176521    58.9700543823529486
-49284  -84.6987539080225389    42.3911876243921455
-87563  -105.436024999999987    35.0906245757575732
-45218  -84.5201423081394836    39.2673562434593038
-79325  -102.902082694770854    34.3882272663289612
-30046  -83.991872385385534     33.9425742462115068
-04684  -68.5081352007835704    44.4811473596472382
-85257  -111.918236891416868    33.4686637362398116
-23228  -77.4927088878445574    37.6257732426350131
-48204  -83.1420728994617804    42.3658036329224004
-72135  -92.5328170750260028    34.8802228339450267
-04219  -70.6124652744846628    44.3962793887457465
-03800  -89.1814014999999927    35.8328374999999966
-53179  -88.1246939941995038    42.5146726858468824
-75847  -95.1552099178858413    31.3436211090797698
-25434  -78.4530622153364021    39.4578050612357529
-13470  -74.662742460376279     43.1822909519811304
-98557  -123.27764039553233     47.0470432233902542
-21117  -76.7782827011712925    39.4254085319944636
-73104  -97.5029723753410025    35.4750649162875646
-57784  -103.8822945    44.5056014999999974
-93710  -119.762463031375745    36.8262845241112231
-34141  -81.2294550604317749    25.9004331999999842
-03102  -71.48803757419482      42.9954964022626172
-29078  -80.7156084973852046    34.2014898872465949
-78045  -99.4954982191540012    27.6122867516003652
-38587  -85.6152180594750121    35.8687424291544161
-76461  -98.3358874285714393    32.2327189999999959
-33069  -80.1577635790779937    26.2333192871333267
-54499  -89.2302969886905686    44.7658381774683249
-53022  -88.1738633398692855    43.2362005294117893
-43351  -83.2989004072700396    40.8268725953204523
-49457  -86.1660487623843068    43.3605970981572213
-06439  -72.4091471439393644    41.4212519621211968
-14537  -77.1576410202020071    43.0363587373737246
-24880  -81.5302818890306611    37.6227009311224592
-47710  -87.5749955176522832    38.0165661211387018
-83314  -114.929344863613991    42.9121855514524242
-15714  -78.798860559635699     40.6583482652760324
-17049  -77.2456403094473245    40.6486232088688837
-14861  -76.6932420701005526    42.0925200317583901
-23103  -77.7227343817429528    37.6482743696669715
-88355  -105.657531733870997    33.344809303763455
-69197  -101.910316499999993    41.2963909999999998
-77502  -95.2000326205310898    29.679677559899762
-77520  -94.9667244361826874    29.7476242193598246
-80236  -105.041169201200518    39.6526727605051406
-55945  -92.0500708781142265    44.2762427120404425
-12945  -74.2505466627487039    44.3591256609403786
-88112  -103.135102756389884    34.8274506401104844
-67460  -97.664214260833532     38.3791264671707282
-11120  -73.9433009999999911    40.7462524999999971
-35133  -86.6087688461712446    33.8170462542698544
-78125  -97.9163306385542285    28.5433441566265245
-79536  -100.016910597815482    32.4567168229968459
-74834  -96.8870671021067977    35.7004213387357794
-72561  -91.792658278854276     35.9707091095198024
-91311  -118.597193376173252    34.2582806539244729
-31555  -82.0468849185854623    31.6891628167763102
-41269  -82.6734704871794861    37.8856832307692315
-07750  -73.9824013441414934    40.3330558032424946
-13304  -75.1686520132108171    43.2418668822515571
-24377  -81.5924640625801914    36.9929455593656229
-24018  -80.0284124610937937    37.2187671756981757
-48317  -83.0492266934131038    42.6439502749699599
-62855  -87.8309733809523721    38.5444882380952407
-74463  -95.5506391264821957    35.7626530592885246
-00698  -66.8574098770823184    18.0316366497073304
-72025  -93.0135406976582573    35.0524436994322386
-66065  -95.4003665000000041    39.0476115000000021
-76809  -98.4627794999999963    30.7740724999999991
-92692  -117.643628394817668    33.6108021019351426
-48112  -83.4632654999999914    42.2550156666666723
-62001  -89.7476808632632412    38.8867972052838056
-10520  -73.8823035664246817    41.2184957716945277
-68104  -96.0008225609423249    41.2950799228218273
-41951  -88.4637554999999907    39.5751329999999939
-62936  -88.512659499999998     37.7651944999999998
-11023  -73.73555533443961      40.7979729531710973
-56543  -96.3252068110831488    46.2873042670025185
-24536  -79.3079592484022982    37.4914355389859608
-46770  -85.3228350006687748    40.8367520254095169
-68005  -95.9083512647087275    41.1501233332638279
-49295  -84.3191030909090955    42.4013904545454494
-76377  -98.2386125819792682    34.0216452540620509
-26269  -79.6327924698878036    39.1078222864145317
-44903  -82.5217950814948438    40.7728781571746879
-26264  -79.8378108271277682    38.5264246236702022
-04736  -68.0224452977003295    46.8832058067123327
-18356  -75.1147285578634865    41.0120216201780394
-30510  -83.5838748185757225    34.4477637794740801
-62461  -88.6612350394086661    39.1824090804597773
-88330  -106.071012214084647    32.8349781258216069
-28374  -79.4644294955148496    35.1946103343726904
-53558  -89.2905630622064876    43.0099783427759235
-30096  -84.1554361243014455    33.9795108316067314
-70778  -90.8859750099297798    30.1725199538551117
-13308  -75.6675205946896199    43.2459598049308696
-97488  -122.499577501365877    44.1351456458333047
-13421  -75.6478742898507903    43.074957107002156
-82430  -108.181453026666645    43.8051472666666655
-56754  -96.195908260940044     48.0021203646677463
-00747  -66.9561479500000161    18.0686027750000022
-50435  -92.7512956400264272    43.1572007219285894
-87062  -106.755483184671093    34.4938906662643276
-00901  -66.1122789978495575    18.4655403548386978
-52060  -90.6764369216598141    42.1006975964580832
-64728  -94.5167842777778588    37.7030184368686818
-95340  -120.462230751864865    37.3050089478374005
-69145  -103.672712910148448    41.2348233890894846
-39827  -84.2037531260639156    30.9475655827127092
-77865  -96.2210299654189214    31.2290553451777342
-13350  -74.9863407090379042    43.0477322151951682
-40207  -85.6550274232317719    38.2639193385034204
-97419  -123.373180492555562    44.1708123796525669
-14545  -77.7085081615384894    42.6599841692307535
-08067  -75.4070986125378084    39.734729238670738
-27920  -75.5485711651475782    35.2711279324396116
-15076  -79.8348432461929036    40.6138961243655103
-62966  -89.3419525650339921    37.7681646438831464
-23983  -80.4221547333333433    37.627660066666671
-12518  -74.0420846877323982    41.4261025767391473
-31302  -81.341604795610678     32.1307116447187369
-84746  -113.360467721623948    37.2449360472244848
-61876  -87.8223401052305945    39.9113199713574005
-47951  -87.4506852317678351    40.7906715414364953
-10403  -75.3836275882352851    40.1460873529411657
-46162  -85.9525289831932184    39.549934435294162
-80102  -104.444715364904752    39.7233757709660793
-22125  -77.2613338599999508    38.6818665622222184
-15107  -79.2089444285714137    40.5730282857142797
-37172  -86.8669421464958731    36.5180031145809068
-77033  -95.3387067980459051    29.6694713438995805
-48601  -83.9132540315062272    43.4093103153826974
-19510  -75.8798113049449938    40.4460053382555458
-85253  -111.961926479159004    33.5449186920038471
-44627  -81.8311557167876202    40.6579013694646036
-15927  -78.7838167354840095    40.5383141763441017
-98950  -119.989813841491937    46.9050443170163476
-31825  -84.6655097502368506    32.0928130767287882
-07078  -74.3266974480177964    40.7379219597648898
-53940  -89.7920148648648677    43.5937897027027077
-88039  -108.882665055039809    33.3894554542440147
-58731  -100.968336141353348    48.4179774917293457
-11216  -73.9489436931927031    40.6803331994247301
-17098  -76.6238305311293999    40.5801003597796281
-30214  -84.4819595583706615    33.4887557716640742
-63451  -92.2093028808510127    39.8973778127659742
-77071  -95.5196408993727459    29.6494026306359544
-92020  -116.971942941233834    32.7935753066496218
-50701  -92.3651905395267505    42.4708600640089173
-75261  -97.0281680481927395    32.8930897710843411
-32444  -85.6422114834487473    30.2365584165072896
-56110  -95.9357511167929999    43.6233718234812571
-55379  -93.5019160854455862    44.7706793216593226
-76468  -98.439883578947402     31.9963915350877208
-92286  -116.430045923076932    34.1342249145299164
-76712  -97.2403389462736953    31.5055122921001924
-57782  -103.217814461077836    43.2960542874251431
-76207  -97.1857323244895781    33.2094776106577143
-40473  -84.3254874624999786    37.3880837875000012
-75410  -95.6185061795546858    32.7916127489568581
-34241  -82.4084715763303848    27.2775947624285067
-23264  -77.4637161818181852    37.482504727272719
-95252  -120.854744501876198    38.1568089737331064
-24327  -81.8302987477064363    36.7754278394495131
-67882  -99.8914532959545909    37.8068822725337483
-69020  -100.304484760989098    40.2444245521977777
-98261  -122.88568346997306     48.4878389965663743
-64650  -94.0603532006349639    39.6321145339682701
-43288  -82.2308069999999987    40.1632370000000023
-93592  -117.388610922330102    35.8868622233009731
-99205  -117.440162558657505    47.6951980660510131
-36745  -87.9033046883116924    32.3960877922077941
-19029  -75.2934734044357299    39.8665459497716625
-56113  -96.1457333688888411    44.3937660844444295
-50438  -93.6184730875390017    43.1092525255144281
-65660  -92.271608480829201     37.3293237284974211
-16134  -80.4666973418560758    41.5130317007989973
-16854  -77.4738491696078455    40.8967058127451324
-37335  -86.4092949000983594    35.0661060757875873
-20423  -77.0301088999999877    38.8921696000000026
-38732  -90.7246929595163749    33.7478553713557829
-37402  -85.3125820268906949    35.0454390694677542
-56469  -93.5547995128684988    46.7313080786846839
-76119  -97.2648931101781784    32.6896018647072779
-94158  -122.391525437037004    37.7705666148148325
-18920  -75.0873992785898281    40.4963365253654359
-68044  -96.4564769884341757    41.5386149759786747
-15666  -79.5225474853587428    40.1564022037350696
-10519  -73.6605143154362025    41.3491440771812435
-15220  -80.0494863764542544    40.4205448673596095
-49962  -88.1591908946588632    46.8610930727003137
-98613  -120.948993961338914    45.7575573102310074
-04256  -70.3997941209616727    44.1050973022063388
-46241  -86.2592168139385791    39.7317677015250865
-27867  -77.23188569072164      36.3596745051546506
-80913  -104.786976917721518    38.7355748987341713
-06640  -72.0788055384615376    41.375966307692309
-57278  -97.6530156517859638    44.6328606844676088
-26653  -93.5532227499999891    48.3987352500000014
-07075  -74.0866983149016249    40.8499423898780734
-43153  -83.560786287779294     39.7353886767410529
-75067  -97.0109004552622451    33.0219724184125099
-30120  -84.8397634126195612    34.1701402790222701
-84416  -104.218063857142852    35.3605935714285664
-13087  -76.1585680714285616    42.7043176666666753
-73625  -99.1967042878152228    35.6673903928571647
-91324  -118.55019667144407     34.2413480787166691
-63834  -89.3368661454095587    36.91994776093658
-59269  -98.1445494999999966    48.6675955000000044
-72634  -92.568343741951665     36.2691125424616203
-63662  -90.0004444255318816    37.5089744468085087
-68112  -95.9617470598427644    41.3464168161036838
-81076  -103.570791006128786    38.3011423447395956
-06812  -73.4950713552801176    41.4788590223193978
-58257  -97.3186584816900933    47.4987922957746704
-54102  -88.0458065000000119    45.4574628333333308
-61537  -89.412788145843237     41.1136653589073973
-45868  -83.8443370118661164    40.9675245663430161
-41224  -82.5172471261449658    37.8649853551206377
-54852  -91.7119294999999966    46.6331234999999964
-71962  -93.326512141546516     34.0384818032288763
-28664  -81.9997105837208551    36.0479585395349176
-93670  -119.256752750000004    36.4787609500000016
-47243  -85.4751831257784431    38.6876193368511423
-24180  -81.3297802741935243    39.2170096774193553
-25876  -81.4534814843750041    37.6398927343750174
-57454  -97.7653688036210013    45.6261011132775209
-69166  -100.574772329032356    41.9908021589442058
-68507  -96.6236751987156453    40.8476885683145312
-53104  -88.0466921298911558    42.5437711363741471
-71343  -91.8677774187905669    31.5956637129202882
-48765  -83.7311392533756873    44.1574736965846668
-27543  -78.8449185595238191    35.4638641666666743
-43733  -81.5398066233766343    39.9227837662337777
-15692  -79.677164713475122     40.331014885106363
-30501  -83.8192583180806139    34.3169159486702142
-48173  -83.2180571845040618    42.0752477969008822
-32972  -80.3457914375000115    34.764154687499996
-85019  -112.144458204890171    33.5096212811863481
-06081  -72.7676071109123654    41.9069150125223686
-50624  -92.6536259954954318    42.4650737754182828
-99159  -118.731110359021059    47.3488331201267769
-51553  -95.5456906474575902    41.4218570969491964
-67124  -98.7440826616585667    37.6417829106239736
-18346  -75.4007747989471824    41.122574342456133
-02817  -71.6701362937009492    41.6343027128379504
-50078  -92.864870554347803     41.9374634945651934
-56011  -93.7789345697300263    44.6140660326476279
-69162  -103.015355042466965    41.1255804394003022
-03261  -71.2180527886832522    43.2152784675514781
-80482  -105.790643333191753    39.9367993438029814
-50173  -92.712729909469715     41.9812683460392577
-71270  -92.6404130523541198    32.5251778802894975
-45213  -84.4200913227226835    39.1822273074839487
-71275  -92.8072392495445513    32.5365056755539115
-27379  -79.3464756676038832    36.379551861049201
-84002  -110.301280638613846    40.4049474801980111
-30121  -84.7890909879089349    34.2151658496197228
-23707  -76.345547829406101     36.8365524103677018
-60484  -87.6837543325730024    41.4377273841240878
-71745  -92.397820270718185     33.505530337016566
-51447  -95.1955365740301289    41.7181168519398753
-27980  -76.6245267428832335    36.2521376627639995
-60422  -87.6847437028540071    41.5388301819002805
-01521  -72.1588173795245922    42.0567922791472171
-99773  -157.147331375000022    66.8885712499999983
-64776  -93.6735867454643483    38.0434311490666985
-07422  -74.4533936933098772    41.1789674843310252
-91011  -118.19646855510382     34.2057088839277412
-08640  -74.628711290611875     40.0048006956750015
-26629  -80.7051133897389548    38.5639631422142202
-86942  -107.295945333333336    33.0521618888888895
-19140  -75.145874095476259     40.0119635615497771
-54642  -90.9966904108351997    44.1310073837471464
-26294  -80.0464547923250507    38.5390757584650459
-55771  -92.8022840117669006    48.094481098987039
-12719  -74.9197165173488884    41.4851538955166248
-73562  -98.4593481186440727    34.1757323983050583
-44131  -81.6583147900344102    41.3816071375701071
-71464  -91.8267101666666576    33.206557333333329
-71656  -91.8110206190476106    33.5916107619047679
-20896  -77.0940484246912376    39.036454479012356
-77516  -95.5025930921052577    29.2139574736842178
-77851  -95.944970749999996     30.5906897500000028
-62545  -89.393945174349696     39.7691625714285593
-60624  -87.7234791413229971    41.8790880551260045
-29654  -82.3788065258502513    34.4585781188784068
-34326  -85.3321914999999933    43.2444050000000004
-38862  -88.628705437897068     34.179377876047802
-58319  -99.3513179230769339    47.7454534871794962
-72339  -90.2780189481482154    35.413116988888909
-04102  -70.2974916405228925    43.6625585057000052
-71323  -92.2080868212731133    31.2650659810201432
-68710  -96.8448189225268266    42.4376845649582535
-25303  -81.6813480657686739    38.3581430101484315
-31791  -83.8713873599072741    31.5366590250921526
-67101  -97.462330723062351     37.7690791471328993
-83531  -116.259276999999997    45.9648664999999994
-67235  -97.4970692479357695    37.6859604225054099
-40170  -86.5037991345826072    37.9372735817716631
-97819  -117.765814269531262    44.493931312500024
-54871  -92.0461568897846831    45.7497547861868838
-61312  -89.229146487598328     41.4383024198427563
-05445  -73.2312840504571199    44.3040505665339808
-31309  -81.4278677587113293    31.8722084806048862
-34736  -81.8633089379312651    28.5767717241753019
-62829  -88.3382033333333396    38.0420420000000021
-58274  -97.3832278390597423    47.5005201103074413
-74363  -94.7258771644571453    36.952419754128897
-46825  -85.1252956762213415    41.154649341530785
-01810  -71.158890226328225     42.6478767365656708
-03229  -71.6990641067161079    43.2042894450429031
-43940  -80.8190065438144529    40.0285578917525839
-25174  -81.4294318850225807    37.8515433865355817
-66145  -96.130138500000001     39.7187935000000039
-04945  -70.2138484023385416    45.595870056396187
-48628  -84.3355046547617917    43.805114743386234
-49896  -87.3508776666666762    45.6577616666666657
-82419  -108.040574499999991    44.3805832500000008
-19713  -75.7204082129877065    39.6677474667878869
-13027  -76.3233645629324684    43.1633121484875133
-73101  -97.6584894285714284    35.2151750000000021
-41055  -83.8747921949511976    38.5216758567203925
-68417  -96.0963962838652748    40.7295782433130924
-35953  -86.2382686698403518    33.8154474723233065
-55305  -93.4317550765233591    44.9528708014139795
-63534  -92.6413650697675024    39.7627682912790377
-40706  -84.1538177500000018    36.7171118750000005
-30707  -85.3381702379923155    34.8306342569336778
-28518  -77.7579596564075644    34.9005016400109582
-61539  -89.7724617616580076    40.5572962797927303
-68934  -98.1408901233479725    40.3457253303965047
-05828  -72.1208491263606817    44.4304000820703564
-06825  -73.240506829925323     41.1935152828574687
-12550  -74.0473283270822265    41.5306063809620198
-28532  -76.8565084752558221    34.895992907754156
-19229  -75.6698669999999822    40.9906291999999937
-72768  -94.49792581825578      36.4793095230738089
-11798  -73.3653574209444486    40.7541315550993133
-46947  -86.3712064335465044    40.7603017837938921
-96129  -120.341826986626984    39.7919422882614882
-63436  -91.5489548983563139    39.5052626933391124
-34298  -82.4273244999999974    27.0886232500000013
-95264  -120.466064830188671    38.2900200566037796
-60107  -88.1775254100359973    42.0223360788505218
-41537  -82.6205502994457817    37.2109803971978721
-54021  -92.792310039076412     44.7527121006511948
-22734  -77.8150398375686478    38.538774269363735
-70006  -90.1918106705740286    30.013964023039545
-04637  -67.738246264448307     45.1861463502626677
-56529  -96.7003145650811575    46.8788205044433255
-51014  -95.7068536857765082    42.7805686843250967
-04537  -69.6258023685616507    43.8966007200062052
-25036  -81.1760470166113208    38.3049272192691035
-91403  -118.46426240434154     34.1444441422998892
-30597  -83.9873523333333338    34.5284496666666669
-55049  -93.2303820444974463    44.1750156263158189
-38926  -89.7358743571428761    33.6924937142857175
-97306  -123.052630729932915    44.8609098510758955
-77949  -95.7676769999999777    29.755513714285712
-25304  -81.5905948871432827    38.3165411885453366
-45783  -81.8440149223300892    39.1716403786407596
-79336  -102.364873670037085    33.6188050107072698
-67053  -97.3462759183672972    38.2480890897958972
-22832  -78.7678393784688069    38.4514295162153914
-54946  -89.1445666470588236    44.3382508235294139
-97765  -119.124625999999992    44.4086976666666615
-17128  -76.8820149999999956    40.2658540000000045
-30805  -82.1845705178704691    33.2980760737155137
-26236  -80.2372903950617342    38.745872962962963
-61771  -89.1400289645852553    40.7173808070829821
-68135  -96.1910357188294398    41.2038610807093661
-81653  -107.181664212215466    40.9740309813664823
-39775  -88.9411889642857147    33.5865694285714227
-71243  -91.8040043342294751    31.9655747643369637
-15765  -78.9944534063295549    40.5960088715897385
-41568  -82.0719301291735803    37.5018638785834639
-38582  -85.735362623366143     36.0983133066445845
-94021  -122.295641648734218    37.2683604535864745
-33158  -80.3174647905632639    25.6372204935002586
-05486  -73.3120658603773734    44.6402841805515251
-75471  -95.38741037549255      33.0433750213560415
-95233  -120.33681577959932     38.2052911730418003
-30458  -81.8101532739183313    32.4169147868809375
-30004  -84.2971726139894315    34.1352456682399463
-56438  -94.8045647648014551    46.1568264769760788
-16504  -80.0504565595443864    42.1102930364795824
-53715  -89.3991618884547421    43.0617481657986119
-95422  -122.645265814101492    38.9628744941979051
-37706  -83.2997893333333224    36.3469863333333336
-29142  -80.5106582255201033    33.4658162106796198
-30175  -84.5182608672865996    34.5272352193073786
-54004  -92.1311401835574912    45.313730780866976
-51651  -95.0347625625000347    40.6573372740384755
-63882  -89.2226197068403906    36.915366133550485
-59532  -110.074657420353972    48.5440827477876198
-60565  -88.1282463806118841    41.7296703344107911
-81138  -105.61076568852458     37.0372942459016414
-71497  -93.0945744999999931    31.752774500000001
-61047  -89.4078238352190908    42.1458137331530267
-63852  -90.0193737533897149    36.3796660220338168
-88007  -106.844621166254726    32.363855992075159
-96848  -157.814474999999987    21.299675428571426
-23694  -76.554077079999999     37.2289682400000004
-60563  -88.1665229307076146    41.7909805946280528
-71432  -92.4179963360344487    31.7522162311725609
-44860  -83.0938304687499851    40.8446854374999972
-43450  -83.4801039845048791    41.404314478970754
-62643  -89.4574121561482656    40.2428932752115003
-21411  -76.4936067499999979    38.9796842500000054
-00740  -65.648887367724825     18.328153425925926
-36460  -87.3101784495296727    31.503925467978636
-83835  -116.744962896871726    47.7827165486303045
-70373  -90.3799063131696414    29.5684072344045035
-60033  -88.605997699412498     42.4260568749159575
-92770  -116.419876000000002    33.7370854999999992
-62479  -88.3147905793567531    39.0416155191908771
-47981  -86.9228825694108451    40.2430923678952652
-37849  -84.0429533213289233    36.0507243407081646
-21813  -75.184219558058544     38.4280466402694714
-13064  -76.7095785827814609    43.3206608741721482
-23440  -75.9929905721039916    37.8251116855792446
-42367  -87.1678817173732909    37.2527867206982179
-65324  -92.9818092131110205    38.1464212649818109
-96151  -120.091594697368407    38.9656150592105419
-72443  -90.4171146258452012    36.1871751536852102
-62688  -89.9072762893701309    39.9378549005905583
-97404  -123.136985281173736    44.1036530847235611
-61076  -89.6684644999999989    42.3546002000000001
-70728  -90.8929144999999892    30.2563274999999976
-67757  -100.577269075709651    39.5470957949526891
-75105  -96.3987852140762698    32.2588864310850596
-15618  -79.4598281196841469    40.5505868291322145
-47163  -85.6703863287179388    38.5420806466665979
-37767  -84.1429389999999984    36.1761172857142839
-13152  -76.3848185051002559    42.8903539215749277
-67105  -97.6687592430769769    37.2458529600000219
-92346  -117.188432922091991    34.1267520557093178
-80206  -104.952215473703674    39.7309527079163018
-06240  -72.2352862999999985    41.5048375000000007
-38609  -90.3526743333333542    34.2724759999999975
-38464  -87.3886159002929617    35.2675716173017619
-40002  -85.4444480000000084    37.8306071999999958
-66867  -98.7827665000000081    39.7769885000000016
-56654  -93.8743210973952529    48.5086065934314519
-44681  -81.6662353452050382    40.5054073935288628
-00664  -66.5902074703833051    18.2136434686411164
-72525  -91.5592653010752429    36.3020414946236514
-26347  -80.1337432011363546    39.2876918079545803
-29053  -81.1007216071615744    33.8288059564436168
-77617  -94.5056527923497072    29.5082248114753867
-63836  -89.6180327999999804    36.8521536666666734
-87043  -106.457083426405532    35.3168515072984022
-11362  -73.737406576470562     40.76472156470588
-35747  -86.2965438275225694    34.4946614021404514
-91320  -118.938949038522438    34.1770133354462189
-61324  -89.4124013717948145    41.7709879487179521
-61701  -88.9912246720540878    40.4776559612587405
-02649  -70.4844642460727044    41.6108127136055614
-63632  -91.0361653333333294    37.6802270000000021
-54637  -90.2718010333333467    43.8793774333333175
-95776  -121.742749468255298    38.6783898268031834
-66728  -94.7043808823529361    37.1720905294117614
-11219  -73.9970908296176759    40.6325842452229864
-74572  -96.4285796284986674    34.6337688600508926
-64506  -94.8022382926024534    39.7903743530000895
-48072  -83.1855984348174218    42.4990472494985525
-38606  -89.9134862554990093    34.3079853051889359
-64865  -94.582689457760253     36.8554793630799225
-34472  -82.0230561754681986    29.1232428211243715
-04415  -69.0569611186440824    45.3530625254237236
-78133  -98.2512396511145312    29.8789402401172062
-95596  -122.229557333333346    39.7623208333333267
-38378  -88.6881425862068937    35.7704166206896588
-34219  -82.4154017455626757    27.5552068182149945
-52739  -91.3728194281587776    41.3735189841155702
-67661  -99.3530231377113466    39.7907668241766359
-61856  -88.5755318438077097    40.0350327489850031
-47612  -87.7038001737739137    38.186545371002147
-52542  -92.0559394167448914    40.6463088748825285
-63383  -91.1763042448732506    38.7990287742006998
-24530  -79.6064523368254982    36.7964035879365809
-12540  -73.7413501372987952    41.6613440282247751
-62663  -90.330484760456244     39.541146307984782
-53168  -88.1224662277788013    42.565363306425489
-00924  -66.0125057681816685    18.4005497336898145
-82842  -106.902293277777801    44.5730616432748832
-34287  -82.2401674718848597    27.0503855506212894
-32618  -82.5338879624919315    29.5278378080924213
-38568  -85.4748709801825157    36.4219094080355035
-19103  -75.1739333543923038    39.9524674356197735
-35899  -86.6409251111111018    34.7316275555555549
-38610  -89.0048782201545947    34.6506886785449808
-10951  -70.8590017500000044    42.8008799999999923
-72532  -91.5882664260615513    36.087774293973709
-55979  -91.9571410794014099    43.9250223475258466
-40379  -84.6842260995816218    38.3140516813542078
-16912  -77.0506634413228824    41.6845824167398007
-24082  -80.1301800952045511    36.6250200303244569
-12523  -73.7673661404101182    42.0849658497613675
-23356  -75.4185478108882563    37.9998873401555102
-13746  -75.8308332205101294    42.2608759899129964
-17247  -77.5797095588235237    39.7990625392156758
-13679  -75.7731420761556791    44.32278287416014
-20502  -77.0410161666666653    38.8994697083333349
-39639  -90.6278984615384786    31.4118976153846141
-62236  -90.2065367568014409    38.4371897945457732
-89311  -114.173724958159028    38.9947256652719858
-08057  -74.9471485069850019    39.9732685059063826
-15777  -78.9588143496732329    40.6982840620914601
-49792  -84.3008931199999978    45.3526629599999964
-65320  -92.9474296363636086    39.070207188811203
-84047  -111.885668170630638    40.6152959763255907
-13699  -74.9970730250000344    44.6610538000000261
-55754  -103.785026999999999    44.3814842222222126
-56711  -95.0597663181818575    49.3451857575757842
-45103  -84.1709574701875027    39.0969268445434039
-10803  -73.80633848566724      40.9007330751235472
-61483  -89.8608052700555646    41.1043217783955868
-07703  -74.0457791013513287    40.3131181891891757
-83126  -110.912122001451294    42.6022308490565678
-86940  -109.780569999999997    34.2867825000000011
-46141  -85.7827809999999999    39.6947483333333366
-00706  -93.4213889999999907    30.7661233333333364
-58455  -98.7292003301814702    47.3039712305137172
-15260  -79.9580425000000048    40.4475265000000022
-27014  -80.5469110808882789    35.821885996827902
-45349  -83.9386803451777013    39.9920052284263861
-43228  -83.1261466244914544    39.9543435424345574
-94024  -122.089800123775206    37.3527279500038958
-21663  -76.2261168815329597    38.7859070714285323
-90555  -119.00640199999998     48.6353936190476261
-28366  -78.3661419452251522    35.2251333882994828
-26716  -79.5144636669224383    39.2726096397087474
-41262  -82.6045457993400021    37.8666369818481385
-14560  -77.5784614972918405    42.6797686275471051
-43830  -82.1326705395325405    40.0527800773462346
-35146  -86.4367787909820464    33.7898287574985048
-40939  -83.721539400000097     36.81346301524664
-40737  -84.1462024975843832    37.0098758085431214
-28090  -81.5571321029287049    35.4584208437609547
-61364  -88.8382896847891459    41.1179603934318791
-72951  -93.8704865910042372    35.3242095591004031
-02122  -71.0563541209358931    42.2970665727741917
-79027  -102.286737706590472    34.5247037292264238
-32805  -81.4041433819122631    28.5308734460392053
-44460  -80.8671044941652184    40.8906736255584065
-57523  -99.24164018741088      43.2756458283262475
-93429  -120.526259453488393    34.8492674302325653
-16858  -78.2105593674093882    40.990546852993937
-48825  -84.4804028783784133    42.7273374324324422
-18058  -75.4902560744568234    40.9013082026397043
-78247  -98.4096777857428577    29.5814384597414168
-83552  -115.951085010144951    46.0223054652172863
-47211  -86.7168197142857196    36.1235605714285697
-95365  -120.306741751695981    37.297394135685181
-33131  -80.1901283932136266    25.7665302175648669
-97367  -124.000379632395095    44.9423000579315044
-71724  -92.5395437345400751    33.3320916515836956
-52249  -92.2078722120656522    42.0091037349176588
-02915  -71.3539989000953057    41.7714585334076318
-98938  -120.099213774690114    46.3653118358993979
-72341  -90.7671932871621863    34.8909674290540508
-35182  -86.2983163333333323    33.65585733333333
-29717  -81.4371100339314893    34.9667153993759499
-27910  -76.9904452996482149    36.2880700297410002
-94301  -122.150497295853611    37.4440238668280401
-30289  -84.6352159909909858    33.3260656036036167
-59400  -112.039983166666715    48.8426485799999881
-99224  -117.488630451413641    47.6310015594938392
-62422  -88.8711115177865594    39.2417522661396845
-29122  -81.3252473770492088    34.2397266557377193
-79201  -100.234343662003553    34.4186721606217745
-85358  -112.785982789719682    33.9720983971962553
-51537  -95.2936891034001547    41.6447221325105374
-51004  -95.8932387127997146    42.3761716892809375
-45246  -84.4693555608497348    39.2872156462821209
-85566  -109.757828333333336    32.1914223333333354
-54750  -92.2780345797101234    44.5677800434782512
-31297  -83.6516062222222132    32.7071860000000001
-27525  -78.4815152657864985    36.1135933456586997
-84017  -111.399498026014001    40.8430922248033141
-73008  -97.6406686247618154    35.5057229608492193
-53538  -88.8447013305550826    42.9249751822313499
-83281  -111.997785671361484    42.3072606056338003
-65761  -92.7307752111298811    36.5779041618521461
-68128  -96.0519782187233631    41.18281060595735
-53535  -90.2657869999999889    42.9675470000000033
-13157  -75.7260753695976234    43.2035506110283194
-00725  -66.0335685126073741    18.2277272245624076
-53534  -89.069469319077669     42.844235206499107
-14752  -79.3244921353383461    42.3525818947368364
-42216  -87.194834539999988     36.9038376200000116
-81655  -106.681647942738934    39.7083643553719057
-33039  -80.3994801311475271    25.5073388770491611
-26440  -79.8953592949742983    39.3360777152221743
-15314  -80.0176360800576987    40.1382667858381268
-04759  -68.3629177500000083    46.5009197499999942
-04941  -69.3033860034511093    44.4653371601380414
-68828  -99.2326720094637693    41.5705179936908493
-02584  -70.0333922568807594    41.2613162064220305
-63867  -89.5599218314814891    36.7488753379629642
-13136  -75.848314805785094     42.6035736181818052
-20744  -76.9845039908817341    38.7542199578126372
-92696  -117.104781599999981    33.5955073999999954
-01075  -72.5825876320451613    42.2419316742915001
-30609  -83.379616249999998     33.9554087500000037
-44256  -81.8418212237313156    41.1405546718614019
-67441  -97.1077261916739474    38.8917880615785236
-21012  -76.4964648784802534    39.0466939127994053
-14420  -77.9272106200611603    43.217447905827207
-24580  -78.6752403563183407    36.5815471436818669
-50461  -92.81514753017575      43.2917186622669234
-50851  -94.5538168108817985    40.8947907518203593
-66682  -96.9202912857142849    31.4797405714285681
-82060  -104.4947518025363      41.2273810090579502
-49788  -84.4663626428569074    46.2699375547396201
-68631  -97.3492116425439207    41.7060586578947294
-24921  -80.6137124444444453    37.8990592222222276
-99549  -158.599861428571415    56.9287773333333362
-59498  -112.832155499999999    48.2820728333333378
-16634  -78.1776319191918816    40.2086280012625821
-29605  -82.3838200891714223    34.7865375089927227
-38329  -88.1202309826952472    35.5505747988849166
-78241  -98.5607723333333325    29.3807076078431493
-03273  -71.9304469226456575    43.3039372589685811
-13328  -75.4246574363277631    42.9822674461993941
-14784  -79.3788562752924634    42.322747012388156
-78744  -97.7440667127621765    30.1830725909148363
-39549  -89.3947237272727193    31.5165541818181865
-74107  -96.0342954991401569    36.1016135796217199
-64071  -93.8347484622973695    39.0259888386187939
-19463  -75.6554590000000076    40.2571985000000012
-63136  -90.2596958301355272    38.7427749124211616
-33943  -81.308394750000005     26.9610519999999951
-74083  -95.8274334909963841    36.9262944957983876
-43023  -82.5244075803449277    40.0689987613478706
-50254  -94.0638840210527007    40.9917217587045073
-14592  -77.8810427209302247    42.8708386046511762
-26656  -81.1664784027994557    38.2512083981336914
-54821  -91.1869176162838926    46.2221793152308749
-35988  -85.8020173993861732    34.5592702086803811
-75045  -81.3809729999999973    38.4728481666666653
-38485  -87.7410633506449642    35.3401146829631543
-36268  -85.9418530273272552    33.5102435787329895
-23170  -78.0662319999999994    38.0497850000000071
-30821  -82.7287952539804792    33.4721656209709337
-19803  -75.5330319708431546    39.7948575588994728
-33604  -82.4566397546246321    28.0167912545100748
-15201  -79.9521915592334409    40.474654531746225
-45679  -83.5616502584921221    38.9761652161457661
-23415  -75.5301075190240709    37.9664765007261238
-12449  -73.9966645119851165    41.9949004554394492
-19372  -75.7632009445215573    40.0009910513176052
-33460  -80.0573060368776339    26.6200027079097445
-21075  -76.7551969305115307    39.2015187965550069
-77346  -95.1766850682371199    29.9932994436345552
-62514  -89.059908840909074     39.7610038045454459
-50164  -94.4102334536330403    41.4998881006919191
-04674  -68.4052824270480642    44.2973122355791915
-43126  -83.1710755244754978    39.8106885419580507
-53813  -90.7070211173927419    42.8428763395229808
-36362  -85.7196781022981327    31.3486133061527248
-27937  -76.7823742016949637    36.5066396481260185
-41040  -84.3239624361855107    38.6570387319094309
-13361  -74.8604909666856884    42.8983826542217415
-43832  -81.5907863587495825    40.2781664246924365
-54547  -90.0866475445994581    46.1832088373569078
-76334  -97.3957409999999868    31.8733405000000012
-61722  -88.631533391208805     40.4262151714285309
-41730  -83.4104755999999981    37.2751606000000066
-76102  -97.329952164408482     32.7542628934056523
-43932  -80.7503698095684825    40.5205071017822576
-57552  -101.210853011337917    44.2474077165532833
-40319  -83.5288626176470359    38.1273137352941234
-11221  -73.9267407386995359    40.6919156613002926
-50063  -93.9552430882485368    41.6980966794696073
-63636  -90.5514228228140041    37.3223579455703671
-96762  -157.924710164179061    21.6482725970149268
-33063  -80.2104104781442828    26.2542457791698993
-33180  -80.1437250029263879    25.96287071404684
-19844  -75.2604556666666582    40.4282220000000052
-54498  -90.6031300828729087    44.9663309309392218
-84130  -111.822532999999993    41.2841651999999968
-62214  -89.603562004723841     38.3755516097383094
-73571  -99.9229919411764769    34.931319647058821
-01527  -71.7661361321548839    42.196316558080845
-87044  -106.667648087779696    35.6628274268502636
-39450  -88.8005249999999933    31.0409555000000026
-30627  -83.0035066563939949    34.0043753415759511
-98686  -122.62971588151845     45.7137384004164886
-44647  -81.5550064583521248    40.8004541253466328
-99323  -118.949564152035961    46.2092633257535326
-06071  -72.4493122210548961    41.9965966359540701
-44061  -81.3286051818181903    41.654369909090903
-02813  -71.6627174555400899    41.3917939297804764
-98606  -122.468079886906835    45.7336727853685971
-50840  -94.4979425839636633    40.7892769667171677
-01745  -71.5295492109704014    42.3121445147678941
-75849  -95.4712688846153981    31.4058187307692407
-73448  -97.1044826721355605    33.946243111718772
-73844  -100.051032484375       36.8479408906249901
-24918  -80.7590939850747134    37.500715944369027
-55344  -93.4322475012386491    44.8627201017344959
-30816  -82.1863616557088221    33.1735231279604363
-83629  -116.200321337094081    43.9314201692350821
-88031  -107.775513273255797    32.2381091046511514
-47530  -98.7745625000000018    38.3359889999999979
-40637  -83.9301431600000001    37.77610636
-49808  -87.7439676363636636    46.8248305353535414
-73115  -97.4427857574112437    35.4394364342742207
-78599  -97.9947783945549418    26.2052412860906827
-98247  -122.332281878229651    48.9020353751292447
-58079  -97.3433491648214613    46.8605502416973678
-99662  -165.581284893129748    61.8416239236641161
-55721  -93.6553254880562207    47.2356888798351875
-85382  -112.250205367317264    33.6698699508082981
-38629  -88.9809793979750339    34.8607104739158302
-98524  -122.839785427005722    47.3755861502243008
-71066  -93.1970883529411651    31.8736701176470589
-59914  -114.273203109048637    47.8627696879350424
-22576  -76.436588695073894     37.6863769177340018
-80741  -103.406238748970267    40.5359013093080094
-50310  -93.6722516524261124    41.6270662842172428
-01473  -71.9031099059841665    42.5496937173837253
-05778  -73.2194619419160659    43.8712634421326868
-83286  -111.988460755166841    42.0604263362480424
-79602  -99.6929336024826114    32.3719646835450447
-63339  -91.3597442325800841    39.3268274350282567
-37366  -85.8581266784629804    35.303672534144404
-15845  -78.6851021499640098    41.5001993507569722
-52031  -90.4786596873633044    42.2503447669549601
-68714  -99.4750571055693342    42.4249505822941799
-25156  -81.4647477425742181    38.3879347854785635
-06705  -72.9969167027113457    41.5502949407990343
-30568  -83.3962486311016704    34.9480975195102914
-74727  -95.8873766501678091    34.0521024354027233
-27706  -78.934274000000002     36.0067457500000003
-06438  -72.5047575976319223    41.4608645534817981
-19538  -75.6931702666666837    40.5434721999999965
-45719  -82.127402395061722     39.4005103456790025
-33634  -82.5524623390440837    28.0104429037421205
-46517  -85.9811167318411123    41.6416810054907458
-99769  -170.485563966666689    63.6936566666666764
-06016  -72.5436413863873781    41.9086977489527897
-78449  -98.4267216666666656    32.9396543333333298
-85263  -111.679767192351576    33.7383032118515018
-93241  -118.906305094151207    35.2637468487874415
-81650  -107.888983365559213    39.6101642158507588
-97630  -120.39900559647073     42.1967541110372224
-85624  -110.703575941583082    31.5202845903151641
-12154  -73.6054160361797898    42.9250725235955741
-50590  -94.300341097507399     43.4095557210410874
-10709  -73.8105006712072509    40.9548429187411287
-08742  -74.0632615492661301    40.0799811680849345
-14775  -79.6962217014613543    42.2385644046625046
-07044  -74.2433517707316781    40.831322344124132
-19565  -76.0906155087536717    40.3300474155319293
-38358  -88.7640743726210957    35.9170637306597911
-28684  -81.5976688523523279    36.327396464912951
-45388  -84.4757502166009004    40.323870517786581
-65283  -91.8461373737863767    39.5034362588996757
-68055  -96.494046532981514     42.0686163113456146
-53599  -89.8606814583333602    42.6491661874999934
-48471  -82.8454506918135678    43.4177945826644773
-33592  -82.2951245166980669    28.0665191362542359
-61438  -90.6527737818890671    40.5799718300877004
-63640  -90.406439535521784     37.7621819316502254
-43777  -82.0655890092508855    39.8144876167400028
-54479  -90.2952484617646718    44.754782899999924
-23452  -76.0932139237988139    36.8409232734747789
-90201  -118.172281077372361    33.9695268157595862
-36525  -88.0359196904761916    30.8869550079365425
-61325  -88.8114581919917327    41.2338337920944724
-57033  -96.9601890937792774    43.6307538796223255
-66932  -98.9221557486033447    39.7477601675977681
-48374  -83.5243015039377781    42.469871309671241
-60519  -88.2414492000000052    41.7803570000000022
-40511  -84.5107730375884074    38.1058560261664283
-13433  -75.3017011621406027    43.5895871956868319
-11975  -72.2479023115385388    40.9474578743589959
-58439  -98.7682257719918937    45.93181993832156
-89127  -115.256586333333345    36.2291824444444472
-14303  -79.036641573273954     43.086927408908771
-63141  -90.4585954294917087    38.6595906208844724
-32361  -83.9832388766519529    30.3561107753303929
-43216  -83.0269579999999934    39.9679521666666702
-77998  -96.438581499999998     28.4420234999999977
-29708  -80.9897658712379354    35.0476129188952612
-41740  -83.0470025759344139    37.3486520175234133
-16650  -78.2940299468289851    40.1232370792760946
-78475  -97.3975214999999963    27.7967724999999994
-12538  -73.8999453765229646    41.7886800660356883
-27563  -78.2271730891437471    36.4226661054375001
-60068  -87.8422101728008045    42.0125427353374832
-56336  -94.7547958419335856    45.8136563267387373
-32381  -84.5968979599999926    30.6251540399999946
-02638  -70.1927980558892983    41.7355670969550161
-85201  -111.848599344743448    33.4315583216667065
-96016  -121.559754987836058    40.9257406350832085
-95347  -120.305481524178077    37.7827243810444884
-39203  -90.200428653155214     32.3084886112391487
-61817  -87.7131785634459362    40.0654168455568112
-36609  -88.1637811496469794    30.6595812311654221
-88322  -105.676857750000011    33.4070494999999994
-15132  -79.8445643945143075    40.3407394210110937
-38222  -88.1530912529427439    36.4469588720058937
-79749  -101.893023497461883    32.2875213705583874
-12724  -74.9370996002358396    41.8528431426886769
-18960  -75.3189139842581739    40.3634617064870937
-26263  -79.4475647727273326    38.9725523701299039
-72058  -92.3873911874074878    35.2328737240456462
-28520  -76.3106465075238845    34.9831580998631892
-35097  -86.6285849001371275    33.8962505974605435
-06897  -73.4382416481863913    41.2042162202791999
-47426  -86.9091693750000047    39.1163540000000083
-41773  -83.03252330866367      37.22500834503672
-27053  -80.3491862955706893    36.4645087754239228
-77506  -95.2013032828258901    29.7036800274779154
-76363  -99.5306204827175094    33.484286336114458
-35962  -86.0468461801757627    34.3023983130387151
-72142  -92.0957817090015851    34.6844795541307107
-33586  -82.4856135714285728    27.6774014285714252
-55810  -92.2497953470500818    46.751502872959243
-99826  -135.728712376021832    58.4185291948229519
-66873  -96.6640955646878837    38.6323179208523655
-15754  -79.1540587207206983    40.5491715315315275
-17948  -76.1405442721675456    40.8149865058497596
-18657  -75.9425783471778857    41.5310365028398252
-12815  -73.7170171961519713    43.6965145828249604
-59755  -111.964401841698745    45.2920081196911184
-72166  -91.2460790117072378    34.0618184936585351
-33496  -80.1603058681158984    26.4076792134140774
-18038  -75.4812952869623928    40.7915520625000241
-68722  -98.8693889841897544    42.9198146337286204
-45741  -82.2505210619126927    39.0700455370804818
-77863  -96.5996729276729695    30.3688729748427804
-15046  -80.230810699082511     40.5562470500000245
-21056  -76.4312135988562318    39.0734710163398802
-26031  -80.7179564405241905    40.005073972782256
-10306  -74.1192985157385067    40.5688109222155049
-43227  -82.8897216221917859    39.9435860500098698
-53195  -88.1729641666666879    42.5476526666666643
-90401  -118.491352438999925    34.0164761580000103
-48614  -84.2909086876122728    43.2488649335727189
-04920  -69.9043378416619134    45.0636463405580443
-44683  -81.3325851064754772    40.3646328470935245
-45893  -84.1488579791666638    40.8821917708333302
-12836  -73.5159480206611136    43.750205643939367
-66584  -96.4635614999999973    39.9624939999999995
-18470  -75.5325920042949406    41.7332513991914951
-51005  -95.4167587308279508    42.7288513757669577
-11010  -73.6755893877976007    40.699075060802457
-34705  -81.7278338624761318    28.7062677878094625
-04070  -70.0126139999999992    43.7810635000000019
-54408  -89.2770599968355185    45.0493979430379667
-90020  -118.311439429884913    34.0659774934865709
-60525  -87.8772942905287238    41.788904043025255
-65436  -91.948906311363686     37.6102209886363852
-82223  -104.360552537484651    42.1330050979444266
-54913  -88.4111832985865931    44.308240547222546
-39846  -84.7508360240771168    31.5626258004280267
-41847  -82.9423414592445738    37.2114761222663972
-95966  -121.461900638322035    39.4868082892200789
-58205  -97.4511750499999891    47.9265746499999992
-62848  -89.1603257446043926    38.4378621187050342
-54748  -91.2719489704166591    45.073449734166644
-61912  -88.045264229335686     39.5257463956043793
-04217  -70.7976039218282693    44.3873889753839705
-56565  -96.2916627150537181    46.0481411021505451
-54027  -92.1945401734514007    44.9232533303834174
-90615  -87.6043850000000077    41.8050052499999936
-90270  -118.187589498659406    33.9887647045577168
-21042  -76.8721274515837791    39.2746319167019422
-88221  -104.329130018017977    32.4174674594594521
-32345  -83.8678304999999966    30.5483910000000023
-87941  -107.215857583333431    32.7068847317708418
-45326  -84.0970281593406099    40.1407074967032358
-62232  -90.0049614462140966    38.6351023855031741
-01885  -71.1308245454545442    42.6451883636363576
-40502  -84.4852544948003015    38.0106566818933373
-48897  -85.1180254144796038    42.7112237212669967
-39911  -114.065635999999998    48.0072585000000061
-80483  -106.915188647143808    40.1414929298625864
-52404  -91.6889572639141761    41.94111918843506
-49661  -88.6758285365853709    46.3862117560975662
-84109  -111.809341463893347    40.7034550504373911
-33713  -82.6785133314711373    27.7891651493045408
-48939  -83.5191129999999902    42.5370806666666681
-74106  -95.9855972247772087    36.1860834604969099
-21912  -75.8074797144540753    39.4315374654360653
-65459  -92.1022263864003747    37.9830959510235786
-00787  -97.7216037142857061    30.2285432857142844
-26173  -81.7276874444444417    39.0292432222222203
-91948  -116.434135689752864    32.8742333130742708
-02369  -70.2350136842105286    41.7029605789473621
-78071  -98.1717683557083234    28.4726573330791553
-25139  -81.2852663071428765    38.1387615142857115
-01438  -72.0338534857142605    42.5625317999999737
-40985  -83.6045772500000055    36.8032402500000018
-28328  -78.3378667755341525    35.0136115298261288
-98631  -124.04408327695289     46.3809872326172226
-85173  -111.103906044853559    33.2884738309373773
-53097  -88.0067328675075231    43.2395868387240583
-71105  -93.713824179790933     32.4542390913565484
-68883  -98.5945464258580699    40.8179739511442961
-27545  -78.4853534875516772    35.7840141498114335
-01432  -71.5744514767440876    42.5593512164580829
-97625  -121.534429046447997    42.2741504603825291
-55532  -94.2791995000000043    45.1528047500000014
-76273  -96.924944798703649     33.698751105448892
-76934  -100.660708303114234    31.6047712207612825
-05412  -72.0160597500000108    44.456626
-72683  -93.1100850000000122    35.9315826666666709
-80755  -102.34974147906803     39.9078862898895679
-05075  -72.2696987292691233    43.8380684653592425
-10950  -74.1964354279601537    41.3199976592738452
-83011  -110.593092113207533    43.649047353773561
-77578  -95.3711325052234002    29.5003846313737945
-80113  -104.960400656501093    39.6435601674156501
-91754  -118.142210632730837    34.0500754354341595
-08691  -74.6118475018710114    40.217596464963286
-49925  -89.33298589194915      46.5434950536722667
-35651  -87.4799011255724395    34.4656543130348254
-71033  -93.9793728169910736    32.435115021592857
-35645  -87.5031089426992423    34.89475475756187
-04237  -70.7215250073800803    44.4943704563345719
-34489  -82.0716908750000016    29.3753095000000002
-27611  -78.6214414285714298    35.7844044285714205
-80266  -104.896579388888895    39.7937971666666712
-03187  -71.2074539999999985    43.8535237142857142
-37153  -86.5438068257633262    35.7712252137653479
-50705  -92.3186149999999941    42.4711949999999945
-16023  -79.7537691456675617    40.7856531653407259
-13692  -76.0267205400942601    44.2881530353774053
-97385  -122.756913982640128    44.8531629108050964
-88001  -106.761256880790796    32.3039632417800817
-17582  -76.437935508764383     39.9903288674647825
-47932  -87.4006088902361569    40.1252001156870293
-93933  -121.791914624372566    36.6780820415336208
-94085  -122.016764169141524    37.3890865529824978
-55919  -91.3130312933669472    43.6473907946206623
-81154  -106.624471220353627    37.6785212458893852
-88753  -105.941192789473689    36.2104522631578973
-77018  -95.4250125403711564    29.8266949431353829
-80705  -103.827841942623039    40.2693512213114957
-97369  -124.059690140562296    44.7550539076304617
-37701  -83.983693404996643     35.7893190598291682
-28759  -82.5893939408706927    35.3889908854743567
-19004  -75.2346404347824631    40.0127801074953737
-95855  -123.762645363636366    39.9194928636363713
-50094  -88.7434309999999869    43.1976255000000009
-19559  -76.1871898071428291    40.4947516928571432
-33635  -82.6069734084767333    28.0310913396805397
-96011  -121.903164120160241    41.0248671495327315
-21856  -75.7912268406718823    38.3360824870630381
-43771  -81.942078823806952     39.8362511741121708
-75663  -94.8457844230769211    32.399723980769231
-23336  -75.3701008821568621    37.9293047405965424
-11958  -72.4596041193797618    41.0413263813953222
-78250  -98.6651909049875258    29.5032957989811315
-59341  -105.038437372449039    46.62339745918365
-08210  -74.8281681748014336    39.1023654042658109
-95826  -121.368918819407185    38.5533811033963545
-73173  -97.6309157221382691    35.3501997715582803
-32119  -81.0266388283773153    29.1620822107460782
-16101  -80.3076196053481084    40.9872027570616524
-81124  -106.19526473469395     37.3321605743440443
-19540  -75.9650262786103667    40.246116536514009
-78025  -99.268267422535331     30.0802663173061333
-45510  -84.2336950000000115    39.0960464999999999
-80524  -105.040524470820912    40.6261328258405712
-80623  -104.777436776243064    40.2853724806629856
-84330  -112.148855503055074    41.8604964786150617
-37918  -83.9197410515460263    36.0547247951982897
-93286  -119.103689825107836    36.4356912977161045
-30015  -83.8303353999999956    33.6053093999999959
-60423  -87.8403020895445792    41.4977606232826659
-57358  -98.4261576999999761    44.0696162142857304
-24378  -81.3956552360532015    36.6894723642049883
-85730  -110.807958315168619    32.1795410314566652
-02302  -71.0007874611909529    42.0879617575590075
-84781  -113.512655206427638    37.3916037348578811
-56314  -94.4283965256034463    45.8113110450265779
-92235  -116.297716666666659    33.713724500000005
-98053  -122.024111033527106    47.6719606638775559
-25111  -81.1396028306011345    38.3551370464480996
-00692  -66.3353570441962006    18.4412803603690563
-06423  -72.3962297245026036    41.4674534991038684
-62240  -90.201159600844818     38.5191483284055991
-02366  -70.6609914999999944    41.8502890000000036
-49869  -87.545968277310962     46.0747811764705801
-32343  -84.4700577546146292    30.4989915369163995
-43941  -80.8305326111110958    40.257232777777773
-65667  -92.5117725437981306    37.2935204655148524
-15057  -80.2355614391260019    40.3591208599997842
-64453  -94.4691513513513996    40.3355877972972863
-45682  -82.7150609714408773    38.8185057642438949
-32822  -81.289366862127082     28.4998612745429973
-10589  -73.6989572183663029    41.3336764073678964
-95253  -121.06227435714284     38.1935881285714558
-38870  -88.3597670224383762    34.0566518086572643
-78113  -98.0730548227906809    28.9848717638647635
-17815  -76.4402838033923047    41.0222541749231908
-35778  -71.8496406666666729    41.4798306666666647
-76901  -100.496432665940986    31.4877676140815019
-67206  -97.2258028797287892    37.7040310240304066
-39062  -89.9033552879376288    31.9845376128405228
-64850  -94.4043843078960805    36.8696397337184152
-71922  -93.4243139114754086    34.0272093081967171
-91767  -117.738886108728906    34.0817821971416564
-31065  -83.1553584756184989    32.5674321109541083
-37029  -87.2768888507193878    36.0417851436475871
-79654  -149.572038384615382    61.6591425384615377
-40907  -83.5092029000000053    37.0145827999999995
-70764  -91.2588111905073305    30.2549525474067273
-43788  -81.3330451649516561    39.8039674385362829
-24773  -81.3065920000000091    28.7329673000000057
-45686  -82.3602812052463378    38.9926509989141437
-23359  -75.5864359168304958    37.8735145795678179
-62875  -89.0825304627586974    38.7473512425382935
-90021  -118.239472142302205    34.0284926906264715
-21403  -76.4883310616527154    38.948046819510779
-79068  -101.447433039124491    35.3238726970190413
-89084  -115.175585807691974    36.2879262119756092
-95993  -121.658234579807427    39.1286102769243627
-78623  -98.2249336637301127    29.9574623735213414
-83802  -115.953669567213169    47.2685130885245997
-20624  -76.7362646620011475    38.3334742052877147
-07461  -74.5946565957413981    41.2327725886611418
-60472  -87.7087607120909212    41.6432509442388223
-73455  -96.7584484690722206    34.241027528350493
-50025  -94.934277805675336     41.7442008814980667
-75753  -95.4632136666666611    32.8681726666666663
-35853  -85.8839797499999946    32.7881025000000008
-70435  -90.0935381790986867    30.5546998247127455
-50426  -93.0124598828828937    43.4150665045044875
-75630  -94.567248157109475     32.856725220422156
-70090  -90.7038014909092283    29.9778954206611878
-98499  -122.509435091652264    47.1666063174384149
-60208  -87.6788403084112531    42.0542998037383313
-73947  -102.247023432653052    36.8058017061224518
-56701  -96.1741556755016518    48.1306516463457541
-59406  -111.220444199999989    47.5840702666666644
-02891  -71.8088504608245302    41.3553239843400533
-15945  -78.8700232116402304    40.3591672328042321
-61937  -88.6482395799116176    39.7288613739734018
-76869  -98.9722961803279304    30.8922961779859548
-30178  -84.9837865357021229    34.1212764898956351
-56649  -93.3784318273169163    48.5820268926311769
-43452  -82.9027543331257846    41.5328661807535795
-32651  -82.4817308181818163    29.9037458181818145
-55364  -93.6667261532711422    44.9354279763607281
-74570  -96.1186355302292981    34.8676728881167648
-92585  -117.167442566357337    33.734244852271253
-73097  -97.6513072061068783    35.399304725190845
-36064  -86.0773776757498439    32.3238766471933658
-88426  -103.311490675764674    35.4975653762746504
-72704  -94.2570334713983442    36.0980778191470506
-97029  -120.775096694915064    45.3158447363465271
-72524  -91.343298851754696     35.8377920216464787
-26681  -80.7050853159071693    38.2314198719839524
-75413  -96.1704525319148047    33.3992865460992903
-75659  -94.1155177523809527    32.505525047619038
-02762  -71.3304797551650296    42.0109179285714376
-32537  -86.8044530363636397    30.856097581818176
-84721  -113.079626908479611    37.7288718194802968
-94320  -120.459410000000005    35.1862673333333333
-81025  -104.222255050055111    38.2680113989694561
-60936  -88.3719443829849354    40.4679804966146648
-29566  -78.6485197874681745    33.877437257976176
-84007  -110.207561105401908    40.3223311805006759
-05472  -73.1551221710275712    44.1127788912940417
-99548  -158.745481622641535    56.253529698113212
-32641  -82.2733921556647374    29.643201538051386
-25958  -80.7334982889611297    38.0111210698052062
-61777  -88.956808880368186     40.2364134248466527
-74824  -96.8744536918367629    35.8991364714285837
-73948  -102.050067999999996    36.7102361666666681
-06119  -72.7279899706362016    41.7626103984503274
-40870  -83.1528867660943831    36.9298500107296022
-26292  -79.5040390157067662    39.1538591308900621
-15715  -78.8774928734177792    40.9667967341771728
-45131  -83.9664711890547295    38.7901628258706594
-17572  -76.1476023223609673    40.0079562406355649
-72587  -91.8272206122449006    36.2394329659863956
-35135  -86.2024831963852023    33.6165533536883245
-07014  -74.1365121927710504    40.832998504016075
-70739  -90.9955212898513963    30.546434547411689
-04953  -69.2479627349763689    44.8533140704713063
-59262  -104.465877806599622    47.4894178524290211
-03771  -72.0258192774108323    44.2808844933949999
-10022  -73.9682631388456002    40.7587533931357413
-79078  -101.55023832067512     35.709573987341777
-53806  -90.9307963783563906    42.7419960346165908
-33177  -80.4041111244214335    25.5947727958460014
-33472  -80.1589472330130945    26.5478419486244732
-44231  -81.0692004720341401    41.3001468849306121
-78549  -98.0137795511111563    26.4429237644444477
-51652  -95.6454475688994279    40.7524349770334808
-80453  -105.241283935275078    39.6685565938511999
-60939  -87.7846144999999893    40.5630044999999981
-59718  -111.127568576145165    45.6636765735455441
-38720  -90.7436848855072924    34.1175497753622849
-80650  -104.764222213767781    40.6362373737060167
-64114  -94.5969818740472306    38.9580570994703095
-63871  -89.8436544999999853    36.2831189999999992
-57501  -100.334173164388389    44.5498975393163832
-38927  -90.0016765175989093    34.1280518868636449
-45674  -82.3742281707317119    38.8892612770034702
-72373  -90.5723542292769679    35.2768630017635942
-48350  -83.5242352745312076    42.7463792871571613
-39189  -89.3993583247291213    32.6005723116934547
-22314  -77.0570407148155851    38.8080934188951545
-37909  -84.0263866597414903    35.9466050172960649
-57335  -98.812353316079296     43.0663391354625702
-06354  -71.8669020882139904    41.713758426428079
-93581  -118.508665923076947    35.2488409615384697
-49646  -85.0749179960076418    44.7310779697118548
-56634  -95.4103714068787241    47.6779282100255273
-03748  -72.112531847798337     43.5974674760690135
-47124  -85.9946691419970506    38.3671197983357075
-28594  -77.0319830454131136    34.6640742411248652
-81620  -106.523941401426143    39.632253899247452
-70348  -91.2280599999999851    29.7107327272727275
-44276  -81.8306614274809476    40.9432785754550395
-03779  -72.0556958042986935    43.9832576442308181
-33461  -80.0914898767285734    26.6186649619330069
-83433  -111.335177374613053    44.4963217894736829
-15759  -79.0354422223822297    40.7733064228306432
-56735  -96.6869562661537003    48.8833025153846279
-93754  -120.22082788235295     34.926970823529409
-13502  -75.2057942609860817    43.1207752839734582
-84623  -111.558974284313763    39.473752941176464
-85118  -111.417920818181926    33.3524737483860321
-90747  -118.255880782608685    33.8672532173912941
-40062  -85.4278965229357397    37.603939032110091
-49006  -85.6274568327585968    42.2951656511712741
-73063  -97.4133838807564985    36.0543408865131667
-99012  -117.201499758886314    47.3817536590325403
-61607  -89.6809199408780842    40.6419671517087551
-56116  -96.3729461651376198    43.6128114559632891
-71344  -91.4164849714285879    31.7503170285714127
-14072  -78.9537589780383371    43.0169730941636388
-52305  -91.3306809353951792    42.024604793127132
-62990  -89.409045944971453     37.2059307495255709
-69211  -101.241330725190835    42.9365708396946673
-74085  -96.7166942003091918    36.1008103348056508
-94644  -81.1743006363636255    40.6953342727272727
-35758  -86.7425858371478853    34.7183179962962143
-48381  -83.594671079406055     42.5689017938837608
-08544  -74.6578588333333357    40.3486983333333384
-23219  -77.4358951536966913    37.5418260629052654
-69333  -101.944171149200855    42.0741753765541731
-26160  -81.4239786872834799    38.981294793666649
-55001  -92.8123160559964049    44.9042043304672731
-81643  -108.134229383364428    39.1382891103706001
-43117  -83.2059420857142698    39.7678347857142924
-36602  -88.046462133746715     30.6899066970770988
-13468  -74.8632621316371427    42.840541642699101
-74730  -96.4466632112910673    33.9204015446244256
-99127  -118.507530199999991    47.8166877999999969
-04538  -69.627985088997292     43.852335150763686
-53185  -88.1943315983246947    42.794501792041963
-93249  -119.803260261261201    35.6416972297297221
-02767  -71.0427556063316388    41.9293828620088007
-26178  -81.0280421942568978    39.0639347491554005
-99985  -132.828325400000011    55.2078594000000038
-23668  -76.3393877777777874    37.0198421111111102
-35047  -86.3745215499999972    33.2832507000000035
-94588  -121.896908788334159    37.6870143920950724
-60432  -88.0528899291694103    41.5377411021276828
-90015  -118.265650771665065    34.0391280165531356
-54834  -91.4764344000000023    45.7420740000000023
-54410  -90.041717579403695     44.5405519518031028
-96067  -122.32599187565765     41.3169581517318107
-63966  -90.2965833761549703    36.9493088325635952
-16440  -80.1169198192567222    41.7837823153152783
-21158  -77.0289348951510249    39.6320048815055728
-43759  -81.0720436917808485    40.0639107328766926
-63829  -90.297816844866972     36.0440461992394745
-94702  -122.285689425462465    37.8656160078889314
-90230  -118.399210396007277    33.9964463319438295
-36130  -86.299860222222236     32.3775730000000053
-83901  -110.253467999999998    34.3224579999999975
-34218  -82.7132663043478118    27.503080999999991
-64430  -94.5688209441823346    39.8311636297170395
-07822  -74.6980987317282796    41.142764024935488
-97223  -122.783566088881017    45.440203955977168
-11758  -73.4593960222262439    40.6804050637518202
-74012  -95.8087341224551068    36.0506910098777382
-25401  -77.9685855052834142    39.4593629919064597
-28652  -81.9649677062147077    36.0903470169491243
-14870  -77.1240645312861943    42.1671323168986163
-42029  -88.3800292591159291    37.0037288555913619
-22444  -78.8301989999999932    38.2973666999999978
-32631  -82.1013797135134666    29.7236650756756831
-12579  -74.711328888888886     42.2259540000000015
-13326  -74.9118842097364848    42.7114578953561121
-12168  -73.3842682122109125    42.5573231853767595
-99066  -117.540521232142851    47.8245441249999885
-46796  -85.4996720735294247    41.3381670588235295
-77422  -95.5882940127109748    29.0127331878932715
-53156  -88.5876864547617515    42.877748564285632
-82516  -108.82202674036418     43.195228531584533
-32083  -82.2371003005335552    30.0815739140485974
-97373  -122.778762333333319    45.0583526666666714
-15940  -78.6284294600269078    40.5146655060746781
-66762  -94.7031766940490627    37.4040471752192403
-77625  -94.3248751210327043    30.3426405124788019
-73017  -98.1011183287958772    34.9465005780104576
-35453  -87.4029452880718338    33.1680596532442564
-33990  -81.9503028007264902    26.6307384492416617
-94924  -122.707972711951314    37.9184625658835799
-33176  -80.360096359418776     25.6564930357432139
-66041  -95.3102612465193175    39.5974796044225315
-61415  -90.4222526133719526    40.654912653262258
-61362  -89.216103354360726     41.3362856831540739
-02379  -71.0167558945860975    42.023613868090095
-62286  -89.7174994687741645    38.1182277558992411
-43065  -83.0870812542270016    40.1645458430157092
-70344  -90.6035165472950865    29.4388321746751522
-71864  -93.2936323166666455    33.516176449999989
-08604  -74.757238000000001     40.2237599999999986
-75926  -94.9898167986157347    31.2228789628696468
-62671  -89.5524129368668724    40.1764832579890268
-58651  -103.691018276243071    46.2424454171270867
-92210  -116.3406185863318      33.7135013665271188
-92086  -116.678760306263968    33.3200753719649541
-64166  -94.5436660986546684    39.2977813609865549
-15080  -79.7147677500000071    40.228643500000004
-82201  -105.09019679999254     42.0185731560463296
-46156  -85.4904015271459912    39.4824406162075121
-59024  -107.64098462617487     46.1704102929672473
-75251  -96.77230906437768      32.9183467360515252
-34147  -81.3610094444444485    25.9471072592592549
-99784  -163.404704555555554    64.6809212777777844
-88313  -105.6789725    33.4079704999999976
-33440  -81.027017558098791     26.6720204253362994
-14883  -76.4859928841869703    42.2418904161842335
-38039  -89.1716963157453364    35.0507563291457558
-84067  -112.049479498993378    41.1707562285409026
-56307  -94.5740303018888397    45.6355182406863662
-77937  -102.952623111111123    33.9889461111111117
-59702  -112.552128272727245    45.9868142727272726
-60647  -87.7017871194626082    41.920973139472494
-66045  -95.2549617034632945    38.9563062489177696
-31752  -84.5478384999999975    30.8031275000000022
-31319  -81.3649983421052667    31.4630321052631565
-17968  -76.6164024611162233    40.6389647703568073
-00807  -103.176770500000003    40.7776789999999991
-59333  -106.225372771084352    46.2639778373494153
-50857  -94.8719585667027587    40.927724023318909
-23592  -78.8842646666666809    36.7103373333333352
-25984  -80.6774439349215413    37.969914979662974
-61089  -89.8050490452029209    42.4741290207564788
-35005  -86.9674598900411979    33.5924495996708075
-03268  -71.7380173260748109    43.388394388609612
-39817  -84.5860400947175037    30.9272826877029381
-83805  -116.312319442918366    48.7597748151051391
-12729  -74.6034535637720069    41.4671742761194437
-37042  -87.4029109386509333    36.5840460944863395
-03062  -71.4941775808379845    42.7235018006669947
-28073  -81.4794686078193564    35.1962219209936933
-06378  -71.9183309268095172    41.3651455104462187
-28346  -79.7406430000000057    34.8828025882352932
-13244  -76.1344079305555539    43.0365327361110985
-65771  -93.2207593025918015    36.774148533322105
-62880  -88.8570288306122364    38.8639087469387903
-16654  -78.0809565624999919    40.3257019999999997
-13030  -75.9589222041307011    43.1623365864553037
-98620  -120.795310714360568    45.8520218211811752
-62435  -88.2434208863636371    39.3744662727272683
-13334  -75.6532771321644759    42.8398295866486336
-84672  -112.691654095238107    37.4548761904761989
-98623  -121.483167499999894    45.8205553626373785
-26285  -79.9654290372340739    38.9345031063829836
-80231  -104.887414590237285    39.6724335939691883
-49626  -86.2939505904436572    44.2436058737201279
-04355  -69.9544707681946534    44.3852541409560928
-97638  -120.947853103225896    43.1666994387097063
-59275  -104.175496913358671    48.8900597844644409
-02360  -70.6169987263437235    41.8872374285918525
-83204  -112.453409455666375    42.8368249119714122
-21093  -76.637132991265176     39.4369480278559763
-83439  -111.380213166666678    44.4176199999999994
-67872  -101.073211499999999    38.686376166666669
-23462  -76.151365462758946     36.8363245722231838
-24468  -79.6584999999999894    38.3127627142857108
-94926  -122.704915470588219    38.3463181764705894
-70721  -91.0997835159574407    30.2092809680850856
-73021  -98.6667605734767363    35.3558590931899914
-16751  -78.7382845416666584    41.7637270208333362
-93109  -119.721621631056706    34.4049914927969454
-25451  -80.4015552000000042    39.203466199999994
-36578  -87.7886953377623058    30.7426432678322179
-15290  -80.0205644999999919    40.458987625000006
-93430  -120.877342372247156    35.4678801809036273
-32686  -82.2473454447281256    29.368285518139988
-35956  -86.1346029032216052    34.1485722978600776
-31816  -84.6134434463479295    32.8684793932904427
-39440  -89.1376640982770709    31.7023100239340607
-33070  -80.5279754311212912    25.0041747998994168
-03980  -70.7510459500000053    43.2333683500000063
-21710  -77.4477907186515466    39.3047053994958304
-43416  -83.2775176112342734    41.4807115247598048
-07826  -74.7632953911658262    41.1814669065540784
-14559  -77.8064293797855413    43.1885589667264043
-23309  -81.8009092631579051    38.2980042105263152
-72689  -92.8712346176470618    36.4340334117647089
-84374  -110.707383571428565    38.3750484285714251
-44882  -83.142995931519124     40.9488372018140581
-04760  -67.8425915764354812    46.3197318135719769
-29501  -79.8202368599361307    34.20194213957096
-17972  -76.2038606649584267    40.5987576810350319
-02718  -71.0167890683227512    41.8684208342258231
-28621  -80.8367663537865582    36.2977327562565932
-43008  -82.4787802317518128    39.9335438029196794
-08237  -74.9503228461538527    39.2581485384615334
-81420  -107.781294100000011    38.7792121000000023
-83866  -116.438652803206921    47.1588354912536545
-29849  -81.2304194455898596    33.0956241672394569
-66843  -96.7734223005671197    38.2534784858223489
-38260  -89.2028297780451851    36.3666827831679456
-58260  -97.9564023662182137    48.5693080403587345
-18818  -76.0303730259217332    41.9161420146038424
-46562  -85.6991151620690204    41.2157430780400489
-51562  -95.5033820537027083    41.7230986172979357
-27960  -75.9776938238636035    35.1123419109848527
-26411  -80.697275466556377     39.1934773398018024
-31764  -84.1086377482104552    31.9610756947368486
-71466  -92.7598324663742062    31.2264887543860361
-89149  -115.288098203442644    36.2722205329660028
-72550  -91.7781859218118825    35.7130904865315486
-33336  -80.2607651428571529    26.1320687142857153
-56668  -93.3476082162162157    48.6132400990990874
-79116  -101.883927     35.2137010000000004
-98043  -122.302916725878504    47.7921458845309672
-06389  -72.1118030141843889    41.5612219929078179
-72930  -93.9822075607299894    35.4269926412838032
-04040  -70.6836565079797907    44.1041956251616867
-23974  -78.2344406887980597    36.983159957556424
-41250  -82.4555833779501057    37.7596416944714548
-80481  -105.464131612941628    40.1052383977245555
-11373  -73.8764637272727214    40.7351104545454561
-53035  -88.535824441501191     43.3973926578366473
-53223  -87.9878890546137882    43.1631321432370925
-29307  -81.8452627171207183    34.9808355864127876
-19966  -75.2276865919547078    38.6041675766144436
-63535  -92.6935621204187754    40.5732163141361184
-16627  -78.4995774072344119    40.7519212500000307
-84635  -112.691257256643809    39.368561962034903
-44033  -81.1155958000000084    41.5272173999999978
-70072  -90.1079585382294255    29.8654381328881833
-18070  -75.5390409144080053    40.4283264636234065
-95607  -122.101630064017755    38.7290219293597957
-16405  -79.54209049567298      41.9403940639423709
-59035  -107.897210660000027    45.322838080000011
-16364  -79.523662241762807     41.3654446987717677
-45036  -84.2071570462682359    39.4430980056049805
-65682  -93.9608139027681091    37.4006709496096477
-85029  -112.120875625882107    33.5966597497614359
-33607  -82.5001579149230508    27.9634097444210994
-29596  -79.8237384902949572    34.7398210691397651
-25537  -82.2727987400793523    38.5148329087301349
-38066  -89.5337687165263105    35.0843265622659359
-15745  -78.9817861920000297    40.5793373280000012
-28358  -78.9730712575945546    34.6196836710714138
-37608  -82.3019096666666741    29.6153686666666651
-97002  -122.794270266740412    45.239110924468541
-54010  -92.4669589999999886    44.7348264285714237
-71652  -92.3120661504381701    33.8725746874391049
-33126  -80.2934201660092413    25.7774790874051014
-28675  -81.1383861371565303    36.5071500717378328
-04029  -70.6663910629921475    43.8914977424072035
-02075  -71.0969340000000045    42.1211370000000045
-66440  -95.6877774227354365    39.2585316015393886
-73488  -97.5454388054054533    34.4990452054054302
-57070  -97.1594879115039163    43.1912360015817782
-74647  -97.0403239763125072    36.8940081601174725
-64138  -94.4747724791743479    38.9693091460913408
-27900  -76.0860400500000083    36.1594359000000054
-29457  -80.0877169999999978    32.7221279999999979
-78717  -97.7593984583728002    30.4969507794608248
-60021  -88.2190628643218702    42.1948048690511612
-40941  -83.7183535040984879    37.1360357254098687
-57468  -97.7699915081521453    45.4975508885869502
-37214  -86.6639462578983455    36.16649408369436
-66833  -96.1655040256888753    38.6715618533394903
-30308  -84.377669223417584     33.7720876860758992
-25284  -111.931216166666673    33.3487493333333376
-89411  -119.830049694842117    39.0108980694842842
-08858  -74.739584400304409     40.6708748706240684
-92110  -117.201058605514859    32.7660963671158925
-62922  -88.8314824549565429    37.6177443763849482
-92358  -117.540183227680103    34.2691944983864403
-56245  -95.6455699283887384    44.685068653452646
-45651  -82.5015195746249788    39.276210532542926
-18512  -75.6201499314442316    41.4288574024984939
-04973  -69.1877358085806407    44.3581216081607224
-91126  -118.123049000000009    34.1377345000000005
-46932  -86.2351947609359115    40.5959726362157838
-40813  -83.6089501991746431    36.7287594344685715
-87312  -108.31415280373831     35.4546121308410918
-75435  -95.3136404927853249    33.5069831145606045
-57528  -99.7509500294984832    43.2084046924778704
-08310  -74.9040312147368184    39.5218225357894752
-95670  -121.279334329572649    38.605942323748728
-12525  -74.1782845498905914    41.6842199314982977
-23453  -76.081526777114405     36.7861884659700493
-10041  -74.0095995000000073    40.7036085000000014
-77008  -95.4151615380372249    29.7993276490785952
-34266  -81.8708460512138174    27.2042233604304364
-44889  -82.3853260670174024    41.246976831310775
-17750  -77.455294081081064     41.0561346126126168
-37307  -84.6375573214454135    35.1770376654070063
-03215  -71.5076719332192283    43.9519356292808254
-21074  -76.8490792263846458    39.6171064512381932
-07762  -74.0363903561984102    40.1537023143252156
-90302  -118.354884528105032    33.9748061514641364
-12934  -73.8871057817929682    44.8544369999999972
-23230  -77.4894658007575003    37.5836926499052879
-49106  -86.5613561665186921    41.9442300431825288
-65322  -92.9564756808834858    38.9711052067234576
-73628  -99.6841007850720047    35.6096782365108311
-06831  -73.6582604396033247    41.0708966926948946
-08812  -74.480457563319888     40.5990932695378888
-57580  -99.9334721436711959    43.3301131945148086
-37353  -84.9843051255000859    35.1180188411877694
-94563  -122.176806813528373    37.8825394053968978
-61323  -89.3955776666666964    41.4350792682926894
-33420  -82.6116883333333334    27.469432249999997
-95459  -123.637437938154847    38.9812511107231643
-52649  -91.6052271479337463    40.8434063368095934
-26624  -80.7931258666869212    38.7052413011719949
-19735  -75.6046363983051037    39.809737220338981
-49326  -85.3287579796891293    43.2409897448427785
-01867  -71.1098326314582607    42.5296637088641063
-48659  -84.0234172279412945    44.0730545506055549
-34737  -81.7957859706332044    28.702565642639204
-39662  -90.2890372668724979    31.3929483415637876
-12754  -74.7368207725618419    41.7994319310211822
-78592  -97.8460660838323264    26.0778092455089876
-45813  -84.7320429576938494    41.1926921036993505
-55118  -93.1056144328159121    44.8998768453748482
-77585  -94.5185487205650219    30.2952705129512267
-36038  -86.4615118333333186    31.2414818333333351
-63838  -89.8099119999999971    36.045007499999997
-82932  -109.429683490776711    42.1380716932039263
-57241  -97.2174253704834967    44.7015325043256126
-59477  -111.935933338959259    47.4909845246132747
-49287  -84.089552737029706     42.0358365338614206
-04990  -69.5990350791556978    45.1459842427440634
-16644  -78.445826330985966     40.7054586830985912
-82933  -110.429033512473154    41.2734490434782231
-13640  -75.9680140683125842    44.3307619164608866
-28359  -79.0105994315789673    34.6440521473684342
-74070  -96.0432660622370236    36.380826704863658
-06706  -73.0270393148889809    41.5342605404443148
-74728  -94.7477670171804931    34.0458163577565145
-88056  -109.02682895278457     31.8524368692493489
-83833  -116.761308032130415    47.5456622696413262
-58530  -101.19246016516523     47.1246696576576696
-17888  -76.3800023520408189    40.8151842704081673
-49251  -84.4105461971121969    42.4646447226326202
-06437  -72.6991678718021177    41.3196257488096066
-47338  -85.3408590941923677    40.3391987572598651
-73552  -98.741069212876468     34.6130186064382102
-47615  -86.9629829383709705    37.9702846570204073
-21746  -77.7132119999999986    39.5624771250000009
-72642  -92.5332311214852155    36.3776590638067034
-49333  -85.4646218561793347    42.7007512921396923
-38367  -88.6165976132591027    35.0581655571977606
-53140  -87.8311545727702878    42.6064749043786293
-07162  -97.7946612499999901    28.5667372499999992
-23943  -78.4590710909091058    37.2426012159090831
-41001  -84.3967481503714794    38.9242467231769069
-40864  -83.4485037999999975    36.9922922000000014
-14145  -78.4325755325410228    42.7269184040746737
-24476  -79.2209791267805628    37.9670232336182067
-95654  -120.795526999999993    38.3665845000000019
-80544  -105.171979337349413    40.1039166385542103
-52771  -90.2393829789473898    42.0022080210526241
-00761  -66.7057479494949206    18.2644890303030323
-95629  -120.703167836210326    38.5113013047919992
-12998  -73.5476090469565378    44.0861489773913249
-12522  -73.587969696725466     41.7279311712291872
-25040  -81.2465035797101649    38.1261736135265821
-95488  -123.776178631850613    39.6786876331399796
-54212  -87.2336876825305865    45.1113016387114669
-68845  -99.1281435680492962    40.7181355393160516
-60930  -88.0072270952156401    40.8267228427286284
-52052  -91.1236101482232925    42.7460171052938662
-68433  -95.730285408662823     40.0604814350282581
-89142  -115.045266507006701    36.1492881392938443
-06414  -72.551452429319383     41.5671449476439676
-28430  -78.9363062293853943    34.2977238898051766
-30588  -83.7351496666666719    34.201385111111108
-88061  -108.286855234760509    32.7848131471827173
-45309  -84.4164762233984334    39.8430727817666934
-75157  -96.4520977887323738    32.4610815211267223
-24067  -80.0557263724196417    37.0292763855138176
-49615  -85.1968366682889524    44.9629878947131445
-14588  -76.8696040967741965    42.6827779354838768
-95458  -122.790098785298099    39.0895616368268151
-56227  -96.1702358317972426    45.3035242488479213
-54458  -89.3107629421487133    44.494858289256193
-02120  -71.0975489313146625    42.3320745701624475
-13682  -75.9038027383966067    43.8523257655213001
-42567  -84.6075998740802078    37.2633313382128861
-87752  -104.705053737306699    35.998331503311249
-15231  -80.459955249999993     40.224966749999993
-05056  -72.7225858618548813    43.5234299901047095
-55616  -91.6753767210727233    47.0969839956811924
-15275  -80.1346762222222253    40.4529930740740724
-87056  -105.996794826669358    35.1569729783594482
-13624  -76.0956339465240887    44.2283169125410538
-19136  -75.0254741659366289    40.0450615423860299
-38023  -89.906759395149308     35.4607716258208754
-10552  -73.8260077468897293    40.9247433453453127
-16260  -79.2294588160677193    41.4070088763213562
-46496  -86.6035205000000019    41.0667655000000025
-71425  -91.898151629464337     31.9035671502976186
-98257  -122.515522449644948    48.3948480617374628
-38426  -89.6317402380952473    30.6547795238095233
-32627  -81.6881989999999973    28.8513015000000017
-85732  -111.306337666666664    32.0882482499999995
-38393  -88.6463741333333388    35.0055502666666669
-61317  -89.2111416376404236    41.4266935421348421
-19645  -75.7068823333333398    40.2229423333333287
-29145  -81.7721275602235664    34.2179903570140738
-92677  -117.703761064673458    33.5276922206242389
-38940  -89.9899797682625291    33.7383853243426088
-12166  -74.4570904902998478    42.8442341860670055
-48140  -83.5916544725677966    41.8705857695684358
-76101  -97.3375395000000054    32.7505170000000021
-35648  -87.3914544764680841    34.9623938301209733
-47203  -85.8586683592420883    39.230738789661217
-10014  -74.0054291400587232    40.7341856758080354
-76059  -97.3298255148809517    32.3940535119047581
-67660  -99.1648425106382803    38.7106292978723374
-21667  -76.0502586849315207    39.3386763463796569
-30647  -83.3147591692307259    34.1672972307692433
-97009  -122.352690489662351    45.4222652261804996
-75773  -95.4657574867011931    32.6808350297706482
-95978  -121.540014491442633    39.9122491980439946
-30294  -84.2593819151573626    33.6374170937499883
-10689  -73.7478935000000035    41.3157580000000024
-38008  -88.991035083726473     35.2441821777922399
-85013  -112.08289652697637     33.5093068980891076
-91914  -116.959264172037948    32.6623138816758996
-67029  -99.3147579852320774    37.2432841888185493
-87505  -105.923880307958854    35.6310963284647357
-84542  -110.721194461960664    39.5459077898038913
-98947  -120.745819262311429    46.701396771189323
-95018  -122.059180549368747    37.0698155575220269
-33438  -80.6134659072165078    26.8992524123711405
-59826  -113.68546310580831     47.4937324029716237
-85922  -109.135992381355933    33.6829244576271236
-58531  -101.153776275494579    47.603869295281612
-75692  -94.0910023677626981    32.4616701589671024
-38451  -87.0054810994222834    35.471597629391141
-32776  -81.5389917240733411    28.8144756624197313
-86722  -111.738632749999994    34.6626004999999964
-69140  -101.746940314247738    40.8239832070572533
-74052  -96.5850375875543108    36.084449254703344
-06250  -72.2039361845897076    41.7637629729909179
-32801  -81.374655355726162     28.5423806979634946
-50680  -92.9201164837209745    42.4445426166112938
-02128  -71.0296436159034954    42.3795816304579702
-20785  -76.8848667161609285    38.9173061536958542
-29061  -80.8423712667726164    33.9345539978016006
-71485  -92.5184144289225685    31.1663875096272598
-48754  -83.2370856378048387    43.7278405219512081
-48083  -83.1144063904041843    42.5608828195285156
-04063  -70.3875841363636852    43.5021025499999752
-56590  -96.1293350793201995    46.0421678314446936
-33856  -81.4257462222222443    27.8561521507936583
-63471  -91.551557178160877     39.9166447262931143
-36065  -86.0318518571428541    32.0431242142857187
-38919  -84.7358329166666664    30.7674893333333301
-46063  -85.7268549761904239    40.2707691309523739
-92325  -117.275833966820883    34.2404943440690701
-20722  -76.9523416290450655    38.9400046661404602
-72010  -91.5588634770698064    35.3425579351593271
-92081  -117.241950782910436    33.1685387361755133
-06426  -72.4000545781625959    41.351710673881712
-04606  -67.7098857760786359    44.566299021026893
-84731  -112.745286485380092    38.2472590292397499
-39073  -90.1261246039966011    32.1225143771744115
-07630  -74.0275958660886317    40.9756614614643837
-70752  -91.4120382348336022    30.5843886457925862
-55738  -92.6508533807212018    47.2911794944521446
-15219  -79.9776761224005668    40.445334257934995
-91750  -117.769841998857487    34.1211548927823429
-59632  -112.08399283836448     46.2564090726825015
-48166  -83.2982795548780075    41.9855373464377521
-98587  -124.269250756152161    47.3246411521252597
-24920  -79.7517110924855359    38.5646044046242622
-47916  -87.055393974358978     39.983355897435878
-59369  -105.12566425   46.8376519999999985
-56101  -95.1336673468567966    43.8773860297817109
-14814  -76.9496211471545166    42.1465937463414022
-01602  -71.8453151666667651    42.2723242201005718
-27505  -79.0114500331676197    35.4122206856458064
-45245  -84.2758115892702193    39.0612639874239136
-57107  -96.8104336264806875    43.5803636071374214
-79092  -102.439138424625796    35.2241291542002202
-85224  -111.874355811072718    33.328235606649983
-87110  -106.578009131165189    35.1097237407744984
-30204  -84.1302707768543314    33.06139648573442
-50535  -95.1598367782390824    42.4579219177740796
-41743  -83.0917591030640494    37.3242948495821878
-17343  -77.3320027468354709    39.8687730253164574
-99743  -149.028381367346952    63.889164683673485
-02109  -71.0540857098445713    42.3613570846286578
-79097  -101.171582258809096    35.4305678748481299
-99402  -117.090274880341795    46.2346179341881083
-87151  -106.85583871428571     35.0066202857142841
-12036  -74.6763275391198533    42.5406093337408251
-36277  -85.8179090144965784    33.7563420614127878
-49610  -85.5019099583333286    44.7702497499999836
-37450  -85.3117749999999972    35.0489732500000031
-98827  -119.642329961360218    48.8774874502834038
-88025  -108.691440237288276    33.037156920903989
-95601  -120.826948666666667    38.4225185180953019
-16340  -79.4223796426147146    41.8167177587419943
-07842  -74.4902736874999789    40.9445358945312279
-37617  -82.3697520474036935    36.5323644457399155
-49653  -85.7307849269384974    44.9744544522742729
-10002  -73.9873850076857877    40.7163802596071136
-74563  -95.0690657754581423    34.9571335962322323
-17121  -76.8936674999999923    40.2943224999999998
-67058  -98.0445047607525311    37.3216358715651424
-49507  -85.653505417249832     42.9313666219027041
-32658  -82.4026780000000798    29.8442586036364013
-46747  -85.1554883961611893    41.5589662220300795
-67104  -98.5987820998037847    37.2904937477093981
-98539  -123.270360666666633    46.6357646282051448
-38856  -88.452529968545349     34.4850079453950187
-30444  -82.5692544000000055    33.1009546000000014
-63783  -89.6973349350347746    37.5929508039442766
-67504  -97.930383272727255     38.055958090909094
-70664  -93.3707551249999881    30.230062249999996
-31075  -82.9579638708157887    32.3647466626569056
-88051  -108.974711952978097    33.0364769921629957
-75701  -95.2939769766503275    32.323448571783679
-72003  -91.388448789587855     34.3961124483007907
-85213  -111.771953409254309    33.4444703105344701
-02375  -71.107080798730351     42.0235115790337375
-95618  -121.709479016839353    38.5514856518375026
-17253  -77.9944083872340741    40.1979699319148907
-25241  -81.8032923951909652    38.8006121954736969
-35131  -86.1858338001941888    33.7191750887254997
-58542  -100.039089351254489    46.0453005824372639
-30446  -81.4692696718563951    32.5793900674650843
-12027  -73.9033874046305215    42.9172816907386832
-43402  -83.6640646141464117    41.3927553936101376
-77577  -95.2636045199591877    29.2864826028659735
-04020  -70.8093668103266509    43.772895423076875
-04094  -70.574155277777777     43.4070341111111091
-02141  -71.0858270335516664    42.3703709582651626
-14901  -76.7786688299643174    42.0926446503546501
-30423  -81.835556700854724     32.1402815555555534
-27101  -80.2173314262840762    36.1066585760035963
-97374  -122.792725232827152    44.6936284837991948
-98577  -123.680781660992579    46.6593169018599667
-16511  -80.0086221414183001    42.1603923470273756
-36862  -85.4396654559749749    32.9179324964752311
-32511  -87.2880921481481664    30.4055251481481541
-79392  -102.827759454545443    34.284347363636364
-21021  -76.39122704761904      39.4300215873015958
-48047  -82.7801286864853836    42.6755077171535078
-50229  -93.7557177987014825    41.3803462867965735
-98552  -123.921619943478177    47.3144761119565374
-35740  -85.7377186695976263    34.9433066274873951
-97215  -122.599725995754397    45.5154903851413195
-84629  -111.443476706067216    39.6727966548314157
-62972  -88.8192759568791672    37.5430107581683785
-10526  -73.6581521427413293    41.2968622457420977
-07870  -74.8204930784313689    40.807160784313723
-87117  -106.579923223684219    35.0555843026315728
-54876  -91.474774457300839     45.838783564811358
-15415  -79.8539751363636299    39.9806733636363631
-13806  -74.9643326542055348    42.3753868247663235
-62347  -91.0967363497154281    39.8648420534132626
-83643  -116.451521456233408    44.6269308328912118
-88348  -105.358684609341893    33.41257838853506
-82701  -104.292237869484993    43.822739832133415
-16240  -79.2289020766373397    41.0439771038186478
-42156  -86.0456107148991833    36.8513296878488745
-75458  -96.2430109999999956    33.2129858999999996
-22649  -78.2469367000000204    39.0041843999999998
-61857  -87.8442190446429265    40.1156388392857224
-64769  -94.5819790215053615    37.486779567204259
-57451  -98.8901079493912505    45.4301560064686782
-85007  -112.089533530094997    33.4523290658767962
-73425  -97.5607265000000012    34.4505281818181786
-84037  -111.935493502215564    41.0282506141436016
-49120  -86.2397642151903909    41.8212117745708127
-95482  -123.233938532596298    39.1457594610967305
-42378  -86.8717689774195065    37.6570622776209163
-87026  -107.169615611248858    35.0445907568237871
-58064  -97.5958983283081523    47.141820132886636
-62884  -89.0495493346840874    38.0802921697731094
-13841  -75.8310908006953355    42.4091681610660416
-76182  -97.2099344807033532    32.8814720340463822
-72340  -91.017803774193581     34.9384468387096945
-97216  -122.559296914761461    45.5144021244708199
-35078  -86.4434049037059111    33.335156858921259
-08250  -74.7974111249999964    39.300187875000006
-87040  -107.407692804979234    35.1477740311203277
-77563  -95.0080368815895042    29.3395560018543051
-54130  -88.2650331230370853    44.2753672649930792
-79072  -101.79060482097718     34.1064023321761383
-83012  -110.731962732  43.6484791119999898
-28425  -77.9177647474455597    34.5513110292699395
-58521  -100.713082835739627    47.0244440901861793
-77558  -91.7296079999999989    46.360349333333339
-01344  -72.4373627909208153    42.5999815185421298
-69216  -100.906465864197529    42.9759001358024761
-29229  -80.8925816388111372    34.1490652790204692
-27551  -78.044685603207185     36.4557750335165949
-61442  -90.9192126303029795    41.1106642512820386
-56278  -96.428070153000732     45.3296568393053221
-88072  -106.648214423542441    32.1207618305830422
-18653  -75.823065780487795     41.3937992195122035
-58482  -99.9470073253454814    46.8299370771888732
-74152  -96.6859000000000037    32.4110610000000037
-48186  -83.3767800099598304    42.2946211885893533
-03222  -71.7594612600476864    43.6208602057031172
-25443  -77.8118189925683197    39.4400092524852255
-27408  -79.8142124380119071    36.1036262539595469
-43601  -83.544589000000002     41.6419619999999995
-99362  -118.328899134968196    46.059256933101814
-13669  -75.4971072135862755    44.662663614813269
-04764  -68.497045116417965     46.4194434179104007
-52203  -91.8523415786582973    41.8171469540996839
-01801  -71.1579813064610676    42.4837182675868945
-57522  -99.9345876947205625    44.5412912403726011
-57002  -96.6812150226243858    44.2849910349062341
-81049  -103.366753135823487    37.3856665502052365
-73965  -97.6354450000000043    35.2863981111111187
-33534  -82.3713482678867877    27.8305466569052413
-43338  -82.7614120370724464    40.5594026612181082
-30341  -84.2917302845354044    33.8891309447194402
-59259  -105.053447999999605    47.5917303701016223
-14533  -77.8834000929348775    42.8427599972826556
-74136  -95.9367033527848463    36.0611946209844874
-94903  -122.546297747092126    38.0135333920589531
-04238  -70.381300423525218     44.2024441052632042
-58043  -97.5316177982884795    45.9721925525671935
-54632  -91.207259063414611     43.5750850829268543
-19129  -75.1869602232619485    40.0124727292781657
-83328  -114.609413676573936    42.5691353604139593
-60437  -88.5463760048497761    41.1637418797284553
-16822  -77.6234546609662601    41.1151335163894984
-26301  -80.3514740074767104    39.2769831005215337
-56292  -95.434551542897367     44.4995545428973074
-84751  -113.052047697875807    38.3682303792289687
-44838  -82.2658552298850623    40.7789106091954139
-50042  -94.8904471088193162    41.5368030967283417
-30168  -84.5924336468241336    33.7912191807921758
-96934  -120.912336999999994    40.0941402499999882
-18454  -75.4249891435185162    41.8267845254629407
-20838  -77.3691059692308016    39.2250049346153915
-13760  -76.0649415457469615    42.1184848479199303
-79562  -99.85114771020163      32.2484095754868179
-63473  -91.7717828580968416    40.2295951978297737
-99504  -149.748622270764031    61.2025166287513827
-52047  -91.3567778650189553    42.9667704266702799
-32548  -86.6195092500566801    30.416644626558007
-29176  -81.116605000000007     34.4747706666666645
-83726  -115.468069499999999    42.9457900000000024
-56546  -96.7596002070956871    47.0903447920792217
-50863  -94.1848160236221048    40.8468014330708584
-98851  -119.447385419482856    47.3939704720836303
-17735  -76.867871923076919     41.5972183076923159
-29481  -80.8268138346534499    33.1088962529702755
-63957  -90.7073360787491083    37.1634776140195839
-95709  -120.675153054876745    38.7448399286272291
-13881  -76.1983752500000122    42.2530971249999965
-26153  -81.0980769285714302    38.989118642857143
-07407  -74.1192915595239157    40.9050952085033899
-84366  -112.951424153846176    41.9663021538461578
-30340  -84.249907582408639     33.8945074393679917
-04732  -68.3829357480863393    46.6141198893527502
-20690  -76.5270196821191604    38.1587525112582213
-78262  -98.4025483750000092    29.6511513749999978
-85266  -111.920934097504215    33.7709941010980828
-83539  -115.869921409445183    46.1065545541912911
-62090  -90.169890948795242     38.6710760180722701
-25148  -81.5758337535210671    38.0513562582159039
-12720  -74.8877290319410491    41.6802547199017255
-22623  -78.1402694195122507    38.8520321499999497
-34043  -86.6807040000000057    33.3078569999999914
-47247  -85.8886458823529182    39.0599794652406516
-71068  -93.3077234496948051    32.2966950826918549
-39654  -90.1490439298518851    31.5363688605140489
-77587  -95.2299525437637442    29.6610645361050551
-85388  -112.436112561541677    33.6203744978965844
-90740  -118.085983558787092    33.7591270794994216
-62553  -89.1388642481961853    39.2784207460317774
-59824  -114.197523478890474    47.4225205950944684
-12843  -73.9918867436144296    43.5794349802043115
-76803  -98.8669560000000018    31.753498142857147
-95350  -121.006401965630545    37.6726942124352249
-62615  -89.7443344353001606    39.5865167846791195
-50117  -94.8614462978889321    41.6674418029710836
-23357  -75.673818004158008     37.7574783461538814
-56021  -94.3236173138957241    44.274601550868482
-27880  -78.0875508263581111    35.7374656536063497
-20160  -77.6818257272727095    39.0901569090909078
-61929  -88.6118779159049836    39.8155720210237405
-67663  -99.2856251693974912    39.2262998119086816
-91287  -82.8085379565217181    37.9399184202898638
-89110  -115.055958135526822    36.1736665422139012
-26586  -80.1093606379309904    39.5261769568965491
-03908  -70.7613759108163265    43.2359438998612973
-30090  -84.5488930000000067    33.9542473333333348
-07410  -74.1174735236805873    40.9393538464140931
-43719  -81.0774920063086313    39.9955068846831523
-10922  -73.9908181437549075    41.3345925184603331
-11420  -73.8098159999999979    40.6681681111111075
-67475  -97.0600364981817734    38.5945977345454452
-03857  -70.9497517271009741    43.0727975121812676
-62248  -89.9870779810606365    38.3057966136363746
-03444  -72.0512124176642601    42.8976370384988712
-80303  -105.215115348973725    39.9938982255251787
-18452  -75.5876666541225148    41.4821986579281798
-64438  -94.4101105218578169    40.1694003579234362
-98407  -122.506687037773673    47.2845987531733201
-78903  -120.613145250000002    46.567005249999994
-86333  -112.162907957960726    34.3512405128313247
-46036  -85.8368934541443451    40.2831156644929251
-85135  -110.786784731800708    33.0045100191570668
-24375  -81.3923805219440908    36.7784978164671728
-55136  -92.1326810000000052    43.498818
-54652  -90.7557892592593163    43.4431889314814725
-63014  -91.3339807524252336    38.6431270624209873
-58456  -98.9665631498639158    46.2949326553133389
-43061  -83.1987816277518135    40.2798126359796242
-93606  -120.012120721238972    36.8032851504424841
-81101  -105.869795324206677    37.4695538207685956
-45764  -82.2498174284998953    39.4407510558291747
-18656  -76.1769542282634688    41.2991067696719014
-78409  -97.5308120234939082    27.8111761186747195
-99748  -158.730250438775528    64.3258083979592215
-62414  -88.8093258916436952    39.1720113691460057
-47590  -87.0959762128113653    38.3533482398576879
-19977  -75.5998368791398292    39.2868734709384526
-79410  -101.890790797624035    33.5689593744366874
-03584  -71.5554708762760896    44.4829820882352536
-47175  -86.5546398695988586    38.3560049166668406
-13033  -76.5672810674052187    43.1843833775940027
-32063  -82.1337864737926111    30.2805220019603318
-14738  -79.0838826941885742    42.0415056691449678
-72012  -91.9119208855441912    35.0963428879408781
-70464  -89.8806882200557311    30.5369120640668577
-64448  -94.8099752572817067    39.6028495812297621
-07501  -74.1695839780921773    40.9137092784116803
-39714  -84.1786431176470558    36.2917704705882329
-44235  -82.1216213412017595    41.0326824892703215
-79918  -106.392140499999996    31.8310549999999992
-21219  -76.4453622816337202    39.2308238110748775
-28386  -79.1185499851012963    34.8492525937129258
-52207  -90.8284614210111698    42.0925897027382874
-66518  -96.5593311079545913    39.9653643892045096
-72758  -94.1365053884302796    36.2998885260163746
-07702  -74.0592152568226965    40.3259923211500677
-96501  -122.085002083333336    39.8772935833333335
-75454  -96.5664966430655056    33.2852466286858757
-95941  -121.256253339244736    39.5055384416475945
-23841  -77.5632158445970674    37.0766020072041727
-61410  -90.3978640295327835    40.8041149281216491
-02260  -70.157399538461533     41.7352501538461595
-28042  -81.5030598333333245    35.4280826818181822
-16871  -78.053854147826172     41.1862190034782216
-17702  -77.0656928406204287    41.1977709124656997
-92694  -117.640057137682987    33.5527446154636735
-56090  -94.2155750636672309    43.955814689303935
-37281  -79.7241433333333447    35.2517143333333323
-77306  -95.3173797400398399    30.2782596309717214
-97737  -121.646458191455537    43.5096271534809773
-54501  -89.4100122738903735    45.6579481890734158
-11203  -73.9340007971193245    40.6494198716049624
-22327  -78.5708539347826047    38.3965251086956485
-38878  -89.1952749656291815    33.8884235139377594
-61874  -88.2498590099626341    40.0588333652968061
-02816  -71.5939288516458561    41.6926774981620625
-56573  -95.5703624151746141    46.5989069935723279
-77367  -95.3902932103173669    30.8464432301587124
-57268  -96.6868365900734545    44.5587137757353133
-23959  -78.8003775843579461    37.1052491398924289
-54832  -91.3129532090276825    46.3104357279612984
-50455  -92.6350455410142075    43.4525604176581268
-21036  -77.0003990585272646    39.2359183033354384
-59864  -114.111178578547879    47.538559661881159
-77893  -96.7243064999999973    28.4155675000000016
-45773  -81.2886639427279789    39.4513640143180382
-32009  -81.9530328504443304    30.4260060922464035
-27516  -79.1203594386774682    35.9093292237625263
-58759  -101.248974855089756    47.8298415625321383
-53947  -89.1406656575342282    43.7473823698630042
-67622  -99.7107637248158483    39.8965028624078784
-04282  -70.2497184081248065    44.2688801936560026
-72543  -92.0064647905504813    35.4728258942317822
-28508  -77.8208116740102867    35.1042017515964275
-48464  -83.4260361644927002    43.2164024405797633
-98925  -121.206492692454404    47.268515725883347
-29544  -79.1898953811700324    34.000031749315589
-20832  -77.0745422037083188    39.1535743153489832
-02188  -70.957797509313167     42.2090249305393215
-98133  -122.344237834147307    47.7421688098458503
-61477  -90.3113611853974305    40.4841696325459282
-03957  -82.0177716000000032    26.4528134499999972
-08619  -74.69110073550236      40.2403590424720434
-27935  -76.8570636329080372    36.432310080743548
-33480  -80.0385027870925825    26.7134775555556061
-15634  -79.6049605947368377    40.3246241973684434
-99587  -149.125421278672889    60.9578994348464107
-32803  -81.3526847896080909    28.5566125057588671
-52595  -92.6188426216215817    41.2863686531531329
-99726  -151.518606599999998    66.9133147999999949
-04917  -69.8344393523561138    44.491380991040522
-32639  -82.7247215993377267    29.2416168617549488
-57543  -101.498042184151856    43.7857954720982505
-22432  -76.3559553867188043    37.8679776809895827
-74459  -95.4925072045454328    35.5209460909090993
-50605  -93.0361410000000433    42.8435261252699675
-72567  -91.9046646133332956    35.8190271991666549
-72585  -92.0160833255814197    36.1721370174418766
-53219  -87.9926759492282429    42.9950809438888442
-67063  -97.2155082651729856    38.3409440281059517
-29729  -81.0129830130358926    34.6945046895901612
-23899  -76.9660468387776859    37.2254522455215806
-81073  -102.656644956412535    37.4102730282219511
-13652  -75.2106973689993907    44.4382063455754803
-11001  -73.7041944087695526    40.7221316403819813
-16248  -79.5066657721657037    41.033923561336735
-81034  -103.847824500000002    38.194358500000007
-06467  -72.898804245614059     41.5680532982456157
-39423  -88.905543669686395     31.188487567421582
-29556  -79.7872160912882578    33.6756629903460194
-39815  -84.4954721306559691    30.7426695551601057
-38621  -90.155234034759502     34.473532288153045
-17371  -76.7900300277777887    39.9047873888888915
-95926  -121.845470034537357    39.7441985156867759
-66508  -96.6439025051345766    39.8546148382331893
-75973  -93.9509247444912319    31.7184004964972388
-02905  -71.4029248194378852    41.7859925103046592
-75114  -96.4370428502751196    32.6329825354127223
-96027  -122.944383384681373    41.4215856246297633
-50043  -93.3727287499999932    42.417823999999996
-64874  -94.0536468357142894    36.7605589952380853
-45744  -81.5098587747864372    39.5311579077182529
-23840  -77.6654328851107039    37.061336168042196
-54986  -88.7266469549549583    44.1212956971744532
-54012  -92.3239209999999986    45.1273520000000019
-76952  -100.987192000000007    31.8326491000000047
-67484  -97.8080054591744812    38.9865428646788388
-62866  -88.9750901052631491    38.2132177894736671
-69536  -103.4936285    41.807478500000002
-94606  -122.243517132515734    37.7936233894223506
-12508  -73.962388496147355     41.504062207433023
-78609  -98.4483203302396674    30.7573340103119506
-24517  -79.2483127636264442    37.1394647857528568
-52658  -91.2441067498690899    40.7147091077609673
-76656  -97.0636930409555276    31.1882568013652239
-01331  -72.2051998664544357    42.5762327701658094
-48463  -83.5193178999467563    43.1676658531133626
-47230  -85.6234101443261011    38.7947701216311813
-43354  -83.760159250000001     40.3153594999999996
-48768  -83.5824451291349675    43.3652834823987661
-06340  -72.0477459554471125    41.3543789374929247
-41451  -83.2575560000000081    37.8708053333333297
-74369  -95.1640046660497205    36.9210148219136371
-48896  -84.9026638608695663    43.5220258434782608
-15461  -79.8988208536530067    39.846334218965147
-18103  -75.4743315256600624    40.5814979595855618
-54129  -88.17363559312831      44.1335997992766664
-48722  -83.8559618996783911    43.3497327974276487
-79604  -99.7333781250000015    32.4357690000000005
-70343  -90.599647910068569     29.5525990703811736
-59032  -108.848906004728562    46.9265454902269354
-91743  -117.585961100000006    34.0644431999999924
-04101  -70.2580663563609846    43.6610681315551048
-79774  -101.8942835    30.9126525000000001
-26802  -79.2219777848324895    38.6365746410935031
-53929  -90.3152349705402315    43.7490750687397281
-43456  -82.8258783892773778    41.6479616299533291
-78500  -97.7938604999999939    26.4892699999999977
-96049  -123.363948040293025    41.7896431941392095
-70000  -91.0771219374999959    34.0186259374999977
-31322  -81.2608720279441741    32.105083779550263
-55940  -92.7919276777141988    43.8901014338287396
-47224  -85.224229389743769     38.887385609829046
-58763  -102.522782212022236    47.9954864198509412
-26325  -80.8756571917403591    39.098619207472872
-64024  -94.2174811599607835    39.3372814187573496
-63868  -89.6896288322580091    36.8465185505376454
-49887  -87.78541619377161      45.4157576297577563
-56647  -94.6202829224648809    47.6673060063392811
-24839  -81.7771541367232118    37.5570570564971433
-99768  -155.464555449999978    64.7362690000000072
-83638  -116.093440791018836    44.8770767844393603
-71257  -91.1733468749999929    32.0275678124999956
-76107  -97.3844571467318048    32.7405572717316389
-53965  -89.773212265399394     43.6673137064219361
-78381  -97.0867535294117943    28.0319368235294135
-75420  -95.7222759412833568    33.0439230562953199
-05340  -72.9007931656870483    43.1521373865099633
-55959  -91.7563141966262492    44.0918300759093498
-03745  -72.3354720710755714    43.4752857865677527
-37165  -87.4694298400000463    36.2918407485714241
-07442  -74.287164788215506     40.9985776329966356
-73771  -97.9454255549738519    36.8692920209423889
-22011  -77.3789620000000014    38.6724563333333364
-96110  -120.106573453592887    41.3163160853293476
-00715  -66.5383088780487668    18.0090277987804868
-40403  -84.2646881864613704    37.5809327690871982
-73851  -99.7508791249999973    36.6161771250000001
-46614  -86.2534709747420152    41.6198088603126521
-63737  -89.6530263333333295    37.6628553333333329
-58235  -97.4688927483314984    48.0892797049571428
-46256  -86.0135832480173121    39.9046740900623931
-45158  -84.0882947058823333    39.1819393865546104
-08319  -74.8172210929367623    39.370575947955345
-20012  -77.0313344359552872    38.9805675389549293
-43209  -82.9275652594547665    39.9547964582625497
-36503  -87.5645543333333336    30.9983590000000042
-48137  -84.0569711495122078    42.4448943424246963
-97416  -123.673083889222312    43.0350922974072532
-34606  -82.5967510875521072    28.4677890260507418
-02333  -70.9432089890835442    42.0324085130768594
-24815  -81.6550844900989858    37.2531719183168306
-28671  -81.5286148754941138    35.757901391304344
-42731  -85.5782497283072701    36.8758696045519727
-66612  -95.6801740041971556    39.0411857282266439
-55314  -94.597293420978545     44.7524463410510052
-88023  -108.132485858683836    32.7638531089536329
-36442  -86.3531005864106902    31.0531734980461636
-37847  -84.2956403802072742    36.4529339480973036
-43155  -82.5108311168361439    39.6335694594334171
-30315  -84.3825584723750239    33.7051964896186291
-56481  -94.9491413486796603    46.4549774846534405
-18981  -75.3947305000000085    40.4867309999999918
-15856  -78.6456135158544498    41.0857607587007365
-84103  -111.874784411742652    40.7804313495088238
-57446  -98.1522080801242822    45.8649277260870463
-15636  -79.657881460747987     40.3629077640771925
-97233  -122.501809842392944    45.5133790631053827
-79634  -100.646996000000001    31.6115112499999995
-18901  -75.1415410868735876    40.3064318319532617
-75482  -95.5996511496106223    33.1269250497790466
-35552  -88.1404880405674476    34.0683910873759288
-37115  -86.7049949375937103    36.2627606943869623
-37922  -84.100108602648902     35.8685223296404203
-87626  -108.750003799999988    35.2508194000000046
-75796  -94.9386433333333315    31.485042333333336
-93434  -120.583928057330041    34.9576568353808383
-35633  -87.7689917434156541    34.8981817154333953
-04449  -68.8837026555721224    44.9893226297178117
-08631  -74.2120037499999938    39.8385812500000043
-30531  -83.5671917287069164    34.5158603709013008
-46182  -85.6690787999352352    39.4548003114277037
-82715  -104.168847491844375    43.9414181455458106
-62053  -90.6243193881117861    39.3010990909090836
-56342  -93.4452773968256452    46.1739196458770991
-45244  -84.3185290062218797    39.1154746999267999
-75541  -98.2391465000000039    34.8406774999999982
-12306  -73.9985656277862205    42.7905892528477878
-25022  -81.8112204152542546    37.8311152118643861
-56362  -94.7102581135273738    45.3952953002683017
-45720  -81.9233639999999923    39.0878122727272768
-43768  -81.4413045300752287    40.0381357368420723
-57221  -97.5188584453704976    44.5783039968733945
-00694  -66.3992709824561302    18.4756565789473761
-27536  -78.4070208943008993    36.3314525431151409
-38114  -89.983969593782831     35.0979346850233469
-75459  -96.6335556542677097    33.5207923357961803
-25507  -82.5596223843137835    38.3959350568627471
-98006  -122.148623961519164    47.5584652575192379
-99401  -117.142609976908091    46.1268057912124192
-53233  -87.9333827173662428    43.0402296884866615
-62521  -88.9259364772400005    39.8230396611924249
-84302  -112.027726219516722    41.5088302820955661
-17745  -77.4394381092665327    41.2217502741989108
-16691  -78.1422518241468822    40.0932474628171036
-93625  -119.675780411145141    36.6266976489470437
-42246  -91.5412125000000003    41.6551584999999989
-98630  -120.253987846153876    42.4507208461538355
-46885  -85.0628029090909052    41.1470040909090855
-78003  -99.0552978539216866    29.7261478947336428
-27216  -79.3666693333333342    36.2462310000000016
-53911  -89.3806617692306702    43.3218281068376641
-47264  -86.2685077601569361    38.9581151678544089
-97038  -122.560440088750482    45.1138097332916672
-29941  -80.8125478423091721    32.5747944854707683
-21215  -76.682108363446531     39.3467296197721481
-17342  -76.7122352653061057    39.8491784285714203
-49105  -86.3574492500000019    41.8791632500000048
-08045  -75.0313945424390027    39.8679341473171078
-55328  -93.8004430505099549    45.0343284632600245
-13153  -76.4574070790960292    42.9945247457626962
-17839  -76.4246780000000001    41.0365202499999953
-64437  -95.3549752599898568    40.1505926621692382
-61775  -88.3689605589028986    40.6473703529676982
-40930  -83.7307171388888491    36.908734333333328
-87531  -105.862734122806899    36.2437205789473751
-06524  -72.9991343266199237    41.4231314346958825
-11722  -73.1992024126373053    40.7853951310982126
-94573  -122.411839724637574    38.4876229033816628
-49316  -85.5518486034823837    42.8091585969006161
-28504  -77.6408806986902675    35.2545350267655095
-85237  -110.943937769987826    33.0150525153751957
-93447  -120.575218000000007    35.5846930000000015
-03602  -72.3418847629739474    43.1475418651030651
-41041  -83.7205457332718055    38.4073372444093621
-43047  -83.6416005964912443    40.2066361754386108
-39842  -84.4241524350109245    31.7614249865206411
-48849  -85.1345050493484621    42.7884875911823102
-28376  -79.1862590530372188    34.9976972071814387
-47331  -85.1576836546483094    39.6248367666066201
-07940  -74.4158965254675024    40.7565669938320596
-74358  -94.8805504628571725    36.9160676399999872
-63951  -90.2906992653778957    37.1028971335676445
-77856  -96.440851707474053     31.0562397662142118
-70782  -91.5284637436516988    30.9622187654171661
-08406  -74.4860238212159089    39.3431843627334175
-44867  -82.9890957561798075    41.1454485724718708
-90280  -118.196021606282898    33.9443700158861432
-54813  -92.0321124988682442    45.6424100516070794
-50480  -94.0444170812737923    43.2430060993346004
-38245  -87.8946983333333378    35.4555281111111142
-23341  -75.8831721606648273    37.580316609418297
-24382  -81.0945139742107131    36.9365979126250537
-35094  -86.5529721426466807    33.5187180816089381
-39771  -89.2766573593749371    33.6073094453124881
-01862  -71.2919213347090732    42.5713879702846683
-33705  -82.6434572961268685    27.7375578775559468
-80129  -105.009881470511786    39.5395001527956467
-88115  -103.354070625000006    33.9303773333333325
-19534  -75.8655039390992556    40.574776207696857
-60045  -87.8623464132835181    42.235736432562291
-59501  -109.691098489274083    48.5440447302936207
-22949  -78.8762514031704711    37.7871079906323075
-85363  -112.301894109425874    33.5861610379198154
-55130  -93.0808854487805917    44.9734972792683152
-26584  -80.3678949999999901    39.5383775454545443
-35572  -87.2754020538074542    34.1530859301367542
-87466  -106.070603199999979    36.0504046999999943
-63848  -89.9007964251968872    36.4537297732282894
-98329  -122.715641193998181    47.375534035483831
-22963  -78.2959205685378947    37.8738060606601792
-45548  -124.03601350000001     41.5240788333333342
-74523  -95.6222652342743373    34.2282075049530121
-01610  -71.8097206474523659    42.2484950808917645
-02347  -70.9605273363033433    41.8376476124171361
-05768  -73.228001435261703     43.2784243911845579
-14054  -78.1348545686403497    42.909331616135276
-58425  -98.1125969867568983    47.4553573173925187
-56062  -94.4167411829694032    44.0511293684710097
-18931  -75.0328796842105277    40.3489270789473622
-05904  -71.7117160336134845    44.4164026218487535
-33831  -81.9520490000000024    27.9547104999999974
-64492  -94.5533645232559081    39.4819561241860129
-04459  -68.3514521543998512    45.5437541184000594
-49508  -85.6257368251347231    42.8736351273249667
-27528  -78.564659674418607     36.4429903023255832
-28735  -82.3488230906418579    35.474402976482132
-81253  -105.10897710172928     38.1770499461197659
-13680  -75.3467347460707373    44.5782614420431358
-44266  -81.224732631874204     41.160363078542332
-38505  -85.5054916666666571    36.1745741176470474
-25672  -82.1152666590909064    37.5832151818181757
-32439  -86.1599131507324927    30.4798711931523982
-50511  -94.2232635846514057    43.07240728837116
-06277  -71.8373553285381661    41.9741814225491154
-25441  -77.9114548030302956    39.2215668181818131
-17565  -76.3268874883566895    39.9023217897539197
-92254  -115.979481942618492    33.5439675581395065
-61431  -90.2717927055125529    40.6006030332962595
-47456  -86.697049843246063     39.4717227182458998
-43160  -83.4383891847996182    39.5233139989334745
-45236  -84.3963890703678885    39.20851222662845
-16624  -78.607026986187833     40.5753187707182263
-98002  -122.215177007397301    47.3083751154034786
-50659  -92.3166494637059429    43.08419091587281
-41712  -83.1564657467350941    37.3662034416303825
-49729  -85.2844291689149543    45.1607311652360011
-50932  -108.802316250000004    47.0247317500000008
-85147  -111.756423490079342    33.1019534404762084
-73140  -98.1150480000000016    35.6239530000000002
-92656  -117.729539566577174    33.5798464023503627
-49617  -86.0333584359800767    44.6392399501689781
-95825  -121.405068237364318    38.5897955005832003
-40878  -83.3943134375000028    37.0314113750000047
-74534  -96.3550981951219399    34.6143033048780566
-23227  -77.4451124145727334    37.6110442224238781
-43001  -82.6097134796368664    40.0920956184985542
-47386  -85.3752561405119081    40.0531511492936829
-65734  -93.9396663167939749    36.7974481335878281
-74059  -97.0341149674944319    35.9762533898911414
-29476  -79.9668113333333253    33.3841788333333298
-76548  -97.6512599261373282    31.0592648496399164
-13626  -75.7130853237821952    43.86246713435213
-92841  -117.976239045627594    33.7879583944137494
-59540  -110.558766590163913    48.5404732688524376
-27852  -77.6496673409239406    35.7508501374864878
-45638  -82.6691090922807348    38.5508967263201114
-02650  -69.9688923768115387    41.7033667162764914
-65638  -92.3273912678571946    36.7845342976190608
-15341  -80.3491145463990506    39.8394859527050968
-63071  -90.8178175032405619    38.1525222878382735
-48505  -83.6971102483543632    43.06231761272646
-00772  -65.859477090140885     18.4285832070422479
-17880  -77.1252647142857057    40.8914254000000028
-37030  -85.9618996621159965    36.2694751220036906
-41018  -84.5964932974261359    39.0082075685340541
-89740  -107.070058666666668    32.6683115000000015
-15840  -78.8236444825855074    41.1635042717289963
-63034  -90.2907162882309819    38.8348814448740427
-98835  -119.296132666666708    47.2396294166666522
-28123  -80.8269227499999943    35.5462902499999984
-14728  -79.4349548763385371    42.2529316204496652
-29426  -80.3715930544745589    32.7845004883268842
-56020  -93.530969363636359     43.6142549318181807
-06481  -72.6984576608884794    41.5347791722643507
-55017  -93.4291441372656806    45.6702228257994278
-56225  -96.4718107399052371    45.4470786377671558
-86549  -106.033428799999996    36.3306560666666627
-80239  -104.827231710536992    39.7869650667424963
-13482  -75.1850365955055935    42.7031212134831364
-48416  -82.9899496896337752    43.2153764115456909
-98637  -124.037774583333331    46.5013165833333275
-16049  -79.6679815502999418    41.0921421286974038
-95490  -123.378782548261398    39.4556719951772337
-68777  -98.6942090837837043    42.8792153216216434
-41042  -84.6536548141330201    38.9859197761752085
-28010  -80.8968482142857113    35.7236180714285751
-97824  -117.826341055984884    45.3235373504333054
-50125  -93.5772438243844249    41.3481202476493763
-37503  -84.8260768571428656    35.3918915714285731
-35471  -88.1480721585366354    33.3852560487804695
-72048  -91.1516773547963908    34.2936780538764623
-49657  -85.1761086069707147    44.2154787654157033
-11956  -72.4761374532019715    40.9935368325123051
-49769  -84.8421352965075357    45.5570456739131089
-63447  -91.9091545813048754    40.1055223414475464
-48649  -84.1982139232631539    43.1504046486268109
-66416  -95.8610069688346442    39.51829243631434
-66422  -96.0634182750902568    39.3252631234657457
-37872  -84.6792005379640926    36.264072814512879
-77845  -96.2898952191652882    30.5663805480558928
-69212  -100.773819417475707    42.9382594174757415
-13165  -76.8781580847794572    42.9094635732935572
-97015  -122.533151925230882    45.4177344331631758
-13649  -74.7158369199999868    44.9269022000000007
-14066  -78.1813944603624265    42.6289190756539327
-61870  -87.6236927857508761    39.9058992824192771
-88266  -103.315725499999999    33.2641545000000036
-85756  -110.907886541430031    32.1077837165960958
-47862  -87.3478279981907946    39.7780179027589327
-60480  -87.8804245766546046    41.7352183342201712
-68627  -98.1536224406963811    41.5545096735582433
-77973  -97.0077687142857314    28.5454423174603171
-50673  -92.7104646923076814    42.5248157076922979
-75941  -94.7607946640369363    31.2057619528969354
-27018  -80.5230933535334259    36.1991120477786552
-80444  -105.70051738742761     39.7123515131493718
-52162  -91.5459704382603405    43.1024688540518781
-95818  -121.494185301079639    38.5555772224254127
-05648  -72.4965743205646618    44.3741989601814169
-47514  -86.5841343496113041    38.1400158557158449
-89460  -119.764506118704716    38.902049483632716
-22454  -76.8315151297405237    37.8460007860278438
-35643  -87.2031935768062567    34.6325745223113941
-78208  -98.4550725191048031    29.4431898422489375
-01440  -71.9898088110440426    42.5756703433233668
-30439  -82.059693724740967     32.4133057683415444
-28012  -81.0404459008687894    35.2204781131380287
-48324  -83.3969993498242133    42.597324075008153
-02467  -71.1630736031979865    42.3185110606507635
-90013  -118.242266576787713    34.0443384724501854
-71923  -93.0842252906355299    34.1045492682771894
-58443  -98.669346439247974     47.4385453215045416
-15734  -78.9940518814814965    40.7195150888888833
-99121  -118.512428784950828    48.9683650209491361
-36422  -86.2167120000000011    31.0193094285714324
-48620  -84.384240363636394     43.7948129999999836
-19943  -75.5876471735178797    39.0142022442661229
-04253  -70.2152480477802925    44.4129155727652218
-75891  -95.5571343333333374    31.7477703333333352
-20153  -77.438976750000009     38.885796062499999
-03580  -71.7499581179233843    44.19757813201484
-90212  -118.400952346126488    34.0618272878464552
-20503  -77.0379061818181725    38.8987671818181795
-05750  -72.763662615384618     43.6389892307692335
-09693  -66.3735922500000015    18.3756007500000003
-34887  -80.1992958999999956    27.1531273999999989
-62221  -89.9334589098484258    38.5282360856442594
-49679  -85.1586865618631919    43.8833800218340002
-95370  -120.330229745274352    37.994525127765975
-68142  -96.0980670077060211    41.3413392219368276
-28368  -79.1110351774193674    35.363029435483881
-76444  -98.5644547580016877    32.1168564503480241
-13780  -75.4795341059501226    42.4192788637787714
-57656  -101.100202194723664    45.4238270025125175
-38370  -88.237755927407207     35.3862264097777341
-62992  -89.1643959231722079    37.2770357403964567
-42079  -88.579132113274909     36.5600740948493268
-16411  -80.4293071898540006    41.9811882159877001
-82330  -107.119786399999995    41.7784656000000041
-53952  -89.6229313572108026    43.7908416358472863
-28570  -76.8826941774348285    34.7619257487605395
-44049  -82.3041267101449563    41.2666517971014528
-98228  -122.319780999999992    48.7139415000000042
-48801  -84.6677026936108206    43.3767821441934842
-68748  -97.4208182333334491    41.8408703215054345
-44425  -80.5759961197012302    41.1662942350372631
-31993  -84.9846566666666661    32.4808293333333324
-79550  -101.209046777777786    32.7487535555555596
-24309  -81.7447494999999975    38.3462095000000005
-95095  -85.9116165454545495    33.9351662727272654
-19802  -75.5323890195392522    39.757188202639739
-30267  -84.640710999999996     33.2704200000000014
-65244  -92.659860827375681     39.4671452327812275
-45771  -81.9019420240720279    38.9903181485182913
-35763  -86.4704417245577304    34.6362907917337779
-91711  -117.718111509350877    34.1156864279968488
-62705  -89.6125605000000007    39.7496662499999971
-28394  -79.2326836869083451    35.2213494327651873
-97016  -123.220922212077454    46.0930594716264892
-61951  -88.5982273168736185    39.5937400533028878
-79733  -101.367779154471563    32.1104630406503873
-45645  -82.5423475006268035    38.5642409236292067
-99780  -142.71374666666668     63.2401427333333359
-41056  -83.7666522821646566    38.6054475910948867
-14580  -77.4628848860887445    43.2188515663740063
-45883  -84.6336737344522732    40.4103921808982491
-56516  -95.9990375370369975    47.4434106967592797
-16848  -77.5734024976958807    41.0496913271889312
-75869  -93.6816479999999956    31.2278622500000012
-02445  -71.1347056254748367    42.3283446669079879
-48453  -83.055457714049453     43.3352128195041857
-25638  -82.0221471365188535    37.7371126877133207
-92590  -117.216250727606635    33.4858425683737124
-11557  -73.6921777464151688    40.6384840026414125
-61813  -88.565769725094782     39.9130301883144938
-51248  -95.6564651515341779    43.1953582917970564
-41559  -82.4009596928373469    37.3696261473829239
-20133  -77.6740314999999981    39.1959099999999978
-68023  -96.0398607842247998    41.4539745696585769
-07082  -74.3460918810445293    40.923145794729308
-11762  -73.4461881342226377    40.6823596258857449
-47104  -85.4261810242717701    38.5484206844660093
-71226  -92.447873756542819     32.2645607108399517
-18328  -74.9434371012330303    41.2366978347705242
-57130  -85.695375999999996     38.3151914999999974
-73005  -98.2504085091832451    35.0652134269567171
-19970  -75.0990241417303963    38.551323146111649
-78368  -97.8252842055621556    28.0760851663978173
-72178  -91.5983991249999718    35.2017795833333267
-10550  -73.8352663193490883    40.9061116260397668
-98109  -122.346493334855012    47.631766203276122
-15358  -79.9981183697605047    40.0551834251496999
-73142  -97.6338963286975741    35.6036000628319727
-43537  -83.6827038960168181    41.576282655919826
-74103  -95.9938815657052231    36.1560928060897027
-23110  -76.7663240414035641    37.5755578989473733
-38948  -89.9159582121918248    34.0689738564448916
-77412  -96.4593264736842571    29.5595357485380248
-93517  -119.299579245682608    38.2042334852367418
-19562  -75.7030922831168596    40.5014289675324974
-00923  -66.0370834916466549    18.4107339670644237
-30751  -84.7366761343283486    34.9852599253731213
-55450  -93.223399885057475     44.8745557816091818
-52653  -91.1683565671178684    41.1735759116177107
-39656  -89.9319155187644697    31.4530501707073427
-04000  -69.8740661935484013    45.4279443870967654
-04007  -70.5068581666666745    43.4559207499999971
-54806  -90.8971107941988379    46.5696211186228624
-31023  -83.1906458694080015    32.2046885672876471
-77552  -95.0014599999999945    29.163563374999999
-78337  -98.977643999999998     27.4672015000000016
-65479  -91.6488770137659543    37.3052125103245373
-68506  -96.6382252618802795    40.785857582906111
-78778  -97.7388449999999978    30.2767030000000013
-34603  -87.0203336000000007    34.5777163999999999
-40383  -84.7335450527502729    38.0128858892784294
-22936  -78.4936847777572098    38.1588939866431147
-37240  -86.8013947090908715    36.1465763818181784
-66112  -94.766461870535764     39.1158441024159842
-58601  -102.791552358742521    46.8728881364155541
-61453  -90.7324093291640423    41.0106532119815341
-77047  -95.379987522411227     29.6159748033229917
-30438  -82.0173166764705996    32.1518433235294125
-12747  -74.6647111087133482    41.765084375814304
-73437  -97.4371100966183832    34.3563177536231876
-57063  -97.6568194181567293    42.9171470618982127
-66418  -95.9422963475176545    39.2721115579195938
-57760  -103.362898692702728    44.7936868640250694
-70504  -92.0121818461538368    30.2048615384615395
-01033  -72.5135092546683921    42.2591849501391437
-77634  -93.7462103333333374    30.2969510000000035
-76061  -97.17591162264155      32.5088931603773617
-06372  -71.954754481481487     41.392643351851838
-74557  -95.6704436861314065    34.3696497518248378
-62225  -89.8650667555215534    38.5394638019802045
-44622  -81.4775105865631275    40.5415148445023519
-50544  -94.17867524069257      42.2483966787878344
-50255  -92.333857000000009     41.4548046111111006
-22622  -78.0615678750000086    39.2529598749999948
-52208  -92.2669806129118086    41.8882274635632825
-68941  -98.3096426247379327    40.4623174389936153
-60955  -87.9915560209625767    40.7020280345438437
-52586  -92.4696189768022663    41.3429394314774328
-39152  -89.5639660772155253    32.2377494617724878
-58056  -97.9703050461298517    47.2432399132133938
-70722  -90.9387876250439291    30.8456807595984159
-68152  -95.9991649912137461    41.3481946985468625
-58316  -99.7808101332556845    48.773558400349728
-01349  -72.4857965803857383    42.5753836229903584
-45121  -83.9185545621062374    38.8644557303528586
-98100  -122.304425499999994    47.6458994999999987
-81028  -102.309339399999999    38.1255238000000034
-02898  -71.6730406961063409    41.5186483228870244
-93060  -119.082767022261464    34.3594623245931103
-64158  -94.4802338580813625    39.2296930295663344
-26755  -78.739010425613543     39.1565935832054492
-32757  -81.6359804854260034    28.7959705137654183
-00998  -133.940257777777759    56.9723455185185159
-52169  -91.6481334702437778    42.8460323104660858
-10530  -73.8077358855331624    41.0223514149803492
-02646  -70.0728305750000544    41.6716292970237987
-44312  -81.4404434224501728    41.0255420701579041
-79124  -101.965816522192654    35.2335371171770291
-75707  -95.1913495867801345    32.3009202797347541
-71648  -91.7304688749999997    34.1699522500000015
-35585  -87.7959612927506043    34.4090091596569962
-29466  -79.7970531003430921    32.8803878997508718
-44610  -81.7966110975610121    40.5613048878048588
-95696  -121.907420500000001    38.3496980000000036
-04028  -70.8622347857142927    43.7542146785714365
-11735  -73.4441417995658838    40.7257270910569531
-66203  -94.7071677193384005    39.0208979346421927
-87365  -108.195706455830432    35.5658785300353273
-83329  -114.18041176190475     43.3622894761904831
-07871  -74.6364747964866098    41.0383685723264762
-24311  -81.4027083673790486    36.8634679887513386
-34491  -82.0216206033501294    28.9984241131654663
-10470  -73.8602148317503264    40.9010086743554737
-11516  -73.7279643809523719    40.6263211722223261
-21720  -77.5849817142857177    39.647030000000008
-07833  -75.0657837045454954    40.8907821545454482
-46516  -85.9591606042839089    41.673894975912873
-04367  -67.7698933913043504    45.1801205869565194
-06092  -72.8582189108182234    41.864502538155044
-28270  -80.7605488725807987    35.1098420736791681
-72030  -92.6878151454187957    35.4345388111516613
-80538  -105.138627767133585    40.457776399628429
-39433  -88.9667828064516186    31.724028193548385
-12170  -73.6678473306063353    42.9911200421078377
-38619  -89.838875689086052     34.5140687954003269
-85004  -112.069898074055857    33.4511637385973444
-10457  -73.8985399968926657    40.8471498514605784
-32701  -81.369260034030205     28.6647554855791853
-91732  -118.014284655630263    34.0745393459398187
-93636  -119.876892015867895    36.9684379018884357
-67849  -99.715989841463454     38.1364408609756325
-99359  -118.160677878260827    46.530528273913049
-75662  -94.8699237586077828    32.3852148621968752
-66650  -95.7887975999999952    39.6699178000000003
-93561  -118.549220671933412    35.1359390091122066
-55449  -93.2025028587555369    45.1763845509669935
-06264  -72.0900786999999781    41.6949048548387111
-50599  -93.8190280300676562    42.5791432856449887
-52593  -92.7307882778334545    40.7662327392176422
-80253  -104.364894666666672    41.1983188888888918
-78212  -98.4941052448716476    29.4619208461540367
-17767  -77.462312214285717     41.0848002857142731
-75167  -96.9212191217809931    32.3743114949493744
-35966  -85.6722396802050099    34.7951797166141219
-54301  -88.0197302218228543    44.4819799196293602
-06230  -72.0158132215908893    41.8487505000000013
-30554  -83.6574842750964081    34.3957226525339621
-11214  -73.9965868697053111    40.601275697053417
-08625  -74.748231863636363     40.2357199999999935
-32013  -83.2953336000000064    30.1900233200000052
-18808  -75.5875886666666617    40.7417249999999953
-23221  -77.488201886221475     37.5560400076051764
-97777  -123.529367620689641    40.1515959655172452
-12918  -73.6700542469879025    44.6863388334767748
-44011  -82.0182989284238033    41.443744535168598
-18037  -75.5335844506578269    40.6805997214226522
-41763  -83.1189888633840326    37.0687936853017561
-44086  -81.0735716223832128    41.6761369484702016
-19703  -75.4665215385223007    39.803120857339934
-98321  -122.080173666816165    47.1488164030711161
-94041  -122.075916074752982    37.388458159379482
-24238  -80.6657843888888806    36.6585415555555585
-01940  -71.0342988000515874    42.5329397636152962
-71427  -92.8871998708792859    31.3909205558607773
-70660  -93.4328827486886411    30.5829483981879449
-06073  -72.5718670169326856    41.6618390488910038
-51048  -95.8637721165553529    42.5664975018559772
-39595  -88.5789905384615395    30.3363877692307682
-29323  -81.8957943156651282    35.1273208068453613
-37027  -86.7745755411155102    36.0014800663838486
-13428  -74.5424565825946672    42.9193548154714222
-45776  -82.0223383127611783    39.187839750240947
-41114  -83.1716492000000045    38.6097037999999984
-02635  -70.4400548517268845    41.6268938983725079
-38873  -88.2508255348683406    34.6656735018352578
-16856  -77.6469610526315677    40.9294632631578921
-24425  -82.3181430232558284    37.2155177441860374
-07106  -74.2310118657895117    40.7414066763157692
-33872  -81.5095247198488835    27.5090471450783731
-32747  -81.324813000000006     28.8155313333333361
-56528  -95.7975677350700039    46.5370367134075593
-78050  -98.4880007922849074    29.068586988130626
-21722  -77.911904323716243     39.6636662742573307
-46835  -85.0548996096297287    41.1413412142824271
-12056  -74.0904340045325824    42.7704567745042183
-23139  -77.897826227319797     37.5438952243543085
-54325  -87.188074499999999     44.9816739999999982
-08644  -106.392031000000003    42.8471975
-37062  -87.1334619662135594    35.9774084172235007
-50174  -93.9575277492439795    41.0487325257019293
-66094  -95.3457433897801536    39.9663495323826581
-50499  -93.5989427142857124    43.0045641428571415
-68945  -98.777021976960782     40.560886461764639
-42322  -87.3960676846153461    37.617227538461556
-58233  -97.4877845318287228    48.2259218117211859
-52133  -91.674078803520004     43.1046475538273484
-12078  -74.3427923645434419    43.0843364961111419
-48210  -83.1284908396760756    42.3370825344763091
-97401  -123.081132123853962    44.0660355352933095
-41868  -83.382905000000008     37.1157768571428548
-75247  -96.8742146392960422    32.8166931686217112
-49309  -85.8713174532526295    43.7473463630271269
-74112  -95.9094730931710586    36.1476974235735824
-22735  -78.1637738176617347    38.4804151694602012
-59474  -111.693642963235419    48.4814393256634091
-53214  -88.0145965689542606    43.0200120631067904
-52638  -91.2639359047618939    40.8377589162561208
-66763  -94.6954591329516546    37.4551336399491532
-72139  -91.6512693428571055    35.3556810476190435
-56258  -95.7767820551867004    44.4447911400710751
-79046  -100.052504214843566    36.123568357421874
-44613  -81.5967181327968518    40.7129553883299664
-17126  -76.8797639999999944    40.2617345000000029
-95831  -121.529788578800606    38.495020537917199
-23423  -75.7421414116788867    37.5490397416058244
-39113  -91.0362832152466268    32.9090133363228787
-00639  -66.1565349268292522    18.1776883658536548
-30442  -81.9642958107357771    32.7893624683362646
-61764  -88.6254531789466142    40.8799514247819076
-52355  -92.174966983028682     41.4560887454307903
-43144  -82.165896331958777     39.5103565422680276
-90018  -118.316207886742717    34.0245255394434523
-81628  -107.104458513888872    39.4711093750000046
-13672  -74.7693779943534054    44.570461293619509
-03468  -71.9794572499999958    42.8882550000000009
-58704  -101.317950045901583    48.4212329659017158
-46206  -86.1618200000000058    39.7614379999999983
-77532  -95.0744928785633476    29.9293925411688626
-93384  -119.083436750000004    35.2266092500000028
-62695  -90.2232944475524903    39.6277893006992983
-42323  -87.0165110737547849    37.1670175795019375
-75115  -96.8642519931538146    32.5954573197917554
-36350  -85.4938058041201572    31.3335153264122184
-32578  -86.4452476930482163    30.4993608839474462
-73112  -97.5737704997624462    35.5189055601425636
-15012  -79.823366637509011     40.1544414987461948
-32601  -82.3242000429570169    29.6510364119310559
-04860  -69.2180312142858298    43.975559970122525
-35467  -87.5122436666666772    33.2141990000000007
-96023  -122.003191507454261    41.9408081035676474
-14895  -77.9374235657895866    42.0906407233959996
-79501  -99.8893241631790261    32.7342918649044776
-20611  -76.9868432816994215    38.465431191503292
-16647  -78.1047875123328623    40.4124748044576094
-99782  -160.031033629770917    70.6385112862595008
-56328  -94.5315737202073052    45.9539521865285252
-39360  -88.7570102990698189    31.8561333952558527
-48634  -84.0251576699943712    43.7461158419300205
-28765  -82.1134429420289962    35.9385469565217264
-23944  -78.120613095058772     36.9175658807058014
-96814  -157.844575981518574    21.2965996403595916
-84317  -111.724239843134015    41.2862039994520202
-78613  -97.8218146703245708    30.5029543704002002
-67752  -100.233890028936116    39.052917201702094
-13083  -76.009507248113664     43.644572428761613
-11691  -73.7576136678635947    40.5987339802513958
-19003  -75.2973975793689618    40.0011365513269297
-70508  -92.0306398748147387    30.1555320790053791
-46068  -86.1074834997330356    40.3792063003204049
-85226  -111.926296203567901    33.3098048585218578
-85017  -112.12386692048004     33.5116732849298913
-16406  -80.3540175185431877    41.7487578810909952
-90039  -118.261683582815749    34.1054927981537688
-51527  -95.3455958993161374    41.8270680826600554
-20418  -77.0473240000000033    38.8921830000000028
-20643  -77.1588024864864934    38.4898371621621749
-64035  -93.827318870980676     39.3108106327907834
-78029  -99.2087163636363698    30.1039274545454631
-17729  -77.7950647827203596    41.4668540883748165
-54411  -90.0258566467411612    45.0525622497001166
-87391  -108.956478666666669    35.625941333333337
-23427  -75.7217943453237723    37.9257110119904368
-10033  -73.9356418729560119    40.8498313698113336
-06067  -72.6705913157568659    41.6563499087177576
-68134  -96.0544300452957316    41.2969912831186861
-45860  -84.5094828922497925    40.3926607814273098
-74957  -94.6694858317421364    34.5220412613365113
-13654  -75.4515650395210287    44.5782162832333952
-37352  -86.3413521819135497    35.276245856242177
-10701  -73.8809297408160432    40.944511013106947
-54725  -92.0350926984351645    45.0433308591750148
-85347  -113.910538946652636    32.793744321129715
-80232  -105.090831735490426    39.6888889264509928
-46176  -85.7770477990397211    39.5225881537944019
-64036  -93.9399117004717681    39.2249918632075492
-61934  -88.0170379999999994    39.6648715000000038
-95410  -123.72453076891145     39.2090332504612959
-47330  -85.0159626346588482    39.7929935243811457
-17858  -76.4181854010694934    40.8428109251336835
-72179  -91.8753397863777934    35.4884265301857624
-48152  -83.3740863666507295    42.4257871026278366
-18052  -75.4961056971617097    40.6496159608514489
-80237  -104.901085586761667    39.6432740008294999
-61432  -90.157338837918104     40.6437689821561605
-63467  -91.2693035777777624    39.6485079999999996
-76854  -99.5815603791597539    30.5750401489362424
-59301  -105.837406352924603    46.404733053738461
-34685  -82.6971231821374033    28.1032108378663743
-85536  -109.977171234343444    33.0293775414141564
-21659  -75.7827668105523458    38.5870190318696871
-25882  -81.3865530086321911    37.5819236905710454
-08243  -74.7004865756938301    39.1445113399685667
-73028  -97.6062992021942648    35.9397640680699553
-54344  -88.1107761346153637    44.4240440961538425
-82730  -104.651728891759362    44.0580078902091188
-83821  -116.840942271575585    48.57269869101615
-72513  -91.6470906132721268    36.2526487056063118
-60901  -87.8738172500001014    41.1165751491857492
-65041  -91.4801416893989057    38.6433320933520292
-58734  -101.87130565716717     48.5048913356018971
-44691  -81.9614743102946335    40.8088498047403192
-56144  -96.4134748163260014    43.8670842353522019
-40177  -85.9107477613124928    38.0105669951640124
-00972  -66.4115863333333465    18.1640500000000031
-85349  -114.762171375685256    32.4947559664623356
-70118  -90.1237640729834766    29.9512944917775847
-73111  -97.4814144752616158    35.5100515766386451
-26684  -80.8491679820224789    38.1621523775281162
-45239  -84.5806413308256992    39.2044733335004523
-75799  -95.2541754615384804    32.311965769230774
-85432  -112.408623750000004    33.9983378750000043
-14133  -78.3667993829787122    42.4973458085106301
-97471  -123.437331414019368    43.2240555538874887
-75023  -96.7357488156525847    33.0566991289865726
-05663  -72.6753396152740834    44.1389670678412287
-21531  -79.4198006408133068    39.6568782534833204
-50247  -93.1548879016099107    42.0157447039355318
-46124  -85.9371922371509527    39.359084976392829
-65649  -93.6016602532713478    37.6211993579675408
-67744  -100.948388531250075    39.8686986041666458
-21658  -76.1456451753188901    38.948518633651986
-95328  -120.908102882568755    37.5573437036697513
-83846  -115.781088206823085    47.468891526652456
-48353  -83.7299206990743414    42.6431534065905069
-97449  -124.144007348197803    43.5815211905926958
-63385  -90.8610817383176794    38.8005938785330926
-34613  -82.533867672823547     28.5514453248783688
-73931  -100.824809615384609    36.5739232307692319
-23168  -76.8177848825758218    37.4074534106583201
-73003  -97.5115718365819504    35.6757168931367943
-97836  -119.515102679605889    45.3058623065739283
-98102  -122.321216314183744    47.6334762472267315
-26576  -80.2497381197411244    39.4962897605178114
-35634  -87.600816724998154     34.9064369945942303
-32432  -85.0764104523809692    30.7153190238095171
-12116  -74.9170779349658886    42.5395689073195911
-84313  -113.899753741127341    41.7146288580375924
-36804  -85.3327081948055053    32.5596672971495238
-58723  -100.630327141479768    47.7376600165738338
-58502  -100.781635499999993    46.9249115000000003
-34481  -82.3025176439966657    29.1136857973096816
-83424  -111.176523982044259    43.8777561795580127
-01930  -70.6789821784655885    42.6256864357589009
-33830  -81.8135153877040437    27.8992470152411656
-11222  -73.9474618157118471    40.7268745965741132
-30009  -84.3025738657116506    34.0803955299919821
-66424  -95.4057295578889608    39.6857637603661644
-96006  -120.932163887218124    41.2284925657894235
-33908  -81.9204449816817259    26.5040332070873816
-62691  -90.2204456298574371    39.9562713198273585
-47142  -86.2052587436155449    38.0662869878633572
-42049  -88.3398088557829197    36.5181357020451216
-71073  -93.3002634223582987    32.5221819445877003
-33834  -81.8713374023343476    27.6202317999590683
-99729  -148.908586717646955    63.3878747176470654
-85020  -112.05461580347432     33.5624097915249564
-34614  -82.5181535703807043    28.6284332148877283
-99350  -119.772570161250457    46.1827710608803272
-39868  -85.4902139999999946    46.5866260000000025
-54889  -92.1563028341199413    45.416602214534997
-54984  -89.2347907634529776    44.1880326760089872
-93641  -119.040584436100033    36.6891252974966591
-95404  -122.67748140378653     38.4586321205920356
-56152  -95.2740584216626729    44.2135286026612846
-95613  -120.89022529680372     38.8052791704718629
-41317  -83.2448599143746577    37.4602631925272718
-44662  -81.5377729112178713    40.7125233255330556
-57478  -99.7333425000000062    47.1255194999999958
-15924  -78.7871386145988026    40.1163519122858716
-56294  -95.212612583333339     44.3161276041666667
-20118  -77.7705128559463645    38.968462649916269
-52064  -90.3124416450509955    42.0911390507395495
-41203  -82.4522488978290085    37.8433440766283482
-33608  -82.486168603773578     27.9210038113207553
-40809  -83.1409586000000047    36.8930482000000026
-67630  -96.1026968749999924    37.0974505000000008
-08828  -74.4196982876922846    40.3791051615384475
-78575  -97.5453609053567021    26.0275277519130022
-47261  -86.1190010666666694    38.3450202222222174
-11598  -73.7120890426201498    40.6322011218535408
-80822  -102.651839940529428    39.6685276305500238
-52317  -91.6068225196441972    41.7538697292807655
-08360  -75.0177516900478452    39.4912735676555471
-49927  -88.5783062346785641    46.0481777204782787
-64486  -94.6561187681565883    40.5240475982309221
-25045  -81.3271932767652146    38.4851322092169497
-02080  -71.1255043571428587    41.9644953571428587
-13122  -75.858422854727948     42.8382390052825812
-80528  -105.008528908238873    40.4963671230375368
-41301  -83.4993976670192239    37.7223080084087741
-11769  -73.1287911193978317    40.7387284457283698
-24570  -79.3890958000000353    37.3150755809523673
-47920  -86.8226934018867667    40.5397328903302991
-87730  -104.261295147826061    36.0894733652173869
-37817  -82.9802374285714279    36.1135418928571426
-26320  -80.8159356195709933    39.4069764003140079
-30567  -83.6856370092107937    34.182965625706565
-03452  -72.0384966218586698    42.822937514319058
-42028  -88.3435190196479283    37.2360297299006717
-49871  -87.5770230399999292    46.429817418461532
-46366  -86.7662966806647518    41.2172294969931414
-30665  -83.069618181102328     33.533302169291332
-92280  -114.644521103036013    34.1746840807493655
-17540  -76.1914541127443385    40.0983041747119131
-53521  -89.3755926239682879    42.8630146423110929
-28513  -77.4117261691778964    35.4553173769532108
-15999  -78.6410484444444506    40.5117938888888887
-10128  -73.9579034086957421    40.7816468226086783
-29929  -80.9360709571754313    32.9359806389677274
-32011  -81.8219139346497002    30.5539357344173155
-60448  -87.8878979662387394    41.53533534213026
-29731  -81.0243859999999927    34.9367795000000001
-49091  -85.4377499958603437    41.8249957938771217
-76522  -97.9208274447942131    31.1390617092901323
-92233  -115.519739562708835    33.1387809427753837
-01071  -72.8579633764044416    42.1694075730337801
-14618  -77.5587620481660025    43.1151811826132487
-97392  -122.953112855250481    44.8060555821720499
-60927  -87.959989885834915     40.9392590787527055
-79925  -106.363834247012917    31.7824022006622648
-04252  -70.0596985250154631    44.0147387347127079
-48069  -83.1440870627802866    42.4713865044843288
-25559  -82.2327547220351818    38.3305443823419836
-59631  -112.298827085360799    46.2606213905249462
-68814  -99.4055580655892044    41.3070667832699883
-93953  -121.942986050071752    36.5858078919308056
-43442  -83.2217168259149389    41.424887707220563
-40988  -83.5353079137785244    36.8525936821639775
-98588  -123.027341978830108    47.433350223165256
-00614  -66.730795999999998     18.4459866666666699
-25521  -81.987304156829552     38.2442687712197582
-36471  -87.2175276122012662    31.6057582640028478
-72668  -92.7735781198988008    36.4211503644807664
-55072  -92.7126812990586444    46.1250150126718808
-33306  -80.1150995906095886    26.1655177018121918
-66741  -94.6600952276421737    37.7172868048780146
-21795  -77.8144401468220508    39.5919568767616568
-35071  -86.8356244958158214    33.6844679970363075
-70789  -91.0997507269407123    30.9265610858447459
-98244  -122.103432710651759    48.8387564751591157
-31714  -83.6670650665399904    31.7083508520912822
-67219  -97.3170112281009665    37.7724151252407694
-17103  -76.8629144981520653    40.2742240813071319
-99003  -117.299591319987158    47.924276193512064
-82943  -109.197921573863681    41.6712929431818111
-61115  -89.0377325703931604    42.3580443399913165
-49821  -87.6144192716533752    45.4772896377952591
-45807  -84.1756931985470231    40.7931492995433302
-67714  -101.37131149999999     39.7861699999999985
-08312  -75.084599540320383     39.6593117927502803
-85501  -110.788449017778262    33.399769904654022
-59270  -104.173803675723505    47.693328869296252
-62610  -90.4335652812500115    39.5609341749999999
-47890  -87.3873728333333446    39.7857866666666666
-91752  -117.535749237331459    33.9897698712420535
-44122  -81.5172437587530254    41.4734178040540513
-57553  -101.621557884083032    44.4856276643598818
-30217  -85.1370116188193577    33.3014756734287332
-82328  -106.535800999999992    41.8796770000000009
-92563  -117.151658590305473    33.5728166686884109
-59384  -98.4723219999999912    44.4060625000000044
-47636  -87.1769834285714325    38.2241918571428627
-73128  -97.6328717947548341    35.4474305513112711
-36048  -85.571208504944579     31.7829179139945843
-57028  -96.6047415012449306    44.0579112617173507
-36901  -88.1321563645038424    32.4523033816793927
-11665  -92.1907913999999948    33.9575254000000015
-95757  -121.434956261407635    38.3921489071730448
-60450  -88.4255746591905876    41.3673503932654896
-35175  -86.5219486857478159    34.4304610094062227
-89428  -119.637736284403715    39.2639202036697554
-28905  -83.936108251483688     35.1493193705268965
-54902  -88.5469218777218288    43.9865194145084573
-25918  -81.0414742969295361    37.726094677904797
-36184  -87.7472395000000063    31.914473000000001
-54654  -90.9701868277777805    43.2641664833333408
-62928  -88.574163986111202     37.4948667534722517
-58743  -112.6696940952381      45.5980821428571517
-04088  -70.7183028415707042    44.1953490135409339
-78660  -97.6116971383514311    30.4511481256282757
-55390  -93.977724391628513     45.0633586151070062
-39967  -90.2622968750000041    31.1687192499999952
-79355  -102.855902588532942    33.1825151073636633
-15140  -79.7759815524420333    40.4058360280223781
-37802  -83.9696847142857052    35.7613377142857161
-33434  -80.1680036827941507    26.3825327928715332
-66746  -94.9541546362379592    37.6552543609958263
-92708  -117.953871423648224    33.7095931028795803
-94872  -96.9517386666666852    34.7966949999999997
-12601  -73.9128398801425561    41.7053165607301466
-30058  -84.1180478814057153    33.7413289427095648
-55719  -92.8860996087803983    47.5249440846568305
-32266  -81.405686875309911     30.3164669543039871
-04930  -69.3027525020034432    45.0284836110476476
-77415  -95.7536442899999685    28.9269956699999931
-87724  -105.070480893442578    35.1883909098360519
-05463  -73.3427909914221487    44.8753025878103387
-22134  -77.317385030287852     38.5157232483593575
-19161  -115.420094250000005    36.1546372500000004
-30710  -84.9342530805762266    34.9430375992481075
-84782  -113.684700730893951    37.3573655868457166
-95681  -121.353468901075331    39.0023720924731236
-68332  -96.4060435909091211    40.3214373966942148
-95718  -120.697434571428559    39.2849510714285728
-56583  -96.3865678064515947    46.0186538387096675
-47620  -87.860557143292823     37.9476797100769829
-49645  -86.0182517430786504    44.367931985603569
-35754  -86.6106443109591737    34.5162529421998912
-25302  -81.6192477002199865    38.3787318846882854
-33710  -82.7242313603099291    27.7900042554186264
-48236  -82.8976659497565578    42.4245274149676206
-49096  -85.0082584137148132    42.6353693019982103
-17535  -76.0390082139246744    40.0067525869312846
-93428  -121.075791111770002    35.5739954096398634
-54175  -88.6139025377613905    45.3116416525626988
-61734  -89.5223479007549088    40.3797097910143634
-58201  -97.0715745641803522    47.8911383085003237
-44408  -80.6820413642589642    40.8837038392725276
-02902  -71.4158235000000019    41.823754000000001
-17002  -77.830943452503206     40.5084225821566122
-85297  -111.717323879317959    33.2740459787499816
-48470  -82.7545139745223253    43.7322096840764161
-53105  -88.2668853043054042    42.6454869926521809
-75366  -95.0717999999999961    36.3074020000000033
-57265  -96.8019569627017376    45.0040705181451202
-75966  -93.7515918820560188    30.8296488578021446
-08507  -74.9389398750000026    40.0152535
-05461  -73.093796963589341     44.329512845849564
-82221  -104.280958087477032    41.6494724106813834
-68110  -95.9314629593516059    41.2957142662708989
-16246  -79.1813171946902941    40.7928114336283372
-01574  -71.5170371578947339    42.120707157894735
-43004  -82.8004637784445947    40.0086601726886144
-97021  -121.179618772487132    45.4139496013177961
-53070  -87.780368496637351     43.6302245411278307
-29001  -80.1757019956230579    33.783641531153414
-54904  -88.6135021642540721    44.0263289776297526
-78393  -97.3086645145454838    28.2106347076363413
-29375  -82.111440084507052     34.8609823380281725
-79534  -100.219885230263273    32.7774790942982364
-55437  -93.345033307828885     44.8243326661517472
-57214  -97.2217370058139778    44.4684839883720997
-76310  -98.5504606019927962    33.8445688879601363
-27969  -76.8131696511628093    36.4643047674418739
-36771  -87.0123406000000159    32.5030847999999963
-19072  -75.2582403500000652    40.0187116688572004
-83630  -116.068942333333339    44.8527606666666614
-29905  -80.6733924324324505    32.3478814459459514
-05255  -73.0506195869619717    43.1769925716228684
-39323  -88.9211480041638112    32.3528864773450664
-68124  -96.0538811564652235    41.2345985790775487
-95621  -121.309044456959128    38.6944455157182716
-21701  -77.3682884378027182    39.4328782695089686
-16420  -79.5403229289159839    41.6961481195735075
-84006  -112.094570032338183    40.5658704701492709
-71272  -92.6488746341463525    32.5262046585365781
-07436  -74.234612555363185     41.03025265936202
-28105  -80.7153240969814476    35.117036077343144
-74851  -97.094325614664541     35.4083533360895757
-13034  -76.7015533360945341    42.9134955644969907
-45862  -84.5155326901700477    40.6676849738699033
-36321  -85.3017979613656934    31.2008182991913543
-25666  -82.2724820919999615    37.9212475119999866
-85332  -112.830331363320411    34.1731833355212302
-38603  -89.1597873029113828    34.8348013920509416
-00667  -67.0551469737518744    18.0298991996912186
-85911  -110.47265228481011     34.035691225738411
-23038  -78.1169163716549804    37.7839717281095915
-54759  -92.1482589999998822    44.4423067164329026
-85225  -111.828761662791209    33.3171409222715695
-42076  -88.0946889546325451    36.5474630240123304
-93224  -119.556496717013786    35.2030831822916568
-46167  -86.4569257279755448    39.867532716963467
-05492  -72.7386144296388295    44.7205593128891721
-54422  -90.4329003055555347    44.9523403472222469
-88757  -105.82024366666667     36.0468883333333352
-14043  -78.7019797324420693    42.9042178559714955
-79054  -100.804237256619217    35.4442014949083344
-33050  -81.0293604784767751    24.7305730806163773
-85389  -110.544429800000017    34.4180678000000029
-42283  -86.6517429285714371    36.8840920000000025
-10956  -73.9954307867509016    41.1503690121278041
-89052  -115.102714406275268    35.9774597223304085
-89169  -115.134235263710977    36.1269968638817929
-12941  -73.7262602055964322    44.3875679286222891
-06850  -73.4416736622904835    41.1249676082522413
-02826  -71.6448024194756243    41.9795663876404461
-30149  -85.1794802222222245    34.2727828888888908
-84649  -112.3294963721805      39.3768387387218013
-71435  -92.1448073124794433    32.0341010928048533
-34113  -81.7155403391251127    26.0809195711952633
-63540  -92.4174919508599402    40.1015067592137697
-28262  -80.7418206626974069    35.3248790519111537
-28150  -81.5570045103437593    35.3331690305579045
-44126  -81.8540576267457283    41.4431668145950241
-35003  -85.6919240520833085    32.0290786249999897
-58787  -101.828480563577301    48.7994991656257397
-98581  -123.051820944196422    46.3801043035714429
-40854  -83.3532257847358125    36.8494925890411054
-12997  -73.8113911067567869    44.3869462783784172
-48476  -84.0304928980581991    42.9391857669902564
-55935  -92.12246541473327      43.7550261931555013
-08826  -74.9079883598730163    40.7185157321645477
-33603  -82.4632932255986759    27.9844224628698512
-29847  -81.8556725433098649    33.6937422451726505
-22851  -78.5096354250324993    38.5640272602522245
-44411  -81.0527242662764849    41.0321798185808149
-27983  -76.9449623880453117    35.9987075517941975
-25650  -81.8128711891891811    37.6841485540540475
-94509  -121.811025984946141    37.9940631277008052
-17250  -77.5231097962962679    39.7362078888888917
-64623  -93.3263026412872421    39.4744969356357629
-08106  -75.0739718520000423    39.8911706308571041
-62062  -89.9645911404734733    38.7272701843380389
-42053  -88.8695378563323288    37.0871820454652337
-52562  -92.249164227272729     41.2641877727272686
-30002  -84.2615814420647382    33.7727476172432119
-63533  -92.4025379816668391    40.183068235416691
-16361  -79.334447499999996     41.38682513749999
-45884  -84.0835676463414643    40.5554729390243978
-29627  -82.4884205643899406    34.519673560377484
-21668  -75.8643978926054956    39.1878206324823779
-55924  -93.0054457296196233    44.0458067821559354
-81224  -106.971748119493185    38.8657056593405414
-30087  -84.1311751130883749    33.8081295357469784
-99639  -151.627149067989592    60.0323125088967586
-13317  -74.5847781014493734    42.8652558252174103
-30106  -84.6267422490833638    33.8348545897506057
-12086  -74.1164300820968549    42.9925250356083239
-55901  -92.5023171825648518    44.0619904852983026
-11727  -73.0043512653817004    40.8858661913320702
-75866  -93.8309008749999975    30.9274954999999956
-75208  -96.8396048286450508    32.7529024841066132
-79834  -103.234551996282505    29.3251144721189583
-20179  -76.7239349374999904    39.1274250625000022
-38920  -90.0320100349865129    33.886844187235603
-65433  -91.9380097500000062    37.1923381250000062
-12594  -73.5555572128454287    41.6562291884489824
-75943  -94.8807810127807585    31.6546785224631861
-84320  -111.84162975259035     41.9633971118939684
-09731  -74.2037410000000079    39.8483145000000007
-02561  -70.5364480754190311    41.7701963743016691
-47959  -86.8833262840422123    40.8635306436930748
-49756  -84.2855232433348505    44.8432358892832568
-61727  -88.9592182708826158    40.145629326777879
-93652  -119.903042860696573    36.5993540248756304
-41514  -82.3122659571981643    37.6637068202548306
-95948  -121.691318984302754    39.3568348625730593
-33873  -81.7949900861791264    27.550410094059913
-37729  -84.0368201012075389    36.5187437260870595
-72434  -91.1513382893168824    36.2228365735334208
-37831  -77.5624732499999965    36.4531254999999987
-34237  -82.5132907606632813    27.3384989487290611
-68127  -96.0552181454292793    41.2030862094874237
-75449  -95.9584400542832725    33.4301916645747639
-54459  -90.1857686190476073    45.440845952380954
-47528  -87.2719239860957003    38.8379804883203832
-42717  -85.3766116925123555    36.7628549609091593
-54564  -89.9716318384026437    45.6851643697496641
-46962  -85.7650512316080267    40.990757359127926
-47436  -86.3987790211641595    38.9659297142857639
-21920  -75.827893836363657     39.6578669727272768
-27305  -79.2095365383927401    36.5220965327158851
-54631  -90.8326648701877275    43.2901807573147508
-93542  -117.911358142857154    35.8345874285714316
-66227  -94.8672097770811149    38.9729155837413828
-29578  -79.015130428571382     33.6929944523809581
-30470  -82.5082747561930177    32.3170376427640207
-58448  -98.1944015325016863    47.3174799914640971
-33596  -82.2393933410385216    27.8909169163200481
-07046  -74.4405892915011123    40.8893790814137645
-29448  -80.4505106699769499    33.2295844106732403
-86438  -114.024612439517838    34.7451731143523901
-47038  -84.8520999184726037    38.8557773225577279
-74937  -94.6072829668771647    34.8664725084702951
-59021  -107.459540199999992    45.6003115999999977
-93596  -117.458821474999965    34.966726450000003
-51653  -95.6816461805053819    40.8898695595668116
-48475  -82.946649570142057     43.6836367502370138
-37683  -81.8156820274076182    36.46086258570665
-94976  -69.7116220000000055    44.7854765000000015
-45789  -81.2575952533214974    39.5568473857395517
-06867  -73.4982150000000019    41.287502333333336
-04417  -68.3799838141446799    45.2213771500822546
-24573  -78.9144548000000015    36.5421339999999972
-65644  -93.0401432767974796    37.5127095783469073
-12458  -74.4125241831539626    41.7966066239831804
-60097  -88.3562222111875855    42.3862540196131974
-64476  -94.8288931485199242    40.4480735340908879
-73012  -97.5537042980605662    35.659839029310433
-52777  -90.8557243492741122    41.8415006659990851
-11717  -73.244105422057757     40.7825640675185355
-79735  -102.878233115501672    30.8957747508781573
-11948  -72.5507672642104637    40.9678882200000274
-56079  -94.7650899999999865    44.0856748571428625
-17213  -77.77386185180886      40.2471818390739031
-16331  -79.5732241918976229    41.2913128592750169
-87422  -105.406716153846148    35.8194638461538446
-61250  -90.0975787447909653    41.659693282245513
-66090  -94.9651565529609485    39.7701420108424344
-87745  -105.291574449339237    35.7930910748898725
-08822  -74.8534529376444198    40.5195809808545704
-72223  -92.4881517029970297    34.7906664583816223
-14779  -78.7389551472300155    42.1741524748866183
-21715  -77.6583252999999871    39.381949800000001
-25665  -82.3249928214285518    37.7357082499999947
-60099  -87.8515572440578723    42.4532621198399838
-48815  -85.2419848516547631    42.8476473817967118
-48918  -87.1260979999999989    40.243941428571425
-42110  -86.2752046084337536    37.1667760060241292
-42325  -87.2494146014349496    37.3324149145466464
-25267  -80.93525191305622      38.8435004825216765
-20016  -77.0917906171564482    38.9387034972529236
-20242  -77.0296330370370299    38.8694308518518525
-15662  -79.4762529836957015    40.3328415217391409
-89341  -115.706659166666668    38.9292725000000033
-07508  -74.1822714530280507    40.9537359112929238
-38459  -86.8029759688385383    35.185288534601348
-13782  -74.9832546278016849    42.1739251856464819
-64683  -93.6197152231395506    40.0787803752849001
-66037  -91.3290190000000024    38.3984132222222243
-90827  -104.966944600000005    38.7265853999999976
-46304  -87.0587686057508279    41.6093244211967175
-67106  -97.7704442144873553    37.4711191420508456
-14139  -78.5440664969879379    42.7151647301204846
-50577  -93.9537993295019334    42.850958463601529
-64133  -94.4580239952245648    39.0155173661891368
-77446  -95.9933722211056164    30.0819408015074963
-68059  -96.1478492874163919    41.0646742122115853
-37721  -83.8181995877296799    36.1330355320187735
-01054  -72.4961767755162043    42.468916510904414
-32102  -81.5546161285337803    29.150967848990323
-39154  -90.4257145337989527    32.2320114254138872
-71840  -93.9144276000000104    33.3835696000000013
-51062  -96.5256265347850899    42.7132607770719801
-58418  -99.6625934572082599    47.4596283326541908
-71119  -93.8767589225126073    32.479818503200832
-30346  -84.3376757746781465    33.9255450579399209
-38581  -85.6441637240294256    35.7646264497211348
-07740  -73.9929148938513066    40.2974315856781473
-13788  -74.658538221236654     42.3588724513432098
-52315  -91.9698690298786232    41.9973524126984756
-12495  -74.2319978412190551    42.0765838147554447
-35631  -87.6714635263157902    34.7934254736842163
-93215  -119.23432123986133     35.776303037088482
-29584  -80.0516956812974598    34.5832889719397656
-76887  -99.1750592253520864    30.9994313661971717
-77692  -97.3534987777777872    31.9889465555555574
-97709  -121.419006055555556    43.8989811111111123
-72750  -92.7001726666666741    35.8670869166666719
-01252  -73.4553444787233758    42.2003310744680817
-36701  -87.0333668337681416    32.4294379842517273
-37862  -83.6009266711929655    35.7909643099984081
-60115  -88.7533572668592257    41.9304445490516784
-98166  -122.350151991913719    47.4530322708255383
-81080  -104.969942125000003    37.6094771250000051
-87021  -107.895736699663246    35.186100234343499
-92391  -117.234919297690055    34.2421188356043231
-68856  -99.805089261022971     41.486216671957699
-95528  -123.944972233272949    40.4955091749547123
-87746  -104.179468562189015    35.709000701492549
-64848  -94.0065732299779029    37.1747828772960887
-77639  -93.8711159333333143    30.0812851166666704
-00985  -65.9579178667600843    18.3915831570827635
-74091  -95.7464167058823676    36.3472533529411734
-79008  -101.493687750000007    35.6672905
-90304  -118.359428194022513    33.9369877427731055
-12992  -73.5212444769653075    44.8109039142791516
-12448  -74.1836375362537837    42.0758613580059873
-65470  -92.404329881846536     37.5370752883411853
-81522  -108.923593909917457    38.6974355024793937
-47577  -86.8054047021005744    38.1489520178230421
-24811  -81.7758635283018975    37.4076880000000145
-35775  -86.6873538085897906    34.541181008483548
-58528  -100.607013562937055    46.3714819265734661
-38547  -86.0079848545574634    36.1486030627345443
-79094  -101.52821580555559     34.7838482083333318
-41171  -83.1145038312948259    38.0993684193594433
-98673  -120.971036434367463    45.6609669379475065
-67745  -101.363775757255837    39.8261340316622423
-92878  -117.564751964285719    33.8753197857142894
-44687  -81.7216903278688562    40.5393514754098447
-19115  -75.0434422305976767    40.0937183050501176
-18353  -75.3717399538366948    40.9155458006187303
-40507  -84.4953636251710094    38.0460124363885228
-87519  -105.611688152018957    36.760311988123533
-70637  -92.971898786563159     30.7025856459948479
-34778  -81.7571002499999935    28.7831591041666677
-06776  -73.4120498734994271    41.5865883629260509
-49688  -85.4332837108244973    44.1188708038295019
-63049  -90.5238623051247799    38.4720304141602227
-39427  -89.8167488800253295    31.4992345872540227
-12943  -73.7834473320808257    44.1868084297792194
-78020  -99.0029120000000091    29.9898535000000024
-50678  -92.3376299999999901    42.6853100000000012
-97390  -123.865448163174321    44.3569573074907879
-96034  -122.637245221155993    41.448486327675397
-30803  -82.5311536238318695    33.161899929517098
-77512  -95.246311999999989     29.4019374000000013
-73125  -97.5057379473684023    35.4702147894736797
-49221  -84.0498465148160676    41.907296790447063
-14092  -79.0222497984640313    43.1718981292369577
-14209  -78.8654960456852336    42.9142704964467256
-17085  -76.383434482758588     40.2766734137930982
-64752  -94.567278466003458     38.0533883615257125
-66738  -94.7268240488070745    37.9974584164859479
-96859  -157.890095528985455    21.3605444565217333
-56173  -96.2343653611110028    43.5366708789682519
-98178  -122.24642878421173     47.4977043879913765
-60154  -87.8858995385034092    41.8514874057890083
-17017  -76.8899755292419513    40.6316775693679233
-41162  -82.7488845833333357    38.4484203333333312
-63389  -90.79980672290651      39.0072705420222903
-20147  -77.4855441467914545    39.0419443490105635
-84741  -112.421934131392163    37.0463508751771826
-35235  -86.656274171027647     33.6222294845795489
-27615  -78.6358760741656937    35.8950089387989237
-30533  -83.9822903297450409    34.5455650141145867
-16745  -78.4923062267135236    41.92783113181018
-46554  -86.4180233416274035    41.5568479186154391
-11950  -72.846925624743065     40.805185655569332
-88011  -106.707345854405702    32.3292743400844031
-23666  -76.4122671723684022    37.0512523878114166
-89032  -115.173702665422311    36.2256728441862421
-43002  -83.1752997692308043    40.0674002499999489
-56083  -95.1422079180681664    44.2103418164812183
-89420  -118.172886990566042    38.4950929245282936
-25202  -81.847124179429116     38.327891076121432
-46957  -85.4966281980519227    40.3877903409090777
-45373  -84.2105156439575495    40.0349962591774542
-53807  -90.4932511391245669    42.6007852801002187
-96069  -121.981520894848714    40.715791155890642
-83444  -112.167073012972281    43.7016254591088682
-89001  -115.232566397281005    37.3846496993958226
-06068  -73.4116271810563461    42.0107625881158384
-36605  -88.0872017426875402    30.6258431356540299
-30898  -82.0845144999999974    33.4883497499999976
-19352  -75.8873002006842938    39.7764670852653026
-99102  -117.250464360103621    46.7924202616580232
-01264  -73.2015359760956557    42.2363050737051253
-78975  -94.3830069999999921    31.9709632500000005
-64431  -94.9818302509076915    40.5294126969297039
-87038  -107.43588868248176     35.043924043795613
-45427  -84.2745545000000504    39.753968950000008
-87702  -104.908872584615395    35.6537025384615447
-46765  -85.0333650535387449    41.2254145789900335
-65463  -92.7716628842897393    37.8436285272811901
-90005  -118.313994178652464    34.0600127630582961
-91007  -118.051603665220611    34.131042680512401
-56473  -94.4429812360452416    46.3394827916268994
-85101  -92.01354228571428      38.4950680000000034
-88716  -104.219731999999993    35.3734070000000003
-13827  -76.2562872406623455    42.1100216878532621
-98243  -123.007961814482314    48.6202661723518403
-78601  -97.8216710000000091    30.0709875000000011
-36688  -88.1772294210526155    30.6973554210526274
-30152  -84.6485484247540825    33.9970157897278753
-49790  -84.956149413793085     46.4178154827586127
-64017  -94.0445205138888554    39.2091941535087543
-17846  -76.5173365248304549    41.1409167926046635
-20332  -77.0183661594202675    38.830311521739155
-88135  -103.073944746596979    34.4690520770278255
-11738  -73.0430339524630767    40.838029770311195
-79382  -102.015286606827942    33.488715780561634
-76805  -99.2542738888888891    31.1838249999999988
-52222  -92.3512130373504476    41.5710007729792252
-07660  -74.0228631831812152    40.8564081616688171
-57435  -98.9325165348837601    45.171103879492577
-43935  -80.7448953128504883    40.1142405058499847
-58479  -98.2106992105262435    47.0913818584987425
-77836  -96.6896502866095346    30.5296215936537294
-23503  -76.2516525870698274    36.9423057472360483
-21871  -75.7263547919051945    38.1011563719754278
-58202  -97.0759749711538404    47.921151028846154
-43146  -83.1494901923655334    39.770230538381746
-54772  -91.9084101633663408    45.0434881782177996
-96137  -121.105827454895305    40.2692193920059438
-07440  -74.2953300171428168    40.9468944978570946
-58038  -97.0346207051153158    47.2245513640922852
-96716  -159.591584297894855    21.9259461610526181
-46055  -85.9170278376908669    39.9067331341619678
-31544  -82.9846713062659092    31.8561547973145345
-07095  -74.2833705342009267    40.5578200375465912
-57349  -97.5104482007752722    44.0165619440597666
-78538  -97.986646584694796     26.344386907679759
-24578  -79.5449957917867039    37.6583539293949272
-44101  -81.673917354838693     41.4936918709677371
-57108  -96.7338033552575354    43.488551699039995
-04679  -68.3236228450881811    44.2767956429470146
-59867  -115.450444406959136    47.4056949198184228
-18917  -75.2029493160556086    40.3716717838180017
-05760  -73.2889545915407581    43.7996352412890886
-16616  -78.4443771229507689    40.765914193989083
-95218  -119.001448666666661    35.8704133333333388
-26554  -80.1365592469531123    39.4699873828773988
-43240  -82.9845385079973994    40.1476728202175082
-76230  -97.8548125266444231    33.5426387807156132
-62986  -88.9700447500000138    37.873576374999999
-79706  -102.05342133122052     31.9519429058464226
-90266  -118.402950315789752    33.8902775375765657
-49724  -84.4103238242092004    46.3314249874434765
-02766  -71.185454653404733     41.9662270072922894
-11693  -73.8167301374207057    40.5998935898520443
-94130  -122.371177908675861    37.8202335662100282
-49432  -85.2617808333333329    43.6831937500000009
-20662  -77.1952999101903998    38.4387992952160147
-72635  -92.4851482136909055    36.3073272715078375
-13063  -75.9820364864864359    42.8542181212241857
-23667  -76.3303649130434536    37.0206879999999998
-84001  -110.280027372250402    40.3479141912013546
-05662  -72.7166302105263327    44.43386134210526
-17267  -78.2402377020377457    39.7911037067486788
-80025  -105.287077350877212    39.932347543859656
-54944  -88.6293127652494803    44.3349818872458172
-26694  -90.4779252499999984    39.5495985000000019
-79358  -102.170054642189726    33.4476178685990746
-98051  -121.92061246976219     47.344919723839034
-73073  -97.3847442422968754    36.1504908711484561
-46980  -85.7420797058823609    40.9561992352941147
-63742  -89.4496064946236658    37.1591240645161278
-77396  -95.25403798745171      29.9502549751900631
-26810  -78.7674794767726212    38.9614472317848168
-41003  -84.3875021658621733    38.5333545073323123
-31654  -83.1898955000000058    31.0771895000000029
-61883  -87.6357198288132224    40.0424909842519199
-06422  -72.6823316644728834    41.4639012162855281
-95646  -120.072766743190684    38.6927970518806745
-82435  -108.851509741379175    44.7748943072044483
-35172  -86.6908901049300482    33.8451706155896019
-46582  -85.8134612353954935    41.2761414059770431
-99660  -170.242791516393481    57.1543307295081817
-51560  -95.4012824888517059    41.3171018219046999
-10123  -73.9904735000000073    40.7513654999999986
-80736  -103.042002399916541    40.79917013745861
-11809  -73.4427842142857372    43.2611372142857036
-19465  -75.6635511769484737    40.2038942986886312
-72436  -90.4683559986543315    36.2368021117091956
-51031  -96.1814331729727883    42.7989895847245378
-29180  -81.0973611174519817    34.3601957884698308
-31725  -84.7092854146341665    31.000863439024382
-74932  -94.5295697144313749    35.1540642346349728
-00703  -66.1200814205815988    18.2557666677852488
-33418  -80.1415571158926099    26.8433079246906665
-55939  -92.0432333935842024    43.5519483525601387
-00769  -66.3583108572099292    18.074976691874113
-95456  -123.750004767198888    39.2575351369779
-33647  -82.3486944576628304    28.1389085469242808
-93611  -119.679767182462285    36.8246459491277562
-41466  -83.4397774999999911    37.1863050000000044
-61873  -88.0352410639708864    40.1236374535068876
-78213  -98.5228471631966585    29.5127229441473737
-83614  -116.304276666666667    43.6774226666666721
-74438  -95.748830153846157     35.520591153846155
-27553  -78.3017588468842689    36.483956131862918
-50604  -92.9001876645961744    42.576694075155288
-59641  -111.62894881818184     46.1989256969697024
-61944  -87.6843841158627271    39.5900414010648731
-67220  -97.276347536967279     37.7480040769078329
-08003  -74.9698073857982905    39.8813623545000766
-77517  -95.128104301356629     29.3825553619186515
-41621  -82.7254694028571862    37.6248232514285519
-68017  -96.6597377959095923    41.0609045811674918
-73673  -99.5123338421053205    35.0779058947368441
-29667  -82.754779922737427     34.764410101545252
-42410  -87.5114510218499788    37.272634109978128
-13341  -75.395183178571429     43.0301689642857141
-99106  -117.177412500000003    48.135603500000002
-93721  -119.782381104790517    36.7327314251496517
-81215  -105.169188899999995    38.4871371999999994
-68636  -98.1216438133086228    41.9930055905729773
-67410  -97.2122744524408802    38.9629492865679268
-63378  -90.6925894999999969    38.7564922500000009
-37354  -84.3525416331027458    35.5018338552379333
-57078  -97.4392059991460684    42.8877316848485037
-37814  -83.3164369050118125    36.2275090614785995
-14610  -77.5449334189710413    43.1416956895628516
-20639  -76.6021198760947897    38.6123301074632934
-63556  -93.127228285082964     40.1934317277509265
-38240  -89.3172486781480046    36.2540160422419646
-35161  -86.0975922307691945    33.4079447230769233
-15357  -79.9920795480928319    39.9391108076285235
-90062  -118.309086750152218    34.0037562260816699
-32677  -82.2826831025641212    29.4599138888888703
-75204  -96.7896621099105801    32.8026539927280609
-25442  -77.8300240366247778    39.368947804863744
-95314  -119.76801966666666     38.3319636507936536
-62468  -88.2640635969796818    39.2783698957055094
-68766  -98.3944878998073023    42.4080230404624245
-15336  -79.9893837499999876    40.2553590833333388
-72856  -93.0952612355604856    35.6816931551529066
-62243  -89.9024475333467876    38.4272395640819227
-86409  -114.026804595655761    35.2716803355496893
-64738  -93.656180596168241     37.9051709459053683
-74741  -96.3189437998326099    33.7792530668616209
-78639  -98.4482616303576918    30.6614057017591648
-76648  -96.800970128584666     31.8519877839962895
-71030  -93.7971837319720549    32.1967635788130337
-75864  -94.7825365714285653    31.7919735714285778
-88311  -105.97091727142859     32.8298504673469296
-48653  -84.6406992048382421    44.4907686262578537
-43606  -83.609968069458148     41.6714893416417951
-46803  -85.103831159667763     41.0704189287636865
-01074  -72.1562621111111469    42.3782225646630195
-74020  -96.4163124593269742    36.267764744039269
-53172  -87.8648185660436951    42.9106230566978297
-46373  -87.4743891461125571    41.4473267017682829
-87891  -106.903688999999986    34.090291999999998
-55335  -94.5396923527709134    44.5361372789947012
-64069  -94.3798923749999972    39.3026044999999939
-03038  -71.2895035573991152    42.8884989564097694
-36522  -88.252896772499156     31.0873304522499083
-85272  -111.978537932950218    32.8785335287356588
-59874  -115.593016021116895    47.8096633986562551
-03236  -71.4246497500000004    43.421560999999997
-35060  -86.9298100149999868    33.5591175075000123
-67013  -97.2908314045643294    37.3942404266944024
-01035  -72.57183881398484      42.3558880515465219
-23081  -76.7842798000000073    37.2222223999999997
-97391  -123.914879866572619    44.6215740627235178
-16911  -77.1207783136985228    41.6632648342465544
-23838  -77.5928267727580163    37.3267645874944094
-04944  -69.6361976666666749    44.6861913095238066
-14207  -78.8978156104809045    42.9495635791943897
-95971  -120.921809603803084    39.9418913109668878
-48725  -83.2380289463362431    43.9527286807705337
-80433  -105.309952232578965    39.5031349109453487
-21112  -76.7085423749999933    39.0741595000000004
-43435  -83.3052772701370543    41.326708470136964
-33167  -80.230965318276489     25.8871891407227217
-57521  -101.278376278048768    43.8392612195121743
-01363  -71.5651198000000051    42.6675087999999931
-43610  -83.558903575119615     41.6768604880382796
-75558  -94.8607185381977445    33.2374793197844696
-57276  -96.6185904493137855    44.4232792217794596
-17722  -77.9979694999999964    39.9346680000000021
-64090  -94.1668064722222056    38.7583354583333204
-73114  -97.5248470168369863    35.5715495556144177
-37379  -85.1589968357495337    35.2716376257797535
-84512  -109.553552874999951    37.28289280637253
-64639  -93.2523800958646945    39.3851112838345685
-02643  -69.9495784467533497    41.7856988961038596
-24639  -81.8864413653452488    37.1460936646159041
-72542  -91.4937533911189007    36.3141176013821649
-04421  -68.7944402080137252    44.4149329215686137
-14103  -78.3830298713207725    43.2170283858949205
-67207  -97.2257350259628481    37.6666777762732607
-15104  -79.8612231629104627    40.4053338679974701
-15349  -80.0904628309857998    39.7550439374846007
-19549  -76.0111070631229353    40.6081975847175798
-78014  -99.2386565326266208    28.4326661974162747
-76877  -98.7189316269322177    31.1969936692035041
-56425  -94.2719405474887679    46.3486823129328585
-12878  -73.9616124719037771    43.4356949787844044
-26855  -79.2565175192582672    38.9688561212553282
-28609  -81.0540043953443217    35.6773137784142165
-63842  -91.0998804999999834    36.5208313750000002
-02124  -71.0721854129290165    42.287497766001735
-97207  -122.599781785714256    45.4804225714285764
-29588  -79.0104980854144117    33.6755034954024026
-57703  -103.133855650790963    44.0523082802839667
-26720  -79.3316729146341402    39.2793509999999912
-33914  -82.0048821501894736    26.5763197111672476
-92408  -117.274764672505441    34.0769712242233638
-01754  -71.4539238361480926    42.431682066900521
-33610  -82.4008021147385676    27.9941766882397154
-97498  -124.06985085999132     44.2963978612916094
-37656  -82.6277687706590314    36.3997820993810564
-77075  -95.2581426205665593    29.6201087897760971
-21286  -76.5803040251496725    39.404992549833608
-10981  -74.2842421029411923    41.3106745735294112
-36426  -87.0738213777271142    31.1278355370467636
-55726  -92.8672066574812476    46.664871407058115
-37760  -83.4748127974592933    36.1097260678784124
-03878  -70.8804747840569291    43.2541391369266321
-43984  -81.0288456969697108    40.4067377878787966
-54433  -90.871175781061595     45.1623593009650364
-35776  -86.2313811615534007    34.6540834008737306
-04613  -68.0363443503401584    44.3811303809524418
-77354  -95.6324552128153584    30.2050329834040063
-38632  -90.0028977034356785    34.8126766831145886
-79061  -100.453598468984751    35.5324314050751795
-31041  -84.1775246873416023    32.3768822164556767
-54896  -90.9035413082369956    45.8731067933283398
-33034  -80.5026641667111278    25.4403552627050296
-42784  -85.9112908094662515    37.450016028915222
-55985  -92.8929265985631645    44.1557123714347171
-28170  -80.0871383196637368    34.97903434394307
-32405  -85.6666187221801465    30.1969017913975009
-73950  -100.878057435567001    36.8953539613401773
-18417  -75.2048982495221168    41.8088055497640454
-35404  -87.489295384743329     33.2136372864526876
-92278  -116.0979632511945      34.261618828668901
-67119  -97.1705381017331291    37.2618570150716195
-15407  -79.7142510000000044    39.904303750000004
-79086  -101.814919187082253    36.1095478522643063
-51436  -95.0109048844553712    42.1764640465502296
-85614  -110.985163427932818    31.8730960321935335
-10989  -73.9415629974154172    41.1219568893770671
-28646  -81.8579591281644667    36.0885155588319719
-45896  -83.9475610918247241    40.6049720542062076
-23976  -78.5864341328021823    36.8482580398406085
-82633  -105.396314147186118    42.9068692055885919
-48878  -84.7716885098765971    43.712154161728364
-17372  -77.1062748222643108    40.010253426786818
-24826  -81.6274400581395554    37.2789271744185911
-72165  -91.4610046806387658    35.5724452075847992
-60088  -87.8529506898241976    42.3082825455660867
-04616  -68.5685597609252397    44.2797594768637097
-74857  -97.1898173900750635    35.3493357869633229
-36445  -87.4195012973416965    31.4514158249959443
-58703  -101.315734902477814    48.2679548054054237
-94923  -123.043572241211294    38.3404239195285825
-33331  -80.3677659441633807    26.0585378042801707
-76235  -97.8094217999999955    33.3831043999999935
-75569  -94.1251635078699707    33.4415977145855052
-40047  -85.5576058984314756    38.0427677846967427
-54407  -89.2958556638332794    44.5200665498886323
-36546  -86.7228952631578949    31.4831631578947402
-71847  -93.624039004358437     33.9262363975786414
-08901  -74.4453387112240961    40.4875861934100953
-97838  -119.283116775330029    45.8491415505920088
-08342  -74.8362091333333268    39.4919530285714302
-66027  -94.926848989285773     39.3455620517857838
-68360  -96.9560854600638464    40.9599881895632976
-43128  -83.5765829069621873    39.6579943502773062
-01082  -72.2662325879046676    42.2706517968599158
-11030  -73.6866971511863937    40.7966526507691611
-37141  -86.6966211117146344    36.6147865965864909
-75140  -95.7012991841097858    32.6437742048500965
-99040  -117.960728118347106    47.8777232233893741
-29324  -81.8235979393938919    34.984445231404969
-71245  -92.7132057903640003    32.5265726818683021
-18085  -75.2559679523809706    40.7405296054421413
-30317  -84.3161697080890633    33.7499362910316165
-71022  -93.8385513333333279    32.7233297777777778
-72921  -94.205940268651446     35.5088500100837976
-52329  -91.8453432956758036    42.3518080124324214
-25755  -82.426916200000008     38.4230065999999937
-57747  -103.518750950562477    43.4363019867160958
-72140  -91.137803790446867     34.3701303066255974
-55002  -92.7855739999999969    45.4924490000000006
-61911  -88.4557039431339405    39.7130768448636218
-11361  -73.7645395714285712    40.7661231428571327
-44721  -81.3335356072581988    40.8845506895245592
-78141  -97.6179006672904137    28.9154401333645126
-38465  -87.1443958461538557    35.3488069230769213
-85751  -110.742642250000017    32.304865333333332
-16837  -78.4758979788918225    40.9460533562005153
-81232  -105.588846833333307    38.2619610000000065
-12966  -74.413584633566515     44.8159884552446428
-92330  -118.77072461111112     35.3364388333333252
-23651  -76.3063303220974376    37.0102214082396941
-86511  -109.118766328611784    35.5843005297450219
-32726  -81.6779753760347518    28.8511339715412625
-84830  -116.445190772727258    47.1057011363636349
-47174  -86.4741908650518241    38.2243564256054853
-41528  -82.1393746469151296    37.5535884037874013
-06226  -72.2095710798871977    41.7123748227869626
-57590  -99.837522000000007     43.3727935000000002
-75058  -96.7240684226587746    33.4521307664652667
-68036  -96.9572529715519238    41.3375268069595734
-02119  -71.0854092890984788    42.3236877742926367
-49743  -83.9297944786537755    45.2828802452477177
-71935  -93.6758641310757127    34.3891798300407743
-94850  -122.317963636363643    37.9014788181818147
-65090  -92.3223005555555574    38.2579733888888782
-63839  -89.8138393400000012    36.0477410280000043
-65713  -92.7697455052297215    37.4058874274058439
-08863  -74.3124186919664282    40.5365874322326576
-35212  -86.7486773509622822    33.5408054621816163
-70631  -93.3906341716447486    29.7863843117375708
-85087  -112.102437020501924    33.906983418183593
-46170  -86.8638824193548231    39.5752104838709613
-87722  -105.244740903225761    36.1402701839581795
-57658  -100.581466071999984    45.6580568624000307
-34681  -82.7781412850082887    28.0875611845140156
-10006  -74.013478496688748     40.7083751920529977
-13635  -75.2453196784519065    44.3192201571906423
-27805  -77.0957226787179337    36.20952436921349
-57568  -100.068764712051617    43.8660004517020425
-32046  -81.9395678572759891    30.6867791458269252
-30734  -84.7071812972039595    34.5255949271127207
-76023  -97.5970811966770526    33.0447113693730188
-67541  -97.7748589999999922    38.2309659999999951
-70592  -92.0083801724968424    30.0950423421027367
-04430  -68.5749447415621347    45.6299645216971967
-33015  -80.3208365744838204    25.942891688004849
-33145  -80.2341477019544271    25.7535951319219301
-65629  -93.0247673151590391    36.8986024562163379
-55756  -92.5887348648311104    46.3747820296204338
-73041  -98.8704822310468927    35.0666456317689565
-25901  -81.1432992410012019    37.9790814907754211
-24502  -79.2285901976779741    37.3489844740310915
-38761  -90.5026990615942708    33.4444720498188417
-56553  -96.6707208838268741    46.4370697312073375
-81033  -103.829847193181777    38.2146914999999865
-30265  -84.710171365659761     33.403438378045152
-62319  -90.7243227122736613    40.1561558189134473
-02367  -70.8081141982271305    41.9621559133763569
-53942  -90.1566699166666581    43.4685483333333309
-00744  -65.7840069959016489    18.2162686680327752
-34682  -82.7755839999999949    28.0703892499999981
-43346  -83.8456059791666775    40.5710356666666669
-20131  -77.744583999999989     39.0460663333333358
-72316  -89.8824403333333208    35.9283591333333305
-56586  -95.8382731861670294    46.3229983114337855
-45050  -84.3647733796102841    39.4411745802912321
-97224  -122.794486930857644    45.4078005200776005
-60545  -88.5322625770481153    41.6689641846912551
-39553  -88.6433378240817689    30.4061766625760832
-50658  -92.5457720089404035    42.9550198735630318
-79326  -102.205613928571438    34.1032111964285676
-75142  -96.265146657899038     32.580936227842578
-33484  -80.134408590173976     26.4534859537413993
-55970  -92.8357252031533875    43.5994393829593747
-17217  -77.7070039366516454    40.2409337828054277
-39823  -84.9369923066197856    31.3357527508003209
-48427  -82.6914567453346621    43.5347816353032542
-76105  -97.2715303113312331    32.7229038225987239
-85654  -111.155208749999929    32.4150610526315717
-18240  -75.8664022781394038    40.8528047677293173
-82804  -88.8700879999999955    38.3926144999999934
-07423  -74.0988620488157892    41.0002600318994794
-18080  -75.6230477328212487    40.7304294300188729
-33109  -80.1416421912568069    25.7599393551912534
-88034  -107.874125142857153    32.6523537285714198
-72732  -93.9553059011493303    36.4262165775118518
-02822  -71.6029056944715876    41.5661309227812907
-41352  -83.3320836596044501    37.8214013778248841
-78254  -98.7028550298647502    29.5273985956163934
-75979  -94.377283726322446     30.7705303604768226
-55367  -93.9777080866301588    44.8924448854023481
-97707  -121.462718791735298    43.8474651240972122
-58357  -99.170434365196158     47.952348352941172
-36435  -87.4459150322119854    31.8811108282033153
-85631  -110.617184840425509    32.5656484361702141
-18706  -75.9181360774253164    41.2136183903331954
-16734  -78.8418393552631898    41.6196989649122742
-57724  -104.060045785714408    45.5770460500000638
-15215  -79.9147456041252298    40.5018024318030712
-43720  -81.8809657877621646    39.7971214232245174
-18921  -75.1733387499999992    40.5285900500000054
-24658  -81.9978325000000012    37.3671522499999966
-65759  -93.0221913429520271    36.7482203484245176
-18031  -75.6501894368244194    40.5521349455963787
-37208  -86.8049255390178303    36.1763135360164299
-35604  -86.9121049999999968    33.4841559999999987
-94611  -122.212327692096167    37.8307702217102175
-56629  -94.1057865517242789    48.6359433639162475
-12572  -73.8725218927993978    41.9254320666774447
-53919  -88.7984222433962742    43.7366080811320614
-16852  -77.525049425675661     40.9372903361486564
-59529  -108.627708527999999    48.7928383640000121
-18701  -75.8833416202860747    41.2447876566970137
-00757  -66.3973735184491716    17.9899473764596074
-14518  -77.0085472083333258    42.9327196249999972
-28410  -79.9892465000000072    32.9163050000000013
-57106  -96.8117255888862331    43.5164752473140695
-37061  -87.6683824108596639    36.3013646752287755
-72553  -91.4949900718391262    35.7061016925287049
-25854  -80.9868485866140588    38.1287639661416478
-01516  -71.7327088071361061    42.0560614827628783
-02154  -71.2593388421052651    42.3734497368420975
-68313  -97.2774016266439787    40.7844787961693385
-77360  -95.1103080299807857    30.8259305714613205
-20551  -77.0458069999999964    38.8921830000000028
-31768  -83.812154817790514     31.1791865767079166
-15568  -79.1625147333333246    40.2531279333333316
-95660  -121.375260376503576    38.6792821470194568
-94102  -122.418795003796546    37.7799045269552138
-65062  -91.632375336492899     38.4877108601895657
-17339  -76.8791363573535733    40.1443577026267704
-28457  -77.902864643943218     34.4334208646569095
-68816  -98.1209860301205765    41.2020380481927759
-96815  -157.820399537575469    21.274048622804429
-43605  -83.5098301152677891    41.6425254319514053
-59733  -112.950331126967669    46.5208103483915565
-46805  -85.1191276766256522    41.0987763218944835
-46788  -84.926603468706503     41.2645689142328322
-38362  -88.7753362870239187    35.7245662665726016
-26261  -80.5475991707610177    38.2235912947873544
-16403  -80.0281732011961964    41.7957707618849952
-96036  -121.501919706896558    41.086147000000004
-33351  -80.2735453797878478    26.1787234260101265
-30048  -84.1316957500000058    33.911503500000002
-25079  -81.4033349890109861    38.473974021978016
-80951  -104.675842820377426    38.8624817896354884
-46506  -86.1699549920239036    41.4580047446741773
-50139  -93.3502501897099251    41.1937185003175443
-44413  -80.5502600711833026    40.844416106973064
-49505  -85.6386976415996912    42.9998815585229437
-98236  -122.399789342534064    47.9551389735480029
-67876  -99.7197875955554878    37.8156049843478002
-49647  -84.2056721428571393    44.7251994999999951
-34119  -81.7190582125946179    26.2639977731823286
-08628  -74.8240001296104538    40.270085963627082
-59069  -109.55971869758298     45.7097079894903757
-45660  -83.3747112547114995    38.9872992895315562
-12029  -73.4296024504781428    42.4017754999999994
-38356  -88.8814495860288218    35.4474209685527555
-62835  -88.3289041422709857    38.0975943479252095
-63368  -90.7232137354444177    38.7535145700509744
-28107  -80.5287312807763414    35.2477910572468573
-56377  -94.2215204146559842    45.6317020048704478
-40063  -85.3493149393939206    37.5750484848484803
-04077  -70.5268920142856928    43.927469914285723
-80512  -105.415083025144298    40.6182469646361923
-04112  -70.26130225    43.6537020000000027
-15937  -78.9828841170732119    40.2074471999999972
-99202  -117.375194571910981    47.6610509090252563
-36518  -88.2790348961794535    31.469070729808017
-57470  -98.8767989570732055    44.8760835596747825
-15347  -80.2198744622356372    40.214486513595169
-84639  -111.878406565562841    39.5407227324502912
-44506  -80.6256369217686455    41.0953951332199523
-25847  -81.1766826650717803    37.7194939521531225
-18956  -75.0318180444444351    40.2643806222222267
-16740  -78.6171297399897782    41.7205535772935008
-41226  -82.9617725801241761    37.9734453614906897
-04453  -68.8144761583383655    45.1838017212522587
-01525  -71.640058585365864     42.1028585426828954
-97138  -123.797589810463748    45.9540485041826727
-54873  -91.6450231327734883    46.3587031176424773
-84332  -111.815493562011284    41.7037006445603353
-83676  -116.91126659284204     43.6507677802105007
-01092  -72.236640580048288     42.2045129227675204
-59479  -110.279018272464796    47.0748976071885536
-20144  -77.9335599076646446    38.9146181139765233
-01407  -70.2068055000000015    43.5880369999999999
-20307  -77.0266845000000018    38.976545999999999
-68461  -96.5302809174691845    40.7708682916093608
-90008  -118.345378377320728    34.0094404990899264
-73010  -97.6611531625609786    35.1404611593381304
-53027  -88.3615821781934159    43.3061831064618445
-47943  -87.2783104903225251    41.0559883182796455
-98383  -122.700561750053552    47.6645060379229619
-62207  -90.1297558650129389    38.5876084320232167
-59038  -107.246602001734999    46.2281413493348765
-59026  -108.849206663663779    45.4501776456456383
-16630  -78.5856698144256001    40.4644454444443582
-37145  -85.9161792720090745    36.3803772623186532
-85736  -111.272610600522739    32.0356010687570887
-40011  -85.1891567724920122    38.5461839420810577
-45306  -84.1839257866603532    40.4625892478713567
-26509  -79.9661149069767418    39.5501999534883737
-50162  -93.076158857041321     41.935612629089654
-98883  -119.378538644444433    47.3171744444444329
-40348  -84.1469011987794318    38.2991497480383529
-13690  -75.0331199697802731    44.1597822014651769
-98014  -121.912391099830529    47.663041543262743
-46120  -86.7956895933664896    39.5101082759535416
-57380  -98.3080698347689861    43.0291781697643714
-26430  -80.7544372998832785    38.8837390746791414
-01031  -72.190257232598654     42.3286188335266402
-51501  -95.8747269680028751    41.2453735064835101
-70385  -91.5162956666666645    29.7892180000000018
-95066  -122.01272714861841     37.0659579446278897
-56359  -93.6897046299385323    46.0865111663644811
-47037  -85.3062191637345109    39.1572672477297203
-72901  -94.4130318330515479    35.3683953834119151
-79714  -102.540104709337626    32.3349668448002348
-33903  -81.9102822300658175    26.6862471892475028
-74345  -94.7565573924050284    36.610782303797464
-47885  -87.4749517532603562    39.5019010037183875
-46785  -84.8824760120265154    41.3195780142538993
-16127  -80.0796928327027615    41.1668834880218384
-49057  -86.1692714143379277    42.1995563110570799
-16048  -79.8094964464285397    41.0485832857142796
-53182  -88.040209797211233     42.6916258474723733
-26544  -80.1605556220472408    39.6958377244094649
-47955  -86.881918930608478     40.1926920342205918
-59317  -105.491099110523706    45.3842916371937051
-98279  -122.804535013738828    48.6375620546306848
-29692  -82.2258884298092454    34.4162518814430953
-79077  -100.280534333333335    35.052267333333333
-95620  -121.819091078288821    38.4363062040282131
-65642  -93.0749567333333232    37.0525036000000085
-58636  -102.309360285714234    47.3999178629500975
-75093  -96.8064963286372659    33.0370898579823873
-80011  -104.807957274122529    39.740888383262515
-49008  -85.6112899416382049    42.263340447440207
-55013  -92.894107254798314     45.3546793337463185
-73566  -98.9501342246154394    34.6525469469231027
-98830  -119.588331560166068    47.8690916500691728
-37854  -84.7092386142048639    35.8629578033856546
-85250  -111.90804262499995     33.5225772587424018
-63070  -90.4147685132857788    38.2817760281623691
-17884  -76.6713848144330115    41.0457824742268045
-04460  -68.5209407143447891    45.5733360223879842
-12512  -73.9507573518518626    41.5825136666666637
-41745  -83.4191842749176544    37.3373979813800858
-14456  -76.9946325554250564    42.8538211199570256
-73650  -99.3992004110719165    35.6319723309776464
-67321  -95.703402666666662     37.1962336666666644
-47462  -86.6322556860499304    38.959408629438073
-79848  -102.142713702034058    30.2063726160405253
-76668  -96.9509332000000086    31.4301003999999971
-13758  -75.718822951612907     42.5617077419354857
-65018  -92.5507097534603531    38.6228310746275767
-65646  -93.6962446851668886    37.3045733736371901
-01270  -73.0369215536690319    42.5074142955395899
-95033  -121.984643326136862    37.1518068738565717
-64124  -94.5407247812652116    39.1070713587638252
-58369  -99.7569271818923653    48.9145824832789202
-04496  -68.8960202096675545    44.6582875480272037
-36989  -88.3141416666666572    31.7777676666666657
-95461  -122.650448526423887    38.7808181216969956
-05847  -72.4578386443871949    44.7952329781089631
-56575  -95.4257286297446683    47.0600885189775013
-29697  -82.5303327994155183    34.6257211137249854
-56308  -95.3934201614768966    45.8893131715251101
-57421  -97.9313248495684547    45.7565856757090046
-80757  -103.558939973480719    39.8356440276243333
-67438  -97.2609747511519913    38.5048991958525662
-34446  -82.5319556936422742    28.7494918972313336
-68757  -96.9133567911112976    42.659579257777807
-68002  -96.3372182173912961    41.4758871476113384
-24506  -79.161005000000003     37.3815707499999945
-77852  -96.756801095238103     30.4409486984126936
-55092  -93.0532402882392091    45.3288814614685478
-15961  -78.9380420558433684    40.4616860644790606
-80847  -105.796308025641039    40.02667425641026
-20782  -76.963334626482677     38.9649733926889468
-97041  -121.587247425495349    45.5169679725610692
-47963  -87.4481206432292026    40.9589853315304993
-55796  -91.7986090526315621    47.9298977081339785
-24131  -80.2384756492693469    37.5682642359081669
-60005  -87.9852496331221943    42.065654157448229
-75172  -96.6828320124482588    32.6017146520450822
-30130  -84.8408222799999976    34.0810591599999952
-44270  -81.7752587995414473    40.9703101581762539
-48818  -84.905899048611019     43.2705315798611494
-78605  -98.0622390870037037    30.7451713135527847
-77504  -95.1873966401825271    29.6465046678606186
-02405  -80.0239043750000008    36.7641489166666631
-54449  -90.1852989875734607    44.6496671967774503
-64668  -93.7161662173911907    39.3583377708884043
-99020  -117.496503454545447    47.5636090606060478
-14174  -79.0221565694314165    43.2462148925961074
-27885  -76.2863646524353385    35.4293923812386637
-37362  -84.7354212457067177    35.0415106147530793
-17266  -77.4125896698412959    40.0850317809524128
-84511  -109.474286361780528    37.6263529407165507
-15085  -79.733458232460265     40.385060883068256
-05824  -71.8687377220167178    44.4302550757639025
-72578  -91.8804622073643458    36.453880065245464
-81611  -106.851849594313293    39.2047728979972732
-60108  -88.0902261263255468    41.9498617167808803
-33179  -80.177689139093161     25.9594365392832174
-04699  -68.0017309999999924    44.4261087692307584
-26222  -80.414323453958815     38.6680283296042404
-13302  -75.9628656067154111    43.5012890355074546
-57264  -96.79504863636366      45.1136542878787949
-29128  -80.5162902004505696    34.0968632955277897
-57236  -97.5564411224103907    44.9779413709980957
-89426  -117.504729198581614    41.4967734586288159
-25534  -82.2605220031948647    38.0916423738019105
-06601  -73.1958178666666726    41.1617720000000062
-30117  -85.1193950876169083    33.5851975328508843
-33445  -80.1077272764888733    26.4566584957736204
-15283  -80.043334625   40.4511577500000072
-47923  -86.8851894427890699    40.6070636770081208
-62344  -90.8304712071129927    40.1756543117155047
-92366  -115.43522071428572     35.4581504375000023
-46038  -86.0118700947433297    39.9689325844048327
-76177  -97.3203417020809098    32.9435059211391348
-58363  -99.4191805930112338    48.7536941284686947
-33756  -82.78794435212086      27.9455144718188251
-33850  -81.7331708801884389    28.0996344648829499
-50578  -94.5392047796845389    43.303517334934817
-12208  -73.8068064857697692    42.6550764584141007
-73651  -99.0947523831167132    35.0253425385790891
-38787  -90.5222270000000009    33.8173643333333303
-49456  -86.1954829976988464    43.0890869107833723
-58481  -98.463041409977393     46.9455190345086706
-33316  -80.1278575782774141    26.1032741302503233
-04776  -68.362888681256365     45.8814981132852964
-26436  -80.7353949999999969    39.2907730000000015
-24963  -80.7819382586731223    37.4220701911138107
-61348  -89.0515676522463338    41.2888214262339588
-41736  -83.228238886713271     37.3435965328671315
-14427  -78.0493697607287942    42.634562263562799
-79084  -102.062695827209325    36.2624579280039399
-37014  -86.6523580805003775    35.87340865715192
-23702  -76.3272749355487861    36.8029494716347614
-59623  -112.260113399999994    46.2691063999999983
-28312  -78.7765077431776319    35.0153073652569304
-35905  -85.9168150196869078    33.9432554893051588
-12451  -73.9449095020556939    42.2962860721790506
-78070  -98.3909189427645856    29.8919582629259644
-13645  -75.446336347826076     44.3095461304347893
-87828  -106.919662619537306    34.2037512133676174
-05456  -73.2553593695226937    44.2093274970694949
-54139  -88.0645051313053955    44.9390120749258557
-58241  -97.780693766832357     48.7070492671864628
-91103  -118.165177043081286    34.1672089134788521
-34957  -80.2413295017442465    27.2461213600539836
-45368  -83.659739282754515     39.8452551789756768
-79043  -102.115037665384605    34.3653008487179363
-48144  -83.6264264954704259    41.7527897370405512
-19082  -75.2692255610916305    39.9593177206405983
-77059  -95.1177165651760532    29.5990948282588171
-76847  -99.9942295714285621    30.5036710000000006
-35630  -87.6640434979844372    34.8212331558590975
-25977  -80.9234294545454702    37.8107896363636371
-66858  -96.9547088693467174    38.4871261407035306
-40404  -84.285953400000011     37.5762220666666735
-99518  -149.884532405520645    61.158804548698285
-64676  -93.0458417320574398    39.648121516746393
-72041  -91.4565277578843308    34.7468024891590446
-33004  -80.1442201014025812    26.0500373153904441
-24725  -81.2995232142857134    37.3260574285714242
-96782  -157.962228583946654    21.4087230817390939
-35179  -86.9377838656481288    34.2659106650577456
-72134  -91.3639300863636663    34.6031225136363361
-64132  -94.547426178703688     38.9890062725326771
-29838  -82.1671614083012258    33.7311324629987084
-35540  -87.1631056485668836    34.2160384352118712
-67218  -97.2786028727639405    37.6688457145962801
-41840  -82.7138201296408084    37.1890448934874911
-29063  -81.1970642571437367    34.1271011295586533
-11964  -72.3303980357437126    41.0705605739523776
-75591  -94.0593481999999881    33.3690468000000067
-23141  -77.1518362150294621    37.5188165914846365
-56155  -95.9386782224137846    43.7709953114942181
-08805  -74.5391278173115808    40.5699796450269972
-79804  -101.1060418    36.1991038000000032
-78615  -97.3790540746210809    30.4708270643939514
-34988  -80.5103301709401649    27.3574745256410274
-18628  -76.3793070615241589    41.4630700174472153
-24846  -81.8597651034482823    37.5339778620689728
-81152  -105.431774340220457    37.137816818181804
-28456  -78.2717737645277083    34.3648079518717182
-62471  -89.1155127498229831    38.9720408898653616
-56281  -95.1716412031401973    44.9430029754661362
-64765  -94.4452587142857141    37.9966792380952398
-60002  -88.1027970738786479    42.4664689026947215
-02116  -71.0733373155633359    42.3488930206362895
-48731  -83.1674662386678705    43.8397241942645195
-64097  -93.9850666975170128    39.1121675141084211
-64478  -94.9459920000000039    40.3920860000000062
-30073  -84.7079806666666713    33.8841425833333361
-12172  -73.7382115566037299    42.2879416509433881
-92678  -117.569703050847423    33.6715253008474633
-65627  -93.0194705466013119    36.5620617916957755
-34773  -81.0529876800109292    28.1377041460643937
-37663  -82.4883996918306366    36.4665078452824432
-26337  -81.1679833570647133    39.251838043811567
-70723  -90.8621557091787935    30.0530554086956307
-06470  -73.318930872034656     41.3919150805177622
-13141  -76.1857600008986537    42.7695044887690727
-62561  -89.5260262474605213    39.8603238046250965
-47234  -85.7684118903323025    39.3754551997114035
-50569  -94.1407050297554804    42.4160447364505231
-01227  -73.1752403333333348    42.4811446666666654
-68048  -95.9138220399201487    40.9873463699451079
-51358  -94.8915009839655852    43.1306772631991038
-43321  -82.8286606481481726    40.4630331975308977
-08022  -74.706772215192558     40.0708251896612495
-15329  -80.2906189880343533    40.0363727182906928
-23027  -78.1321411391940188    37.6396794463229725
-23708  -76.3092690000000005    36.847749499999999
-93274  -119.346896851250861    36.1995053441517811
-48828  -86.2837553333333318    41.6859216666666654
-03824  -70.9202184363319788    43.123359213492904
-24053  -80.5413698519136005    36.6086984262667698
-57741  -103.473973355932202    44.4103975593220355
-87516  -106.441295666666704    36.1770877708333174
-63064  -90.3954077500000039    38.7265160000000037
-11760  -73.2324677499999979    40.7299314999999993
-30451  -81.9580982745098225    32.3905116666666615
-95932  -122.01202863895        39.2308828904083384
-39307  -88.756374654897769     32.3590992239493431
-46773  -84.8715472234968473    40.9819382114721122
-61263  -90.604780082004595     41.2603621890660222
-44132  -81.4999578036004948    41.6084448371521916
-19143  -75.2279140035710014    39.9442692118022009
-28631  -81.4081493210650962    36.5503301551988855
-70446  -90.3613725695246188    30.6274271402288676
-62685  -89.9944944102351485    39.1505773704086693
-79040  -101.525859801286742    36.3082420879199432
-96731  -157.946346675438633    21.6776468771929771
-66056  -94.8367263824267042    38.1571298420501464
-21209  -76.6707706597757408    39.3723142262731614
-01378  -72.3413989479231674    42.6740302707147663
-19548  -75.7009914615384645    40.2814936153846119
-70648  -92.8779825853017229    30.5055683932633244
-91106  -118.129187044901855    34.1370925821639659
-49934  -88.4423302389558472    47.1596085682730433
-97338  -123.333091565071143    44.9226760577437361
-71675  -91.9362260263541344    33.6103349627658972
-21088  -76.7093205454545597    39.6575333333333333
-06336  -72.1956398010204907    41.5781329030612241
-50064  -94.2289673755020232    42.1151759497991733
-73433  -97.3832422559244293    34.6150403857819526
-71353  -91.7655697715914727    30.7098725558965171
-62534  -88.7513271935484482    39.5186877772657326
-66443  -95.3970844000000113    40.241259300000003
-16512  -80.0682467500000001    42.1238932500000018
-92661  -117.897966942756966    33.6012416045560727
-99330  -119.063169123524546    46.4749984363406909
-32420  -85.3725766076579475    30.6376181375946892
-63334  -91.1848937841336777    39.3231514421228212
-29691  -83.0672845205839394    34.7765786799431638
-39751  -89.0868062258315661    33.7025392869295644
-27201  -79.4865451707316879    36.0341546829268324
-77001  -95.3579420000000084    29.7527332812500021
-14711  -78.1248017177640008    42.3246979845678553
-27809  -77.7711909162984227    36.0266418054736945
-32780  -80.8228223253406526    28.5632448076789061
-43381  -82.2742019999999883    29.0803975999999977
-50323  -93.8145973935046698    41.6329070630709523
-95648  -121.281045452836267    38.9097504536421965
-99009  -117.265533965876159    48.0295518493611269
-02743  -70.9057407758055405    41.7070517027399958
-15135  -79.8158310497387191    40.303329074608321
-49346  -85.3482757042768299    43.5848282626607784
-76434  -95.2150086666666624    35.8793930000000003
-80634  -104.76005064834645     40.4077840326525504
-02118  -71.0723962675069458    42.3390199733893695
-50124  -93.6022902177334117    41.8990922707240117
-70085  -89.7861083935084565    29.8481014268934324
-03032  -71.342065129396957     42.9927130155465704
-70740  -91.4110106435777539    30.3771088695359168
-65039  -92.2894347604384677    38.7152038176470938
-70342  -91.2259921383507191    29.6970603508577184
-04961  -70.0787628887774474    44.9700404711490833
-61258  -89.9297051564625747    41.4978095510203886
-02639  -70.1353609193068195    41.6632821984836426
-48211  -83.0443861821286617    42.3811095478087481
-85035  -112.192512730457693    33.4724090163499639
-85646  -111.048704615002237    31.6158198102123968
-63845  -89.3731751849444436    36.7714984895447188
-27886  -77.5370693593263809    35.8953545365384699
-50060  -93.3186063015828182    40.7620055293951111
-65632  -92.8300970714431202    37.4951040720589859
-85652  -111.071313836538508    32.3407521201923061
-33820  -81.71947188888889      27.8941975555555537
-83537  -116.565547919756597    46.6116349918854738
-16442  -79.8288746870472465    42.0334094314948246
-80016  -104.733158336075149    39.5914190955569865
-14872  -76.8565030259433684    42.2308683938679579
-01098  -72.940613720581311     42.4001648515738623
-46121  -86.6886950080265848    39.6992294520488969
-28164  -81.0525643028999667    35.3870772089933396
-31085  -83.629474563943603     33.4258445791549619
-55113  -93.1519049604623461    45.013767993552797
-16413  -79.7531219999999905    41.9005925000000019
-24134  -80.7373959651080071    37.2663014521025033
-72047  -92.2076437579946457    35.2236320628061677
-90066  -118.431307036825032    34.004051229359284
-65604  -93.598894893162381     37.2839730465336885
-12722  -74.3869392277227774    41.5886377227722761
-13062  -76.3840601460674264    42.4847995730336976
-17978  -76.652212500559898     40.6200238555430886
-57799  -103.870453636363649    44.4961820909090804
-76878  -99.3014259552049623    31.7077562566126403
-59344  -104.555152267291675    46.400992994724426
-18949  -75.1414809999999989    40.3935427500000017
-42124  -85.6646270708502016    36.8929354089068724
-75416  -95.3640966795846055    33.6739665141805204
-50320  -93.5746727608375437    41.5388803954811934
-10451  -73.9219498280318135    40.8204908240556463
-15448  -79.7460836388888907    40.1267539814814782
-48853  -84.6939653487395105    43.1070266806723055
-04066  -69.9686662528620076    43.7681612090591869
-42515  -85.6170327619047526    36.6623460952380924
-78630  -98.0677464999999984    30.5969231400000083
-78011  -98.7153238714090122    28.8589211901504257
-73109  -97.5240687004612568    35.430999993265921
-96078  -122.178131137931047    40.0779594827586223
-01360  -72.4460738603825831    42.6733959325626415
-73764  -98.1856534392523486    35.8701140841121457
-48141  -83.3138318118485159    42.2943322195594007
-30603  -83.4113374000000078    33.9501643999999985
-45130  -84.000327094962401     38.9117978973143579
-02903  -71.4142252231682164    41.8213624215395754
-66451  -95.6698054208816728    38.6152233874709623
-27810  -76.6099778366872499    35.5019449527559416
-58492  -98.4366022933688498    47.1529550283266659
-31051  -83.8744094871794488    32.149384094017087
-19020  -74.9368653888794967    40.1084198005627357
-70375  -90.5355452867647159    29.6889650955882267
-58758  -100.109544704796136    47.7454775181265205
-17985  -76.2120930706323634    40.9110802727986353
-82310  -107.832086364583247    42.487950604166663
-58258  -97.3698400674089157    48.001168983920806
-15035  -79.8076481967444948    40.3842675194621066
-77710  -94.0754339333333149    30.0404438666666671
-59925  -114.772127587417074    48.0879421440872932
-29482  -79.8381736945564739    32.7638032898185259
-27786  -77.5293742500000036    35.8588607500000052
-74837  -96.463875904458618     35.3424972229299499
-47940  -86.7522721625466886    40.1166317490636075
-63084  -91.006116280906113     38.4308588189746985
-23163  -76.3080419513444781    37.3545800435339004
-11356  -73.8458138095238041    40.7926886428571294
-12697  -74.864132111111104     44.3653485555555562
-57014  -96.9824510855778641    43.1350877619557735
-19936  -75.5862156103896154    39.220051285714284
-84621  -111.819500512110693    39.0548715397923942
-50670  -92.5971299550747062    42.6988989434275865
-72548  -92.0720717386363248    36.2440142159090897
-58031  -97.7140918189456755    46.7577171722689258
-76307  -98.5010805909091118    33.9083369545454687
-95120  -121.857683234350262    37.2143612673141249
-47470  -86.6422962969897839    38.8141154371237818
-20523  -77.0486960000000067    38.8959720000000004
-34203  -82.5098274918651668    27.4429261360494472
-42462  -87.8026570745046797    37.7379269852047727
-44241  -81.3475687004319354    41.247169660105655
-29052  -80.7467424089683021    33.8437765728253623
-59223  -106.291773915662603    47.8918473501505773
-77030  -95.4060520599029473    29.7060255218564322
-62894  -89.0430064231128711    38.2188141234854371
-72175  -91.7656258820157831    34.3479842611683921
-04092  -70.3563551829594473    43.6903650469356037
-92505  -117.489770528400769    33.9228149574468247
-78748  -97.8287926140441897    30.1637877939330252
-37380  -85.7192980744991502    35.0344048165571991
-67074  -96.7663030006411873    37.6752655488939325
-98665  -122.661184616560604    45.6826463638359286
-33052  -80.9224299333333477    24.7763444666666643
-63053  -90.364291672727262     38.3662993636363581
-59825  -113.702130144389955    46.7301032735808022
-35178  -86.4015729526818603    33.4106278951377433
-71401  -91.9577553631922768    31.7848938127035794
-38543  -85.1630887127744529    36.4083088069860707
-46459  -86.6990569999999963    39.0657156666666694
-26506  -79.9316389487179748    39.6542099358974269
-01062  -72.6843516987466245    42.3196559412188762
-84056  -112.002746753605734    41.113529939903863
-80540  -105.333186160149992    40.2535178092441015
-50314  -93.6320788516521532    41.6032344489942716
-79085  -102.514563606060591    34.7428468181818175
-12980  -74.5353418241510468    44.6198568183044699
-74701  -96.3832805773439674    34.0123133302336385
-23875  -77.2724060601892546    37.2338166059243107
-80515  -105.384070688612866    40.4506324737898453
-65026  -92.5805679068486285    38.3190288284450986
-53154  -87.9022958858092096    42.8823875991750469
-70836  -91.0883905999999968    30.3932696000000071
-08224  -74.4553536335877766    39.5977807480916155
-57342  -98.70692758514231      43.2633507491558404
-54888  -91.9019193333333106    46.0254432280701735
-85246  -111.337267153846156    32.5670269230769236
-81149  -106.255370952116863    38.098050844636262
-51576  -95.7156227893278668    41.3749958560869331
-10517  -73.866624717073222     41.2944019268292308
-97905  -117.448511575645853    44.5698427918819675
-12159  -73.8757727985685761    42.6465569187116103
-16312  -79.2932003444444433    41.9236510111111045
-26362  -81.0414843986610691    39.1767859549862152
-65035  -91.9428962211518694    38.3592493216755415
-77318  -95.549181392500671     30.4348986402975292
-72152  -91.9766988849105047    34.3474510767262728
-48860  -84.9159882231759582    43.0328916652359936
-67041  -97.1281171118421014    38.0539237039473619
-89026  -115.315049833333333    35.7753346666666729
-67546  -97.8197393062998231    38.2216926719767471
-28665  -81.3514463950037907    36.2067727979876111
-74952  -94.5842808000000019    35.213487200000003
-95934  -120.94662076794998     40.076985996878264
-80701  -103.810672618889768    40.2330825584845826
-87734  -105.146882784671504    36.2498578284671495
-50447  -93.7949956007256844    42.9259573246045463
-18106  -75.5858947653656799    40.5733276370370533
-39041  -90.4611174094507788    32.4044110415071813
-60538  -88.3624491182451806    41.7164644552787109
-98328  -122.300436154086981    46.8846766038521423
-38864  -89.1909333681130647    34.1527775875553914
-66846  -96.4857240597617221    38.6564985104524084
-15419  -79.8926206056581947    40.0637010819861672
-40448  -84.7576293684210498    37.4479686421052591
-77555  -94.7756728000000095    29.3112414000000001
-61451  -89.9506979281083829    40.9443783883323746
-84087  -111.911121565386907    40.8835303348655188
-66410  -96.3908519999999953    39.0529355000000038
-68975  -97.9492351245551589    40.6092247615658621
-18963  -75.0110044509803942    40.3880801960784481
-45767  -81.116299762001276     39.5542537236404357
-37080  -86.9197126470589438    36.3292188414196673
-82922  -110.300277481608958    43.1495933784806169
-86334  -112.486647977622397    34.9012652340326852
-14874  -77.1683883480277615    42.5326427401392095
-73763  -98.3185294126163711    36.1175076670113455
-88424  -103.616258371352814    36.4758493740053069
-98344  -122.227179030769179    46.9841059384615392
-25909  -81.2041411000000295    37.8341947714285709
-89124  -115.474700782165215    36.2226596411889616
-92137  -117.11857449999998     32.8559022857142864
-52655  -91.1975073196481674    40.8398642194081702
-92571  -117.206799822148696    33.8230062319369438
-48175  -83.5801276756756835    42.406921472972968
-13638  -75.7598072037036445    44.0206428580246794
-76943  -101.245561610227497    30.6575556090042092
-33810  -82.0094902093965885    28.122773761227176
-05143  -72.6252226284461955    43.2690654850426881
-31737  -84.7351678319326993    31.1502793193277334
-81035  -104.162302999999994    38.4051210000000012
-41173  -83.3053100833333247    38.2591766333333396
-86322  -111.857062953821057    34.5627348353362507
-40830  -83.3211152520324561    36.7831924024390347
-28009  -80.1177954192892798    35.4060425837563315
-37924  -83.8049770420396669    36.0324371677289221
-57237  -96.474586167523114     44.7628147029804637
-54985  -88.5252568333333443    44.0768189761904736
-72923  -94.3078830253124352    35.3314465049308808
-14130  -78.1572270949367152    42.5524336962025274
-54768  -90.9497244495694446    44.9897643570110262
-20765  -76.5581128303248732    38.8552633971119121
-01505  -71.7213394423833819    42.3429935011838978
-10913  -73.9605754401172675    41.0645563802345777
-38575  -85.6367240718700771    36.5698859713645277
-52361  -92.0074549010180363    41.6492590476950753
-68338  -97.2445860261410928    40.3137496003544911
-45114  -83.8596307922077955    39.3607379350649467
-71701  -92.8396138517356633    33.5676140874799316
-92843  -117.933711249337335    33.7637104724756867
-39057  -89.2790951804280581    32.4922748402589292
-39657  -90.4469088799484808    31.0256488239327872
-79705  -102.088955191854339    32.0329455481000096
-23760  -80.1049840000000017    35.8721463749999998
-83330  -114.717399407733822    42.9437003188602446
-41039  -83.8752032922361082    38.4125230770845292
-27714  -78.994507630434768     35.9109983913043607
-87586  -105.369339500000009    35.2647195000000053
-11937  -72.1919053559103787    40.9976453476503409
-64620  -94.090645188326036     39.9026465154184891
-13053  -76.2767583330749659    42.4843335179448047
-37824  -83.6304715555555589    36.4403150370370312
-49922  -88.490907496825514     47.1139355619047322
-38563  -86.0007781729677987    36.1901812555046902
-31143  -81.5089284999999961    27.7595054999999995
-06026  -72.7420361507402049    41.9343065768505525
-44842  -82.22561518358782      40.639419706515433
-74442  -95.7975435028409805    35.1421059744318214
-50256  -92.9136460615545303    41.2685237663015201
-22874  -83.2927314545454607    35.03476463636364
-84190  -111.88809375000001     40.7272942499999999
-53144  -87.8743917643793111    42.6105358298015773
-62313  -91.2254086642960687    40.3169311166429551
-49683  -85.9422563662913319    44.5301268310746394
-05442  -72.6943161687929376    44.7535218213935622
-18810  -76.5068060156564513    41.941703837878741
-42038  -88.0299109636997912    37.0356823047448813
-24208  -81.4113986428571508    37.3372374285714272
-72773  -93.8570430905855915    36.0164805850131557
-87535  -105.747393548690425    35.5811639384375908
-24129  -80.5940334271844279    37.1130680728155227
-68307  -96.137212488684554     40.7911301110325368
-41149  -83.0448716998834584    38.0512966864801783
-95814  -121.492301146341276    38.57981771202396
-41146  -82.9052277591339362    38.2757914357240523
-34625  -82.7428104999999903    27.9715190000000007
-71462  -93.7186638473411477    31.6556522538116951
-15437  -79.5901978459645392    39.7944289271180978
-70301  -90.8060740925214702    29.8086562602578447
-79711  -102.216716000000005    31.934700666666668
-25239  -81.842959738886222     38.8461222725940161
-07102  -74.1736032042586686    40.7356555985804221
-11739  -73.1598665605213654    40.7245300428305583
-75238  -96.7099289918769784    32.8761315324212262
-35460  -88.1550551564077125    32.6920518461150564
-54927  -88.6545910703517421    44.101616306532641
-22203  -77.1175579981295414    38.8738911627308497
-87624  -105.529877499999998    36.9765119166666665
-29081  -81.0365503429738681    33.0949956266432821
-52591  -92.2065075477826639    41.3284499435770201
-27023  -80.4301295723934686    36.0957917475281391
-33755  -82.7812416310087258    27.97961677102235
-14841  -76.8637424565358458    42.5155314668383326
-43414  -83.6122660000000053    41.4570085000000006
-36830  -85.4694738438600297    32.5801949276874936
-77570  -94.4251649999999927    33.479900333333326
-37204  -86.7805719664350335    36.1092974401041005
-01379  -72.3958295742045124    42.5458059757813913
-87041  -106.308701829604104    35.536842040447489
-62323  -90.7087644973753271    39.8110102073490779
-08001  -75.3561208755621834    39.5565856446776323
-11542  -73.6273529400283167    40.867264187350294
-57445  -98.1118688332438182    45.4569695024185947
-11576  -73.6475342840535632    40.7961692250116243
-92101  -117.161338005709183    32.7205815117744692
-66118  -94.6123286694214158    39.1062766570247859
-40940  -83.9457158117048721    36.625432659881298
-58735  -101.518830452701053    47.8282038440847543
-86251  -111.921636666666657    33.495472333333332
-21636  -75.802307007186954     39.0277811899384091
-15451  -79.8491403452855479    39.7441198452855744
-58718  -101.690171654524534    48.3449363520361572
-29814  -81.8989645000000053    33.5423159999999996
-54841  -91.7761910462428432    45.6074748554913256
-78473  -97.3969062500000007    27.7963555000000007
-07974  -74.4028289317916887    40.6987908293819984
-28450  -78.5221765388095605    34.339031882064873
-11970  -72.5738198896551694    40.9404849448275812
-81525  -108.901164881468148    39.2637990240674029
-52316  -92.0868226647522903    41.5355535786074057
-13241  -75.6443730000000158    42.9834567368420934
-01451  -71.5780617225666731    42.5013506584005327
-77072  -95.5916283671044198    29.6992039290277958
-71853  -93.997512283091055     33.591517387146105
-91015  -117.986385999999996    34.152648499999998
-29169  -81.0953075367757492    33.9950158683457602
-78076  -99.2233430803156153    26.9096495059386491
-36480  -87.5920883774321481    31.3362999988881938
-46133  -85.2941117720815782    39.5898910166769582
-05040  -72.2085193662703659    44.0643387347696418
-01223  -73.0829277911429074    42.2907217277078971
-65237  -92.77458055748086      38.7836202700760637
-95368  -121.086636492849138    37.7080431360469817
-31308  -81.4905704508192628    32.1866109009327559
-74010  -96.380192963771151     35.835048457216331
-11232  -74.0045154481566811    40.6547255092166111
-74501  -95.7576443605505858    34.9476813564489177
-15697  -79.5817978317504071    40.2378293536861094
-33916  -81.8432513521739082    26.6420325660535973
-23968  -78.5213566524950011    36.7235694452660013
-10607  -73.8107244188169602    41.0400905776101439
-65744  -92.8931539201140026    36.6166642610556536
-71825  -93.5604280564291031    33.8702246197964314
-92389  -116.211887152905263    35.8496427859327511
-04228  -70.1324369230769378    44.403716769230769
-94103  -122.412131251212259    37.7725448990744965
-95150  -121.970343999999997    37.3284795000000003
-17886  -76.8737991837749206    41.0182254387417373
-36091  -86.5208876342296094    32.7547621315242878
-24904  -76.118111666666664     39.6057463333333359
-67045  -96.3005565418864364    37.8224235892452825
-56479  -94.8072438661151295    46.3874585947043059
-28657  -81.9401784820508112    36.0399309378174806
-12961  -73.5416841332007323    44.0575189582505473
-55356  -93.5857315294584708    44.9892547567942955
-98007  -122.142849985247381    47.6117043101669637
-02111  -71.0608758780842464    42.3514133193033473
-06403  -73.0534804605570969    41.4370969541785215
-84723  -112.263064607645873    38.1711439195170854
-29519  -79.3551628384615952    34.029344899999991
-69167  -101.057041951682152    41.584465886850019
-27212  -79.2900234090373317    36.4600202099448012
-32025  -82.6140581719294573    30.1374969121065703
-16673  -78.3957796823097794    40.3179430373845946
-02345  -70.5965608333333137    41.9141085555555506
-13362  -75.5188190000000077    42.9917955882352913
-13333  -74.8194698389830251    42.830555245762703
-73456  -97.5905936514382262    34.1426646522842248
-39112  -89.7809866999999997    31.8951360500000014
-44493  -80.8991389666666549    40.8295119333333432
-18425  -75.0137055525097907    41.4180907799227995
-25502  -82.1016977053525352    38.6560828036542219
-98226  -122.444544440820351    48.7940853628181159
-50050  -94.5024511763363364    42.163874150586679
-13804  -75.3744312216494876    42.2261594484536005
-29682  -82.8381942238727902    34.8329982279124195
-07866  -74.5070008234502268    40.9266237265632213
-76068  -98.0863668260869446    32.8991108260869609
-95093  -120.896608375  36.5222528906249977
-17678  -76.5917479999999955    40.2690796666666699
-07879  -74.8059702033897764    40.9604643163841828
-94580  -122.131298003123419    37.67842618552163
-95997  -122.002916833333344    39.1581295000000011
-46229  -85.976352463458241     39.7928440400510794
-38257  -88.8731092922970873    36.4758849201091166
-31723  -84.8877131242937963    31.3466119378531083
-13860  -74.963361857142857     42.4457495119047721
-71957  -93.5631161457843774    34.5544307791887562
-62836  -88.810965890184093     38.0966075269938926
-05664  -72.6513493870967864    44.1709645000000037
-22427  -77.2758609193174806    38.0198819106097119
-58775  -101.899197762434738    47.6926332589144835
-18621  -76.1020262463630957    41.2557603175010144
-75813  -84.6800139285714124    41.2525887142857144
-21146  -76.559188566393658     39.0807466421217242
-84026  -109.861650301538489    40.2990120076922835
-27872  -77.2486758155667133    36.2008934187817175
-95132  -121.852858166229439    37.4041910884007649
-26617  -80.8293246789618252    38.4876094275956575
-58273  -97.7173566896131547    48.3018884004073428
-99929  -132.380200244835464    56.4698372364193446
-47460  -86.776425242617421     39.2860376608011421
-67078  -92.9828842499999979    38.4515263750000003
-33413  -80.1475148290058002    26.6623197985964673
-38740  -90.7783753145696153    34.0495074288079493
-10540  -73.725434945578229     41.337656353741508
-77450  -95.7468793117234611    29.7500021789881508
-89041  -115.994582228571488    36.1964755428571365
-47241  -85.9039445454545643    39.137891590909085
-14709  -78.0003238162817212    42.3305882086541629
-71405  -92.4096209426262192    31.4054925814141512
-69150  -101.55157411850054     40.8271729032648025
-02764  -71.1596697114509027    41.855959128565523
-76675  -96.811720666666659     31.4479460000000017
-74577  -94.849718820143849     34.6890122326139192
-32530  -87.034128194805163     30.5996211038961121
-83273  -105.487956571428569    43.7510784285714323
-01475  -72.0432767703612313    42.6748107275629636
-40407  -83.9335590000000167    37.393351999999993
-53092  -87.9507416090217475    43.2210559052887575
-08244  -74.6014252046295923    39.3197426756172845
-24435  -79.3012713941965046    37.8721954557836327
-26410  -79.825919371472267     39.4021972006157526
-14223  -78.8441902666459811    42.9722069855116828
-25320  -81.6325390820076677    38.528897380215831
-94547  -122.263489827681298    38.0070150836188319
-33156  -80.3053126545212592    25.6672895014145581
-78935  -96.4375545127386431    29.7145033333333188
-27873  -77.7761927567567994    35.6526573166023013
-34229  -82.4829735835106703    27.1922597290983354
-91006  -118.029402563399643    34.1385402508209452
-64726  -93.913033216528774     38.5250096322314093
-97908  -117.88374213657265     44.3453162632961835
-80029  -105.165312142857132    39.9604627142857183
-36466  -89.4682822500000015    30.4798342500000032
-06614  -73.1330682169038369    41.2229834016507368
-91734  -75.6883527500000071    39.3965040000000002
-34785  -82.0206723099778827    28.8555749662720373
-19040  -75.1064801172770586    40.17852490134878
-72581  -91.9787704581430035    35.5437297805175092
-80652  -104.301856446132746    40.0895303176795821
-34238  -82.4765150126437874    27.2398935224840137
-50206  -93.1905281038922624    42.2638577615132007
-68720  -97.9964708367952682    42.3387454421365135
-45620  -82.1424836013985527    38.9508002110063671
-18107  -75.3713082999999813    40.6445541000000006
-20008  -77.0599432370689925    38.9367340352011055
-61562  -89.5010428775510434    40.8809430816326511
-40517  -84.4878279526805329    37.9833267457534944
-70442  -90.350215894456241     30.693891944562921
-19403  -75.3837113619606072    40.1458168601009788
-12066  -74.2884455419501677    42.7759087203325947
-78064  -98.4637209185059135    28.9828362402881581
-66948  -97.8485103387979223    39.5679853096539205
-39828  -84.2176690242857973    30.8365439655237843
-60441  -88.0360984306998802    41.5886207494355986
-48838  -85.2792402060501615    43.1800477910565235
-30222  -84.7396658632350039    33.0558793960383142
-86935  -107.226191466666663    33.1959240666666631
-43981  -80.9950999230769355    40.1851769615384882
-78594  -97.7938728593529305    26.3438509873417495
-30240  -85.0917730980895897    33.0415389418268219
-37059  -85.904844478153251     35.9857704983512363
-02401  -71.0209874999999897    42.0801084999999944
-13814  -75.5304971052631657    42.6205936315789486
-40202  -85.7512209436620765    38.2524672018779128
-19130  -75.1723140895701079    39.9682732587579679
-86434  -113.485802980498363    35.5263264507042109
-62392  -89.6779889999999966    38.2113841999999977
-26818  -79.0203202335024883    39.0724870926395695
-72163  -86.1255796875000215    37.071087312500012
-13140  -76.6490895166714665    43.0493760928427633
-59457  -109.401462005897272    47.0653554704179911
-18214  -76.064875175327856     40.8065709858727814
-85643  -109.806865804105612    32.2441262596188096
-99756  -150.612589522875766    65.0140831568627249
-65609  -92.1483609090221449    36.5259149226686972
-49963  -88.6471364139942466    47.0676921224490172
-29694  -81.4295739499999911    36.3700457500000027
-78434  -97.3533860000000004    27.6713170000000019
-93664  -119.288386461011171    37.0892603493363282
-64083  -94.4606972296586775    38.8045260096936033
-73020  -97.2656482276827603    35.4605971351845497
-22304  -77.111209973703069     38.815001741693564
-32356  -83.4200018441064941    29.8843039125475123
-62501  -88.8085540860558922    39.9315431402389791
-36846  -90.944231000000002     33.9435140000000004
-84062  -111.741895015051782    40.3833773159206331
-39631  -91.1004419939035728    31.0801573949323746
-87279  -108.115809949999999    34.3378271499999954
-45157  -84.2367518922963541    38.9579037971505073
-98609  -122.864089499999992    46.0715444285714284
-71726  -93.0161361137037801    33.6730475419476249
-66936  -98.3240857441253411    39.9032587911227452
-79389  -105.846435999999997    31.2995449999999984
-56304  -94.0813132938648096    45.5336721908816529
-08215  -74.6021479730054722    39.5515346823329921
-75638  -94.7333416436457156    33.0229363071672424
-25905  -81.1817648571428521    37.6668534285714358
-70787  -91.4621971570247752    30.9635233595041441
-02751  -70.6932806428571467    41.7558779285714294
-03598  -71.6302509888909498    44.3777762656750809
-45207  -84.4699122741807003    39.1412452318145156
-30310  -84.4233988936606039    33.7260440923167408
-67487  -97.0630209256136141    39.183576689585891
-04027  -70.9141671502827506    43.3970623284592065
-75254  -96.7972945391782815    32.9459223277017443
-76364  -99.0137544923548205    34.1179827392966502
-27876  -77.4049154686091612    36.4828147443677153
-40972  -83.6162904042273283    37.25282181356134
-16743  -78.257034316068939     41.8098554897050079
-36869  -85.0644123890802746    32.4335566722115018
-72065  -92.3038529982171809    34.5323525143842645
-38454  -87.3464744631669134    35.7299914099829223
-63446  -92.0004861469328858    40.1551037275320795
-63820  -89.3545014644809044    36.8088252404371516
-73099  -97.7337387849830037    35.5048902328622589
-18326  -75.2668069444969774    41.1483340088301262
-02019  -71.4755912472484738    42.0713289682657887
-21048  -76.9124711744373428    39.5050571765283536
-43557  -84.4004144374565897    41.4895178054597409
-69043  -101.234962524372193    40.1606324918759157
-68147  -95.9562432556193414    41.1795162617894448
-05001  -72.3724355527151317    43.66443769803994
-40069  -85.2246943909701145    37.7136876952102611
-55736  -92.9246257570784309    46.9399248357465098
-58341  -99.839225691008977     47.74263798519587
-64505  -94.8364076754974263    39.8145738211188132
-74447  -95.9782763696455419    35.6385875070120832
-11940  -72.7516760397877391    40.8095481299734857
-92337  -117.472938221160845    34.0452257802274474
-49738  -84.6265675284812033    44.6776429397074679
-28758  -82.4970509285714115    35.3693455000000014
-83342  -113.387115075834174    42.2215287694641219
-95363  -121.164965656436138    37.4672646410183958
-19503  -75.5843566748465747    40.4060242719836822
-16833  -78.5545645509924526    40.9457504997753503
-91915  -116.952138581947665    32.635395307996788
-60089  -87.9661465436156647    42.1640018293925465
-48185  -83.3784356042166195    42.3377564315223083
-16920  -77.3072362948051932    41.9886589649350412
-54174  -88.3806709658431089    45.0470642977062496
-72838  -93.6739056587677936    34.8951993507109108
-22583  -77.4910504782608456    35.4503617826086952
-17730  -76.8772026875000023    41.1090480156249853
-37890  -83.2914464766371339    36.081669785685655
-58467  -99.3249333704040396    46.8716136374661048
-72843  -92.9605097686055899    35.4772717444760701
-27231  -79.1721078283047461    36.1992295766718684
-37072  -86.7331885561380744    36.3535140743173741
-63069  -90.7352789047867674    38.49080285089331
-83354  -114.329565088235285    43.6728635490196027
-36360  -85.6276664834590377    31.4509780812540605
-43148  -82.4971586434536022    39.8210577217578958
-22974  -78.2650792507518531    37.9684621063651377
-23505  -76.2830950774021659    36.912945590527805
-35052  -86.3541016136363595    33.3631573295454515
-68521  -96.7111074054511448    40.8587491429589988
-14884  -77.8853488983957476    42.4743359946523711
-57331  -98.1310316778883447    43.4814847339982293
-16057  -80.0536884318667887    41.0363389946875259
-25637  -82.0221514950494566    37.8428769554455755
-49258  -84.6597719583333514    42.0603378333333353
-23303  -75.5082433267789668    37.9013021825842529
-62046  -89.8490562743363341    38.887135946902653
-12504  -73.9080428985506899    42.0231334637681044
-25932  -81.3122464794069373    37.7584670724876759
-80204  -105.021354216094579    39.7347544200337097
-64724  -93.9878552476462943    38.153095829717607
-28018  -81.8069306980901274    35.4464386084359049
-23235  -77.5643638552906367    37.517326504921769
-61037  -89.7604878130841257    41.7890851401868986
-38006  -89.0890275597013783    35.6917548115671792
-78121  -98.1218815099763617    29.3364841437510719
-03308  -119.213764999999995    35.6019089999999991
-30108  -85.2567877085986368    33.531099158606068
-94939  -122.53624182686778     37.9364335502874965
-65212  -92.3236668695652298    38.937862434782609
-27707  -78.9419094422201226    35.9586401776149316
-75497  -95.57434048367206      32.9252910558781338
-49636  -85.9814830808572168    44.8853498675109748
-30807  -82.648046803921531     33.4526427352941198
-49129  -86.6929862336710499    41.8253686103603783
-63566  -92.9814718761221002    40.0598633770198091
-75806  -96.1445604375000045    31.3710912499999992
-71722  -93.1836852699275227    33.6998036829709946
-95833  -121.50534722142396     38.6167419574037396
-04478  -69.7912690061033629    45.6938257605634632
-66035  -95.2477185647145035    39.8675116225596469
-62640  -89.8143706600238261    39.437150013351939
-20850  -77.1806453697401196    39.0903792767170515
-48074  -82.5543532828721567    42.9539281007148404
-54241  -87.594462720819422     44.1907126265522336
-62854  -88.8235086956260744    38.771657913873355
-48417  -83.9293670529903579    43.2568944231642689
-12124  -73.7893521686274738    42.4437202764706143
-54548  -89.7968451739707945    45.8701709131885096
-81332  -108.051130583333418    37.6929515215054067
-97023  -122.295815796963467    45.2676565704468103
-25562  -82.1033847450980261    38.3362530784313833
-05356  -72.8638651811703966    42.9540139969993078
-28658  -81.2380782778051866    35.6453771095908394
-35057  -86.9479423507029594    34.1374806243968862
-15681  -79.4527986211626569    40.4953034395592368
-46219  -86.0459454670977379    39.7844203788079156
-06111  -72.7298084629941854    41.6860760703616364
-37757  -84.1615991402422026    36.3138589403175729
-22214  -77.0722904     38.8687293999999923
-00927  -66.0716577272192609    18.3891911704879867
-50259  -93.0884404583333236    42.2909555416666763
-68198  -95.9781263333333214    41.2556730000000016
-37626  -82.5338847999999956    36.0459579999999988
-36371  -85.5471817738853275    31.3129446735668573
-37328  -86.3707781401053296    35.0264672852138759
-93950  -121.922845005282724    36.6183069017804925
-63751  -90.1121584868421621    37.2737040614035067
-27406  -79.7698448081086013    36.0124038315537831
-54858  -92.4549057419552582    45.5200152995049905
-11239  -73.8770046587678024    40.6510271800947507
-76448  -98.7964289319458118    32.3960656771365549
-76874  -100.071346785923822    30.4744623401759434
-67850  -100.67389365454541     38.6272384670454301
-28613  -81.2137560455107206    35.7401512844163136
-56162  -94.6757436621848143    43.8384438235293956
-37372  -85.0797136666666773    35.4335728888888895
-28334  -78.5794218995136475    35.2875972957224064
-62294  -89.8851037101120056    38.718681712022466
-58566  -100.915583504488481    46.5929401418312139
-16859  -78.0118093505383712    41.0316534819903751
-29306  -81.9268259804361918    34.9077828423717946
-22114  -91.7074253333333331    46.633151666666663
-17360  -76.7504183304298522    39.8543989984002351
-24581  -78.8105950280898639    37.6438921011236118
-96863  -157.752405127272709    21.4421455454545473
-66608  -95.6690753530498341    39.0777528983363709
-02066  -70.7555755915770845    42.203332957156789
-50126  -93.2596534150296321    42.5136797944991258
-24957  -80.4032637922794322    37.8740491856617822
-92283  -114.633044813366354    32.7825605269801699
-43913  -80.6321127537814846    40.2660689075629961
-58331  -99.1048812378753894    48.6426793775982063
-56579  -96.2752454788584089    46.4750312246299586
-27572  -78.8817793366259394    36.2521754916194752
-05826  -72.3983326725933978    44.6423772178758185
-21501  -78.7918619166666758    39.6770666666666685
-16321  -79.397171139751606     41.5801646801242484
-29117  -80.8475899999999967    33.4974814999999992
-57631  -100.286470044160311    45.5737084671702704
-57058  -97.3917970987816375    43.7461028173734832
-17545  -76.4214007740375223    40.1720715188018076
-85627  -110.278650687116411    32.0086306711656263
-91874  -117.674930000000003    34.1254908888888906
-17724  -76.8267539384199409    41.6463216580931856
-18249  -76.1032245859717165    40.9910424523350869
-99687  -149.660814541710977    61.537071354010628
-28077  -81.2019361019107748    35.4044096592356539
-84101  -111.89964679800832     40.7552313655760585
-51040  -96.0775351049065449    42.0248306342309164
-41837  -82.7534671633398773    37.1299483789089351
-01298  -73.8941788214285822    44.569561607142866
-89154  -115.137472500000001    36.1075992499999998
-96113  -120.143136692098153    40.1416719700272324
-97499  -123.2509542253853      43.6101899894723957
-32720  -81.3447811711674973    29.0266331171554981
-39301  -88.6226832913194045    32.3143088379628551
-72760  -93.7166093212435101    35.8276956796200494
-61541  -89.2385395111111137    40.9796511333333129
-14856  -77.3697674583333423    42.3783163750000114
-47725  -87.5255128631095118    38.091685606034531
-47843  -87.1329819999999984    39.5213674999999967
-14712  -79.3709326347059942    42.1661470396102374
-61488  -90.3134755154303122    41.0266635116404501
-39703  -88.3483793333333267    33.4461619333333431
-98155  -122.299471167300823    47.7587449420840571
-71259  -91.8237965895038855    32.2898130183320831
-02662  -69.986727645454522     41.7432749613636105
-53544  -89.9079822886041171    42.8790536850191728
-32948  -80.6109116764876319    27.7760586694866198
-64112  -94.594806707668539     39.0368775846628324
-69038  -100.655704917282165    40.635218415066511
-28729  -82.6035946073661194    35.3188864564288849
-25564  -81.8803982948979581    38.248154891836748
-36764  -87.9892141188119439    32.0907508514851472
-08092  -74.2863588567913666    39.663994348425291
-25914  -81.1436871875000065    37.9336009999999959
-87325  -108.724224242857105    35.7302655657142623
-51015  -96.0794242619047765    42.3396007380952284
-03458  -71.9433198497121964    42.8784478050820042
-65034  -92.8207041499290852    38.5225587703914414
-67492  -96.9634241958224692    38.8093035822454695
-15743  -78.347002785714281     42.1508841428571372
-13693  -76.2540247837962681    44.0227819467592383
-29952  -78.9426443333333339    37.9394925000000001
-62694  -90.4558035105605143    39.6219875505603554
-15767  -78.981555348363699     40.9608441581400697
-24701  -81.223394757361703     37.2894263295206585
-18122  -75.7917714285714368    40.750555999999996
-87356  -98.16261066666668      34.7495806666666667
-91367  -118.62086121009844     34.176408939390619
-18957  -75.7648335172413852    41.1187444367815971
-15207  -79.9325776761809692    40.3980252295109494
-13068  -76.3491030062233165    42.4966155455075523
-45214  -84.5406658639434312    39.1214065356265337
-01572  -78.985036000000008     40.7126075000000043
-68331  -96.7106872821661767    40.4777090675894584
-04576  -69.6664182918804897    43.8190426054935642
-94576  -122.483612585227178    38.5541936519886406
-61433  -90.1393436500000149    40.5693944749999886
-04476  -68.7069060889087524    44.4722775931746668
-07758  -74.1061864140715016    40.429264377162653
-98521  -123.126871666666659    47.3131256666666715
-67056  -97.5194532548121771    38.0094930192484952
-97128  -123.229342332490404    45.2089709550199643
-61244  -90.4245377152114997    41.5112079341181257
-14757  -79.4920445493109185    42.2326894602334164
-93208  -118.603911054528751    36.1418797347505034
-78622  -97.7680142883211261    29.7614294781022011
-65830  -89.6507504444444407    36.1842483333333291
-67332  -95.2235597046263393    37.0494870355871839
-37885  -84.208193977236192     35.5521478060433367
-03780  -71.9861540982659278    44.0331285375722175
-28364  -79.3085140685880674    34.7243713553529787
-31567  -82.715391786137161     31.6197401563820506
-15712  -78.8575630000000132    40.7768270285714252
-85121  -111.902750978260883    33.1233691666666701
-35125  -86.3017222948552103    33.6138568132171969
-38673  -89.6150622792792149    34.2920554837837415
-63787  -90.1145517933426561    37.1149382330096671
-65557  -92.1342175420560636    37.5140029976635958
-99737  -145.633812881554263    64.0633661991701615
-76053  -97.1790662586975174    32.8191554752946146
-16938  -77.3297652376618601    41.5595481026881828
-92037  -117.254849230103204    32.8393477993584781
-37919  -84.002577383395959     35.9191638079383466
-65072  -92.7243933090132231    38.2572203133047637
-08850  -74.4393050654166046    40.4496440179167109
-11215  -73.9842766633858844    40.6674331286088986
-22305  -77.0658486152413786    38.835935821561371
-14735  -78.103509778837946     42.4619953935685643
-88128  -115.259147499999997    36.1874995000000013
-94104  -122.402106290540502    37.7917146621621498
-30246  -81.8371080000000006    30.7853509999999986
-65068  -92.5962673384161548    38.8265457629119624
-69735  -102.878171999999992    30.9150378000000003
-79930  -106.457210018456067    31.8040323886515992
-72654  -92.3760843589743814    36.357085000000005
-47337  -85.4382287065217554    39.8023527880434713
-66251  -94.6605221999999884    38.9156693777777818
-83125  -110.204137500000002    42.253815000000003
-72110  -92.7587190384618339    35.1622924858842083
-10921  -74.3601506413748581    41.3271708128615103
-45042  -84.3971455527840959    39.5360829918397769
-30001  -80.8313427142857108    24.8106533571428542
-62827  -88.0466985647175022    38.1656018305846914
-57103  -96.6909124067685894    43.5329621174054964
-23399  -75.6572135000000117    37.9293759999999978
-80023  -105.028568252502183    39.9671888505902189
-75462  -95.4855515851296417    33.646837569504271
-55955  -92.7389468778134756    44.0776218002411611
-19122  -75.1448409056952471    39.9775362015533204
-38756  -90.8915709537828178    33.4009378629312792
-16313  -79.1370927082184323    41.7477920117667622
-28672  -81.3231462732166648    36.4756280148048688
-93438  -120.492995499999992    34.6958747500000015
-81422  -108.570849096446779    38.2586321551043369
-49855  -87.3880275884751825    46.5202409602256211
-04954  -70.0883613493976156    44.8827494879517985
-00778  -65.9798276232925787    18.2462773634076392
-53597  -89.4523774065575736    43.1825447747014479
-86412  -113.891489505376327    35.3232297956989285
-63068  -91.2310310648883132    38.5566168535751075
-37189  -86.8295994401734248    36.2756859745927471
-67639  -99.3106403180328812    39.6553635770491724
-48661  -84.2171420896300305    44.2954406129456331
-79071  -99.2318255555555453    28.7314164444444415
-06896  -73.3967551132735281    41.3039683762164671
-19539  -75.6911020216207504    40.4880153654822905
-93101  -119.710651111111019    34.4193467239551083
-15935  -78.9610809876577662    40.2143245094976365
-53960  -89.2582182597864175    43.4518102147093828
-08023  -75.4897783063583176    39.6844685549133018
-29464  -79.8559538367988182    32.8190276382036927
-59102  -108.575297247667649    45.7794815885517323
-36723  -87.2894305714285252    32.0715073714285523
-45229  -84.4876730451075559    39.1514239434419764
-95917  -121.688276953967204    39.4155500950049387
-58324  -99.1946580232230133    48.4620329206026952
-23313  -75.9540638472222298    37.2075712361111144
-39109  -89.3560485476190394    32.6838775952381013
-15206  -79.9167541865092232    40.4684607445218418
-07836  -74.7081254747809567    40.8488664947550006
-97458  -124.081411048625355    43.0675572801895044
-06513  -72.8730904325183246    41.3179429806603764
-41009  -85.1309143947368341    38.6171748947368343
-47853  -87.0730863007518678    39.5372501203007758
-55971  -91.7444776156891351    43.8145604926233929
-61336  -89.244936740549818     41.1144757268041303
-99922  -132.825141275862052    55.2079796275862265
-90501  -118.31564830127482     33.8274575950819951
-88116  -103.680006410687625    33.9255505341707249
-78552  -97.7512825628117241    26.1858297877004809
-93225  -119.032257373587555    34.8182933708004398
-50562  -94.648316944476818     42.9534173565167166
-16210  -79.510844119470903     40.8981143661650748
-31046  -83.7763586046792312    33.0365504012521924
-61613  -89.5892859285714138    40.6942747142857186
-60604  -87.6284032232142636    41.8726468571428327
-54463  -89.2051015944529269    45.5016399387754333
-36109  -86.2429164626456526    32.3829615375351807
-54550  -90.2537965147479468    46.4132153948620996
-53202  -87.8997326774357646    43.0471589020605094
-65669  -93.2975747251171015    36.9157819541342533
-98225  -122.492509931476548    48.7475752987179831
-44657  -81.0941058993901436    40.7380049186559816
-17319  -76.7937286226056415    40.1562748748922971
-68952  -98.6694508604650906    40.0875660523255917
-25838  -80.9956618000000077    38.1957468142857195
-15030  -79.7818277399703817    40.582949600297205
-28056  -81.124824041977206     35.2206000257862897
-71960  -93.6995940576140498    34.4721756017914203
-43464  -82.9214627323353142    41.4081567688623835
-37110  -85.7836082771795816    35.6897975179720888
-14086  -78.6571654233077595    42.898056013536916
-25158  -82.0191061382979001    38.6626968085106384
-62332  -88.9805319999999966    41.1908619999999956
-83452  -111.158290359256711    43.8232422539069546
-62796  -89.1903858571428572    37.2543297142857099
-38352  -88.5339054366425273    35.5327171152841146
-59018  -110.598390314322032    45.8900927709126165
-29816  -81.8726410836653571    33.5011055258964134
-14590  -76.8320120142753069    43.2456696240018132
-29680  -82.288142528910285     34.7038075183970989
-68516  -96.6469208757874014    40.7457412601401785
-03862  -70.8267589653310523    42.9829719585901415
-84730  -111.991571947368286    38.7650760789473239
-31010  -83.7737455833333371    31.9364797499999931
-13137  -76.4467773749999964    43.1571848749999987
-40873  -83.4074159162350384    36.8267186366128314
-63363  -91.4664714206793263    38.869077789069415
-07801  -74.5509654795950212    40.8937646842678859
-94023  -122.118053625000002    37.3976242499999998
-88338  -105.377163234987023    33.5046379660574161
-50858  -94.4245062434738855    41.2070408214010087
-72450  -90.5362049798236228    36.0644086950711724
-89425  -117.895944393103406    41.5675505425287142
-58649  -102.914439731281831    46.1228345471451391
-46961  -86.1930213582089522    40.7650634029850778
-67861  -101.385287082212429    38.506716768310902
-49876  -87.9922734915014786    45.8020511798866607
-11224  -73.9922494556041102    40.5764788762736686
-06712  -72.9777001384708655    41.5026135927100839
-12604  -73.8921698426966174    41.6870496404494446
-26541  -80.0893621031193419    39.6775087389230592
-65074  -92.4542894069915917    38.4823024525547766
-94030  -122.403864253873707    37.5985115467856019
-41083  -84.9808306296470022    38.6810514787099677
-79854  -104.594987795454514    30.5879419068181768
-22732  -78.1923548488576898    38.3104709332161733
-61057  -89.3907196279069893    41.8315137441860472
-04043  -70.5518274528915299    43.3889348057833857
-10030  -73.9436737399999942    40.8183828000000091
-45730  -84.0038019166666601    39.6251893333333314
-17345  -76.7267548395576142    40.071021036117962
-60401  -87.6165748615147493    41.350229577816414
-72948  -94.4045373287341931    35.6896058339650892
-61706  -89.1197905000000077    40.5129104999999967
-82952  -109.969000333333327    42.9374056666666704
-33312  -80.1809232244409031    26.0920061932940364
-70516  -92.2958190680851658    30.3695088337153081
-15739  -79.1679494117646811    40.6772395721924909
-01503  -71.6360138851852355    42.3839001846152996
-99361  -118.125687770433373    46.2117281465885412
-46501  -86.2491771191104135    41.2230334937807967
-17834  -76.4713871384206954    40.7916843141082879
-76225  -97.6825304740939657    33.3632677110361442
-50466  -92.5460635667669322    43.3696130294060254
-33023  -80.2124906424071753    25.989018183994876
-36045  -86.3555042500000098    32.5061949999999982
-53181  -88.2518484204925784    42.5196826196826407
-54850  -90.7331946286920186    46.7890544219409037
-79528  -100.591881713950883    33.2209626934349913
-06488  -73.2242922560601812    41.4721596056017034
-76300  -99.2277683750000108    33.9747067500000028
-95126  -121.917501732133246    37.3272509453889185
-71452  -92.9709940736196359    31.6017766503067428
-87943  -107.673449209677386    33.3894648817204214
-33301  -80.1307139448818191    26.1213143083989863
-12416  -74.2925248142457804    42.1012696270949576
-77057  -95.4892482310438311    29.7470203169788867
-72611  -93.3115081595631892    36.2758125733239964
-08804  -75.0935137553112213    40.6427594533383356
-54149  -88.4977179542391212    45.2154421519002554
-78416  -97.4347652253445631    27.7530062987805586
-72386  -90.3496695425014167    35.4625182984855343
-33187  -80.4692201042852986    25.5996392442169309
-79560  -100.197060502358497    32.6884334999999879
-96091  -122.726878993126377    40.9860856878408271
-49861  -88.1302919900630286    46.5368591323220357
-33329  -80.3249022500000081    26.1004359999999984
-38585  -85.4378697560384666    35.705928602256165
-04344  -69.8034309000297242    44.2552106947493442
-16727  -78.5398295059665799    41.9840026300716005
-84121  -111.809004430043302    40.6255554243681658
-38635  -89.484898612551774     34.7764586253816717
-80610  -104.714244868243199    40.5993783921989859
-55114  -93.1977397440904127    44.9667080719424845
-14760  -78.4204997897984128    42.0783391106164544
-98372  -122.268092552023234    47.2040614463509485
-70571  -92.086738249999982     30.5464574000000013
-89178  -115.278031040387376    36.0121608595853004
-86024  -111.143129380836115    34.6406411425083505
-92036  -116.559977021875326    33.0379186568672196
-87311  -108.529378112656616    35.5844653124710106
-50049  -93.3035749008166846    41.0381797695412729
-79079  -100.278047384035247    35.2440988904656862
-86535  -109.84377389473687     36.8472653157894712
-81658  -106.729811625000025    39.5122119166666508
-79009  -102.757889287258038    34.4732453691936414
-80805  -102.436306786692711    39.337266985322934
-91980  -116.630071170839429    32.5905639837997185
-27882  -78.1275829585219554    35.9453478552639538
-14512  -77.3926334717793054    42.6451654005458707
-53579  -88.8433244538259146    43.3084789050131533
-65692  -91.7156229202160773    36.5552774220156422
-98444  -122.448169976663536    47.1523529903207645
-80476  -105.811471793969858    39.718121569095473
-34984  -80.3423492149013043    27.2648893580665934
-74058  -96.7781573415330314    36.3366178199643812
-30018  -83.8000724411764395    33.7167542647058838
-46998  -86.3480718214285758    40.5707647857142817
-63065  -90.4822612499999934    38.2488278750000035
-13437  -75.8102767955843859    43.5595108123334214
-14551  -77.0486179147097801    43.2182563218110758
-76208  -97.060868530159965     33.1961844050061146
-71326  -91.5786749175674402    31.7569337804054257
-72301  -90.1809085487288655    35.1484752305670014
-28552  -76.5812271752432849    35.3073653310152977
-75644  -94.995169741957838     32.7719666405705112
-97118  -123.906297867729862    45.5669124756097261
-13408  -75.6613474807469117    42.918321051925389
-66959  -97.5433142999999205    39.9361802789473828
-58267  -97.608732607657231     47.7615124770291359
-72438  -90.2409491113612887    35.9440421680077549
-03604  -72.3903150000000153    43.1272731948051913
-61013  -89.6356734908424642    42.3742523772893804
-74869  -96.7699909035769252    35.589103860031102
-52149  -91.6742737499999976    43.4554303088235159
-13155  -75.7757343908256331    42.6575201785931597
-15832  -78.192428134783782     41.3753944054817921
-26729  -78.7275579999999877    39.1849915000000024
-55710  -92.6740771429646344    47.6515153801094797
-66611  -95.6981824426076315    39.0141852987717854
-88246  -103.406445916666655    35.3706812500000112
-31624  -82.7355035814779143    31.3153003872216757
-12989  -74.0548068126853991    44.5042324543569663
-86002  -111.977996615384626    35.2463231538461557
-73159  -97.5571761480045865    35.3862531754753107
-35091  -86.7921475338809785    33.7758676627309242
-08904  -74.4244379865880603    40.5003619093346856
-08753  -74.1584358502199734    39.980261646649808
-77844  -96.3743194999999986    30.6619165000000002
-58385  -99.6654754075122185    48.4999161509567998
-95470  -123.216527354327255    39.2925481073316618
-87192  -106.516063333333321    35.0996680000000012
-08556  -74.9848971326530886    40.4304667448979558
-19104  -75.2009031668862917    39.961108608695632
-63935  -90.8201670642704642    36.6279419509595172
-46958  -86.1163224044117612    40.8225988676470521
-72357  -98.1910070000000132    34.0687245000000019
-76484  -98.2767700486457016    32.6907502841348645
-92322  -117.325438302266079    34.255165169730617
-64139  -94.4087219637979445    38.9608267739071294
-11209  -74.0306178120162741    40.6241737164314927
-83705  -116.224222589862492    43.5822061924264545
-53941  -90.1403719753266444    43.5518641843251402
-37643  -82.1810088219371693    36.3537586559738344
-54649  -90.3806922222222227    43.9599463333333489
-55411  -93.2983865467518712    44.998461583552519
-00775  -65.2886049017633212    18.3028177254407929
-75962  -94.5906846304347226    31.6010467246376763
-63302  -90.3437508333333312    38.9258998333333253
-29178  -81.5842178238625593    34.4796986076150631
-04284  -70.0578463499620483    44.3500159389719002
-95441  -122.918575594109114    38.7239278394909263
-62440  -88.2635874077216016    39.3962840657615558
-65635  -93.7026439551357129    37.5098213978748305
-18616  -76.6291016834410073    41.5274413007429004
-68040  -96.7375876543951279    41.2734807678436937
-27964  -75.8000584902997758    36.0871276084656074
-26639  -80.7975242857142888    38.575837857142858
-56431  -93.6818744424242453    46.4927978336246284
-62951  -88.9266918260506287    37.8209679802330072
-93529  -119.093146133616898    37.7728873293617013
-33966  -81.8358109946899788    26.5745909287311406
-83178  -114.937283000000008    44.2159674999999979
-48118  -84.0361848023960505    42.3226162104419146
-73528  -98.6620151068182309    34.4284458772727646
-73089  -97.7552560533667929    35.2776988440897199
-87210  -106.782940800000006    35.0022577999999953
-20186  -77.8293773448486235    38.7049298382603979
-49705  -84.4570860554710521    45.3461978837385544
-55123  -93.1332710078026054    44.8070215299089654
-57022  -96.7177039468199951    43.8323437731072332
-21005  -76.1361192877030817    39.4874365537509462
-17512  -76.481689674028587     40.0443746294200906
-27889  -77.0309295225221007    35.5607431469477646
-86011  -111.655112770642248    35.1863230550458823
-76117  -97.2703098549414165    32.8084619031053109
-06118  -72.604333246263991     41.7466362826373754
-50034  -93.6413361440674663    42.4997167063809158
-69028  -100.036381564162468    40.6827514955670466
-21090  -76.6605080595990813    39.2090493944375567
-45693  -83.5321452576243644    38.8047586956185455
-50212  -94.0461343854031071    42.033827593469816
-16689  -78.0865920813307213    40.1010784722734641
-68372  -96.6194385289492885    40.6197220207291423
-87364  -108.7197125    36.1394210555555588
-55974  -91.6388322606909185    43.5778617842897447
-32233  -81.4121617480490727    30.3468391346289934
-35959  -85.6073010283674307    34.2398330091221794
-99705  -147.372519347995251    64.7812019167526643
-49453  -86.1831315881201618    42.6626159957572284
-56147  -96.0416708220857913    43.7556116574642076
-75149  -96.6071192213860286    32.7655949172367329
-23180  -76.6324694567900622    37.707572040123452
-33454  -80.1375323333333398    26.5894226666666675
-99114  -117.81583014813674     48.6025426813720642
-94578  -122.124865477059373    37.7037534726406705
-66617  -95.6389876168773014    39.130273393922792
-08833  -74.8222405788001339    40.6522745943210353
-78412  -97.3541511861845379    27.7090155605006885
-70661  -93.6714135279871414    30.3492929355155709
-45750  -81.4398297535437479    39.430019468970869
-55709  -93.3849799222379033    47.3951752231365759
-25306  -81.5223153205204909    38.3109986501085018
-10706  -73.8731236868328125    40.9897801400841146
-49837  -87.0603095717453215    45.8592245002220054
-02155  -71.1092545026294118    42.4212266484135228
-47630  -87.388506350577245     37.9676968902831078
-74035  -96.373891166548745     36.4048705366831911
-99760  -149.040920761038848    64.5498421714285939
-76367  -98.6787034482102143    33.9470249848746377
-15868  -78.4653776244078074    41.2849510909982413
-78945  -96.8862291613155548    29.9202613071599046
-39309  -88.609332474999988     32.5519428250000118
-57928  -112.419576666666671    46.558817833333336
-88215  -104.773055857142865    32.7126098928571452
-95961  -121.556016365965874    39.0577009354177349
-48401  -82.6329023567347178    43.3578588326529939
-37351  -85.2637343095238407    35.104323129251739
-88357  -106.046589999999995    33.0385343999999961
-63104  -90.2158929124833691    38.6125597873570854
-30912  -81.9890751176470474    33.4703476470588228
-50002  -94.6471352201438094    41.4990277422404716
-31719  -84.2703019208931323    32.085702962941042
-79407  -101.99689052273061     33.5596497775029192
-48612  -84.4103515739233501    43.8733186541794637
-98942  -120.565892835027356    46.7026882913035593
-34347  -85.5977304285714098    35.0567302857142877
-08050  -74.2638635198729133    39.711069046814238
-05748  -72.8812624043244597    43.9258277778377604
-98023  -122.363221226757901    47.3085400182366129
-49877  -87.7849510000000066    46.1044839999999994
-22930  -78.9683656923076853    38.0763657307692327
-66759  -95.9375064500000008    37.5685760000000073
-21861  -75.720445251604616     38.5375683465982135
-39038  -90.4749804264318129    33.1760519298090628
-63942  -91.0169778166667101    36.5565574333333174
-55847  -91.5537499999999937    43.9597706666666639
-95562  -124.105992289934463    40.4942576805251591
-06525  -73.0149053293894639    41.3528431139373183
-51533  -95.3675436152345384    41.039103240625046
-04686  -67.6532174202899625    44.935624499999939
-08348  -74.9573866018518657    39.3087855231481242
-57477  -98.1943102158673753    45.0461487905904718
-95651  -120.920569924010408    38.8112645957814593
-66743  -94.8690826326142655    37.5049563717778156
-63774  -89.7723130701754428    37.0958204385964905
-57576  -100.282135866261342    43.8435289817629297
-53931  -88.8677370161290128    43.7421116532258125
-59828  -114.073425003248943    46.3194081556087554
-54767  -92.2151710000000833    44.8676180780984808
-33029  -80.3983279316673247    26.0022000334952743
-41605  -82.6273449927095811    37.5541002065613156
-73444  -97.370301685975619     34.4799390792682914
-74839  -96.0496012273475941    35.2532903031301572
-85337  -112.764275973941309    32.9693819486970909
-11779  -73.1130731416394894    40.8204219908040997
-80203  -104.982563157875433    39.7315207451124337
-97820  -119.05427901134172     44.2815096408318496
-32806  -81.3601147178189592    28.5136580289060539
-57255  -96.9336851350648772    45.8579519974025942
-57053  -97.1409440237978998    43.4089851542222505
-02631  -70.0737843002391969    41.7495910108723081
-29406  -80.0351330496392279    32.9325992105536614
-57571  -99.076981254901952     43.1033215098039335
-78836  -99.6134395465116427    28.3482928255814137
-01151  -72.5063451564405739    42.1525957728739371
-68309  -96.5726983706896647    40.0471421465517139
-12502  -73.6530898595767241    42.0753273959878626
-62584  -88.701257499999997     38.7232863999999992
-59710  -112.089588788959233    45.2346815388155008
-35050  -86.7295546666666723    33.2048786666666587
-61833  -87.6447952877292522    40.098042241889992
-15857  -78.5452149629885099    41.436361843423974
-28611  -81.7281143988793133    36.0082629717422122
-84079  -109.39889226666665     40.4743063333333311
-72722  -94.46343857541234      36.3360144390411222
-01224  -73.1973723804878347    42.5070259268292858
-82723  -104.389125989443386    44.0545137888675669
-54810  -92.3989727379860568    45.4612926338673873
-37891  -83.1381228728110102    36.2783151585040571
-12638  -73.9084436666666704    41.7524183999999963
-10974  -74.1901068797118199    41.1592554711751646
-08353  -75.2994107362636811    39.4589031501831329
-28733  -83.7742611472392014    35.4281064723926349
-33498  -80.2165173815102435    26.3913373169226553
-29488  -80.6627707281141824    32.9115450673516392
-55317  -93.5485097956672149    44.8630380676780334
-33871  -81.5152929999999856    27.5210829655172411
-14135  -79.2199679729730235    42.4980667432432426
-28213  -80.7352992275909713    35.2856410225155628
-95644  -119.648621529411756    37.3114347647058864
-49838  -85.7088047692307811    46.0975436923076956
-97920  -117.723223666666712    44.000797374485586
-16242  -79.3580681202229243    41.0226023570484628
-39071  -90.3100437870306365    32.5398911052900814
-99703  -147.662096669609127    64.8350657490542375
-02125  -71.0624199554778784    42.3156350506327925
-79770  -103.902667792207779    31.8887249350649427
-27009  -80.0783174636606532    36.2298551750222728
-22443  -76.9873201085696905    38.2125117037608675
-53596  -89.2634231666666693    43.1928386666666668
-13202  -76.1504530094548642    43.0440903542825168
-92631  -117.688342500000005    33.6318800000000024
-04644  -68.2525829999999871    44.4141148000000072
-68402  -96.8458111988072261    40.9044015417494933
-05055  -72.3056130194381552    43.7468242303719492
-25121  -81.9017599882854199    37.9306675804046947
-46050  -86.362229414862739     40.1976874269135465
-41547  -82.094412370395716     37.5405993799454052
-78626  -97.6341013834665716    30.6506260293655259
-42059  -117.103572     33.3621449999999982
-05751  -72.7880182180919633    43.6533857760109072
-27214  -79.7067067880205826    36.2048998700614746
-79025  -102.208324985294126    34.9248478235294186
-67012  -96.5323558917525872    37.6608625309278295
-31827  -84.5468161818665465    32.6815354137469285
-52242  -91.5472692708332687    41.6593664427083397
-69142  -100.297140349397637    41.9688989759036417
-58579  -100.789926216805426    47.2301607759262794
-46071  -86.6027015404649916    40.1205698950710499
-65689  -92.0872041781239403    37.1607053822182039
-34233  -82.4732688848340985    27.282922951436209
-92123  -117.137376108831475    32.8031813628082674
-75764  -95.1652951609194702    31.9035242471264588
-30313  -84.3973039639888754    33.7606525955678194
-63830  -89.6725496369506772    36.1689469496124332
-73852  -99.1988513425414595    36.4453508342541497
-12784  -74.6241698832487401    41.6723126802030563
-27540  -78.8392497257949145    35.6346352738314849
-36738  -87.6130429019867591    32.4301338874172203
-54437  -90.5996121537132524    44.7657464110535628
-43106  -83.4194849185318787    39.6395632452999891
-79741  -102.602694949238639    31.9932551218273851
-32839  -81.4047400473305629    28.4880874358054115
-72584  -91.8675780401459292    36.1401345109489256
-61743  -88.7872978758991422    40.8712374460432102
-59402  -111.189774333333332    47.5147586666666726
-79366  -101.682855208820769    33.5321119531952476
-79508  -99.82379857641304      32.2795733377529928
-55388  -93.8474382476724713    44.9539553489933539
-17022  -76.6111768375822777    40.159972269454677
-72324  -90.7492743066310652    35.3896242921308328
-27925  -76.2447317880394735    35.8959551350924713
-57541  -99.9008224208144213    43.5465352036198823
-40258  -85.8651391703687352    38.1445288631783441
-39737  -89.3282317668268462    33.6601503413461529
-82052  -105.353183768392384    41.1231365395095096
-19721  -75.6086791818181752    39.6831009090909035
-64081  -94.4099058021768514    38.9091148178859143
-32792  -81.3007411211368378    28.6094308964771997
-47640  -87.482912272038277     38.4756933925009363
-68318  -96.6656442466870232    40.1465299633027115
-54763  -91.9085980762852017    45.2148822537313393
-31519  -82.8814558016462115    31.6576563603693479
-70535  -92.4167431165976581    30.4830643555566532
-55124  -93.2004110015152065    44.7441660201597031
-49094  -85.1309071589921729    42.0563640738487976
-96818  -157.924340636658854    21.3502779573794754
-16258  -79.2752806972168713    41.2212874088595314
-26838  -79.083690121951193     38.8269994634146229
-45673  -82.8136146275071212    39.202955661891103
-22842  -78.7166865206344255    38.7840936043932061
-66956  -98.2113572448718202    39.7889705782050598
-38917  -89.9626689812096743    33.559406700690829
-49873  -87.5260208589743485    45.9463142692307613
-24438  -79.822594590909091     37.7554153863636373
-28815  -82.2923572727272727    35.648178999999999
-35610  -87.2424268443739095    34.9502577640893506
-29138  -81.7602412753424659    34.0340975261989769
-60918  -88.0256460378787011    40.5994311076554553
-68929  -99.0412576547618784    40.1076360833333254
-31215  -83.5297053999999974    32.7220858000000021
-77876  -95.8540979956140404    30.6327769692982415
-48312  -83.0024741549865013    42.559525235144271
-24175  -79.8984992226357917    37.4246328211462469
-95387  -121.256692840048771    37.5326640915750858
-75477  -95.7425451139534971    33.5445196372092909
-23703  -76.3828717007219353    36.8661839519500418
-41219  -82.9036063898151383    37.9245870330779837
-39330  -88.8396302862899034    32.2035187253320458
-75242  -96.8028110000000055    32.7790073333333396
-32650  -81.9359710000000092    29.7793344285714277
-32326  -84.3679506634146463    30.1810054926829245
-28553  -76.5171186583333309    34.7274172020833092
-17801  -76.7568942213924714    40.8454949552585234
-60130  -87.8102433669696012    41.871669614545489
-99841  -135.237631673913086    57.7859730000000198
-14889  -76.5823484436571533    42.2154844601889181
-98675  -122.421246599098794    45.8593722319632633
-15784  -79.1329344606741643    41.0271698932584457
-79544  -99.8534997055554641    33.3119631477777531
-04992  -70.1555063893805482    44.6617313716814124
-77395  -94.9258853333333263    29.4783309999999972
-43319  -83.5780476389856091    40.303434095972186
-89703  -119.78800992936651     39.1723626814723644
-13205  -76.1444448114855703    43.0079748567414697
-13402  -75.5025481532614009    42.9027739415766405
-87530  -106.189122357945422    36.3225057736757933
-43234  -82.9413935000000038    40.0867915000000039
-86529  -110.849233666666649    31.9610239999999983
-12570  -73.6797202351639982    41.6155844740140921
-15687  -79.3310107757268952    40.1402310630170831
-27301  -79.6678739686248463    36.1059948464064959
-15670  -79.4390590385824851    40.4071742224760015
-50481  -92.8914875806451761    43.4425909677419355
-40442  -84.7295665800713209    37.348095525869148
-74764  -95.1035680610412726    34.0245688456014292
-23836  -77.3477375634387556    37.3448995944664048
-26547  -79.8034706267040121    39.5088871558533299
-27249  -79.5754268618755844    36.1375063201279403
-37075  -86.605408573167324     36.3198713089350562
-56257  -96.4114641656276063    44.9849035761353306
-47654  -87.3902089599999954    38.2547006000000067
-56120  -94.7991935493458584    43.9675995969084425
-21921  -75.8551598980590285    39.6268285928036903
-89826  -115.431251774999993    41.876881449999992
-95571  -123.91526821330288     40.3199965665137299
-47558  -87.0430937590469966    38.6626130691380681
-63780  -89.5200292705291076    37.2019333575166016
-14903  -76.8651437529686063    42.1257236491269609
-17110  -76.8757773985298343    40.3145344259648226
-98310  -122.625486512538643    47.5914856044329966
-43078  -83.7677795770419635    40.1090823686453319
-72802  -93.1011646230256815    35.3107582848414125
-55323  -93.7406720000000035    45.0821109999999976
-77879  -96.5566748885934629    30.3699815212076274
-48313  -82.9967007369018575    42.6013083527903689
-39470  -89.5667471579968861    30.8142005196604956
-41821  -83.0047535087929589    37.087612533573207
-58042  -96.9184138144221805    47.0031445683988025
-21528  -78.9022842631578953    39.6532963157894685
-89447  -119.155382760068363    38.985839193724857
-86315  -112.311463898726046    34.6789603249836489
-37391  -84.3533893504700814    35.093755200537295
-83860  -116.539612170947848    48.2058031449950661
-72472  -90.5268167206523202    35.6464364450193685
-30580  -83.4386240903614436    34.6726268855421722
-08098  -75.3299608327068029    39.6410403750000953
-85210  -111.838725706006926    33.3880377493354175
-49652  -85.7731085000000064    43.866849000000002
-95258  -121.309205687913831    38.1573535943708961
-05731  -73.3240094668050375    43.7183250228215883
-93453  -120.34913956805697     35.353407666896139
-55347  -93.4606492681727161    44.8348423549302879
-18643  -75.8237787808285333    41.3492235385202278
-56652  -95.2355805683297945    47.7088236811280098
-03456  -72.2063567733990936    43.1368487850985787
-54630  -91.356121711693504     44.0841500473790617
-56243  -94.6792929192507984    45.1613986361159192
-67740  -100.415846796694268    39.3571709892561472
-67583  -98.3831472341819051    37.8132785696955054
-55783  -92.8147459407089315    46.3829047885482737
-22603  -78.2056125737443608    39.2713724050704229
-25565  -81.9392497502971935    38.12568430915573
-45302  -84.2054869732191804    40.3995480125871822
-61234  -89.9231441852091393    41.4142755353697893
-75785  -95.1669147287468462    31.7921049302339398
-25862  -81.0636585744680787    38.0808563404255267
-99460  -110.501458499999998    47.9359704999999963
-27235  -80.0058899330852284    36.0971141548062064
-98761  -122.198645500000012    45.6031305833333249
-01452  -72.0003001562021723    42.485517212098074
-55312  -94.3433614234998856    44.7201906414999613
-76636  -97.2817952872082259    32.1703854223652073
-24301  -80.7628089770560962    37.0562289726612519
-40508  -84.4984391141979501    38.0500021579161185
-63563  -92.0412178134328798    40.2759257835820819
-53586  -90.2353811432535196    42.5715560701133597
-61072  -89.0852964602707544    42.4499131815718798
-17020  -77.0411534583708999    40.4134514099191549
-03440  -71.961871938022        43.0580097303708129
-73537  -99.6588140501731061    34.4798231885812854
-18629  -76.122674552990091     41.5494736230128652
-49880  -87.216198341297158     46.0744505882718371
-72103  -92.381531551336721     34.5939898954545129
-49448  -86.0851965870544262    43.0841576526012915
-97375  -122.63569012981938     45.009354431325292
-76933  -100.296316531099095    31.8499739384057463
-06357  -72.2115284952214722    41.3227702022153736
-62692  -89.9348417350936842    39.579842386428183
-65334  -93.2415197049032258    38.8231310071974463
-95837  -121.597495682269653    38.6842807361702228
-57219  -97.764833221690651     45.3134979282297081
-38351  -88.4085899932094605    35.6558921231979937
-91943  -116.197549999999993    32.6127073333333328
-93599  -117.736374450980378    34.5619446176470504
-41232  -82.7500526967431398    37.9244508163373553
-63549  -92.5170968308663646    40.0206591142926982
-92266  -114.757830942065524    33.3741880277078309
-14516  -76.9172136383047587    43.2008698747978315
-97078  -122.875954275525515    45.482169562187245
-62802  -89.0860476000000006    38.5396543000000023
-62091  -89.6047625238093985    39.0564367567287292
-59648  -112.205226686130402    47.0611571332934346
-17347  -76.6902275955184365    40.0562118055157086
-66052  -95.0394482300776247    39.0115734478952731
-41046  -84.7998962408742472    38.7180480467332302
-96751  -159.366996730337121    22.0861469550561829
-99632  -163.734998267441824    62.0870018372093071
-36786  -87.5107278775113855    32.4492519196370921
-67342  -95.3567841452991303    37.0543836818613599
-15479  -79.7141289007424376    40.1516836971367042
-32689  -83.1377795000000077    29.3347671249999991
-95321  -120.158607102008219    37.8421253201992158
-13809  -75.3953601250396446    42.4052755232667806
-08562  -74.5920947624462372    40.0671653824713871
-94064  -122.238655499999993    37.5357389999999995
-40964  -83.3309048434782511    36.7847781304347805
-60639  -87.7553561110442359    41.9208170406796512
-28707  -83.0823727583480149    35.417993685413002
-53148  -88.3576938666666791    42.6497372666666621
-61567  -89.9030401033164281    40.3613485012755433
-29419  -80.0218259999999901    32.8595937142857153
-13290  -76.171053999999998     43.0683618999999993
-99551  -161.429149200000012    60.9081600000000094
-12850  -73.9755521247989378    43.0973804104803619
-29218  -80.5195530000000019    34.133050499999996
-12089  -73.3485259767441704    42.8610240697674385
-78374  -97.3290984920808313    27.8876281454578745
-12758  -74.7925386604606643    41.9098774755139516
-77414  -95.9033282770283506    28.9380254361332092
-44137  -81.5597878851062887    41.4114976419453029
-35128  -86.311046736065947     33.5523729243226185
-56082  -93.9842125730984748    44.3331621532100755
-63140  -90.3239913165888453    38.7394083200935242
-63784  -89.6869957660818642    36.9916526725146184
-55431  -93.3128301555619828    44.8293787100230645
-77069  -95.5241672441026708    29.9859606564646093
-98550  -123.930889799538221    47.0448448514482536
-61462  -90.6439149500080106    40.9194658769796717
-21009  -76.2994328790852165    39.472818939497067
-16373  -79.6967496014791692    41.2021263288427022
-72451  -90.5208264999999983    36.0765744999999995
-94054  -122.250773500000008    37.5240964999999989
-60407  -88.259497050174275     41.2324781637631332
-11223  -73.9729072713692801    40.5981150149377257
-66554  -96.7853412733978331    39.47905586198425
-97358  -122.562980424225543    44.7797757127740113
-75051  -97.0041334404871947    32.72698039196937
-49004  -85.566116846648967     42.3367617675402812
-36868  -85.0201647499999922    32.439831875000003
-32169  -80.8868181497453804    29.0161279534805914
-62006  -90.657236422077915     39.025223392857157
-27566  -106.096405000000004    36.069650750000001
-60453  -87.7526921230304566    41.7140572480530238
-74941  -94.8630127213114491    35.2696931092895696
-57423  -98.6741925999999978    43.3151665999999977
-10466  -73.8465331777873359    40.8915525733964884
-45716  -82.1801866374999435    39.4612082520833454
-19057  -74.8615962160238126    40.1435757649852007
-20617  -76.8457853085031388    38.5444481152495086
-80639  -104.698146799999989    40.4067944399999988
-28409  -77.8721631131174092    34.1595647430806864
-35768  -86.0769388512440656    34.7181792452446984
-29414  -80.0659578961241607    32.825995952075921
-29082  -80.9364567341773409    33.0316352675489426
-32746  -81.3479947839405639    28.7613591236898962
-62916  -89.5666937041147122    37.9291024111690547
-57550  -102.002728500000003    43.7193719999999999
-64741  -94.5618693493976679    37.8247698373493648
-43457  -83.4291545473681992    41.268107033436479
-43071  -82.3530355237106306    40.1830494232817728
-41835  -82.6722385099832309    37.2118640873544351
-71001  -92.8970357903683777    32.5907286915438945
-74962  -94.9569786864549314    35.5575914009197689
-17567  -76.1224744705882301    40.2147347058823499
-84003  -111.795963499941351    40.4064642433042565
-47807  -87.3999514952460856    39.4712267335651532
-24136  -80.6036015063185118    37.3236652180512607
-94626  -122.305093666666622    37.8180545952381024
-24946  -80.2528061639703338    38.1064187752514414
-71802  -93.5742772906976796    33.7544393953488324
-21865  -75.8448350805300038    38.3016550224261181
-57072  -97.1395018851028738    42.9501028019017852
-16877  -78.0898413890628689    40.7261700703503848
-62386  -88.5378455000000031    38.3595600000000019
-27946  -76.6159535073756643    36.3495579013521706
-18334  -75.426374087812448     41.0800443130536621
-97462  -123.37551833750193     43.4831923488095313
-43434  -83.4447986000000128    41.6939416800000089
-65216  -92.3237632499999847    38.9564131249999974
-18216  -75.9193832670025159    40.9312313274559259
-56025  -93.9048862062938383    43.7563118331669187
-52248  -91.9234860366729407    41.3472831474887812
-71740  -93.1808555738021767    33.0827247667453719
-83209  -112.425453184210497    42.8596375263157867
-60613  -87.6619691676413026    41.9536309392927009
-93240  -118.44032691116935     35.6243384317841105
-48472  -82.9595396284257873    43.5102968980241798
-55920  -92.6295519054858403    44.0234694656684837
-76861  -100.203196555555834    31.5860893006906203
-50277  -94.3523068204879962    41.773039139512214
-55987  -91.6423025524729553    44.0202043810753736
-64788  -94.003009206829276     38.4447256502438535
-60950  -87.8592517619481299    41.2507497816122068
-57532  -100.481597825195138    44.4053422177736081
-96104  -120.157215346797997    41.5116677083743397
-67110  -97.2367009258320394    37.4789388024601209
-19054  -74.8233466213578851    40.1693112679493467
-08242  -74.8780181708470849    39.0173448712730746
-10532  -73.79717754359244      41.1019423566176627
-46041  -86.5023940505304552    40.2910178249359987
-29101  -80.2446998343741171    34.419671053999167
-99155  -118.973361588120682    48.1708714079844569
-26674  -81.2225592727272669    38.1797720454545413
-38954  -90.2033356744445598    33.4126370966666713
-75429  -95.9392274285714137    33.1852092857142864
-86427  -114.590353126984112    35.0055137301587251
-48721  -83.327207218446631     44.8045820995146045
-56517  -96.5168000314961034    47.5494862244094421
-11580  -73.7036988581248096    40.6754960338190088
-26719  -78.7783726860572671    39.503703879963048
-93722  -119.87826954064721     36.8068790470195069
-65764  -92.9640642453543222    37.8143057869924775
-68316  -97.6108339497607744    41.0118045023923372
-21023  -76.7264528461538333    39.5341846153846106
-63627  -90.2694188262620116    38.0341207073885528
-62078  -90.4836874242424329    39.4798917575757571
-08034  -75.0004145695459954    39.9070315449348172
-23056  -76.3709785356511901    37.4179265397760545
-64751  -93.7066434000000044    38.5606429999999918
-50716  -111.42071528571428     45.2590052380952415
-28789  -83.3248329642409544    35.4111032280499742
-07110  -74.1577264782399794    40.8196714882081366
-49884  -86.293809560885677     46.3976811771217399
-71674  -91.2635169689971519    33.8766611890577281
-21648  -76.2344151531165153    38.4965020406503768
-56001  -93.9875482930715549    44.1499531723367085
-13057  -76.0547189877803191    43.0748770062556048
-78702  -97.717372565974685     30.2653385963195625
-52646  -91.0291498916668615    41.0624890887095688
-49912  -89.189707895342039     46.4767613703277078
-04858  -69.1357565907209022    44.0413676852836389
-18051  -75.6624694614975084    40.5933666240340969
-33732  -82.8044967499999984    27.9166560000000032
-21782  -77.75445786402517      39.4491298008378308
-93741  -119.796408593023216    36.766336895348843
-92026  -117.111106249612149    33.1962095933815036
-38774  -90.760890553267771     33.9561044180841307
-74016  -95.4491859262726905    36.5214629033323988
-95956  -121.114250127305368    39.9076176612685742
-01462  -71.7191520753306975    42.5873745582695307
-78528  -98.4607525000000123    29.6286022500000001
-24215  -82.7965052499999956    36.9218313750000036
-50026  -94.453835103109725     41.8573531931260305
-39320  -88.7384966350589082    32.5374554373051268
-51343  -95.0954952370518072    43.0201954561752871
-03605  -72.187088787420322     43.2315759129512145
-72583  -91.9973141256255644    36.3937369242714226
-50108  -93.9592486386138575    40.8598167541254185
-42046  -88.1011139636363367    36.6029551636363735
-90293  -118.441234510269794    33.9566175062424307
-29547  -79.3291249730594643    34.4796454079792625
-75937  -94.3712155735368157    31.4863303353690078
-71306  -92.4960476818181832    31.2954397727272777
-47131  -83.096638139534889     37.0698400581395546
-24849  -81.5652517964601316    37.673799061946923
-66062  -94.7716594007613509    38.8595615563793899
-47552  -86.9959236220095278    38.1210806889952067
-56007  -93.3604889997161251    43.6553167697759221
-28146  -80.4161491458572613    35.6157105256359827
-59846  -114.403267384364014    47.0693431385256957
-87124  -106.687456138486567    35.251423700450637
-48458  -83.6973260098858987    43.1164729130360271
-38769  -90.9917016344388543    33.8476487769936227
-10065  -73.964020189753299     40.7648806755218374
-24315  -81.075827697940781     37.1204273884501603
-37764  -83.6132137942881712    35.9705858129507519
-01069  -72.3150463053021042    42.1785043300356364
-63962  -90.2668659166666316    36.7730187916666651
-13830  -75.6181308782879569    42.4336571840027972
-55803  -92.1059317559850683    46.9748786523817117
-89148  -115.29672946158766     36.067159103283295
-69071  -96.4821017500000124    42.248444125000006
-70551  -91.9798068285714265    30.4697167571428338
-14714  -78.2429469642057711    42.2916135760626588
-16317  -79.8493037108247705    41.5273389308219123
-99869  -139.697452999999967    59.5392100000000042
-72073  -91.6708371962331086    34.3891854831361599
-00687  -66.4119468265209179    18.3386563307985071
-11933  -72.7445686145588866    40.9432032533831674
-31705  -84.0790963288599471    31.5402079296254421
-81228  -106.2914219054054      39.0612867702702644
-16546  -80.0512035999999796    42.1059816285714277
-33449  -80.2223271707383105    26.6079884781773046
-93923  -121.855608587551657    36.5072651247274607
-54081  -81.1847884166666773    37.6536609166666665
-64649  -94.0905848089711014    39.771191089182004
-43436  -82.8198400164834965    41.7134242252747427
-32784  -81.6895962399129019    28.9423967905011104
-03462  -72.4141610951157162    42.9091537979434889
-92879  -117.538044658903786    33.8828060154494182
-39144  -90.7850013079987264    31.820703784600088
-07107  -74.1879764189799715    40.7604060903809753
-73626  -99.2744897381578539    35.434501098684251
-77484  -95.9265339175730389    30.1058954644039005
-36250  -85.8934375484115549    33.7658626507380077
-81433  -107.661441938392727    37.8224151125000034
-51654  -95.7501701575650088    40.8357257439570134
-54163  -88.2525430000000028    44.6693889999999953
-04346  -69.7574337072350517    44.2351846247896461
-08618  -74.7827506619982785    40.2419257106413113
-85532  -110.834930595141714    33.4071177651821714
-86040  -111.474698468565606    36.9256962195206668
-31082  -82.8511417510769377    32.9920846648787105
-49301  -85.4882797739254841    42.9628568752395239
-58490  -98.0318645618768585    46.3799860991202806
-06459  -72.6560361428571468    41.5575694285714263
-97127  -123.11150960147053     45.2480110475490349
-43164  -83.1258029601986266    39.6026604363575316
-05775  -73.2351199443006635    43.3553796955958859
-46710  -85.2511850528158561    41.3537929514393738
-43430  -83.3719051305637748    41.5269447200790935
-48108  -83.7368218229449326    42.227290733885134
-28792  -82.3788865108571002    35.3798532847935618
-76060  -97.2110552112170723    32.6431551727326621
-60459  -87.7688044751726721    41.7447606613117017
-21210  -76.6348801101113111    39.356829662772995
-77388  -95.4689957755034015    30.0585504532299197
-50201  -93.4408106714876681    42.0185231382575921
-56041  -94.5155184999997999    44.1502401195218823
-37407  -85.2860560014598121    35.0007583419304211
-37826  -84.590365175935105     35.5550102877871481
-77826  -119.225692499999994    45.7323282499999948
-78165  -97.9317289285714452    28.5661701428571462
-49001  -85.5632739624848853    42.2715779128190192
-75275  -96.7902123714285807    32.8378991285714363
-18247  -76.0014422786885433    41.0321684426229609
-13115  -76.4752638735632075    43.397434540229888
-71111  -93.7040979479160256    32.5648704101696609
-01605  -71.7933187403347972    42.2909367526291717
-58104  -96.840951785216717     46.8094816467824941
-36487  -88.2986672499999941    30.8142552499999987
-32502  -87.2230731989960617    30.4100097332377821
-15757  -78.7292416652344116    40.8835869354438302
-12848  -73.5216568823529428    43.1032313529411795
-72375  -90.1480059999999952    35.5060710000000057
-01545  -71.7159851321372201    42.2849052648879322
-65260  -92.3933583023049749    39.5840579547872125
-57340  -97.8367516854990953    43.7726448418079244
-52574  -92.9662955863412606    40.7892320035772826
-55381  -94.1942878162854953    44.9208464997994383
-38471  -87.9225173782983092    35.0793893648357766
-18836  -75.7534507837837623    41.7906691351351327
-70115  -90.101900548238163     29.9272641831425226
-65769  -93.7964271436781587    36.9318226368860181
-76705  -97.1052267705824761    31.6231917770844788
-40422  -84.7877862556469637    37.6431497690135046
-15203  -79.9780595699932064    40.4251674601506963
-76537  -97.6066340837272719    30.8103791190636969
-00962  -66.1302722318020955    18.4373395632508661
-59851  -113.871789159999992    46.8731323866666685
-99301  -119.075864993742996    46.3089012712826289
-34101  -81.5419859347826019    25.981173217391305
-65733  -92.8295697298400171    36.5251576227726886
-14175  -78.6066239999999965    42.2575177692307662
-87523  -105.844891716311949    36.0126339243499061
-11801  -73.5224084488843488    40.7620159769778283
-02763  -71.3087066531574862    41.9671355221489506
-49938  -90.1551360383567157    46.4591946361349386
-59243  -104.623874826397184    47.7496225326992274
-37552  -83.4572995000000049    36.5941431250000022
-77339  -95.2157476371281462    30.0542501459055202
-15922  -78.8743331717171685    40.5178016868686797
-71725  -92.5673192028122997    34.0671667203894017
-18077  -75.2396834653000894    40.5650865873054443
-98366  -122.594360725686926    47.5309141852473971
-40222  -85.6153597111899956    38.2687398844101594
-60190  -88.1443336250000016    41.8886792500000027
-33020  -80.150064656130283     26.0172830933529902
-73756  -98.1199150960452187    35.9751949265536908
-61737  -88.7208386459676603    40.4487587056451261
-27041  -80.4884924840310845    36.4173480862112768
-65522  -93.1223780000000119    37.5971513333333291
-63030  -90.7368180963731277    38.147246904663227
-52161  -91.7563682069749973    43.1190802043214703
-27713  -78.9221464265515067    35.909839423761305
-38305  -88.8134874338850295    35.6928338520273982
-37810  -83.0998352655289096    36.1808387111140135
-46374  -86.8840499915513504    41.2087754281851488
-84340  -112.03825530058451     41.3948749397370719
-05043  -72.2087592161904581    43.8080108066667009
-52730  -90.2944793781587833    41.7832744331906838
-20473  -80.5127875555555619    37.0779457222222177
-47588  -86.7862632077789016    38.0446784882292235
-37923  -84.0766862853210455    35.9276909205912887
-05033  -72.1627660720949109    44.0029985911515169
-99581  -164.52712283333338     62.7782689999999874
-52121  -88.1320719999999937    45.8984544999999997
-51010  -95.9129776099766644    42.0909708952126635
-53448  -99.3494771999999955    45.5928107999999952
-05050  -72.0645663050847389    44.2626189491525324
-20620  -76.5231768841309474    38.2317655205709528
-48635  -83.993236721866154     44.3900860826210604
-26147  -81.0771858409593449    38.9074285573473375
-95348  -120.498240910845539    37.3398435246365921
-66212  -94.6833173635051395    38.956710195715047
-95436  -122.910398266545329    38.4924226362291719
-72120  -92.2209000020372969    34.8656204535158452
-33467  -80.1744230643140128    26.5899306481546986
-67905  -100.930602714285698    37.1008485714285712
-85053  -112.130731904186291    33.6295949979409414
-61850  -87.73832410007644      39.9263113644003553
-15921  -78.69723493500004      40.3193946150000002
-16365  -79.1600197722951009    41.8550975841892026
-70431  -89.9682140877831955    30.6067836988895365
-80744  -102.382796217068702    40.8887280482374962
-17101  -76.8783164572980553    40.2626192111801302
-32546  -86.739191500000004     30.6865129999999979
-62439  -87.6798199504858218    38.7268116358507868
-69052  -100.954811772727311    42.3412866931818144
-24501  -79.1574286662677338    37.3683209888190859
-34479  -82.1117414581593721    29.23880709424526
-46302  -87.1300423260869508    41.3544262391304329
-55748  -93.6044972651532134    46.9931434946281499
-57787  -102.639795458945514    44.6909545636889547
-02537  -70.434699998295784     41.7304575157949884
-77967  -96.9661927500000047    29.2034956250000022
-25123  -81.9170370659390983    38.7397013349935548
-64149  -94.4671276318681379    38.8655869890109713
-28391  -78.6940147473157054    35.0264670313170612
-80134  -104.767047221282837    39.4893698777103452
-41733  -83.0586576206896439    37.2036967816091817
-18229  -75.6887516102058839    40.9249004671328791
-72445  -91.0156123409090867    35.97061034090909
-72828  -93.5263537863248615    34.9210042547008328
-63770  -89.7094220924731758    37.5943829526881927
-61010  -89.2644905004804627    42.1306730613589906
-36037  -86.613300381946118     31.8014349844769519
-71009  -93.8919127593984655    32.5821209135338208
-66044  -95.2287591257548485    38.9932163864187515
-34686  -82.2516140000000036    29.4046689999999984
-17023  -76.8083014613163897    40.5766976327944278
-71770  -93.3138518907917529    33.3671728649575527
-22115  -91.5536930000000098    46.287907666666662
-29059  -80.4204303402337217    33.3364568024031911
-92320  -117.04022464295268     33.9932679672482934
-67901  -100.91691511541417     37.0666457196291645
-19344  -75.8867889538259419    40.078627043332709
-45325  -84.4263615683587574    39.689623163764324
-68445  -97.0880707495395114    40.3962162394107054
-03846  -71.1828983243416502    44.157804957289585
-34116  -81.7063652715594344    26.1833568328053801
-34731  -81.9012022826982786    28.8647771664629254
-62448  -88.1692675744531016    38.9717637983453997
-84715  -111.547494958904167    38.3280622442922123
-08105  -75.0876614682988759    39.9496553198453768
-05070  -72.3602072149321174    43.8411286900452666
-24593  -78.9105175405243671    37.3262825830066873
-15142  -80.12368363541664      40.3833624615885753
-16327  -79.9567180902683674    41.6268158062836946
-64065  -94.4042919999999981    38.9360473750000011
-78588  -98.4420618938052741    26.7206695132743342
-92091  -117.185088278365271    33.0230825544871749
-17003  -76.5489557712218414    40.3449141813894343
-48503  -83.6911660783787141    43.0120962941619638
-32542  -86.5530837340229482    30.4683619184418468
-32399  -84.2369413351351568    30.413399005405406
-66021  -95.0072041915953207    38.7690182034835544
-41142  -83.0763795352112595    38.2801987042253629
-65706  -92.9081885630728692    37.3272774636008435
-13833  -75.7769497208185498    42.1929780042950782
-02857  -71.6268793030653086    41.8408052520723643
-36323  -86.0683076182316285    31.430424976598438
-28762  -82.1691266571959602    35.6032085464099026
-53581  -90.4110911375187811    43.374034611340484
-46536  -86.2821018056668692    41.5167584040652073
-96962  -121.252458500000003    39.3286170000000013
-97904  -118.453583449728271    43.845960154891344
-43014  -82.2554826993254977    40.4675848441277921
-79907  -106.32793900122752     31.7079669514919757
-48760  -83.2536762138775401    43.339892030204112
-98360  -122.181727608009737    47.0831093665247735
-02861  -71.3551407750880742    41.8808523964148236
-60920  -88.3106931070495307    41.0153399242819958
-79765  -102.312726149671548    31.9148754930640202
-89158  -115.175402315789484    36.1081719999999891
-28543  -77.3771059672642991    34.735012667965762
-72834  -93.2076533720416904    35.1947060806856911
-39629  -90.4555391808174107    31.4388044140117557
-42743  -85.5274593904625391    37.2298083671250666
-70328  -91.2682810000000018    29.6932735000000001
-54208  -87.823202555715298     44.3542674100145433
-93297  -118.65579141176471     35.8860072941176469
-41845  -82.905688352941155     37.1365338257631876
-28350  -79.3128131852942033    35.2432338441176256
-17029  -77.6201389481706627    40.5523373749999934
-37058  -87.8650161660627731    36.4816058927445681
-43716  -81.0087362988587643    39.8438688981070115
-70732  -91.6198515646500766    30.5993158244365446
-75767  -95.2340900555555123    32.6684900000000056
-49067  -85.8104856229201118    42.0280884782202335
-16225  -79.2561470670103034    41.2546242680412121
-17752  -76.9140569924743573    41.1745419698962962
-92801  -117.951475326747769    33.8452794411151743
-24318  -81.4209707932430717    36.9594459924710037
-21529  -78.7758894452829708    39.7181163232704364
-29046  -80.158871082474235     34.1101547216494865
-99515  -149.89487131439617     61.1186889971595164
-95634  -120.795261224532965    38.9256188486080603
-57472  -100.066905155448907    45.4763580272437054
-55042  -92.900776078892207     44.9961505815487968
-97022  -122.335642702596942    45.3480417359924104
-79242  -101.445921499999997    34.1180035000000004
-82711  -104.458339818897713    44.7105239055118062
-60156  -88.359359417439137     42.1871269055859557
-56535  -96.0427592209064329    47.6421705688035999
-05302  -72.5661500571428633    42.8927735142857216
-04046  -70.4832351089876283    43.4070223426082151
-88341  -105.686943545938803    33.5048186125166154
-04607  -68.0580574074537878    44.4634523684342184
-43518  -84.7578989838171282    41.5879021231095365
-56237  -95.4301268198038031    44.6271448519179827
-19025  -75.1654244846725135    40.1455495453372251
-71972  -94.2601672568769402    34.3783168895296427
-81426  -107.886629162790584    37.8708256976744053
-98841  -119.482116428457076    48.4047127877713734
-43942  -80.8408893462784874    39.8684100148573251
-18813  -75.8060647102803671    41.7517459719626274
-65456  -91.2031509961762907    37.7846945244468486
-43811  -81.9240491508948878    40.1850156767903641
-48080  -82.9014065157947471    42.4627050233904413
-33037  -80.4083595604008821    25.1374607158545089
-92061  -116.955033082129617    33.3127667274144414
-21797  -77.0656126059539019    39.337036204374094
-79777  -103.127273695999918    31.5397591639999781
-44481  -80.8629988948548259    41.2076589796071175
-18039  -75.2234972987013037    40.5809785974025914
-65084  -92.8517601801230796    38.4149849982462257
-32277  -81.5899078062355017    30.3673706547343087
-21157  -76.9829473503627639    39.5495546653246706
-77328  -95.1814679790321634    30.3821847560199245
-40206  -85.6968850264586877    38.2549707778921189
-41134  -83.2858265416666939    38.3264255625000061
-70532  -92.7017990079308873    30.4714657788896055
-59088  -108.109337085834824    46.0419148948186532
-51430  -95.0311924550466216    42.085553483036513
-31561  -81.3320011856539224    31.2017838846695099
-70611  -93.2148744818607184    30.3262538389583334
-53955  -89.4024844276094797    43.3919376969697126
-25115  -81.2176963036649227    38.1199344502617947
-48224  -82.9422635331087008    42.4110766100690313
-22315  -77.1477210345587991    38.758124698471569
-32350  -83.3387877878410137    30.5947537280398052
-89813  -115.947349675000012    41.7852967500000005
-47449  -86.9691281248206423    38.9274830760401898
-52135  -91.6632781291138485    43.0158336195298361
-45420  -84.1320319975324509    39.718981259099337
-62707  -89.6441335507605288    39.8234643937297577
-74864  -96.7063952178107513    35.4843998141715602
-31747  -83.5869415585585926    31.1764540720720866
-35983  -85.7631750239593202    34.1824207563640954
-78257  -98.6065665200862043    29.6463563011953788
-72544  -92.1862540177079666    36.3939644948213399
-93074  -97.4256416666666638    36.3168459999999982
-63359  -91.3407517918377749    39.1547398857801738
-18317  -75.025957187500012     41.1598134375000058
-86433  -114.384515725806352    35.0249597499999723
-91724  -117.857386475908797    34.085122203294965
-94115  -122.437280579918152    37.7855569159836406
-35548  -87.7534052215346918    34.0550667472772872
-74352  -95.1850758716591514    36.1568839000931845
-80117  -104.436479848981932    39.3442537877907981
-83340  -114.436083666352786    43.7113729237185069
-75088  -96.5451083792061553    32.8947207015549949
-76945  -100.531257917159778    31.9137797401829957
-74832  -97.0085704628975094    35.8117683533568965
-60030  -88.0303594779699949    42.3448091866246443
-06828  -73.2541573333333389    41.2204150000000027
-67473  -98.7222806036938607    39.4187032295514257
-78852  -100.475757880366729    28.7041900915858434
-67573  -98.4077259827585635    38.2807463156498784
-25028  -81.709420000000037     37.9456631979166801
-42206  -86.7199442328490306    36.8783084810214419
-59901  -114.303515796127499    48.2073720673413746
-97370  -123.41307230319471     44.5635847665712532
-32362  -84.2395743846153806    30.3238941538461582
-66622  -95.7248539999999934    39.0267654999999962
-56611  -114.038001461538471    48.1395599807692207
-75137  -96.9131376618575473    32.6347091546447672
-19959  -75.5659694999999942    38.8233324999999994
-41562  -82.4687755436893042    37.40271273104171
-21915  -75.8489966916832543    39.5032210425688177
-17933  -76.2460765999999808    40.5957031733333196
-72128  -92.6419197426809404    34.3275782788906056
-23060  -77.5337945466487639    37.6588795962319622
-98535  -124.166440659326369    47.1247686476683825
-30517  -83.8037022443001121    34.1282395439308246
-61863  -88.2902137596954475    39.9054849459834458
-30336  -84.5552932633146668    33.7465849991478635
-66724  -94.8356130807019184    37.3497036091228054
-68957  -98.2573820857741964    40.2947149497907802
-45870  -83.9532191311475486    40.5557403934426191
-78049  -89.5315629999999913    35.4144375000000053
-51571  -95.620316714934944     41.1505775681818378
-20680  -76.3681439049930617    38.1128267170596118
-31324  -81.2907346006638107    31.8883911346457296
-27855  -77.0994052856770793    36.426276726726627
-36317  -85.388894607258834     31.6587245119176828
-75121  -96.4262247368421157    33.0780384736842166
-65056  -92.6410805454545425    38.1389866363636401
-17050  -77.0054723947660307    40.2512506664373362
-06604  -73.2024863039084437    41.1812555618261058
-78391  -97.7542197325173561    28.1760784178321657
-97910  -117.366533185803505    42.9343766850045157
-25625  -82.0664026537468487    37.8275625426356328
-39397  -85.1368186666666702    35.3199769999999944
-66939  -97.8898491342281716    39.7754236979865539
-65070  -92.7252183333333306    38.174077666666669
-63124  -90.3793474110206603    38.6392645354846991
-32908  -80.6892112545741327    27.9679777824324063
-96128  -120.424290461538476    40.3753741923076959
-64498  -95.3288128472013767    40.5390624209530586
-18102  -75.4789818510136143    40.6074471902459422
-23284  -77.4523153035714103    37.5478162678571366
-98266  -122.117168106657658    48.9544167644915191
-95661  -121.251506911018481    38.7359028473984495
-95612  -121.5631487230972      38.3925800048119115
-12785  -74.5699114866496302    41.5194073040482081
-21561  -79.2296332213398529    39.4912393114497533
-30107  -84.3487118872737085    34.3303066190583834
-10060  -73.9205437500000073    41.0608337500000005
-59873  -115.363223270182701    47.6420038396196972
-07201  -74.2008434464815139    40.670170933767011
-98377  -121.878815084835622    46.5285696700366884
-70411  -90.692838166666661     30.8372805000000021
-35619  -87.1213982038406556    34.40247503001833
-96148  -120.05551394887317     39.2445588894997215
-60176  -87.8705964015076546    41.9576104244510262
-12575  -74.1512576087823589    41.4716852327344796
-93291  -119.335476410165938    36.3466109971274136
-60173  -88.0510499647219262    42.0443853281643953
-31007  -83.9141127315068047    32.2032490347031981
-20667  -76.4399153442622321    38.2194551590163911
-74721  -96.1505873749999864    33.8945301562499921
-53580  -90.3779055247387078    42.856037211149804
-62359  -91.2084636822916082    40.0260713125000009
-45363  -84.3989053026217277    40.2385546719101868
-20036  -77.0421423229427376    38.9059839364089868
-61043  -89.096961681818172     42.0640824999999907
-96120  -119.803155573030182    38.7717505639986797
-16695  -78.3699301888981523    40.2161801135045351
-75418  -96.1809423044945646    33.5801530140431836
-54840  -92.6643220933926131    45.7563125175971663
-49911  -90.0449906251048446    46.4741453221757368
-98074  -122.043393800415558    47.6246833801416969
-95658  -121.148008309930404    38.8771792416945274
-36441  -87.2474159997981928    31.0275117977391588
-51458  -95.239744965121389     42.3100337192683966
-12872  -73.7176631030927894    43.8811765360824779
-31836  -84.5473093355544449    32.8017721327938716
-41073  -84.4764504403535739    39.1012749646538893
-28649  -81.205607597444768     36.3154832596980981
-51563  -95.5937587956730681    41.5736007187499581
-97424  -123.06464204617204     43.7674358685625293
-56255  -95.4258402344397894    44.3918310539419139
-12760  -75.099424708468959     41.9007226007736264
-35745  -86.1835199466764408    34.9260348108108332
-30284  -84.2901945925926128    33.3426971481481544
-75081  -96.7077863078102524    32.9491418654142549
-78573  -98.31090256201459      26.2816359004471529
-23398  -75.9339477656249358    37.5116948343749925
-27574  -78.9503883927172581    36.4220296593335746
-59903  -114.182752417475697    48.2762910679611679
-68825  -99.9389312924028559    41.290090218197939
-48044  -82.9268435083611308    42.6474031581291939
-36078  -85.9198346807735476    32.5543214075105993
-95215  -121.197784090026801    37.962958630038969
-65673  -93.2117967000000078    36.6247257500000032
-28151  -81.5923502500000097    35.254281749999997
-99731  -145.739204833333332    63.95325858333333
-24258  -82.4239305377416542    36.639014509354773
-47991  -87.4179124574467181    40.2732893161702421
-99694  -149.766167134009549    61.6140197156531286
-95722  -121.027801078075797    39.0038648871859195
-60803  -87.7293246101713748    41.6738183727901372
-66358  -96.0600799999999992    39.8285714999999954
-17824  -76.5141880872681952    40.8581536678910595
-58784  -102.368637163760155    48.4564535877383236
-17602  -76.2619835174990754    40.023097474955641
-80224  -104.911965810691242    39.6874814652706789
-14027  -79.1060818214285604    42.5796786071428528
-17578  -76.1621004631271177    40.2220395557194408
-49892  -87.8373562777777721    45.7923482222222162
-23092  -76.5085671563255119    37.5992650934730435
-61942  -88.0052380989426979    39.8028432746727319
-06517  -72.9092525881696929    41.3492668540773209
-24602  -81.6437282082555384    37.17641547882819
-52556  -91.9448450375157194    41.011364120834024
-60143  -88.0165886797658032    41.9761989983277246
-35816  -86.6258707317014682    34.7396319268061404
-66020  -95.1002540922762023    39.3362437758031831
-40075  -85.1115730599594826    38.5669086181404026
-56023  -94.0151735401886839    43.7732556825326569
-93244  -119.012195862434012    36.4244942186949388
-49845  -86.7810124545454471    46.141329090909089
-76305  -98.4350046341350406    33.9748401221063858
-69129  -102.403419589239491    41.1185507523242961
-96051  -122.350351420267245    40.864467949774621
-30434  -82.3927755464658134    33.0212267948952984
-42021  -88.9941653090931482    36.800501060477977
-55706  -91.9612306325188058    47.7282495660626012
-79063  -102.119337785340292    34.5127474371727914
-05640  -72.4940747844521667    44.3487551289752346
-95058  -121.2247105    45.6259500000000031
-03875  -71.1826970904072027    43.8787000607315392
-26704  -78.5934742624424416    39.2945216419636196
-53573  -90.4595286721280161    43.1926868617295057
-42558  -84.565708316831703     36.9777324356435741
-48830  -84.8351371071428559    43.3643418214285745
-54558  -89.4884484047082793    45.9269262973067001
-64456  -94.4025392008273201    40.4938519774351491
-73039  -97.9858619999999974    35.2037419999999983
-55951  -92.5165971643615848    43.531146565425594
-65762  -92.6671222211809322    36.6889208912839422
-55055  -92.9989436868463883    44.8719520159603462
-56379  -94.1242635477599379    45.6152069267999565
-64057  -94.3485658668273004    39.0693223084996148
-63557  -92.8767612524773511    39.9773611029729707
-59425  -111.972189549295521    48.1751445015902178
-71269  -91.7661576216599002    32.4557539718639632
-05042  -72.096253961129932     44.2308918469338579
-32754  -80.8922774730275194    28.6994855531332718
-72433  -91.001901328474375     36.0411084873664507
-33776  -82.827544687121275     27.8532997335857324
-25951  -80.8654629110278762    37.6729028652336098
-36446  -87.7232734033412527    31.7890903078759202
-63373  -90.3746244567532244    38.9255432807839838
-72766  -94.1770405000000039    36.1969330000000014
-57056  -96.5725408034187893    43.5163132222222444
-34760  -81.6300520240274494    28.5563772494279178
-75951  -94.0400121889749272    30.9209521582681646
-54494  -89.7836672038120724    44.3650625288499825
-38122  -89.9245837111412385    35.1563549202404815
-68663  -97.6834915342282102    41.3157157919463245
-05476  -72.6582388388484048    44.9676142980551532
-75129  -95.791650599999997     32.6991957999999983
-88331  -105.982704499999997    32.9810590000000019
-81507  -108.633593415920828    39.0697901667578051
-46731  -85.0999543153050126    40.7947434844649024
-55918  -92.8530421833871742    43.7380748586838379
-43711  -81.5753560153846564    39.8361588615384505
-96146  -120.218685651506505    39.1891762259560394
-47924  -86.7635981849314817    40.4877279931506848
-58794  -102.761665002747222    48.2569765961538977
-32668  -82.4881463440469815    29.2632811788394882
-35098  -87.0347526903290856    34.1293384648057341
-24281  -83.3328845607949233    36.6494018048389734
-65601  -93.5710919541804458    37.530586855928135
-64073  -94.292192      39.3155634999999961
-43003  -82.9626844347294679    40.4088818816592408
-32128  -81.0443219592640816    29.0818549066322447
-08510  -74.4168426191196488    40.1915914736342685
-68458  -96.4998096842105326    40.2345570637118541
-96821  -157.755523455304257    21.285836975194325
-56670  -94.9101528890274579    47.8755484326683387
-63051  -90.5629591129450517    38.4077190594906952
-03077  -71.1928067715148245    43.0302692712227781
-49459  -86.1038028439144796    43.7396597271599745
-97080  -122.41690703653083     45.4819820406896227
-99643  -153.298079222222242    57.2079835555555363
-82725  -105.70584857290325     44.8775032777420151
-72119  -92.2925152807017355    34.8349996578947199
-46917  -86.4758895390874187    40.6183508238415456
-18970  -75.3804093495146077    40.4132778155339878
-01543  -71.9554624743393276    42.381014324712261
-16640  -78.5664720769692195    40.7039656406110026
-56327  -95.5859737704886356    45.7915459765563995
-31096  -82.7168370954566825    32.718801910276639
-21874  -75.3540145596783049    38.3960791097711791
-67138  -98.4208824750000844    37.2382991359375382
-89317  -115.05411980172407     38.620322021551722
-58520  -101.547876892934468    46.6559788977026884
-00754  -65.9651296801801692    18.1877330574324318
-28572  -77.7411225981291665    35.023729233479358
-34946  -80.3536944092167573    27.4859748969162041
-21719  -77.4880717899159777    39.7093106974789976
-25529  -81.8399299770213133    38.1480702782978938
-74119  -95.9892597059843524    36.1426093148308851
-41007  -84.3087950193321944    38.8944996418196283
-64469  -94.3586200318318475    39.9092327192191831
-11213  -73.9362518618951583    40.6715794334677625
-64165  -94.562708381604736     39.3221311291585209
-04984  -70.2427234240588376    44.6962126001731406
-28137  -80.2671759547784802    35.4885956231101432
-84754  -112.13040716653704     38.6386220171406976
-72055  -91.3772858444149421    34.1095238756648413
-50594  -94.0335192994652971    42.5843775811052083
-47648  -87.5624148930677109    38.2459460199115
-51104  -96.4020277733175561    42.5294589906732057
-01129  -72.48749667754835      42.1197701305795462
-65619  -93.3788487607385207    37.1276039294461242
-17040  -77.3001344202875202    40.326773778163961
-57745  -103.658057128803279    44.0051329425882258
-98346  -122.522012620949099    47.8135479292724384
-42441  -87.6556428710963331    37.3765884707552161
-37625  -82.1769430384615589    36.5945429615384654
-71744  -92.4927377560787392    33.5215483029718158
-51561  -95.8016877351599874    41.0424455692542125
-48084  -83.1817145931103141    42.5642701862207034
-68315  -97.5591236582914973    40.2439498140703549
-27127  -80.2675943034309256    36.025364795408926
-07946  -74.5159219663944583    40.6742381488237612
-97602  -122.105328999999998    42.4706120000000027
-72628  -93.2809804388753179    35.8382051907090755
-45123  -83.390195454639084     39.3460551556701077
-35759  -86.5684567627077257    34.8582869621212552
-19608  -76.0302618246172273    40.3103553886762782
-69171  -100.071756385964903    40.9035862456140293
-53816  -90.8507300895149541    42.9831420281772196
-01960  -70.9723088373534523    42.5346736928138114
-48334  -83.3506170177280552    42.5062513417467756
-79383  -101.918935706989302    33.3370574596774176
-92117  -117.198457744091911    32.8236359376098505
-60926  -87.8195107083333255    40.5731909722222071
-79081  -101.209730102120446    36.1894744776785089
-12031  -74.4756626446281302    42.7626146404958618
-26136  -81.1186639807400667    38.9674439031930575
-17976  -76.2063859618031074    40.8198047508603779
-95379  -120.238687211561682    37.9728838107459836
-33185  -80.4430744781755038    25.7324950178117113
-58381  -98.7612646475196527    47.8161442908615371
-83628  -116.953790469754665    43.6077807096439045
-99125  -117.743472905043291    46.9406551449959295
-46236  -85.9648302769920036    39.8935627190648319
-71858  -93.2943675242541133    33.5818176798507793
-47275  -86.1284111666666803    38.9723956666666638
-97733  -121.854006040876612    43.4487415644211978
-58265  -97.5366201893203453    48.9490511053187802
-25837  -81.0442451854545283    38.0631668945454535
-35647  -87.1162464730887507    34.9625090037710109
-34761  -81.5313738309127984    28.5757821432661068
-44711  -81.3851956666666609    40.827103000000001
-67036  -97.8836562231759757    37.2932499828325845
-17951  -76.2431765884773824    40.6803158148148114
-20197  -77.6191354936495941    39.1930174491979457
-30719  -84.9274143333333313    34.789617166666666
-50261  -93.9297690558425131    41.4840746278244765
-14885  -77.5612171534545212    42.0447910872727917
-74756  -95.3748064163089992    34.047360175965693
-75268  -96.7690214285714347    33.6289878571428531
-70655  -92.7255223749707085    30.6284615555293875
-74026  -96.762947826086986     35.7086852874396357
-10032  -73.9414646163683074    40.8380065959079417
-38554  -85.1590094511307996    36.2557395908723592
-67841  -100.210968526717707    37.6493161496183149
-88109  -104.249221999999989    34.4762933333333308
-43528  -83.728225012535205     41.6246776901777196
-26377  -80.669155765441829     39.4686714276779185
-92234  -116.466298066155801    33.8095336599563154
-65263  -92.223794972404562     39.4728783604905118
-67028  -98.8863513418804132    37.4675387384615064
-88352  -105.999054716494044    33.1009169427725283
-22026  -77.3110675991829481    38.572573969152181
-43533  -84.0747141601285648    41.6903942868166837
-76528  -97.7514966776445959    31.4214590769826394
-36852  -85.2801773732452517    32.7573836015689821
-04987  -69.2522809122352072    44.6743757523244014
-49033  -85.0969219299400095    42.2243649221556794
-76171  -97.4283629999999903    32.7393505000000005
-08824  -74.5549162728119512    40.4213918310056712
-02038  -71.4050072486526943    42.0873391442290057
-57584  -100.063343850622417    43.4986186887966753
-30032  -84.2651146677431768    33.7385304388836218
-21160  -76.3190631661902756    39.7073984135097007
-25612  -81.9841938709677436    37.764023451612907
-87420  -108.690202242105485    36.7773126473684258
-47527  -86.7776985833904178    38.4705808898421537
-52068  -90.8132089934201474    42.435319656004431
-07009  -74.2298478055633524    40.8581575028917925
-58785  -101.114351352125752    48.2682332273568306
-41339  -83.3885534706146956    37.5235938668991835
-38318  -88.2692607460465553    35.952834728372018
-69154  -102.353716149547651    41.4096790324640551
-11217  -73.9794045625000507    40.6824915301339303
-21814  -75.8872352467192002    38.296501219160092
-70397  -90.7928137870230785    29.3970260320610279
-59463  -110.830265420988837    47.0656271990349424
-23523  -76.2715898258864087    36.8303327521277382
-77085  -95.4823324326043092    29.6245800131212391
-17233  -78.0052511643532256    39.9490098379258143
-93302  -119.082857500000003    35.4460106666666661
-06373  -71.8041662500000228    41.6889955041322651
-77433  -95.7221188032269623    29.9497994163697108
-09594  -120.952089000000001    40.1395143333333309
-76524  -97.2320402527573293    31.2829551231617877
-67062  -97.4336586104048621    38.1389475696128528
-14831  -77.0564530000000047    42.1436269999999951
-40056  -85.4861242826701329    38.3055718536637499
-57054  -97.2444046061256557    44.1275468393336396
-66281  -92.8462674999999962    39.3593104999999923
-44859  -82.3345242853994392    41.0132297305784803
-98364  -122.585772397849425    47.8523732688171961
-72074  -91.1223543821989779    35.0548359005235639
-66337  -95.6808879999999959    37.0367373333333347
-33559  -82.4128888535465336    28.1625325098900774
-54177  -87.955366120521191     45.3812284267101376
-40029  -85.2960846279070068    37.7777826046511649
-07924  -74.5828079104156529    40.7241424314186702
-37851  -83.8786462409638744    36.5783161325301123
-88043  -108.106431022556265    32.7078994017185636
-94131  -122.441998558466381    37.7446811898461547
-91950  -117.089922691949624    32.6729461568788366
-56186  -96.0831010445344589    44.026992955971636
-38744  -91.0443797542018984    33.0213902804621995
-65075  -92.2692250538354699    38.241416668898168
-28215  -80.7074501105557403    35.2464705632651487
-28420  -78.5143598916930898    34.0502431347150747
-36106  -86.2625713669444139    32.3529555434695837
-92067  -117.199565942946336    33.0164857250855377
-63552  -92.4616046399527818    39.7485733623264466
-73001  -98.4088947999999846    35.2335031999999941
-62513  -89.1470337193279505    39.7229131092436916
-49638  -85.7436635878832902    44.2870631437919968
-24250  -82.5930207062165209    36.749786598926498
-84937  -110.088353999999995    34.4916185000000013
-62049  -89.4894210524736309    39.1419394512903125
-46959  -86.1082605725190433    40.6144062442748037
-92285  -116.459327202776407    34.3114987782292289
-25063  -80.9458213042248076    38.572417836688409
-40358  -83.686225292715946     38.0628195616064886
-45785  -81.6376873333333322    39.5419006666666633
-51648  -95.8108744704723136    40.7382761889763785
-62885  -89.0559662680964692    38.863358160857878
-65618  -92.3843639308176137    36.7516109937106847
-32751  -81.3625138146237248    28.6311289915494065
-03854  -70.720499461128        43.0676070800304771
-25253  -81.9747735699227462    38.9145589280502264
-11793  -73.5102295739994673    40.6885084851170546
-56727  -95.5122683384673792    48.3178233870832017
-99757  -152.2227313076923      63.9114223461538487
-67476  -97.4269928214285841    38.5504160714285717
-55423  -93.2824501635478924    44.8760362525195475
-72072  -91.7604042368420352    34.5328720290858584
-77228  -95.2515060000000062    29.8592110000000019
-02330  -70.7669794032836279    41.8845226013413594
-39641  -90.1764598617537416    31.3622175845210087
-64062  -94.1730386773933077    39.451598220008016
-28697  -81.1757300175929259    36.1368589555983135
-33967  -81.810565681958181     26.4709921508200878
-04051  -70.8881515125922022    44.1922832825721699
-18946  -75.0271244025974084    40.3196351948052012
-32662  -82.0994239285714258    29.5046239285714265
-34715  -81.7428657454799747    28.6048140713954808
-31717  -84.6394345307692788    30.8480482615384517
-89821  -116.530767847987931    40.4398737839046092
-49235  -84.2120575951219621    41.8661058044715659
-37644  -82.0202513636363761    36.4592189090909073
-22485  -77.1696018787323794    38.2826800619551975
-65806  -93.299833305926569     37.2050388275943149
-58440  -99.1469132918985139    46.2642932888064919
-96136  -120.032341500000001    40.248228300000001
-06753  -73.3262955241379473    41.835422924137923
-47857  -87.0901097607655572    39.5261551291866127
-01243  -73.0161296028106648    42.3455841383136402
-76091  -98.9282014062499826    33.0521477812500066
-30457  -82.5799156590618537    32.3926918911933797
-39350  -89.1254174103978301    32.7874450911382382
-53530  -90.1040386241257352    42.6910136125624859
-53083  -87.7592518232804508    43.7907706904286869
-63057  -90.4061500499999937    38.3425523000000084
-30338  -84.3197953674839766    33.9455983838483419
-15520  -79.0958526440129646    40.0716583527507879
-49996  -89.2298942558139458    46.6915777674418564
-92308  -117.17792380141384     34.4486088565620463
-57439  -98.0974778749999956    45.3310521666666659
-83303  -114.517272800000001    42.5521415999999988
-28699  -81.0039375423728956    35.8286010169491504
-65739  -93.2756229632714877    36.5223047391767537
-42404  -87.8360688243157313    37.4784612425149959
-56378  -94.9632334807298548    45.7333085007898177
-60626  -87.6697373802561657    42.0090680304691233
-97302  -123.053185356105885    44.9040585346822354
-90621  -117.991033247475727    33.875213981246965
-95351  -120.996147974794454    37.6229690127931633
-90124  -104.677796999999984    39.6026864000000032
-79091  -102.106228678571441    34.9544953035714201
-62239  -90.1969149328389648    38.5220027919240948
-52075  -90.4926876848874855    42.1699068424437513
-70114  -90.0327801007024959    29.9374818153793747
-24831  -81.4170605000000052    37.390757615384608
-25305  -81.5865973599999847    38.3083246400000021
-31038  -83.6067543897080299    33.1339059907488718
-57467  -99.1338994135669225    44.8141382319475454
-72522  -91.4637287743165786    35.8124219040050562
-02179  -71.0621197499999937    42.4625420000000062
-04006  -70.3457612960000063    43.4445189639999683
-86540  -109.434569500000009    35.878631687500004
-13126  -76.4803739840982786    43.4393977715063784
-96090  -122.123202954545391    40.0240878636363604
-46994  -86.2495817335764059    40.6676427751825855
-55415  -93.2591983460898604    44.9749225457570816
-88402  -103.895640666666665    35.5659759999999991
-67344  -95.9531822359156195    37.2726259866196727
-07666  -74.0112399271900472    40.8919625959895185
-49886  -87.5006053636363532    45.693721818181821
-53590  -89.2261484953921808    43.1923932237580743
-88866  -89.8333091111110917    44.8005357222222358
-55441  -93.4282174789587287    45.007548711386427
-95117  -121.962324868057053    37.3099100704406865
-33930  -81.4279323473520265    26.5448744719626433
-15021  -80.4380086327465307    40.3917578364400924
-59312  -106.242840562500021    47.00923768749999
-79772  -103.622822868410168    31.4072023044210269
-55362  -93.8070414788845568    45.2975447656525461
-56743  -94.5020583333333235    46.3234679999999912
-55382  -94.2028817184482534    45.3047658769779389
-39166  -90.4894278904110649    33.06752047358124
-23120  -77.7503014650465047    37.426215176859543
-72458  -91.1523813187335321    36.0739448437994312
-53577  -90.042714047021903     43.2755549357366647
-23222  -77.425682978502806     37.5741470728184765
-72956  -94.3456404083110982    35.4793132463856367
-66765  -94.7404751428571359    37.530534857142861
-85323  -112.31964931456406     33.4383278598973845
-49321  -85.6663497810669128    43.0652442693558513
-71377  -91.7742841015624577    31.5989093203124867
-04849  -69.0416364924423362    44.3177538381183993
-61731  -88.4772963317581258    40.6083874357277921
-97071  -122.843564674328405    45.1424295940549882
-32206  -81.6466028713882821    30.3520039901338556
-97044  -121.520455153846143    45.6312416923076896
-86033  -110.256867739130485    36.7141967863893939
-13158  -75.9744258436827096    42.7152645377607456
-45806  -84.1352334789639968    40.6777442063200496
-35469  -87.7875588136300991    33.0244513129346231
-48435  -83.3598569551056272    43.2479409823943186
-63138  -90.2104922663891244    38.7908385527942841
-28072  -80.4498093819163671    35.6014709325236325
-66258  -89.7955915000000005    38.5097120000000004
-92382  -117.112162745387906    34.2084925230914081
-85021  -112.091373525506995    33.5584686228330114
-47427  -87.0106038431225244    39.2404150294940806
-28205  -80.7879683389173664    35.2215077622203339
-84327  -111.989725274815399    41.8655819073011202
-81146  -105.752837766507881    37.6216494553836256
-98271  -122.218199584773402    48.0979430939926971
-26626  -80.6719023750000019    38.5384651250000019
-59417  -113.026624494915325    48.5814077436054177
-12474  -74.5743594450846956    42.2899720124361949
-59022  -107.455809776536285    45.6065908687150525
-43021  -82.8996233486902554    40.2037627114286664
-74954  -94.5190667071188955    35.4220922704251748
-54217  -87.7224372632009874    44.5951493589847558
-95127  -121.81479265647711     37.3711305934361206
-34853  -80.3606746999999899    27.2603191999999979
-08090  -75.1512366237504921    39.7992539909117724
-12484  -74.174038384743298     41.8687743945124566
-21651  -75.8643552249068733    39.2494443969729119
-55358  -94.0014524523037238    45.253875944103612
-97641  -120.668566714791751    43.2534718981117976
-84654  -111.801417052455491    38.9498797555802909
-84773  -111.430158295395373    38.2649645873153972
-75689  -94.9516941702127468    32.176036744680836
-54213  -87.5153718766054851    44.7021474701834833
-93031  -119.160163499999996    34.2011587499999976
-27849  -77.1994578824909468    36.0843772050541745
-45111  -84.292633418128645     39.1970152514619983
-95415  -123.392277348069939    39.0191506733751368
-56311  -95.8735437014802727    45.8972630411184781
-74920  -96.7784939999999949    34.7821864000000005
-92054  -117.362367239273496    33.2054456557047004
-32777  -81.6117107352940963    28.76094970588235
-47880  -87.4190232352941052    39.5991924117647045
-06351  -71.9567076067515217    41.5930919582158012
-30088  -84.1798525235446391    33.7576481740823837
-53589  -89.2181759141206214    42.9279987420411402
-42649  -84.4284222181583743    36.6342269417708835
-28636  -81.072253480433659     35.9342907867161045
-94507  -122.009720102609364    37.8559166428147265
-60536  -88.5537188750000013    41.5963799605263276
-34607  -82.6232911598949471    28.5052672352940384
-35501  -87.2756606287202743    33.8212912315716139
-99824  -134.397390905466722    58.2775524339407127
-33992  -82.1312075000000021    26.6403919999999985
-33144  -80.3094979157429094    25.7629012929600911
-47226  -85.868742768749982     39.283234043749971
-40291  -85.584204489676992     38.1376108268082064
-70762  -91.4772765695971231    30.5924563278388248
-11753  -73.5366074309024924    40.7895520464048786
-41721  -83.4818346051042539    37.331891829582041
-63851  -89.7572688860165755    36.2377287417743972
-68031  -96.5321380332545544    41.6303426582547615
-14476  -78.0406324419735284    43.3337139986101008
-41144  -82.8836762382444192    38.5412506351938902
-48727  -83.1799220810812017    43.3130789189189045
-43085  -83.0146004893508263    40.1015044338511117
-75839  -95.5512089548135748    31.6296299305010074
-17005  -76.8111516027874472    40.6027329198606282
-66523  -95.8299705855170885    38.6293396429252383
-64689  -94.1489192147525813    39.8838041279178057
-25153  -81.7370912857142855    37.9942075714285679
-52727  -90.3362501018002604    41.966731667908121
-05744  -73.06998439574771      43.6919893304736462
-91304  -118.628466378743752    34.2218556936760763
-22554  -77.3986046395828282    38.444621640539367
-60532  -88.0865506930736188    41.7857032622291982
-16825  -78.3087700628272074    40.9850465130890029
-31528  -81.6033215000000069    31.1649515625000006
-15644  -79.611365422717796     40.3375347367548969
-46508  -85.9702504249999748    41.1551888166666728
-35650  -87.2915347898343157    34.4763312323875297
-03910  -70.6127753955375397    43.1709682454361001
-38826  -88.8307690701669515    34.3007857077760718
-35554  -87.6563982953124849    33.8928947395833546
-34112  -81.7437279962787926    26.1232471854448569
-18837  -76.3066436520742144    41.9117532152551249
-84628  -112.133172096514699    39.9574980723860875
-25845  -81.5090926577016859    37.6932992787285599
-18244  -75.6816295995203632    40.8324325995204163
-08252  -74.8613193333333413    39.0393945686274435
-73042  -98.2415408057143935    35.2110161520000204
-08080  -75.1013064723242536    39.7511299673004714
-72738  -93.8916543618130532    36.1644056945667742
-89144  -115.324327132827861    36.1794356262436452
-93813  -116.637405363636375    48.0710910000000027
-14740  -79.1831635116994761    42.2185751083743952
-50066  -94.2214564258555214    41.8307215152091771
-50574  -94.6846749324082708    42.7198892227948193
-75166  -96.4428663625390357    33.0175501904512316
-23025  -76.3640235809523347    37.415607866666619
-71940  -93.5184346786224125    34.0232216800524085
-01020  -72.5706981869903416    42.1774699860365345
-60602  -87.6290590035461037    41.8829583368794616
-50568  -94.9910988848186122    42.6236593567214754
-14864  -76.8422634881847415    42.2751719828141432
-79517  -101.157166197387511    32.8798257968069834
-39168  -89.4130499774231851    31.7996558318543663
-10914  -74.2041205838150262    41.4165403078034586
-28580  -77.6883602352582869    35.4423183881406558
-75005  -96.8795565000000067    32.9878114999999994
-32506  -87.3314438162142466    30.4043341194444459
-49252  -84.7625491920314005    42.0413044702808492
-84129  -111.962695722734651    40.6516277920923699
-22831  -79.0573234788547126    38.5117949814978147
-98944  -120.002419085776708    46.3300460430107961
-82624  -107.686194333333333    43.2679800000000014
-08218  -74.8255646818181788    39.1499027727272733
-61060  -89.635468904939998     42.4770831656287839
-37606  -82.2939592499999861    36.2670120000000011
-85296  -111.752589860877904    33.3310427273241245
-40935  -83.7262036841494108    36.8978690912459086
-04004  -70.5470213793103653    43.6100193275862225
-37688  -81.9139277691586898    36.529753896207275
-29479  -79.9119605693874036    33.3845041977679244
-43951  -81.0147726387434801    40.1017815340314314
-15465  -79.6411678202247089    39.9431240674157308
-67574  -99.4014144453125255    38.1976784218750112
-94210  -80.6983711428571411    37.7302627142857219
-53014  -88.1488105859827016    44.0399728475434387
-99636  -157.320828083333339    59.4514250000000004
-95229  -120.45679653448272     38.1121899482758622
-31532  -82.7590950561436642    31.7284936870685463
-46072  -86.0540285508458993    40.2836774369046324
-27870  -77.6911782691169748    36.4408824486797513
-31316  -81.731412906820708     31.7668949422288129
-55607  -91.5261078999999711    47.6393046044714055
-30105  -85.1661605933051362    34.4533156400079577
-36016  -85.4277169481690777    31.8379158628632979
-85991  -109.992564999999999    34.3486946666666668
-48160  -83.6791984869339274    42.0930559529297597
-77861  -96.1038098571725214    30.7072561121475545
-36580  -87.7365669554262269    30.4795737659345178
-76385  -99.2502794999999907    34.1172745000000006
-98187  -123.180124454545464    46.7945776363636412
-28447  -78.2324370292428171    34.6026624835508727
-71640  -91.2804483942891665    33.1151540789793302
-45859  -83.7863548065476351    40.691863383928542
-21911  -76.0501833700857333    39.6892336363551053
-74865  -96.8367523059624489    34.6348152115843106
-06058  -73.193703122422221     41.9778619760356477
-68817  -98.7783990701070564    41.2488023904576409
-13323  -75.3781977349665766    43.0495219248329377
-66402  -95.8283981512903864    38.9151481509367301
-24245  -82.4911131528511703    36.8279564610798218
-83347  -113.835645795266046    42.6619049704142128
-46181  -86.1653225249807235    39.3733557859338603
-02542  -70.5669569323528805    41.6601843970588916
-18042  -75.2208739699185713    40.6677552154917592
-70521  -91.8394255820895324    30.3358258507462679
-97086  -122.535083719534057    45.4449842158522443
-07980  -74.4946880894039936    40.6757727110927405
-68872  -98.349335336606444     41.0914407992362527
-18955  -75.3181720186047983    40.4801717364341158
-08011  -74.7106158387096713    39.9734194193548618
-51541  -95.3952875314553665    41.1432899849764979
-89527  -123.590412999999998    39.2525759999999977
-20009  -77.0381682149395601    38.919490228520722
-17140  -76.8466899285714362    40.3092905714285763
-33557  -82.3802895000000035    27.7021242499999971
-23521  -76.1568738780487564    36.915336926829255
-36759  -87.2499685546104047    32.4137695362367211
-60481  -88.1484996790977107    41.2948051265342073
-47201  -85.9766131589953488    39.1737409416337385
-49042  -85.6725666955616134    41.8504408255894376
-29836  -81.4831936525108915    33.1026125186905205
-35294  -86.8080516438355971    33.5007219589041227
-70758  -90.8603191999999922    30.527662399999997
-97633  -121.56102887553665     42.0288582886266155
-38553  -85.0096554711556536    36.2065130636246124
-04143  -82.9371129999999965    38.3254555000000039
-65332  -93.4055288412927922    38.6213143912204586
-03588  -71.2313640354216062    44.585496486506031
-40444  -84.5979901152606857    37.6805294087770974
-59076  -107.096128849624051    46.2895136240601488
-13224  -76.1039706647123353    43.037297604616974
-38231  -88.4283380390205593    36.2106268296863618
-13832  -75.6529838364261451    42.6468192591064792
-95112  -121.884283892443705    37.3449772139312017
-31698  -83.2873349999999988    30.8478157500000023
-38327  -88.3059047621915596    35.2229252600842528
-91381  -118.586019832011047    34.3896038265698962
-28432  -78.7651980851590992    34.1787127089706573
-46637  -86.2375981103696319    41.7328891275386553
-04001  -70.9206635613222574    43.5417127997445519
-85618  -110.659271086111119    32.7160420465277966
-85527  -105.804911000000004    36.1643486666666618
-14617  -77.5975459388077979    43.2236952805560151
-27054  -80.59432003701518      35.7871890601741853
-79042  -101.83388951615126     34.7675619670103728
-32137  -81.217561990131955     29.5786455285314851
-49918  -87.9379220093809835    47.4663431876172339
-05491  -73.3103208734899852    44.1293155505717465
-79237  -100.662117694410014    34.8570734832297902
-18012  -75.5923733684210504    40.8122641578947309
-57717  -103.862009444461705    44.6792400790728479
-61602  -89.6033665009745874    40.6842929876543238
-75155  -96.4874605693047442    32.226816715347546
-94535  -121.946801397222202    38.2773839152777384
-03858  -71.0461367320549186    42.8696536074110952
-97818  -119.711965130004131    45.8187273321442419
-85199  -111.480061199999994    33.4211169999999953
-92109  -117.240702162053466    32.7941089775701542
-10307  -74.2414243937360538    40.5081750520134918
-74325  -94.8568320000000114    36.9718572499999993
-44437  -80.7312240676490092    41.1568704172806292
-80862  -103.068954405511761    38.85562485826771
-33572  -82.4033702163712434    27.766941706117553
-38115  -89.8612367757210819    35.0538678589450186
-15615  -79.7354501160949951    40.3589244802110798
-70403  -90.4886148387923015    30.4815450312073395
-28318  -78.6101480840297171    35.0282820348025581
-03224  -71.5481664900990495    43.349210439603965
-97753  -121.017770461188107    44.2300369976043726
-59084  -108.611211428571437    47.0381091428571381
-57025  -96.6856125994358138    42.7137418345111755
-49440  -86.2512458859857958    43.2341102874109211
-78072  -98.5459886987295874    28.420501647912868
-57041  -96.8714082671009749    43.7221304723126991
-19408  -75.4128895714285648    40.1513204285714238
-24986  -80.2769645773321798    37.8195721867479904
-06035  -72.8006829434604157    41.9613924819073034
-04110  -70.1986581901527842    43.7604129694397983
-85621  -110.927183472396777    31.3710629589254886
-67784  -100.847566     38.0036075000000011
-91362  -118.825882472756561    34.1927570653568367
-02181  -71.2817548333333377    42.2915856666666699
-29114  -79.931266803962842     33.9517428135695667
-43229  -82.9720225265648139    40.0843833362635849
-79721  -101.410645071428547    32.2571692142857174
-49862  -86.6530375887542306    46.4113179558985465
-86111  -108.953917357142842    35.6361917857142885
-36010  -85.8195668976424884    31.6701305966709334
-06443  -72.616964724268513     41.3165219631674674
-33043  -81.3614585482665973    24.6854677850666455
-66406  -96.4142807988123138    39.8848036043059153
-49127  -86.5156589791351394    42.0158099059180472
-14140  -76.6237349999999964    43.0343469999999968
-29732  -81.0623883852070719    34.9699127485363803
-02117  -71.0723045000000013    42.3524400000000014
-55321  -94.1902555269543029    45.0933854866575743
-83803  -116.526678129295433    47.9918000708762662
-43748  -82.3057541429213302    39.7005237696122748
-25150  -81.5341583529411622    39.1544494117647019
-36270  -85.4790427970296776    33.4313567772277267
-54836  -92.1901521487580169    46.4508218998046374
-99505  -149.687932742408378    61.2534905246073365
-74633  -96.8136869360851762    36.7009089067908931
-81157  -107.064276937499997    37.3929531249999911
-07921  -74.6546205782919685    40.6595887013641999
-13028  -75.9294081512379506    43.284143941334726
-80737  -102.223394112240413    40.9260464914183117
-61533  -89.8325435583701761    40.5908303896401392
-59527  -108.692064063897931    48.020425636847726
-14418  -77.2067256657849583    42.6097281841322442
-27916  -75.9053280160818957    36.3210215774853822
-96733  -156.528197500000005    20.8831814999999992
-92066  -116.54625336756753     33.2269409256756845
-19466  -75.5759033999999872    40.1402564000000055
-99103  -118.959249765275473    47.7549007259528366
-36582  -88.1850051898199467    30.5354887805135213
-99109  -117.711515230555378    48.2803061150576696
-18235  -75.698974779221615     40.8296105507803944
-02894  -71.7053693743693543    41.4426180746719837
-52049  -91.1947872016394996    42.8787880738894742
-36273  -85.3721662562212344    33.5363705972472701
-95665  -120.657119661554461    38.4026790876274191
-23851  -76.9524171345866534    36.6700452447809013
-06479  -72.9014362205821413    41.5785844634048161
-31746  -84.7305283928571527    31.5971252142857182
-63313  -90.2942120000000017    38.6734310000000008
-24482  -79.0017716377173684    38.206617883126512
-93519  -117.975097397905813    35.2948938429319483
-99785  -166.490454921052645    65.3333438771929877
-63020  -90.5487330030290423    38.1159621157574264
-61560  -89.4346196084015048    41.203423826628665
-64480  -94.7131254508991418    40.0574208340248958
-53020  -88.0062780032949945    43.8426936079078047
-82718  -105.54662343827367     44.137747337158352
-92553  -117.241031225209028    33.9224267831542434
-07950  -74.4836078797930128    40.8451599360513882
-18049  -75.5022420454003367    40.5256383244186225
-55330  -93.5829348831517933    45.3211756125548106
-02081  -71.2537019932767777    42.1484552224713482
-72087  -92.8245322485992119    34.6000990615453219
-65082  -92.4398729315491181    38.2211174831832494
-75287  -96.841111577724476     32.9983507307822848
-35010  -85.929137420905505     32.9274419581028184
-56352  -94.8013860162907633    45.6578736963044562
-47872  -87.1520484762397274    39.7505368308882012
-16415  -80.2279987020267242    42.0383801861222679
-37313  -85.699498607576686     35.3650533496241124
-14557  -78.0644295000000028    43.0463358571428643
-28114  -81.762423228464371     35.2350536033633688
-15521  -78.634487915312917     40.193798294849536
-26503  -79.9039346296296316    39.6292678518518358
-47129  -85.7695110587797132    38.3102032795297092
-14224  -78.7487733890975079    42.8346078170023787
-04050  -70.1529256554174623    43.6929510746003373
-82036  -105.881549615384614    40.8341386923076897
-14012  -78.530830883377277     43.3363219065962966
-78654  -98.2575696758125616    30.5666017199071192
-38625  -88.8316497754499892    34.614441550062871
-08060  -74.7903604574970444    40.0050041993021352
-22841  -78.8990741788089736    38.3420988427715272
-34679  -82.6615760958904104    28.4305868150684944
-36349  -85.5273864999999631    31.1315989404761844
-51544  -95.1126824316493753    41.3109219160475831
-39567  -88.5437062270184754    30.3696128661131866
-14734  -78.3443144999999959    42.1510402500000012
-68029  -96.2687863206872834    41.6531143693629033
-36093  -86.1361379066676704    32.4963533112315659
-33463  -80.1308257669692097    26.5999691677474814
-42066  -88.6378138001297771    36.7351995678866388
-06091  -72.9869458247191858    42.0094031505618091
-41775  -83.3451850240549987    37.1082584776632274
-64487  -95.0607604496422738    40.3178130427218093
-80910  -104.772956837193647    38.814468342221133
-04278  -70.5042692777777802    44.3237278888888895
-36264  -85.527508278347554     33.5816838220945115
-55990  -92.2686548920903249    43.7273817807908571
-27818  -77.0330882986029906    36.5043843753255146
-49430  -85.8989033809523761    43.0055999047619011
-49458  -86.1033652074592624    43.9409242913752536
-56212  -96.3275473182750375    45.1466916765913169
-99536  -121.151063499999992    37.4655279999999991
-29120  -80.30423054545453      34.2415422727272656
-65633  -93.5181945641184029    36.9010182421393935
-12746  -74.6433956099162828    41.4324895471922972
-77304  -95.5093799030073569    30.3390733911922297
-67672  -99.8877495165055365    39.019993626811619
-36886  -85.7360976666666801    32.5818510000000003
-73718  -98.1680218263157798    36.2307457894736729
-80262  -104.937523199999987    39.7309522000000044
-03917  -71.2059884999999895    43.8557600000000036
-14715  -78.1569344650106075    42.0750971972774011
-32335  -85.0090472592592334    30.0008800370370352
-82601  -106.324172460033679    42.837859912403168
-48022  -82.8019900510121118    43.0260677805667981
-50134  -93.6615096229674293    41.9397967347560723
-22947  -78.3375782817417985    38.0315064954262567
-62693  -89.5289201839315751    39.9508958250407815
-47946  -86.8833407007005007    40.9886808485070731
-71679  -91.1984301111111222    33.9242924629629528
-18234  -75.9611377139303841    40.9928188059701526
-41836  -82.9105458179060406    37.2614965508345932
-76704  -97.122906804569439     31.5731660994166887
-23958  -78.6545453260156791    37.2694739241355322
-53832  -90.8865434999999877    43.0831505000000021
-19952  -75.5970175032620659    38.9205648771058677
-62677  -89.8573065573922349    39.8582508647077773
-56728  -96.9447704897400797    48.7774495868673128
-78058  -99.503060161462173     30.1893117589637221
-20615  -76.5471078820960571    38.4185198908296712
-27915  -75.5078035204854814    35.3473446196256802
-08230  -74.7128253543382215    39.2167893885370304
-60622  -87.6774183843897958    41.901677113228331
-64474  -94.3705882737729524    39.7574725766872135
-84735  -112.438337630508428    37.6451935050847979
-83421  -111.554773978102176    44.0052855401459766
-20676  -76.5374277408059811    38.4910787860284032
-63967  -90.4636701972439425    36.8871932488518084
-88829  -99.5464830000000092    28.912547
-22815  -78.8061856043931357    38.6228649824274015
-95442  -122.518313772470933    38.3713210136464653
-80466  -105.492410817609823    39.9742623736896121
-28639  -81.5879572727272802    36.4677286545454535
-55128  -92.9655771368374246    44.9871539642984644
-56678  -95.1078809087651962    47.4355174364493593
-89433  -119.772908092433156    39.5973858032843324
-19717  -75.7553902571428921    39.6805379142857149
-19018  -75.2977054304647595    39.923472823519532
-37275  -85.8943207586206796    35.2541897241379303
-84042  -111.711649660475999    40.341605708357406
-05767  -72.8213244842222451    43.8723483403812224
-23021  -76.3663093014048258    37.3935380804597344
-97014  -121.883512540106921    45.6695282465241377
-52140  -91.5261881100757506    43.4411829715730207
-12073  -74.2325090000000074    42.6621908333333337
-28210  -80.8565756343646456    35.1287374827982859
-50530  -94.0403686973280912    42.2667013068702246
-29460  -77.472999999999999     34.5373296666666647
-37025  -87.2954735570481688    35.9489886066606985
-92403  -117.459445842105239    34.2689463947368438
-29901  -80.6490946666666702    32.3733826666666644
-65280  -91.7456539078341962    39.2326196474654623
-18820  -75.6195441379310012    41.7799973448275921
-71082  -93.9835581731213239    32.8545492838498134
-43406  -83.4340445748824635    41.3333739543318046
-52223  -91.3370281368067936    42.4130153044347367
-44314  -81.558563548154325     41.040623968926937
-97214  -122.645778538608724    45.5145467100954093
-91331  -118.422360305912079    34.2551950302565515
-07026  -74.1075298992442413    40.8793789093198825
-44510  -80.6683329721628866    41.1198358458243689
-18661  -75.7782276272656645    41.0757825063919384
-97676  -150.02951758333333     62.2283590277777918
-21863  -75.400035866677996     38.188635913752492
-21647  -76.2724944348659903    38.8097577298850425
-58702  -101.292545599999997    48.2311136000000005
-54657  -90.9206207235583292    43.1920956497528863
-79369  -102.134301788732401    33.9497005915492949
-47537  -87.0768414491462295    38.1176630066815179
-23226  -77.5170796258017418    37.5800999793299084
-66071  -94.8696217606010208    38.5819036381077609
-14507  -77.280029427192801     42.7010709125745365
-34981  -80.3619588977403652    27.4005793248587466
-56151  -95.9204777322214142    44.0211348860919003
-73130  -97.3482791133639722    35.4597710820538552
-44901  -82.5135989999999993    40.763954499999997
-03321  -75.2621369999999956    39.6326095000000009
-42453  -87.5930955036993879    37.157707984063741
-25408  -81.436766333333324     37.9439886666666624
-07641  -73.9901012521223009    40.9609017062818097
-12025  -74.1467080966438772    43.0823477280629561
-55355  -94.5335458280605536    45.1050383600909726
-11378  -73.9183042941176609    40.7363505588235313
-87112  -106.517456796937608    35.1010340785635648
-37753  -83.0960493627232637    35.8265748198343061
-75601  -94.7286156563518205    32.5079683873894609
-48820  -84.5817417490325454    42.8421508891653176
-99633  -156.918118350168328    58.7337733602693461
-31754  -85.1051692790697842    31.8543818604651179
-42420  -87.536446464252478     37.8157817280514124
-46916  -86.5108814915254669    40.6755427796610221
-76652  -97.5422695793331229    32.108011148666705
-01032  -72.8183724983949361    42.4445192560192837
-88254  -104.394203097402553    32.6267951818181743
-13110  -76.2832437571011894    42.8911190688272868
-30327  -84.4211487502529678    33.8664540527986162
-71854  -94.000517862200752     33.4291997722841572
-25808  -81.3342640000000046    37.8280659999999997
-27325  -79.5795491441710965    35.4591150485893962
-48234  -83.0445375538042754    42.4334467146793415
-95409  -122.631707347699603    38.4592034832751892
-45348  -84.658243310199893     40.3261863701366892
-43787  -81.8102753056085845    39.532077561507748
-50023  -93.6303732588914386    41.7225184212071127
-68741  -96.5883759710052345    42.3549137860824203
-35583  -88.0533812222222139    34.364216666666664
-17067  -76.3184143924016212    40.3855684528093946
-68771  -97.3412560011820034    42.3769655768320774
-92122  -117.210649426927603    32.8551914199578619
-79739  -101.528506940832827    31.7766843586559524
-46342  -87.2603255918723733    41.530898157604959
-18928  -75.0396999130434779    40.3385692826086952
-05304  -72.5748847499999954    42.8243222500000016
-45333  -84.3363351863192463    40.2537719596091677
-55339  -93.9574670723154952    44.7263503360116488
-99789  -150.998791749999981    70.2171972916666647
-38111  -89.9451195121479543    35.1103947481074385
-77013  -95.234223793606148     29.7884024950634121
-75705  -95.1091395472771097    32.3612517812686988
-05660  -72.7826302592547876    44.2483646061202478
-33931  -81.930433737667812     26.4522172778120854
-60514  -87.9558657960030104    41.7928953174962032
-66046  -95.2286385587931647    38.9287152847614166
-98092  -122.153467538366044    47.2941414797148241
-27048  -79.903708662717662     36.472054609345939
-99158  -117.242917087562745    47.1298649665366085
-62056  -89.6509121030953793    39.1815187253411494
-52728  -90.7256897321101263    41.4579159192660214
-19108  -75.161760000000001     39.9599825000000024
-06112  -72.6963169350725309    41.7926019698551627
-70753  -91.7388316141649227    30.9417277589851771
-04131  -71.8579645000000085    42.7051211250000051
-72402  -90.5757156666666674    35.9220796666666615
-38772  -91.0474958918918844    33.5762541351351445
-20654  -82.3668668333333329    34.3940091111111101
-91001  -118.13737290495169     34.194109462834227
-88351  -105.18555095527158     33.5203042108626121
-56717  -96.5340681153846276    47.541118307692301
-83804  -116.987605456669812    48.0241208641107207
-96065  -121.919595164112039    40.8601617423861327
-37766  -84.0684947770834157    36.3781869411110179
-05071  -72.5406425611511168    43.5615030199840447
-72118  -92.3074735538148872    34.8254257672517511
-48874  -84.5932348260869418    43.1887468913043406
-72086  -91.9215273150671095    34.8153742727497857
-19451  -75.3610869999999977    40.2489345000000043
-06631  -74.4735473333333431    40.3341409999999954
-80183  -105.112241588235293    39.1525828431372531
-18101  -75.4694707437838161    40.6037061513514033
-29591  -79.766544747261463     33.9326937881424229
-56369  -94.3410695673469206    45.4700117428571176
-27584  -78.4265100804597353    36.4933881195402279
-15537  -78.355785156377749     40.0080757873747004
-36695  -88.2499351795289186    30.6407498543247669
-33066  -80.1780196529949762    26.2500884190500905
-97050  -120.715741267666061    45.6861478115631598
-32901  -80.6206396702925332    28.0723552849663278
-80465  -105.205653222087307    39.5963403442508834
-30726  -85.1324756222222021    34.9767385037036931
-30075  -84.3893563030050728    34.0503312321321232
-26323  -80.2893522345971178    39.2587589644549908
-90255  -118.217225396909498    33.9777831623623356
-60112  -88.6895527670766626    41.9244177725410267
-52742  -90.5278605176056459    41.8325151175602628
-64722  -94.5462782093862586    38.2788956606497948
-99627  -155.569464641304336    62.9445094673912919
-24479  -79.2050209469839217    38.1641031447118664
-41168  -82.7691960464477461    38.3101985779251137
-73855  -99.8757385476190507    36.8080814761904733
-24112  -79.8606813051909654    36.7039142114597752
-31407  -81.2118597805146152    32.1852844730888847
-27022  -80.2253366222276867    36.5118803614582106
-60474  -88.2779347611241292    41.173656829039821
-78019  -99.3839498172043534    28.0444212795698533
-00704  -66.2260710918163511    17.9659847964071808
-01887  -71.1716279620209917    42.557974165960033
-36540  -87.6971596612693389    31.467339875647685
-33305  -80.1264135775328441    26.1507876623348032
-72424  -90.7290792781954991    36.3925661353383489
-59065  -110.731802638679071    45.3186601952830728
-93960  -121.325496068655369    36.4243473108137295
-22903  -78.5719563210774936    38.0250942143859376
-95037  -121.655758795070156    37.128685865817566
-70816  -91.034113870764827     30.4282472567835569
-12973  -74.5699002371134156    44.2432522439862765
-32092  -81.5122622552551235    29.9711525689581428
-39611  -91.0693254999999908    31.5042074999999997
-10567  -73.8890741671376077    41.2929009600621697
-44094  -81.3903673829989458    41.6189007087483134
-17865  -76.788863468085097     40.9976625744680874
-87459  -112.443968250000012    37.8226697500000029
-24149  -80.4314024504914755    37.023777154693029
-91364  -118.599145991971653    34.156333653619015
-61338  -89.6780556428571316    41.4647108277311176
-66962  -97.0858956234498436    39.5872392006764073
-77449  -95.7288712694916342    29.8331080152187766
-38949  -89.4253549074675789    34.1871330016233799
-52660  -91.2973478201873405    40.9901898196359511
-58057  -97.2434745776306215    46.4279161640912363
-95452  -122.554546835971223    38.4168418799999998
-70805  -91.1505324988241767    30.4866187921784437
-08876  -74.680829256342264     40.5817492216332525
-58563  -101.446222042688575    46.8538975802616875
-07933  -74.4660324895288284    40.6856150628272673
-52028  -90.3828484444444626    38.9691139999999976
-23558  -79.0175642857143004    36.7996044285714348
-74632  -97.3504094541858223    36.9393903546472302
-44017  -81.8650338412235357    41.3705399987859934
-49815  -88.1316912490272983    46.2402555291828889
-92378  -117.223772261904699    34.2331899305555396
-15678  -79.728362252485141     40.287035554672002
-05471  -72.5926900539829063    44.8604402847972992
-64866  -94.14365408624802      36.8691721595924733
-13121  -76.3016132999999996    43.5127845999999963
-28676  -80.8594544865880636    36.3281660160251434
-77510  -95.0873729892906709    29.3707120348059121
-33952  -82.0967685057534453    26.9891521030936623
-21214  -76.565413831337608     39.3513028320318199
-71646  -91.8231922439912722    33.2366634211337413
-57226  -96.7130890180877856    44.769986124031071
-64622  -93.5511126001353261    39.489444120433042
-58370  -98.866287649028024     47.985549217062534
-18964  -75.3265830223649147    40.3025933578357893
-78642  -97.9286598672976396    30.6905769014665211
-78579  -97.9592840050125346    26.0958163333333601
-58503  -100.771934053468371    46.8702166546713528
-54517  -90.8981806417003355    46.1465526639675545
-66541  -96.3597368788426394    39.9588751121157628
-98050  -121.914499876262752    47.5402201616161975
-61848  -87.7011908697183173    40.3052670352112656
-64831  -94.4461490190977884    36.653303212565838
-22830  -78.9508985204543023    38.6411977700002254
-48637  -84.3368038397626805    43.4157717462907087
-43060  -83.5743065063386865    40.2167432826248969
-56274  -96.2007194438775599    45.8891521632653436
-53143  -87.8300613358440927    42.5636744297896783
-48529  -83.6703659167413321    42.971328319158431
-10012  -73.9977588532258466    40.725446266129012
-02703  -71.300744645106505     41.9283326962136584
-53128  -88.3123082440573199    42.5246811179079813
-70148  -90.0627240000000029    30.0306114999999991
-72469  -91.3215548801715613    35.9678393731459565
-72117  -92.1732729209229547    34.780082993538521
-38680  -90.1229767011204359    34.9642968267002558
-36025  -86.3416514449599504    32.5385238173766282
-14461  -77.125424333333342     42.7978362777777761
-81334  -108.718577946981895    37.2000014575856142
-47176  -85.7615265999999963    39.5232864000000035
-52170  -91.300540961740225     43.2137426440446504
-10802  -73.7875251428571488    40.9133944285714293
-62823  -88.4474896194939362    38.5147388284910974
-37185  -87.8216699690298555    36.1001728405177715
-01339  -72.8770148581927941    42.6214022981551537
-56289  -95.2087120755696787    45.340150673941352
-38913  -89.4012150255318687    34.1318221382978919
-97830  -120.149040294051218    44.9393633698900175
-75948  -93.7621624291801794    31.3218876602465919
-24120  -80.4128964214795872    36.7250615525212964
-42302  -87.1171996666666786    37.7748259999999974
-27822  -77.8593480311995307    35.8158928858284824
-34480  -82.0876697012328975    29.1255940311904347
-43222  -83.0296411746280256    39.958308360219192
-74017  -95.5898139989844395    36.3548577704085147
-68344  -96.4029001848375913    40.573129044765345
-73757  -97.4516192315789169    36.277963889473682
-78964  -96.7809671999999921    29.5689963999999961
-45874  -84.6878040355682344    40.7929318878523048
-62519  -89.4017594040404333    39.9351005959595895
-71063  -93.5218382177777983    31.9027536393650664
-68178  -95.9466505641025833    41.264397333333342
-87529  -105.613163348739477    36.4569542763224206
-45863  -84.4523295064638262    40.8970352536627146
-16045  -79.9166352114882415    40.8509014090513034
-61369  -89.1491166913875048    40.991884582775036
-68328  -96.8394596470587601    40.4738314368872594
-27697  -78.6229194999999947    35.7797957499999981
-32603  -82.3484429643916229    29.6551179977745143
-62949  -89.1396830897009238    37.8313409734219519
-63880  -90.025464093750017     36.3288942499999976
-31797  -84.3317594883720716    30.8549258139534821
-58353  -99.6028825169081529    48.6356951545893637
-45211  -84.600735082259277     39.1547016630105915
-54746  -90.9227430000000112    44.5101879999999994
-47639  -87.5752832334736269    38.1813346808616032
-01536  -71.6953844397884836    42.2294662393029938
-55309  -93.741215433864312     45.3663487710549731
-70599  -91.9534830000000056    30.5595739999999978
-53120  -88.3973518026692631    42.7876773999046591
-42533  -84.6051316205356869    37.0737760252976258
-70706  -90.9268450040825371    30.5867108380065922
-37914  -83.8246335250839678    35.987950166935839
-49090  -86.2469986542220539    42.40769012566237
-97731  -121.862779870786454    43.1666243239700762
-33442  -80.1452911936319623    26.3122443370495525
-57242  -97.3893871258685806    44.7662254058030911
-76565  -98.336690322727236     31.6555899909090996
-16105  -80.3406329059004776    41.0458275306845835
-47260  -86.1972410246700775    38.8395191861451323
-10034  -73.920901372434102     40.8658681319647528
-43103  -82.9341783769018974    39.7253637042984593
-37659  -82.4962794211451182    36.2967968524396909
-28556  -76.6562241966260274    35.1278716128563886
-77078  -95.2578937388908429    29.8491335280940646
-33626  -82.6136817436653388    28.0596643210724075
-59560  -100.291790000000006    46.6784344444444486
-19017  -75.4638715924369734    39.8877107268907594
-23111  -77.2912182980514899    37.6084759699004252
-78724  -97.6305895350571404    30.2889083155128027
-33946  -82.2813592843589987    26.856766188717863
-95717  -120.838453395757099    39.1723148163862476
-67155  -99.11655933591733      37.2106099741601994
-58474  -98.0864945760119866    46.1133419769114568
-04988  -69.3324440735857195    44.5960227972195895
-43201  -83.0018563108398695    39.9915500045466104
-95221  -120.568349243536275    38.0548817931609307
-56748  -96.0329662474747323    47.9222209507575769
-24538  -78.9629648135040441    37.3451940075365343
-41751  -83.1333316477986699    37.213389696016705
-55705  -92.2528291334997022    47.4714358042731703
-83449  -111.333708650154762    43.4467253962848687
-95323  -120.698160541130093    37.6267826174429985
-95433  -122.511788879999983    38.3116877199999948
-47841  -87.1124190986848959    39.2805215975149125
-47145  -86.3028130136506206    38.3315204022750891
-50075  -93.5637463030660115    42.3268875640723294
-41234  -82.7425100461638863    37.7956248719116132
-73447  -96.8789223329312534    34.1949995765983275
-83857  -116.809379057835699    46.8976417151742098
-07059  -74.5153087940031185    40.6286225127150331
-52352  -91.7680785044141061    42.2838304373995868
-97051  -122.861142798634418    45.8672341738264961
-77960  -97.2380673357271093    28.6947400807899804
-28370  -79.5246281499999839    35.1892202499999982
-04691  -67.2597698714455277    44.7588528228672615
-32721  -81.2991674444444357    28.9978087777777773
-39167  -90.0491774545454717    32.0949233295454377
-85311  -111.981773615384554    33.834933969230768
-52533  -92.1672272744150263    41.0156632768361931
-02115  -71.0940775888446836    42.3411867776892095
-44004  -80.7899012366270881    41.8651168432497514
-45779  -81.9729157386542084    39.0012153192488427
-19014  -75.4340488690142053    39.865536792518121
-47859  -87.1732539724962976    39.8848308998443173
-07002  -74.1188486393625254    40.6662774333240833
-59937  -114.397730058826355    48.4108850731514337
-01827  -71.4980243226309256    42.6732105355629727
-83401  -111.966662112487342    43.5344170090716531
-03076  -71.3191611030375583    42.7344415362593821
-84335  -111.8573225181308      41.8335666853931656
-11939  -72.3422925106384014    41.1276926966115468
-18944  -75.248913761694709     40.3795748300781909
-70810  -91.0843331933798197    30.3565636835433494
-36542  -87.7531642257801678    30.2698440122892656
-99745  -154.257528673913015    66.0468826956521724
-98025  -121.906340793103425    47.4309198850574845
-50522  -94.1982864129996358    43.1946281308034585
-89047  -117.635377381147507    37.7578189631147652
-12206  -73.7773795913212354    42.6702750200777103
-80542  -104.99144087120338     40.2333322410612055
-34972  -80.9045772248573627    27.404951991002342
-07112  -74.2119024501245974    40.7119627899002694
-17857  -76.7851394489720462    40.916286971916243
-16360  -79.8842850094906538    41.6841668911736392
-22650  -78.3889353678425067    38.7612109348158995
-72156  -92.6841574994283945    35.276476420571484
-59214  -105.908542199286742    47.244337522068669
-82433  -108.906166200071539    44.1603438238656594
-00794  -66.3075564249012217    18.2103783761528817
-99766  -166.768037968421169    68.347591831578967
-92014  -117.250125804688793    32.9632218192652573
-80648  -104.781641316077597    40.7350596854156422
-28630  -81.4222876263676056    35.820173503133887
-53526  -90.3433755659008995    42.9723122539299069
-19950  -75.5917485830227207    38.8202107786462918
-33479  -82.0685840000000013    29.2204493333333346
-71039  -93.2872773890157134    32.4327527966247118
-44813  -82.529570569420045     40.6058860396893877
-89816  -116.347775909090927    39.4061884545454575
-49043  -86.2902712955413591    42.2956970488322668
-59714  -111.160237826569627    45.8497802828645007
-04267  -70.7817601820331106    44.2194200023640818
-72944  -94.2211402044930679    35.0505354363285662
-67001  -97.6268892305180032    37.7754134549696658
-12203  -73.8417499041511007    42.6797605873672268
-18929  -75.0889300666531625    40.256738976451885
-55402  -93.2714633405797287    44.9756951594202832
-14039  -78.1731305378788193    42.8316198143939459
-73255  -98.7558635000000038    34.6191589999999962
-74078  -97.073469750000001     36.1268044999999987
-27342  -79.6280781176470498    36.0753138039215813
-30528  -83.7643037029424988    34.5948980082824846
-04107  -70.2305320867580889    43.5973541901925685
-29579  -78.9380624342025357    33.7442436878407008
-00730  -66.6125183340594731    18.0237540999757826
-59472  -111.170503827267197    47.4037158494756241
-69143  -101.016599036791931    41.1769698490944904
-36107  -86.2775135435272205    32.3792106605425971
-22724  -77.9113734674924103    38.6325098001160967
-33476  -80.6612758308457671    26.8173016915422835
-60502  -88.2558802224459527    41.786150839504387
-65754  -93.302068501378443     36.8532985502166284
-26343  -80.4003892612681454    38.828059507257386
-08077  -74.9949108207110413    39.9980793063412392
-25033  -81.9224593132807968    38.6034205631164937
-24869  -81.8260781052631643    37.5518690175438579
-72615  -92.9721912695035826    36.3241590638297822
-20623  -76.831099408536673     38.7449474728381844
-62846  -88.870438995260713     38.1508719123221951
-31779  -84.1682185817155926    31.11404132729621
-46542  -85.8527022190687461    41.4055286734637846
-44866  -82.1912696916425176    40.9139144569782189
-93618  -119.387458946161843    36.5331821144899891
-59315  -104.860249531222678    47.4244899204250245
-02702  -71.0583985139899568    41.7961288382765588
-29404  -80.0659509147663471    32.8954857839252384
-31762  -84.5047255744680967    31.4312801063829852
-27844  -77.9485748061924681    36.2510265776949652
-12304  -73.8992377053077405    42.7754854805913496
-10588  -73.8301550634595429    41.3315247932445828
-27814  -76.9401324740994852    35.4135219449926311
-90022  -118.154871981434027    34.0235146920455733
-68736  -97.3612063722979286    42.7330853787029028
-16613  -78.5475861063448519    40.5552689296246882
-82210  -104.800207280728344    41.7463821274658216
-45228  -84.4176980000000157    39.067600169811314
-84323  -111.864018999999999    41.6971029999999985
-99568  -151.398157914325054    60.2248597210419874
-87851  -105.544942399999996    36.4400019999999998
-98199  -122.399930158159265    47.6474988590942488
-30415  -81.6131459368035479    32.3324123742804161
-15870  -78.6204231169346031    41.5838582437958948
-95663  -121.176817409929157    38.8540039588653059
-67109  -99.4718185507246773    37.5819329565217117
-40503  -84.5376800308615657    38.0040107375752143
-06490  -73.2972243333333324    41.1412093333333289
-10174  -73.9754520000000042    40.751457000000002
-72466  -91.3294645779085812    36.055106385883029
-20731  -76.9117047499999984    38.9003360000000029
-65655  -92.4036233830088349    36.590220089885058
-72080  -92.8072737668529157    35.5006928771650294
-30320  -84.4286096363636318    33.6552197727272713
-42288  -86.6343914210526265    37.1835217368420956
-03595  -71.5305177464408928    44.2825419077965989
-36703  -86.9476511668701164    32.4403027169675298
-50875  -114.236105714285699    46.3748000000000076
-45304  -84.5220881456393869    39.9887702298428138
-76905  -100.349836451893111    31.4729469784403761
-93426  -120.956106341434477    35.7944869768924079
-16332  -79.362180957317122     41.3692614857724053
-04411  -68.6241642170542576    44.8891324772287277
-12464  -74.3290168610895279    42.0691317642024316
-97117  -123.249431530163008    45.6000005689123924
-26270  -79.5555690076335651    38.8885967366412331
-07420  -74.2985279856719671    41.0299841368576068
-35111  -87.0941477111728233    33.2807599620690979
-91330  -118.525751     34.2498333703703679
-52071  -90.5151110944206607    42.3617887167381966
-20866  -76.9361493938996688    39.0994600033889981
-64082  -94.3984942026025635    38.8544103925926407
-97502  -122.927354613725612    42.3861519580335369
-76265  -97.5369384481817434    33.7179409489499591
-04083  -70.8024329286658087    43.4670603378468101
-49327  -85.851374344049475     43.3428368929548711
-39443  -89.1073901397885066    31.726143347246694
-43360  -83.6397587295712697    40.324567768046883
-47448  -86.2349955730663709    39.1989270716535216
-16930  -77.1314783963692037    41.5571490771867929
-29638  -82.3354975121125392    34.3660945808122378
-38541  -85.340377952010499     36.5110673150669811
-76564  -97.3515446666666691    31.1998386666666647
-75123  -96.4409445000000005    33.0254219999999989
-59043  -106.715367108459859    45.6035909392624674
-89705  -119.788001347147372    39.090782420948095
-84118  -112.008577716154008    40.6516100387232129
-81003  -104.627275548096435    38.2799789467240856
-43311  -83.7539244580517703    40.3602995058334173
-15647  -79.727014628770263     40.3437771020881684
-98343  -123.767315999999994    48.1328644999999966
-95447  -123.213305666666656    39.2867040000000074
-24151  -79.8818873462484333    36.9779911984756353
-99140  -118.687861036919287    48.104728594680445
-68377  -97.0267958404221531    40.2156030867642613
-84360  -113.517747909090929    34.9167738181818166
-32640  -82.0360043068716749    29.5998207357211314
-48050  -82.8025452191082678    42.7840942815286454
-15272  -79.2994236666666694    40.5577403333333351
-90242  -118.143043114964797    33.9211875966660017
-36311  -85.690828006232536     31.5979185837111203
-39116  -89.5459320507027599    31.8740047630522909
-10035  -73.937569838323256     40.8019485314371551
-02343  -71.0060532923178727    42.1481151901042139
-55108  -93.1798424138860639    44.9811322814289909
-07626  -73.9611410630042343    40.9407915136560447
-79107  -101.814342277736074    35.2292284700564835
-29405  -79.9865268458934935    32.8610716886549881
-97134  -123.963704389969323    45.4535662845444435
-57243  -97.4405313302604412    44.8991732011930935
-80922  -104.70045815779126     38.8932422570021856
-33064  -80.112329495684989     26.2785222810140695
-32818  -81.4854029400273276    28.5821690468211465
-49735  -84.6798960133714473    44.977879450063277
-29540  -79.8768095637575755    34.3790090732174534
-33920  -81.6499089374671172    26.7112675906464467
-69201  -100.575911423823754    42.8515943267364108
-98380  -122.876579182030881    47.6009500981738753
-72947  -94.0605250595786089    35.5488091167618734
-94520  -122.039941494599915    37.9850070275990319
-61723  -89.2573251673506292    40.2591952306870127
-30019  -83.8953283702249024    34.0030134251754745
-07860  -74.801478571674977     41.0601748132359674
-86515  -109.05779508688515     35.6739788950819516
-52158  -91.1835835767195277    43.0457710661375827
-49895  -86.6393541761206478    46.1413175827052697
-78526  -97.4784855694017978    25.9738028411743223
-31321  -81.6524052987487607    32.1865103237776395
-02807  -71.5759918958586638    41.1733090422195573
-88592  -109.63447124999999     34.4415017500000005
-93405  -120.710320902814829    35.2667712538999396
-58222  -97.6969847080265055    48.6290402114084088
-78634  -97.5560428660095056    30.5460164194961834
-27258  -79.3296530558231154    36.0407969338288865
-49271  -84.455743883576929     41.8389830528683007
-80747  -103.128308772357641    40.9539872962398661
-33166  -80.3021866219369258    25.822567576368197
-75669  -94.5583132177309409    32.0311366450407604
-06611  -73.2102140644295361    41.2584118903072365
-60586  -88.2248097656110701    41.5648205673405684
-82334  -107.099342258741288    41.8039556503496783
-58535  -101.215039441540654    46.4823527942665038
-48418  -83.9829245127860418    42.796611982503407
-70775  -91.3680574767412992    30.8773598747104963
-96021  -122.279462033901822    39.9497337307540334
-24824  -82.6946128148148176    36.9538308518518477
-99659  -162.04029700000001     63.4784195000000011
-48158  -84.0353232144871498    42.1545576933070123
-62931  -88.2934449520958395    37.5326350558882211
-70459  -89.7741745999999949    30.3161586000000014
-48761  -83.8628449970510985    44.5009944108781497
-94614  -122.212745450000014    37.7326126500000001
-85123  -111.674333508044796    32.7491051677230445
-98565  -122.931742024038371    46.5985164663461191
-88944  -117.739188999999996    40.8741136250000068
-10676  -73.8608547500000014    41.4798408333333342
-37687  -82.0907440719686292    36.1826349231790729
-75792  -95.099318275510683     32.4586912416996825
-69003  -101.936111333333329    40.0133563333333342
-23848  -99.9046620000000019    36.7096769999999992
-37785  -84.2523663333333417    35.6380351481481412
-41368  -83.6600841717171733    37.5864548181818137
-76244  -97.2830419052645112    32.9316950979040612
-98280  -122.905005416247363    48.6047046150869946
-05153  -72.6262596138904399    43.4260358730708518
-26575  -80.4511728448275676    39.6899653374384087
-67952  -101.168952173054507    37.3112083495935494
-48235  -83.1952019783838921    42.4277004491512812
-65275  -91.984202451011015     39.46551926594082
-97473  -123.800230504510139    43.6606416378865845
-75652  -94.7670337109472456    32.208040977630688
-14508  -77.9964016250000043    43.3241394375000084
-57460  -98.616312450422825     45.2712485245966505
-53506  -90.275049870447063     43.137381996411321
-45203  -84.5300139192545998    39.1033344645963012
-76052  -97.3843781439676519    32.9653153684802405
-95118  -121.890872294961142    37.257048292003347
-04280  -70.0684793133444117    44.1132550521450284
-62833  -88.1469463054187514    38.3679894581280863
-71419  -93.7157648555249665    31.7891603915842929
-78080  -96.7561425000000099    32.9859539999999996
-62082  -90.3632740299050568    39.5004789941095282
-31087  -83.0626118215427169    33.2402636179826985
-80456  -105.745335859878566    39.275849210027765
-46211  -86.4936797142857188    39.7312814285714282
-62083  -89.1892972507432944    39.3542164549058455
-42083  -88.2797705644504305    37.1576449874680605
-16845  -78.0145625664222422    41.1375821885900308
-26155  -80.807587593143765     39.6380406135429766
-24805  -81.6795824999999951    33.6800420000000003
-04750  -67.8463064799627205    46.9271194599256063
-02720  -71.135234876818501     41.7207787785782571
-75423  -96.1995803715285405    33.2825027451574869
-12739  -74.5989629999999693    41.4469915454545372
-29348  -82.1339122857142883    35.0767264761904798
-61458  -90.1834449379777539    40.7847069611992978
-52344  -91.6841358750000097    42.2924917500000106
-67831  -99.7664536008146428    37.1871891384928617
-40464  -84.918454792455492     37.5745458475250942
-50167  -94.0453745458787438    41.7454177939346138
-60464  -87.8483042218696255    41.6645254924646622
-69220  -100.107503666666673    42.8708860000000058
-14863  -76.7122783529411976    42.4570996666666645
-41204  -82.6871380359777675    37.8255204827797158
-98924  -120.567932833333316    46.6895455000000013
-84343  -113.419792000000001    35.5394927500000009
-04574  -69.3865475887469785    44.2743204499226835
-62237  -89.5906767158594448    38.1924954589963335
-98312  -122.721949275548397    47.5774355992667566
-49289  -84.1002665000000036    41.7704100810810814
-53545  -89.0254284373548046    42.7045968102006626
-46067  -86.5176918571428502    40.4167790000000053
-67120  -97.3694020706180225    37.469913353720024
-04652  -67.0573727046673582    44.8275888256625237
-79839  -105.82721964128929     31.284631564471848
-91741  -117.84801338719825     34.1418457635658257
-72365  -90.4258509642243382    35.5265980343447012
-58421  -99.0765562057207489    47.4425189557888274
-19079  -75.2692533631284277    39.9036989201915517
-50141  -92.9485851629244166    41.8741229221932443
-78501  -98.2389162766697126    26.216021399639974
-49080  -85.5863499975593811    42.4613761322759302
-28610  -81.1372460893738321    35.72826106724537
-08037  -74.7838310903882615    39.6374585274491622
-59538  -107.831422974914915    48.2531382558722655
-92303  -115.738509833333339    34.4456894444444472
-33160  -80.1358410845796385    25.9425793929860689
-30824  -82.4968355042094998    33.4973774633377559
-44121  -81.5337971287788577    41.5278404570739212
-52032  -90.8292031105534647    42.2920440970478282
-12148  -73.851153780946234     42.8407726320027038
-21208  -76.7275048651502232    39.3801841395039816
-36912  -88.3090311229819918    32.2308072619094474
-19707  -75.6877663933086922    39.7806541112472658
-62702  -89.649130681826307     39.8181135419602725
-70547  -92.6280762499999923    30.230254249999998
-30030  -84.2923974930025395    33.7726047563118073
-17751  -77.5023419494172572    41.105185657717719
-59075  -107.743365670329666    45.4306768461538439
-15621  -79.4844735000000071    40.2129490000000018
-75783  -95.4289005239646144    32.813896884402304
-29003  -81.0226545898941026    33.2536440573428322
-20879  -77.1810065851520761    39.1705124833002216
-48161  -83.4312195401464862    41.9058895008991996
-63347  -90.798319699405269     39.0619442814920816
-83610  -116.74060407245031     44.6534832217107791
-61435  -90.5668910848861088    40.9892993022774164
-25466  -79.2672484999999938    36.7123246250000008
-54702  -91.5134547647058838    44.8123071176470447
-67867  -100.463146444224989    37.5736016722606863
-53719  -89.5033854567888625    43.0260345981983008
-65728  -93.3358190773809611    36.8722534583333328
-96702  -159.308710000000019    22.1606590000000025
-47598  -87.2077641668126233    38.3796718899123803
-77344  -98.8370074999999986    27.4273227499999983
-13409  -75.5929030291948436    42.9709605709230118
-31416  -81.2471993999999995    32.0020398999999998
-30753  -85.2946532828021731    34.5695383713400943
-28282  -80.8458329999999989    35.2251837499999993
-15217  -79.9237092952161561    40.4313804719135064
-24828  -81.6540597434782285    37.509522643478256
-93649  -119.349325468926594    36.8423374689265657
-81244  -105.165021170700598    38.3650609872611525
-04911  -69.9484386420077442    44.7787949534367584
-65723  -94.0304778612359371    36.9605303961638256
-28316  -79.4280325000000005    35.1518599999999992
-29125  -80.4523809330939912    33.705044749344701
-76852  -99.4363973326402828    31.3518644781704978
-33327  -80.4109419344887613    26.1163403919414776
-13661  -76.108611895418079     43.7081532931095964
-34423  -82.567846000000003     29.0230682500000015
-30606  -83.4283959814162586    33.9393386177552259
-63626  -90.6885578238683365    38.0673033658437063
-61520  -90.0213325666573212    40.5562350285797422
-69023  -101.84107552812489     40.4714083015625334
-69039  -100.389293400696843    40.6984993658536141
-67579  -98.2299825692869462    38.1616304309955581
-39045  -89.8147373168951333    32.780950754123964
-38736  -90.5381505598504219    33.6353697680798476
-04747  -68.2672993171003952    46.0200421044610479
-87820  -108.598750583333342    33.8536227708333328
-29845  -82.2242298002382768    33.838508309892724
-76804  -99.4323825769230609    31.6193089615384579
-36339  -82.5929973333333436    28.3418549999999989
-13345  -75.3329928821752901    43.6876951238670586
-25437  -78.5732794107317289    39.4321953619512442
-85138  -112.011611680669333    33.0486673849668477
-74750  -95.0128213782607816    33.9879745217391118
-75716  -96.7574385000000063    32.7436725000000024
-24847  -81.4130641724138542    37.5631063667711231
-30655  -83.720050081128889     33.782018219231901
-46513  -86.4443999333333153    41.3610263500000102
-48883  -84.6645582316979954    43.5452722118240132
-41522  -82.4119912173950127    37.3138808847857035
-74229  -96.8380945000000111    32.9037605000000042
-56510  -96.5388385231253494    47.3663532320407725
-24059  -80.1279284183324449    37.1538537501063431
-31640  -83.4371955000000014    31.1600457500000019
-71322  -92.1689317191761859    30.9230695707837988
-74346  -94.7795949007244332    36.4526975293795488
-07734  -74.1339147674623433    40.4431871271826537
-87732  -105.252095249440629    35.9393240447427829
-81649  -106.371545113043553    39.5046107420289729
-78752  -97.7034134416701505    30.3314601706917735
-07751  -74.2626177308722077    40.3584705241397188
-10461  -73.8403438964300562    40.8451249603765589
-60124  -88.3653786954565561    42.0274314873552299
-01001  -72.6235600691788932    42.0680364945164413
-76351  -98.625929361137338     33.6000815706161617
-92274  -116.072673220509927    33.4600669976425138
-14423  -77.8407520213988562    42.9491311877588515
-19085  -75.3444666706694051    40.0408998514565582
-25805  -81.2045258181818213    38.1657847272727366
-55956  -92.5266073235512039    44.2589204297918783
-68320  -95.9290438183161598    40.4865180236337068
-39710  -88.4456472499999933    33.6265592499999997
-68960  -99.1340410477706797    40.0783858757961724
-45310  -84.6429798139535308    40.3525542790697926
-17066  -77.8626465536122794    40.3685228729907308
-77418  -96.2860288323025912    29.9756456876351614
-24813  -81.7320667210884295    37.3397083877551097
-54730  -91.63721634056607      44.9960327750000602
-12210  -73.7577468241985912    42.6576192678387116
-80615  -104.702929338891821    40.5335429381842118
-33194  -80.444535616319385     25.7552574184028096
-40216  -85.8327098069149201    38.184814099405294
-18842  -75.6185819649806348    41.753480071984427
-51347  -95.3186883338824913    43.4209204411764631
-35228  -86.919501613132482     33.4580470540366477
-92134  -117.144580333333337    32.7246366666666688
-21133  -76.8013164225840939    39.376074448207504
-62330  -91.1402220018222238    40.5891269957482166
-24551  -79.3088139228315185    37.360614367147079
-02145  -71.0915407158897636    42.3908354008165631
-46942  -86.2467838749999913    40.8577551250000042
-61231  -90.735976147115565     41.2130360221550305
-33017  -81.8611268571428496    26.6867259999999966
-25060  -81.4338862319391268    37.9502733441064919
-54932  -88.4812866000000042    43.7844366000000065
-58623  -103.406371218162889    46.1711761852818015
-76627  -97.4017333030301273    32.1197287888563423
-46901  -86.1529473899940399    40.5039843398741013
-56630  -94.4930716635623469    47.7138303393231951
-35440  -87.1773333461538442    33.2925089923077095
-71822  -94.1346462506748907    33.6772429946043772
-63031  -90.3389099585406399    38.8072842550665342
-17748  -77.3413764885993231    41.1564572671009969
-26075  -80.6598317760618073    40.1938518223938388
-15936  -78.9125683683050738    40.1573583193025883
-36736  -87.7688627599298883    32.083554525408907
-68717  -97.2145561087963728    42.3989271805555674
-97527  -123.372023182329329    42.3992118891648389
-18357  -75.2361897487437119    41.2265584723618375
-68071  -96.4702371557285119    42.2332117497219812
-23605  -76.4368543050533589    37.0190582925531402
-71457  -93.1023893722911566    31.7513897779953211
-13688  -75.8229906666666693    43.8961853333333352
-12732  -74.8868319124473061    41.5314256202532377
-18840  -76.5438763797418176    41.9770960299353888
-75649  -94.7510910000000166    32.6958743333333359
-18338  -74.7468967619047646    41.4130439999999993
-24449  -80.2563293999999985    32.7152129999999985
-38924  -90.1547778844686576    33.2970201683923861
-94954  -122.613467965735637    38.2551229803801363
-05667  -72.4129762795597998    44.277914188965859
-52328  -91.6638479068510037    42.0727699483172799
-04532  -69.9950096250000087    44.5160819999999973
-01982  -70.852661899911638     42.6208513122466215
-02151  -71.0067445536860902    42.4161902284143508
-03768  -72.1451546212078654    43.8069005229702952
-13678  -74.9775501891891736    44.8348382702702608
-68335  -97.7956905839693889    40.2874121424936433
-24621  -81.8337989999999991    37.0909978888888929
-53557  -88.816493766666639     43.3382620238094916
-40997  -83.6959846281779392    36.8908904375000049
-35082  -86.1391962145749517    33.137216461538479
-78736  -97.9264857210975777    30.2441408652619437
-32228  -81.3978250625000186    30.3927318124999992
-16438  -79.8510626413963109    41.8867479618832022
-13486  -75.350563211630714     43.3412888153476956
-99141  -118.089674355574473    48.6981134558148909
-60069  -87.9188143490935943    42.1951099842394584
-82649  -108.192445658462788    43.2030866721616178
-56073  -94.4679050797627724    44.3116646868178208
-13042  -75.8474310493516555    43.2508997331661007
-38344  -88.4226586491418942    35.9809203664651065
-23315  -76.8397774835405158    36.7430680951590531
-49818  -87.2469263415978844    45.9222226902356709
-57709  -103.277896578947377    44.0264699999999891
-36741  -87.0535887999999716    31.8981108571428642
-68978  -98.0702768669528382    40.0317536456843186
-32357  -83.862428838709647     30.345374677419354
-56659  -94.0141803753894862    47.6669570607476132
-13124  -75.8156882037037576    42.6428454074073997
-42236  -87.6160124963378451    36.7230678281907998
-82073  -105.863763949152641    41.552500903954801
-49079  -85.8984773811177291    42.2316673919810341
-07036  -74.2568788892576634    40.6348307083583862
-16250  -79.2289430241692543    40.7778475377643375
-30552  -83.4401300400873822    34.7741203514739325
-46280  -86.1326440348314719    39.939378934550561
-01464  -71.6471202474319426    42.5689420901620394
-28643  -81.5313757185681851    36.5282731897936159
-56436  -94.6933780819672251    47.1534333606557396
-07438  -74.5089051229145696    41.0279735657106031
-48347  -83.3665097500000201    42.7152393928571428
-79029  -101.974433716120146    35.8724883132309174
-80024  -104.884012479452039    39.8464951506849374
-51363  -94.9459353054393489    43.4317335606694144
-08087  -74.3717253962085039    39.5942187426800771
-54015  -92.4505373671495931    44.9807189148549753
-62258  -89.7929472919131229    38.4801575429442053
-73117  -97.471520829891233     35.4775079212264259
-15638  -79.3996051576087041    40.2625105163043528
-70518  -91.9494121172054406    30.1323391184336487
-28574  -77.5820352848555501    34.8611432818472551
-74454  -95.507961478937176     35.8686528175632162
-32828  -81.1725753488394446    28.5373354183532371
-61430  -90.3128499901719834    40.9439189631449665
-79698  -99.7349188571428584    32.4755787142857102
-26184  -81.3734185027370103    39.3005863288009252
-93432  -120.493393283817838    35.4754321622419937
-67564  -98.9307580353333549    38.530095305333397
-37522  -83.4560611999999935    36.5928863999999976
-61284  -90.7395251512836865    41.4079106268338677
-49952  -88.8319156930894138    46.7227386991869196
-68643  -97.2583188123527833    41.7315662000000316
-97640  -120.777895208823608    42.9206906705882147
-22204  -77.0995093219713681    38.8602047184060453
-06876  -73.5847590000000054    41.0324057999999994
-64096  -93.5709563903448753    39.2074291579309673
-15648  -79.8460946363636168    39.9354522727272752
-04706  -68.1114096666666597    44.4656960000000012
-29160  -81.0474682187516891    33.7435764917416279
-68443  -96.3740202264678913    40.4654959934762104
-54304  -88.0688379552025253    44.5011823979684209
-84742  -113.195896584507082    37.5309865528168913
-62991  -88.8925824000000233    37.5273015600000193
-72322  -90.8108519477612219    35.0758894402985035
-18220  -76.0695195692307493    40.8386964923076832
-06093  -72.734698120792757     42.0102972943156274
-49348  -85.6063104704170996    42.6736526161081784
-66876  -96.0133401999999876    37.9207833999999977
-11554  -73.5557474039542853    40.7135238874786083
-74939  -94.6408139294806432    34.760376550901448
-97325  -122.860180896625792    44.8364626063201612
-78143  -97.848572558823534     29.2503957647058712
-15563  -78.9428695968119172    40.0977357864676023
-07979  -74.7257874210526865    40.7129893222079744
-50118  -93.381680351960739     41.4541565852941503
-61274  -90.2700712000000465    41.3739318019999303
-53554  -90.4503019699375272    42.9005264699377378
-60641  -87.7476611703579152    41.9462139549403759
-49247  -84.3390370655215094    41.8516917731940765
-04259  -70.0059871078797613    44.2270026160845262
-39175  -90.6068148459733322    32.1016184962496851
-56532  -100.726483500000001    44.211017499999997
-38380  -88.0285814071287547    35.78676450065403
-62667  -89.983959919003027     39.4842768868119975
-50460  -92.6996064686129699    43.223395041605869
-07844  -74.9673398786127194    40.9144949132947957
-77545  -95.4714425226859049    29.5273471569048098
-98122  -122.301796070464306    47.6104615128692075
-34243  -82.5155359713612739    27.4048865775751018
-10990  -74.3682725562086659    41.2623475273463427
-19106  -75.147101118964315     39.9498475388382985
-74512  -100.868425294117642    32.3868339411764694
-74029  -95.9257855551312133    36.8102062681338538
-17320  -77.3814514286663666    39.7613816013686332
-36604  -88.0672716613342601    30.6819216844792493
-76824  -98.6779096799999991    30.7443428799999978
-32819  -81.485034988553025     28.4651654969243531
-29673  -82.4586452853789922    34.721318433172037
-36549  -87.4605000031936868    30.3960290112740168
-99688  -150.015667539215059    61.8447920659105961
-46347  -87.0191143463005261    41.3068519196541928
-44883  -83.1750109886419722    41.1184957301240104
-80290  -104.987276500000007    39.7435979999999986
-18934  -75.0634153221153468    40.3582140576923223
-24248  -83.4956836655137948    36.6225779282906672
-04933  -69.2190003999999988    44.8192264909090881
-64778  -94.4927376397260019    37.9250437260273827
-03287  -71.9122282222971734    43.4414775476350883
-85343  -112.692391682819391    33.3436713303964964
-38937  -90.4716197500000021    33.7817709999999991
-31029  -83.9319319485370414    33.0363949827119754
-43152  -82.6092328891087959    39.3979743469719565
-37840  -84.3686282151097515    36.0350289631870311
-84604  -111.649715125117254    40.2799111788384181
-80740  -103.406684230623881    39.7497572079394956
-55718  -92.4864618815624198    46.6300347041811634
-47451  -86.525117625698357     38.8947925061452224
-49685  -85.7081785149217268    44.7066361344321521
-76650  -96.8675488846153598    31.991623185897442
-31018  -82.6169885204339067    32.9504002038345831
-37716  -84.1580211173472321    36.0961949423836188
-60048  -87.95019556804057      42.2930436572963941
-50576  -95.1729034894778323    42.80711616757592
-82602  -106.306239522123875    42.8322300088495567
-62417  -87.7594428367485762    38.7107861161202322
-64018  -94.7321313434141814    39.4531162930107442
-29834  -81.8455022388663025    33.5129480283400838
-49056  -86.05360973333309      42.3949200097742818
-75455  -94.9760222138980765    33.1859670384146526
-82411  -108.429701461995307    44.4342920950118625
-99631  -149.455942509615284    60.5099925206044134
-50586  -94.435440916718278     42.3872827905532148
-49509  -85.6952157323269006    42.8997743262151019
-56157  -95.9345576519028214    44.3966898016219815
-65287  -92.5162169292624128    38.8769775435307992
-66859  -96.9380374539876755    38.5527105214723846
-17408  -76.8024052173739733    39.9468819870982159
-98320  -122.928990284390451    47.6796900679983082
-95219  -121.390458180160522    38.0108316304471572
-08048  -74.7998127782618525    39.9647228068934197
-48867  -84.1825125416589657    42.9977148583763693
-80802  -102.198097891148237    38.8480352296650366
-47010  -84.8382112760417328    39.4958994913194346
-27608  -78.6471942377817612    35.8084258114202925
-56542  -95.719177111302514     47.5752398739227544
-03892  -71.2939843000000053    45.108306799999994
-01853  -71.0884046666666762    42.7621139999999968
-74466  -95.4356658571428653    35.8370678571428556
-54943  -89.6398268380878989    44.1384477224364176
-43056  -82.3518096568747779    40.0162183655560568
-17361  -76.675440397653972     39.7649832917888162
-76453  -98.3261053494452568    32.57480571473846
-53901  -89.4640380528177985    43.548953204485116
-71389  -91.8148962500000039    30.9864069999999998
-13092  -76.4211689564048839    42.6512607113501261
-54112  -88.1094043737372346    45.0494007417027333
-93675  -119.17900272999357     36.7094288084618796
-68010  -96.12962316139226      41.2567298939873055
-91020  -118.23031130501262     34.2112126584536398
-61329  -89.2137927877846977    41.3810955434782244
-39481  -89.2444288116617628    31.8654946197110291
-14847  -76.7253616018238773    42.61385231914889
-98952  -120.733810397639189    46.3714390900037472
-68974  -97.8643229550173572    40.1379806020761336
-47519  -86.9871446595745539    38.597614693009163
-07727  -74.1724067370638807    40.2045068535899972
-24326  -81.1958085679029864    36.7250773466364819
-32525  -82.9777315000000044    29.2192280000000011
-78824  -99.5253965833333467    29.9485460000000039
-51558  -95.8636533208293713    41.9097443543764001
-04640  -68.2784675173936364    44.5198150789927638
-49674  -85.5819332684563676    45.0587205033557225
-98204  -122.253835202418642    47.8960324085350422
-38080  -89.4739261965836477    36.2272656270990083
-29124  -81.3121751666666626    33.6276569999999992
-37771  -84.3043012564861129    35.8248079496991139
-90712  -118.148035029385753    33.8492867582368291
-93234  -120.09938528362882     36.1992490406674037
-48462  -83.4267405136203308    42.8402451530797634
-55025  -92.9857843300864602    45.2676885222299319
-74754  -95.1050978809523855    34.1847422083333186
-28904  -83.7690068259743015    35.0414848223987434
-59927  -114.636232255884607    48.5248133287775687
-15658  -79.2308758932895216    40.24868330039466
-41831  -82.9483000555947427    37.3825471861365912
-48414  -84.0756189332444137    42.8686341682242968
-53968  -90.2384058911798093    43.6497844192439715
-72943  -93.8010502746862898    35.1914894318671827
-30629  -83.1168932969206935    34.0879888922947671
-23037  -78.1906035624999873    37.6232049999999916
-92657  -117.832235672908851    33.5973493231674709
-46204  -86.1561783118456503    39.772549585674895
-48870  -84.9850782857142946    43.1085712857142838
-28202  -80.8437212623854293    35.2278951897247126
-51020  -95.4082689119330496    42.509452792602417
-14813  -78.0005488406580128    42.243028055512795
-11803  -73.4785210064327572    40.7790580665838007
-51565  -95.5144613198508097    41.6463032190417266
-50861  -94.2646033462282134    40.9176018510638286
-75206  -96.7698693120772333    32.8289680849481087
-87939  -107.407320234848541    33.398967272727262
-04562  -69.8279911717193045    43.7892623303826909
-30557  -83.1797828859145625    34.49071099211519
-45867  -83.5396363394010137    40.8966442395772987
-30730  -85.4180983258699342    34.3815498579492527
-34787  -81.6030365143114551    28.5211836517798254
-16670  -78.5100640526315772    40.2628215614035199
-61039  -89.4752925208480718    42.2025157286219326
-46409  -87.3274238772312827    41.5422434686548385
-07507  -74.0643809999999974    40.9377075000000019
-50546  -94.7143600150322129    42.8425747637794672
-49634  -86.1779867433628652    44.3366203539822905
-95005  -122.088214316686546    37.0873217136768218
-34772  -81.2794087288591669    28.2005818080899147
-24150  -80.6486452608085784    37.3724239689180351
-24372  -81.2483341249999995    37.4189997499999976
-64123  -94.5253949275521563    39.1142863710208175
-37181  -87.4851765788857421    36.2403838696669993
-41008  -85.171579026800373     38.6599015848677254
-06088  -72.6008575593583174    41.9112884417111644
-33170  -80.4110207263559147    25.5586502124607691
-60478  -87.7230547063498989    41.5600967751958095
-67334  -96.1814538829787296    37.0199938085106339
-01832  -71.1218221488684463    42.7841075254180296
-63341  -90.8245226426105603    38.6726475899725841
-38580  -85.3349037673483508    36.2756351007374818
-45212  -84.4521165029328387    39.1636554756439139
-76637  -97.7991064488847002    31.7690148912640069
-30527  -83.7940609697070897    34.4772707352219641
-62661  -89.8481682888411086    39.6654102333538887
-16683  -78.0905466187407313    40.6448190897371973
-28538  -77.5729656056734456    35.4225197314081512
-94575  -122.098534217948696    37.8458335256410194
-83525  -115.430900865537296    45.8012351074643362
-73654  -99.3580383653845729    35.8442020360577231
-67135  -97.4385072081827275    37.916387716094043
-69161  -100.806665112094379    42.0470303805309769
-89314  -115.704755815789426    38.9313425877192927
-34223  -82.3651284130017132    26.9749562434120058
-41238  -82.9475114557033777    37.8283357572578751
-03838  -71.1998213693951953    44.1163631299876258
-23846  -76.8406362907424239    37.0643811573498922
-70041  -89.5187448674739414    29.3615272004709134
-45770  -81.8059470171298955    38.9926274737433616
-15705  -79.1575574999999816    40.6177490227272813
-94957  -122.560353012516359    37.9645936141561862
-40067  -85.3651402645344888    38.2225237138962157
-03873  -71.1838772093119161    42.9307046382209307
-13903  -75.8998966552601644    42.0648567515231804
-35031  -86.556541942595544     34.0998576766246018
-97008  -122.807152558911255    45.4606010775532283
-45311  -84.6373519751813177    39.625404197931779
-43035  -82.993337057622        40.1777160754732776
-92676  -117.634670359270388    33.7485309288648949
-64482  -95.5275876709765441    40.447156481227438
-15548  -78.9409435249999945    40.0991867250000098
-19074  -75.2972355923821368    39.8876242654916879
-88250  -104.974558315727975    32.8298240912620827
-77656  -94.185861945112876     30.3924422193660995
-94074  -122.365645720725993    37.3233591077282654
-70819  -91.0144109153227561    30.4659836310483634
-67559  -99.466990074626878     38.4396776865671583
-85746  -111.027644912928238    32.1377776280152929
-51003  -95.9971347956340253    42.9836978805337253
-85640  -111.048969261818144    31.5993108109091025
-42343  -86.69587854999223      37.6387277092087018
-53598  -89.3415193580419214    43.2121710664335126
-54601  -91.2245015448014698    43.7960748936620945
-62608  -90.2268456363636346    39.4881129090909155
-39750  -89.0667143172745455    33.5559460538194401
-78351  -97.7497336166665889    27.6708537166666559
-05766  -73.0078313349414003    43.9878649949459515
-05062  -72.5651215587447496    43.491956848980692
-73106  -97.5361760203658434    35.482298571108096
-37780  -84.7619041538461602    35.653597769230764
-42788  -86.0319904439024299    37.5366530292683009
-64052  -94.4503912446030114    39.0732235357023825
-71833  -94.0223747401244054    34.1377820894486632
-72006  -91.3567508248231235    35.2721084837867878
-56143  -95.0028827290709046    43.6193034749204998
-18950  -75.0884914974358679    40.4582889589743644
-75840  -96.129461462406482     31.7211231180872311
-00970  -66.1065587499999481    18.3184008202247028
-65024  -91.7455235339916868    38.6188983675600568
-38733  -90.8329229019608135    33.6834833823529394
-49411  -86.24259106658549      44.1138539123312441
-55125  -92.9425228361541969    44.9170483081614051
-28577  -76.3890625222222326    34.8733060361111029
-78352  -97.6638761186440405    27.9713156779660999
-49961  -88.7250133755655384    46.469742038461554
-47161  -86.0994388375097373    38.318348295296957
-64723  -94.5660417678572003    38.3639804413265324
-24087  -80.2554284545457364    37.2280566604325287
-84074  -112.295982055793758    40.5653670098515704
-41527  -82.2905201397850306    37.6334634318996422
-81324  -108.952711566692784    37.7432789757300284
-30022  -84.2434737189940535    34.0293337314783955
-78848  -100.955569499999996    29.3675320000000042
-26050  -80.6022466325966889    40.613223360957555
-88042  -107.591666555441449    32.8271733069815568
-74132  -96.0235135201245811    36.0536392946815241
-46392  -87.0770391608225225    41.181035412973749
-75633  -94.3310037254607607    32.1363206536724846
-19555  -75.9550346293552536    40.4967414529756269
-55764  -93.3023412450593383    47.3208536403162299
-02863  -71.3932562920696085    41.8895653520309637
-76228  -98.0334534182231607    33.5965219366742929
-46544  -86.1545814582995746    41.6446869061241856
-04260  -70.2986192730027426    43.9599666528060737
-02825  -71.7252839844798018    41.7818553526900729
-38782  -90.9857582499999893    33.4513562500000035
-19428  -75.3032318893294814    40.0795311721897676
-58240  -97.4526880821194652    47.6661314496688675
-06234  -71.9492358775126775    41.786791214824234
-20610  -76.6133237906976916    38.5327941627906938
-13369  -75.3802178749999996    43.6530414999999934
-84403  -111.945262183073368    41.1836985547144536
-92065  -116.85700693689185     33.0361936309125568
-31749  -83.3379000749670098    31.41976325594446
-31821  -84.9858813619246405    32.1349990700836514
-48410  -82.9360352000000063    43.5645088666666638
-22504  -76.7080454695511094    37.7676441963140732
-93257  -119.005939039838282    36.0466314194283086
-06095  -72.6700448305385436    41.8619522041550951
-56340  -94.4465980654349551    45.7528861015219377
-85220  -111.576378293032775    33.4145886608605949
-55371  -93.5878131919669443    45.5661360642253186
-66943  -96.9703994541004306    39.6955684467564467
-34560  -88.2192209411764594    32.7061034705882321
-48642  -84.2229375567305283    43.6588845067081266
-41701  -83.2034629115821076    37.2903820471264638
-03870  -70.7611330168153358    43.0102352475196241
-35020  -86.9519814582707227    33.4044946787522719
-56029  -93.5125422093315848    43.5183819999999457
-06518  -72.9131143176335712    41.4169581639772844
-69337  -103.00154823832483     42.7857585361619712
-98272  -121.939335337873743    47.8508730528192814
-76574  -97.4006319062573596    30.5788343016134938
-06377  -71.817923277192051     41.7247338174249904
-87073  -110.463985333333326    40.3648203333333413
-08525  -74.7832974321844972    40.4010546253357177
-16619  -78.4150905865102743    40.6792335161290382
-50146  -94.2646126760406844    41.6554428031495974
-13839  -75.2521910340445572    42.2546470969213033
-18242  -76.1251577763157883    40.9062649934210398
-24716  -81.3632988863635944    37.5233849292929023
-61001  -90.1119812572882921    42.4712155122628374
-65355  -93.3562532207808857    38.2373018481147895
-57057  -96.9234488120611388    44.1023496545668507
-05301  -72.6432926900787805    42.8451670076561868
-56140  -96.3676169387755266    43.9096535102040946
-04016  -70.8882920236220997    44.1901422598425171
-02574  -70.6340625999999929    41.6063082399999971
-35129  -86.4223396250000064    33.7172899999999984
-62396  -90.983226375000001     39.9230533750000021
-79849  -106.265739883831245    31.5810982601903341
-77763  -97.3980619999999959    28.6496921428571447
-53119  -88.470253221153925     42.8771740510355031
-97003  -122.87677836396162     45.5048437448168741
-26456  -80.767218970592296     39.2954759889206713
-37916  -83.9330291081360116    35.9557079515963522
-30724  -84.8045175857143079    34.8372952571428627
-62476  -88.0184389992950287    38.5308669978858802
-29918  -81.2102965723961887    32.7404342129846526
-31730  -84.2598269614419024    31.2104666424060682
-40109  -85.7458865327185578    38.0582885763434646
-38879  -88.7204001252796957    34.1893364809843447
-49461  -86.3306812504563368    43.3862819719434754
-69914  -114.309671076923067    47.8645836923076828
-57066  -97.8634708477390092    42.9922916931882995
-84631  -112.361278729917686    38.9803907637571356
-33019  -80.1235130174362666    26.0204694073577656
-34744  -81.3467987580386165    28.3084639952623043
-46118  -86.5111698068742783    39.6615905516814919
-29526  -78.9983595750401264    33.8580036998404879
-25756  -79.2966595000000041    40.57273
-60559  -87.9752638197203396    41.792510591380875
-60118  -88.2939727250335267    42.0971372147391207
-62256  -90.229585678571425     38.2257791249999954
-62233  -89.8012330266627714    37.9292754821446039
-52320  -91.149594935612285     42.0007294875539969
-58061  -96.9224397273716676    46.2739745856052807
-14105  -78.486174335278406     43.1962342692306649
-77473  -96.1028632416666397    29.8016772583333243
-98242  -121.596615571428558    48.2455114285714259
-65654  -93.8973075616437995    37.0204442328767058
-94582  -121.925418146700963    37.7681313525083056
-82333  -106.804359000000005    41.448439999999998
-94708  -122.261138025640889    37.8937055521600641
-65274  -92.690449103187774     39.0149474169462991
-37271  -86.0450644999999952    33.7589945
-35586  -88.1413846174367848    33.8699799544287146
-18916  -75.1356459354838933    40.3507946774193584
-24076  -80.4226203910165367    36.5847882580708514
-53711  -89.4458742832411104    43.0294992005259616
-08109  -75.048642833362976     39.9520964742744127
-17069  -76.9704632477064479    40.454087697247715
-17078  -76.5906012385884765    40.2996977426945477
-67468  -97.2103568492307204    39.3998170948717856
-84404  -112.007974802168377    41.2731935853788983
-42544  -84.8235365235927361    37.0220906150348199
-64740  -93.677297014963429     38.2303964134246712
-12565  -73.6479205647208062    42.2492600139593151
-78750  -97.8011169564537823    30.4247340256010723
-04257  -70.5326591621237924    44.5648010903056715
-38931  -90.0997746000000035    34.0433589999999953
-20129  -77.597577050375989     39.158656614285789
-98856  -120.126891336390187    48.3556366473592476
-93932  -121.093539264797457    35.9677332056074732
-92145  -117.04984708738958     32.9121004336283463
-17929  -76.1929952765765108    40.6305199216215414
-74337  -95.323429274365779     36.1426110611810074
-16620  -78.3522912094972384    40.8379747178771026
-75202  -96.8041765118870501    32.7804985148588273
-48089  -82.9974547467021893    42.468765003506455
-14859  -76.5377980554721375    42.1185316495501922
-22124  -77.3299665341481557    38.8890649591580484
-10353  -75.3132275999999905    40.9019978000000037
-75603  -94.7000366948676202    32.389523497461937
-17228  -78.085560429858802     40.000373138644278
-58359  -100.163070000000005    48.0893680000000003
-89801  -115.757905839795455    40.8597084341097485
-02882  -71.4644978012142928    41.428595091312026
-91605  -118.402433599013477    34.2080991664050629
-98125  -122.301657668543712    47.7166568859691509
-24747  -81.2133841034860495    37.4002423380537437
-20882  -77.1639210482265838    39.229232987382467
-08350  -74.8704023822714362    39.492378556786683
-17836  -76.607431111510806     40.7143278525179753
-26055  -80.775129085799847     39.766950712251699
-02575  -70.6577962505625976    41.4069514637232103
-67427  -98.3897776368195309    38.5141928044412936
-82242  -104.119350443786971    42.6870725266271762
-80448  -105.682850569611389    39.4579785102473863
-14607  -77.588268842721746     43.1504406497490933
-47138  -85.5998968996534018    38.6789698730912122
-59103  -108.73042375   45.8274027500000045
-43960  -80.816193950000013     40.051444900000007
-43791  -82.0970074366196911    39.8726200704225349
-67451  -97.117035539943231     38.7131175161473635
-45696  -82.4490454876542316    38.5968410127865127
-97722  -118.728708037610573    43.0328491703539839
-17562  -76.0937874557698422    39.9761535674931352
-73735  -98.0368498054144908    36.2933985668358119
-70578  -92.2628694174500907    30.2402169577329119
-08042  -74.6666776403508834    40.013810798245629
-76578  -97.2387539627909234    30.5244099354309064
-70130  -90.0717346962984351    29.9371373037016433
-47467  -86.3439651000000055    38.7675576166666715
-35127  -86.9774009536011903    33.4879186161127222
-87317  -108.76096095400186     35.5851547019318986
-48228  -83.2178088621160015    42.3557447841989756
-35587  -87.4526959058632372    33.8134611244298284
-40575  -84.4180462977527952    37.8434898258426742
-20653  -76.4466657119988753    38.2436651467810265
-22840  -78.7378907300228263    38.3861721500469031
-48728  -83.8231705794790258    44.7548005225943228
-26142  -81.4633587164760797    39.2126220352364641
-25863  -81.315605000000005     37.6325167499999935
-25667  -82.2764860348837601    37.7042937732558201
-04294  -70.2320800421193212    44.6088176996646837
-45384  -83.8840264066389523    39.7116217302904531
-15723  -79.1573355849056668    40.7075135566037645
-71919  -92.9527913333333373    34.6708473333333345
-98277  -122.645578939402796    48.3046069885941023
-44233  -81.7391168227990477    41.2403978830700879
-65656  -93.4653142420290806    36.7808054621799911
-37397  -85.506080840185362     35.204553172639578
-12118  -73.7212634434345091    42.9087493319953595
-74733  -96.4918252204323181    33.8403402225519301
-19947  -75.3826774675782758    38.6748644083762372
-31549  -82.7428316277162139    31.9453673882739224
-83436  -111.459376647590389    43.8811132093373146
-67232  -97.1618756554621541    37.6344340399159449
-42001  -88.6829306516470126    37.0488933206830851
-71439  -93.3812002193086386    31.3310761699688669
-58018  -96.8952051591022894    46.4286414997506256
-36075  -85.8989897530044715    32.3849873719164734
-97493  -124.046283459511699    43.8952067188018091
-73848  -99.9071990720267848    36.7001448341708212
-60160  -87.8578684968997408    41.9001918117248593
-48881  -85.2120661343905255    42.9250864449081746
-45032  -84.0082245232067493    39.5018916624472638
-11712  -147.500232333333344    64.888575666666668
-85060  -111.878773833333327    33.6117879999999971
-21536  -79.1693604212480864    39.6700857765263137
-54568  -89.681743304739058     45.9287397345562667
-39401  -89.2954260626936787    31.2805929642148968
-28578  -77.8716244959324086    35.1988848440392772
-41015  -84.4923448951826543    38.9938271323966248
-04103  -70.2886679636067271    43.69241852166477
-14472  -77.5717992909020353    42.9676246134323065
-24351  -80.7654441204768005    36.580406689761638
-85833  -121.482395499999996    38.6078015000000008
-56533  -96.1468433541365357    46.4068845921625339
-94518  -122.022640640976178    37.9511797882238895
-58325  -99.1160799756810746    48.2933570894942008
-37064  -86.9131398661705248    35.8967602826976915
-75852  -95.7673646215994125    31.0246766515526318
-71747  -92.2076907982194456    33.0532454675238867
-97620  -119.908234969696878    42.1851513200757822
-82442  -107.395569383763842    43.9986492644526805
-04464  -69.4973821890755517    45.2884045976891372
-58464  -98.5730657305060163    47.597022701231154
-64624  -93.7881713136411861    39.5723541410669597
-75215  -96.7681367636067904    32.7595919997332672
-87569  -105.315796984409772    35.3757954276169286
-60083  -87.9246538726749378    42.4302064525408085
-86949  -109.737207499999997    34.2862854999999982
-97479  -123.257393988165717    43.3984952472672987
-84779  -113.172419369595303    37.2373994714086933
-11374  -73.8599816571428534    40.722936028571425
-79305  -102.697589666666659    34.4210486666666711
-05772  -72.7283604333332363    43.7637495402061774
-36758  -86.9054947909404234    32.6410084043055875
-47878  -87.2643057692307735    39.4949103076923009
-29301  -82.0003546881640375    34.93508218099808
-62537  -89.0857435263157953    39.8589215087719424
-20705  -76.9130349219520184    39.047755345190609
-49829  -87.1059267141840792    45.7544956142651102
-28120  -81.0305103953220254    35.3213967257529546
-93103  -119.686928078778266    34.43489841095721
-62272  -89.6184868485839132    38.0017223257080872
-64764  -89.9891452500000071    37.4526617500000043
-77862  -96.3433569999999975    30.5653742500000014
-73532  -99.5683370984126697    34.6674025492063649
-37829  -84.6009725908545818    35.9862479670992386
-74037  -95.9843589039343215    36.0018754115373625
-21015  -76.3064497317635926    39.5316193767658106
-68064  -96.3453863502824248    41.3337125241681989
-97058  -121.181356876459759    45.577180584472984
-30601  -83.3572254206991943    33.9871121459637138
-27801  -77.7622600506485924    35.9217958727095947
-29477  -80.5730277604339875    33.1817188724040619
-58626  -102.624465385585736    47.3668083729729332
-34226  -81.8538269999999955    27.2144364999999979
-56150  -95.1972093541164952    43.6473485323739894
-84729  -112.601780907986083    37.3254954427083234
-47468  -86.4011793834051218    39.2634769536733117
-77054  -95.3990047560543104    29.684168473124636
-33875  -81.4680695790584224    27.4288549105033788
-27875  -76.4784300716440129    35.464190858220249
-62061  -89.776678650728627     38.7810520173041766
-98405  -122.468542313085948    47.2477192133484181
-72573  -91.793008250000014     36.0841782968750024
-90024  -118.436466612518672    34.0658047026825912
-03281  -71.7246301629928809    43.07895460092805
-73032  -97.0555384187500181    34.4095209875000165
-59741  -111.33103646409576     45.804408756417061
-78834  -99.8581440734285763    28.5313502976424225
-56181  -94.6221755805298699    43.6777618937008185
-25049  -81.6083594385964659    38.1249547350877407
-21660  -75.8802386529680462    38.9501408310502342
-12007  -73.9321036692111448    42.4776912442748298
-63073  -90.7577135353845392    38.5849202876923059
-46815  -85.0623437309630077    41.1060764412207647
-75035  -96.7739768572257901    33.1565896941102096
-57017  -96.8345172677147588    44.0058917350300192
-12832  -73.3142079588153308    43.3739572662036323
-04097  -70.2367789166237628    43.8475249821948054
-41347  -83.6025904920634559    37.5195407936508047
-73522  -99.3764281052631588    34.7221938684210585
-92147  -117.221234439999975    32.7246940799999919
-86005  -111.674664582239501    35.1384149259994629
-85933  -110.549218298987967    34.4076469764313586
-55109  -93.0211819160007281    45.014681888541304
-08868  -74.9439203846153816    40.5666960384615365
-97708  -121.437602066666685    43.9055643666666597
-13041  -76.1731592462563896    43.1775650419670782
-85299  -111.910537227272741    33.6774534090909086
-65790  -92.0776376492370474    36.6904876752402842
-17083  -76.4244278709677332    40.2778169677419342
-72212  -92.4164832177704625    34.7825723125229302
-32808  -81.4475042623518846    28.5812964184644898
-31920  -83.7372325000000046    30.8913480000000007
-48304  -83.2339971797442644    42.5884537865230612
-80222  -104.92813440293493     39.6702437214142662
-66968  -97.062112028571363     39.8182225116402151
-30218  -84.5946988423215913    33.1400059874165436
-60654  -87.6356550716417644    41.8925780611940439
-39088  -90.7140304707483693    32.8225137020408368
-99763  -161.041888130434785    66.8351376086956321
-06107  -72.7567201077895334    41.7554006349638414
-62033  -89.835660416959584     39.1291364820800496
-02027  -71.2073327500000062    42.2648524999999964
-04451  -68.2258878223349825    45.5829018045684791
-50321  -93.6640613388225489    41.5462412442185993
-29572  -78.7966712589420979    33.7660083938078088
-57731  -101.631273600000014    39.8436897999999999
-48043  -82.8826334110534901    42.5951911278065793
-20020  -76.9705319749289743    38.8609589362157308
-68439  -97.2146152706793458    40.9959497782471303
-66522  -95.9395090185185495    39.8661115925925955
-31418  -81.1913679999999971    32.142282999999999
-61866  -88.1503002462064273    40.3087057760919123
-67008  -96.7745707656515748    37.465779842639634
-86045  -111.23283885205268     36.1339922308287953
-68154  -96.1199051061123129    41.2645949175225368
-05669  -72.7358494889251546    44.0697397122642727
-45503  -83.7805454219679007    39.9584240595193165
-55127  -93.0834910928245023    45.0811241939317568
-38618  -89.91657358181034      34.7025863387192146
-61012  -88.7491405784784178    42.4025143481837006
-81237  -106.606015037854945    38.5829009400630838
-61412  -90.5683908834986795    41.0757166871658086
-65239  -92.4329618324653097    39.5337342547743091
-63666  -91.0694152280701985    37.3983857368421013
-78667  -97.6265010000000046    30.4218705000000007
-18969  -75.359996492030831     40.3258620154204834
-80103  -104.159840946869593    39.723561527580415
-37091  -86.7760362062928579    35.4760913453819171
-94122  -122.482515019160786    37.7607114183847159
-30648  -83.0570761627196248    33.8798361325222075
-23897  -77.2837745921272727    36.8406093883305772
-90035  -118.38609955655609     34.0515659412824121
-31295  -83.5692876666666677    32.8101377777777756
-73570  -99.1303547705479247    34.5027933544520522
-26293  -79.9171399032257881    38.7766659892473413
-72928  -93.9287400795897014    35.3028607177733846
-90019  -118.339782526834966    34.0492980736239232
-80929  -104.612468854392333    38.8158761708784183
-41558  -82.2092958723038265    37.5443490371009219
-02688  -70.3639489395973214    41.7329828590603853
-95356  -121.022706269885191    37.702128316317058
-14011  -78.2897419092168576    42.8326720266298082
-42259  -86.1885383400695844    37.277310691289351
-59311  -104.469657892703978    45.1144525600858515
-92232  -115.465256999999994    32.6796509999999998
-28429  -77.9081376536311012    34.327361321990864
-11951  -72.8453864138025153    40.7644601903866004
-35649  -86.8776697916667047    34.6263467777777905
-99604  -166.099979437500025    61.5263665625000016
-06108  -72.6177527033777608    41.7813402655143662
-93212  -119.560475755862655    36.0846152839196108
-02035  -71.241754170023242     42.0626185777218353
-21754  -77.3013489136508412    39.3386943119561323
-27585  -78.0300940000000054    36.5427569999999946
-95616  -121.762133145776275    38.5560751851970664
-70076  -90.6365312105263143    30.0549574842105294
-74531  -96.2476285327256704    34.8987434258491831
-32821  -81.4629392400288879    28.3970023569009946
-12990  -73.5302254838709786    44.0525008387096833
-32140  -81.8658752062892603    29.7685338389937009
-68362  -97.4151143749999875    40.1460570000000061
-12453  -73.9512868352490784    42.1009665670498379
-45685  -82.4493230833883501    38.9306448569856371
-15538  -78.83993225174477      39.8722501420484647
-74845  -95.8811031055900855    35.2182655838509291
-83826  -116.180279222222225    48.9892060000000029
-26159  -80.9324356759411643    39.6045800679214466
-54937  -88.4610090667189155    43.8010903015376485
-60707  -87.8093402173339115    41.9227412598842335
-67665  -98.8641118792037332    38.8658563525693594
-50148  -92.9931520486841379    42.1808374611841614
-05846  -71.8533926602304405    44.8161253178324728
-98013  -122.212578500000006    47.4160724999999985
-39149  -90.0064763723004688    31.8325664634436407
-76155  -97.0504712054319043    32.8246266664345185
-21714  -77.5042369999999892    39.4203344761904759
-65055  -92.4764032857142837    38.6095672857142844
-56270  -94.9898121147347467    44.5690092817287606
-88335  -105.753590526315776    33.0982576315789458
-95061  -122.02901700000001     36.9759169999999955
-84758  -112.640868198682782    37.2653204050493727
-23337  -75.4897071560061903    37.9243477051482074
-92586  -117.196464995779394    33.7051952363393852
-50628  -92.3943962565751349    43.2667409721411929
-08352  -75.1293088155339888    39.4737741067961139
-10003  -73.9893443560371509    40.7319229411764709
-29047  -80.5708662200210313    33.5367431840992793
-83672  -116.939339788426651    44.2853808907549578
-79234  -100.954067172473756    34.2216782543553819
-60093  -87.7546188577679658    42.1040195769978709
-80451  -106.084221256743206    40.0676563426573225
-61943  -88.0297997937284293    39.6565523073170283
-97732  -118.524643260273962    43.4092402328767051
-52172  -91.4772435363220069    43.2730450956954726
-98146  -122.357600691357447    47.5008061404545714
-87105  -106.686560682739653    35.031749955298281
-27654  -75.6803924999999964    35.9240020000000015
-03403  -71.8391805471697893    43.002791056603769
-95469  -123.077202876063211    39.3656702437424642
-15483  -79.8505678496932489    40.082781966257663
-10579  -73.8409143956253331    41.3822547826701523
-28668  -80.9891908964548861    36.4035083088803475
-43448  -83.3414210000000111    41.6022636666666656
-98233  -122.34149668515353     48.4919741079064011
-71023  -93.4010528771249255    32.4746642634884992
-19733  -75.6518903663366302    39.5578491980197811
-28342  -78.6511971588234928    35.1927156058823485
-83002  -110.775561418831174    43.4645833409090727
-73644  -99.4151365222369634    35.4099728238158278
-73638  -99.7747249593024037    35.8116005639535189
-52209  -92.0941293450355687    41.898939130005445
-40943  -83.8535267238735287    36.9489666184083987
-89833  -115.140908158273362    40.6590407985611577
-81414  -107.988648409090942    38.7930312727272764
-76259  -97.3039603006934755    33.1984702022191485
-22172  -77.352576360447344     38.5481219539575051
-91207  -118.241338205400709    34.1679050410800969
-43206  -82.9797138059226995    39.9439955323151423
-84737  -113.307456715061662    37.159528783458164
-11237  -73.9199701765163013    40.7032218856920949
-76708  -97.1969048955508299    31.5966529909676588
-22952  -78.9516841010994739    37.9783961866219073
-62887  -88.3598882698413348    38.179736099773244
-68015  -96.6311730501592479    41.3904657189490806
-77096  -95.4799187473095685    29.6743554801484315
-96223  -120.254423199999991    38.3149999999999977
-49434  -86.2057312575757919    42.7670107424241976
-97760  -121.239277134759192    44.3971302633169458
-05091  -72.5461065606253044    43.6287789580119281
-53072  -88.2483686418205338    43.0846950452644819
-38366  -88.7483534306377919    35.476553398615323
-19933  -75.59668045696354      38.7333333258428425
-57034  -96.5304615511976323    43.1252995390488678
-45153  -84.186035403446283     38.871886587582523
-24292  -81.5802080618374106    36.607094442579438
-56592  -95.9935378801571915    47.5325131552062743
-12437  -74.5247986250000025    42.352478375000004
-50468  -92.9687320349312216    43.0451309478066833
-45882  -84.6656241979940347    40.6794086343945054
-04950  -69.815080249565213     44.8220091269564165
-45268  -84.5112005000000011    39.1355735000000067
-31595  -81.9577639999999974    31.7513875714285696
-47516  -87.4225374489240892    38.7676888412070397
-40827  -83.4545250900343376    37.0521156453608356
-23156  -76.7129410193787749    37.53736771967084
-68972  -98.7619793414634159    40.1019440335365545
-38019  -89.6471079034512002    35.5585720863912655
-48030  -83.0987317822417708    42.4608600681970572
-16229  -79.6581399461047823    40.7099843910341903
-06790  -73.1144003656105639    41.824642294609383
-87047  -106.297517924409959    35.1890648061541924
-12431  -74.0174088051568049    42.3545962443597901
-40031  -85.3903016318410693    38.4120845409288592
-55121  -93.1507485061649305    44.8455491430888245
-07029  -74.1556522334884392    40.7463003990697175
-43756  -81.8178741200727586    39.6732955906766804
-04622  -67.9670261528099076    44.6865208551884194
-94086  -122.024284284078178    37.372613937173945
-18416  -75.5521548190476153    41.3792783428571482
-16724  -78.3856969944903454    41.7571217052341694
-82636  -106.174547945385854    42.8838915812906691
-89414  -117.465331140625082    40.9761270156250106
-23148  -77.0614210763522465    37.8426638382000888
-86025  -110.102111623936921    34.9275160425223703
-32775  -80.8727329285714234    28.7634634285714235
-18076  -75.4846776657115726    40.375009894937925
-70580  -92.4270777999999922    30.6743336210526323
-08817  -74.3953422173912742    40.5154403746801961
-78256  -98.6265625001782382    29.6324256688056913
-74355  -94.8572460526315808    36.9198825263157886
-49276  -83.7897428531140065    41.8008483948296217
-28174  -80.4400529920103651    34.9732035559279026
-35061  -86.9591653386668355    33.4651993511110675
-92021  -116.896256572905898    32.8272339655397474
-40536  -84.6224917391304388    37.7762489565217408
-27376  -79.5382219093407059    35.2571468371040879
-80777  -102.260296749999995    40.7633967499999983
-06350  -72.0626670062499244    41.6437741281249743
-51058  -95.4689560812824567    42.9769568199770404
-38745  -90.9958403626373951    32.9884398021977958
-10952  -74.0784807589208896    41.1145791414437909
-45150  -84.2401911630840061    39.1746281794537339
-87012  -106.656531255172453    36.16196649195399
-43027  -82.5410280487805039    40.1913217317073048
-98541  -123.407464046557408    47.0476424677012233
-65054  -91.9453528226039509    38.4875362370051946
-14029  -78.2395903333333251    42.4744951568627513
-82959  -110.317266857142869    41.2530797142857182
-81640  -108.418505911356021    40.6222584587418822
-65605  -93.7010940098655709    36.9336297850854862
-74923  -94.4434049166666654    35.1381355833333302
-66314  -112.186847050000011    34.6661921500000076
-80309  -105.22602642857143     39.9955962857142779
-74636  -97.5161653456090676    36.8020158441926455
-65766  -92.2621059469026648    36.5350827389380441
-24938  -80.3713092373147333    37.9173798688524926
-53571  -89.3586425779220406    43.2696269805194547
-65555  -91.7956213942969015    37.3573049896755336
-97758  -119.758427614379102    43.4246502549019695
-04091  -70.7499953145413798    43.8293898545861467
-27040  -80.3802958499629341    36.1687352665673743
-90048  -118.374369066847223    34.073242551038895
-74056  -96.3016854695608941    36.7151217863553967
-26425  -79.6836028414487316    39.3149209474693251
-14485  -77.6048566300277827    42.8887775970873477
-57345  -99.4508258855788938    44.60335679485447
-01225  -73.1497523925558255    42.5568854680805586
-02733  -69.9685595789473638    41.7011635263157814
-56526  -85.8046372499999848    41.5589494999999971
-21610  -76.0642527657342526    39.3671596888111779
-16201  -79.4926890766049894    40.8041753149084201
-33073  -80.1846110062212176    26.3019876450393788
-97522  -122.593932599137915    42.5222042025862663
-25801  -81.2126680819194746    37.7954986545392231
-49245  -84.8143919386704113    42.1445620295793759
-43224  -82.9687936496539322    40.0416859612812246
-24706  -79.6925644000000091    35.9696568000000028
-73857  -99.3223598152171974    36.2791721304347661
-00693  -66.3984105904322348    18.4414921077559768
-42039  -88.8124174567663118    36.8042673731555965
-29617  -82.4549538299235678    34.9047208409341039
-16749  -78.4386970189284796    41.7856317710358525
-33527  -82.2206430664381855    27.9825367121004831
-22380  -78.9447713333333354    38.0862933333333373
-24673  -81.7311494545454593    37.0147619090909075
-95249  -120.634398295065083    38.1927392063861078
-59922  -114.222477203408317    48.0065739998636616
-71004  -93.8439997184391927    32.760377785003854
-41667  -82.6987873180380433    37.3135561107595066
-39441  -89.06970585106383      31.739311553191488
-98438  -122.47560208777422     47.1433013009404362
-61078  -89.7371010210096358    42.1607579997083377
-21798  -77.2993835953228796    39.5355317154181662
-56628  -93.5667952011613551    47.6648815626925852
-37034  -86.6939596351649016    35.6350754251289104
-54760  -91.2091004356435633    44.4239061485148383
-96771  -155.102858954081597    19.5534290918367368
-62862  -88.3002015179339423    38.2274041147776131
-77362  -95.6720996310896652    30.1581198765340197
-46154  -85.7699529036144384    39.8564557710843417
-68370  -97.573909890892395     40.1611561507165931
-89706  -119.730615619377701    39.1960106842044596
-77399  -94.9620850666666882    30.6121913333333389
-21826  -75.6204306351201296    38.3212828329021349
-99923  -130.031315117647068    55.9206241764705894
-72328  -90.9897009569892816    34.0729467634408465
-39663  -90.0084881914941093    31.5898680006543309
-04751  -67.9134881999999891    46.925442799999999
-80455  -105.402429973866518    40.0987144837333531
-60917  -88.2004607529258067    41.044848686605981
-50519  -94.2670114123768599    42.9007777305585023
-18912  -75.0519924946236472    40.3201570430107665
-96738  -155.785286400000018    19.9452323333333332
-49975  -84.5819249999999982    45.8173424999999952
-45621  -82.6105591016260377    39.1106023089430792
-75232  -96.8405840826486326    32.6679012411686287
-23224  -77.4677075865721037    37.499607020327403
-96031  -123.277500874434182    41.240033508295646
-37714  -84.2072538316926398    36.2816637673464939
-11710  -73.5344345597303573    40.6770194643689535
-72645  -92.5388682927451498    35.8136032155939787
-78359  -97.2803820233181682    27.9242891757847573
-80649  -104.163120650953957    40.3439508810325904
-04363  -69.5806167687341457    44.3121807763647055
-41777  -83.2331598338252689    37.0595310691692035
-23955  -78.0703250508474724    37.1260116949152419
-25075  -81.4419665489362075    38.074162051063837
-87731  -105.350148502835495    35.675286676748577
-16699  -78.5276093766233885    40.4282972987013096
-22739  -77.6010483008130478    38.521825715447136
-72568  -91.628210060600253     35.5654187228868679
-60404  -88.2154831833150723    41.5143894540208933
-68235  -106.2468425    43.4111924999999985
-94946  -122.687222566443694    38.0575865587953999
-30806  -82.4418739166666654    33.4336700833333325
-51637  -95.137942684931545     40.6446799424657357
-04544  -69.590205772445259     43.8411000770486226
-48856  -84.7323926618140462    43.1947809081747067
-10910  -74.1380957110266365    41.2784557148288869
-26275  -79.9491542877551353    38.9788700040816209
-89085  -115.197450325376849    36.3094370402010611
-95357  -120.918713481335345    37.6706206971608708
-41542  -82.4800703090908769    37.312290072727258
-11973  -72.894640913461501     40.8603038269230723
-61801  -88.2088731996081918    40.106309046434454
-24060  -80.4326648836206601    37.237793804032755
-94854  -96.7736730000000023    35.1283054999999962
-22437  -76.7897820838216063    37.7834343208651759
-69146  -101.803064432886956    41.3445552838997443
-23001  -76.4264598999999976    37.2893545000000017
-35221  -86.8948910219814366    33.4511465628483649
-51350  -95.6273380835843341    43.2972931874999887
-38749  -90.754471666666646     33.4458243749999937
-58639  -102.566354357709784    46.0787866583473189
-61201  -90.5698012039509734    41.4851405048475073
-68647  -97.6085830895521838    41.5006065537313731
-77330  -95.3491473333333346    30.854022333333333
-70445  -89.9261053814490054    30.3291779890915265
-23123  -78.309916361890572     37.6595687067844835
-38665  -90.1571485471561118    34.5800150717063133
-79024  -100.326984618834004    36.4440711659192758
-64079  -94.7768012213063713    39.3532202741393391
-45712  -81.6650295999999969    39.398069999999997
-42240  -87.4686770703297611    36.8839783253069342
-04274  -70.3882683986051205    44.0450927061584778
-84093  -111.830557579536418    40.5943885087477483
-20024  -77.0188354671083601    38.8801531206814843
-69356  -103.467408122602038    41.8760452540467796
-31814  -84.7866486686390317    32.1707462485207074
-97701  -121.245728095248666    44.0876135003686969
-79780  -103.61998181132077     31.0375570660377562
-94577  -122.157473238425908    37.7210061499728084
-52647  -91.5454429834710623    41.1286673884297684
-52307  -91.9003792135921884    41.7959556213592194
-08102  -75.118543815937926     39.9503868660085004
-17963  -76.370747284802178     40.5599237603597302
-18223  -75.9438140759493763    40.9840562531645602
-90710  -118.299664062263304    33.7992072051201262
-32628  -83.1192864403944611    29.6338607037544648
-48114  -83.7560066242896539    42.5665260226604332
-14261  -78.7919980322580642    42.9989789677419338
-01770  -71.3781011759109987    42.2320734038461865
-80260  -105.005658484448389    39.8693461742223718
-73660  -99.9260131309013389    35.6328814184549216
-32407  -85.8040435119642098    30.1949742187745507
-63382  -91.4890322988105709    39.3040442069044218
-69033  -101.669726422210985    40.5284388735926697
-50839  -94.8230546515151786    41.0498781666666659
-23420  -75.817992733390227     37.5922372427597793
-78618  -99.1470790781432214    30.4701310840187816
-07627  -73.9582629187037668    40.9545283138146985
-11947  -72.5816787560975598    40.9473002865853744
-67347  -95.9445021831502203    37.1171385934065441
-42349  -86.6814835830220574    37.4339844354503839
-94389  -119.574945     37.7391874999999999
-57260  -96.735019720812204     45.83203868020302
-38256  -88.1338003173269726    36.3200394083914588
-47666  -87.5745523251028004    38.4210001249999422
-32160  -82.0070579625000278    29.7653984874999935
-72852  -93.584702334471018     35.6633769959044002
-95939  -122.583294560605808    39.5772551634954652
-59801  -114.014497593205036    46.857054891695114
-13740  -74.7565645093708611    42.2747874621309023
-65069  -91.5886511740086604    38.7554407096915909
-74403  -95.3295521673479556    35.715205807125173
-24790  -80.4713139999999925    37.7503706000000037
-91902  -117.022255765182024    32.6651544680382528
-41815  -82.7971893088335094    37.154687451786927
-84336  -112.781478716791923    41.9665370125313117
-08329  -74.9965989175257306    39.2857554020618664
-95626  -121.446755388746809    38.7239575302642791
-42456  -87.5277490861313083    37.5070400959521493
-95202  -121.288103196168962    37.9597290885073377
-31558  -81.5745557964691272    30.7691299157802085
-66610  -95.7819365882520088    38.9848272686712605
-97365  -124.039604917095957    44.6424429080121783
-12871  -73.6114487945316966    43.0964455736328489
-07506  -74.1601717904233624    40.9585980714921547
-05651  -72.495318536268158     44.2747956079735729
-49632  -84.9756306335467997    44.2346487790011551
-75493  -95.1743656528926181    33.1731421859504039
-15018  -79.7988458241844256    40.265479066030295
-68966  -99.4651822989044518    40.1438790485132913
-59729  -111.746437594926974    45.3224980710698091
-19367  -75.8848074477611618    39.9646117014925224
-18301  -75.1880608041472414    41.0328254964520625
-25364  -81.6660213333333189    38.3025310000000019
-64029  -94.2138419019635194    39.0130087219048463
-97034  -122.685492658705641    45.4084052296657603
-12501  -73.5600553665828443    41.8613467422111114
-24078  -79.9156723106517859    36.7232652258531829
-91765  -117.814894809819251    34.0008915674847643
-68803  -98.3956577507803587    40.9292614333080707
-17742  -76.6014677156862973    41.206281176470597
-99668  -157.171163250000006    61.693212250000002
-49450  -86.0761716648299       42.4806968461922949
-97686  -118.836682333333329    45.4790380000000027
-52635  -91.7490749293376098    40.9954758555205316
-45618  -83.614514166666666     38.886709500000002
-95824  -121.440459072714376    38.5178492484605215
-80503  -105.184180551536812    40.1593312595033041
-48026  -82.9511934686018151    42.5381700812665215
-27230  -79.7522911428571462    35.7663552857142832
-38226  -88.6663982049821442    36.4836668790866199
-92262  -116.544143142431679    33.842013592200523
-40217  -85.7391600019775666    38.2168075695452174
-54114  -88.2289028793898638    45.2415649418232704
-95537  -124.199305154135331    40.7287334060150314
-58716  -101.118827704793134    47.7520559934640687
-61815  -88.3698634999999939    40.111510619565216
-56544  -95.6509959495360818    46.7499655967615766
-39176  -89.7644588605341198    33.3121893207445794
-65742  -93.0957689193846818    37.1237796726727751
-92344  -117.401626910019701    34.3961603078647045
-12527  -73.9319226557376936    41.5206774918032764
-96103  -120.633553404979736    39.7869788917054095
-68669  -97.2241954894825255    41.0796959368947441
-67649  -98.6959316689418813    39.1181231313993436
-13639  -75.133635765402758     44.2578901350710723
-49817  -86.4755793139013065    45.9389288049327504
-68847  -99.0535508534757838    40.7323607599599526
-28602  -81.3782040478659354    35.6843588648140084
-57737  -102.533904855828112    44.5557754846625613
-84734  -110.748311832142846    38.3526075178571304
-65652  -92.9487632285533181    37.1478254389480469
-07502  -74.1942092887788789    40.9196760082507964
-74551  -95.7172649999999976    34.9222900000000038
-50503  -90.0217803333333251    43.1725173333333316
-88418  -103.716222103448288    36.7531584750957379
-10996  -73.971702014138998     41.3908243464010113
-16645  -78.5007746724890865    40.7988823187773306
-50876  -85.3150475714285648    33.7312588571428549
-63489  -88.7522764999999936    38.5190169999999981
-54210  -87.0493389019607093    45.2575386085192903
-02738  -70.7528359869003793    41.7082968440144128
-58352  -98.9285274496644007    48.7212653033557501
-56216  -95.0558146474081838    44.9417321760981991
-66038  -95.2058351999999957    38.0987012000000078
-85012  -112.069756844608747    33.5109297563425059
-52056  -91.0729680274725411    42.6022708846153648
-18518  -75.7397151827005217    41.3701340759492453
-98845  -119.899384376119428    47.4181328626865621
-65732  -93.1873872173912901    37.9417772173913121
-14781  -79.6064933554311978    42.1627450790734457
-76937  -100.154404789473617    31.3419706289473652
-10304  -74.0909745291777284    40.6083066002928064
-57442  -100.083982185481617    44.9843447493568078
-46130  -85.8374773959460668    39.6769182469595236
-56063  -93.8197407941959653    44.2200070932652238
-19506  -76.1198116553537005    40.452222066912185
-17521  -76.3467561249999989    40.2028189999999981
-68623  -98.1147496272189699    41.4545199053254336
-56484  -94.5240360450763291    47.0916191740336458
-36303  -85.4090411321037237    31.2527103241450384
-04289  -70.5351657117956847    44.3221731733582871
-53560  -89.7613582316998162    43.1854116229709533
-40515  -84.4536132010310041    37.9436836895479388
-83615  -116.084234877686157    44.6970400044076399
-65752  -93.8192218139879941    37.3224564657738043
-48451  -83.8015849019688375    42.8067405583618168
-64070  -94.1586997645130879    38.8887113427353555
-75658  -94.9107896890243836    32.1807905975609714
-54859  -91.8441827893652913    46.1585536902229592
-72663  -92.3256438584580508    35.9205293993095864
-39213  -90.2164109074426364    32.363837530867599
-92535  -116.748208199999993    33.4697977000000009
-10925  -74.2990150598884469    41.212474144011253
-45011  -84.496629560987401     39.4014792485334553
-35967  -85.7083761524641972    34.4130688661686222
-62367  -90.8969814782244327    40.3199897721943756
-75415  -95.7483382071269347    33.46814887305122
-90822  -118.224351764705901    33.7640499999999975
-62544  -88.9812854607038162    39.7121844034857006
-29803  -81.7122908960266585    33.480205114765262
-16001  -79.9230558000945734    40.8917907605767752
-05676  -72.7887713983726314    44.3378510965178307
-59337  -106.681021771817498    47.4717264683746265
-44484  -80.7525806271928417    41.2356861719297498
-16507  -80.0859105767353867    42.132634588742981
-45053  -84.7801261246176381    39.348464215596394
-49627  -85.3599986584269743    45.1048174606741838
-37349  -85.9904483076923185    35.456100846153852
-24558  -78.9541557577929467    36.7775067279766219
-28287  -79.3788773750000018    35.1822347500000063
-47950  -86.6490255643658713    40.8055478032104091
-40982  -83.6961822355028602    36.9283582437869882
-25555  -82.5614487903991119    38.2491771203516535
-57680  -99.8709504999999922    43.3690144999999987
-43135  -82.6984192260855053    39.4725431025782001
-53570  -89.5936900372928022    42.7473731325966781
-55972  -92.0620900764532735    43.9791851505942688
-91978  -116.95169609314982     32.7289737116651693
-49220  -84.326052201472848     42.0034292067333794
-49053  -85.4205998864864853    42.2940834867710009
-15946  -78.6645264636380261    40.3855587982037818
-26180  -81.3845979198247278    39.2071504250566321
-55947  -91.3488567577192185    43.828104827339196
-80105  -104.136979128792106    39.5341520623277134
-84728  -113.956183280898898    39.0980500337078638
-68197  -96.038305793103433     41.2320761379310312
-88430  -103.251646070143877    35.5915987482014131
-71371  -92.2186232283806646    31.667194291151862
-07305  -74.0896647832305746    40.7023782466688715
-59452  -110.090807646207637    46.9055043767465705
-13531  -74.7987801249999933    42.1828893749999949
-37848  -83.6967430430107413    36.2371741175627164
-50161  -93.3847538137256379    41.8582360406161982
-84745  -113.275266947176789    37.2070850145719518
-99163  -117.189708919170343    46.733848058869583
-04745  -68.3852722951318555    47.2924002251521713
-64857  -94.4383791573034017    37.2441176067415611
-43731  -82.0721829123392439    39.7338396903707149
-09606  -122.368294714285724    41.3750537857142859
-34755  -81.7517532727272709    28.5763150909090875
-15843  -77.6576330000000041    42.3155450000000073
-74051  -95.9727204250572186    36.6110467728833413
-62312  -91.0399103054342902    39.7101074996559689
-50155  -94.1970090736647023    41.2122755469613722
-22802  -78.858274537314017     38.481403139134386
-52132  -91.9115129906185331    43.203004067755451
-87882  -119.324734199999995    45.9058921999999967
-06430  -73.2672281538461476    41.1288346153846263
-73601  -98.9769236394013348    35.5072141785590247
-67018  -97.8700206788079328    37.084332086092715
-63304  -90.6278675603628727    38.7302713017601405
-75804  -95.7190568125000141    32.0396543749999978
-19123  -75.148596564731335     39.9644818294265605
-44850  -82.6811719532710754    41.0341904953270884
-84028  -111.39728727360442     41.9112921549897308
-30113  -85.1967029392503719    33.8485897001974152
-15730  -79.0703781746575203    41.0258597671232863
-42170  -86.5732690272935912    36.8416905375284003
-65248  -92.6640979455588507    39.1435511317644256
-48206  -83.1077906219716454    42.3756683750415277
-14091  -78.8891108014887834    42.5408383622828694
-75453  -95.9379772239234541    32.9919626629983398
-52202  -91.6405868161765227    42.1566051862745326
-03593  -71.2997871469388258    44.3745721768707284
-15923  -79.1572988773955188    40.352977043869906
-49866  -87.5715532250847275    46.5012296293218554
-82947  -109.850980466666684    42.8837432333333268
-70126  -90.021236108698119     30.0165001373505511
-53016  -88.7200097411764688    43.3123999764705658
-46225  -86.1606404349947752    39.7450280341727407
-36611  -88.0858275930004737    30.7669190680299494
-52302  -91.5868159312359751    42.0464628453813987
-48819  -84.2827644958891966    42.5393608814366075
-32062  -82.9695593554972248    30.1371879327000727
-88046  -106.791974590163903    32.2631187540983575
-38802  -88.6337156666666743    34.201513242424241
-27310  -79.9910719067104878    36.1693490036413507
-49648  -85.3573136537344084    45.0153472315353937
-62366  -90.868846034786074     39.4695079992003386
-37725  -83.4003863900398699    35.9984870862367075
-58569  -101.212611740930157    46.2776180117526792
-15720  -79.0638631694915404    40.5261537627118642
-28001  -80.2032738410637904    35.3443689927146707
-93223  -119.207607500572792    36.3039559988545122
-94710  -122.297963157372095    37.8677332012820713
-73078  -97.7470707629834124    35.6593483371945368
-26615  -80.7244847280898767    38.8297366674157374
-92507  -117.333545851102599    33.9744455233642597
-45147  -84.2993760441176221    39.2129586029411854
-78922  -97.7788500000000056    29.7574244999999991
-68760  -97.9945136221570863    42.7661244930300768
-57042  -97.1282178049830804    43.9889166261747349
-99152  -117.388104431111117    48.8720427377777611
-59932  -114.241016557521831    48.0725999602849328
-07932  -74.3903755297108802    40.7756710307262225
-28903  -81.764687500000008     33.5228924999999975
-04429  -68.6357384691388006    44.722930189118685
-61548  -89.4252268744041743    40.7960890984372213
-15462  -79.3917230453333218    40.0581142826666863
-94973  -122.639964502176227    38.0066943547334475
-08096  -75.1308022930497259    39.8285645731649041
-15713  -79.2561862413792966    40.5483972183908037
-61328  -89.4655660000000097    41.5046713333333415
-93945  -120.867055083333312    36.1571782499999941
-00783  -66.3167289050000761    18.3237259737500118
-31795  -83.6735164150897361    31.4677177743918008
-53937  -90.2064820105959484    43.3715373390728303
-16353  -79.3983463840716865    41.48209388335016
-25688  -82.1476410634920455    37.6284578571428625
-96076  -122.94709399103138     40.3718241535874824
-80463  -106.791139660780729    39.9063641384758228
-26551  -80.9894436666666593    38.2584129999999973
-70434  -90.1224706666666719    30.4523036666666691
-14718  -79.2907174865986519    42.3456191981880821
-41636  -82.733755941044592     37.3959474373134455
-55103  -93.1258010931175448    44.9653097692306574
-94542  -122.04187532127284     37.6586777275500921
-59646  -113.109181941176459    45.4549904705882284
-74014  -95.7107143937495835    36.0560550066082683
-79530  -99.7765909637635247    32.1196358028243978
-43037  -82.3299796503856243    40.2771812879177418
-28744  -83.2141996470588481    35.1521557058823504
-80229  -104.959365389977876    39.8618482089169532
-65468  -91.7999499595959634    37.2535199696969812
-44847  -82.7074045257515991    41.2283780995937974
-76561  -97.5417709473912424    31.414268252608764
-22046  -77.1809426770158495    38.8864949074596353
-25653  -82.0017142507837065    37.8296554137931125
-03046  -71.6029986332488448    43.1013734408875067
-43515  -84.0101995280408573    41.5910001240951104
-37188  -86.6704545511577322    36.4711371895280081
-31179  -81.8469425000000115    29.1318715000000026
-41254  -82.730378753959755     37.8779562518478983
-39760  -88.8156548461538335    33.4559009999999972
-75132  -96.379257453257793     32.944798348441914
-95418  -123.204426333333345    39.2428857500000063
-29436  -80.1896146783133048    33.3427298521039503
-59444  -111.438537309674885    48.8285037743854673
-98821  -120.564105654117611    47.5581878023529114
-49717  -84.6919704301075171    45.4350344086021281
-55357  -93.6628102421019264    45.0939920365813194
-59217  -104.240499667475717    47.5771833956310459
-58344  -98.282377683916323     48.015941542257913
-26676  -80.6721251699437403    38.1580470294943481
-58224  -97.9185738793102729    48.179045887931025
-52557  -91.9648433043478377    41.0211548260869563
-01367  -72.9020805762632449    42.6988895085766984
-02043  -70.8894604546209877    42.225705638561891
-36919  -88.29838757056676      31.7736683451949915
-61745  -88.9725927131087388    40.3288029073656915
-48367  -83.1409668553675942    42.8416443827664111
-59353  -104.205487673429445    46.9903185538988382
-29703  -81.3197366666666568    35.1032123333333317
-44127  -81.6502551093140596    41.4713454244284208
-73958  -99.8739575000000031    36.2778339999999986
-25002  -81.4273818918918977    38.1792282702702579
-17517  -76.114348812196809     40.2340847901062801
-23451  -76.0059258400521287    36.8653663348430669
-80112  -104.882048255662284    39.5790021198266686
-38564  -85.7493018967516036    36.2764137455191289
-11977  -72.6745441511388321    40.8186203695652523
-49504  -85.7087314171586314    42.9805623428766026
-12063  -73.6334983752913672    42.5637106759906629
-63748  -89.6303995664961803    37.6669761827719327
-08865  -75.1617271345907056    40.6987245261115334
-27434  -79.1217751200000095    36.5106183600000094
-40769  -84.1648773400390837    36.7241280543406035
-05446  -73.1987500082986315    44.5447647813545018
-83212  -112.559729743621418    42.5181840954731598
-46570  -86.121642325301238     41.2055697853230569
-62816  -88.9221352560455358    38.1940261770983085
-48201  -83.0600872629643163    42.3453038664761436
-28385  -78.4975803094154116    35.0426009943543235
-92111  -117.170798725456009    32.7993414339468998
-51028  -95.970580160546163     42.6057925935394763
-70240  -90.0141679999999837    30.4888146666666735
-39348  -89.0420768223686849    31.9965941728468302
-73945  -101.234246975949318    36.8438798734177126
-13845  -76.3484181249999949    42.0589538250000174
-66051  -94.840557000000004     38.9088800000000035
-55375  -93.749572021059322     44.9026628144937519
-79740  -102.45488850000001     31.1281592499999995
-82003  -104.857078972222212    41.3375452870370381
-64021  -93.6314837493573293    39.1071536426735094
-89823  -115.2770217948718      40.9941821538461539
-85638  -110.042805971487553    31.6956720881634695
-07003  -74.186531357827576     40.8100706814509451
-18488  -75.176668333333339     41.487035166666665
-95435  -122.87449570476187     39.005092552380944
-16839  -78.1137521701246413    41.0033532790456547
-39029  -89.9765059090909176    32.9743523636363705
-62432  -88.1430389813434374    39.1318558221393289
-11377  -73.902678913043502     40.7427447391304369
-45858  -83.8006915426431647    41.1064646369077593
-93593  -117.368625499999993    35.8930766249999991
-64131  -94.5761529812816946    38.965300668296706
-10465  -73.8180350049114935    40.8265389993451464
-47369  -85.1431954480445086    40.500712962054962
-64834  -94.5579481011370149    37.1699437582869976
-68628  -97.8651027042252508    41.2103656165883976
-26638  -80.9866742593036975    38.7572638187274947
-53178  -88.588695431266899     43.014246832884119
-48033  -83.2886183677790086    42.4646933696203135
-61940  -87.8141265112473945    39.7726826339468715
-25848  -81.435773501831477     37.7165010549450557
-41659  -82.6198130382262974    37.5685639113149676
-71266  -91.4800159944988707    32.7031797441931715
-03851  -71.0035920012909969    43.4279641335054336
-90291  -118.464912381576056    33.9919187643807348
-99343  -119.14150823861803     46.5693933697124933
-12583  -73.8705766822314871    42.059723711983473
-22901  -78.5369000302587068    38.0793250730732993
-10553  -73.8219543396077285    40.9090559717647722
-61418  -90.8621624891040938    40.8466661670702109
-68508  -96.7063277213041061    40.8139220192050374
-07040  -74.266890998679429     40.7292045258848674
-45713  -81.8118609189189243    39.419646486486478
-18601  -75.9555763720930344    41.0483543488371936
-32807  -81.3026528703512099    28.5490606624678769
-47383  -85.2657911127964496    40.1586268638661181
-14546  -77.7682581778577173    43.0310207362109551
-03583  -71.4669330931945836    44.3984330684870301
-96783  -155.108687279411754    19.8288260000000029
-78010  -99.0363613376449194    29.9186031471899767
-40078  -85.1411431866239639    37.8409419386836205
-17986  -77.1104033999999956    40.6892923999999994
-71827  -93.4108329185959292    33.4322107528006143
-62872  -88.803227282674797     38.2735560876392782
-50112  -92.7268307206517619    41.7289301824503767
-57027  -96.5083543740157666    43.1828747874015662
-12427  -74.1248216749238225    42.1569902277270927
-95065  -121.985308938364113    37.0225099367799402
-20112  -77.430373109290116     38.6813078682159599
-28086  -81.3656806274622255    35.2477263137702579
-38317  -88.2748447221881776    36.0480860805471863
-72085  -91.8283884940476298    35.3620982023809276
-92211  -116.319707628278223    33.7610305873891861
-50880  -97.0019790000000057    46.2676595000000006
-69351  -102.39915939749838     42.0742409339819048
-57069  -96.9652473588812285    42.8177548338944547
-06810  -73.4545721951035517    41.3854880136022771
-16861  -78.5242521256755879    40.8751290297297203
-67751  -100.362487492063465    39.1179566626984254
-89028  -114.697506200000021    35.0906824571428544
-70441  -90.7306982478988857    30.8591259980536456
-78757  -97.7332762547231226    30.3499728217154967
-67544  -98.7818005325630679    38.5628597106952853
-30822  -81.9178664044117539    32.9125128823529423
-65717  -92.4213704608033595    37.1431583180668312
-20140  -77.8675412127659712    38.9187198723404251
-99219  -117.516680769230774    47.6338289999999986
-33905  -81.7672792772327597    26.6764207304449528
-14511  -77.8604162567900744    42.994463629629621
-92887  -117.742005858000979    33.8811655669375824
-30179  -85.0137867964834868    33.7785270325518638
-84068  -111.501539666666659    40.6644829930555574
-90660  -118.089341298590924    33.9893454360313427
-63730  -89.8872462706003006    37.1116977310954042
-25177  -81.8357792075066186    38.3759615326780903
-67566  -98.0905498515731153    37.946165364338114
-48120  -83.1716206076960276    42.3060732238386166
-56585  -96.2765512201834781    47.0849363873599103
-17030  -76.7400753714902493    40.6084701684665177
-76617  -97.4867713333333512    32.0126031666666648
-98506  -122.868798890189254    47.0871059992344101
-73067  -97.9398410107238249    34.928106518319872
-71929  -93.1656422686576775    34.3009691303488111
-81071  -102.285559631849623    38.4410361713593431
-52701  -90.2514317750000004    41.9813821500000088
-74755  -95.1564350833333492    34.1101122499999931
-74120  -95.9775578739635051    36.1495312027362843
-63013  -91.1544851344414298    38.4206926093863359
-66111  -94.7874215184155418    39.0800484665953718
-42286  -87.2735118323989809    36.7167294974918192
-49285  -84.1990602238318218    42.4637599672745694
-49420  -86.3176257292825824    43.7096705986497795
-48343  -83.3083023750000109    42.6365432500000026
-48153  -83.4060699999999997    42.4109344999999962
-69022  -100.172678767795418    40.30319254733935
-74165  -96.740972499999998     32.415417000000005
-61077  -89.3569413934426393    42.2375368524590016
-32735  -81.7423136066493896    28.892517537578982
-72501  -91.6501522211782316    35.7837588731961915
-62828  -88.6260994431089273    38.2031955745191993
-67323  -95.7188136666666765    37.3282206666666667
-02184  -70.99957529282716      42.2071474961411042
-43749  -81.5588454182976363    40.1676344494494799
-31408  -81.1705684701442891    32.1064428625328659
-69125  -102.831409148325335    41.6198995765550066
-91405  -118.447848253731223    34.2005125903377944
-31027  -82.8137396736675555    32.5575852767271172
-76426  -97.8159743601546126    33.1855227132816992
-77987  -97.072576365145224     29.3426916473029209
-89013  -117.247836056451575    37.7103844798387016
-97604  -122.137830609090912    42.8942646454545482
-99019  -117.08385712571949     47.6580123504076667
-54623  -91.0153442149999989    43.7022051750000173
-76601  -94.7002498571428504    32.5211977857142784
-40955  -83.8127890124999908    36.7291982749999875
-44454  -80.5369532754035902    40.9164915963912463
-26705  -79.5645118978544019    39.3191430326382303
-94061  -122.235469803803156    37.4618789916107389
-72350  -90.1480052582255809    35.509594952103356
-66432  -96.2484011066873251    39.4681202330887189
-02726  -71.1473215062001145    41.7577894375256093
-53153  -88.4022036849917612    42.934586332600297
-68588  -96.6971306578947321    40.8249156052631506
-47381  -84.8671415303030159    40.3825618737373802
-63953  -90.6085899480250987    36.6166879085239287
-93283  -118.308261259259098    35.6005562495974459
-19554  -76.1170610720720902    40.510843846846825
-29742  -81.3726195904578162    34.8884262183684015
-95377  -121.456106016359115    37.7200817208378041
-60520  -88.6485533007641635    41.7770669071171241
-12725  -74.5463549504651724    41.9357363224257398
-68864  -98.2295857437223248    41.2401884039882347
-77035  -95.4785180878622413    29.653716538949304
-73583  -98.2916332000000068    34.7940602999999982
-50165  -93.301541764705874     40.8489105294117536
-97267  -122.611989694559995    45.407627101564934
-54739  -91.6305511556051329    44.8918641773563394
-36535  -87.708333219157808     30.386991560237977
-50009  -93.4689199102709267    41.6432223177024028
-79738  -101.441912977707048    32.7720077707006112
-54557  -89.7385956872105623    46.2189356995174663
-12514  -73.7626804246499006    41.8718673962785033
-12835  -73.9791536668637093    43.3030174860946033
-03823  -70.9422497674588044    43.1749997594149377
-22469  -76.6458624028735471    38.0751583091953805
-78054  -98.6931339333333142    29.3256560333333383
-90703  -118.06658223161358     33.8667344192044482
-58013  -97.4127635300889381    46.0895624495029352
-21224  -76.5491972188757757    39.2861747226681999
-89042  -114.397184057291781    37.8069376927083312
-75703  -95.3153241900791386    32.2535757667008411
-15235  -79.8269986927316211    40.4606860976146692
-91377  -118.768110102369803    34.1794979182463763
-43780  -81.4479156979633956    39.9250463749007594
-74331  -94.9261036391985016    36.6056175314919656
-05745  -73.0398337222222125    43.8389759444444564
-90262  -118.201012520868161    33.9238200675367665
-27874  -77.4384290112180338    36.1267180594728998
-04287  -69.9700036520581818    44.0583240151021087
-79406  -101.870781803921616    33.592510058823521
-52069  -90.4179804608751425    42.0587166647983821
-29143  -80.0827772500000066    33.832462249999999
-66842  -96.671319404797643     38.0208090299849459
-75082  -96.6608204550493468    32.9909609892315956
-25986  -80.7981454042553366    37.891056276595755
-73604  -97.75458430434783      35.411022260869558
-61858  -87.7545313712464718    40.1228568980892177
-51232  -95.8162101404763007    43.3029037029761597
-53575  -89.393877905222439     42.9248943451682408
-85390  -112.780859931930522    33.9484182312542444
-91008  -117.96592345316175     34.1497971569087042
-28720  -82.2459936749072824    35.4389808788628002
-09795  -66.5313746000000066    18.0261126000000012
-39437  -89.2191996333796169    31.5883047934345527
-26531  -79.8924437636363649    39.5938823454545528
-48122  -83.180902316818262     42.2804868804544824
-35824  -86.7323966608009442    34.6486870822208317
-71595  -91.7057539999999989    32.112527
-97848  -119.586055309634347    44.7046786254507609
-93513  -118.281858678988385    37.1627621157587598
-13622  -76.1200458652580778    44.0816879490820455
-03241  -71.8123103055262817    43.7032539493136909
-89510  -119.591250550308104    39.7787448097895151
-86326  -112.006872422548       34.715654312334685
-66838  -96.798243632804116     38.5494975693121447
-66727  -95.9116202499999986    37.734611000000001
-39056  -90.3331931007617186    32.3509169313284985
-21677  -76.1844804980793811    38.5093293585147123
-58855  -114.119029499999996    47.5996370000000013
-61471  -90.8258250816326722    40.6959513469387772
-64075  -94.1410761929850821    38.995719559627787
-92461  -116.441841875000023    33.5985301249999964
-21740  -77.7398797056779784    39.6348220502887116
-69122  -102.084722716392889    41.1094957586974488
-02341  -70.8652478956704073    42.063917202747362
-59228  -104.516436666666664    48.1455368888888842
-99634  -161.983448382978708    60.6923322340425742
-47714  -87.5218476059555996    37.9575989412866548
-59735  -111.835007840144129    45.6689281249999723
-44431  -80.7519653618750795    40.8541637016087265
-33016  -80.3326513731768728    25.895128380040088
-41080  -84.8276083177831168    39.0542947779726077
-74880  -96.1088167031383449    35.3653189508058219
-30277  -84.6508060288927169    33.3969699969771057
-29743  -81.3969442758733237    35.0309193140362325
-14708  -78.0599877917570808    42.007986707158345
-45248  -84.6577690403977812    39.1630472931826858
-99354  -119.289355982244828    46.3036966045593346
-30447  -82.5084957096774474    32.4260289032257987
-67033  -97.6650225000000063    37.2709454999999963
-15948  -78.7647550838323554    40.4909883832335495
-56650  -94.5605076300516174    47.9900430855545821
-98255  -121.989524821917755    48.5224166164383703
-54847  -91.3984448143761483    46.5678302041299901
-10045  -74.0087410000000006    40.7082240000000013
-32227  -81.410294224967501     30.3816389180754065
-49795  -84.6376422205685088    45.1554570526048593
-36265  -85.785255256229604     33.8333675064856294
-17090  -77.1767164413566462    40.3309221413708627
-21229  -76.6913659424220526    39.2843146914314616
-74460  -95.9565765930231578    35.5125824341085305
-81602  -107.312598720930211    39.4789835348837101
-86044  -110.821424472868216    36.818466829457364
-95521  -124.066797768444161    40.8724785929777923
-06811  -73.4719748074424928    41.4244672568984242
-76308  -98.5360481373522532    33.8646355898913072
-55332  -94.715753264787665     44.5227056983586067
-14025  -78.7301148464072753    42.6309216094349992
-19457  -75.5852144324324087    40.2004795945946043
-56145  -95.1775734459222917    44.0566736573328797
-20127  -77.4744573333333193    39.0556869999999989
-98612  -123.354222626849804    46.2003141721816988
-56570  -95.3680523927549189    46.9053866114395461
-49286  -83.9455548280235888    42.006980426148175
-64648  -93.7941267196738266    39.9696528481142224
-03247  -71.4555212727272675    43.5776024545454632
-55019  -93.2353897113190726    44.4190010439739495
-97132  -122.976491147016802    45.3183776771521281
-26462  -80.580574458333345     39.3029430416666727
-21781  -77.7600275000000067    39.5664952500000027
-55011  -93.2663714518772338    45.3412593892347218
-13090  -76.222406006981231     43.1524529856168471
-93927  -121.301852743916513    36.2975722807122239
-62477  -87.666429212655359     39.2346356925743791
-77025  -95.4338770429221626    29.6884114337742169
-50163  -93.2344189109729911    41.2268908550724618
-72403  -90.6581285000000037    35.8770300000000049
-35079  -86.7571222528988102    33.9322629203253285
-24242  -81.5391027499999979    36.5985595000000004
-04266  -70.2559756249999907    44.3015841250000051
-21047  -76.4349173167741895    39.5270353704208262
-99169  -118.397836108009173    47.1245084297481185
-66536  -96.0778206692951358    39.2277909864834982
-46408  -87.3601967931995915    41.541661870795302
-14854  -76.6102837999999906    42.5050085499999994
-17721  -77.3174749710907037    41.1855892483574237
-23187  -76.7191150833333211    37.2715125833333332
-33304  -80.1258096889614251    26.1393529791953263
-44815  -83.2355776413043458    41.2453575000000185
-85014  -112.056422483855698    33.5123649127710692
-52560  -92.2600933104396432    40.850640337225272
-52534  -92.682045943181862     41.2759618484848971
-44826  -82.4805434911189792    41.2385116909414009
-03536  -70.5649360624999957    41.5587519375000056
-22369  -77.9926776249999989    38.8385693750000058
-31374  -101.302847999999997    47.1148775000000057
-05666  -72.4690793389355861    44.2847637983192968
-59431  -114.176032571428578    47.9024938571428578
-14108  -78.7135878477834297    43.2747583832875051
-75249  -96.9568877745785329    32.6463070514982334
-66449  -96.8475606518088625    39.3882589479974499
-57564  -99.9925299191037738    44.7142392541526732
-32185  -81.9578744545454612    29.7393779999999985
-08816  -74.4079033902225433    40.4265537142946911
-55749  -92.4373543699541642    46.4402810324594597
-81617  -107.542792750000004    40.5151834999999991
-48005  -82.9155357471084073    42.8475613906413884
-16801  -77.8457884300063228    40.7905258449157628
-35903  -85.9061461360235086    34.0083738782694738
-46061  -86.0180024999999944    40.176801999999995
-17810  -77.0153400301089164    41.1207177229604923
-58016  -97.4209473411765288    47.3474105999999964
-76635  -96.6537002069273541    31.7336154103019723
-43902  -80.9708684265497283    39.8878651856468878
-38501  -85.5288207957499935    36.2046612022589898
-54738  -91.4701030700637432    44.5802470254776892
-59526  -108.767614763905641    48.4819085758302606
-35470  -88.1173577417897604    32.5513663720243827
-30045  -83.9424088094417584    33.93460523312649
-48809  -85.2658849995661399    43.0800231982647688
-75613  -94.4576911666666774    32.2428486666666672
-27569  -78.1624618424853139    35.4586591902858146
-19109  -75.1638345000000072    39.950451000000001
-12482  -73.9598507684069517    42.2722669946452783
-12410  -74.4533072285396997    42.0700675094760399
-78249  -98.6131680349050868    29.5648794815517526
-56755  -97.2141776532257467    48.9614300564516114
-35750  -86.5958163402508205    34.9504321099775481
-14585  -77.5537443255813912    42.9061044651162788
-77565  -95.0336723995305164    29.5413410483568128
-23005  -77.4800980784708173    37.7530514138285227
-68107  -95.9539521638713211    41.2074202051185381
-90680  -117.997070362313266    33.8009944490644116
-33896  -81.6030605661573532    28.2525460227967038
-69127  -101.934151776834184    41.1139658451503962
-90095  -118.443328410714315    34.069340571428576
-95222  -120.588943411299311    38.0662573074237756
-29373  -81.7472724444444339    34.9129741388888775
-61753  -88.8019424305748686    40.6407300795933182
-67150  -97.5180034067797123    37.2645187542372796
-49046  -85.4014390468849314    42.5141388212512794
-45866  -84.5492241639344115    40.4891137459016406
-35958  -85.6337232751960187    34.9168920630580928
-06786  -73.0112801735492809    41.6741791243023485
-47471  -86.9785806960918961    39.1437970147582135
-70552  -91.7116429359534777    30.0631851746724834
-02642  -69.9862969898792073    41.8411969945885858
-87006  -106.798156444902276    34.5226362358393501
-91718  -119.669202466666647    45.8380280666666593
-78415  -97.4275449468041046    27.7215275104331873
-36775  -86.9968813414596838    32.2254440471132781
-16666  -78.2988962381729152    40.8659138423736508
-89238  -104.886336     39.7657999999999987
-31028  -83.6861340971706937    32.6311223536857469
-08869  -74.6403432366512192    40.5725896301911604
-97018  -122.813889624223933    45.8926666813664781
-70087  -90.3064248957814897    29.9614126736972395
-12996  -73.4029461297842403    44.3735842437411705
-98177  -122.370540022608736    47.7435299460869942
-54560  -89.5129503896629899    46.0043463950562597
-47165  -86.0021292219551299    38.4977905811068339
-14094  -78.6885245189097304    43.1572425551402787
-72429  -90.9491977705241226    35.4953010618199798
-82441  -107.810834326448941    44.5998351352431754
-99521  -149.635827384615396    61.6301537692307804
-66606  -95.7168355244766644    39.0592909824268233
-60913  -88.0647995626301139    41.148955023304211
-04295  -69.9954378181818271    44.1866500909090902
-49283  -84.5520253586447126    42.2101473066588397
-11372  -73.8742697500000105    40.7532712500000045
-18828  -76.1055395735981648    41.7967409999999688
-16027  -80.0107542031249466    40.819897355468747
-51646  -94.8793653521448022    40.7413021950983989
-35987  -86.2513538948784344    33.9216387963033625
-47524  -87.5621730530504863    38.5083350380194886
-44441  -80.5680816260276771    40.7662177646726107
-20619  -76.5271141883067969    38.2997781585673067
-59011  -109.921631687806993    45.8605956796682577
-71454  -92.8433220195638427    31.6747207680863312
-72045  -92.059762087061074     35.1225076815776802
-16508  -80.0919051056279443    42.098189805982706
-50216  -94.3774998532853999    41.7014196321752877
-06062  -72.8646362171276536    41.6745701203962611
-36082  -85.9565443309352446    31.8020282517985464
-50052  -93.4499630427046384    40.636840526690392
-98642  -122.691023570876339    45.7986745929416159
-66614  -95.7665778329426729    39.0140428158725001
-04412  -68.7511742891216926    44.7873482789190547
-08343  -75.1660046700270925    39.6465345097124029
-29809  -81.6902043144947925    33.4167473470744767
-49279  -84.1010641875733285    41.7886143915592072
-13941  -75.2105732708333079    42.8437593749999976
-18230  -75.939493000000013     40.9257622238805681
-02876  -71.585860865470849     41.9998286053811825
-13346  -75.540804902683675     42.8227595334971909
-74074  -97.0671439383688437    36.0916425533620782
-95486  -123.275877650485398    38.9749754951456353
-37144  -86.6472676924856415    35.3012924509915678
-59635  -111.846740955040815    46.586726350525467
-88343  -105.126087565217389    33.3509644782608774
-28551  -77.7776270020826956    35.3222366691387961
-31318  -81.3783227536764571    32.1441296433823354
-99377  -102.128845666666678    32.9332286666666718
-55117  -93.1014084957802766    44.9954469231078846
-21161  -76.5721325581319263    39.661026856954237
-07012  -74.1590860997329031    40.8486209719502114
-95386  -120.720767092746129    37.651938245847191
-74565  -95.8426964899999518    34.8267731600000019
-21060  -76.5894648112766419    39.1622752441187529
-55387  -93.788766384753643     44.8478355078628681
-01952  -70.8645371198252434    42.85030071849134
-74546  -95.5773982204726167    34.8528612299213165
-62268  -89.5133218473985295    38.2652099371869028
-52601  -91.1231232270149434    40.8275860221862601
-20175  -77.5917564994428233    39.0671001835583809
-80015  -104.770594895290301    39.6225051295372381
-67202  -97.334059609615295     37.6861440163461552
-53553  -90.2873194376469712    42.915689556470582
-92399  -117.033392319227772    34.0316630034676351
-55927  -92.8690180903658131    44.0347111032751144
-89704  -119.800148592789895    39.2761205345563198
-42060  -88.8285045000000082    36.9681238364485907
-48051  -82.8280422439747355    42.6767362354468034
-77092  -95.4754419073289569    29.8318080981325267
-93312  -119.126048960654288    35.3931008205364606
-67734  -100.902758034334767    39.4673709742489152
-59316  -105.03218415517243     45.1786554310344854
-78116  -97.7782317266377277    29.1143311344978208
-57383  -98.7196918597669395    43.713598347580529
-24270  -82.2543300972575508    36.7234728083546642
-10963  -74.5377973746982718    41.4672735374011125
-80536  -105.4239900627814      40.8149215336564524
-26321  -80.6837743310344564    39.0492393600000014
-34114  -81.6673498690911686    26.0522043404959014
-72360  -90.7995701220723106    34.754646850958153
-01330  -72.8100145590144905    42.5222004480788698
-49055  -85.8544555141509846    42.3705298160377026
-04487  -68.0984689704396402    45.3832797604903391
-96071  -121.450469394812544    40.6648715770893716
-41061  -84.0712791040723602    38.4852218325791995
-07878  -74.4779128469387217    40.8710439999999977
-27517  -79.0346015322340207    35.8615284730450057
-78632  -97.462821912479896     29.6866978087520828
-35577  -87.6034354625000162    34.0985907124999983
-22500  -76.4150330769230521    37.7680841025640959
-25608  -81.8827559163346592    37.5689699442231131
-39459  -89.3027686085750219    31.4999354376928338
-98362  -123.362375555243943    48.0875306769410003
-48823  -84.4674001180590608    42.7518298271678603
-68108  -95.9331939343119586    41.2382186222942408
-13332  -75.5659759332606171    42.7579779512035287
-28726  -82.4185888319932047    35.2825768831992619
-23464  -76.1774255995231613    36.7987607657591553
-39161  -89.855420160493793     32.493842740740746
-72329  -89.9770183401360413    35.6480808979592112
-03415  -80.9877216000000146    39.2814386000000013
-49836  -85.9170410122850541    46.1987124324323872
-33763  -82.745932601011603     28.0029824736685846
-47334  -85.5346766231101725    40.1179847026638825
-51355  -95.1371702632979037    43.3874948040780168
-76654  -97.0444584999999762    31.6670995121951186
-81624  -107.882659208362114    39.2321215316192422
-18040  -75.2243456263047108    40.7314898496327658
-46571  -85.5477259685197282    41.5620540672148522
-45871  -84.301778545582124     40.4920953309958591
-10027  -73.9537713980000291    40.8118110830000447
-53267  -87.9095857499999909    43.0440522500000071
-75668  -94.6921218791290187    32.912636982732721
-30305  -84.3863254625017021    33.8349887158485387
-01039  -72.6924561796065802    42.3941572934781519
-07114  -74.1792741810971989    40.7082327217449205
-79902  -106.49414235848009     31.7792275991189079
-95822  -121.496748224354221    38.5122157718790064
-02663  -70.0031077243242663    41.9066356666667232
-87581  -106.121962826271059    36.5221339512711651
-75078  -96.7900889122004315    33.2454578756972623
-71900  -93.0392336818181747    34.6351497424242467
-44112  -81.5736161174097845    41.5358379134874838
-61036  -90.3731838235693772    42.4085186013580824
-29720  -80.7430800574392435    34.7342801411153843
-24651  -81.4941253720690071    37.0975973821062155
-62674  -90.0152785659376491    39.4313063379721527
-49720  -85.2373539165804175    45.2877412555489158
-93282  -119.515167291666671    36.1383493333333305
-48824  -84.4900684761905012    42.7232659047619023
-50525  -93.7305543345005105    42.7289428267646088
-61749  -89.1147440732673033    40.0991737676567581
-23010  -78.1813487209302167    37.5127896744185989
-95867  -121.892397000000003    38.3414403999999962
-73141  -97.3840127669746778    35.5041507842506974
-24951  -80.638217515951581     37.4781633894389188
-62572  -89.685567528240739     39.3615296546296207
-08820  -74.3626368691638078    40.5780401662171784
-79743  -102.696288050377859    31.2722780201511341
-26047  -80.5793438779063393    40.5235695592163481
-67423  -97.9833526037735254    38.9831137830188794
-79316  -102.30583111379805     33.1579863800743695
-59802  -113.960053310517395    46.8872046644973466
-83622  -115.96453640088896     44.1350396020280584
-48811  -84.8526718236073378    43.1839550711759088
-55425  -93.2481308932461133    44.8453548981481234
-69132  -101.01079774611398     40.7971001364421468
-83822  -117.011482599170733    48.1683088614253663
-06455  -72.7178023017314956    41.5138667121769984
-96763  -156.924711845975224    20.8129336160990626
-98250  -123.081524844728364    48.5421067439714946
-12071  -74.4156874387754357    42.5521512959183639
-72653  -92.3762833564347403    36.3426753935175313
-32694  -82.1449611444776906    29.7809699211939751
-60940  -87.6350099692399738    41.2439085096125382
-03257  -71.9916233717127909    43.4158270686337531
-19442  -75.5843607083333495    40.1328716458333261
-49969  -89.2310958674032833    46.2342915469613303
-13602  -75.7790316562499982    44.0459102596153969
-46940  -85.7024377212801056    40.6857015697328919
-68144  -96.1197698214668463    41.2353632484098966
-03816  -71.247220353814356     43.6735303741801815
-88113  -103.163315490566106    33.8927204377358464
-53225  -88.0376153488510482    43.1159923143159247
-24225  -82.1338451779697607    36.9546716191813545
-95623  -120.843537098491709    38.631554779765537
-31031  -83.3216733039941033    32.9030502459319365
-01966  -70.6172734165559035    42.6577297017254651
-55150  -93.162268344497619     44.8861575311005154
-11366  -73.7980768571428456    40.7267442857142825
-36722  -87.5766640582385634    32.0819987911931719
-20109  -77.5189032810255867    38.7876441161227277
-12743  -74.8493363263979603    41.5295158556566548
-84304  -111.999406516447337    41.8349475065789989
-50636  -92.796820108320901     42.9029698238380277
-03894  -71.1971433063004184    43.5972694736211395
-07055  -74.1303325797832571    40.8572987688429592
-47679  -87.5750354999999985    38.348825000000005
-41723  -83.3006468585054307    37.2670518284556707
-14504  -77.2266864983534731    42.9736225938529159
-79058  -101.936731300000005    35.6126337399999926
-89450  -119.991917260869585    39.2591318840579717
-79532  -100.719341399477912    32.4097078835943506
-46615  -86.2112492780506727    41.6746254171667303
-84080  -112.442417113402001    40.0900515846833585
-90004  -118.310273761349322    34.0761189769861375
-06903  -73.569024356775941     41.1344937698932327
-45601  -82.9713307549468055    39.3144644074905187
-12701  -74.7037534928563076    41.6484818658286287
-37103  -86.6058955000000168    36.0548326666666696
-93728  -119.811899892790635    36.7582381600000048
-24064  -79.7842436740299803    37.3673748514025377
-52356  -91.8392265988677963    41.4731570103456164
-35087  -86.5865964047792005    34.3081940590099705
-92118  -117.169890581957361    32.6773115167584649
-50482  -93.4784863898950817    43.1317526849380286
-71424  -92.6915410789543159    31.1758288283357388
-28471  -78.1191594499999979    34.5324933499999958
-61007  -89.5928659723953302    42.1968554550311694
-28444  -78.3019812973512046    34.7011408760618636
-68860  -99.7730111284722057    41.1344343055555512
-00777  -65.9113289837133038    18.2261434267101059
-59834  -114.262772196680672    47.0377566334745012
-77882  -96.3945759000000066    30.9009867000000007
-98388  -122.594017121509012    47.1694895871004931
-64429  -94.2340849003000045    39.727203491582685
-49713  -84.8738244540747928    45.2008888957959627
-58782  -101.79510326305595     48.9277691358265017
-58200  -97.1684580000000011    47.9162074999999987
-31401  -81.0930534971852097    32.0675422965147732
-23889  -77.7729513118131592    36.8990748743131434
-72079  -92.189611745508941     34.3909318323353332
-92120  -117.070284552770659    32.7936410557627909
-13784  -76.2226106366459817    42.4390134627329161
-42729  -86.0990692642252355    37.3074047140980412
-27965  -75.9003016814516087    36.2794700947580537
-85352  -113.920542911764699    32.713385168067191
-62906  -89.2041480267763518    37.4578879644258436
-63116  -90.2649969379505563    38.5789757491902634
-61050  -89.7320955749751619    42.4400308440913889
-05037  -72.4892180466959388    43.4632456414096922
-98943  -120.952402645833317    47.1864174062499799
-95913  -122.195175910112283    39.6253873932584355
-34108  -81.8042993644311025    26.2450742989008639
-03221  -71.9625871615322126    43.2659639022249891
-83849  -116.005531440959487    47.5100364926199603
-28091  -79.9416980585426984    34.9782648226130846
-44705  -81.3408121182156947    40.8262250092144114
-98586  -123.85405779641664     46.626833333951204
-02571  -70.706641387602474     41.7512416493073601
-49847  -87.4412677500000086    45.7045044999999988
-05058  -72.2608789756756522    43.8729914459459209
-44654  -81.8720781794779811    40.5387138947883017
-81439  -108.945178271929805    38.392832526315793
-62631  -90.3604432599620253    39.8298283851992565
-43005  -82.2822522645739696    40.2833056547085206
-81007  -104.740847122372088    38.3344087940871532
-13744  -75.9082068799582288    42.249521830897713
-57227  -96.7084982375297386    45.3628459548693286
-38773  -90.7407429760116884    33.6005361439305616
-74560  -95.812627888888926     34.6749342592592882
-90520  -118.377772500000006    33.896597166666659
-54751  -91.9196042119961305    44.8820953325209899
-32610  -82.3413715000000082    29.6402333749999976
-55717  -92.4450129132896166    47.0847975821348896
-68111  -95.9637666176434578    41.2947962199560052
-35186  -86.5195153466598583    33.2496245676450641
-93262  -118.743112974619279    36.6067002944162354
-92105  -117.093350719710784    32.7386106763532538
-68780  -99.1313567176566863    42.5940398689992321
-47384  -85.5580915106077242    39.9133371887809929
-57105  -96.7339405871318263    43.5227746123462751
-95692  -121.395808740760117    39.038372716382689
-15488  -79.7477277236181266    39.9881241306532687
-87190  -106.666009500000001    35.0685169999999999
-97812  -120.239515151968391    45.5598327288677893
-04230  -70.3841998000000046    44.0695153333333351
-99692  -166.523041462562588    53.885094547420934
-56776  -96.5436323333333348    48.5436356666666669
-63367  -90.7896700524082405    38.7824834018987019
-29475  -80.8212408578769441    32.9497042259579231
-30363  -84.398737512000082     33.7905648720000116
-31788  -83.7019106822591965    31.1180231386033235
-61434  -90.0381902249068276    41.1759298534376015
-58105  -96.8947496170212617    46.919358808510637
-35575  -87.5591573417055855    34.0499093992407182
-56522  -96.3724498333332633    46.1346644962406174
-67228  -97.1730958391135999    37.7357252206165228
-06387  -71.9107777446808143    41.7453691205673962
-34240  -82.3822573965482832    27.326131540926113
-59072  -108.506959574305057    46.404897866555757
-54246  -86.9064532349680974    45.3685022034440308
-67143  -98.9280756199999587    37.3639124100000046
-42003  -88.5913280874678009    37.0267493755749513
-15901  -78.9142114104224532    40.3262152444764723
-10472  -73.8690626449415788    40.8299126391050606
-14857  -76.9394632558139477    42.5082317441860482
-96717  -157.905952069767409    21.6025128139534814
-88030  -107.735716925145169    32.2218264275953103
-28217  -80.9030224744141577    35.1679231321060399
-81148  -105.984744705521422    37.1719912699386583
-57364  -98.6074670506328772    43.4321009113924106
-99807  -135.459738200000004    59.2357046000000054
-95552  -123.429270089999847    40.3706017515150606
-04940  -70.0704814531250122    44.6210528750000037
-32428  -85.5731952527137736    30.6268492411461324
-14203  -78.8690545771879101    42.8816591071779882
-62446  -88.2267324394364891    38.5081965267605639
-97352  -123.019540193532791    44.745749006917741
-18034  -75.4088696121537367    40.5417497227281061
-17054  -77.725012731578957     40.4912596631578765
-58776  -103.319767171783568    48.4040514831870965
-92231  -115.507959397932112    32.6820155618538166
-94116  -122.482887459674672    37.7445318537665102
-15763  -79.1493793652174134    40.8981236434782716
-05488  -73.115036486757333     44.9224259765580811
-34235  -82.4812766787330816    27.365608849822614
-01945  -70.864776440329635     42.498706710855771
-92056  -117.285009589263225    33.1975461162704164
-86304  -112.491765250000014    34.596377750000002
-48553  -83.7237100000000112    42.9736079999999987
-87235  -105.573078111111144    35.4728481851851853
-60644  -87.7570939175103462    41.8824910639069827
-77380  -95.4708291369055928    30.1406722041430299
-33897  -81.6714984139313458    28.3020793866747447
-83435  -112.548609357735799    43.9793486083018905
-88382  -116.557249999999996    46.8027654999999996
-49807  -87.2623991257515286    45.7012256876252749
-48624  -84.4631394294623306    44.0606127870567406
-57773  -103.617392540037216    43.5925140856611293
-15433  -79.9530427597281061    39.9703424928968332
-63369  -90.7862743724082151    38.9401441451356121
-95307  -120.951486821148066    37.5878675681018493
-38040  -89.4345544620330912    35.8877578899090821
-92881  -117.543436356950764    33.8369549590236005
-15014  -79.7416743650486239    40.6082789038834591
-60073  -88.0996089698294043    42.3588597713016455
-40051  -85.5816166791812236    37.6590285212051157
-10917  -74.1203205228146942    41.3272321445848902
-27012  -80.3691365986477422    36.0069738960854195
-36584  -88.3785217023227005    31.204662852142576
-35444  -87.3046667423250966    33.3198762816127783
-17552  -76.5088166297751968    40.1081662941976873
-08214  -74.8151014117647151    39.2025956470588142
-21547  -100.884748200000004    32.6779165999999961
-24221  -82.9581823140095196    36.6436784584843167
-65076  -92.2096735125660842    38.3793681054893696
-59412  -110.893979906194431    47.3586164023548193
-11725  -73.281576309860597     40.8421902110584725
-74566  -94.9484755000000149    34.9500322499999996
-22435  -76.5708151211640882    37.9702083630371661
-70040  -89.956065932942991     29.7684034257583185
-48893  -84.9881555109216862    43.6659315814436155
-54640  -91.0446586290322841    43.2451767741935598
-79731  -102.3537459329321      31.3915621543421679
-06820  -73.4830852404808752    41.0778314114897398
-47458  -86.507343259259244     39.070179666666661
-83133  -110.231379909090919    42.5659906233766279
-27970  -76.5599332093937477    35.9124992737159019
-54180  -88.1689872647058479    44.3267839276017881
-03284  -72.0518880482807162    43.4841354268843361
-04220  -70.355903918705792     44.3219261598050167
-22902  -78.4722949893267696    37.9785656951968988
-94619  -122.180943018667577    37.7903426873969579
-78522  -97.5132036666666835    25.9492039999999982
-12194  -74.4482543292905063    42.5321453123104689
-98831  -120.144204858989454    47.9043181990503513
-82213  -104.954490328962621    42.4727667990215423
-49953  -89.3170015480733781    46.8451047137613514
-53810  -90.9925141902256911    42.8200034488720434
-67834  -99.643679646660857     37.5660722707804808
-55119  -93.0041223363014495    44.9445552979789511
-15671  -79.3195472703702791    40.3512052753086223
-36792  -86.9003518154981407    32.9235717326772033
-29935  -80.6922974973645637    32.3841398720651128
-78335  -97.1445202738095048    27.901289916666677
-76463  -98.4047742815252207    32.4749691622678114
-52066  -90.9531488588235817    42.6800824676470327
-20733  -76.527946967862178     38.8036784038193332
-25266  -81.1684287674417249    38.5984496681850544
-11206  -73.9423883579766823    40.7030936464702222
-53517  -89.8253897338903897    43.0203270980500605
-20230  -77.0327894285714194    38.8921701428571467
-76078  -97.4681741137059561    33.0852842433222278
-77614  -93.7440547105665445    30.299931323124067
-38332  -88.4294525294621252    35.4193559390783221
-37929  -83.916430599999984     35.962287400000001
-32095  -81.3759650275988378    29.990000710373689
-42166  -85.7145764606554366    36.8849014525722296
-76401  -98.2066918409365002    32.2521415415346553
-63056  -91.2248135775029141    38.3984714380279115
-46816  -85.0857359503786057    41.0129193988902259
-08223  -74.6552957165803974    39.262627486528487
-92614  -117.822901510207672    33.6779949222525303
-76660  -96.8999524336569351    31.9220594368931714
-05764  -73.2042903541882737    43.5280784648819647
-90650  -118.082305567150712    33.9063894772528869
-84306  -112.070373178104518    41.7960487336600508
-54962  -89.0328021313559788    44.452996563559303
-74372  -94.9217657619047515    36.479250904761912
-70639  -93.5183323580298094    30.9746863394039558
-49234  -84.366065203131825     42.1189769172259716
-14823  -77.5712239979592795    42.2484502392476529
-44077  -81.2352610202547112    41.7061904023158547
-45220  -84.5202287095682294    39.1469054855534182
-29639  -82.4112547289300466    34.3193832810457948
-75090  -96.5781385174394842    33.6258691262186957
-77379  -95.531953510140255     30.033059246999926
-26426  -80.5439690539299846    39.280091201621417
-18420  -75.7146788888888977    41.5995696666666603
-58632  -103.955947862564443    46.672983334605803
-83619  -116.916814523093336    43.9939908690947448
-63344  -91.0066894283277321    39.2289105446529689
-26866  -79.2368834264799631    38.8074183717378318
-78568  -97.5343877777777806    26.1843293333333413
-45642  -83.0523519999999991    39.0473794166666792
-13321  -75.3704629206798984    43.090381249291795
-72051  -92.3091390267056227    35.7949324189857094
-58438  -99.5738632928035372    47.6698944348542355
-32622  -82.3229466478822474    29.8931037778176005
-59324  -104.517005757184421    45.8384363120235179
-24620  -82.0218686677503683    37.4100728973525776
-26589  -80.3375529999999998    39.674741333333337
-32042  -82.2293388181818017    29.8714190454545339
-85292  -110.734602142857355    32.8998917785714866
-99708  -147.904844059171609    64.8826237278106532
-72839  -93.2887802232961292    35.6477563322015385
-28764  -83.3853142727272711    35.0765103636363662
-75657  -94.3493762048193787    32.7830148189833324
-68779  -97.212715579507659     41.9606749452206458
-15043  -80.492363999406578     40.5483375327398434
-81328  -108.331377320612887    37.3630146951853632
-18166  -75.7507736666666602    41.1744566666666643
-78749  -97.8622061434703596    30.2137677892091681
-97454  -122.820090621388118    44.2142812904422371
-57067  -97.4511759200523926    43.0463419633027229
-54718  -89.2631680000000074    43.0848735000000005
-33568  -82.2926711666666648    27.7816585000000025
-74953  -94.6186987469903755    35.0579058469001481
-31711  -84.134373683878934     32.1824947921914273
-01118  -72.5272217422138681    42.0955902571548393
-08758  -74.2056892622079403    39.790508934182526
-26070  -80.5893462449651423    40.258149251203001
-77302  -95.3795592093505604    30.2336269732320808
-61360  -88.6041914956011141    41.3218245227272192
-39952  -89.4189908333333392    30.2678295000000013
-63370  -91.236945553191461     39.0771613617021387
-58355  -98.3711808947368382    48.5810857631578941
-44050  -82.1302262254264548    41.2416599171405309
-22463  -77.4608967500000034    38.4684662500000059
-44810  -83.2861938000000066    41.2535617999999928
-46977  -86.9519175909090904    40.7011903636363783
-97622  -121.05508315596947     42.3990979302967688
-78502  -98.223337086956505     26.2564949999999975
-58218  -97.0603517048301256    47.5986195134168426
-54665  -90.8919228477751346    43.5319071479312498
-95464  -122.848255137146126    39.1323414543287669
-01588  -71.6683561058149508    42.1185783839371268
-26062  -80.5640812877207821    40.4199576367683591
-92626  -117.911967875552264    33.679241091533946
-98031  -122.193246042596314    47.4020044030633514
-63873  -89.6870159041351798    36.4231423825187193
-77336  -95.1079508624224133    30.0648320255096984
-35767  -86.7334504166666562    34.7824099999999987
-72127  -92.6096540144030769    35.1761372927689209
-81089  -104.794992618959057    37.6099556338565293
-33847  -81.82259479766536      27.8228409571984621
-83325  -114.229552781829966    42.582991953294858
-55046  -93.4228657358655141    44.4596942829820065
-76839  -99.848085999999995     31.2207824999999985
-41166  -83.1002885543847469    38.6351895065863289
-55434  -93.2499802263037338    45.1672602171505133
-83324  -114.273309297052265    42.8978546916100001
-85935  -109.90868562190326     34.1141735995964623
-71643  -91.5723078589965667    34.0034184956747652
-90506  -118.328789999999998    33.8862456428571548
-66781  -94.7391230585125186    37.2933378593585445
-10595  -73.7770491517999147    41.0875686161972098
-60193  -88.0970602930439526    42.0140038397309112
-71762  -92.7389693417176773    33.3462961996047227
-43217  -82.9429067969822       39.8241295761316536
-32341  -83.4333092727272572    30.515738515151515
-02873  -71.7686002357723538    41.5239892703251812
-19114  -74.9991750981169218    40.0636765604559599
-06078  -72.642610485007566     41.9891903571921645
-87036  -106.268758639928791    34.509897983363004
-57738  -103.181722829990775    43.6651056819484396
-14732  -79.1102231320754754    42.2260325283018858
-10115  -73.9641259999999932    40.8110039999999969
-74760  -95.3443338045976958    34.1578448850574716
-30144  -84.5985891305951156    34.0423047476063658
-71430  -92.5249603209054214    31.0506510834050857
-03849  -71.1326875214180205    43.9203556254062875
-07790  -74.0212385000000097    40.3713704999999976
-75075  -96.7405635990978965    33.0249505860555601
-06085  -72.8877298935305902    41.7453545274150599
-60408  -88.2223910913465375    41.2671186458333565
-17368  -76.5224406688459311    39.9894324050479497
-73079  -97.9733928133333336    35.2080422495238494
-64628  -93.0543465276433466    39.789371461796641
-46307  -87.339525963385725     41.4191285057794403
-58049  -98.0032023508715469    46.6727982627575457
-15502  -79.2559701447513589    40.0524438265193794
-87402  -108.141544143622539    36.775527462897486
-38059  -89.2467301287509258    36.113265077395944
-66031  -94.9009286343284231    38.8321710820895163
-93251  -119.698529124830515    35.3695341519674145
-39824  -84.8801725853658979    31.5159913849416427
-45695  -82.3436670039492498    39.1552107424541234
-99173  -117.815200371355232    48.0372894030790576
-33181  -80.1586027466815807    25.8984987057522567
-26884  -79.4101531444866993    38.8287912946767833
-19030  -74.8490401840984561    40.174917682397961
-05658  -72.3574082602087287    44.3580127701938451
-32053  -83.1517610578283666    30.561739435403144
-03108  -71.4614657500000021    43.0022332500000033
-29687  -82.3227610803846659    34.9540103105746311
-06025  -72.5331230000000033    41.6897752142857243
-83422  -111.118456229567286    43.7278124404648096
-48434  -82.6100949761904673    43.6610125595238046
-24612  -81.8397089983135828    37.0950393895447093
-36313  -85.795880727659565     31.1737732978723336
-74723  -96.0229390815656814    33.9873584700812046
-26632  -80.5187245000000047    38.7570570833333363
-42463  -87.8657483791946277    37.4870233624160889
-39562  -88.5026753571098226    30.5507491272370473
-66945  -96.8818587130045188    39.8971770252242024
-14532  -77.041726486417005     42.9621452330210403
-43824  -81.7599339920256512    40.3635353539937398
-17878  -76.3234800786741943    41.1720578355801692
-77058  -95.0985467738007486    29.5595002966789941
-93616  -119.594826034372971    36.6566375875238961
-80621  -104.807319340797463    40.0950293330503342
-31068  -84.1000042392286247    32.3130237797529887
-78674  -97.588316452380937     30.6752534523809501
-60406  -87.6821443008410171    41.6574168799940097
-77830  -95.9864643931394284    30.5107482733477298
-57759  -103.579106650390216    44.2388237003756686
-62378  -90.6578418701657682    39.8845376685083082
-19056  -74.8847740137502313    40.15150288116957
-20664  -76.9221377408368596    38.3460252591632411
-27834  -77.4022393376965852    35.6305231304834535
-41512  -82.4735708385694153    37.2546805466407918
-91501  -118.29824240461538     34.1902031903845227
-88121  -103.956735495011287    34.7074166097467653
-26201  -80.2091075367573012    38.9847639165738684
-44709  -81.386112052147098     40.8416345176687017
-78004  -98.5592563389201928    29.8642576219739269
-52806  -90.6030775756670579    41.5760228714655184
-77440  -96.1527630909090902    28.8854444545454498
-58483  -99.3842204449429687    46.6660167214243273
-85028  -112.008957869200202    33.5832347516976029
-86533  -112.85342      34.1703394999999972
-83312  -113.642740123711377    42.1362136391752742
-02114  -71.0658141306533082    42.3618170442210626
-62675  -89.8408806218779006    39.9988460255763272
-56158  -96.0544847738852354    43.6563348747346396
-43721  -82.2560776465517165    39.9469886206896447
-73729  -98.4446300394511979    36.4075571543739684
-56736  -96.1706704276354571    47.6666687391304649
-63732  -89.6151694811501187    37.5796348095846895
-30224  -84.2482053695834736    33.208449751749491
-54009  -92.5854715434164035    45.3521149676156412
-60634  -87.7965252110325451    41.9449273239011973
-40484  -84.6763955631867447    37.5075389459494204
-47406  -86.5153902461538422    39.1745244861538637
-43202  -83.0100577702779532    40.0204327039138974
-92339  -116.919885056353323    34.0783641923904739
-14432  -77.1416456875851964    42.9615827989996149
-43154  -82.8363615738470713    39.6013989528948116
-33026  -80.2953970054261248    26.0288368230506677
-28705  -82.1627042357963688    36.0228422294586466
-00609  -66.2690826779660966    18.1398487881355948
-48184  -83.3802741717921236    42.2781377059745367
-36089  -85.6910976681658099    32.1485959787986815
-68420  -96.1612031641574134    40.105958560951855
-60026  -87.843193036385486     42.0939171675762722
-62898  -89.0575264545119438    38.3470060191529001
-27282  -79.9322783789125566    36.0078861874308984
-17255  -77.8606289407406678    40.1616684974814788
-72069  -91.1384593482287073    34.5734665471013543
-30752  -85.5304942874187617    34.8972132936652528
-73564  -98.9866848868777538    34.8426067714932444
-01302  -72.8161460000000034    42.6817330000000013
-03868  -70.9475926068332399    43.3275869326565726
-73015  -98.5983149658886191    35.1059984434470778
-81047  -102.179149787347455    38.0746817710872776
-01364  -72.2962284134293895    42.5968900532456516
-49116  -86.6675432867756399    41.8502030965824261
-17221  -77.8194057409638162    40.0674268012048245
-18084  -75.4540233650793652    40.3265489523809535
-94551  -121.762317956280683    37.7092274671018188
-92242  -114.364516751135113    34.1431685833596745
-84532  -109.502334352600826    38.5512999431078356
-30548  -83.7873972143267451    34.0945489652976832
-95667  -120.790752180118801    38.721975684608644
-55723  -92.781451143417911     47.8620365107604044
-29039  -80.8999075378376062    33.4235181860360342
-43413  -83.6523389705681808    41.2396313538672459
-16416  -79.458871112244907     41.8189412040816535
-77086  -95.4926963096546615    29.9221353185682517
-27358  -79.8874490119001308    36.2203258475056131
-97108  -123.736241493273468    45.2775507248267459
-45383  -84.3312067920534929    39.9560246394355758
-32608  -82.4151263935779497    29.6026616112876297
-62852  -87.867261672413818     38.348798870689663
-79220  -100.796010791044807    33.7587973164178905
-23314  -76.5368571888772067    36.9477985672313309
-85023  -112.095590834425352    33.6328415782478984
-76938  -94.4281991290322793    30.9657736451612955
-30288  -84.3200442788376279    33.6531560686414579
-16641  -78.5620058738129217    40.4963522733632857
-10302  -74.1375861350681333    40.6304251883518717
-16316  -80.3042294971191097    41.6137807693754667
-44265  -81.2550646874999813    41.033033875000001
-49335  -85.665951021276598     42.7407824468085238
-32515  -86.7058530000000047    33.6345545000000001
-39854  -85.0787496076636103    31.8492629845897852
-99725  -148.026998198529583    64.8508074387255391
-51555  -95.8749266617289919    41.5533714207664389
-61759  -89.3250591370061926    40.437054763111469
-65591  -92.6002095297577341    37.9828081114961833
-81092  -102.737804594246782    38.1719624314912949
-60968  -88.0999694071472987    40.6753896107211332
-12138  -73.3704254029217822    42.7456165262627934
-02881  -71.5279234629442584    41.4772989304569037
-25880  -81.2100904251783646    37.8714045475017542
-33837  -81.6127399577700317    28.1975819963345948
-42123  -85.9913824640771338    36.8197307889314871
-83448  -111.723312157480322    43.8680274155058427
-45209  -84.427450594474621     39.1522844543660256
-60042  -88.2036320830539182    42.2780165160780896
-97457  -123.26697780885344     43.0356392445159628
-72021  -91.1865651586389845    34.8685646840476977
-75757  -95.3703370207641115    32.1255091717918688
-37206  -86.738156992546962     36.1806289068825535
-45698  -82.3963610202702625    39.2797726756756518
-24888  -81.5072808250000094    37.3612194249999945
-12912  -73.7237762420633658    44.4572983948413025
-31792  -83.9931089066944025    30.8249650211648571
-81052  -102.608943535335698    38.0771934956510307
-56561  -96.7415823112582274    47.4448775430463385
-59081  -109.974473390715701    45.0097498704061891
-30189  -84.5664146320806225    34.1242663645618407
-74368  -94.8608344565217436    36.2134398260869617
-72149  -91.7250250714285897    35.2482044285714338
-93642  -119.04792715555557     37.3174936755555322
-59640  -112.301692688034109    46.7496626324786106
-78007  -98.3589258591548656    28.4609471173708926
-93303  -119.083457500000009    35.2240995000000012
-08515  -74.6477337704381938    40.1263791663830673
-24823  -81.7384232289855248    37.6573868115942005
-12429  -73.9691112943723112    41.8231296969696871
-24533  -78.9274017587412402    37.5483654860139993
-81069  -104.929303689299104    37.9320247323899125
-11720  -73.0807594789300055    40.8721613129351979
-32007  -81.6301922430555464    29.7760673333333301
-41749  -83.3946769712460281    37.1832733487539642
-68836  -99.3758543345998078    40.7392398120250121
-44274  -81.7105061718750108    41.1232053749999977
-33190  -80.3503081147388656    25.559096651119436
-97907  -117.268241108979439    44.4326242551021053
-61882  -88.7583489405772639    40.1228664541594995
-71355  -91.9058202276352745    31.070008726880733
-48864  -84.4184600738888093    42.7029935344916467
-71772  -93.1025494152046917    33.82337136842105
-52773  -90.7570780254967957    41.6201283644545441
-21672  -76.0653315831683869    38.2752102821781719
-56137  -95.3226549767100977    43.8476862750591252
-74071  -96.2675559907407461    35.777262499999992
-15222  -79.9888428695435607    40.4469478090277761
-38868  -88.7434702932238935    34.1209951386870571
-73747  -98.3433342222222109    36.2704658888888858
-31310  -81.4915303999999736    31.7858001250000015
-85231  -111.59846245750137     32.7234843562471269
-80903  -104.815381481973773    38.8345883921393025
-67072  -96.6319867713787772    37.5511150575915877
-78021  -98.8244938979592291    28.4717849693877589
-04768  -68.487315491202196     46.7737079171554626
-88324  -105.436212285340233    33.4096904136125659
-82214  -104.779015111269331    42.2753456728483101
-86340  -111.826085199999994    34.871682799999995
-72107  -92.5450898646288209    35.153767384279476
-56332  -95.5003116850261904    45.9506249098207604
-52321  -90.9861918865689034    42.1462199593679827
-29331  -81.8566358148148225    34.6472957111110986
-23995  -75.4741110000000077    37.9752049999999954
-26152  -81.1983240200000154    38.9840836299999935
-21853  -75.7157309829901095    38.2075968833378212
-48747  -83.7611018502455664    43.5208479549917939
-26753  -78.7828317962424478    39.5829885060211311
-19809  -75.4953432381154101    39.772792369694379
-54844  -91.2258661239671227    46.8227998005260062
-43962  -80.8842561311475663    40.6796521366120274
-08251  -74.9369245901920493    39.0210491478053285
-41849  -82.7330667213823148    37.173298174945991
-92022  -116.965161500000008    32.8224777500000044
-67355  -95.9961653327948312    37.0370822568658724
-12839  -73.5673795534993502    43.3291877922274011
-17309  -76.4500263899336971    39.8733714731126128
-64863  -94.5873848550654088    36.5435969476490783
-32446  -85.2085077031608478    30.8056640028695412
-05657  -72.5209966157760562    44.5289181068702149
-55054  -93.3526272209142434    44.5705796551246323
-57537  -101.111040592715241    44.5764739370860994
-23140  -77.0369288523449569    37.4450025633830563
-50140  -93.9434878772681401    40.634154669531938
-99207  -117.388931031706036    47.6908454959541146
-65613  -93.3947891084382036    37.6211977634796142
-13113  -76.5831006599999853    43.1218887999999865
-87539  -106.027393341346141    36.4080067163461436
-59720  -111.572725763026028    44.9407068449399816
-86332  -112.668339924259627    34.3698902559349122
-62205  -90.1274066816536106    38.6158517103198662
-72109  -92.8520704166666775    34.2092580833333315
-62538  -89.5131438298004696    39.3556092574813547
-63005  -90.6282180977874248    38.6358838438720014
-10547  -73.8484731550034326    41.315613191042651
-05462  -72.9777304660394748    44.3028047836163594
-25816  -81.1368581904761896    37.7376320476190443
-66552  -95.6239082639860527    39.5877607849649777
-81247  -107.310472500000003    38.4501970000000028
-25071  -81.4714607860320683    38.4563587371322839
-87501  -105.93240825381649     35.7021708647224685
-29851  -81.8166371077337971    33.515678486100704
-67351  -95.5714874395604994    37.1344359423077321
-37860  -83.1922254864066275    36.2494514261302498
-14031  -78.6208952497635352    42.9816871370738838
-16345  -79.106751665983893     41.9507524750404599
-21122  -76.5116074840442479    39.1252003703724469
-50653  -92.8775009232968642    42.9678776069556747
-99414  -95.9607905000000017    29.0935780000000008
-49315  -85.7060223158257344    42.8164485387887055
-73523  -99.2841234210526267    34.5524816315789494
-57732  -103.676895851262813    44.290408767071952
-74025  -96.3068309999999883    34.3167310000000043
-04034  -70.1361694285714208    43.8449558571428568
-62959  -88.915249392629562     37.7169898513421415
-11732  -73.5365994342105438    40.8449213587257631
-71069  -93.9808498833992019    32.9715462262845165
-84667  -111.635947364130502    39.4869069402174091
-30549  -83.5925889578318078    34.1062575340982832
-15072  -79.8546751010101161    40.1390310303030375
-58741  -100.832673154036755    48.3389020574542201
-25512  -82.3227511314307776    38.1934984421222197
-31630  -82.879489806629806     30.9599648052485996
-43018  -82.6825534772727195    39.9570501818181967
-84073  -110.421411222222233    40.3585535231481529
-15960  -78.8645849047618981    40.5017674069264189
-34769  -81.2899448416007715    28.2479969901727124
-08854  -74.4626983249319068    40.5538698767904293
-91321  -118.515877222843955    34.3804992347162255
-84733  -113.732752302857136    37.3072886285714347
-36529  -88.2954370814093465    31.2832787089914852
-12833  -73.8516350196803302    43.1316657269372072
-37819  -84.1881829568801123    36.5517072200380611
-69366  -101.52084993526303     41.9865965326315944
-93004  -119.169991579734571    34.2790345785640866
-46039  -86.3149982087543606    40.3697369711399432
-19023  -75.2662621245858077    39.9166802319416973
-35268  -85.9978945000000152    33.4390492272727258
-18850  -76.4931752742262177    41.8569732432681221
-95723  -121.152272833333328    38.1613366666666636
-52160  -91.3407102750379494    43.4626358223903324
-04096  -70.1751773955054716    43.7941822952099358
-38829  -88.528359395105241     34.6531164302704084
-30834  -82.2498159999999956    33.0376849999999962
-68922  -99.8970895301311543    40.3301303895196597
-41719  -83.2498863226706334    37.2968404984192787
-23014  -77.9080705977010979    37.6650699770114983
-12803  -73.6400430709503979    43.2862346609772501
-65338  -93.2446106942342965    38.327999732867454
-65583  -92.2122124053708916    37.8144399850131592
-89448  -119.94518341768385     39.0016437657539683
-75604  -94.8090118691549151    32.5304178531849857
-54136  -88.3378568766518129    44.2674252613803176
-31058  -84.4363215226835706    32.4993716897763392
-16249  -79.3155492006641367    40.7679615633301751
-44562  -87.4412220000000104    30.9251077500000022
-61473  -90.6556000281078269    40.7150604750593672
-99039  -117.231646937931032    47.3357063034482692
-11756  -73.5158642654083394    40.7254009475081489
-76001  -97.1499584037430566    32.6335427148662802
-54653  -90.8987496637554528    43.8402922612809789
-39345  -89.1470482844949146    32.3148156276910328
-27108  -80.5701229999999953    36.2319334999999967
-17201  -77.6575887807534144    39.9420182453660289
-20689  -76.5847972089696896    38.662145754956093
-11218  -73.9767040655272297    40.643668138461635
-51630  -95.1937633771273255    40.6033715282504915
-25506  -82.195909185306121     38.2211834101613945
-27455  -79.8133514125976831    36.1633162984758982
-25093  -81.6839157413792805    37.9761699137930719
-47166  -86.1677840072258334    38.3068610943396308
-24733  -81.2044763471809432    37.4413498550233115
-37770  -84.690922727919201     36.1366375292480697
-20723  -76.8619163080330026    39.1341288248162229
-18853  -76.2760412111738759    41.7090477049717876
-95624  -121.359003587216279    38.4247143457678391
-25938  -81.0451476636893773    38.1437984063895854
-58081  -97.1311971398732652    46.3025353282237901
-17835  -77.1875186960784845    40.9559395924369412
-77494  -95.8113910569627052    29.7348338834803272
-64856  -94.2712181422126321    36.5626599036193838
-26591  -80.2870227199999107    39.4548084921738891
-97327  -122.958549282209745    44.3855599713517393
-16025  -79.7639948856678416    40.9433596558461872
-26529  -80.1245273636363606    39.6736714772727339
-45039  -84.2458444013523575    39.3248744730806692
-44862  -82.5917846842105092    40.7678725263158057
-50456  -93.2109010931575312    43.2861442877163256
-76108  -97.5085977074603107    32.7763950022170789
-82059  -105.210605017093982    41.0563533447293523
-03856  -70.9591543652604599    43.0372542545905219
-66725  -94.8597439764768353    37.1605437160217988
-31787  -84.2458366746527645    31.8840441090277267
-60451  -87.9615045604658121    41.5047201007767939
-20878  -77.2419738048264719    39.1107376849785027
-39746  -88.4066675021809232    33.7581263055115102
-95131  -121.887526078359556    37.386140786373204
-06238  -72.3356266959653169    41.784644639146336
-75766  -95.2602334828707313    31.9523164817135132
-06608  -73.1808988034699723    41.1884030895897908
-97917  -118.127754999999965    43.5250356774193463
-00634  -66.2454030774193541    18.0980169903225807
-25671  -82.1952229239582834    37.8911037916666729
-29119  -80.8389874615384656    33.5142404615384564
-38961  -89.9035767621408723    33.9702813860257109
-26699  -81.1465655000000083    38.2315300000000065
-67142  -98.1320395980141313    37.4651982028368309
-26504  -79.9859811111111298    39.6434743333333302
-66550  -95.8071658025211121    39.6543929397758887
-36467  -86.251839270732944     31.2899285972193013
-36858  -85.3003012480972416    32.287246181279869
-46553  -85.8404290465867916    41.4873794762000756
-08884  -74.3951696551437038    40.3951607471886192
-75001  -96.8401177907843334    32.9563180921590941
-57020  -96.8226118271428078    43.6732530692857921
-76707  -97.1588481564622555    31.5525792638179645
-42551  -86.9159795000000059    37.9279174999999995
-85302  -112.175423133920873    33.5691909062236462
-42103  -86.3565668005718692    36.9547690532109101
-22562  -77.9563775000000021    38.2359009999999984
-39819  -84.6067917288748674    30.8320564320765484
-96161  -120.188787138041718    39.3328589205301142
-64402  -94.3268221888209979    40.2504953065581503
-29057  -80.6794788461538559    34.6025546923076917
-78152  -98.2100407378143245    29.4248620282196462
-24415  -79.3227754475524307    37.9209449300699362
-86020  -111.499782204545468    36.0600104242424351
-97333  -123.286798182846184    44.5201790479804913
-48116  -83.7894011475854796    42.5059841540043664
-45636  -82.8773773316582805    38.6288698341708781
-79835  -106.594230452523419    31.9282262922725941
-32702  -81.6277553646081202    29.0263066588054812
-72845  -93.3615542688989848    35.3770562937595088
-89532  -119.323290624999998    39.6068678749999989
-13475  -74.8312773291925737    42.8911208757763944
-42164  -86.184955179517118     36.7704360003665158
-69147  -102.050163948745322    41.4184186921174202
-65789  -91.8907023507547365    36.8577269479011136
-11743  -73.414835632635473     40.873165840595675
-62245  -89.5608264382533008    38.5580633549197316
-18709  -75.8948025364742165    41.2852783723404215
-21842  -75.083729764060152     38.3802970832400803
-25312  -81.6588127790813871    38.4512168434252857
-61414  -90.1558087373484369    41.1300332831452025
-60912  -87.6116453526219203    40.9684493001809003
-72082  -91.6866864381845517    35.224621925925895
-15377  -80.4469620998885659    39.9955259465241042
-25544  -82.1098258524590108    38.2210109672131182
-49444  -86.2164338558985719    43.1844875572216438
-95687  -121.953949404470649    38.343575670806608
-84338  -111.942299215058483    41.9157147998195541
-95693  -121.21943805726211     38.4092197927229364
-95254  -120.958203356666573    38.1943129077777854
-85194  -111.657055571067232    32.9128363216997855
-47147  -85.5536003784413595    38.5937102597015169
-37095  -85.9699836966386073    35.9650240539660757
-01537  -71.8930791610824684    42.1692750070876627
-19512  -75.6751558596695872    40.3480967787350835
-46140  -85.7805621432650156    39.796841193636638
-01508  -72.0789438000000047    42.1081836000000038
-51038  -96.313095448264292     42.7061747425793428
-88356  -105.251079833333336    33.3932015000000035
-29924  -81.1084607867109071    32.8740009695897157
-75043  -96.5981254783107488    32.858030329750413
-60612  -87.6876402934155834    41.8796855219903534
-81425  -108.029470889639157    38.5803972790277712
-47954  -86.8092439952644241    39.9028964992107333
-38967  -89.7201047890532521    33.4774541695660091
-81657  -106.38507566279705     39.6360886614866601
-39218  -90.1534611467004652    32.2184804446700355
-58737  -102.420079849136528    48.9056189331127769
-67632  -99.4988704628662504    39.3651907567991444
-16733  -78.6029907008087179    41.7123946442048137
-76126  -97.4941315605719154    32.6581939901168852
-41764  -83.256283367578348     37.1226755016677998
-37301  -85.7864797369117866    35.4294017817539526
-75935  -94.1884830325697067    31.753616195038731
-02543  -70.663854714207929     41.5274014910179616
-58372  -99.0573647557252741    48.937465952926118
-57783  -103.873883505060036    44.4852415125799538
-77091  -95.4384364167266597    29.8534944442033954
-60410  -88.2256592072794348    41.4308587796001788
-56097  -93.7255355136226598    43.7274172577482503
-13662  -74.8949498906790581    44.9281257778961702
-84309  -112.097254736211028    41.7184006762590514
-23147  -77.0249016081081237    37.3598261081081162
-14836  -77.9225146483265547    42.528787404401605
-17579  -76.1803082387206985    39.9631696610887275
-63558  -92.7684986224533361    39.7545684902287348
-19139  -75.2295933349526962    39.9619511236167497
-96010  -123.28081246210283     40.7558036564792232
-68981  -98.9059039461538418    40.3023222051282346
-28763  -83.3927535513968223    35.0466733505822319
-38483  -87.3325551113965872    35.4313816653910791
-72421  -90.9694319797768003    35.7661563723849554
-83812  -116.262604656250005    47.019218281250005
-93823  -118.333397545454545    35.636047272727275
-11116  -78.310694600000005     42.2382173999999964
-21037  -76.5411657246489767    38.9206935964184879
-44013  -84.7143225000000086    39.3755749999999978
-60661  -87.6438524936387324    41.8826377875318059
-13668  -74.9884654888993936    44.7508298781295295
-08846  -74.5015987746523223    40.5761172948593014
-98857  -119.06065106639366     46.9948323905764056
-84049  -111.480209686108196    40.5241055998305981
-38860  -88.7606223403760026    33.981381255552165
-97227  -122.673539600691427    45.5436510738979905
-11423  -73.7673194814814792    40.7156728148148304
-66017  -95.2720644442565998    39.7144247728040938
-67352  -96.0716880709676673    37.3656957364055344
-59062  -106.245669316628593    45.1931635489749581
-68791  -96.9269294784447482    41.9824453595554914
-69021  -101.533900714076751    40.0833608183145529
-75871  -96.6615251333333276    34.5942846000000088
-68961  -98.0510776521073382    40.2064312758621227
-49464  -86.0034159551036623    42.822716677713494
-32748  -81.639310615384602     28.9436818461538472
-23129  -77.7757550150326722    37.6993421725490592
-55016  -92.9395600246859175    44.8330045867745568
-14860  -76.8474900951296576    42.5935103363677712
-20137  -77.7253532899652697    38.8011319024221066
-40815  -83.2443333842310267    36.7757211493614662
-37936  -75.5813885999999968    35.260844199999994
-44221  -81.4781900117382349    41.1390800077223844
-05838  -71.9431572173913167    44.4483703478260921
-98294  -121.791540150245993    47.8704557496428578
-34136  -81.8099716249999886    26.3841318749999978
-71339  -91.9256448524589729    31.0223018934426094
-43836  -81.7187926612903226    40.2030680161290448
-92128  -117.068623561161388    33.0056736425152053
-37917  -83.9159879241697695    35.997470745848851
-20833  -77.0558977172265571    39.1921675307618997
-33585  -82.05834976545259      28.7412921462472895
-68742  -98.5262356256982343    42.3708052374302113
-12866  -73.7550499205845114    43.0777136004694654
-38233  -89.034967366377856     36.1901099578835499
-46920  -86.5066829843526648    40.4688481763868211
-13032  -75.7613957827055486    43.0837031526459953
-44402  -80.8588818737411685    41.3817369883810855
-77990  -96.8905317347497999    28.4642296093214355
-35751  -86.2723570902325889    34.8191638465115503
-11792  -72.8364749562232561    40.9465602992274924
-81327  -108.655903838430859    37.5047494793882237
-05489  -72.9091480919449708    44.5541118146529342
-90744  -118.260136362132968    33.7840230471943528
-59055  -109.840373677581795    46.1040053060453801
-25076  -81.926358789883281     37.8574749494163214
-45380  -84.5128852389953522    40.2404282255657648
-04756  -68.3167459637127337    47.3154147012987494
-88119  -104.288604183188269    34.5010164259879915
-22801  -78.8731915152367407    38.4188019063853616
-34684  -82.7273091810276355    28.0768946695652453
-63343  -90.8351038893917178    39.1471411273501886
-24631  -81.9990766682223295    37.2143105462451658
-02556  -70.6274530111507346    41.6403871523193914
-36071  -86.3821438074111114    31.7206129687957166
-40040  -85.0506071912210899    37.7755644102563863
-88601  -103.78181585714286     35.172186428571429
-62373  -91.3613099879397481    40.2585325663316667
-69034  -100.443317877980363    40.2572769032258577
-71834  -93.9511429209302378    33.1148190818604888
-33032  -80.4023547821795432    25.5272735533616952
-03278  -71.8251229639752609    43.281035141792259
-62019  -89.4495722343980759    39.019783547911544
-67005  -97.0257233530573302    37.0652936917948495
-75445  -96.5730775000000108    33.4199430000000035
-71766  -92.4926563215258852    33.7739448869209795
-31968  -80.439795333333322     27.5868203333333355
-65556  -92.402526703734253     37.8625246758688832
-94586  -121.871362891915112    37.5854758158236493
-95797  -121.440803499999987    38.379413999999997
-89029  -114.623913129521341    35.1318415447260648
-61356  -89.441826852647722     41.3779444752046501
-40020  -85.3834540340136101    37.9338742653061161
-50325  -93.7985649385828708    41.6120707632052742
-70444  -90.4563503418653738    30.9057657721675945
-41017  -84.5644485820814964    39.0301172030698567
-41033  -84.4548830093591505    38.7709562315090537
-12975  -73.4118017777777823    44.5254048412698964
-48742  -83.4302465247525191    44.7278695130511892
-24014  -79.9268341034922827    37.2314777325053612
-12742  -74.7213123344156003    41.7119399318181721
-28127  -80.1592212749792736    35.4575426594900307
-74983  -95.8091838333333357    36.9155510000000007
-21240  -76.6786617653061029    39.177712943877566
-73029  -98.206863247206698     34.899037224860308
-60652  -87.7140155298166633    41.74483036424202
-76262  -97.2143416286015452    32.9940623728199967
-51640  -95.654073985109676     40.6237606849529271
-07074  -74.0550512605364304    40.8390547356321747
-88130  -103.338395408003919    34.1667363178718659
-53528  -89.6349182193038132    43.1185126435502468
-53926  -89.1379277500000171    43.6912557380952222
-78658  -97.603665352941178     29.5986190588235267
-14539  -77.8792720740740521    42.8348558240740687
-97833  -117.984813348121534    44.9331351751923549
-75052  -97.0265596641500565    32.6695288165816962
-59057  -108.877180656988997    45.8318406082205456
-13628  -75.6853354516129144    44.0184310967741865
-10994  -73.9766660691887807    41.0990148504794135
-30907  -82.0948050980665016    33.5183966817835781
-51011  -96.5157706689188899    42.9163524256756759
-28682  -80.9615777739465585    35.5850215738611908
-98275  -122.30371061181377     47.9117042534756621
-54157  -87.7490274099926211    45.0527091043350367
-02648  -70.4162696888374029    41.6667325078629176
-22311  -77.1231914335328668    38.8352377920159597
-79506  -100.290565407695723    32.0945901279723387
-21237  -76.4980977279249572    39.3405736685737608
-49051  -85.2346812262130982    42.1875161146817774
-39183  -90.7992839533048084    32.4114676686007925
-17042  -76.4260163372419044    40.3098186013116973
-03246  -71.466241986447983     43.5597804131962576
-31902  -84.9812459999999987    32.4647982500000012
-60455  -87.8062567027519094    41.7415935711007506
-34734  -81.5232338559783898    28.5397502803441405
-30123  -84.8086303333333262    34.0285188333333295
-12569  -73.8044021210981924    41.7383780546590657
-79563  -99.889414291966105     32.433262075114321
-01257  -73.3624865729759534    42.0980977390725357
-63132  -90.3744003075306495    38.6729924478906852
-98834  -119.990059727058735    48.1627908005882475
-04420  -68.8017016666666592    44.3893853333333297
-91934  -116.193819450354496    32.6299665381205557
-64638  -93.6032123545455335    39.6365692387878283
-44028  -81.9291948334931419    41.3199541824863417
-47122  -85.9740075662273       38.303274776690678
-97355  -122.857618294786761    44.5252480326400715
-52079  -90.7242088614769102    42.2813141229086611
-01731  -71.2832136603054067    42.4567109618320941
-51051  -95.9709550781670089    42.2177900754717115
-72840  -93.6183161786281204    35.4709990761935003
-05262  -73.196999772434225     42.9769615715280437
-64164  -94.6318654635762186    39.3332755496688904
-32210  -81.7507760117994025    30.267049139690215
-05404  -73.1836680600835763    44.4958108678161537
-08079  -75.4357701844484154    39.5534197706828579
-78729  -97.7673180249142888    30.4532602233142313
-89822  -116.115272426681358    40.7081891719955919
-52624  -91.3341691449275288    40.7423081913043319
-92683  -117.994483813230957    33.7520723565198608
-33786  -82.8384484608294542    27.9213386743471688
-13617  -75.1345397149191285    44.5795092667463564
-93216  -119.603328545454545    35.7875911590909084
-53962  -90.2644960000000083    43.6853556470588202
-72801  -93.1351136325500875    35.281250712666079
-56320  -94.4232399685984518    45.4645186819483342
-24529  -78.640045103675007     36.6332196502899166
-59520  -109.942030862030549    48.0596849777862758
-45843  -83.5343802007439393    40.784995283241706
-06260  -71.8859022872639173    41.913100688616673
-76845  -99.4971425253862094    31.5597089036055856
-17335  -77.1636623333333347    39.7876300000000001
-25102  -81.3634290952380752    38.1846350510204289
-24855  -81.3321325000000002    37.7933670000000035
-45002  -84.7251680982652005    39.1859748759294888
-46750  -85.4943901902952774    40.8843062327633788
-52318  -91.899960115356734     41.8858979834174434
-57382  -98.6224256392909098    44.0807985936095434
-35203  -86.8111047693602558    33.5180239284511927
-02144  -71.1219527621316132    42.400627550693244
-11050  -73.6950546746573707    40.8376612566130532
-92324  -117.311841952069344    34.0548869770411002
-12153  -73.4811078751610296    42.6406037069926569
-68833  -100.095990933491706    41.8644707214964598
-12164  -74.3702068624863131    43.5065389174917669
-73982  -97.9561506666666588    34.7397463333333292
-25428  -78.023583744270212     39.3679327132833592
-04408  -68.2910503396226005    44.8887462859980459
-98941  -120.997798671628559    47.2235523266199522
-98737  -145.742047749999983    63.949620000000003
-26662  -80.7685566147713701    38.2612214192349072
-47956  -86.901423090909077     40.8722913636363572
-49853  -85.7323773272800764    46.3292514991553901
-73129  -97.4897809282098819    35.4319730343301913
-95645  -121.743448066744563    38.8503836604215635
-95493  -122.974140540358647    39.1899529775784714
-80467  -106.913368409807035    40.2841237781795058
-56201  -95.0434757624696402    45.1195487381282803
-89039  -114.873440942982441    35.2616016929824596
-27901  -83.8339315000000056    35.194566833333333
-12828  -73.5854726336890366    43.2652764444763349
-62025  -89.9433282776305134    38.8225467716134531
-40856  -83.5430856533883173    36.7128756483516199
-71021  -93.4436004763948063    32.9590455321888314
-78956  -96.9326592622281566    29.6833928043530868
-90292  -118.453596749077363    33.9768325266209885
-26282  -80.1148284548286966    38.5385582024922329
-62098  -90.2934226184210473    39.3760061184210599
-73548  -98.1106991268116246    34.2465863478260886
-94516  -122.169004659025859    37.8338336962750503
-31820  -84.8411578827108883    32.5750738659794976
-27523  -78.9231153245334554    35.7696060750600608
-94569  -122.192756905956045    38.0459392319748986
-78597  -97.1686454472308725    26.1154155256008274
-96015  -120.824007176954737    41.4629221316872005
-32333  -84.41688309483078      30.615913636395419
-76888  -99.6031697291065967    31.5774819524495847
-53548  -89.0770060363204692    42.6872234004473086
-11718  -73.2645476556212429    40.7194621479289935
-87548  -106.190088518599524    36.1838873391685141
-16262  -79.6469268684587348    40.8370579053146159
-24881  -81.686707966666674     37.4459986166666781
-92543  -116.972689371713528    33.7331521910536765
-39061  -90.5064039999999892    31.6111533333333341
-54758  -91.221996625880351     44.5612855325704516
-95206  -121.317937306586416    37.9174815404085166
-19507  -76.278291516623554     40.4876147311687475
-98240  -122.636898620128022    48.9433755066900034
-60139  -88.0809376146973051    41.9195341607084302
-52206  -91.8783281078946459    41.9895354072368647
-10029  -73.9450376784946286    40.7920482279570109
-45034  -84.248288903165701     39.359473810055853
-35032  -86.3352545909090736    33.2613202386363653
-95633  -120.83885061674988     38.8459133215056838
-96040  -121.495542577914762    40.7982271474216205
-77561  -94.7531235376343943    30.1655547204301087
-06031  -73.3375168658891994    41.9538622379009922
-62997  -89.5895672305344419    37.9824934045801257
-99740  -145.279108459459451    66.5496413243242984
-20618  -76.788220467008216     38.2838096995515684
-79229  -100.811502190274908    33.6272664312896481
-46795  -85.3420465581991863    41.5508224638837476
-63801  -89.5846210147931146    36.8926614236216039
-50606  -91.6655517564171447    42.7538588578510854
-60643  -87.6614506561602838    41.6993153754346366
-66770  -94.7097077661989459    37.0813872899131454
-13111  -76.621660566844966     43.2611769163483402
-48009  -83.2187230326108818    42.5449895300722432
-98004  -122.205435119404143    47.618325778741962
-68182  -96.01462522222225      41.2533115972222149
-97121  -123.952896140549498    46.1957114959612198
-16836  -78.2630206347806165    41.1233891097150277
-78375  -98.1474598263589399    27.3606030414548655
-09219  -116.827651166666683    32.7921180000000092
-41504  -82.9924930000000103    37.1388849999999948
-70715  -91.7218379054754962    30.8324258841498526
-50236  -93.4919594320921874    42.1681529837441857
-56684  -95.69160590938003      47.8458709872814367
-87024  -106.734307011936892    35.6488132392837542
-72013  -92.3741580321048303    35.4594645184249302
-18248  -76.1244038387095827    40.8945743123939351
-29543  -79.2649789262160454    34.2875649454053146
-50567  -95.1037722595574166    42.5273303943661816
-92103  -117.169049196883819    32.746457495883817
-60074  -88.0222513055159084    42.1287823406816955
-76435  -98.8433532158012582    32.2527406866816548
-23834  -77.4012371361846476    37.2789348524666408
-51341  -95.0398761702127644    43.0155125957446742
-41052  -84.7760421983986987    38.6544777962633361
-97624  -121.764509329367812    42.5589405310642945
-99755  -148.945788639344272    63.7156695409835976
-37329  -84.469589562626723     35.4030322694853368
-58620  -103.389738173611136    46.5226689236111
-19135  -75.050379604210633     40.0268555103759596
-52314  -91.4470208696233868    41.9314898269929444
-38962  -90.1840636042553712    33.9125033744680806
-07834  -74.4875310043826317    40.8865053172636124
-04997  -69.6869009999999918    44.7765773333333286
-43070  -83.9592000731707344    40.2182334878048735
-05601  -72.410914921568633     44.3560514705882341
-58310  -99.6286880833682602    48.6374560854575932
-95565  -124.044997622950788    40.4563485469448594
-37873  -82.8470922455106376    36.5139324137100942
-76550  -98.1807914198449652    31.0812299810566408
-31406  -81.0902803475971865    31.9883589893017835
-65608  -92.7387740147698878    36.865134684503623
-00613  -66.7038290740740791    18.4650650370370357
-68522  -96.7532833311733924    40.7929163796496184
-76518  -97.1549738000000787    30.845008186612521
-05345  -72.6688399228812187    42.985340014796023
-61956  -88.1505171233507951    39.8574610960986107
-27263  -79.9507513228282534    35.9102397961294528
-45440  -84.1043408626455147    39.675537825432464
-58238  -97.3989146254272384    48.7827850886752472
-43611  -83.488600161545989     41.7077154818633176
-18924  -75.3558147000000105    40.3095579000000015
-05701  -72.9537356572826212    43.6243160670056085
-00758  -66.364970789473702     18.1204701052631556
-21702  -77.4458317690343279    39.4560718320573258
-65336  -93.5631361059710542    38.7675451066112799
-85227  -111.729251500000004    33.2124409999999983
-93628  -118.91507416556297     36.7836151615894025
-59740  -111.782100410919682    45.4856783351293004
-98605  -121.587185639735765    45.7434500995934243
-42211  -87.8671510317212778    36.8318112315971575
-74532  -95.194806066666672     36.0613528000000088
-57776  -103.450943954545437    45.3341532954545485
-58203  -97.1028054891808523    47.9452089496136011
-20728  -66.6334390000000099    18.0114654999999999
-75457  -95.2124528224923523    33.1354223534759385
-52334  -91.9448559599198489    41.733306501002005
-73007  -97.3251354791167245    35.6843783963801044
-75070  -96.6935700631514692    33.181948543738784
-06968  -73.4696055454545416    42.0049850000000049
-42176  -86.9331070909091039    36.924300499999994
-43208  -82.9330762499999992    40.0584661249999954
-97107  -123.881486614356234    45.5385621900069779
-76031  -97.3457178929970013    32.3614231833812127
-70129  -89.8985261211461193    30.0526672063837488
-48866  -84.3706867213709728    42.9974053157257288
-90063  -118.184143388581248    34.0470962553675847
-23858  -78.9733448888888887    34.6423362222222195
-74843  -96.7336789967320101    34.6632569215686104
-52309  -90.8854910081768992    42.1206910825838818
-35139  -86.9762612378049056    33.711644030487804
-78166  -96.4542959999999994    31.8913626249999993
-18814  -76.6061647126436895    41.7807373103448398
-07869  -74.5738422256518874    40.843691875793688
-14525  -78.0068538299608321    42.868839812336752
-41714  -83.5078950398969653    37.1727871673101475
-75495  -96.5547786882614218    33.4276589147588652
-95705  -120.642516607843163    39.3131544509804058
-55775  -93.1819060574508597    47.3186388348294784
-39083  -90.421936592950459     31.8473684198614926
-63964  -90.4246394598213925    37.2373987633928678
-58732  -100.662514000000002    47.839567333333342
-64748  -94.1105793286148469    37.382996210819087
-68073  -96.403708283120622     41.2463482978409886
-19047  -74.9137802312785084    40.1806338547096331
-49030  -85.33176952287576      41.8557738660131378
-61320  -89.1871438590380592    41.354412606965127
-67483  -97.1889507921478355    38.5476079745958344
-20906  -77.0592829835517392    39.0820021963430193
-77701  -94.1038587073953323    30.0733160258521259
-61482  -90.4272788347702061    40.3785746364943137
-97467  -124.012487238613744    43.6923329718111262
-54721  -92.064336499999996     44.6762404999999916
-66370  -96.0125285000000019    37.9811064999999957
-55429  -93.338852943480461     45.0665573122116001
-71076  -93.163475888888911     32.2523545555555557
-89006  -114.902144444444446    35.9681035555555511
-38313  -88.6255078530001157    35.5981892510318474
-09692  -66.331041600000006     18.4064364000000005
-50862  -94.6537692364706373    40.8140361564705785
-15224  -79.9458155208845795    40.4638671839681123
-58009  -97.2468049642857011    47.3408810952381103
-78040  -99.4997926521384954    27.5144039967976113
-93033  -119.166461253383872    34.1673603159022861
-50623  -92.2190983333333065    42.528737518518497
-67584  -100.154308766853902    38.6740373370786514
-91740  -117.853326786580254    34.1184187113970196
-91310  -118.623422190082621    34.5849740082644743
-76798  -97.1209085084745425    31.5471244237288175
-24126  -80.6822655212766051    37.0701537765957596
-72207  -92.3428575241702276    34.7725167457094315
-03435  -72.2801803225806339    42.9255928387096759
-33062  -80.095252679601856     26.2386981521849023
-31516  -82.2645461439267507    31.2936041867300752
-67443  -97.5242128798218886    38.3725398301186686
-07032  -74.1432014024434096    40.7644629310097031
-85286  -111.837152012905619    33.2713148205467064
-99021  -117.27737508635461     47.8073638807645693
-99322  -120.222771612807932    45.9564444339107823
-00986  -65.9776701279069755    18.4040821627907007
-57231  -97.580067906053273     44.3753202272013425
-20892  -77.1071278734176957    39.0035582278480959
-92347  -117.178480395665446    34.95121647034712
-48658  -83.9328027075627574    43.9771215856909876
-41632  -82.955044359223308     37.5642812233009735
-65037  -92.8368096345857765    38.2292711390353617
-12529  -73.542192395531444     42.2066749406085862
-14202  -78.8790589877641963    42.8875668286986027
-15412  -79.8489985810146408    40.094904936170181
-22620  -78.0256822409099158    39.0619374393062984
-72431  -91.0773110026109549    35.6521167650130693
-95130  -121.981945771983291    37.2874599667128734
-31025  -83.7447184135722722    32.3373065473751566
-12595  -74.246642941176475     42.0848144117647038
-43766  -82.2615899581948042    39.5955850132596723
-80535  -105.178410173096196    40.7044802022087069
-38671  -89.9940551564491642    34.9678169194393931
-30038  -84.1505745993654131    33.6729146173337313
-27850  -77.9123707263045162    36.4566422981160869
-96764  -155.244777666666664    19.9808541944444471
-74584  -96.6477779999999882    35.0539018571428542
-19609  -75.9959194648873506    40.3270589364473793
-99919  -132.514367576677301    55.6678721054312788
-70801  -91.1879050761420871    30.4493452335025339
-80654  -104.073389895038062    40.1663115125953709
-61515  -89.5829804999999908    40.7518685000000005
-32970  -80.4561030851063919    27.7489787730496431
-66115  -94.6183231020833233    39.1412200895833067
-75602  -94.6925486213859529    32.4711942608778017
-53961  -89.9161012745097565    43.4782311633987106
-36115  -86.2451400258823355    32.4086546188235118
-03220  -71.4784546259895279    43.4702806859444379
-02090  -71.210420218681989     42.2175651944511756
-53093  -87.9368737822878188    43.6779427564575684
-33013  -80.2708402898298914    25.8601032221261846
-72157  -92.5681271861152197    35.2767796589778371
-83660  -116.938677548087767    43.793651551884146
-87018  -107.521880738095234    36.2166545952380972
-22703  -78.1771292500000072    38.3683805000000078
-30427  -81.9527028665774964    31.9376144463935567
-40219  -85.6759077877008934    38.1402616302330344
-39335  -88.4981290341211775    32.5120793594968944
-45312  -84.0851955867420173    40.0600046396332914
-36922  -88.1699880828843732    32.3031919204309048
-95305  -120.282248679028143    37.8892157787724102
-00680  -67.1244764492685704    18.1920060231566083
-78266  -98.3180370664877756    29.6444432135798372
-95463  -123.522161497017748    39.1620485695825025
-62345  -91.1455182974079037    39.7041223042292089
-44237  -81.4822640000000007    41.2545166666666674
-44064  -81.0425666903073676    41.6093971276595624
-18333  -75.5007334645161734    40.9065517397849732
-14785  -79.4058072890624658    42.1557028984374824
-03885  -70.8962589966331791    43.0159503057238126
-28560  -76.9991081106049364    35.0930832252861009
-06371  -72.3150240879367914    41.3434305930707353
-70817  -90.9974040469717949    30.3857490651814821
-04972  -68.8116531190476195    44.5210555000000028
-11359  -73.7745739134615235    40.7920665480769316
-37190  -86.0457056505667452    35.8236957357118939
-38126  -90.0430862113885837    35.1272774824066971
-85301  -112.179511647034815    33.5317325439183094
-53125  -88.5634254799562513    42.5437610809994098
-22927  -78.2379131999999942    38.2627609999999976
-07997  -74.6663459999999901    40.7333756666666673
-49920  -88.334411552580562     46.1138285735281173
-31565  -81.6409948579183151    31.0840459016602182
-18854  -76.357461378006775     41.7868144994272868
-38371  -88.2968518862673903    35.4309067254874108
-57384  -98.4834038018397848    44.4157256489487438
-29410  -80.0129914724248152    32.9331962403351923
-35064  -86.9181582038531815    33.4761902063171419
-97841  -117.943096949230579    45.4681338046153911
-40245  -85.472310935552315     38.2679794313269781
-66007  -94.9406732408859426    39.1340091987454954
-29828  -81.8274174353392709    33.5239219974391958
-26675  -80.9546400659340577    38.2366170109890362
-46774  -84.9992156015031526    41.0774214761105654
-04048  -70.7794404610904451    43.6865038563944239
-44612  -81.4511800774913297    40.6346298961254107
-97001  -120.757705943396189    44.8701227471698303
-91401  -118.43367659981908     34.1775664128662058
-25699  -82.3169402135922326    37.9620257928802474
-95402  -122.549536666666668    38.4166669999999968
-83677  -115.49379286769225     44.963747523076961
-82929  -109.744699115942055    41.7600750289855114
-30820  -82.7046169066664874    33.238286202333363
-85206  -111.718781539307543    33.398945656399178
-39745  -89.4422858524516187    33.3073038196114055
-68664  -96.7878179760478901    41.7023026646706612
-30154  -85.0733993636363834    34.009678090909091
-47133  -95.8696495000000084    36.0198915
-76389  -98.442010367737538     33.5499619712918573
-59031  -107.398051902439008    45.5166601707316971
-83636  -116.641810026315781    43.8851894210526439
-83848  -116.899850083054332    48.6388898834560734
-71019  -93.2771407030626989    32.0436647938093202
-56313  -93.5512657719297778    45.7850636666666873
-93666  -119.339018374999966    36.5455531052631812
-92129  -117.126424340938399    32.9622412191957892
-31568  -81.8055510747883403    31.0216441815615873
-25952  -80.7271579999999886    38.0312376250000028
-45613  -82.8415837937057944    39.0318358235048066
-38103  -90.0526242498966241    35.1510798853002555
-58339  -99.3474497888198158    48.9456876645962922
-85923  -110.306986499025257    34.3606077914229786
-64835  -94.4383584529462894    37.1485884098504613
-79044  -102.364379471816335    35.8799571043841183
-23220  -77.4584571995162463    37.5498403434820247
-02452  -71.2200734218887419    42.3942086716720254
-83661  -116.858207382256822    44.0722937577318632
-21412  -76.4881157500000057    38.9838642499999963
-30642  -83.1984665845776163    33.513617443576166
-54662  -90.5678975714285741    44.00637714285714
-19529  -75.832120669150612     40.6308974669252692
-72456  -90.3094005789473471    36.4438786166103199
-71072  -93.3104296717879151    32.9487037804838465
-93437  -120.524685856344277    34.7482449256567278
-68423  -96.9476403541535063    40.8108196898813134
-48609  -84.0870830375234419    43.4127384162757153
-47858  -87.2390089439406324    39.2628263326462772
-05158  -72.4685193621673278    43.1000689805133348
-08031  -75.0932113378186301    39.8680951143767999
-63143  -90.3196556926905743    38.6126395589425258
-85747  -110.757655878864441    32.118606232736127
-30908  -82.0419034999999894    33.5084765000000004
-42638  -84.4702603268156622    36.6790869720670258
-48041  -82.7955228843360374    42.926595320539441
-38572  -85.0987942837695783    35.851540096870707
-63376  -90.6231267884471947    38.7776548847237805
-35089  -86.0372018837485228    32.9549678036635783
-94940  -122.89622022550553     38.1762819720062154
-56185  -95.8355913613887509    43.7936920284062126
-47057  -85.1396390000000167    38.8562376
-43978  -80.8889954999999929    40.1816307499999965
-96048  -123.061822777450729    40.7435558895425416
-62223  -90.0527036438335671    38.5514942557581151
-19508  -75.8422995471100023    40.2624630445033134
-33311  -80.1715956472779681    26.1422228578157636
-13220  -76.1305385000000001    43.1231195000000014
-81601  -107.316441220385315    39.5143608899212708
-33141  -80.131086209359637     25.8570432775040793
-40489  -84.6420104273359328    37.3674272440412167
-95361  -120.818239038235134    37.7823507763197455
-49791  -84.5956341222493791    45.4859937139364305
-13084  -76.1023832066759525    42.8913848910654281
-86436  -114.478623509052113    34.7781029249201126
-44212  -81.8332050729717935    41.2472380068938662
-72167  -92.6618022652629065    34.445420101520547
-26630  -80.3188007500000083    39.3472004999999996
-61373  -89.0063000361629122    41.3810450277884883
-40419  -84.4959244097989597    37.4390846314081429
-32744  -81.2304395829147126    28.979858511907377
-37209  -86.8688736301615023    36.1481708671454385
-25829  -81.2655578846153901    37.7305051923076888
-26386  -80.3896581768964609    39.3873112465826125
-05260  -73.2584890426829247    42.8131558926829143
-64645  -93.3543606149312666    40.2961064970530387
-17825  -76.4964978999999943    40.7715132000000011
-79540  -100.046542106976759    33.1588024372093031
-00636  -67.0790551904761827    18.1638155714285787
-31778  -83.7287500391665702    30.9779829360802275
-31089  -82.8205962464708847    32.8824242767391439
-87011  -105.816967028169046    33.9699492394366231
-14723  -79.1402792602739567    42.3062041748589834
-80614  -104.959707999999978    39.9254195000000038
-52045  -90.9330872072813889    42.456989292829995
-10013  -74.0040219726594586    40.7200094026512289
-10280  -74.0331068513513486    40.7668825810810773
-85378  -112.313940494198604    33.6418740010548518
-71220  -91.8975488011054011    32.8229998454475265
-20902  -77.0462650006072494    39.0422988073263326
-28304  -78.9790586955570433    35.0260769456272811
-24830  -81.5406292307692127    37.3320461442307874
-53167  -88.2281945921787809    42.7410358268156401
-39358  -88.4414132472527257    32.8530100242673058
-11709  -73.5498105150666248    40.9005423772599386
-85714  -110.958730117783773    32.1692436622858864
-42252  -86.5065952661871194    37.2490705971223264
-19954  -75.5198156659694035    38.9025138249651263
-33054  -80.2490241595302223    25.9114860655247874
-61074  -90.1226619547448706    42.1124058930139924
-62975  -89.3727655729359753    37.6341959698944279
-78363  -97.8586646252658454    27.4909035298640703
-56446  -95.07290084491963      46.1259473320368798
-07058  -74.3477469496090322    40.8733005291050233
-43449  -83.1405734106065779    41.533126693226464
-83870  -116.856067936407982    47.1395811597087615
-45648  -83.0009280006178614    38.9103827910998703
-42541  -84.8046598103925362    37.366653095080153
-20904  -76.9772243803577396    39.0689614169703461
-73441  -97.4335335595238377    33.8764338630952722
-36785  -86.8436855571308968    32.2925072691493682
-56443  -94.5986638521137877    46.1824520807256107
-72348  -90.4241486492366704    34.9416710182785479
-72540  -91.9089975577557396    35.9417523003300161
-21299  -76.7116900000000044    39.2993194999999957
-13146  -76.7595783968397285    43.1016458090293355
-17237  -77.5560336786653579    39.8375808305530867
-79019  -101.410323068156373    35.0823815938547767
-04566  -69.6528575000000103    43.9711396428571533
-22716  -78.1034993714795007    38.6209837414363832
-94599  -122.361787227053085    38.4056958444444732
-93258  -119.057615793814477    36.0490099845360703
-84657  -111.969480300751869    38.8623644887217949
-55929  -92.1435849174526851    43.9821335247641514
-96050  -122.872485209763369    41.8527449562803966
-28731  -82.4022896843172816    35.2839797078751047
-37031  -86.2906975480661487    36.3717084118316691
-19383  -75.6514611486486643    39.9602923648648698
-53703  -89.3765067235570996    43.0792170424337542
-62086  -89.5782675459459909    38.9852862779279192
-07060  -74.420956974460438     40.6169217212434219
-27709  -78.8307487135922287    35.9541139398058576
-36241  -86.4963986249999977    31.3211341249999968
-14887  -77.0189110204081686    42.4228443061224425
-19971  -75.1077893513004824    38.7148098353706729
-59420  -111.040486317343024    47.9271322872957626
-45167  -83.806529478607402     38.7663889117734612
-50571  -94.5748786906607393    42.6337227799925316
-04489  -68.68855495774649      44.9124760845070412
-79847  -105.145052804635654    31.9187164205298401
-62340  -90.7269520985400391    39.7178507788321795
-19347  -75.4416930344827676    40.7291407241379275
-84633  -111.902097474698849    39.9489928698795183
-36343  -85.1381217396106962    31.0569436370405754
-33841  -81.7586464556202941    27.7469755910479492
-90067  -118.413514950166046    34.0560640863787185
-62375  -90.8713266796116841    40.0021734660194141
-46394  -87.5008755315603821    41.6787141624478537
-99022  -117.68576768518534     47.5959036004822309
-49101  -86.4825451229462629    41.9465276521246722
-32066  -83.1958853684831894    30.0805766736258775
-40110  -85.6526308903225555    37.9341984064515856
-68970  -98.5226080955838484    40.0879860483968926
-22548  -76.6933354044943627    37.8293085168539491
-53040  -88.195129147876429     43.5124791753780684
-92316  -117.395820965680613    34.0635242068882391
-49525  -85.597175551381369     43.0253873201451427
-35310  -87.142477027027013     33.6651650000000018
-60137  -88.0618826272337856    41.8695593632769771
-11514  -73.6122587361531373    40.7509044370594111
-27594  -78.1800388132779887    36.4993614522821659
-17847  -76.819763584480441     41.0102242727813007
-95246  -120.529768274972156    38.2370068205769371
-56316  -95.1390439696283323    45.4989863093112987
-75009  -96.7456615214815656    33.3322748069663817
-82677  -115.490930399999996    44.9649495999999971
-89316  -116.005489628884703    39.5492946023766407
-72735  -93.977593359999986     36.0731419000000031
-83604  -115.894994693563063    42.8172114714414391
-11787  -73.2085149137199807    40.8533481583327287
-51239  -96.1419734968245052    43.1968854561279016
-82152  -105.538229749999999    38.0935665000000014
-17774  -76.5450208012380529    41.245037082088615
-30162  -85.1709457499999871    34.2538334999999989
-47958  -87.1482835492227821    40.1645111295337003
-90603  -117.991685056116935    33.9447968458659588
-45787  -81.6329897692307611    39.4676186923076884
-53950  -90.1638988317055237    43.8788052854996238
-43344  -83.3310715076893871    40.4178137410293346
-05851  -72.0255817284181603    44.5429841118077334
-93924  -121.705472587110364    36.4675902736135811
-02715  -71.1467573350636826    41.8178016040585874
-43730  -82.0993471240584256    39.6302047471265126
-81230  -106.996591911792123    38.557595121395849
-73478  -96.4809079999999994    34.1433655000000016
-74361  -95.3135911985943238    36.3029064380235482
-17860  -76.6271925643489169    40.8337091289505736
-54934  -88.8276574539877402    43.9948655828220652
-38450  -87.7601298473427676    35.175465059780187
-22507  -76.5035763478260691    37.7805874347826034
-06497  -73.1098337499999928    41.2664974999999998
-60945  -87.587317363636302     40.8299247607655644
-28344  -78.6199209318984913    35.1627029343685109
-53925  -89.0464722751883642    43.3161940200948266
-40729  -84.1250463203739969    37.2359345586573696
-17868  -76.6305222831541073    40.9558584193548256
-05155  -72.8490644551562667    43.1585400508279804
-98563  -123.603369372025668    47.0126774898432203
-00764  -66.3883409379845091    18.4475355658914921
-59061  -109.794271225611652    45.4447005954879018
-14304  -78.9604469912423781    43.09201105821505
-65013  -91.7519368731809237    38.2826867532385009
-76252  -97.3793441878606956    33.6703830791598833
-44056  -81.4994824553333501    41.3148934226667279
-54805  -92.0176342603650852    45.4169425704809342
-48862  -84.5439156666666776    43.2476354444444553
-11575  -73.5866837944045074    40.6804664815599821
-29030  -80.6588949873508767    33.577788994867106
-83608  -116.707730800000007    43.7262649999999979
-62067  -89.992525549211507     38.9246522142468621
-15214  -80.0149069531574781    40.4832137215982186
-38840  -84.7330273333333395    31.8807744166666645
-28926  -82.6954709999999977    34.5022996666666657
-56741  -95.0598116249999947    49.345478
-34947  -80.3641050362695495    27.4484453740436543
-49426  -85.8699439819534831    42.8741137644885058
-12564  -73.5954199525654218    41.57437434344358
-80546  -105.597275845238187    40.876075803571446
-07066  -74.3088285902728387    40.6203881568209226
-06418  -73.0809927828700694    41.3239244707590032
-67301  -95.7159801938110917    37.2190297851326761
-68936  -99.7790234222221954    40.3147708555555795
-73025  -97.5326364827684671    35.7286489757901933
-54103  -88.4876964276465401    45.6616071827875061
-63637  -90.506797642982562     37.7296816789474292
-18660  -76.0610301404480111    41.0993745123092609
-48440  -83.4027694531250177    42.9566689062499947
-24843  -81.6937797181818013    37.4755739363636522
-18032  -75.4692900613181052    40.6563362893982898
-62853  -88.9136924964854671    38.5178475303162529
-98057  -122.214697800482469    47.4786143849069617
-05362  -72.6780091974026021    42.9444239415584335
-56125  -95.5531780666666606    44.0528113111111139
-07079  -74.2618102052065723    40.7495750367533418
-45506  -83.8388830685144626    39.906329990532079
-71328  -92.1956997232773006    31.3571337703675077
-39776  -89.0427352915550756    33.7919621416403118
-63351  -91.3157582268877235    38.8528727657459072
-08221  -74.5760436714909787    39.3501735412318396
-07650  -73.9950233238679544    40.8459575149654839
-68410  -95.8746797923172949    40.6556543639774546
-68653  -97.4822217929154533    41.5493468555858101
-53019  -88.3666545616943466    43.6918516537753021
-19701  -75.6958752117967038    39.5986987417285121
-08404  -74.4409016666666616    39.3649673333333396
-15110  -79.8515370421754938    40.3701678499127183
-37047  -86.8365603043328775    35.3204530651645783
-71104  -93.7333503491446294    32.4837931245155005
-71937  -94.3900028448241102    34.402765235676668
-18462  -75.4210937031077577    41.9016082283575386
-60037  -87.8118652700730138    42.2188277080291883
-72762  -94.2087183935399253    36.1883782131229026
-04448  -68.6723174390681379    45.2567167891278075
-02865  -71.4396429355600446    41.9050163612662914
-76843  -98.8541729126983881    30.6976327857142977
-12444  -74.2961579767260645    42.2583507017067532
-94027  -122.200132910335881    37.4572664112491935
-62037  -90.4518369554189974    39.0083435055028147
-02131  -71.1277059153674003    42.2833109678073029
-57232  -97.3793913678008494    45.6255259995637132
-24228  -82.4438415967478875    37.1636619282362588
-41655  -82.7332517361206925    37.5151169636737194
-33129  -80.206599167464077     25.756950059808613
-32305  -84.2808095432874751    30.3464106247442373
-71450  -93.4133205688931838    31.7767761609563699
-39406  -89.3384449603960462    31.3295056138613752
-29369  -82.0230354011589924    34.8777528567096979
-92268  -116.522001870980731    34.1903608697443886
-54119  -88.186907779816579     45.6693405091743188
-91768  -117.77751662388286     34.0688596668263202
-03033  -71.6692361779235085    42.7400848986883162
-97736  -118.98489832000007     42.7275486755555249
-59923  -115.47896496773977     48.3594741801418238
-16335  -80.1533716014900364    41.6309457800088296
-36569  -88.0679750535291106    31.5343642747512973
-64468  -94.8771843754700512    40.3441534134272999
-70737  -90.9271785105469519    30.2422496233373721
-72404  -90.725166685776685     35.7906943403136921
-47441  -87.1706391551450253    39.0409353816503213
-59077  -107.577445861623701    47.2132116494464853
-26133  -81.6772014019347949    39.1224697540647171
-71291  -92.1824034684403415    32.5328062509404319
-32534  -87.2804725992198769    30.5323797768112293
-43948  -80.7810088609022898    40.2669645620300258
-15028  -79.8027636755952585    40.2985954702381051
-90077  -118.451555939268331    34.0999007150909819
-52159  -91.3656857567407457    43.0697368690256326
-21078  -76.1284941404805267    39.5573554866912716
-72902  -94.4196196000000043    35.3885585999999961
-03230  -71.8701823052688127    43.5195378259097723
-16055  -79.7485138883595823    40.7165117092472144
-54413  -90.1333293626465633    44.2837898232830582
-95330  -121.293433693646392    37.8173212274382209
-60435  -88.125752335868043     41.5445046259177531
-13840  -76.4002048999999772    42.0354140250000015
-92868  -117.875122914103358    33.7880729898249896
-95614  -120.977199436532999    38.8939224703712085
-07605  -73.9858807206875753    40.8628626347451842
-82219  -104.437446705882351    42.4859231764705925
-71630  -91.2059928688811397    33.6117986206293722
-24290  -82.5636834049209654    36.6156400309840819
-00961  -66.1674679829457091    18.4103372434108721
-72370  -90.030316063197489     35.6925814964368087
-04974  -68.9392363306315872    44.4917529537115541
-03844  -70.887841087471827     42.9273708098194575
-19037  -75.4432935714285833    39.922147428571428
-35478  -87.427119999999988     33.2305695263157972
-03667  -71.2624140000000068    43.8252608000000023
-19702  -75.7166470486573218    39.6288736537047228
-38676  -90.3428459438357834    34.6857015436240843
-84061  -111.391829559840232    40.754293837189465
-31906  -84.9511621961945735    32.4690006870261385
-34623  -86.0755382142857286    39.6742356428571412
-75944  -94.4126691571364347    31.3524772138540797
-89508  -119.947012746867614    39.7367485629949329
-25621  -81.895656643971634     37.6292786836879927
-62443  -88.6107069516643264    38.9537818814410031
-16693  -78.218718409584298     40.452049869828798
-37013  -86.6442399148028954    36.0497880883052986
-35974  -86.0117783870079933    34.363752212598456
-53094  -88.7235635205724549    43.186808108924609
-24873  -81.8682815617433448    37.3544723801452605
-65532  -91.6902103000000182    37.779104199999999
-38010  -89.5630762500000088    35.3780551666666625
-16223  -79.3594216810810735    40.9716331459459511
-32033  -81.429389731483127     29.7974208008597898
-87728  -104.565452456730867    36.5574562427884686
-05737  -72.9371545392600353    43.7104620640793726
-45630  -83.1019961428571463    38.7028942285714166
-95300  -120.625593749999993    37.3528290833333259
-27732  -79.0953499999999963    35.4109967500000025
-98422  -122.398327122795436    47.2941270277137846
-00738  -65.6604496456694164    18.3253779825646816
-29563  -79.1970074564303133    34.347344295734473
-16879  -78.1448671658291687    40.9666485879396944
-72719  -94.2891856370837473    36.3663265594294742
-68926  -99.8389574111373861    40.1250198815165859
-87310  -108.698990750000078    35.7355163124999962
-13043  -75.7368219999999894    43.0424335000000013
-97143  -123.947390609195423    45.439903413793111
-07843  -74.6605121191331449    40.9403446767502928
-84318  -111.814538785133578    41.8003200859466091
-25474  -87.6552680000000066    32.9778514999999999
-31807  -84.7907703696099446    32.6352580694045002
-05762  -72.8218328534201902    43.7710355237061108
-94556  -122.124904393856426    37.8410138792311699
-48832  -84.7701167334234356    43.4063243315290848
-48219  -83.2520941120084359    42.4250607661515673
-28070  -80.2722839999999991    35.5605836666666661
-00907  -66.0765771153055113    18.4491497220315495
-68442  -95.7749660844747979    40.2369636347031872
-19511  -75.7307059482758689    40.4704274568965658
-39811  -86.2305284999999913    36.0038669999999996
-13655  -74.6621100180135358    44.9797874915079845
-32221  -81.8154495285750301    30.2900039434426311
-99928  -131.759225945054965    55.4178729890109807
-52405  -91.7166087657264484    41.9818435468048037
-49305  -85.1646879366059579    43.7426963244473157
-80123  -105.072287893384612    39.6147270125999782
-56545  -96.2630346571156394    47.4066773352435362
-68042  -96.4331366103896386    41.0948998181818226
-12978  -73.7968407030812159    44.6156745434173345
-50441  -93.2191386266238311    42.7416030646944591
-71101  -93.7491907373567983    32.5057113720782596
-76020  -97.5594768708807578    32.8963475163027965
-95662  -121.225717855732853    38.6835404669985081
-70401  -90.4720747325214916    30.5219815755696224
-21120  -76.6806379687128441    39.6440801910867933
-01515  -72.0467425185184851    42.2121206775067037
-63655  -90.2120824770345138    37.3934353861253612
-44068  -80.685736230769237     41.9050724615384524
-34286  -82.1789187092277444    27.0741335658396203
-57646  -100.062923626131962    45.6810938984476067
-76465  -98.1983642777777561    32.4021073888888935
-83545  -116.424392114191718    46.4528193805708867
-27278  -79.0871542161435173    36.0758870314782101
-71110  -93.6580961976864188    32.5070988580441664
-59916  -113.600038456594376    48.3069500083472008
-71950  -93.7268491860540109    34.2492835526991755
-67144  -97.0139216824583457    37.7988855941101818
-90701  -118.078798131794926    33.8674724625640664
-32244  -81.7623978033645642    30.2161296280904352
-62573  -89.063159946601786     39.935347060679625
-76482  -98.7987407142857279    32.9645107857142889
-71763  -92.8056076876025742    33.9034583550633002
-38786  -87.5076365000000038    32.4494490000000013
-45241  -84.3912693141855783    39.2805563816055852
-26036  -80.5389213210831514    39.9969837891683042
-51055  -96.2462724953774114    42.2160611248074105
-07514  -74.1452652220421982    40.9245351564019444
-30135  -84.7277720903161082    33.6870394228586747
-29685  -82.8513729326572275    34.9469385139675168
-44026  -81.3393735172411567    41.5331456039869948
-94572  -122.257843929045606    38.0284124418072338
-40104  -86.3316685247951483    38.0717669064133304
-12246  -73.7501553076923244    42.6456609230769246
-73139  -97.5259666307046729    35.3859826454076867
-33446  -80.1710096648704535    26.4519807123813173
-54559  -90.4513783520822585    46.4913652395890296
-54950  -88.8931391408047205    44.6718468089080503
-17872  -76.5972844548296905    40.7851713037654733
-64682  -93.4774521917990029    39.54464620502646
-76687  -96.451329575735798     31.3673876360373498
-49965  -88.8634955947156158    46.9608355615763742
-55289  -94.4607985000000099    45.2533750000000055
-92587  -117.25240882917852     33.6903051540969329
-45840  -83.6384126933313041    41.0422571087973651
-22601  -78.1744782410939223    39.1748362556342684
-71341  -92.1457077623305452    31.0627206382113386
-62849  -88.7722721408820519    38.5896317107307638
-24000  -80.4653983333333258    36.7120931666666692
-61232  -90.7239042081218656    41.4370622005076257
-63026  -90.4668397025078264    38.50100584527857
-07207  -74.2169106666666636    40.6625200000000007
-70511  -92.1798201777777848    29.91465888888888
-97899  -118.208846199999996    45.7904814999999985
-39341  -88.5570153166820404    33.1115268863636913
-26205  -80.6490323764147945    38.3242727532413525
-07837  -74.6365610714285737    40.9726694464285615
-78140  -97.7661632551565702    29.3192454748552507
-83235  -114.027809702857112    44.6698234457143002
-17310  -77.3573734999999942    39.8840382500000032
-93521  -119.765107999999998    35.4418885000000046
-69214  -100.059189646723652    42.5736823304843384
-94613  -122.186200470588233    37.7815961764705861
-30534  -84.1073338507572288    34.4146434912331856
-57426  -98.4959133484848621    45.7313230075757744
-56209  -94.8043454313869915    45.132344048418318
-65570  -92.1144208898304981    37.4559385517891457
-27571  -78.465321116266793     35.9214995934615473
-28179  -80.6878059999999948    34.9918069999999943
-73949  -101.78542214570561     36.5003552423313025
-72730  -94.2590087412193327    36.0320607097646786
-48240  -83.3021487441199184    42.4246826523094995
-62356  -91.0783360087242784    39.6180842137404454
-57273  -97.2914486688788287    45.3596751247511705
-28088  -80.6117515009579222    35.5446388738824552
-15611  -79.6535819006771533    40.3064678306997877
-52076  -91.5029510743003414    42.7095738421354554
-08212  -74.9650618062826624    38.9369962931937366
-84108  -111.805685932178136    40.749514224088486
-64137  -94.5412660190229985    38.9302238060760359
-26059  -80.5978318599690482    40.074837212134554
-43045  -83.4476236457970941    40.1730592927536208
-25245  -81.7382158921821116    38.6936232057561398
-60430  -87.6654762084559138    41.5559612560050411
-65753  -93.0762931095409982    37.0020010138609408
-74950  -100.876245823529402    36.9613101764705902
-22743  -78.337320943375957     38.5091389903846277
-04479  -69.3117170492766377    45.1321722953134596
-72639  -92.5032796608956431    36.0090858170869126
-15422  -79.786831101694915     39.9838376101694948
-08097  -75.1537308990347555    39.8146113192278861
-44401  -80.9495851707443705    41.0333669429153431
-62292  -89.6841360449437417    38.2126221488763989
-06793  -73.2922208247293838    41.6311060110620019
-67021  -98.8878271034483163    37.7671647241379347
-77519  -94.6048161606216524    30.2232878593065237
-17053  -76.9925359603910096    40.3296634200234578
-00719  -66.2567459556737361    18.2834406134751575
-23294  -77.5440436521887619    37.6317828255833149
-85341  -112.776475578947341    32.0819145263157921
-62551  -89.15796072463759      39.8465383904518902
-55304  -93.2797680309312511    45.2522270742422776
-68821  -99.8338583622047935    41.9761755065616882
-77350  -94.8305057236842543    30.7983830921052331
-05777  -73.0450537642766022    43.5652844576460083
-62014  -89.9631139560564321    39.0373053492712856
-04609  -68.2807441924831409    44.3968667180233965
-36022  -86.4005615290356985    32.608695205236053
-73162  -97.6394286695169598    35.5814142064499279
-53074  -87.8805365068117936    43.4014779114477633
-35035  -86.945815891964088     33.031059938979574
-95460  -123.781036027007161    39.316262297810276
-43912  -80.7835145811066013    40.0829265200423421
-75643  -94.380238073229151     32.011911632116437
-26845  -78.9632822695652976    39.1778286038646684
-17223  -77.9629418807587768    40.0659246436314262
-76538  -97.8942171005395352    31.6186489400738147
-25811  -81.3126804778761567    37.5889927831858088
-71351  -92.0750815848237067    31.1507914918088389
-65756  -93.9663779084315252    37.1024291223934952
-74129  -95.8665521012734416    36.1260837823511451
-68436  -97.73914347087387      40.4192885177993375
-10023  -73.9824441886447062    40.7758656025641102
-45701  -82.0901070323702697    39.3122602515731856
-84763  -113.04154283880591     37.1607117641790836
-76995  -100.387295333333341    31.4438518333333299
-11369  -73.871008125000003     40.7654242500000024
-48504  -83.7321773885784495    43.0439761767838149
-65747  -93.5793169142259416    36.5878478374153886
-05150  -72.5275713089700531    43.3347806821704964
-53002  -88.3553899664802458    43.4402492054146734
-36319  -85.1534475313979584    31.3328995406792608
-85544  -111.479382374042885    34.3965411777899064
-49266  -84.5486103580157504    41.8531755279525797
-15539  -78.583865550913842     40.1284210522193234
-35446  -87.7464421809644364    33.2096442350883905
-78543  -97.9961250805482535    26.299910036712312
-45845  -84.3786912824690347    40.332358461637341
-14751  -79.0114260243902464    42.3006812195121924
-04766  -68.2219147445393617    46.8847329078822028
-12886  -73.9199381900268691    43.6453586805929845
-28526  -77.3997710234375518    35.2540748991072732
-32563  -87.044718772046437     30.3914680390376617
-65236  -93.1089879012119894    39.440533878787825
-60172  -88.0869494575404133    41.981343518324536
-03466  -72.5125486057142581    42.8988145114286539
-78239  -98.3625120254768319    29.5186368014338321
-56010  -94.1848268115841307    43.8865946057221663
-13407  -74.9567043848459065    42.9754300756036116
-18509  -75.6476600764751623    41.4283114101319256
-30084  -84.216308991029635     33.8561744503342581
-02072  -71.1050131770776233    42.1234018550960556
-28714  -82.2967118803531861    35.8998271277534968
-05757  -73.1170801878320873    43.4796681955366395
-28133  -80.2730842355212957    34.9902501235521299
-22627  -78.0872528366296734    38.7660661068037982
-16146  -80.4986447245390906    41.2328168055318969
-17723  -77.4507778813559185    41.4104018888888774
-30668  -82.7075153680024755    33.8970927189900877
-54659  -91.1177364857143175    44.3237399404762087
-75963  -94.5771371551723945    31.5477095689655229
-50021  -93.5870886741064254    41.7344924327715745
-90715  -118.079283427811689    33.8408715100205342
-59756  -112.791042911949702    46.1851813144654315
-79699  -99.7099096842105155    32.4672613157894716
-71658  -91.565510324558133     33.3084030707033065
-58266  -97.8554846215192384    47.9831764703974031
-29842  -81.8656810362216163    33.4526239123474269
-38253  -89.033926142459805     36.3181001449638785
-54495  -89.8845946510678857    44.3961237715847048
-61104  -89.0759467947470114    42.2548015033850035
-57071  -96.8923148286807105    44.2773499937194686
-56577  -95.8034887704918106    46.9759856721311451
-11796  -73.1002248855071741    40.734377166666647
-57239  -97.2933569985776074    45.4944381991465079
-29688  -82.3608805333333436    35.0507070666666607
-90742  -118.071684816578525    33.718328527336844
-38865  -88.5770274692282698    34.7760883117775563
-31313  -81.6253378631170676    31.8264795614515457
-84356  -114.263560666666663    33.6133370000000014
-43007  -83.4142702307692332    40.3405979615384567
-26968  -75.4666337499999997    35.598386000000005
-51525  -95.4133906069687754    41.2315623474658963
-05081  -72.0878374835762088    44.1439306278205947
-65309  -92.6972956923077049    38.2391236153846137
-58250  -98.0282232061302921    48.2757245652417666
-26801  -78.7920185615787716    39.0532942881573604
-42455  -87.5477878715694544    37.5899257290302629
-60960  -87.8884220594143102    40.4383806797769338
-10308  -74.1501124906628348    40.5512214311010908
-27010  -80.3387889444444454    36.1828532222222137
-98846  -119.957448043557818    48.0637041377421852
-70443  -90.525915751999392     30.6292795537986251
-17982  -76.0382402600422012    40.7712197188160417
-27613  -78.7117847223318847    35.9130835662876535
-23860  -77.2777393915813491    37.2841480579229199
-30563  -83.4678829522334382    34.5667137968713618
-55732  -92.2388365735211124    47.6684889765880868
-93272  -119.307341518353041    36.0517796150654064
-32427  -85.7891652620212568    30.7312064828850886
-56028  -93.7030158337819046    44.2200650090848129
-44875  -82.6522772624806663    40.8851975467711313
-98012  -122.202818735294684    47.8418649798415601
-33411  -80.2087872399842752    26.7082745597542441
-39253  -89.5164442500000064    32.0161510000000007
-54151  -88.0730682925168793    45.767928506046907
-71090  -92.944407499999997     34.6604675000000029
-40361  -84.2315097745724159    38.2124419887806326
-62935  -88.6331226713738687    37.8401185672570151
-04893  -69.078875333333329     44.2205813333333353
-44449  -81.0299236151122102    40.9891215436836234
-49637  -85.7085570286898388    44.6368646375518381
-40946  -83.831086265917591     36.9708745730337185
-93254  -119.736880644351345    34.9442714058577479
-68366  -96.4209192380953368    40.9654020792282054
-78589  -98.1508810632274162    26.1977190417268808
-35592  -88.0972061472124324    33.751743369868457
-61311  -88.8650357293366397    41.043428811408539
-43032  -82.9582905714285772    40.3289979285714253
-19560  -75.8990813262723236    40.4001193067932078
-92244  -115.521943749999991    33.1212657500000063
-92055  -117.454518701846922    33.3256291899736681
-99550  -152.879857548936172    57.8641131617020932
-50629  -92.0625877352862716    42.6404204601098726
-40807  -82.9757931861861664    36.9677523033033069
-11968  -72.4086744434074632    40.9097203009515269
-92236  -116.183438577628081    33.6780520519843094
-61417  -90.5480389254079228    40.7784096270396361
-90810  -118.217315001683858    33.8162417543900418
-74644  -97.1087974718310107    36.5532221302816751
-72364  -90.1954478740523058    35.2154526213987324
-18797  -75.9152964000000168    41.1402104000000008
-29365  -82.1614855017533898    34.9771622775182109
-49950  -88.1437050549175467    47.3999729966376222
-07077  -74.2586373229508467    40.5551787688524641
-58318  -100.381526711145284    48.8901469793207895
-84337  -112.188126688117507    41.6979193528505547
-76474  -98.7789488328249519    31.9714778517389639
-79120  -101.906160538461549    35.1793476153846143
-15750  -79.1858724838709662    40.4828086290322418
-14550  -78.0874605431269231    42.67500643531001
-99160  -118.207764360128579    48.8650514790996766
-26169  -81.56194344915518      39.0731614107320482
-47986  -87.2077858428571204    40.5136842142857105
-19541  -76.0240449579663107    40.4748481893061935
-68993  -99.7768355000000042    40.2754819999999967
-97423  -124.181541295560308    43.1771176272768713
-66503  -96.650486874593355     39.2301905106327808
-13211  -76.1325374098360612    43.0985287370744672
-18325  -75.2333408734456555    41.212364841252068
-77974  -97.293219783547201     28.8980386394398394
-36925  -88.243796375962944     32.4694525975837607
-57641  -101.361545006901963    45.8814032960123512
-47549  -86.9214599999999962    38.4007222000000041
-82930  -110.922712196066286    41.1895920102148452
-67221  -97.2884154363635929    37.6188991999999942
-42047  -88.3888793238434118    37.293808073716356
-56435  -94.4514175065116319    46.8218596650257908
-51246  -96.1679096694297755    43.4328975400259338
-98645  -122.777145384116679    46.3143357612101028
-53520  -89.3529346852739081    42.6098831390411092
-30680  -83.7039024718784361    33.9971488960165686
-01220  -73.1185571270211483    42.6156285623429341
-07005  -74.419629627073661     40.9194031559043196
-13820  -75.0375305181216419    42.4641497636506102
-54682  -90.7576839999999976    43.4517719999999983
-49793  -85.0330917936345543    46.2051048285420336
-25134  -81.4683816574585791    38.1739076298342752
-58402  -98.6882939999999991    46.8828146764705878
-48356  -83.5887517085924117    42.6674868015807007
-18055  -75.3110619766480909    40.5822614397765804
-29541  -79.7663545443376734    34.0838402350663898
-01585  -72.1635932854603084    42.2399072101586128
-36576  -87.7630670560331083    30.534250863737693
-32447  -85.2299245454545513    30.7510410909090872
-82834  -106.719663114398529    44.3141090536471722
-02190  -70.9483308182832388    42.1705341457238916
-56169  -95.9924543574465901    44.330424071276596
-42051  -88.6398690229283801    36.8527794348445212
-00953  -66.2296627089792338    18.3769007294530766
-50657  -92.6740363728813321    42.3433126610169381
-55318  -93.6168467448177353    44.8130163176289926
-98104  -122.327089470916292    47.6031689603960402
-75938  -94.3655427490277958    30.9152954178403583
-83210  -112.830830020102923    42.9746954639743919
-95726  -120.58200138736116     38.7457975709983202
-16701  -78.6660379473566849    41.9465246284923197
-52726  -90.7653639199414073    41.4943023622163167
-23310  -75.9687690359931622    37.2657263011636459
-82727  -105.232579557559959    44.311134103737146
-31648  -83.0014599332591274    30.7096804749721741
-93940  -121.865931288737926    36.5831882036102911
-38542  -85.1964312005347466    36.3228468315507982
-12930  -74.5564441370280946    44.7209238099878092
-07063  -74.4464453444511776    40.6051575263796281
-97827  -117.868241840449869    45.5932900269741097
-19504  -75.5925284765218493    40.4048235902609036
-03109  -71.4087802467638255    42.9682694942007473
-19525  -75.5920271658831098    40.303385110224319
-83013  -110.405506136255923    43.8488828945498028
-33125  -80.236393536047288     25.7830103031612659
-44214  -81.997713549865253     40.9497432798742409
-98022  -121.941838327802657    47.2075708976130173
-00760  -65.8970896315789503    18.3873103508771862
-44203  -81.6198504115009342    41.0189078765777282
-58711  -101.28903803800074     48.9259783147460254
-47346  -85.1624408967728215    39.9342395566245472
-62361  -90.6382134735395226    39.4743042082474176
-86036  -111.662080931677025    36.820163739130443
-67864  -100.307107883660294    37.213241689009223
-97201  -122.692502075081165    45.5060838405100085
-96770  -157.240352391806596    21.1621064411764621
-15550  -78.6394189658708314    39.9939731275436827
-15330  -80.0939227070012123    40.1865966187195269
-25142  -81.7346351820448547    38.15693354114714
-41822  -82.9775645898818652    37.3305071987672434
-76631  -96.9721072865275318    31.9802355218216299
-31833  -85.1079092807729722    32.8593886397508825
-38846  -88.4019813489931181    34.8562927158836615
-00968  -66.0991864210526501    18.4053808771929788
-26621  -80.5889702210041037    38.7233742169648067
-68333  -96.9610414868277104    40.6220179255367029
-45408  -84.214590992831603     39.7436336845878273
-53594  -89.0001608821850709    43.1914710937627149
-10456  -73.9086434811530069    40.8300421655580266
-13747  -74.9900489999999991    42.4864747142857269
-08070  -75.5133582758085851    39.6446593288785891
-83203  -112.374313343750032    43.0641983854166384
-49228  -83.8750154428682748    41.8214300593242356
-88044  -106.709559751435805    32.1261495290603776
-51461  -95.4748391123250286    42.1639053955420806
-39108  -89.2841636713012861    33.1288777095372424
-23828  -77.2770806073394709    36.5903197807339993
-36044  -86.2701146666666858    31.7127537222222209
-20670  -76.4346402479998943    38.2770292500000338
-31832  -84.6144139625935594    31.9634825486284129
-50859  -94.5981397504835826    41.0673423389748393
-87106  -106.618180410464191    35.0774035615327051
-46144  -85.6488457318840659    39.6608564202898677
-72440  -91.2481617643504848    35.9983045951661538
-18927  -75.2468544999999835    40.32120946666668
-36256  -85.7183554379289063    33.045738520931053
-20853  -77.0932837887072395    39.0948044970753372
-15841  -78.5184097022058438    41.264252930147066
-93449  -120.650931831315333    35.1513584212988235
-71384  -92.6537456666666657    31.9509196666666639
-50076  -94.8631965786911309    41.588309664004754
-41640  -82.9057214156570552    37.4850257586207078
-24255  -82.0991868300971106    36.930371621359221
-23887  -77.8330351241203147    36.5703121058861313
-30631  -82.8768106040546115    33.5744039342941392
-11703  -73.324064924811907     40.7336467064983978
-84701  -112.05115592878343     38.7510634276120172
-93560  -118.240113005080943    34.8609546093999043
-24013  -79.9244206608186687    37.2673083351940448
-21031  -76.659150022321441     39.4868272098214206
-67648  -98.554070871415334     39.0668098445883274
-70116  -90.0651034842106952    29.9680727183158453
-86341  -112.308933866666663    34.6240827333333385
-71949  -93.1510684026496563    34.6984936299904376
-84725  -113.711533748258077    37.5766940548779971
-71316  -91.8256505481927832    31.2883843253011875
-59325  -104.552903124999986    45.8879349999999988
-11791  -73.5013150996828415    40.8199256496640217
-43926  -80.6247379199999727    40.5108947100000094
-38382  -88.9617688693895303    35.9725311952113813
-99136  -117.936825416000005    46.6854554879999881
-16218  -79.5966986897759341    40.9236589404762867
-64767  -94.1978979464981734    37.7476861361867506
-97136  -123.939287150816895    45.6148438473077036
-57473  -99.4960435798319054    45.0149604117647328
-30477  -82.4037124531057685    32.8693023536337989
-76167  -96.8720209999999895    32.2960199999999986
-21051  -76.4501549411765069    39.4710611838234868
-18426  -75.2699795762267598    41.3439989957164187
-78610  -97.8391293564126556    30.0798612554798552
-64092  -94.7915487064220486    39.2229867431192645
-75790  -95.6294389353535053    32.5340349195959888
-39356  -89.0110257318370373    32.1464907527577424
-45166  -83.6769777261904295    39.4808510000000084
-56064  -93.4517086666666614    43.724647333333337
-30180  -84.9205157860498332    33.7273591264652808
-92395  -117.296596568095623    34.5004373612995536
-04617  -68.7373006715867092    44.3673267285187123
-34222  -82.5005956404583429    27.540268388309439
-42141  -85.9142244669217092    36.9564416711834127
-28207  -80.8262769844418045    35.1954895036386546
-32082  -81.384708230860312     30.1927266567518515
-56762  -96.7536878786914798    48.2243877846935689
-55741  -92.3904350800000032    47.4633426772414566
-89802  -115.745845205128205    40.9007329230769159
-85628  -110.942077181818163    31.4980769545454571
-60462  -87.8353993699345921    41.6230192629498106
-19052  -75.4456540833333094    39.8945637500000103
-36457  -87.4294152631578925    31.3793771315789449
-24720  -81.0709190000000035    37.4376949999999979
-75728  -94.1223948000000092    31.2640280000000033
-65671  -92.4017938750000098    37.0991302500000018
-10546  -73.7962845339266664    41.1980363837597139
-72061  -92.3269522935780174    35.3233913715596657
-53898  -81.5285622500000073    27.8942724999999996
-28155  -80.7832379999999972    35.6700633333333386
-35209  -86.8058916319965164    33.4689970199976941
-24724  -81.3096873008848888    37.3310599070796414
-71910  -93.0700865652173803    34.6722938586956815
-90267  -118.191268500000007    33.9114665000000031
-92648  -118.00383438795761     33.6770194369741844
-27976  -76.3108113211309416    36.458148071402654
-99005  -117.367460660713746    47.8359360143079826
-06510  -72.9254181213115089    41.3069139081967407
-68434  -97.10812543919495      40.915058523477164
-80817  -104.689551099643168    38.654635419830754
-49852  -87.8161676666666722    45.7778419999999926
-57003  -96.7569108401616376    43.7461490095208987
-85223  -111.669967495391845    32.7419226705069022
-08009  -74.934318424034899     39.7718463242520883
-45814  -83.6192160837367027    40.8999080948693887
-80461  -106.312540647048451    39.2303770751933243
-37150  -85.8259547902458166    36.5431428384972534
-43934  -80.7828569041096216    40.0828254999999842
-46797  -84.8617144760917199    41.1330258185741826
-51245  -95.594655390161634     43.0675617759434601
-28025  -80.5487235905246024    35.3851680694139006
-79938  -106.181693325920335    31.8182843256841927
-95936  -120.827666138471187    39.5661946466166015
-12952  -73.9317775604681913    44.7214193446033832
-12084  -73.9010435787915725    42.6996754123223141
-98929  -121.301524136363653    46.8720126818181839
-85137  -110.974001893907641    33.0887473718487897
-59432  -112.486272593038919    48.1874389317269589
-14755  -78.8064122898690442    42.2547049578284017
-29650  -82.2621743949105309    34.8944962488796193
-30673  -82.7340836704768066    33.731638310189588
-79968  -106.504794916666654    31.770239583333332
-38730  -90.767538517184903     33.6968830973813382
-67565  -99.0303889398496722    38.5643471428571445
-30008  -84.589443386104179     33.895636811320955
-70757  -91.5208296309649967    30.4764147359491098
-00666  -65.9161624864864848    18.2266911081081133
-81424  -108.533163807157081    38.2732337220013505
-75571  -94.766188145708        33.1773065422870062
-38251  -88.3507484775527416    36.4426226127822801
-15716  -79.1914066830601229    40.4712025300546472
-39169  -90.2693718035200874    33.1508412076148744
-06382  -72.1141723098415781    41.4606542856159379
-39622  -90.1413620000000009    34.1736729999999937
-59929  -114.350667047088038    47.9180782825278655
-27821  -76.8722235072992248    35.3267511843065947
-62886  -88.5393006601562149    38.3773052382812594
-98855  -119.262327147950828    48.674323239828901
-48450  -82.5299100932296312    43.2417748390649521
-78038  -99.1110793571428559    30.0577956428571405
-19007  -74.8642935190707135    40.1106852582593163
-56111  -94.8789981129809945    43.6309992055288305
-37861  -83.5096425379608291    36.2429925858758821
-12475  -74.013130708737819     42.0155836427184752
-77988  -96.8769584776119643    28.8360082260127832
-19127  -75.2234262354167669    40.0270294479165969
-55397  -93.929000442502641     44.803360390423002
-10603  -73.777424297048583     41.0538351158950263
-91702  -117.90394155814235     34.1342720555370605
-63332  -90.8850015449549744    38.6019407234432492
-13135  -76.3159689809082096    43.2462277720565993
-65285  -92.0160184581416729    39.1940198396197772
-63357  -91.0481557920792       38.6574655586828442
-30104  -85.0717813857513363    34.0860119744562624
-83645  -116.62961084816915     44.4155461105139224
-38943  -89.8598876703363345    33.5404559516819774
-28485  -80.149486500000009     33.0098561666666654
-29372  -81.734121199526399     34.9049907685234615
-68381  -96.4889446835749567    40.075731342995077
-77345  -95.1627192713722536    30.059441033088671
-76853  -98.3761216907740277    31.2451878696429262
-37998  -83.7502028275861647    35.9354216436781613
-44688  -81.2620335111857912    40.6844872431767328
-26815  -79.3598899361942216    38.5104386205532876
-24471  -78.8014370930333428    38.3113293414106622
-99516  -149.784946274185472    61.0992236415492016
-24966  -80.357496937620752     38.0072791694728025
-47601  -87.2590647145992477    38.0405481745475953
-93907  -121.662332160959011    36.777847117508621
-70589  -92.0594066903765622    30.6726547375427963
-38048  -89.504715085714281     35.1496192285714173
-48438  -83.4869388706134572    42.9089754922184667
-46044  -85.7824271364196704    40.2163284170421846
-73768  -98.2615330814606409    36.3763704775281198
-39807  -83.7652104999999949    36.3021065000000007
-28584  -77.1114580603708077    34.7084133461944901
-95506  -124.19616918518517     40.7400541111111139
-95977  -121.277474005832659    39.1963055124601425
-56226  -95.6644831065293033    45.4149600412371228
-61752  -88.7592442401137873    40.3414568254795469
-47870  -87.4757010000000008    39.3711861999999968
-45886  -84.5986279671253953    40.9872792339449745
-76462  -98.0147342121207288    32.5423289023982392
-21043  -76.7991341728491221    39.2538545759423698
-46013  -85.6796817234782253    40.0606653329191005
-20608  -76.7072680447672468    38.576907500581342
-74011  -95.8109388926937555    35.9934349222459957
-62481  -88.024579013736286     39.1278953983516118
-07020  -73.9766930461672416    40.8270138144600097
-65440  -91.2031168269580803    37.6055709981785355
-42733  -85.1790824045110355    37.3370262985557702
-73440  -96.9048723132968775    33.9851348816029244
-48871  -84.6835798012199348    43.1510892906350563
-12546  -73.5316266916988042    41.9532277432358001
-45148  -83.8884344931071695    39.287200931071105
-36558  -88.3407709393263048    31.6164859020099449
-65023  -92.4012141116526919    38.6404926489122857
-87527  -105.857355295932678    36.1849171697055141
-11731  -73.3159347348715471    40.8650628226731243
-55976  -92.4923443115767583    43.864799572898221
-56085  -94.7285746219511395    44.2986363371180474
-23874  -77.0999580098560671    36.6073350030325884
-93825  -118.467740000000006    35.71787475
-14510  -77.8716452434659203    42.6967169318223796
-25922  -81.1130945738894127    37.459999715321878
-32680  -83.0110589880578118    29.6404761520663449
-51045  -96.0590172432432752    42.8203218108108103
-04441  -69.5565662268584362    45.4992269689688769
-86571  -105.587332250000003    36.4037522499999966
-14480  -77.7106032693111075    42.825293486430013
-64847  -94.4489183261944021    36.6045828418451151
-76867  -99.9210125000000033    31.509247000000002
-39217  -90.2094980000000106    32.297655000000006
-37870  -83.8321889070438289    36.4645759027287539
-52142  -91.78683194152525      42.8306272301102666
-61485  -90.097305524836969     41.018290400903183
-62843  -88.2084364901960782    38.3725391568627572
-77489  -95.516688472786214     29.5988877521654707
-54771  -90.8015148192389603    44.9592782632135126
-71921  -93.4245820490310592    34.2561319811873304
-13651  -76.1903752851239773    43.8665743305785227
-07001  -74.2787021182907665    40.5799100000000408
-05353  -72.6620126572240252    43.0609822465704966
-00623  -67.154055589398979     18.078307949234766
-62379  -91.4065514324375386    40.3260426944921591
-77106  -93.2780376000000047    32.186436999999998
-68438  -96.7631366836734657    40.6413026428571342
-08225  -74.5567120909380634    39.3717848264199546
-13071  -76.5438326853116138    42.6675799483347902
-11550  -73.6184938949576093    40.7029599599088812
-32183  -81.8906873333333181    29.0585585873015866
-39074  -89.4726083916107484    32.4347338450728415
-33570  -82.4332020863272135    27.7086629073085753
-59068  -109.295826161672707    45.2041787535504653
-45428  -84.2556094285714323    39.7454248571428579
-09355  -118.319053600000004    34.614134
-35017  -86.8426234666666659    33.7523205999999973
-25426  -82.0075070000000039    38.4413945000000012
-48859  -84.7761208571428426    43.5872674285714226
-89521  -119.719906712510408    39.4057035368540127
-11548  -73.6242856012396913    40.813026464876053
-86413  -114.244357101094252    35.1765039391446237
-62899  -88.6462306417220276    38.6678003585669572
-38347  -88.4989532913579922    35.4739683530864198
-11931  -72.6183428446601766    40.9471915922330041
-80214  -105.070913983484417    39.7423723350535667
-39159  -90.9308875991921184    32.8474997064631893
-33594  -82.2445508850562987    27.9354383136583664
-19120  -75.1204992895462027    40.0344858126717256
-14379  -78.1148824444444472    42.2147693333333365
-44575  -81.4005171999999959    39.3919110000000074
-44104  -81.6280875149168139    41.4827842343686157
-72471  -91.1188739790978701    35.8230566567656581
-46221  -86.2427914660006394    39.6967536254003122
-71846  -94.13327750208731      33.949533339266118
-60008  -88.0246322313395808    42.0764023070236348
-59052  -110.167679779703221    45.5069538579206707
-83855  -116.914263359967251    46.9448733242432965
-49403  -85.8507399734287588    43.1345625212059929
-57632  -100.073266988342397    45.8286248418944169
-70462  -90.5772728472828419    30.3856405484825949
-05829  -72.0954716071069441    44.9489169059156097
-74558  -95.1612994467213582    34.4885214098360677
-50014  -93.670631469796831     42.0314514280522147
-60706  -87.8171844977219109    41.9645234862400258
-92223  -116.981207624614484    33.9523882507711434
-39058  -90.3316899999999947    32.3376542499999999
-29072  -81.2589328610840624    33.9948060347883541
-57217  -97.6417935337956209    45.081601888503684
-48025  -83.2693480106422044    42.5209112717120234
-64491  -95.3689707831953655    40.4509759224260463
-30061  -84.5231085000000064    33.9301952999999941
-71078  -93.8032612650144273    32.2794441705737398
-39069  -91.0477724543003575    31.6897280157535981
-99647  -154.169065199999977    59.7690654857142647
-55713  -92.6299714093567275    47.573635578947318
-73057  -97.4191922533651677    34.8422537798891554
-80443  -106.103841952176069    39.5687546663083936
-47432  -86.637288422210446     38.514934176294858
-15067  -79.9551855901639641    40.2078957295081096
-54868  -91.7302893527557615    45.5178782082318278
-51231  -95.7447645195954209    43.0989749683944083
-43015  -83.0721483691325773    40.2819922686667624
-54981  -89.1231312348338065    44.3509350354697247
-92302  -117.555016333333356    34.720007333333335
-56662  -93.9569272402265341    46.8417065486708211
-46057  -86.3787504544264948    40.3299067387701058
-08554  -74.7813274646065906    40.1141822015810021
-13665  -75.4746622857143166    44.0571745186075034
-16947  -76.8049951733919869    41.765265664902131
-75492  -96.0052050568334892    33.5780647442489624
-36310  -85.1920922254042665    31.6229483339883082
-04683  -68.7127324032698112    44.1822230408719321
-04568  -69.5602184814571558    43.8708650072201962
-43943  -80.7239596058212641    40.2234515685240623
-44609  -80.9878432860209188    40.899076812499942
-42202  -86.8528130741671163    36.6807565133654805
-32909  -80.6469706921607212    27.9511373119043682
-87326  -108.805553461723918    35.285798197709461
-94018  -122.474452782934208    37.5067885958083735
-79791  -103.395634065573802    31.4622196229508262
-13460  -75.4593527868308769    42.6850968073807167
-45422  -84.1997089999999986    39.7597647500000022
-96062  -122.143801279860043    40.5518774185638193
-95407  -122.73475587601412     38.4067901053493443
-68130  -96.1929081040909324    41.2347441788004829
-28635  -81.1164064903023956    36.2869933560167368
-17506  -76.050669523809546     40.1173862857142822
-15301  -80.2522611742214451    40.1661183910294142
-35702  -85.9810212000000007    33.0891960000000012
-62282  -89.7014072151394259    38.3599920159362568
-64465  -94.2896889813309542    39.5330369337943068
-73501  -98.3624821505496811    34.5911674328969454
-94429  -95.6546909999999997    35.9728649999999988
-07823  -75.0367352041592284    40.828746661216222
-97122  -123.834306228231       45.1940599431713395
-73727  -98.0246419123377279    36.4912736753246989
-07016  -74.3047148977959466    40.6551620529385929
-78382  -97.0568251488056433    28.0503471937973003
-37323  -84.824182442373413     35.1130089182925929
-38036  -89.616405295081961     35.3257941420764752
-96761  -156.667140456726145    20.9276981615373749
-75704  -95.418713128041702     32.3936035553789452
-57249  -97.3585133971684229    44.3801105581222046
-32829  -81.2593507669603667    28.486239557240733
-79262  -97.1452720000000198    32.9851493333333394
-43909  -80.8167930243902504    40.069649097560962
-44618  -81.6943890217758053    40.7742984109937581
-54443  -89.7323687658296194    44.6101668288854825
-31766  -84.5497639999999961    31.5753082499999991
-13305  -75.429300821052621     43.8876951684210539
-12147  -74.1578447904474274    42.5134507144298439
-44139  -81.4366823623897602    41.3841901044861586
-06332  -71.9067600923912664    41.7252181222826053
-02745  -70.9376598772024636    41.6973968339114265
-88823  -99.0498153749999943    41.8356427499999981
-43077  -83.340900246753236     40.1365895324675179
-24216  -82.7783455752566368    36.9265138336008363
-47403  -86.5898150065132342    39.1086113386510448
-65560  -91.5285819659737996    37.6298260903975219
-70638  -92.7982104880954211    30.8696233377976235
-07719  -74.0605741943912363    40.1714084139474963
-12433  -74.1532056206162338    42.0048028140276841
-44637  -82.0255375256527373    40.4842449375453839
-66069  -94.8358336363636312    38.9097163636363561
-77401  -95.4607980551068209    29.7049320175500036
-23443  -75.9564022333333355    37.1707466666666662
-13404  -75.4833539155844022    43.7341862207792218
-04357  -69.8278590193333173    44.1150940646665433
-56477  -95.0102291398104057    46.6340418297474457
-27256  -79.2888729623287674    35.5658277328767483
-60424  -88.3201097687055352    41.171947529160704
-36762  -87.3170190000000019    32.009208000000001
-44844  -83.2537128341276826    40.9896368379408642
-34228  -82.6405114303587709    27.3909098808034344
-43205  -82.9649773423280408    39.9575511866959516
-32463  -85.5854269647058885    30.6230042941176492
-58553  -100.393197833333332    46.890757166666674
-90290  -118.606588752444821    34.0999449890935864
-71006  -93.6714661885015687    32.7030724835095654
-31410  -80.9867063713319624    32.0185924399161053
-48320  -83.3389482775284449    42.6109095620328659
-00652  -66.6096576949152706    18.4525109915254326
-33951  -81.9838937499999929    26.9709417500000015
-55768  -92.6669301920916269    47.4821916508147908
-24574  -79.2212381710891265    37.5565643374914657
-16865  -77.9676391654235204    40.7185415423431323
-04002  -70.6714740771461578    43.491723417991345
-44142  -81.8159041142656349    41.3997823333333415
-95205  -121.261698804656135    37.9629842046791524
-48848  -84.3595086210712424    42.8874635503063644
-14227  -78.7405103098116541    42.8791439304012272
-98282  -122.475032294158851    48.186931601466263
-96714  -159.510581479338924    22.2070002561983415
-46237  -86.0735555004287249    39.6748648381191416
-15482  -79.7630991576354091    40.0634362093595939
-78373  -97.0773534615621259    27.8178954017358819
-05303  -72.6299550370370355    42.8302452592592573
-17853  -77.0086006674001169    40.6897784631176762
-77466  -95.9967933990267426    29.818370467153315
-50268  -92.3654779547737803    41.4096241206030484
-11901  -72.6483277584654417    40.9383565539740104
-15234  -80.0189049888077477    40.3681529495539877
-27381  -84.7524003333333411    35.735316333333337
-96712  -158.047793350000063    21.6155989041666636
-21545  -78.8717695863552564    39.6998439771690386
-05643  -72.4966432857142706    44.5605687142857079
-94552  -122.027495128838197    37.7035660739658169
-34145  -81.7150268792154861    25.9403150529038022
-28666  -81.4720565690607827    35.7226744364641036
-45232  -84.5150862183137548    39.1825570614182013
-71820  -94.2781909356436358    33.7727790247524808
-95060  -122.059300493208724    37.0029651594757922
-95385  -121.261746787671228    37.6114058904109925
-21635  -75.8467554591489659    39.3476441374468067
-82335  -106.812809214285721    41.7261305714285768
-31001  -83.332975839285524     31.9587297548262406
-26241  -79.8474769597092973    38.9177229350143179
-64129  -94.4964861756461545    39.0463940162134122
-15559  -78.6751957128727497    40.0614219795162114
-17232  -77.6405765408804882    40.1013309182389861
-99749  -160.43472627777777     66.9737707222222411
-80320  -104.891999999999996    39.7249069999999946
-70075  -89.9235750815166597    29.9330584298578621
-28315  -79.4403379623709611    35.1218411941524309
-67482  -97.259083072289144     39.0143496626505879
-70652  -93.2551711189475441    30.5902596523065142
-27807  -78.0938653080965395    35.8033848300258342
-59446  -110.138192818987179    47.6437580918904047
-73838  -98.9013511415094229    36.221135924528312
-94038  -122.507950454634326    37.5258294229268188
-79520  -100.113928575353796    32.8681881940050005
-24354  -81.5440207085868707    36.8276339010231197
-99677  -146.677560166666638    60.8651226515151578
-35204  -86.8359869530859356    33.5208858063550323
-32768  -81.559059285714298     28.7031084999999955
-74131  -96.0697698892109742    36.0535959198067886
-80739  -85.1771982400000098    34.7800055999999955
-45101  -83.7491547793803335    38.6834213918379959
-78745  -97.799434353655144     30.206490604891993
-04262  -70.3463950555555613    44.682803027777787
-20236  -77.5596673749999894    38.7466865000000027
-56449  -94.287444234858043     46.1749459816131349
-72415  -91.1607598869284317    36.1178040712792807
-70719  -91.2546500786461365    30.3879995455450427
-23316  -75.9662697518072036    37.2841008843373203
-40760  -84.1485751875000005    36.7433656249999956
-77342  -95.5543545769230462    30.6609616153846183
-28641  -81.8838518290322384    35.939872561290322
-57016  -96.9540204029075028    43.895485233991046
-37219  -86.7833684779583194    36.165043208816698
-30852  -83.8695379999999915    34.9585266666666712
-13752  -74.9061275399879065    42.1801116123473108
-80603  -104.729511047392236    39.9870462214813998
-81225  -106.969909202191602    38.9046490312328501
-43920  -80.5822797089212628    40.6563359580882349
-85145  -111.343439683561797    32.5665396671232656
-93638  -120.046746900389877    36.9977352618447668
-14626  -77.7085568632297026    43.215860239995699
-73648  -99.4777244375000009    35.3762811562500019
-69025  -100.513479728960505    40.6507955061882313
-98858  -119.91197235207413     47.6955212033795206
-73667  -99.0300402465373537    36.0323333767313088
-76039  -97.0847981529070694    32.8593388516527654
-90245  -118.405659457882265    33.9221200419434368
-12533  -73.7943217574703141    41.5710384152199239
-28082  -80.608349000000004     35.4621925000000005
-28031  -80.8842744302744023    35.4739187362412949
-62421  -87.9460180225466956    38.7451826018567189
-78001  -99.2855473333333407    28.2835989999999988
-43526  -84.7435270213395171    41.3113392346096191
-47373  -85.1521903152740549    40.3451153823079025
-57633  -101.414643351239761    45.4235960881542624
-27947  -75.8634009770491247    36.1802489879781177
-61075  -90.2575426817365951    42.4613398583946307
-20737  -76.9138553562843725    38.9604524907313632
-66042  -95.092788647864225     38.4374391916757716
-40012  -85.1805446434277513    37.9037912389252156
-63740  -89.6687580674799563    37.1759202829037534
-47370  -85.1376703437499884    39.8130172656250068
-96097  -122.641834138055401    41.7430521251944953
-45070  -84.5541677078651759    39.5892721573033839
-71286  -91.1982445692056132    32.6551095896805492
-43443  -83.470200017241396     41.4576748653016907
-58799  -89.7356815000000125    44.7883631666666702
-41612  -82.7397163089005261    37.4588582408376922
-53210  -87.9756582753519183    43.0688495113677945
-56353  -93.6253261501454119    45.7688973533755288
-23159  -81.7472132500000157    38.480971833333335
-22640  -78.1158561833332499    38.8074112505049911
-52465  -88.6177697999999907    39.3495846
-04276  -70.5897898801231776    44.5358290908552164
-23883  -76.7667129195351805    37.1298158256125816
-95480  -123.371994289902219    38.6726604267101095
-29903  -80.7505786250000028    32.4783113750000041
-66083  -94.8363696440757877    38.7399938232885859
-65571  -91.6950477008086438    37.1688980365806785
-03450  -72.0908780723282234    42.939302114587548
-27326  -79.5703068199210577    36.4629004083952566
-21629  -75.8289831432358739    38.8693094817292817
-69343  -102.193182069066566    42.7763162142230584
-28689  -80.9411015610172626    36.0382065174945438
-54416  -88.981277371428618     44.8657521015872831
-33165  -80.3581545020339547    25.7344207654852113
-38650  -89.1396110971391948    34.52864318266775
-78159  -97.5991847422202596    29.2591026562935426
-40211  -85.813019464592557     38.2396740078258404
-68132  -96.001204600150416     41.2653275983955439
-68314  -97.0387758373895508    41.0153910199115188
-10960  -73.9261446163631319    41.0896036647543781
-97230  -122.502492636924373    45.5382090594571238
-77554  -94.9661895839152521    29.2008653848929889
-25928  -81.3108006678900068    37.5488782495413176
-62444  -88.7748507446808475    39.2787857021276565
-15321  -80.1881697517156056    40.3234063599501482
-38801  -88.7507657099401399    34.2452844657834632
-97062  -122.766510893889517    45.3696689421557338
-85031  -112.170774361899817    33.495183316047985
-80459  -106.436163493870069    40.1446264742734087
-60040  -87.8134813319417447    42.2060580396660043
-65001  -92.0173479877350076    38.2939670253475271
-92119  -117.027553956240908    32.8032506447040859
-02176  -71.0609307144320326    42.4581060847741512
-26660  -80.6977536946409799    38.3480826248736406
-27028  -80.5684599778145696    35.9192364590700777
-23589  -100.884877666666668    32.6729643333333328
-87004  -106.558470526451657    35.3072330572331268
-76241  -97.3818607272727235    33.6538652272727248
-49668  -85.7073422086005934    44.4037846128116769
-29730  -81.0077596771905917    34.9028990162832429
-36606  -88.1035369260529109    30.6722964506756526
-36581  -88.008845755102044     31.3740572478134183
-65246  -92.9974276114649854    39.3890392993630556
-80471  -105.441179231707366    39.932879975609751
-71360  -92.3813113604704341    31.3379634672707539
-79718  -103.730912416075711    30.9772715945626089
-79518  -100.690777190550023    33.3503033764523593
-65707  -93.8263843465211096    37.2235594693042131
-05083  -72.2561438078431593    43.9261863777777748
-95680  -121.537019000000058    38.2538103963964033
-50107  -94.2271998273244549    42.0234833791270219
-02896  -71.5528172103188069    41.9799942865162805
-65202  -92.3166763917585058    39.0047420621910703
-82622  -105.385655200000002    42.7470105999999959
-43320  -82.8916583471861372    40.5859876683983813
-95044  -121.988933250000002    37.1538889999999995
-15139  -79.8357194213058676    40.5200243254295245
-11433  -73.7928986499999837    40.6955723499999991
-26237  -80.1606699653680295    38.8556274230055223
-41746  -83.1012882100962145    37.2122797514423951
-71644  -91.7324429542079827    34.105778199876184
-14120  -78.8559626991960982    43.0559226198691789
-71480  -92.2936905035261361    31.8639932849083287
-07838  -74.9228752356262788    40.8811183814807322
-93277  -119.329249832906314    36.3095897064563076
-40214  -85.7847433053836994    38.1542723312283059
-02719  -70.8791699909698423    41.6365345712602988
-18294  -76.0692025000000029    41.0047257499999986
-61523  -89.52146996909552      40.9093788016230988
-10708  -73.8320187147322713    40.9389707116058119
-80521  -105.111267326224109    40.5851858376457031
-81046  -104.348999913043471    37.2977517826086782
-46781  -85.2622366889030729    40.6378606407954877
-78047  -99.1834807499999869    28.6671975000000003
-12422  -74.2055746699801801    42.3914878151093362
-52772  -91.1482587816413741    41.7467317541550784
-89060  -116.042789110993922    36.2649278940411293
-07030  -74.0327996002251183    40.7453481266892439
-70079  -90.4135554416402982    30.00656222712934
-34450  -82.2899101360017085    28.8366080350972496
-72953  -93.4726643870967848    35.2477551935483859
-84665  -111.686321043301774    39.1961441055480861
-44890  -82.7222609003936924    41.0759626709144356
-72811  -93.1273740727272923    35.3245361454545375
-35006  -87.2231176608916172    33.4581100179962334
-24531  -79.4529002402310027    36.8400133205605442
-06279  -72.2631158718176607    41.8845282739353948
-46173  -85.437670712085918     39.6108132812298024
-50434  -93.4406579598278881    43.2678380286944133
-13066  -76.0099401935212597    43.0285278895774894
-44440  -80.7699906287250542    41.1411697967757419
-45826  -84.4931655975609459    40.4366229695122072
-62943  -88.7502518656717285    37.3516370658900456
-85241  -111.527179542168611    32.7904242088353541
-72749  -94.4314947167630123    35.8682989768785845
-68116  -96.1615070415710278    41.2958914079665007
-28032  -81.0805275828926284    35.235068803459896
-44288  -81.074604118128633     41.2391988327485848
-67108  -97.7165467764369708    37.8015826534907546
-33976  -81.6855948309888902    26.5922984014271009
-16870  -78.0313260499028161    40.8035479844274889
-15747  -79.1475119224201222    40.7644734884116673
-30808  -82.3963460186114247    33.3946887310528808
-68832  -98.3711009102232197    40.7656533520563826
-05151  -72.4956798721436968    43.3894284397180243
-96753  -156.443807445396374    20.7252840185721006
-10549  -73.726531263097641     41.2027237322223812
-13132  -76.2378017306410385    43.2589523164030894
-81122  -107.594761482666584    37.2987671366903015
-99105  -118.108677570967728    46.9010762612903136
-48738  -83.3271233251504242    44.5535636340898478
-29545  -78.9610555981087714    34.1596171845942465
-02877  -71.5150731578947472    41.5308652631578994
-53061  -88.0859786734150845    43.9490773148640841
-72569  -91.4592815863717021    36.0712947166765758
-66436  -95.726258785190339     39.4612785054139437
-04428  -68.5873705921279537    44.8079695055667315
-12053  -74.1765476279885831    42.7436159039262904
-47137  -86.3832328558970062    38.1830207252407021
-74462  -95.1930624995231227    35.2627166998092747
-85212  -111.625342241893406    33.3389595846302527
-05747  -72.836791097143049     43.9901281102519661
-30541  -84.4324221716921528    34.9248946527691473
-77756  -96.522137166666667     31.0145865000000036
-54540  -89.3530719280932573    46.1498569110131172
-52035  -91.1664909571973681    42.6786233862128697
-16066  -80.1116292412712028    40.7086589549143198
-54922  -88.7280223421052767    44.5300035639097089
-25086  -81.4228734786585875    38.2133359695122081
-80122  -104.954042261946469    39.5809480179864082
-97006  -122.855438856506552    45.5264533776068703
-62681  -90.558490370987613     40.122110852295819
-27595  -78.4712993333333344    36.0853159999999988
-45740  -82.0765722444444634    39.4712305388888893
-67852  -101.206576500000011    37.3261640000000057
-62341  -91.3266472763214097    40.4211188322929615
-28732  -82.4679098795154033    35.4487296903966254
-74135  -95.9235062690303266    36.0982120474759327
-14522  -77.2196324854833165    43.0616611072252908
-16347  -79.0526460598457845    41.6672075481095661
-64858  -94.531213530054643     36.9004750710382652
-57574  -101.381170999999995    43.1138667499999997
-32204  -81.6851297987610536    30.3211498582403678
-21718  -77.6218037456140308    39.3926779824561493
-50627  -93.1008869814152717    42.3555854996182433
-14627  -77.6307086666666777    43.1291070238095173
-59857  -115.026314153846187    47.9168652692307759
-30153  -85.04900617453508      33.9575582243123435
-15612  -79.5985947739627449    40.1363204406294756
-00911  -66.0576364321294847    18.4509891133250221
-14132  -78.8801115040985366    43.1487685190015142
-17771  -77.0394912375592469    41.4237504544518274
-30701  -84.9300140319795247    34.4952705114130893
-10504  -73.7007524468480142    41.1387043752672028
-28525  -77.7044860678912954    35.1253772594293423
-15233  -80.0255258554034015    40.4556041014714367
-62438  -88.8702131826922965    39.339065961538445
-83845  -116.144756107239203    48.7166898014836534
-31451  -88.7692228181818166    31.0617883636363636
-48745  -83.4515337251442162    44.572374712175737
-49425  -86.1042258674190748    43.426448135754633
-89138  -115.349470238224043    36.1676658095560697
-76420  -97.234002666666683     33.550058666666672
-13750  -74.8271307828242271    42.4743707462803286
-19437  -75.2609134132230793    40.1834552954545288
-14489  -76.9961138151484334    43.0848803479550639
-19124  -75.0882681738981432    40.0170958869150653
-13850  -76.0217775560599165    42.0659300242547403
-50037  -93.7037700952380987    42.1127150476190479
-25024  -81.6287563052209606    38.1485444738955835
-79920  -106.45408968421053     31.8243257894736864
-23517  -76.2924070885324284    36.8693680742721526
-05832  -71.9210971243493447    44.5923443047657599
-85364  -114.64706156206806     32.6987800701794313
-58251  -97.6909571405710153    47.9344968157261064
-92253  -116.279652068409533    33.6745137700367607
-21673  -76.0458068215739615    38.6604883860318793
-48238  -83.1424253134744333    42.3968241961769152
-35989  -85.6461572514045741    34.5932181123595939
-47030  -85.1375998530313183    39.4286053542235848
-39359  -89.3427655705764892    32.5712079145128968
-02061  -70.8176050809727968    42.1581249099933899
-03274  -71.361456666666669     43.2888664761904778
-04095  -70.9131116330736262    43.6344481814526546
-48910  -84.548557896527214     42.7019724202252107
-53206  -87.9338108421523401    43.0754089771183146
-03864  -71.1105212128944544    43.6901301830086766
-65715  -92.5741908754325777    36.7236665986158997
-59803  -114.021700614999233    46.8132726976485074
-33127  -80.2061480858922522    25.8137433923009105
-49929  -89.095073544303844     46.7800017215190067
-29642  -82.5597581427062295    34.7837435477213148
-77458  -96.219072188679263     28.9391215786163443
-78413  -97.4033102721668627    27.684886647390119
-06266  -72.1707313634993       41.6741175565610789
-21329  -76.5850009999999912    39.3479103333333384
-96862  -158.070378333333338    21.3146766666666672
-89119  -115.137495245118771    36.0866946043024015
-12038  -74.2547505000000001    43.072601750000004
-53808  -90.5938863312883313    42.628731842535835
-62876  -89.1953419030837296    38.2797104140969182
-99846  -96.5550113333333258    38.672263666666673
-92159  -121.923058137931037    40.7386548965517221
-60010  -88.1466329249075926    42.1545866955798303
-70809  -91.0732939218506914    30.3995874705595028
-55407  -93.2538430253167547    44.9358683452243781
-25511  -82.3956209499351928    38.0288646007768492
-71045  -93.1713661744876731    32.3473808282460524
-25419  -77.8822712588754769    39.582969369253199
-24867  -81.4763051338797624    37.5932832732240385
-54207  -87.9614372080536953    44.1341096644295305
-52346  -92.078587566204817     42.0101017883656525
-00952  -66.1809180294117994    18.4295926813725366
-38683  -88.8666636124189324    34.936754738836818
-38858  -88.5493240498676073    34.1023592497791341
-62017  -89.3718530719187072    39.0696077773799004
-61452  -90.6755274960158886    40.2377946792828993
-48188  -83.4823184141653769    42.2925109439845457
-75861  -95.8556970404482342    31.856215319688129
-61019  -89.4041903833295635    42.445058315801333
-43334  -82.8006865915371009    40.3976610853195552
-36458  -87.3986018571428644    31.5066772142857268
-50007  -93.6087427730263499    41.8021764243421217
-75412  -95.1547533279060787    33.7778071017639476
-75456  -94.9673774000000037    33.1548313999999991
-48127  -83.2820034637858129    42.3372234443108084
-75687  -94.9547535416666761    32.1573572916666706
-28710  -82.2800475000000091    35.4631148636363633
-31815  -84.8137884371332689    32.022798803212865
-64743  -94.2295927569061007    38.6681162762431043
-53927  -89.950602333333336     43.9750958333333344
-72031  -92.4892960532772435    35.6059377907786114
-96980  -122.231892183908045    40.2983574252873709
-89745  -81.5550982500000003    27.755736749999997
-04069  -70.1847606248971516    43.8959351688579034
-01301  -72.6020366829425399    42.6131131120696978
-95564  -124.194504449122846    40.802115305263186
-41456  -83.1759876896551589    37.7422627931034569
-55428  -93.3803921444958291    45.0617351003173212
-39643  -90.0076666768374736    31.2394899581292869
-08315  -75.1085734242424365    39.275423838383837
-80522  -105.523323218750008    40.5966275312499931
-35769  -86.0893404465858367    34.5917656132257676
-48949  -87.6972632647058674    46.5344211176470495
-78647  -96.9639970000000062    30.2844679999999968
-72116  -92.2461598597265038    34.8029342879888901
-31333  -81.631771191176469     31.7750231911764622
-41124  -82.851452578438483     38.0227678027556593
-59345  -105.054679980952386    45.7730398523809328
-28713  -83.482234912356887     35.3930805183920114
-45629  -82.8128187242455027    38.6481907630940142
-99337  -119.117618381266595    46.1752165287029541
-48034  -83.2893029623485575    42.4916124923643963
-79330  -101.137736562601788    33.0436742552845573
-53916  -88.8360672634731969    43.4609090356978811
-72426  -90.0409612043343373    35.866874061919475
-32566  -86.8866208538669298    30.4222771569894874
-97037  -121.185163056058656    45.1508039064251321
-12902  -73.4795620000000014    44.7199674999999957
-11421  -73.8670140000000117    40.6895511499999998
-46702  -85.6130812588456678    40.8449645144257047
-04106  -70.275652244288807     43.6293240528475863
-12914  -74.5889946711409664    44.9342529164802542
-00662  -67.0236922935449257    18.4793659147189331
-13739  -74.7880586009715955    42.3719179738064753
-75092  -96.6557986630601675    33.6470537198608142
-36203  -85.8403915454214683    33.591093634865814
-41607  -82.8426510974359047    37.6222645914529892
-14226  -78.7985762859967167    42.9684589968104476
-88038  -108.55912283761819     32.9831728788903646
-15826  -78.594278999999986     41.0876039999999989
-29430  -79.7977479459459715    33.1967977567567587
-23011  -76.8155385956191736    37.4709109427126421
-21721  -77.6348127500000089    39.6422620000000023
-22079  -77.2154239924696952    38.700005798403069
-46048  -85.8040748221941669    39.9565064476670884
-37327  -85.403921114660406     35.4015350849407042
-22846  -78.80084596514385      38.3825209453603975
-63430  -91.4616712500000233    40.36005161249998
-37782  -83.7692463333333421    35.664574833333333
-98207  -122.212622580645174    48.0139436451612909
-28660  -80.8587235502728987    35.9707971894904404
-57315  -98.0531500069072024    42.9961996224097902
-39043  -89.9687830625000231    32.2391029375000002
-27952  -75.5391860000000008    35.2590733333333333
-38258  -88.6228678487965738    36.0192379064854578
-81055  -105.060345321451493    37.4721898941638187
-58263  -105.420652250000003    48.8278786250000039
-62781  -89.6547020000000003    39.8104555000000033
-44695  -81.1826024928600987    40.4358899228350452
-99670  -156.99740946428571     58.713646035714298
-78614  -97.5913452875775675    29.4201487757763722
-47579  -86.9219656537273409    38.1129600661667425
-84759  -112.504432576249016    37.7874080138934687
-66966  -97.776241857142935     39.7784208353511062
-55327  -93.4617312336010144    45.2067977777778154
-87051  -107.895197049738144    35.0939387539267145
-45459  -84.1685664915440128    39.6470239874225356
-84663  -111.595630709693324    40.1639440002492449
-39836  -84.877448300399351     31.653973304391215
-49036  -85.0126799642830662    41.8993069429353966
-67431  -97.0187318759527813    38.9837730661815414
-56653  -93.5602282887545869    48.3504464517153494
-27968  -75.4665166871794924    35.5948316602564105
-71944  -94.3394518200040437    34.2452444068177542
-83215  -112.754053249999998    43.2945144999999911
-04854  -69.0846749509400695    44.0701280840187337
-68725  -98.7602053559748612    42.1974115194968036
-19033  -75.3289454300772832    39.8905971883344463
-07072  -74.0817306507293551    40.8362200218801377
-85001  -111.306409800000012    31.5868010000000012
-30560  -84.1928740151358568    34.8960627501821179
-87802  -106.891565333333347    34.0521966666666671
-44851  -82.4112723128195626    41.0991481404057595
-72842  -93.5885572824525269    35.1071383746299759
-80436  -105.620365894046515    39.7664127780020067
-08273  -80.991288499999996     35.1049694999999957
-29162  -80.0098116145148737    33.8823343368392926
-75832  -95.8575523846153885    31.7951769230769266
-56527  -95.324866006392071     46.3852614644886501
-10993  -73.9794377842919459    41.2080608042035053
-79083  -101.474808487499928    35.8464961179687052
-53585  -88.7310247474576528    42.5022151915254085
-41464  -82.9927949443099067    37.6722734721549344
-77022  -95.3779651541434959    29.8293248682634804
-36539  -88.403761627949109     31.339299075620076
-75762  -95.4023338975478623    32.2070752144079719
-19941  -75.419070318713338     38.8034648797921378
-36030  -86.8484073160270071    31.867897290632115
-38778  -90.5386628986690738    33.5502697466724058
-46601  -86.2530122810951383    41.6723006377432625
-04074  -70.3559148202773059    43.5852587162498466
-18631  -76.30367305476193      41.0305490976190441
-98387  -122.388221039890752    47.0698429123406825
-24702  -81.1432165000000083    37.3120507500000045
-05652  -72.5625463031831117    44.7194093186259778
-83336  -113.787947796128051    42.5606819612810412
-12924  -73.5895434244898183    44.4689601551020388
-43150  -82.4105214065509131    39.7718524640334081
-70461  -89.724919991354426     30.2683138775646512
-73120  -97.5665145396352074    35.5822073358754167
-20839  -77.4128978842105369    39.1762892842105188
-63466  -91.6266195000000039    40.264742499999997
-15951  -78.7696189251700645    40.3352502721088584
-31513  -82.3445240985311244    31.7929539390335805
-40111  -86.6269189282540992    37.8111395965152042
-59832  -113.198736770420936    46.6829561001137918
-16623  -78.0433966442200955    40.2779356599326874
-78553  -97.7305193333333335    26.2449280000000016
-76077  -97.7009017947976304    32.2739965881502613
-36373  -85.1138037139037777    31.5291360363636137
-46938  -85.6327945886680624    40.4586758300220026
-58571  -101.396544217934178    47.3071091316685681
-19462  -75.2921107266623721    40.1176666461256559
-40337  -83.8528850020811944    37.9548288493812933
-48135  -83.3409059217296431    42.3243530802772838
-35901  -85.963319991302555     34.0230881740669346
-04910  -69.4383149915015423    44.5162302570819151
-34949  -80.2980248236494702    27.4751348557664095
-15440  -79.6032042312253196    39.7317822569169934
-57555  -100.681085577530098    43.3049118152275199
-48139  -83.8029281916666662    42.4509590999999773
-73149  -97.4947549262295894    35.3942775399999974
-30044  -84.0659329506899411    33.9227015770627247
-25639  -81.9720801382114388    37.8855334390243996
-02675  -70.2245440443948041    41.7046652013121104
-49269  -84.5796725318092655    42.282470604373728
-76466  -98.7479614291338379    32.4227896338582937
-85926  -110.01322659259263     33.8147411587301718
-67466  -97.4847763443560638    39.3221530938365333
-49959  -90.0006789230769186    46.4763105641025618
-90605  -118.030663084741718    33.9444495029470801
-49727  -85.1229093555485576    45.1514378020558453
-11784  -73.0423310481862416    40.8713066426637184
-07092  -74.3595220921670119    40.677828822976565
-50835  -94.3617413423423415    40.7028792432432525
-31649  -83.0043724078835368    30.962161104541579
-15776  -79.0860266735751196    41.0047297823834072
-78662  -97.4396866834095476    29.9533891851851735
-07716  -74.031321685508729     40.4066289194674937
-55414  -93.2285708324604627    44.9786306554319282
-19573  -75.3447032692307914    41.5336035769230776
-80571  -103.402226599999992    40.7516523000000035
-01560  -71.6841773591897038    42.1735093656126168
-26560  -80.1471299242424635    39.543775863636391
-28139  -81.9909935352483359    35.3587326085686584
-48627  -84.7564879685714345    44.4520916771428389
-14809  -77.4415016320865135    42.4193475546930614
-78738  -97.9783654544822298    30.3216096264767927
-98188  -122.277963238073497    47.4486159475844431
-31014  -83.3262098491581469    32.3998066294309695
-75855  -95.8719743780345084    31.5625362824872724
-19142  -75.2336517089769927    39.9222362350992981
-15554  -78.6191661374254664    40.1242172538475046
-12041  -73.9687632889447571    42.5679736105527766
-44643  -81.3054065128522865    40.644763249823967
-68963  -98.7810284444444306    40.4456556666666671
-35640  -86.9417177419530134    34.4466497779988146
-62955  -88.4526398043478395    37.5485281521739154
-15090  -80.0656784921801545    40.6216675190331102
-29585  -79.1328662754494445    33.4558598438656816
-90046  -118.368300030912948    34.1112471810305138
-24474  -79.8481065510203507    37.8043647183673528
-03777  -72.0868985976736667    43.8987075470406722
-60546  -87.8206319786280289    41.8370361768356034
-13756  -75.1005841926338178    42.0030277845785633
-12531  -73.6707163208974833    41.5350858261807829
-18455  -75.3599550440806354    41.8847677644835628
-22309  -77.1062985210370755    38.7227333113258894
-72205  -92.3458765265195893    34.7523207180461569
-76908  -100.412538923076923    31.4314477179487213
-98352  -122.232840500000009    47.2160674999999941
-32091  -82.118532159312295     29.9477661804790962
-30157  -84.8382436425465158    33.8954865750962426
-36352  -85.6103574493081823    31.2611470651753223
-06040  -72.5247532863885311    41.7648434083516165
-65008  -92.6516134999999963    36.9522185000000007
-16878  -78.32259581392087      40.9488629637004777
-59404  -111.351152515047815    47.5107239023510388
-78644  -97.6615107327203589    29.8762131983383767
-63352  -91.6541776217907369    39.2426346310679577
-85042  -112.031343512350986    33.3771079675299802
-50427  -93.2212147647058913    42.8357249411764656
-42054  -88.4388778888024802    36.726737427069132
-74718  -96.4781019999999927    34.1433683333333349
-74145  -95.8867837347661975    36.095129508723133
-53533  -90.1413227801783279    42.9889590268786392
-39210  -90.1771552499999984    32.3230672500000011
-54754  -90.8347854493244284    44.4506006711711308
-23801  -77.3318359406392233    37.2343663584474669
-62536  -89.6578526401733598    39.6334624190751228
-79159  -102.070017500000006    35.2095225000000056
-24712  -81.0142372757562299    37.4542552009225531
-67209  -97.4481331187631525    37.6686320089633142
-40058  -85.0850729154929724    38.5430382676056382
-21014  -76.349681527973857     39.5363531021047123
-22843  -79.1041358915914969    38.3321643772255456
-25270  -81.4376028555928144    38.8706371345993134
-66008  -95.1814069922978234    39.7158385712451434
-15846  -78.6066961846052976    41.3489025140013098
-85362  -112.75362826883925     34.2268155980991295
-90056  -118.371293826744932    33.9866036100536917
-74844  -96.5917721011235813    34.8739148089887436
-19570  -75.9909229999999951    40.2366124999999997
-15420  -79.8666175217391014    39.9580597584540982
-07724  -74.0720886261278793    40.3010336265623579
-04626  -67.2680814999999939    44.6620015528720558
-24534  -78.7665193057019621    36.8641532573596749
-61872  -88.368357583815154     39.9441531871388023
-99605  -149.592734458298992    60.9002941090008463
-74820  -96.6828817546280845    34.785434398486899
-01951  -70.846097598645585     42.7865007069867218
-65588  -91.3175065352467925    37.0084194546828513
-78563  -98.2910982237961122    26.6246576402266193
-71765  -92.3520317032543971    33.1303310276740746
-04493  -68.5516131375215423    45.2520116188474049
-93206  -119.476259650709366    35.4327884104609794
-04065  -68.4224509999999952    44.5409089999999992
-20685  -76.5195105431884315    38.4485917181099097
-30547  -83.4606255623565687    34.3676846996726937
-52054  -90.6275385529750821    42.3061668697190925
-48182  -83.5785782429715454    41.7634583916758828
-44230  -81.6918176615522071    40.9615161015343858
-62320  -91.0810956196089307    40.0144281584754253
-01103  -72.5897314638783371    42.103628944866891
-27244  -79.4948067603710626    36.1789477589322956
-94803  -122.289152492348308    37.9700732446745164
-56715  -95.9552136279569226    47.8121029892472933
-74330  -95.2640336360543643    36.4365852687074607
-13287  -75.6728148750000003    42.2454336875000038
-17070  -76.8707104931049656    40.2103594044087345
-42023  -88.9792848862615386    36.8684164150846456
-37082  -87.1218638891038211    36.0855557829050113
-32922  -80.7434211085255953    28.3678671490665977
-64145  -94.5962499004452724    38.8944395540712762
-42091  -88.269834000000003     36.6213232500000032
-52348  -92.3826729777777871    41.9888547925926119
-97438  -122.750196085287484    43.9527400654470526
-60616  -87.6314974413450045    41.8453571227337022
-45729  -81.6051241670611205    39.4143198066729568
-40741  -84.0839376374440945    37.1411975239614378
-95901  -121.506600152098329    39.2136541574807609
-72101  -91.1689316948848045    35.2521741142686551
-12186  -73.9628559520911608    42.6327432231338364
-27577  -78.3539304080965024    35.5074755568381164
-67654  -99.9039268081728835    39.8350909270516809
-41735  -83.0923094283295711    37.0230879046276016
-12911  -73.4664568400000064    44.5237463399999953
-58461  -98.1991522357939459    46.6686586128518996
-65402  -91.7669850000000054    37.9533971935483976
-75933  -93.8273364503347835    30.5920320887276205
-03901  -70.8487384947549543    43.2928684953812706
-56648  -94.0294032000000044    46.8036599999999936
-55742  -93.1501855074380813    47.1891533134985011
-73050  -97.2540908357016889    35.9417076767317738
-32952  -80.6735800588022727    28.3291474742846887
-76758  -99.5818000000000012    31.1966639999999984
-99144  -118.490581045553057    47.3454515965292941
-91101  -118.13974745650043     34.1468092531769187
-52229  -92.1585905185182526    42.1436177289830951
-16550  -78.2934492999999918    40.1300205000000005
-15853  -78.7588796415778205    41.4086616111435575
-78606  -98.4092127803592973    30.0960654482064776
-55106  -93.0485981804301474    44.9663804794967419
-26208  -80.5835906951871692    38.3659390701128444
-91731  -118.038197620735673    34.078579936490172
-88260  -103.341334753600293    32.9620280348791823
-46965  -86.1014389310344939    40.4176689482758533
-87513  -105.674828484496089    36.5343852775193767
-28748  -82.7232963789632549    35.6495376950509026
-46278  -86.2914678391815073    39.8931292992728999
-20862  -77.0199697844522859    39.1821064946996813
-12887  -73.3659117819077409    43.5486077611732014
-15849  -78.571180129548722     41.1873026104803159
-65611  -93.3541631476747398    36.5457333013551633
-76605  -97.0852659999999901    31.6666404999999997
-46546  -86.1872539999999958    41.6444616666666718
-45381  -84.5287892635529232    39.7352906577703351
-21221  -76.4459969493708087    39.3044579051073484
-95227  -121.052274930615084    38.2107898776824015
-87010  -106.137357200206083    35.4029681460441807
-43718  -80.9984647552858377    40.0120044498005569
-31804  -84.8988748389962069    32.6506031474123972
-28080  -81.1150561585714769    35.4528753997593853
-74737  -94.8958738333333258    34.0315674166666682
-08036  -74.836132157715852     39.9770055698807809
-28378  -79.056123333333332     34.8587180196078492
-92318  -117.235175020408207    34.0500438775510119
-83642  -116.39313589293306     43.5920023379218264
-61008  -88.8608007795666168    42.2700250550757346
-62548  -89.2906046407957206    39.9902500885182093
-11507  -73.6521156920616562    40.7708455061268324
-65066  -91.4890436167262351    38.3332500043009787
-54135  -88.6108990392156812    44.883195392156864
-16224  -79.2966817679217115    41.0627914181250233
-95023  -121.378369626614173    36.8513969318606414
-49013  -86.1083785609889674    42.305485009508395
-51632  -95.0439110640198095    40.7440455556830585
-56065  -93.9306756899546826    43.9337923187311006
-28830  -103.466690999999997    48.582296999999997
-71227  -92.4811500019247035    32.5560147089036107
-25802  -81.596872542857156     38.1021020000000021
-52640  -91.2820842280341083    41.0931364450855412
-65059  -91.8844815818370364    38.7027158187154896
-74033  -96.0054780100145706    35.9524923888071939
-64804  -94.513372343668749     37.0328540226381477
-49831  -87.7270223112033278    46.0880952800829746
-60164  -87.8947962850015472    41.9183458824408461
-31548  -81.6707982064114191    30.7975163698262087
-80939  -104.678201220339005    38.8796689830508413
-33521  -82.0673329014868926    28.8003214591077814
-20889  -77.0915295000000071    38.9993280000000055
-75426  -95.0466225323911971    33.6408005357609525
-95929  -121.848968499999984    39.7257965000000013
-17261  -77.4915223650793763    39.8494441269841317
-77341  -95.2175235789473646    30.6231674736842123
-60609  -87.654909870967785     41.8117083640039269
-77080  -95.5236092888367949    29.8161785163934745
-90044  -118.292458616007551    33.9508497195855909
-15677  -79.2497788390340645    40.1753900995975783
-48633  -84.9378274649681373    43.9582578407643396
-07632  -73.9532272250938973    40.884264596334539
-23407  -75.5573169914040506    37.8423138882521499
-52228  -91.7848901109813937    41.9063454404204307
-29518  -79.8428239440528671    33.7849994569816658
-54121  -88.2450186435751931    45.8722824140279712
-52141  -91.6249519056957809    42.9399788130803799
-44665  -80.9859662666666793    40.8447291555555623
-51574  -95.444183333333342     41.5930726666666715
-48507  -83.7005915383387702    42.9725843293516476
-55936  -92.581569224535869     43.7269893220916117
-89509  -119.8303186670164      39.4971411454696124
-66081  -95.2318645217391122    39.7844019130434816
-84084  -111.961862890887247    40.6217793478695839
-13457  -75.0269754062499885    42.7860428437500175
-40218  -85.6521065403781847    38.1914622509230384
-23322  -76.2321620253681829    36.6777085859589391
-95980  -121.317561316666641    39.926024716666646
-35965  -85.9285110000000003    34.3418260000000046
-89511  -119.802341118904849    39.4042079886254442
-33473  -80.1867801699101221    26.5147107747005997
-17008  -76.5835652500000066    40.3286455000000004
-81039  -104.090803906615392    38.0312914723336419
-03848  -71.0657354196882523    42.9143002481271338
-73705  -97.906912343749994     36.3535141875000036
-92301  -117.476364346383789    34.5980448577939939
-42502  -84.5873913333333292    37.0517593333333366
-29446  -80.5849847638120025    32.6867958563535694
-31552  -82.613477780048612     31.2899401211678558
-65616  -93.2421224876771646    36.6587700041391855
-99352  -119.28391527483916     46.2509026973881205
-97350  -122.069381134680157    44.69106752861952
-61834  -87.6301929886534339    40.1562576298706162
-70128  -89.9556164932512843    30.0497517916173429
-39939  -88.5759324999999933    33.2324290000000033
-57436  -98.1132524279176295    44.8433022487741226
-30731  -85.4784511686005715    34.5693706542742731
-15541  -78.9785449615772848    40.044779674033478
-37137  -87.4855737930113548    35.8797529422071335
-59523  -109.231506122940843    48.4920362677303416
-01229  -73.3393551428571442    42.2833374081632769
-18362  -75.3032183125000216    41.0907718750000015
-77037  -95.39700426746235      29.8899943920954705
-74549  -94.9265729612068867    34.5391947456896631
-98144  -122.299939711297483    47.5850578029576496
-24637  -81.7150891196016147    37.0649979757586152
-30173  -85.1471208539683033    34.1444379223986658
-96792  -158.15556917811702     21.4322809236641199
-68925  -98.4244002894798911    40.4201939255490501
-53139  -88.1194819873866209    42.6863136337034348
-30577  -83.3090638376212098    34.5592704476684034
-37317  -84.3931936191151806    35.0199376442237238
-61371  -89.0210164666666799    41.4801043111111056
-97410  -123.170093658030609    42.8027975192176413
-78587  -97.537000374999991     26.0085458749999994
-70057  -90.4188288406192981    29.9724928724954722
-21810  -75.7061839360730602    38.2998303013698518
-96768  -156.318789210683207    20.8401452643115874
-62617  -90.1429143971412969    40.1583682557428148
-16112  -80.4964639072079819    40.9703482369511036
-35999  -85.9680068271604796    34.121807049382717
-72395  -90.0319509518143377    35.5755287614515581
-80832  -104.101529139169926    39.1078960127312456
-39556  -89.4068919058602916    30.4630864865920472
-72955  -94.4473764160246105    35.5972949083205705
-83404  -112.013734848534426    43.4580165127951759
-76530  -97.4535789137562034    30.712910642248815
-12008  -73.9010332605041924    42.8549600336134446
-01340  -72.725483221325959     42.6852365203531789
-16565  -80.1005471249999914    42.0705102499999981
-82428  -107.583354742081525    44.2457140633483803
-95405  -122.670597033742652    38.4385759149537805
-12161  -73.8492647307692209    42.5156306346153769
-67214  -97.3163406871169059    37.7057870757751559
-70058  -90.0647930566602355    29.8742904374830225
-81223  -105.556085689418964    38.3759762582137043
-51023  -96.4846412212369984    43.0075162618604594
-25652  -82.0368647522727343    37.8059322579545167
-42215  -87.6615275307969881    36.9933160906194587
-54232  -87.9160850458715402    44.0122168776758684
-33811  -82.00851512022777      27.9694260849465159
-20912  -76.9993649737936892    38.9825448123927885
-78201  -98.5277381918708812    29.4683186729530284
-55074  -92.7324668874998679    45.3741324452205745
-91206  -118.217955946839609    34.1612568493319557
-21750  -78.1991433283543529    39.6938543981035679
-76118  -97.2155014702946403    32.8053764251124207
-64739  -94.0839755229303876    38.5086746003573026
-45865  -84.3820055806306186    40.3936808840090578
-37218  -86.8570696027273641    36.2117269232731829
-34216  -82.7361490131579131    27.5307506751011744
-58458  -98.3042203937073822    46.3823343864796342
-79538  -99.6603813948771489    31.9811162251867565
-74042  -95.6352699647576827    36.8537338414096993
-25447  -81.9523476666666681    37.9383811111111129
-54983  -88.9345760291776628    44.3225663642794174
-46539  -86.0080891459747789    41.1703979199806653
-59274  -105.434156016269071    47.8383523327004809
-53006  -88.4927890680272782    43.6171401972789212
-96014  -122.816285438514058    41.3253955012809655
-87712  -105.205679545454529    35.8928109545454461
-92880  -117.588194362268922    33.9416813430283213
-80510  -105.521369449114431    40.2214007081681331
-24263  -83.1426804163663888    36.6807786518868397
-90305  -118.327458479034419    33.9596455023295718
-50669  -92.6007627030258789    42.3206498961524886
-98281  -123.056833305227727    48.9890758600337008
-80012  -104.839415231784614    39.6979203015306865
-59633  -112.322162304946502    46.8203252656808004
-57247  -97.4410758607641441    45.7108187736112086
-74849  -96.7416558931658699    34.9812429126917905
-62822  -89.0548312617691948    37.9741914976720452
-04414  -69.0089927873928559    45.3578875285341923
-39366  -88.9106148723406591    31.937858419662458
-68759  -99.3354158627086719    42.6014545269017049
-30037  -84.0886314999999911    33.7029744999999963
-78065  -98.6200005624534697    29.0853652029614693
-39474  -89.8527458590231447    31.6183340288292456
-41145  -86.1300404999999927    38.9730504999999994
-39525  -89.364942080434119     30.3894315349685193
-22807  -78.8700463687499962    38.4349429708333474
-95652  -121.398902485981438    38.66250218691588
-28653  -81.9020813725489916    36.0610966176470598
-53406  -87.8608468754546834    42.7322109477851129
-15476  -79.92126864406778      39.8703642542373018
-31305  -81.4122182642628474    31.4213627236422042
-73546  -98.6995158906031094    34.2395217349228602
-78013  -98.8949573648992413    29.9734570481718521
-24127  -80.1644379168132701    37.4870834240396036
-93833  -120.424492187499993    48.6025631874999959
-50119  -92.9399877872558875    41.3112032194244847
-62454  -87.755574370458973     38.9989052382888488
-76750  -96.9717169999999982    31.081059800000002
-95311  -120.173352528080386    37.7280657271109732
-47022  -84.9509440950189259    39.205564189578503
-04548  -69.7465043482430929    43.8124266080146469
-97417  -123.24327717378543     42.9499889077372785
-92675  -117.656405642710254    33.5027928078453741
-16950  -77.5210588077484317    41.8869920940286491
-82222  -104.634722125203268    43.1468297333333339
-93703  -119.762318589463661    36.7693475967089185
-94562  -122.431370418111698    38.4256946416184917
-83607  -116.724505895938108    43.6670975388922145
-65529  -91.9814884817518106    37.923457784671541
-12058  -73.9248287318193462    42.3493721254393165
-43945  -80.8519383993572092    40.6276521077559281
-14907  -77.5462525000000085    42.4104434999999995
-53101  -88.2718188372092953    42.5333653139534889
-71050  -93.9458930684931772    32.1060751643835545
-52757  -90.3637978333333223    41.8026193627450979
-64093  -93.7294556116579116    38.7757392636257663
-79927  -106.278847839741474    31.646773795427535
-37560  -82.0052215000000047    31.4939210000000003
-55712  -92.6249619440269782    46.2541405390683238
-46567  -85.7303084332435361    41.4075007323970112
-56470  -95.0410970827142734    46.9784358846409305
-12420  -74.3848160896414612    41.6694512928286471
-67037  -97.247916409861773     37.5601648856593613
-91801  -118.130499559704958    34.090955404103255
-18372  -75.3195698108984288    41.0504045575846206
-33065  -80.2573682422718235    26.2731337932044404
-87421  -108.465446818087315    36.7662773326403496
-60911  -87.9635692582858866    40.8813845204539064
-04669  -68.0165993807860758    44.4116308069868282
-48532  -83.7767111453269706    43.0136806015062518
-31049  -82.5198930505797676    32.6779676971649025
-39652  -90.4440333072667499    31.1138825173516054
-47344  -85.4646542461538274    39.8777778153845972
-01844  -71.1830639255444169    42.7311269158785478
-56215  -95.5770519364688909    45.342879619482666
-91945  -117.033612339442243    32.732018166192006
-62808  -89.1959233511803546    38.3090550503771041
-67502  -97.9195936889028644    38.1055881833522321
-37213  -86.7664915480349208    36.1644353842794786
-84107  -111.882117584419319    40.6578261465703008
-63878  -89.821902188235299     36.5097168823529259
-68826  -98.0110156088460371    41.1445463211241247
-56235  -96.0044817170513909    45.7001787468354905
-19342  -75.503530012957242     39.9017348450589822
-46277  -86.1310490000000044    39.6649370000000019
-48858  -84.7855776593058579    43.6011667309149047
-26209  -80.0043082264705419    38.4196625294117524
-53150  -88.1080778333333825    42.8817837848484871
-31409  -81.1523950628931061    32.0208026918239028
-56296  -96.4929923353984407    45.81571654395281
-44234  -81.1615056248282514    41.3303975639028707
-76513  -97.4851581123653546    31.0795845586926518
-78751  -97.7226169270990397    30.3099442683206739
-53402  -87.8034382618856739    42.7847278735517378
-75225  -96.7904377770140059    32.8654290966824547
-53085  -87.8135459739397817    43.72611102197245
-48215  -82.9534444339623889    42.3769177756432853
-76302  -98.4943441103060451    33.8651899025764962
-58071  -97.7067409676841976    46.9451698043087688
-43463  -83.5087321739130459    41.5088167826086902
-43604  -83.5407414655730349    41.6535541248169707
-76384  -99.316101497369317     34.1595414380839628
-85396  -112.559798022273228    33.5104392983934503
-93427  -120.207536019411762    34.6197268149833661
-41180  -82.8545602283432885    38.143800825107526
-82420  -108.467019038732346    44.8834926502347002
-48432  -82.9888711056338195    43.8994103225351822
-88439  -104.451893309484277    35.5455611081530947
-61570  -89.2938103756765571    40.9146061164909725
-58228  -97.3469347148088247    47.89601642554927
-40927  -83.0428438755364482    36.888957135193138
-49958  -88.6428674336398075    46.8366901467368209
-63365  -90.8825796354166755    38.7173974166666781
-49200  -86.5037710000000004    43.561862000000005
-30630  -83.1562503018868       33.9063324243275588
-75110  -96.4843806474848265    32.0850487511193663
-93701  -119.788973256204756    36.749462268423116
-62882  -89.1174493921571127    38.616556952941238
-63945  -90.5446049966810165    36.6458055894456578
-70534  -92.4643300792767775    30.1829499721836036
-04653  -68.345149745022951     44.2432566439510282
-21776  -77.1020474219738645    39.5158621915638193
-61326  -89.2289051655781833    41.2696204300373637
-44124  -81.4696394640115216    41.5041187404778213
-62244  -90.1939843630126461    38.1974427363852271
-39475  -89.4253303683460814    31.1749884647852085
-84408  -111.948644999999999    41.1953570000000013
-98253  -122.573619437119731    48.0848039213995477
-06106  -72.6968872917797881    41.7466951475380128
-99026  -117.605396428874585    47.8063824003007767
-50264  -93.7102702364567648    40.9090256178623406
-99132  -118.227317333333318    47.3474053333333345
-57764  -102.758096352941166    43.1798018823529404
-37310  -84.7730446834948879    35.2608452035754851
-48678  -83.888611950000012     44.8505758500000056
-06023  -72.7198448155487114    41.6141940121951279
-50630  -92.2107232461846138    42.9598631868702014
-64644  -93.9799913161742069    39.7302460073171133
-89815  -115.610924641661953    40.7419819919076573
-44644  -81.1833192085895945    40.6795366608682585
-29332  -81.9805312233905568    34.2665390264126941
-05252  -73.0881613481893595    43.0546086095636156
-68982  -99.1306185486936755    40.3558019513064181
-68517  -96.6076893900619638    40.9309599354037843
-59919  -114.039355690078054    48.3470556064660357
-27046  -80.0992129445675118    36.4849306160963494
-44924  -84.6849615454545415    41.928264636363636
-53032  -88.6325378160603634    43.4484101530542404
-60646  -87.7632798077436291    41.9941901683456535
-51103  -96.4351984331595702    42.5088826044088037
-10620  -72.9199910000000102    41.8526328000000021
-20019  -76.9374963909608738    38.8904595495226246
-48616  -84.115064411809044     43.1922979964973095
-70767  -91.2755326289321403    30.4798093474319742
-01096  -72.7728417357359376    42.4085480298298307
-45483  -83.5650955714285857    40.7095372857142905
-24011  -79.9412750000000187    37.2709278668730732
-27820  -77.2427321248745358    36.4127197582971078
-17019  -77.0237358053438044    40.096790169914712
-60653  -87.6110704900357149    41.8187863559018851
-71366  -91.2976265021856648    31.9464512603205222
-78417  -97.4490909600457798    27.7285139646118672
-83757  -110.959303666666685    32.4565429999999964
-32820  -81.1158595515415612    28.5725871138978462
-31636  -83.1635762355286232    30.7058855058327929
-61931  -88.3670986262886373    39.5913616836339415
-16160  -80.3639685474453671    40.9296431824817404
-45504  -83.8505438007418746    39.9431070813559259
-98181  -122.338124499999992    47.611616749999996
-48850  -85.2510869305521339    43.4402166250312831
-62352  -90.6482430000000363    39.5642227035175793
-40114  -86.4099346666666719    37.7043786666666634
-14213  -78.8908737567327876    42.915725967328946
-37308  -84.9944711010257379    35.3439886076599521
-50593  -94.8987624871794822    42.6581295128205298
-44442  -80.554777811550224     40.9653885060790941
-61853  -88.3968285169093377    40.2027001818508154
-47274  -85.920048686123053     38.971819915975928
-01053  -72.7034027059735735    42.3513159557796754
-58231  -97.8227945816992701    48.2075798248365928
-47424  -86.8602181693123896    39.0279477904491188
-67741  -102.016850922839666    39.3687085848766003
-47933  -86.9124874285265179    40.0307245835568466
-45659  -82.622335557183888     38.662413198033633
-29594  -79.5882483613138447    34.6375475218977869
-92139  -117.051016887257134    32.67954883347128
-29432  -80.7988460939173621    33.2337418955415842
-47840  -87.0475359354917373    39.4180237061829857
-55301  -93.6616963691231774    45.2410066606474572
-62859  -88.5341626898659939    38.0861319760170645
-73013  -97.4930067015308879    35.6220646880217302
-44781  -82.6863740000000007    27.849640499999996
-58757  -102.618138387291978    47.7146236096823415
-99137  -118.10972323131449     48.1582510216083008
-04982  -70.42245958264634      45.1293637985865601
-39179  -90.103756693153656     32.8124253620109414
-28110  -80.5526762986454088    35.0482759599632914
-01034  -72.9492319489530558    42.0744687064039624
-24556  -79.404598252717264     37.3767372037036907
-75685  -94.0876315999999946    32.3662499999999937
-50433  -93.0425320230906578    42.929686095914775
-75802  -95.622759333333363     31.9173676388888978
-80104  -104.841756115679743    39.3618635969012161
-32953  -80.7036532376217792    28.4104163854685758
-78650  -97.2235131018002079    30.3026524641571555
-34505  -87.5524078571428532    33.1365014285714281
-83229  -114.249441441176444    45.0834108823529434
-94019  -122.430191018996993    37.4603246408803798
-21523  -79.0749235173745149    39.4782118918918528
-03047  -71.8643333785192624    42.9418822114180827
-41465  -83.0674999501539872    37.750081934506845
-56256  -96.1932431860638246    45.0202028625915887
-58277  -97.8461973957218731    47.6048873636363652
-22044  -77.1568459356102778    38.8574909204926513
-27350  -79.8918969105690309    35.8062554624391183
-29904  -80.7181805499999996    32.4596710499999901
-59871  -113.874728512252162    45.8540977357059418
-73540  -98.5504283809523542    34.4728312130325705
-48667  -84.2409326249999992    43.6098851249999981
-72137  -92.0378600625985399    35.3408245094488436
-38235  -88.5773755437956254    35.9877569452555193
-25530  -82.5634599188530274    38.3694790412253042
-72351  -90.0960612279203161    35.6794277507122928
-65615  -93.2457736894976819    36.6738159269406339
-54979  -88.579569421800926     43.9101530805687261
-38916  -89.3315841466515508    33.830499758842457
-10536  -73.6903592441531288    41.2698844098690074
-85350  -114.690519790832809    32.5934349446786484
-46365  -86.5455510702818742    41.6040866286334179
-66949  -98.1577000519187379    39.6703498374717753
-04843  -69.0839411904104423    44.2185274084182751
-56447  -93.9361487759513949    46.7287143776817331
-55724  -92.4113499059784687    47.1729631670925045
-50227  -93.4504097826087303    42.5916585869565196
-20063  -91.408495666666667     34.4077716666666689
-56688  -93.9308565225763203    47.7356149296149184
-48755  -83.3033271858518418    43.8617824683967754
-30523  -83.5341613878665044    34.6883836225593356
-83468  -113.635497973902801    44.9403386322657283
-59844  -115.982544344656532    48.0531142926399255
-93161  -118.670317374999996    35.8097537499999987
-18625  -75.8497183782235567    41.5121079656160532
-71823  -94.1166438308080586    33.8301235909090536
-23890  -77.1020240682848339    37.0184870327591184
-93203  -118.850478607736662    35.1703230932301523
-98070  -122.467993257726249    47.4171693956709177
-62249  -89.6712241876738858    38.7515820463566243
-63025  -90.6288916081359446    38.4880868285017428
-83032  -75.7769678333333445    43.168638499999993
-58835  -103.446374163440794    47.7807443139784667
-73450  -96.5486597817150738    34.263974353649914
-88029  -107.64373211598749     31.8403400517240946
-22904  -78.5089684966443002    38.0364773557046973
-35058  -86.7409162552859101    34.232862942654684
-71106  -93.7378948227279238    32.4090891801615086
-14486  -77.9188584915730047    42.8902686629213505
-91710  -117.685218197340063    34.013841189790476
-17063  -77.5132531220725554    40.7355892147897762
-32334  -84.7804677170529573    30.3442371227948975
-42503  -84.5696430612739931    37.1273206335456507
-95967  -121.728523846153834    39.2360891538461516
-77026  -95.3322787344063158    29.7945837345502724
-12928  -73.4919836455494959    43.9501215438236841
-29610  -82.4793513749999931    34.9321776250000013
-37926  -76.5757984999999906    36.5482554999999962
-24105  -80.5830267759866246    36.9001831410009018
-60610  -87.6377888179784321    41.9034066076090852
-60194  -88.115171414470197     42.0344498234265984
-49915  -88.6294808008753137    46.0639156849015663
-08014  -75.3509977087628613    39.8050065927835561
-63821  -90.2267670757303364    36.0456439236732038
-43123  -83.0826988426222925    39.8760019323484514
-75567  -94.3182342417848218    33.3414772161882027
-36559  -87.9033304841269967    30.5702778650793547
-72601  -93.0903443785223601    36.24930131292993
-47994  -87.0578767747036011    40.1772150619235475
-15467  -79.910077546012289     39.7870794355828181
-74761  -95.2010388260869576    34.0229186666666763
-12419  -74.1040887154087358    41.8583923647798599
-19602  -75.9182423840716325    40.3306911350949591
-95443  -122.746609870528118    39.0344406609880821
-57716  -102.094667181818167    43.114382681818185
-70374  -90.5146292506569097    29.6296658561733786
-75572  -94.148279239303605     33.1974845210975289
-42254  -87.6547769743150127    36.662148258561686
-48436  -83.8844140838150594    42.8667421252408332
-76010  -97.0847646880144737    32.72196616847976
-49097  -85.5162628315069639    42.1194532523801612
-37462  -82.7697569999999985    36.5127195000000029
-30094  -84.0492892650839281    33.6113669537858399
-68322  -97.556190592356586     40.3356501337579587
-37902  -83.9201796326053682    35.9627228790952103
-23047  -77.5001185690054655    37.8388363332813853
-41302  -83.5669987142857025    37.7465307142857114
-81335  -108.781324287085496    37.5001781867364201
-60402  -87.7902262897620744    41.8389195417715314
-80526  -105.129647717087323    40.5409323046335288
-79405  -101.851578833333335    33.5750310833333288
-33785  -82.8456134953400323    27.8910577861136773
-51033  -95.2506384306829688    42.8847477439073543
-04221  -70.3010444364203408    44.4552490196959482
-17820  -76.4356437195766887    40.9085419808590487
-64830  -94.4169696969696872    37.2358821515151348
-27298  -79.5578895709912786    35.888038968556387
-46324  -87.5042678426081437    41.5838761794546201
-32958  -80.4805832018552962    27.7866428775920582
-07856  -74.637898531938518     40.9212939531937963
-17123  -76.88457864285715      40.2670926428571434
-25628  -81.8565195219124035    37.7559443266932391
-78253  -98.7577360949494647    29.4602807323456979
-24459  -79.2788448179885421    38.0262571026912966
-95360  -121.092747282023367    37.3419691560038842
-61605  -89.6260047017961483    40.6789619433132259
-65720  -92.970013547128957     36.966827911520447
-26750  -79.0546605341505426    39.4768861260945414
-23084  -78.0934334448714083    37.8867643989480243
-44483  -80.8103993533227367    41.2572738542559776
-12017  -73.4643277760759474    42.3154074835885936
-85015  -112.10166399243171     33.5080193242516273
-18104  -75.535936861728544     40.6023521405458396
-24412  -79.8459658985507588    38.05402907246377
-24827  -81.6707581840276902    37.7469559055555308
-48101  -83.2126432081090712    42.2540175599538372
-44031  -85.4052722727272737    38.443450818181816
-35715  -86.559866333333332     34.4255876666666651
-62629  -89.7008524168829666    39.6793412057851
-82647  -106.744541999999996    42.5432969999999955
-78349  -98.2872937760988492    27.3986695144231049
-83420  -111.398274511215973    44.0626593791718761
-11570  -73.6364914112094624    40.6653999592919817
-16939  -77.0079494528925181    41.6845068975206061
-76487  -97.8705167778512646    32.9719124849587928
-69368  -102.916751333333323    42.5108883333333338
-93551  -118.194369001269138    34.6035326002538568
-23487  -76.7223145931182984    36.8471877748989769
-36322  -85.7306164803714381    31.2798840453248381
-61028  -90.187278579535672     42.3110541554874331
-60566  -88.1457263124999884    41.771754187500008
-28782  -82.1871924540471355    35.2279014415846987
-37912  -83.9794529705615247    36.0075602712612906
-54566  -88.6961243202900391    45.4381430107715047
-55772  -93.0887488135593344    48.1117086101695008
-73132  -97.6380201948604451    35.552015139785702
-97239  -122.694825009799246    45.4884750719139817
-83533  -116.241689871559686    46.1135978990825564
-08823  -74.5580688597367782    40.4373835351792721
-29689  -82.8798660140233494    34.5374827154823052
-46033  -86.0883536498123334    39.9764404487101572
-15439  -79.8252954594594968    39.7459142702702692
-63750  -90.1355584036697195    37.1339640183486352
-39665  -90.2176954177484589    31.6438583731413985
-98840  -119.626872696441211    48.35939443428137
-70451  -90.4723989465021532    30.5449407736625531
-31303  -81.2941517400000038    32.4870399306451176
-84248  -111.868681428571421    33.2699397142857123
-16132  -80.4965791070559646    41.0125641484184911
-26907  -81.0547703333333374    37.8592828333333316
-94108  -122.407891445205522    37.7919927043379147
-26331  -80.3042050476190354    39.3308702857142904
-34234  -82.5346886249713094    27.3674067179576177
-67868  -100.694833943004966    37.829281966839396
-07307  -74.0505199940083401    40.7478993115638488
-49946  -88.356738080224531     46.7699870555555819
-78837  -101.170781696236574    29.7601217096774207
-49310  -85.0675281864904633    43.5185300168868707
-78161  -98.0633717720125873    29.2795235880503455
-62877  -89.2093280428041311    38.3854716060794345
-52561  -92.4435654854425053    41.2257379655377392
-65276  -92.9557501309927403    38.8546228304951811
-91210  -118.286840347826086    34.1484895217391369
-12094  -73.4941368318565367    42.8935523868936812
-77534  -95.3331447968667902    29.2233640583468244
-77615  -94.0784628376205632    30.3429656591639905
-40071  -85.3730478948253477    38.056575840060141
-40810  -83.3220867452543104    36.9230077194380684
-88321  -105.460015093841648    34.7286964926686252
-67554  -98.1914676983706016    38.3648414286218795
-21130  -76.2013183924050708    39.4663470126582254
-85365  -114.556759580037394    32.6805439378046572
-19153  -75.2405748776897241    39.9032188816535154
-38463  -87.6340790904562965    35.0613443236999487
-06702  -73.0406315521471896    41.5570457472392789
-12965  -74.6797125930902865    44.7029923186179943
-60482  -87.7919610330189926    41.6892835985324695
-68792  -97.1504661276595272    42.7392733451537268
-10507  -73.6913668914558571    41.2317109497616912
-29102  -80.2151525408006165    33.6472565055298389
-58442  -99.1759150528148297    46.6118820474383995
-68179  -95.9351824999999963    41.2587285000000037
-43330  -83.419249899999997     40.8122088571428492
-15049  -79.8047179565216567    40.5540825008051087
-56075  -94.4365933066666514    43.7350927466666661
-80928  -104.450809804060995    38.6622825627749052
-63840  -89.8843986666666552    36.1913610303030282
-37772  -84.2237973308577921    35.8027074505191578
-33855  -81.356179275689243     27.802352303258143
-28777  -82.0703363909523489    35.9002378357020362
-25205  -81.7740383244837687    38.0299260530973484
-24714  -81.1627372497939774    37.4656098516076312
-99786  -157.857098833333339    67.0891050000000035
-68739  -97.2597964472085721    42.6325397933014116
-54942  -88.5281975172413809    44.3053549310344934
-64433  -94.6861503846154022    40.2445049871794964
-06461  -73.0720356999638341    41.2384404708148011
-54026  -92.5436239331531993    45.2269285034775237
-50860  -94.3574693046874273    40.6205250416666743
-63630  -90.7372534878012971    38.0173999326922356
-61865  -87.8036790339049276    40.3028277419226058
-76519  -97.0776649616970246    31.0046592999411246
-19138  -75.1576012790543757    40.0567939553780334
-80866  -105.167110257966783    39.0654015068285219
-13625  -74.9288208780967437    44.5360749764533779
-37743  -82.8618087127111806    36.0952075644059533
-49849  -87.7110383726086837    46.4778700189128529
-17936  -76.3384617387387436    40.7506619519519333
-35063  -87.0042614864486836    33.8150628502374673
-98641  -124.040675489406794    46.5535210508474933
-54732  -91.180684080552922     45.1468440047663009
-74966  -94.8085864077857821    34.9432404189631498
-72577  -91.7041691037249365    36.0222755054441208
-35808  -86.6443460842541526    34.7001746657458767
-46125  -86.6421350384615323    39.5224331923076946
-59050  -107.371447070895528    45.3096446268656763
-16672  -78.2542301939394207    40.158956054545456
-33172  -80.3609878081048805    25.7857918001589255
-48746  -83.5364139388372706    43.2754048497675399
-45439  -84.2206219731850041    39.6941022801896821
-31503  -82.3700152979356375    31.228309706207277
-95551  -124.219862218114443    40.6586406817005752
-01581  -71.6164818301610637    42.2645579890270255
-92655  -117.984903959867864    33.7342641185080296
-43822  -82.1631972307597351    40.1646598999216096
-66420  -95.9418881666666721    38.9644625000000033
-76306  -98.5244569724527253    33.943365659191528
-55433  -93.3201740851327628    45.1664244678195388
-33780  -82.7174945000000008    27.8767645000000002
-62622  -90.3541749318181786    39.9825737500000074
-47930  -86.7335754791922824    40.2450413739288848
-70558  -92.0747604948453784    30.0996794226803956
-56069  -93.555575961161864     44.4301875502611239
-63538  -92.6685162071005379    39.9610835835798497
-57356  -98.5223572600373529    43.1385937306256153
-32218  -81.6653410556726129    30.4594103933583078
-01531  -72.1283714138843237    42.3190079067980278
-28214  -80.9620922767706475    35.2807502182282064
-74427  -94.9294508552631839    35.701834724547048
-54101  -88.0540730395922111    44.7867203556187903
-36861  -85.8345790552517229    32.8722785334418433
-46301  -86.981044329733038     41.6880494286526115
-42328  -87.0258102331003585    37.4087448149184212
-07620  -73.9298827414246205    40.9515203060685948
-73051  -97.2657544162769057    35.0428021764133177
-85045  -112.096598644163947    33.2998572725552151
-62092  -90.4022777735959409    39.4380083503185261
-20138  -77.6810430723684817    38.6326588421052506
-93730  -119.756339401331317    36.8907204032334377
-44881  -82.8747790857143087    40.8695835142857078
-30021  -84.2385820374648091    33.8101854252262939
-25651  -81.9555769947916986    37.5810700416666847
-13080  -76.4776417413716274    43.0837956086955671
-98647  -123.442345111482055    46.2920710133511122
-10933  -74.5166356572238584    41.3645081643059243
-58638  -102.088890719650607    46.6397876333667512
-11766  -73.0113824523126311    40.9310482485175839
-98267  -121.408493528352437    48.538106544746249
-12485  -74.1436171806140862    42.197780511137843
-32591  -87.2153004999999979    30.4092240000000018
-50625  -92.9914903885541122    42.7540872720883556
-78746  -97.8114381892023346    30.2996007874973685
-33030  -80.4885955455982298    25.4798139293407218
-69813  -98.7987449999999967    42.6096706666666662
-53212  -87.9096469069562971    43.0686294503961662
-83252  -112.342843504344515    42.1925730021720682
-11358  -73.7978121249999788    40.7583302500000002
-04345  -69.7980070489310549    44.2057576248213309
-56178  -96.125570794488155     44.2786237338582751
-64647  -93.9792537670249999    40.0197783500597239
-24851  -81.8315582615384471    37.5885804615384629
-69151  -100.554266074729682    40.9902802043264529
-03052  -71.4535201788669241    42.8449513422665262
-99036  -117.278472263848769    47.5253293997774833
-80527  -105.294082833333334    39.6481263333333303
-73098  -97.164427977368689     34.6386190893746857
-29424  -79.93718145714287      32.7839864571428734
-97503  -122.868245233903636    42.4763771080594665
-61318  -89.082870067333161     41.7058750813334314
-46549  -87.4374680000000097    30.416223249999998
-00731  -66.6171542776332331    18.060818139791941
-28277  -80.8187708433156473    35.0509465639908058
-52220  -91.9970978639455836    41.7311491768707228
-43623  -83.6496548211062816    41.7061757367597039
-88262  -103.39033506349206     33.1437064761904807
-05039  -72.2940683831117781    44.0302850714099137
-41034  -83.8929729420960939    38.7122264850416684
-42518  -84.6295685868644796    36.9395768748853897
-57039  -96.8911400569449341    43.335909748172341
-19543  -75.8935907618116659    40.1673072481349891
-35136  -86.2931852993675506    32.8431001749825171
-83343  -113.451335540983621    42.7034753442622943
-14471  -77.5004766225598729    42.7589588423716407
-84071  -112.372752406233317    40.4369627721655078
-70759  -91.6000604532578819    30.7263550609065135
-14413  -76.9789138571428566    43.2119115714285726
-00721  -65.7716755699999851    18.3702049000000045
-38472  -87.0422908606079062    35.3779445265359485
-99258  -117.406146333333325    47.6671526666666736
-25421  -78.1641029344978051    39.3793901659388652
-40006  -85.3196544337384779    38.5978686599342069
-43524  -84.0368057635725876    41.2270185748685378
-62032  -89.2830251584414327    39.1154442141414975
-56382  -94.6049414203699399    45.9065549865389144
-12852  -74.1472400198530011    43.966418351470594
-15938  -78.6233228757073164    40.4262819412934888
-32411  -85.6148855555555741    30.0760398888888929
-87184  -106.610914576923065    35.1341209230769209
-65659  -93.30115985416667      37.7374498333333364
-16917  -77.0746763976031133    41.7425101448801286
-98406  -122.504258074019063    47.2631862834399286
-03859  -71.0616878275862121    42.8662385862068973
-40979  -83.5089893538461467    37.0275259948717803
-23093  -78.0350448715278162    38.0001862406943189
-54622  -91.8533869329445452    44.2313202142857449
-31535  -82.8643347585779679    31.4660698349887404
-51234  -96.0118304686668864    43.196185176604601
-27157  -80.2711501999999939    36.0892891999999961
-41619  -82.7493734642856111    37.4836260229591929
-90745  -118.267481973038016    33.8222030245753515
-61724  -88.5580258115798955    40.3531800019627482
-22624  -78.0941850052909956    39.267198481684872
-98528  -122.889184514923087    47.4341346230523442
-75152  -96.6851704557844158    32.4427707516657691
-98538  -123.135848708950803    46.522189883224641
-24508  -79.8524725757575737    39.5599033636363657
-25403  -77.9996731799683687    39.4842173671088901
-46205  -86.1330597491015197    39.8278211020277197
-15455  -79.6524264028777083    39.9929750647482365
-33877  -81.6142501265822062    27.9826764113923971
-40867  -83.368032023255779     36.7075300232558206
-57650  -103.085692097561022    45.7788741219512048
-44809  -83.2832455877862117    41.1327716564885506
-53076  -88.2282384644572772    43.2679229413102462
-59634  -111.981692426151994    46.4958644267131191
-48032  -82.5945385355451123    43.1331862769125891
-72688  -92.6932197619047713    36.1401292857142877
-26444  -79.7648897034421083    39.3694291870583513
-17934  -76.2123347849589408    40.7991484007050715
-49320  -85.2944710821918619    43.7505906849315096
-03097  -70.5981634999999983    43.2687614999999965
-66546  -95.7237424637627612    38.894813900925179
-68430  -96.668065544697356     40.6645788961686563
-77088  -95.4535478116986837    29.8823932937353938
-12151  -73.7892923800474989    42.9285823800475086
-58374  -99.0400106353036591    47.8176151141701524
-90301  -118.357197986271501    33.9570304605304116
-78641  -97.8754832706267592    30.5543982690473754
-84345  -109.155666699999983    37.1965965000000054
-49063  -86.2036494150943327    42.3960594528301868
-56519  -96.5063935702479938    47.1453512796143315
-25183  -81.8293270495049541    37.9139430099009687
-62556  -89.3953177504780712    39.4731586118546076
-26030  -80.6499964285714555    40.2235695329670264
-90240  -118.117898862552906    33.9564133615503252
-84122  -111.632265142857136    40.7445941714285738
-25523  -82.0718011999393156    38.2753448634709343
-51242  -96.332266610038559     43.4379273861003909
-42002  -88.5996862500000049    37.0515940000000015
-98238  -122.220062577235765    48.1357130650406404
-52003  -90.6826804048303359    42.4547923796439832
-19070  -75.3237026427130161    39.9066240908356633
-40025  -85.6480426493055944    38.3019750555555518
-51340  -95.1555392564102931    43.2412028461538469
-54435  -89.4185280806451601    45.4444174677419355
-05077  -72.4790895155261268    43.8988969870844628
-26164  -81.7303350601721235    38.9784582626487506
-93630  -120.076929045884299    36.7378066789350157
-92336  -117.464583623022193    34.1281978218322877
-06480  -72.6017285686739626    41.58938709331116
-33192  -80.365555999999998     25.8042890000000007
-02637  -70.2731153277108405    41.7051504915662434
-71440  -92.551840563829785     31.9385462978723247
-63353  -91.0896108767483526    39.4355303652471818
-18079  -75.6572862166666766    40.7439744249999976
-81812  -105.227451277777789    38.5648219444444464
-51333  -95.0044577209846892    43.1520361570926241
-56160  -94.7734708088804041    43.842611888030909
-64221  -94.9773198999999977    39.920690300000004
-12788  -74.5963194582942748    41.7958375732800178
-28103  -80.3576172634741397    35.0002621416882818
-87100  -106.644822500000004    35.1087689999999952
-41826  -82.9211771787021519    37.1711608628951922
-62901  -89.2190736745550765    37.7258686768090996
-33556  -82.5889504792957752    28.1405379666293634
-27944  -76.4067599014321672    36.1600137777899278
-31716  -84.1207312841502812    31.3686780875840903
-59743  -112.709405579235082    45.6329131657559017
-49786  -84.4523783750000092    46.2550283750000091
-44503  -80.6496452106060815    41.0999508090909274
-14041  -78.9756361925465598    42.4174243354037515
-64832  -94.5796226604570904    37.333117189669828
-56329  -93.9085759067380081    45.6930644900341534
-23952  -78.2802794163822568    36.9251262457337504
-39464  -89.0745269980705956    31.4814134069072473
-77837  -96.6697623008252691    30.9988472580645364
-44313  -81.5686999142811402    41.1249461478861136
-85205  -111.714494792675069    33.4335585765570116
-03923  -70.779711500000019     43.1072841249999996
-59241  -107.037148410120068    48.4546555046604226
-73022  -97.9924797499999869    35.6146521250000063
-66535  -96.4289563041521518    39.2332330433747103
-10040  -73.9296654612737001    40.8583821118761037
-28805  -82.4899085145653288    35.6050536390082684
-78357  -98.5981862758423659    27.8855312924043623
-22805  -77.3902764999999988    37.2128665000000041
-27549  -78.2525013489204042    36.0912024875259263
-78954  -96.7001557121451469    30.0501770780757234
-53537  -89.2090179559748435    42.6697176226415209
-54819  -91.2720453648293244    45.4610555354331467
-59028  -109.657217331365374    45.4162155228782751
-14037  -78.4557150896862368    42.8146450832799133
-54303  -88.0502507190371659    44.5329818107972315
-12824  -73.6999724855354827    43.5158295790982166
-59522  -110.993702956912244    48.5749211508078815
-13671  -75.6371254999999962    44.2877085000000008
-73835  -99.2299215329669977    35.9889466923076711
-92385  -117.181144505694846    34.2392022517083845
-03911  -70.6371798058510763    43.1350333058510813
-11579  -73.6447488367345358    40.8456412520171099
-13119  -76.4444631643835351    42.9762853287671192
-49032  -85.5087253083111705    41.9208917667560073
-72764  -94.0752748056440424    36.1782318090681443
-55075  -93.0464686178898575    44.8899405322160874
-36314  -85.7718268921329354    31.019606895377148
-01541  -71.8836987288534317    42.4528407049448191
-42078  -88.270594428828133     37.2833017650282699
-21250  -76.7140549615384657    39.2590849230769194
-60964  -87.7298318623358853    41.0575148279647593
-56465  -94.1213261712093754    46.5273410511300369
-20103  -77.4522569999999888    38.9960235714285659
-01843  -71.163096907600476     42.6887336773473152
-62511  -89.7465950000000134    39.3316001666666679
-79783  -101.964571875621928    32.3310516865671431
-51249  -95.7249317279169816    43.404400070337978
-29080  -80.0813222582657573    34.0149586350058186
-04680  -67.9412270056059953    44.4919136862555291
-30818  -82.3226334718445685    33.2533921294497361
-62362  -90.7466885862069006    39.8042762440318114
-18821  -75.7401770709939655    41.9799535922920199
-24079  -80.1460305503992316    37.0649654824907415
-16037  -80.1256286429453723    40.8455036879210311
-45361  -84.4178775714285763    39.9638433571428635
-78547  -98.6912482671755669    26.319366213740448
-66006  -95.2213382966911013    38.7974574580017944
-17051  -77.7724455524839868    40.4685419087470137
-51041  -96.0660966132315224    43.0163088749788187
-71280  -92.0773430085448013    32.70204751538094
-19450  -75.4093406956521903    40.2610419565217441
-97005  -122.804393958067422    45.4920240409687437
-49715  -84.6550066567252486    46.4195038186845821
-44030  -80.5857825503051401    41.920898316964383
-24504  -79.0782641801820887    37.3729954585160087
-62983  -89.1121214921815437    37.8972923574087446
-38824  -88.630352523651581     34.5156051151113132
-75223  -96.7487060993976655    32.7921449033407058
-27934  -81.1889746666666525    35.3344192500000034
-45210  -84.510694249999986     39.1108673965517397
-76957  -100.217316023715298    31.3600411936758654
-03263  -71.3165075936963433    43.2960064898607015
-20743  -76.9022873176586899    38.8861554845502866
-85424  -109.730176     34.3696654999999964
-60974  -87.7312189440559962    40.713834006993018
-73599  -98.9485486666666674    34.6995850000000061
-76348  -98.2609103333333422    33.3503969999999939
-07444  -74.3034049268703001    40.9665192986831457
-44685  -81.4205090247130983    40.9638150841808297
-83832  -116.932006855544984    46.5489096587448969
-72181  -92.4507581645569303    35.1762644388185706
-06338  -71.980038091836704     41.4592682142857143
-71002  -93.1153882184036519    32.1215083713969207
-03086  -71.7662135528476881    42.8336248892836409
-96064  -122.392400807033539    41.7277058666816814
-98530  -122.868894394578362    46.7986713162650787
-15627  -79.3143577897258183    40.3459087631420132
-98326  -124.357688192123547    48.200762633315712
-56249  -95.8954321776408705    45.3212971536350864
-76822  -99.9610555000000005    31.7233170000000015
-50144  -93.741383344705369     40.734504979257629
-92093  -117.233092253968294    32.8797234603174573
-36374  -85.5045830269687883    31.5782926037397118
-17854  -77.0411142500000068    40.7216329999999971
-33319  -80.226018082497319     26.1838057594761047
-61031  -89.311569353789082     41.8380832046951099
-18341  -75.2098284047619074    41.2358433809523817
-68330  -97.3562481369862525    40.7168824109589096
-29709  -80.098150578906484     34.7230908354713819
-77384  -95.4998143249645892    30.2300160151852459
-36271  -86.0112153062260631    33.7921537139419854
-41626  -82.6291703157894801    37.6532533684210478
-40212  -85.8020586879620453    38.2654573194296788
-49012  -85.3456545412415863    42.3650261748761423
-95815  -121.444295680591068    38.6121990120336847
-36773  -87.3879527681161221    32.2899734055236891
-27879  -77.2791795821918157    35.5744063082191673
-46032  -86.1663292500000892    39.9710034628205619
-68456  -97.3142400179752087    40.9181510190324644
-35149  -86.2027110728813568    33.2585902898305292
-95326  -120.862411704175884    37.5973240923076943
-17837  -76.9245420648724547    40.969957823654596
-90073  -118.457038499999996    34.054013249999997
-80651  -104.827524149818487    40.2366303658205453
-15112  -79.8386510753993548    40.4046691373801323
-92619  -117.766061750000006    33.6691767500000054
-49765  -84.2245225220222409    45.3513311003412269
-45358  -84.4713936402439032    39.9771756646341458
-81504  -108.486894556140399    39.0833220378888555
-67669  -99.3447534862913386    39.4534863100791497
-96088  -121.870890399063228    40.5124117229717697
-55085  -92.9670073870967713    44.6742695591397734
-00983  -65.977743455882333     18.4189215196078386
-24603  -82.1843509325369155    37.3638898780745166
-52341  -91.728581516060089     42.1028224568165896
-02191  -70.9439147033996846    42.2433693097889673
-28746  -82.1786999934534919    35.4512613644544032
-80132  -104.847104333643955    39.0985183690285893
-17864  -76.9040799328195988    40.7012792595713222
-71667  -91.8499845865797937    33.9301269632397506
-63859  -90.0296529999999962    36.2747113333333289
-06405  -72.8051302996272369    41.2807326933152581
-46819  -85.1458335044983841    40.9985022350883597
-64867  -94.2335550369270436    36.7169886393687008
-07631  -73.9740332869474031    40.8926902446316092
-13029  -76.1349229925718589    43.2244250932375564
-32217  -81.6177377325800819    30.2390501571158339
-10462  -73.8580813107797383    40.8426624392202697
-40007  -85.0060933261364511    38.4485364477272782
-48028  -82.5934632049847721    42.5833203067140857
-24646  -82.0350996698166881    37.1267093078464328
-94508  -122.448409275934509    38.574184260687538
-96734  -157.741317706758508    21.3933033238287358
-61423  -90.5072892911447013    40.8920671779964167
-47354  -85.201627301582576     40.0426362468046406
-43556  -84.5597294502024681    41.3057362658569716
-62034  -89.9683972353479504    38.7607555253884613
-26610  -80.7464217691408379    38.5001098320311854
-03905  -70.6911007699042528    43.0924273889120926
-25978  -80.9370243641509006    37.6335661113207607
-15459  -79.4661703916470969    39.7521360811662916
-16637  -78.4566968027619396    40.3468681539701208
-28357  -79.07279344620882      34.9003146033396803
-18457  -75.0550637594936205    41.4700145316455533
-33928  -81.7861398021295116    26.4332193706119583
-04047  -70.8982934014100437    43.7407944170744685
-31903  -84.9454787405582721    32.4240919598613928
-49451  -85.9600309617664919    43.2044992142386945
-15486  -79.6979368685690019    40.0259004950280968
-62869  -88.2909539159277301    37.9656660947454085
-38922  -89.6567132860493956    33.9538776265971265
-62547  -89.2508127207489252    39.7677852501299753
-24340  -81.7690061872525291    36.7587412940907754
-50244  -93.6745866068564368    41.8742237410649665
-50127  -93.205131303571406     41.7781369999999939
-30987  -84.1232454999999959    33.815321499999996
-58744  -100.663305890214886    48.1114043579952266
-93201  -119.481316916201123    35.8861732718808071
-33337  -80.260180826086966     26.1279331739130534
-07051  -74.2350679999999983    40.7566839999999999
-77048  -95.3355722696596075    29.6289925755102495
-93660  -120.186255571428731    36.6016772705810496
-87412  -107.788151709527057    36.7339520646235371
-84013  -112.096450795161431    40.3032908209677387
-61413  -90.3719022033463091    41.1925624478765471
-36436  -87.6807126920245139    31.7648786601227258
-84659  -112.663403758620674    37.7143903103448253
-15861  -78.07550612355206      41.3266365399889253
-39352  -88.489141814833161     32.6518192470530479
-50266  -93.793253407971207     41.5750678661164557
-21562  -79.0313715477549863    39.4888887708844152
-10979  -74.3165307185185355    41.2011165333333267
-16748  -78.1689107055979377    41.9502633561189029
-75568  -94.624994200435026     33.1846445234526257
-84630  -111.860011506451613    39.2288338483870902
-07930  -74.6820888180245959    40.7838521336323581
-05441  -72.7825066525323194    44.7826152020023969
-26361  -80.3172232500000405    39.3687814761904775
-65727  -93.2978920413792139    37.768409970114952
-80720  -103.201493146345058    40.1006510441766935
-19946  -75.4654488171674274    39.0332790185979945
-53050  -88.5489774597760118    43.4988729745417544
-44512  -80.6658088756900327    41.0285782014244944
-01936  -70.8596170499999971    42.6317195000000027
-75443  -96.0993682400000182    33.4682851199999973
-38639  -90.4503694444444761    34.3183500024691241
-63111  -90.2525272194316983    38.5587825825112844
-64633  -93.4848876034996152    39.3683088590124797
-22302  -77.0822353221988834    38.8276798793783655
-66010  -94.9783518616726212    38.0959133432422021
-48445  -83.0089970020518706    43.9535267879617564
-43054  -82.8155391265596563    40.0805954977797398
-99008  -117.907161519523967    47.512430430457492
-94002  -122.295759171987001    37.5165503629016683
-65286  -93.2000613693181492    39.5010765397727326
-57344  -98.6101553382856508    43.4379834807619218
-28433  -78.6361795563156818    34.4843568005718311
-44804  -83.533640506898962     41.1119598641975301
-72536  -91.7688808232143884    36.16099757857139
-30243  -84.3881469999999894    33.7051548000000025
-45202  -84.5072785557686359    39.1091955221731311
-50585  -95.1424349663094517    42.8932705715161404
-16244  -79.2820446699999906    40.795325990000002
-28327  -79.4033014914630115    35.3280610379642823
-30139  -84.6958207312802642    34.4364667498069181
-97435  -123.33566097220546     43.6946088712342018
-21202  -76.6073844897504443    39.2976679030748457
-84326  -111.819575930624453    41.6824464340931797
-79760  -102.376455749999991    31.8031859999999966
-72164  -92.2430247352941137    34.6864691176470501
-24934  -79.9118362240185718    38.3346356050808694
-32778  -81.7321940115121777    28.790483594237255
-52212  -91.1003779915581049    42.1094642409823834
-01081  -72.2284047026900851    42.0619817876356308
-28092  -81.2387669802731978    35.4799752499738261
-18510  -75.6458353469346179    41.4082122179021113
-75972  -94.1409880331728033    31.5027297527969239
-80723  -103.607499974042582    40.222524628723427
-04068  -70.9285517221158699    43.8343730135319234
-24821  -81.6770662666666283    37.3374278249999918
-55952  -91.8485050607286979    43.950386374677997
-58059  -97.1011409920107269    46.8523171318243783
-50028  -93.1599537251551908    41.8143005874741647
-84660  -111.647465409247246    40.1013214561930411
-83852  -116.538233217155224    48.308272109663406
-68380  -96.3907564917355728    40.2203900206611493
-97741  -121.129934644561388    44.6467578425202163
-61542  -90.1483218780513056    40.3991866529154677
-97869  -118.677886359791003    44.4542453802281159
-74872  -96.9317029965089318    34.8037805523660779
-30150  -85.1660182499999934    33.6595864999999961
-42130  -85.7769539280185995    36.9225268978328671
-78251  -98.6731735130197478    29.4616910128825502
-30079  -84.258339479233257     33.791530049201242
-04864  -69.2482680658315246    44.1292604810660052
-76541  -97.7280606801950995    31.1161084221848405
-68452  -97.8406839708028997    40.4013538540145944
-30513  -84.3364645592419038    34.8563914735346074
-96133  -119.520730549999968    38.6310253812499838
-77803  -96.3765394571941414    30.6794051832395134
-46226  -86.0546391468279808    39.8401904210905471
-45432  -84.0883519418048451    39.7405012630805103
-70569  -91.7772761111111208    29.9410290000000003
-16921  -77.5493013458030589    41.6947577883864753
-95864  -121.376891059366116    38.5867577758138438
-97211  -122.646204538858129    45.5682953189740445
-85381  -112.230724915189981    33.6095645231354112
-81527  -108.460949886909759    38.90348893086
-63453  -91.8818291333333406    40.4553680666666722
-91905  -116.31522380191781     32.6781395707875291
-95345  -119.956952170508075    37.5704450218676484
-92116  -117.121870725062891    32.7636051237707662
-47040  -84.9345111995734214    38.9255447167721371
-65612  -93.5394247620560577    37.2222104737678379
-83246  -112.039043917988479    42.5994341828794489
-91931  -116.554091806306317    32.8478648468468322
-64061  -94.0809004342247164    38.8040995813903606
-33444  -80.0793100437310414    26.4569910816441904
-92861  -117.80938254575463     33.8184334570754004
-58562  -102.017434039748082    46.2453930998543683
-32604  -82.1798942999999866    29.6155745999999951
-14524  -79.4712586666666709    40.3617829999999955
-60053  -87.7908189189473092    42.0427445439618737
-32667  -82.2933917114235385    29.4892158680140497
-97751  -119.824912663885598    44.1435953504171437
-97447  -122.881469110540706    43.3185893924324077
-37044  -87.3572065454545594    36.5180625454545407
-03060  -71.4631464918643218    42.7470100418584309
-93450  -120.875520120481966    36.0059601686746902
-06877  -73.4996557760888862    41.3019822897828703
-55981  -92.0417819134002144    44.3670665040016203
-79505  -99.7880508218029121    33.5820613249475741
-72631  -93.7771058340211994    36.452887412079626
-78754  -97.6422023079166195    30.3537357952083653
-03442  -71.9098902841966066    43.010883814962547
-74421  -96.0459528519265859    35.7619140494767791
-50633  -93.1201876216988325    42.6686475053532561
-57752  -102.146570687500002    43.4173527343749939
-50649  -92.9140114117647045    42.6626626764705961
-18056  -75.5514465881104798    40.4510171167728032
-05342  -72.7988154537736989    42.7787958954227534
-99033  -117.096280562499928    47.2324043760964898
-28617  -81.3822417523319928    36.4875407323943222
-17551  -76.3686216345125501    39.9884394302403905
-36728  -87.5915352738371809    32.1784102261627325
-85192  -110.689397586677558    32.9147512263136406
-37619  -82.3910094999999956    36.5713730000000012
-76821  -99.9570298873350822    31.7402224337505814
-55073  -92.831712818529752     45.2714610074522597
-84034  -113.999254931451674    39.9326855887096812
-87933  -107.265309086956492    32.7643115652173833
-88021  -106.62496975796067     31.9975321711644369
-02655  -70.3862955120240201    41.6347145801878114
-35503  -87.3003951167777785    33.9304409743703204
-88126  -103.335496969538013    33.8476298897058925
-16110  -80.3800809974059831    41.4983436913099837
-53118  -88.4782856032504554    43.0120444913957769
-38852  -88.2103997920962826    34.839086125874914
-66861  -97.0157322312066412    38.3521673101704366
-12865  -73.3407511468892039    43.2101619123292622
-24077  -79.9045271432038788    37.3707350509708434
-53122  -88.086569620890387     43.0484833169846013
-99610  -151.282015028524711    60.3255214889419307
-94597  -122.071938967467617    37.9188566324735703
-18881  -99.4711994999999973    29.3150800000000018
-18860  -75.3626182857142766    41.0138822142857151
-45351  -84.4950022879999807    40.3401483920000103
-26058  -80.6732857777777781    40.1846824444444479
-64420  -94.2889548666666713    40.4851699333333244
-15472  -79.7159218270676746    39.9189374661653957
-18245  -76.034411270676685     40.8505502556391065
-78305  -98.2639938333333447    26.3257080000000023
-49073  -85.1205296201192283    42.5845292947396601
-13618  -76.2955076480807577    44.121860547772485
-41669  -82.7180786926286089    37.3348063296244561
-52163  -92.0925980343137098    43.2170601421568463
-89019  -115.609375463318386    35.8125288194825444
-49201  -84.3814828467642286    42.2436640797719463
-55629  -92.7027488333333167    43.7190391666666685
-24599  -78.7182289999997806    37.6219366597736098
-27293  -80.2766964137931183    35.7792568620689693
-77702  -94.1273075541706987    30.0865394650048259
-72650  -92.6196782278625079    35.9135302549520503
-39632  -90.4750529523809348    31.0580795238095284
-27410  -79.8845886928566529    36.1144547696531717
-76268  -96.7578248256880613    33.6261071834862335
-46543  -85.6773169463525335    41.5301714910588515
-29223  -80.9207584402507081    34.0933942798009184
-14905  -76.8414217589448185    42.0878465222263074
-18212  -75.710727568292711     40.7733504341463515
-29938  -80.8132605806451778    32.1347563548387143
-75688  -94.2327051607142749    32.5413985535714403
-04928  -69.2534461555315346    44.9462439810657912
-44666  -81.6239681161740975    40.8417369901478438
-87550  -105.611293399999994    36.375365599999995
-15780  -79.0459226086956619    40.9177466739130509
-29321  -81.7127936567247559    34.7223743012568278
-04285  -70.4377122048851021    44.7031663163792459
-11749  -73.1707824742968       40.8054825499514635
-02192  -71.236471333333327     42.2801709999999957
-78401  -97.4136198605132648    27.7890853089817114
-90786  -158.000415500000003    21.5028195000000011
-62957  -89.4367340641711337    37.3123236325439152
-76366  -98.7321326079267578    33.7508676445121552
-55991  -92.4294157530380005    44.2450925762445308
-14141  -78.6996587734259521    42.5161423314423175
-97366  -124.059627727500086    44.5723655128571323
-70065  -90.2538808483269435    30.026210021187147
-02210  -71.04336447520663      42.3481014876032447
-48203  -83.1032421541981279    42.4220254648072981
-08730  -74.0650245301387145    40.1064625746910721
-82841  -109.898736199999988    42.8973534000000001
-15145  -79.823440342361792     40.4139490237585761
-43074  -82.846607272566402     40.2678597611661431
-47355  -84.9292762043224201    40.0398621155860965
-97212  -122.642201669101226    45.5441314999999349
-24870  -81.6090589066003673    37.6998156880447581
-50430  -93.944461763493365     42.980103887181464
-65087  -92.8144209534883657    38.2712677906976708
-71225  -92.3394937449406683    32.5122996959807011
-11021  -73.7286330269612193    40.786959846850614
-75476  -96.2281812238656755    33.700324449950692
-69724  -97.8750990000000058    42.6082804999999993
-68624  -97.2375615848157508    41.3413214250316727
-43441  -83.4583483333333334    41.5263718333333358
-73716  -98.5336050928383287    36.5128279867374061
-12222  -73.9612214117647113    42.910622411764713
-54928  -88.8900848999999909    44.7200365000000062
-68028  -96.2479060284253762    41.1322479143888202
-71860  -93.4864099905008885    33.3295929504893493
-22729  -78.0148931591737522    38.3682896075334128
-24176  -79.6897773282481552    37.0232722069086222
-65610  -93.5274422055727257    37.0474130323736901
-14769  -79.474156698189077     42.3786102203219599
-47980  -86.8967333652845326    40.7500509322075644
-43724  -81.5048738670270723    39.7364700873532399
-97124  -122.949363706453752    45.5458707349572407
-18261  -75.9088276666666673    40.9301461666666668
-66538  -96.0578487870612605    39.8405848239916196
-71479  -92.3669683154662664    31.8368574226689205
-68765  -97.6107771894272958    42.3460784211453856
-18436  -75.375737155908638     41.4299130676510003
-30511  -83.4911262227279565    34.4621855214686477
-13082  -75.9562887803093929    43.0988361999139826
-84624  -112.604400749699977    39.365429334133907
-37333  -84.3225236888631144    35.1465516012461521
-62974  -88.8052863598628051    37.7870053241852659
-49039  -86.3727238333333247    42.2210693333333396
-59003  -106.205890867584714    45.5322858283897816
-72066  -91.7360220408163087    34.8981875102040888
-02657  -70.1686406667847251    42.0458008426090544
-21676  -76.2984299199029152    38.7892745582524228
-23691  -76.520741297297306     37.2266092342342318
-75673  -94.3627968823529386    32.1382503529411778
-98276  -122.321057431599215    48.9263817533719134
-48415  -83.7957602561502171    43.2666208917067721
-81062  -103.956979452767513    38.2521755909279193
-54615  -90.8417814084582744    44.2842138859741752
-94612  -122.269520992153176    37.809135885788983
-13310  -75.5702284692503241    42.8872359856781813
-28701  -82.6369489469124829    35.7020424046094291
-74829  -96.4837550090908422    35.5013164204545504
-94925  -122.516882143699149    37.9221691980470581
-68838  -98.6600980532340515    41.2165492409845058
-75431  -95.4670609454143744    33.0181886746987701
-73014  -98.1525059748547761    35.5770682817536894
-77039  -95.3369051358531294    29.9088202943230286
-54619  -90.7803328250938364    43.768177142283534
-67227  -97.4918715770833728    37.6292983708332969
-63438  -91.6893533569923136    39.9627899107519511
-74852  -97.0323969317916806    35.1350362653860913
-12510  -73.7603996666666859    41.6724539333333368
-08044  -74.8841469999999987    39.6036830000000037
-77060  -95.3961093454107782    29.9277933162055021
-51049  -95.6612643826219511    42.6321459664634048
-21230  -76.6272379671257937    39.2690295388910471
-45854  -83.9495691896551648    40.7583377206896813
-95380  -120.849128838395274    37.4860542805944519
-50315  -93.6197700618499766    41.5473154442944548
-15737  -78.7523108152173705    40.6081111413043416
-53218  -87.9950270666523693    43.1123416041510765
-63115  -90.2399649739347467    38.6761602673135982
-54651  -90.557134257046684     43.7441802452671595
-93905  -121.612721548036987    36.6836759391955525
-30555  -84.4020107311543626    34.976602954313833
-93928  -121.239187590909069    36.0343040681818181
-34669  -82.6199078176319404    28.3511051548179083
-12751  -74.6685135693950599    41.6840406761566626
-30360  -84.2739048126926775    33.9367174276621455
-49684  -85.6779685500029018    44.7818596151848283
-49943  -88.7706296842105189    46.3524117631579102
-23324  -76.2687189626266644    36.8033987369891946
-66047  -95.3056165449395536    38.919790520252441
-29609  -82.3906819716978447    34.9041714417643618
-92304  -116.153396805941753    34.4618405537294592
-31982  -82.932179000000005     32.9719146666666632
-58457  -109.12809255999997     47.0598405199999945
-32047  -81.9932627500000137    30.7742992499999986
-06801  -73.3970651633931368    41.3797173478098514
-74541  -95.5943142000000137    34.8118940000000023
-77975  -97.0868936538642373    29.5663436551341867
-32567  -86.4609737277919663    30.9314494706862249
-42371  -87.2898017220085762    37.5021663196455037
-92261  -116.418264103448266    33.6585187931034469
-60025  -87.8140947036035868    42.0737822833870183
-89122  -115.044556620005082    36.1096723183449342
-26341  -80.591745064516104     39.0027239838709789
-13865  -75.6430766589196679    42.0623439870711664
-25868  -80.9668669383013508    38.0803842732371365
-60017  -88.3063444999999945    42.4728759999999994
-41718  -85.4164134000000246    37.4739184000000023
-38951  -89.3031048967565511    33.9675260315212739
-50001  -93.4356140014430565    41.3622148737374147
-98037  -122.289270967946123    47.839283798263196
-54001  -92.3880042495044904    45.3250419233987358
-33827  -81.5351388608371792    27.8354708860837938
-48237  -83.1820453731764928    42.4670370947093119
-87562  -105.675262596273257    35.492306878881962
-24165  -80.0425315976048068    36.5909135414730216
-44906  -82.5697299677258911    40.7607069355523493
-04085  -70.6350017573817439    43.7655645167322831
-39157  -90.1459912619152561    32.4218094246481243
-79033  -100.967230450000017    36.3156413999999899
-56253  -94.8853117294252826    44.9605339723787978
-03064  -71.4743830895855723    42.7760654992200955
-01562  -71.9889633563301885    42.2467468888074791
-82412  -108.51486487528868     44.7954987598152243
-32455  -85.9612730516354304    30.6982256922676839
-68376  -95.9429343306079119    40.1690424557996977
-34610  -82.5366213214818885    28.3831757914550842
-73372  -98.5721741666666702    35.7251378333333278
-37705  -84.0099304891685534    36.2216494583418083
-95465  -122.983498461479982    38.4047739433217643
-55315  -93.6648828596445497    44.7353013012312957
-28579  -76.5174915263974924    34.7630479673912731
-15211  -80.0129213473472163    40.4294963523524302
-54520  -88.9120191854666189    45.5369881211546996
-36084  -85.4257989122807118    32.2730106491227957
-46172  -86.8179024540867914    39.8283396220988593
-12456  -74.148070622047257     42.0793981496062983
-98278  -122.677732823529425    48.3376625882352968
-03785  -71.9613350836666541    44.1218666640001445
-29704  -80.9318338604267069    34.8326017567049959
-46183  -86.282315883333311     39.6537368833333588
-65537  -92.7002315714285743    37.9049289999999957
-08322  -75.0466833718320174    39.6151742249952932
-91778  -118.107521533333326    34.0969239999999942
-61314  -89.6760871346983777    41.3114760298132282
-36301  -85.3999141481702821    31.1743541747003441
-38015  -89.8136687966306368    35.5499511873816729
-04662  -68.2916815507086312    44.2971349591059038
-92467  -90.6705704999999966    35.8414484999999985
-28402  -77.9220261578947486    34.2595372368420996
-33854  -81.4103654758620507    27.8564527310344836
-46974  -85.9319179458369149    40.9462028728738829
-01109  -72.5477609149907323    42.1172958869359064
-87549  -106.073277328204995    36.2153186730769292
-54247  -87.7922835950460865    44.188765507609773
-72835  -93.3469961663579255    35.2936602867728624
-63855  -90.0851183843284673    36.0523436119403158
-67464  -97.9179504945653179    38.5883878947629171
-96029  -122.455521131790746    39.9584794175050604
-33922  -82.1360095917132469    26.6604129385475339
-75631  -94.4482400437080827    32.2460889333197898
-60007  -88.0065740097417262    42.0063706444764193
-80101  -104.09389574231372     39.416317647249187
-18843  -75.8798738787878904    41.793113696969705
-32614  -82.4036581428571537    29.494295285714287
-55780  -92.6947799793005061    46.6917642019985664
-50707  -92.2804868063325472    42.4753155551799964
-94609  -122.263338393814664    37.835888835824754
-31771  -83.6563938148272541    31.2465833505415915
-04773  -68.2355938181817976    47.2451752610121289
-37614  -82.364527808219151     36.3012752876712383
-22037  -77.2270525263157879    38.8614879473684312
-99198  -117.775331000000008    48.1833734000000007
-90241  -118.130754708360641    33.940691143206962
-47865  -87.3895903829786818    39.0461513723404252
-59405  -111.26137086249129     47.443589543066544
-73702  -97.8898555000000101    36.3741190000000003
-97344  -123.442591845436297    44.8666644783477153
-76110  -97.3383632538544106    32.7074915446789518
-63551  -92.7371699357799315    40.4885385963302724
-68429  -97.3400965833333203    40.0569439736842128
-13491  -75.174323508668607     42.8626189255607315
-06334  -72.1725524377653187    41.5424322291371837
-43109  -82.8307568529411782    39.9167977941176417
-38503  -85.5057809999999989    36.1633824999999973
-56482  -95.1300736577009474    46.4521386531735345
-14867  -76.5983283889704012    42.3532807171033525
-15466  -79.8962771941392305    40.0758049267399201
-25641  -81.8102055000000092    37.092777500000004
-25309  -81.7441661838850138    38.3202040481202246
-94105  -122.395583733443829    37.788909541390737
-33491  -80.0752381666666508    26.7102186666666661
-67961  -101.353041500000003    38.4819894999999974
-41236  -82.7717489999999998    37.9028940000000034
-24597  -79.1099614004986762    36.7856237332977329
-43028  -82.3166172104025833    40.4206281742819087
-30329  -84.3230051976023844    33.8250081554362083
-05856  -69.126467571428563     44.1805612857142833
-29598  -78.8349864999999994    33.746975291666665
-33558  -82.5155949912983715    28.1564497136881968
-13065  -76.8145057391304391    42.8156987391304327
-16204  -79.5441355000000101    40.8839112500000041
-77706  -94.1658634284612219    30.0950091867098095
-01072  -72.426356751533703     42.4680811775307134
-87302  -108.761784999999989    35.3658107500000014
-57461  -98.4251797737540386    45.1523257508306202
-44005  -80.7429755     41.8802400000000006
-38076  -89.4272648376337429    35.1436954348647461
-12781  -74.4627002972972747    41.6262236756756892
-57450  -99.8307947824822719    45.2542205616436419
-83842  -116.58366241736249     47.460476696160292
-05773  -73.002082209389684     43.4487421552432735
-90034  -118.398651785476517    34.0324174676552715
-15701  -79.1625175106777448    40.6308607126023915
-46771  -85.223522640000013     41.6396362800000119
-68066  -96.6255124219706403    41.2008442437145561
-15365  -80.3783828461538263    40.159141435897439
-47842  -87.4428279459845612    39.6715334353964195
-15665  -79.665670994296633     40.3357938222432821
-37306  -86.2330059594521998    35.1273304698621516
-22968  -78.4035047529322924    38.2371521966808743
-83425  -112.22792704796494     43.917362127907019
-15221  -79.8674668335562501    40.4362102472136087
-50643  -92.4635695157648172    42.383959069676834
-44669  -81.1588132421052251    40.7904890509338216
-65240  -92.1296131305970789    39.209739152245831
-43607  -83.6032476085806309    41.6506531854091264
-53943  -90.0374645957447086    43.4399210372340505
-50010  -93.6176980867911084    42.0376765126966916
-70871  -96.5240521999999999    34.6476430000000022
-92780  -117.818342658168731    33.7383647740045376
-72040  -91.5173173123553028    34.9758782538610475
-70453  -90.7731806921577657    30.692418835849967
-61758  -88.9335202000000038    40.6056365999999969
-41135  -83.2881449969325587    38.3661642263803628
-85610  -109.794018249635258    31.7350299161073934
-83337  -115.194236062499982    43.2584525624999898
-27556  -78.321266878571393     36.4024520750000136
-26273  -79.9772188690648278    38.6787919956834472
-78343  -97.7523322236690291    27.6063840265054523
-78258  -98.5006973515336881    29.635478197710821
-55043  -92.7715609876149188    44.9395851776363173
-59717  -111.049572749999996    45.6815856562500073
-61957  -88.5905770719505767    39.4353580534008259
-68404  -96.7549543626901709    40.622432495596442
-55076  -93.0383052822794809    44.8399249365221451
-74521  -95.1595631746031927    34.6567812063492084
-31783  -83.4572933632870786    31.7531877107160128
-75103  -95.861483747683323     32.5227751568604972
-33028  -80.347346809193084     26.0187064561605972
-29752  -78.7502338333333398    33.7977792499999978
-99739  -162.263860826086955    64.618247652173892
-73119  -97.5623308922618833    35.4221835057715637
-57117  -96.7564475000000073    43.5331350000000015
-37171  -87.3080749428936116    36.3568491960659372
-37730  -83.9760659419524131    36.5586933060686263
-71253  -91.3115493195266481    32.9949851834319574
-95968  -121.548785313993079    39.4356685802048403
-41555  -82.2608523081395617    37.5457176591570061
-17104  -76.8578506686374681    40.2596817945837699
-33150  -80.2065248718998873    25.8511867474403481
-49329  -85.4879338419107171    43.4086889845040815
-18251  -76.0771520581395322    41.0056766627906839
-72624  -93.3540983575419432    36.1192350279329588
-03056  -83.3910143333333451    34.9032924999999992
-64651  -93.1706400801393784    39.7787635696863546
-68704  -96.8410499999999956    42.2788740000000018
-65258  -92.1350795956284401    39.5012148729508539
-21587  -82.0320629999999937    38.7601074000000025
-34654  -82.6309853352162804    28.2978110678642807
-61802  -88.1768016947215187    40.1157138661095516
-50833  -94.7069447832938351    40.6681713698164273
-65351  -93.3997172975177676    38.9750513609928717
-83706  -116.186755513544014    43.5864965787840148
-23134  -81.7417389999999955    29.3726177222222233
-10158  -73.9755145000000027    40.7491330000000005
-98284  -122.201228972625927    48.5444221102876767
-65757  -93.1113660028664611    37.280043703547129
-48554  -83.794644500000004     42.9725415000000055
-24715  -81.3226892368757746    37.3373539974391235
-57791  -102.468414843509635    44.2813984459520711
-58281  -98.5936672783504093    48.8658604690721958
-73082  -97.9338023671660238    34.7806040987243392
-32096  -82.7523478030045965    30.350640492367333
-04087  -70.7402752743504522    43.5564478282468102
-37303  -84.6289913348151828    35.4373850732943509
-99179  -117.093333574380125    46.5270441394628307
-50616  -92.6770556889810422    43.072234147064151
-45623  -82.2701899996342831    38.6416259353657807
-75904  -94.7819025644891866    31.3453896551267448
-35803  -86.5469801086693593    34.6086834267960057
-38849  -88.6838807866461281    34.4502651506522639
-64028  -94.8267620813008136    39.2875689918699322
-08086  -75.1872345677277565    39.8402398099251158
-74114  -95.9457379288694625    36.1268579332716016
-95842  -121.347405436903287    38.6891454339872851
-29471  -80.6616147181301812    33.191108146297104
-94705  -122.241347135817165    37.8582504756180711
-47126  -85.7726526638747657    38.5445832208666204
-10984  -74.0177542334494944    41.2051019782230199
-22511  -76.4991804112764129    37.985499486336991
-61046  -89.8161859321114946    42.1019812205934088
-48193  -83.2104013356365613    42.1725986375233219
-21220  -76.4112726092152172    39.3415442717671269
-95046  -121.60129788431702     37.0905111053374696
-14858  -77.1236968308560336    42.0306802190844664
-28167  -81.9864579635196549    35.4981962124736938
-78646  -97.7772594999999995    29.9634762500000029
-90265  -118.785108427768705    34.0561467800624911
-45723  -81.8253664078862784    39.2235412464793143
-39851  -85.0288020827477737    31.6522621038250449
-21830  -75.7020668410216473    38.4057821155753984
-52768  -90.3860850841929562    41.6898834242674212
-83635  -116.030079787878776    44.7176773030302996
-73642  -99.8925900521326753    35.8119130947867319
-47348  -85.3529249504661607    40.4497137423861659
-65262  -91.9274653143556577    38.9463043014319936
-00795  -66.5004247985046817    18.0342986190815431
-49802  -88.0842928685323869    45.8002135307516198
-13365  -74.8521877631802113    43.0620720532475829
-50449  -93.5679488185529635    42.9983456563594117
-43469  -83.3656342827639065    41.4565664952342843
-78874  -99.7489646428571461    29.705431499999996
-12169  -73.4416959710144681    42.5791603888888659
-29669  -82.4278908260974248    34.6459314465489143
-65254  -92.8372661478837529    39.1967047412036038
-78730  -97.832159168262848     30.3631215331455167
-84767  -113.009126008026996    37.1783367531772058
-59460  -110.501724615999876    48.0509616540952038
-50309  -93.6186156193695354    41.585929882507493
-13642  -75.4696835256298755    44.3336977075864596
-31098  -83.5943794914689704    32.6058406163129746
-55533  -90.142776000000012     42.9818163333333345
-27204  -79.8310346666666675    35.6275584166666661
-29592  -79.4766291382068744    34.2959488186749795
-37073  -86.809616742714411     36.4287423849318088
-01128  -72.4882981155637793    42.0960671388629208
-42084  -88.245098750000011     37.4336404999999957
-95975  -121.155679821882742    39.2259433890738833
-63377  -91.0909266103863899    39.1065564934758427
-26041  -80.7125071385704871    39.9066539290902327
-14519  -77.3105676871985423    43.2340304468372878
-80901  -104.952495249999984    38.5923758333333353
-20317  -76.9805702285714375    38.9395553999999962
-53044  -87.7864927947053104    43.7410800534465452
-34689  -82.7595832237726512    28.1477397149546391
-98373  -122.325148621417881    47.1470907104071131
-24571  -79.3751564411397368    37.1338617101664497
-66935  -97.6306331367713227    39.8225723264574469
-78067  -99.434111445744648     27.0533226297872176
-24954  -80.0454198675899988    38.2308226226918961
-47574  -86.5699312732475335    37.9452990608011618
-96860  -157.939305574359054    21.3542823743589771
-65711  -92.2878209956680422    37.1878241457797856
-73432  -96.4275309810756056    34.2557472260956217
-78238  -98.6161479691425455    29.4804758965262401
-53593  -89.5661906211370962    43.0066397965368736
-49343  -85.5185920299105362    43.2948028674107519
-63450  -92.1479021920529675    39.6827867152318063
-35981  -85.6431096372999718    34.7242520753590753
-71043  -93.8818377443945309    32.8977783754003497
-91706  -117.968957377849776    34.0860926990115942
-13489  -75.5352738317184134    43.4660244023456528
-40963  -83.9559845555555739    36.6962847407407367
-68632  -97.1165922641619659    41.2533210791457989
-99540  -149.534087930711536    60.989236599250944
-01011  -72.9685659787179759    42.296784347435846
-98241  -121.574382617396822    48.2795638707847132
-90250  -118.349721481637957    33.9135828608876508
-54127  -88.2689950000000039    44.7953784999999982
-45769  -82.0386361646893363    39.0973788085321559
-49768  -85.1001102621971768    46.6466991843152172
-10977  -74.0474226052395181    41.1180896739485959
-00695  -66.1112705000000034    18.4274185000000017
-84086  -111.159391908172495    41.4815665941230804
-85222  -111.732752190082763    32.8688435873043261
-94025  -122.182853280749413    37.4497753238738724
-65042  -92.5927731428571406    38.4839792857142839
-43162  -83.296594807778007     39.9426510723623238
-08318  -75.1672005492452087    39.5544993728490866
-98592  -123.080258173739082    47.3361088020108127
-43548  -84.1642283726041001    41.1859131407199897
-76054  -97.1771152247077623    32.8628305856327003
-40801  -83.2452911662869894    36.8599823621867841
-27891  -77.7598127755987605    36.1040753661011138
-77659  -94.3857629360326058    30.1519583785300505
-15909  -78.869968799117089     40.3913946851851264
-13314  -75.3283605310077178    42.8123681608527207
-38577  -85.0185127442600361    36.5682629627550781
-95817  -121.458803594514293    38.5505397673496333
-52233  -91.6872464833837455    42.0457634302977183
-37853  -83.9214792699536218    35.8349520351586008
-16501  -80.0866241189759336    42.1233189096385345
-83856  -116.883079884763035    48.2500710567400333
-30449  -81.5281074776119539    32.5266604776119266
-83609  -116.327210999999991    43.5305569999999946
-77546  -95.1915202291417302    29.5154803192482085
-32208  -81.6867178229277897    30.3951547261352282
-31419  -81.2133424575267782    31.9920099807629654
-89146  -115.225231890500908    36.1415619146279496
-28683  -80.9141258030347501    36.3786777060411453
-41817  -82.9049091455399179    37.3604516502348361
-47335  -85.207796244444495     39.8117091333333022
-49967  -89.0077141515870665    46.4621436371387873
-14009  -78.3934651260601925    42.5733931085195749
-23509  -76.2618351644023562    36.8799612801177474
-29686  -83.0391304267412664    34.892466578849259
-97305  -122.957128133510778    44.9915437007862664
-76372  -98.8475878876852789    33.2190795957810465
-86445  -114.390076863787286    35.7476934418604273
-52555  -92.8123709313674112    40.634168683109948
-67107  -97.537244645074793     38.1873199609046949
-59703  -112.540540649999997    46.0322476749999936
-75894  -94.7561927499999967    31.3697482500000007
-55757  -92.9200926842234054    46.5109884848634394
-17214  -77.4677864894158432    39.7313612692633598
-71107  -93.8452966624832072    32.5746880698397518
-43223  -83.0478617029686461    39.9349048582246624
-30628  -83.2237351517633783    34.0377026124687205
-51465  -95.203930727114539     42.0731700261050889
-65281  -92.799407458057118     39.4366475612567839
-32030  -81.7633353333333304    30.1004066666666681
-73520  -97.9661239803921404    34.2416855098039292
-17322  -76.5523999232434988    39.8464431327270532
-33812  -81.9009406640073223    27.9663585953954836
-15086  -80.0873321373092892    40.6606021262135897
-29827  -81.2332993859527477    32.9807848094576244
-84775  -111.38166753780429     38.2947991275476056
-40118  -85.7581081416616229    38.1016809788659359
-99355  -102.824463916666659    33.1859095000000011
-42161  -86.7357886249999979    37.2940797500000016
-12727  -74.9840596901408389    41.6500268450704283
-42223  -87.4491811940411026    36.6369424095203229
-55722  -93.4324276155038689    47.2891725193798393
-24604  -81.5527518750000269    37.2034291640625128
-35421  -86.6796726153845896    31.2263231538461561
-02868  -71.4222876666666622    41.6899054999999947
-80845  -105.593300250000013    40.8050637500000022
-72143  -91.7656309604085294    35.2517589902290993
-71956  -93.1718166932198386    34.6244199093645832
-12441  -74.5016685682772533    42.1516679684874234
-58041  -96.9011903623935638    46.070759080411527
-10932  -74.4662201824324086    41.4799187635135524
-80005  -105.119903951092255    39.8431993231924721
-03106  -71.4430316591355279    43.058622865299526
-91203  -118.26422583800624     34.1530321100726937
-29634  -82.8328930679304705    34.6763165481832587
-46703  -85.0248511614284155    41.6584518763665201
-55111  -93.1953960603112534    44.8837438190661473
-22530  -76.2801081744186433    37.9080140290697898
-68301  -96.5293537501805758    40.4563687362214992
-05853  -71.9761149231616031    44.89386307309546
-60506  -88.3533299497496216    41.7671681768574672
-45320  -84.6654910308632225    39.740509912930861
-04472  -68.6816802023677582    44.5607962489586598
-46001  -85.6643184316586712    40.2508220619159829
-58778  -100.937821824215845    47.7665469285879425
-54816  -91.0763969166666811    46.5022530833333292
-59752  -111.501071421712268    45.9139270656048879
-46356  -87.4167460463519177    41.2860621573505497
-13312  -75.2645850544652291    43.6938721702650099
-93640  -120.413565713360839    36.7377699870484804
-54493  -90.7404432777777856    44.7370781111111171
-30316  -84.3331761748622455    33.7205822028914426
-78633  -97.7481391619425608    30.7178519067366729
-65559  -91.6081314735970125    38.0135345657817112
-86547  -109.479871000000003    36.5137009999999975
-33142  -80.2361126007045442    25.8128407406730993
-36049  -86.2859523276037947    31.7592632593105755
-99704  -149.193920281250001    64.3161237187499921
-75161  -96.1705933423412063    32.7269627290951206
-71034  -93.305315037174708     32.1758782193308477
-01354  -72.5156004760928994    42.6303010252733046
-56000  -95.9181049999999971    45.0428868750000007
-27405  -79.7445837564381605    36.1184421027437139
-80812  -102.88715736202542     39.6589904113924234
-34431  -82.4879971396198357    29.1184693427450298
-86321  -113.147962657863005    34.5681888367346914
-87713  -105.386478367713011    36.1216424304932815
-41051  -84.5477212763708224    38.9448762596437561
-77622  -94.303378894403366     29.8597540813093687
-01566  -72.0779855435122556    42.1092508343002407
-18073  -75.4754971232493972    40.3890367098369225
-78742  -97.674382610921441     30.232803027303774
-91912  -117.090589499999993    32.6383849999999995
-52053  -90.9688692778617565    42.6222985990309482
-39201  -90.1855259032078465    32.2942754142699329
-32211  -81.5852703217392019    30.334601121640258
-42501  -84.4957909645191876    37.0702460497080537
-85329  -112.288371442196535    33.3991806820809245
-64127  -94.5392714938018059    39.0886212564291498
-74850  -96.1077664864864687    35.0953269385749493
-83223  -111.401649426315828    42.1865960631579071
-92802  -117.926769316712694    33.8081604971689487
-49654  -85.7538026976203298    45.0261935043528325
-79836  -106.208124846089035    31.5672711578358083
-76067  -98.1088532262397592    32.8074042995280379
-22043  -77.1960415371480195    38.9016161418769713
-49085  -86.4714514620851844    42.0635957154146709
-43465  -83.5018390763147949    41.5726957461447313
-72465  -90.8629042604166415    35.9780808749999963
-72936  -94.246483909232083     35.1994212414902137
-58311  -98.6024446697248038    48.6472135963302605
-24563  -79.2901445260474134    37.0715525904143632
-94560  -122.033214095951649    37.5372348666570304
-73090  -97.9186831326397424    35.405481296488901
-03855  -71.1456542516911838    43.4613173199364553
-49814  -87.9014272797823253    46.4913880483962672
-39115  -90.5823891910112309    33.0528310674157453
-45319  -83.9447017540322662    39.9187850604838701
-18427  -75.3870920898203707    41.4114198862275558
-23354  -75.9040155085713053    37.4737447295238297
-23827  -77.2033787501652711    36.6114105481383945
-18231  -76.005357456521736     40.9007713423913017
-30251  -84.7062399827081975    33.1886927885807594
-53524  -93.9448375000000055    43.7605130000000031
-76084  -97.0911603924049444    32.4323308846468663
-68831  -98.5582768470421087    41.1178333202660653
-15685  -79.5197267096774141    40.3254054838709592
-06083  -72.5127789999999948    42.0147419999999983
-52620  -91.7979546091900716    40.6954161621214539
-32562  -87.1844618888888903    30.3591432222222259
-97232  -122.640617807932045    45.5287568317735278
-59820  -114.51378089639941     46.9759727070848641
-15474  -79.8989344334022888    39.7466098416148341
-15332  -79.9883296639479369    40.2476909297552723
-85392  -112.311444820532415    33.4795239133080571
-18567  -75.910369555555576     41.4594039999999922
-82215  -104.729513268116094    42.3354020434782683
-66869  -96.5252063215614413    38.4108734144981412
-55733  -92.3605957237853517    46.7134798118377574
-37737  -84.1209262851775179    35.7594507457381425
-23844  -77.3404891956682263    36.6823261310572448
-52232  -92.3351484885204741    41.8034357385204203
-78002  -98.7376792737160116    29.2820535579052859
-24647  -81.8702409333333065    37.1326198666666727
-92544  -116.916968842964891    33.6903448729259765
-31086  -83.7585576857143081    33.0359571428571499
-25007  -81.4260528975069491    37.82686398060941
-36013  -86.0029376848692522    32.2999897042092812
-98602  -121.28413486959299     45.8448507275661896
-13483  -75.8216126496211587    43.4020484280302981
-49891  -86.9905071111110999    46.2006886666666645
-99013  -117.836477405723926    47.8966566969696785
-80423  -106.597970144736905    39.9218597845394925
-21287  -76.5994299999999981    39.3002848571428558
-26280  -79.9627066137565947    38.7370735573192135
-90502  -118.293056380452043    33.831312838449108
-80131  -105.0055991239999      39.476002231999999
-06052  -72.8021031191633909    41.6575247642884179
-02332  -70.715084213910913     42.0421966755822325
-65674  -93.6085598039567657    37.782840719938271
-23866  -76.8699346926362779    36.9154916818851504
-01845  -71.0960994508576078    42.6762353244581476
-97141  -123.824687008054354    45.4513575639590215
-24433  -79.4634637588654442    38.4132848042552837
-56952  -85.7565973333333318    40.5731731666666633
-80302  -105.340206169620757    40.0402334644693596
-15205  -80.0846388823417499    40.4364513341078293
-18634  -76.0060469611303517    41.1986049162363273
-28663  -81.3121652766260894    36.5400450443293963
-19006  -75.0596026006038102    40.1313312081689659
-07450  -74.1134795421526178    40.982705607324327
-45434  -84.0359645376942552    39.7181272572295896
-75135  -96.2328703278746787    33.0680818162386956
-75755  -95.0873348680557058    32.6434870767642167
-56567  -95.3777341699647536    46.5375817375546674
-95007  -122.108900791420055    37.1061338210058764
-19805  -75.5861362452452425    39.7443257811814945
-17045  -76.9992974995215604    40.5986403190369884
-68955  -98.5312474329282821    40.596444297408901
-13862  -75.9446882315281329    42.3278676087040751
-78406  -97.5244508719008394    27.7762836590909146
-79241  -101.441703775438569    34.1514509518341782
-48662  -84.4129527839115639    43.4005626876971817
-82712  -104.127041504706042    44.5077680988235471
-17885  -77.3084326105150694    40.8545997832618255
-05633  -73.0216226518518567    43.9960364370370343
-02525  -70.8120210833333346    41.3430447500000042
-31812  -84.4205996111366659    32.6343205899677287
-78636  -98.4049568834689694    30.2836922338849845
-62621  -90.5268657984440352    39.7354812437940481
-33328  -80.2741233343041216    26.0664126404657637
-27708  -78.9343440909091072    35.9990236818181799
-98597  -122.56686966355592     46.8961945433934915
-54703  -91.504647606815567     44.8285650802079019
-35546  -87.569125624097353     33.5984122081236123
-52221  -92.3354241255556047    41.6456141833333149
-18068  -75.5196971111111139    40.4848268888888825
-60959  -88.1972567248372172    40.7853353446778399
-42753  -85.1731954698690146    37.2347285621543165
-68861  -99.2906853010754133    40.7097996155913862
-22556  -77.4953661667518361    38.4798819727288972
-61928  -88.4974490266496758    39.4500812664975129
-67114  -97.318648927434694     38.0507924365795986
-92564  -117.237476600000022    33.5763781333333284
-39638  -90.9856452797061053    31.218250845460652
-29037  -81.8854787260669781    34.1903435857836584
-66528  -95.5166948318339024    38.5940118408304826
-97442  -123.397059518263546    42.7600221168159536
-46312  -87.4610653940950158    41.6364827829221085
-11103  -73.9111641666666515    40.7628543333333369
-49421  -86.0706701514570796    43.5967204449752543
-35947  -86.2738356666666704    34.4662039999999976
-87119  -106.665028500000005    35.1635810000000006
-87613  -105.699069999999992    36.5222557499999994
-98811  -120.36125455172413     47.7413294741378991
-42104  -86.4487062939044932    36.9048836061044483
-22827  -78.609637689969432     38.4087953082793661
-60012  -88.3101990659836957    42.2694098935368388
-65360  -93.5195381741288116    38.5311525864660993
-85914  -109.639453200000005    34.4412901999999974
-22811  -78.9707947126709371    38.7821950529447435
-33801  -81.9129231036532417    28.0434108319927091
-45836  -83.6399535909439749    40.7890558234842402
-62326  -90.8061344922924434    40.4238971793470085
-61747  -89.430372234258428     40.4197776096687917
-28260  -98.4503899999999987    29.7047515000000004
-71945  -94.3727208715979486    34.494378120197986
-80914  -104.7039166923077      38.8252960384615449
-38722  -90.8551634088785249    33.2818318971962555
-03812  -71.2692985771169703    44.0867429168346874
-61480  -90.9136573027523411    40.7468565948012085
-28790  -82.4613396045282627    35.2105365509055517
-25047  -81.8046810341462987    37.9398753219512272
-55612  -90.6614585841761595    47.7192079154867983
-98274  -122.253946285338273    48.3733861426424809
-96337  -113.039455285714297    35.3533521428571476
-51001  -96.5508075230019926    42.8434460957134462
-04746  -68.1175381654020384    47.2677463110774241
-66441  -96.8465691022833397    39.0202847987931776
-02108  -71.0641438766355265    42.3577971906541464
-13478  -75.5799090116569516    43.1457822905911712
-66901  -97.6431968821641334    39.5442769384700128
-07023  -74.3855317519485482    40.6424773801008072
-98229  -122.407093352079272    48.7108107195333631
-08053  -74.9016281125666126    39.87715611267393
-26808  -78.4429717918551717    39.2127452598577406
-47180  -86.3485459999999989    38.27403975
-15065  -79.7266599657910575    40.6380690813469982
-84139  -111.886797000000001    40.7670930000000027
-59486  -112.284771236934674    48.3054051736180341
-95573  -123.634710207209807    40.932332806119355
-92393  -117.394522499999979    34.493709535714288
-83466  -114.034823764142558    45.4126509469102899
-78963  -97.0282800671868557    29.9241177789336597
-25636  -82.0032910000000186    37.8203138749999965
-67131  -96.9549932072072949    37.4338977891891602
-45064  -84.6082809317986175    39.5623333185612012
-07439  -74.5981761738382261    41.0775304604131009
-27247  -79.7595748469388042    35.5332563571428821
-36009  -86.2907067486917612    31.5814160272088884
-68858  -99.375327423671763     40.9621371111111401
-78850  -99.3006347544482821    29.3304032626334994
-02174  -71.1695877826087013    42.4187893478260847
-97231  -122.837898518411706    45.627774297813481
-61878  -88.1689008982188369    40.2399907022900862
-02363  -71.0301274999999919    42.1709949999999978
-20121  -77.4447461047561632    38.8239260252860419
-99503  -149.89277303281861     61.1888666210646122
-29511  -79.1245430861746968    33.9804969796906065
-22066  -77.3058955883322056    39.0057586390643323
-21132  -76.4255610489331474    39.6955596620199387
-11367  -73.8158384651162578    40.728966744186053
-99656  -157.337731066666663    61.7825342666666515
-61322  -89.3046457841059862    41.3263491721853811
-58077  -96.9931525181700067    46.5229779331575486
-37690  -82.5555249240795206    36.2508756940337946
-33961  -81.9550873999999965    26.4648721000000009
-84645  -111.849041503272034    39.8232128534031062
-32809  -81.3865251293440082    28.463617008078117
-50837  -94.675909059073021     41.2351204980417023
-48655  -84.1585608162332619    43.2896790098747317
-29073  -81.222776136585793     33.9198244175025181
-80241  -104.950270385297983    39.9308035713329659
-59419  -112.378684924922311    48.021504638827281
-62028  -90.3567642565322444    38.9627721781472331
-56159  -94.9352795662492497    43.9589318286830419
-77070  -95.578341985744558     29.9778960315493173
-22567  -77.9222136998332644    38.2397279409478585
-20736  -76.6172155552521872    38.6946734703014101
-11790  -73.1251019223529539    40.9030807839447803
-91505  -118.344974755399079    34.1702998636052513
-62924  -89.2090640349355937    37.8178082768584503
-61841  -87.8129256330936698    40.0487197158273176
-52553  -92.6422260418027292    41.1480645902460793
-94804  -122.336860809461584    37.924409958901883
-52576  -92.1088599705263107    41.2101200568420438
-07885  -74.5830016459459415    40.9213383016630203
-39501  -89.0984698811649025    30.3817494354786675
-22570  -76.6034837272727458    37.9471514909090999
-61101  -89.1237925909665307    42.30092221226856
-50536  -94.695969394821347     43.1155037100736251
-01742  -71.371640727810842     42.4576962422316413
-03896  -71.2233950304877652    43.6073063658536668
-84184  -111.95790375   40.6730235833333253
-61027  -89.7608628888888802    42.3335220370370422
-59535  -109.362367512934256    48.0749476977088861
-12956  -73.5150245183099571    44.0831200685446376
-98991  -120.315307500000003    46.429404500000004
-33056  -80.2483776212491478    25.9476618761340205
-13846  -75.0533434637826673    42.3566462494969542
-78591  -98.5427555667807979    26.7040888989725893
-80927  -104.676359374823193    38.9288338359264543
-50682  -91.7080901611815733    42.453149353867758
-76051  -97.0952031523119814    32.9327758580167966
-48473  -83.8138153686497276    42.9495864188520144
-13118  -76.3955196926988123    42.7552405097523263
-15146  -79.7614648913955762    40.428272659308341
-74574  -95.2615867241379135    34.6695975862068764
-65704  -92.5858215906064004    37.1401027194529618
-71932  -94.0906871470588158    34.5467893529411754
-74001  -96.0611789655172998    36.4744024344827551
-60133  -88.1448794785124647    41.9859844039008223
-19731  -75.5790336642336058    39.5148851678832074
-74465  -94.9273267692307599    35.917408769230768
-72111  -92.1362638565636161    35.2380506475755837
-20004  -77.0239373141890411    38.893220361486506
-33326  -80.3775228539282267    26.111022986816554
-00735  -65.6615342034757958    18.2574742157856313
-59034  -107.609104773907163    45.7313434472094116
-24202  -82.1980238246619308    36.6517209237987132
-71663  -91.4809913624917641    33.2453828893307204
-92341  -117.078491095061239    34.2405375811363513
-98040  -122.224334283532201    47.5604283487956039
-25039  -81.4254437059858986    38.2278640915493
-94930  -122.598033107521076    37.9879358451253708
-41861  -82.8191040854197098    37.398056468335831
-52588  -92.1609272333769098    40.8698950697522463
-71279  -91.8597140431034944    32.4691572327586115
-55779  -92.4228233914303843    46.9004487549789673
-97222  -122.616096140749534    45.4420663168035972
-38324  -88.403582863636359     35.8651018484848692
-62360  -91.2657457862709123    39.824003626345025
-77463  -95.7706335000000024    29.1058099999999982
-83214  -112.25277420023825     42.548038117997649
-76682  -96.9167124238698108    31.4678518108274154
-68531  -96.7114420956521457    40.8976213652173826
-54829  -92.0401236890394898    45.5535692181923721
-06355  -71.9771076895101629    41.3650579992060159
-12473  -74.0338857549140954    42.2636931142506498
-55814  -92.2066595000000007    46.837313800000004
-36206  -85.8322580968261235    33.723350685683755
-95685  -120.753736411182643    38.4209993486236954
-49819  -87.495361747474746     46.0616200606060673
-56639  -93.503588012661794     47.8521084364095586
-18088  -75.5566261076735799    40.7617902681225033
-07070  -74.1112813608247905    40.8277103406357043
-08030  -75.1157790837454797    39.8907325265760022
-68347  -96.4317440729029158    40.805116307922809
-43010  -83.6204868474575989    40.0003886949152445
-74402  -95.3425912500000123    35.7165906999999976
-32602  -82.3194434666666552    29.6317522000000011
-42326  -87.0208865109034093    37.1946411121495615
-84407  -112.298284166666647    40.6360711666666674
-45835  -83.6953372965642046    40.7647385027124827
-42058  -88.474475055641733     37.0525903697627683
-06090  -72.85811702340186      41.9519584948630211
-63782  -90.0272168596491014    37.0978691447368476
-57770  -102.561345712121195    43.0332719898990064
-49341  -85.515287386246257     43.1206610824280219
-18624  -75.6048777356040773    41.0600406551966159
-78737  -97.9668781172424019    30.1912749353402035
-82833  -107.024826141342658    44.6255074640754401
-84102  -111.864569690528342    40.7601352653954336
-23333  -81.9219453939393816    38.641163848484851
-64151  -94.6329958878668975    39.2156110206390665
-69217  -99.6985134845638044    42.5222886348993399
-31840  -84.8887394999999998    32.6320782499999993
-98595  -124.109302784565983    46.8806612754555374
-61427  -90.1865093747004778    40.5009201198220765
-47665  -87.7082868282756891    38.2714817993102798
-77021  -95.356307508097089     29.6974262534873148
-43746  -82.1732331874184752    39.9691723727485311
-51549  -95.4489383209767652    41.1978050130833608
-81024  -104.720238122641362    37.2185881886792416
-17534  -76.1067356521738958    40.0371658695652144
-12123  -73.6057421903922489    42.5257209457165146
-20816  -77.1154338719984764    38.9588332992274431
-79240  -100.773797257142832    34.898001428571412
-87719  -105.113681142857132    36.5563377142857107
-85264  -111.645862959475053    33.6329063443900793
-53007  -88.069901428070267     43.1070700128654991
-65620  -92.9614727078723035    37.0197565953258803
-55313  -93.8591402316697838    45.1753377588442575
-57785  -103.44592890063592     44.3959523607644897
-50168  -93.2702198808510872    41.7777306762918101
-27602  -78.6406010000000038    35.7725840000000019
-48733  -83.6004802065913566    43.543286784554887
-24139  -79.4732140346069826    37.0036811625037672
-66769  -94.8924878944766732    37.8455674212695286
-27524  -78.41291362793838      35.4122803903799763
-99111  -117.37975267158852     46.870805659368699
-46792  -85.436966071686129     40.6871416584298942
-61847  -88.0163583272589278    40.3035514320425463
-16725  -78.7538411674008927    41.8636075022026475
-15001  -80.2987863109446778    40.5984934257189565
-29728  -80.4010992118056294    34.7733559224035815
-87125  -106.76002986666667     35.1126501999999974
-29678  -82.9450600350009921    34.6463776005847492
-07624  -73.9565732793692234    40.9718202117798072
-75479  -96.3403948489332009    33.6189775971550162
-08948  -119.643364571428577    39.2669241428571425
-10535  -73.7964215172413702    41.3370612695924393
-85251  -111.919867056373548    33.4950583953054633
-67353  -96.3118201256408923    37.3366023346154066
-28395  -78.7155538487845803    35.1335258238073465
-78842  -100.945672105263142    29.502162236842107
-25617  -81.8008781099744056    37.7316911432224913
-72183  -92.2184040500000037    34.6021920000000094
-21520  -79.3079532863561241    39.6357660143417263
-55932  -92.2982573720081234    44.1269298892495669
-07462  -74.5078200774877359    41.1915124090221738
-71964  -93.2359312819886554    34.4270918626246214
-47553  -86.9074408264040414    38.6651194638947899
-27827  -77.5126478644067731    35.6984350847457748
-85370  -120.258534999999995    38.0323285000000055
-76628  -96.9678240086206813    32.0430097241379173
-35115  -86.8611649119682596    33.1119212156598053
-50846  -94.5624184643619259    41.3092956799378968
-79066  -100.956312400000016    35.5008323999999931
-67737  -100.471555017857128    39.1334200928572145
-03449  -71.9908608759152173    42.976712338579766
-75250  -96.7689960000000013    32.9286364999999961
-92263  -116.397545692307688    33.8045417692307737
-45885  -84.3953398965105066    40.5608721127893048
-18972  -75.1232239142476885    40.5369748700367509
-98336  -122.121233928167342    46.5257051985294794
-32763  -81.3019832509429818    28.9451960123832706
-31510  -82.4548092859658226    31.5447832830279395
-51546  -95.7797164546798712    41.6415042827587598
-42458  -87.4344238640088065    37.8562704063353976
-37387  -85.7372704772176917    35.2724625742387943
-54828  -91.2701072175731412    45.8609742451883022
-66509  -95.7463364873282643    39.338907674149155
-74604  -97.0215988192149723    36.7129747098345192
-29461  -80.0215191848181036    33.1609156765417197
-10458  -73.8889855647306462    40.8623901063680606
-44074  -82.2288644176991852    41.2866395805310091
-45401  -84.1800523333333359    39.7402910000000062
-98220  -122.194627988445276    48.6849537647058384
-24017  -79.9898681559316174    37.2939018579525126
-35062  -87.0202141308273411    33.7338759433445219
-80916  -104.740076474822501    38.8064714176466055
-08701  -74.2070444336762876    40.0784108271081436
-12019  -73.8482245801112924    42.9235171848805663
-50147  -93.5358229814815019    40.6031459409171021
-47050  -89.1960420000000056    36.5685754999999943
-74084  -96.3459300756648105    36.546631938650286
-53946  -89.0076033154033581    43.712108942542784
-81045  -103.165699294254523    38.4896444549689321
-79312  -102.397763044763579    34.0214916148648641
-59403  -111.295304759999979    47.5188319999999962
-08530  -74.9149824696042401    40.3718555820723424
-45850  -83.9282815350134257    40.7131419759522188
-04666  -67.1995162884084891    44.9671552852299357
-13204  -76.1756049347543325    43.0487151478903769
-94005  -122.404056140243711    37.684029437740719
-32615  -82.496576109187103     29.7919624536722942
-21840  -75.8991161379780834    38.267113297814177
-04660  -68.3394800970891794    44.3480434077019225
-25243  -81.4822291296663792    38.6891691768300561
-19736  -75.6616282469135655    39.8018085185185342
-98531  -122.958182821529192    46.7340752421023566
-05363  -72.871781583025026     42.8837959860439071
-35420  -86.5288949999999915    31.347650999999999
-07013  -74.172663561095419     40.8692808382398951
-24171  -80.2400708142984342    36.6573412507366996
-14650  -77.6196669999999926    43.1614620000000002
-95310  -120.388507740654873    38.04365673420984
-17960  -75.9527593330548285    40.702361127508432
-73409  -97.2407545000000084    35.5670669999999944
-34449  -82.6563445039832345    29.0497551002810752
-07604  -74.073801316111485     40.8620857593474511
-96118  -120.259236924141504    39.6658695320348968
-54669  -91.0896831852755611    43.8994638044855421
-95589  -123.999467130703948    40.0654955764099441
-90089  -118.283085453488383    34.0229454011628079
-91763  -117.697568556112586    34.0710218976686647
-37326  -84.3860976576453936    35.0352742760487601
-24316  -81.6597205159705908    36.9500831572481658
-41801  -93.570265666666657     33.5111589999999993
-67547  -99.4151212012229877    37.9228713429683495
-20609  -76.7527565670434768    38.2705600258481908
-18953  -75.1582388333333142    40.5215822187500052
-24464  -79.1173859446977161    37.8595335444698051
-91462  -116.393887000000007    32.700539500000005
-87130  -106.73948213333334     34.8369552666666635
-62530  -89.6508365916483001    39.5701786821978061
-01105  -72.5781269976360051    42.1009633607565803
-60949  -88.1127077897489102    40.3722916433054237
-62825  -89.0689328805970177    37.996476470149247
-37806  -83.7366565394946747    36.0822092732558843
-98115  -122.296131161495808    47.6849760186383023
-55442  -93.4294814594069436    45.0463613120131683
-35016  -86.4945791295366746    34.3309835729317712
-83725  -116.204146699999981    43.6028550000000052
-41654  -82.6399801428571692    37.5689848928571521
-97388  -124.029070982928559    44.888027946158843
-05743  -73.3021657698337634    43.669405383610183
-52645  -91.3906029747958257    40.9165884347723861
-96079  -122.34875319999999     40.6975828500000105
-75556  -94.05847588612572      33.14909130431937
-23876  -77.8307459709678113    36.9538627383512477
-46011  -85.7412747814563119    40.1172709307034978
-48821  -84.6447137642703069    42.6493027451404956
-72721  -93.8011963714837123    35.8341120131021214
-81626  -108.036233035087704    40.6183898333333104
-26202  -80.6143479098901139    38.2265363875457709
-59338  -105.643154763819155    46.5721345829145861
-77240  -95.8439929999999976    30.0255137999999988
-36545  -87.8778865982938981    31.546355274104755
-29902  -80.6951226129911561    32.4198519046582589
-95341  -120.476025051136105    37.2748754731266274
-02368  -71.0509241414540327    42.1736369289783823
-16238  -79.5209498186813022    40.7868864560439803
-49706  -84.7909977839540261    45.4411764552976507
-83127  -110.972090760920935    42.9509811672455797
-37220  -86.7754416127335304    36.067169166746524
-44084  -80.8720827367348676    41.6612064328290401
-18477  -75.6039935000000014    41.4783834999999996
-81029  -102.48143201107014     37.1007539876998749
-01756  -71.5506264177017357    42.0933365502887256
-89193  -115.127668749999998    36.0097459999999998
-62425  -88.0917648107707691    38.8277528332719442
-73859  -99.274179601827683     36.1417773407310534
-64154  -94.6352248029815541    39.2611737077741907
-77012  -95.2779400795352558    29.7190019722965921
-56171  -94.7406662680954668    43.6675107102381688
-67022  -97.6032668379865385    37.0495485434526302
-98036  -122.279595462178307    47.8106166685105052
-40014  -85.4374615119400715    38.3389760890009512
-37135  -86.6662283398588045    35.9465612454008721
-19145  -75.1817369793355397    39.9227211659237966
-46545  -86.1612164367700615    41.683897755330932
-28512  -76.7836461018697634    34.6984796850418959
-75565  -94.116310869158923     32.9528445451713239
-80110  -104.999835311845445    39.6455181118157398
-01540  -71.8668881897074385    42.1160602211151343
-85188  -87.1369833333333332    33.196521666666662
-38611  -89.6809767126150206    34.8641360915402601
-62807  -88.939923142045302     38.7466631752840698
-08085  -75.3304669813598764    39.7453710499844846
-11705  -73.0549735299947542    40.7447014428794816
-94567  -122.421591229331852    38.6674339170098662
-95242  -121.332898163925051    38.1274655251509245
-39324  -88.7023738731343485    31.5819531865671728
-11211  -73.9514588517396589    40.7123325365607585
-58087  -96.8899643333333387    46.8623770000000022
-23119  -76.2871841602209457    37.4505351314917192
-04740  -67.8601847913042775    46.6412963269565282
-85721  -110.947055074074058    32.2315977407407388
-06907  -73.5204432937657515    41.0982492065490774
-47850  -87.4189724639327181    39.2476839495267456
-82605  -106.400564622222234    42.8156488222222293
-65745  -94.0073443735948047    36.5275277034203256
-27537  -78.3917028498449326    36.3464101307660385
-61350  -88.8500603050358109    41.354119076655401
-14216  -78.859612928018592     42.9489334744582152
-50459  -93.264526976772288     43.4520660663895057
-08502  -74.6468663059569906    40.4475982294676797
-76432  -98.8237957036081127    31.8165238862757889
-60544  -88.1914815528397895    41.6213000674372466
-42262  -87.4222196502490192    36.6703697483997217
-34139  -81.3815251736401279    25.8557365711297145
-02908  -71.4378386438952191    41.8388285537789955
-94928  -122.696434330859844    38.3464534123981338
-34104  -81.7364095243062252    26.1523540782618191
-22834  -78.8704396272168111    38.557137416938069
-93380  -119.097058500000003    35.5660854999999998
-36863  -85.2320426229533155    32.8739462136145875
-57730  -103.635016893948105    43.7383963531477988
-95301  -120.605108598204865    37.3437293442399394
-46514  -85.9724458021245965    41.7134572918183579
-24871  -81.6467883947368307    37.3478138999999985
-80310  -105.260036175000053    40.0023525374999878
-44452  -80.662004019408144     40.9506090693838374
-33027  -80.3429321710311513    25.9832341169620804
-66850  -96.6816157843512514    38.3663858664122088
-21111  -76.593848196260268     39.5776463827568108
-50533  -93.9040847762173456    42.6547674534714716
-64744  -93.9871533210242092    37.8284650544419208
-64497  -94.2160131684587867    39.9162987419353996
-22191  -77.2718678957460412    38.6280676111292607
-32868  -82.2286491999999924    29.4104956000000008
-77663  -94.4327163651068986    30.5220699514732203
-28340  -79.1320622166494303    34.4799215476145022
-97738  -119.104500744706428    43.5557273980642563
-84023  -109.448029624489791    40.9073440285714014
-48110  -83.6625747391304486    42.0165001304347854
-49443  -86.2323765000000009    43.2229765000000015
-44807  -82.8636710109928458    41.0641103682666753
-56572  -96.0533169159509015    46.616024922653061
-76370  -98.9215222868853203    33.4512615532786981
-84031  -110.808277010638392    40.4310557845744754
-36073  -80.5783050000000003    40.3197130000000001
-63452  -91.7746430198309753    40.082764027308194
-74008  -95.8948750287291602    35.9593659752122505
-60447  -88.2876608122430468    41.4670475366430438
-60935  -88.1764893006275656    41.1804777079292919
-66783  -95.7243258448648362    37.8639369081080019
-57361  -98.4251106818181825    42.9914781893939164
-64455  -95.0046609148821659    40.1974987677329096
-28785  -83.015073651199387     35.5825264653387876
-41567  -82.2776814870623241    37.5779799208523002
-34221  -82.5464238677419786    27.5566507644403984
-14778  -78.4757340000000028    42.0761398888888891
-24179  -79.8170674100827853    37.2806734975842105
-06227  -71.8417928000000074    42.0238573999999971
-47465  -87.0507947844474756    39.0375313055934896
-20422  -77.0108960000000025    38.9311004999999994
-62856  -88.8529671757188453    37.9578629073482503
-60044  -87.8579591548197101    42.2844074575568953
-67550  -99.099804434302996     38.1836393473753759
-63390  -91.0448210366839561    38.798491828905405
-21862  -75.2165348235294005    38.3986234823529458
-45711  -81.9274095574446335    39.4204233068136887
-29530  -79.7425543688113123    33.9896834261375176
-77016  -95.3039247754042833    29.858365430648373
-63766  -89.8272297505910586    37.4352448436089915
-85374  -112.401529785796058    33.6464486592883603
-72739  -94.3311656505376703    36.4256821209677852
-94864  -96.6882480000000015    35.493267000000003
-62002  -90.1504699036978252    38.9213485495396441
-45406  -84.239685521418977     39.7832568853127171
-58379  -98.8582433170731605    47.9121910243902605
-76083  -97.7888661499999898    33.0596231500000073
-92567  -117.118588155957298    33.8029236880847748
-48466  -82.818855549626349     43.2732790160085727
-91105  -118.171150974847109    34.1401637729701477
-48437  -83.6205461619047696    43.1117257952380797
-41063  -84.4958061265667197    38.8537036377087759
-55961  -92.467252050232446     43.6115826148838224
-58423  -99.8384668098816945    47.484366362513434
-60157  -88.0613109629629491    41.9779108888888999
-56569  -95.790555394260906     47.0681631823004167
-46405  -87.2602265069616294    41.5702467462870331
-07069  -74.4419477906862284    40.6418414370097594
-52240  -91.5131801004429235    41.6558157134313447
-04943  -69.4981988454890711    44.883919484618076
-58047  -96.8696720350419298    46.7238568184187741
-32448  -85.2240518000963334    30.6926427844827394
-49084  -86.384062818181846     42.1832527272727305
-49546  -85.5393832186324801    42.9280582910674866
-82327  -106.580155000949759    41.936672211775921
-70503  -92.0542492517224815    30.1766815318546833
-57258  -97.9461261317523935    44.9210130079051311
-76549  -97.7913422538103276    31.0499447181169401
-75019  -96.9821074606844746    32.9674146085275481
-54914  -88.4432807586031089    44.2687303450373832
-16875  -77.5691916236893206    40.8413193794173992
-03589  -71.3545337142857221    44.267871142857139
-99371  -118.312938284927768    46.7392834741913248
-50660  -92.6377051559001075    42.5785438708010773
-52353  -91.6996428279790337    41.2965329581169058
-67659  -99.982760822222275     39.3674389037037287
-15050  -80.4347968754159268    40.5625642166358844
-76441  -98.6884055999999816    32.0456718000000009
-88024  -106.622646481927674    32.0640712409638482
-98418  -122.447771034017464    47.2226010523757367
-62050  -90.5294508011695882    39.4629479619883341
-15352  -80.3972123604246605    39.7593257186264424
-58269  -98.1677974903225703    48.6880311612903185
-96115  -120.199424461988428    41.6596490136452005
-34474  -82.1924140505142304    29.1552092544434274
-04265  -70.0374370133990851    44.2761942616360358
-48214  -82.9924963428785247    42.3672257522411826
-90815  -118.119869250436565    33.7947896231816074
-04624  -67.9818364499314356    44.4172190260630941
-26707  -79.3562694861878839    39.2737667403315029
-97770  -116.837282666666667    33.9543196666666631
-22406  -77.5510082212321095    38.3939656831080001
-33325  -80.3222025798320942    26.1102875798320682
-22021  -77.4225096666666701    38.9088066666666634
-33510  -82.2988554453139756    27.9547928070089
-19133  -75.1421253279784906    39.9923830240964051
-75803  -95.6600777958941677    31.8470846885408925
-72916  -94.382295555021301     35.2677150950233909
-60110  -88.2857642963064677    42.1244180259517904
-24319  -81.6616341154565077    36.767572074600757
-93627  -120.102488209090879    36.5386862090909119
-77970  -96.4565153214285544    28.8321893543955667
-65779  -93.3900081547313903    37.9750881265985427
-45646  -83.3170410757200841    39.078393959670862
-97750  -120.17288513473288     44.6311713330722313
-24280  -81.9400523548586079    36.9568395627306501
-65067  -91.7092567737017248    38.7454882934730733
-46777  -85.1517998942143777    40.8772082377535639
-64755  -94.3332800534089984    37.3276029071970044
-13825  -75.1934750679910024    42.4416328784274768
-96744  -157.792735508021508    21.4086401229946475
-23432  -76.5541019657794806    36.8687948272677701
-78162  -97.8029894533333106    28.5648029766666518
-14416  -77.9793696227889654    43.0768874179350192
-23709  -76.3105410000000006    36.8142004999999983
-07803  -74.5979382927900332    40.8791012789968846
-26060  -80.5461835947194231    40.1044790288228938
-24656  -82.1226944173843805    37.1793569993501976
-59060  -108.536604999999994    45.4249208571428582
-97828  -117.325917824523458    45.6376533800660766
-06432  -73.2445247142857312    41.2014192016806504
-62186  -88.9713677500000131    38.1766159999999957
-07730  -74.1794039508695136    40.4232758230436318
-42301  -87.2001238919910122    37.7387660457426719
-62532  -88.9806932903225771    39.7769147096774205
-18947  -75.1172985533025042    40.4227813156977689
-77874  -95.9215397999999908    30.0614605999999966
-53936  -89.7311335679375901    43.8424479677419043
-05867  -72.0369605703564133    44.6523886405789199
-02301  -71.0362429394468222    42.0774068811447606
-79752  -102.216542073505522    31.128723799232084
-22301  -77.0604113337589638    38.8195281140910566
-28655  -81.7272178625395043    35.734949686383878
-41833  -82.9709316672771706    37.0350818199023806
-97209  -122.68486513840449     45.5292104745826123
-02760  -71.3378384322791277    41.9709553532833581
-20637  -76.7751592245411274    38.5272232743661931
-16301  -79.6734511626010544    41.4470411565662786
-77457  -95.963293665236165     28.6654289860515235
-03837  -71.316880234422527     43.4256119376906895
-03754  -72.1245571311475544    43.4467226885246021
-52755  -91.4353356601007334    41.482810708341681
-48017  -83.1517166651744901    42.5363141696509004
-55337  -93.2722377395702864    44.7691401435067533
-58647  -102.866573693957321    46.5528937504873142
-36160  -86.1181826666666694    33.4423103333333316
-17013  -77.1948027408566304    40.2201416018806768
-28424  -78.6989018918918504    34.2896871837837907
-76862  -99.7192615822785484    31.471341631856518
-54912  -88.4058880000000045    44.3021434999999997
-40829  -83.3021081111110959    36.806889117647053
-43349  -82.664936499999996     40.6210274999999967
-02492  -71.2373508173108547    42.277443071565358
-66605  -95.6401375045649615    39.0135847786973713
-45877  -83.9488201860307299    40.954025327757698
-44471  -80.5928472379583667    41.049150830622068
-62311  -90.9390471643836236    40.2306170051369492
-21669  -76.3034100497147278    38.4667719845151339
-70783  -91.4056799503844388    30.6818035464709631
-70123  -90.2083348568270793    29.9530669018647124
-78803  -99.0790189999999882    29.7201149999999998
-55725  -92.489881442825876     48.2523206729788541
-23050  -76.4350497283040795    37.4975415053885115
-76456  -86.7126829166666653    31.536517083333333
-72214  -92.2282677500000005    34.7623612499999979
-41538  -82.5884789728813331    37.3097548491525828
-14742  -79.3104908999999907    42.1190793230769174
-25081  -81.776212851823658     38.092257811550212
-31312  -81.3574192982310649    32.2761466389037111
-29835  -82.3012781316157458    33.9059088774910791
-72728  -94.2365540222222791    36.2048395888888948
-80827  -105.426693065795376    38.9968735215497659
-20777  -76.9664802208392729    39.178646263513464
-78867  -96.519030222222213     31.4124546666666653
-22727  -78.2790739393039559    38.3952599223972939
-97883  -117.836536766288077    45.2029668117321535
-16145  -80.080386437500124     41.3840520922085204
-24431  -78.8413978790426313    38.1673022674644287
-55760  -93.2801148654081516    46.6756757706458743
-74446  -95.3138072847222162    35.8473761921295946
-92365  -116.7011458027429      34.8956654898328296
-52752  -91.1976247586207052    41.2725241417624176
-73843  -99.7601904941762996    36.3138140183028781
-37502  -85.5183286666666618    34.8599110000000039
-03231  -71.7506540948905354    43.4604302992700866
-51338  -95.3171488158235576    43.2005572399481892
-17861  -77.0843832954545292    40.770332693181814
-48067  -83.1404585691000477    42.4904985843373311
-55306  -93.2887319246937921    44.730733803658282
-63633  -91.0212746648864481    37.4059416975967736
-45155  -83.7504005673758627    39.0390584255319268
-42369  -87.0025872713178074    37.3489438410853012
-17071  -77.5815840838207009    40.3063153684210675
-61006  -89.2105184652613445    41.8674019968773621
-86324  -112.060263728648167    34.7604304223268059
-03030  -71.4635675000000106    42.7499979999999979
-84711  -112.057281876591716    38.7089581586680396
-62275  -89.5507360306581717    38.8122192921762235
-10594  -73.7730888171535781    41.1189576856739549
-75835  -95.467980501736406     31.3137827728636289
-99161  -117.102714167232605    46.9025508983683892
-50665  -92.7747099244839433    42.5655433860225898
-37932  -84.1763699297896011    35.9249383665598643
-35462  -87.9167992810861563    32.9201404471909242
-54945  -89.1480286614447266    44.5131453089643543
-44677  -81.8558967154731079    40.8677878989769354
-19110  -75.1641984999999977    39.9505079999999992
-72084  -92.6416658381299811    34.1654307316113233
-21046  -76.8503917157668184    39.1733893117624845
-96748  -156.944508083487108    21.0848153588560656
-31501  -82.3507171765822505    31.2237677096915505
-89421  -117.746046730538893    41.9859987520957674
-29839  -81.6176915789473583    33.5296560526315801
-96836  -119.634197400000005    45.2603089999999852
-89534  -110.273569666666674    34.3073413333333406
-48603  -84.018360036252659     43.456598346807624
-87704  -105.448415000000011    35.4022164999999944
-35738  -87.5945032500000025    32.4600467500000036
-85306  -112.180730447655336    33.6238259868140545
-32348  -83.5818277764154516    30.0122631537814542
-85298  -111.720687621252964    33.240804552619224
-56344  -94.0625742500000115    46.0391037500000024
-05901  -71.6975600275362126    44.9596023246376646
-61370  -89.0511763704186592    41.2143124752048564
-32433  -86.1878428837750334    30.7967076653863998
-10578  -73.6668543486725014    41.32516489203541
-62424  -88.4246838116215628    38.9938423308340987
-59845  -114.609394378378298    47.6277963425061941
-53098  -88.7110165935287114    43.2047176568925124
-68057  -96.6445531333642975    41.6329091128466757
-13796  -75.139406621399317     42.544359484963671
-23803  -77.4557957773908754    37.21546099682228
-99018  -117.147002521960331    47.2896505022278717
-12303  -73.9316746543605916    42.7537541325590738
-23824  -77.9799466987280425    37.0912806063786107
-45680  -82.5468892815420929    38.4493770615583585
-75205  -96.7958991241512621    32.8360991300934515
-78704  -97.7645351131309468    30.2448508104833529
-54561  -89.4644592600171649    46.0590610140664651
-20708  -76.8461044816546348    39.0614201439848046
-16660  -78.0817102941176557    40.4504656470588202
-12584  -74.0931333103448111    41.5283205172413616
-80226  -105.087752112837848    39.7098417678846189
-63744  -89.7429757205881771    37.1999098823529337
-04785  -67.9678759792122236    47.151716073304101
-28453  -78.0631349413842486    34.8837913427172381
-85412  -111.849066785714285    40.6465369999999879
-23640  -82.0416945000000197    29.5338171000000003
-15144  -79.7826837315375315    40.5445982512773213
-27242  -79.6354665757378513    35.3329849518614054
-35216  -86.7876376926967481    33.4208520197791401
-75181  -96.5604903406669166    32.7347612952634606
-35810  -86.6057025214102651    34.7815426637549265
-27507  -78.5783778534620581    36.5151754661835852
-25248  -81.6255236788925913    38.6448372805537943
-60090  -87.9302655753090079    42.1329510169179926
-32086  -81.3207306812212352    29.8154131840526198
-50047  -93.4858571559687306    41.480935889236882
-95494  -123.271018985827695    38.9174790374149211
-30512  -83.9946986300684841    34.8693417754742967
-12202  -73.7618006590628141    42.6397195277434804
-76044  -97.522710684461785     32.4342435563361491
-05046  -72.21347537764062      44.2409624421989349
-72067  -92.1593074516023876    35.5666604872426646
-06781  -72.9911827500000072    41.6700409999999977
-67667  -99.3313597951807168    38.7128289518072322
-40115  -86.2291555655991431    37.7354705599173741
-80728  -102.845170594831401    40.6052870188083759
-11972  -72.7035556789772528    40.8208299914772539
-16334  -79.4479160397661701    41.3100199228070153
-13420  -74.934976920631641     43.7234189536841029
-28719  -83.2859337819275254    35.4915519933879509
-27746  -96.3350068750000048    46.8788096249999953
-08091  -74.9295156897244112    39.8057398696741629
-11740  -73.3615750609678656    40.8628530585171106
-78108  -98.2337370935843381    29.5858280702557224
-78870  -99.6178166276595078    29.3007325686653815
-52737  -91.3750136918238951    41.2585658805031059
-53726  -89.4216255759658907    43.0693559090128204
-89832  -116.138836873803314    41.9746648711923314
-49431  -86.418269680483192     43.975140255362831
-78621  -97.3742529043328062    30.3284133863408769
-49264  -84.5527441108929594    42.4445754936211088
-85034  -112.052321457036939    33.4358240024690971
-80000  -105.327533066666675    38.9171762444444411
-87347  -108.441654140625005    35.4736595691964425
-73840  -99.6202651334895961    36.3682303091335157
-75653  -94.6353900857142776    32.3357960571428578
-48328  -83.3548628354543695    42.6442764184028462
-82450  -109.432552915226182    44.4655096353908448
-71655  -91.7677055132244703    33.6443746350964759
-72905  -94.3904746857142669    35.3915097714285736
-34639  -82.4328250824521405    28.221067736512488
-78418  -97.2722832617261872    27.6343188894281013
-66547  -96.3191548917766767    39.2319004954632362
-68418  -96.3866481985128445    40.7082136243130748
-19425  -75.6511275098801406    40.0977570800540093
-38024  -89.388439877519474     36.0475782091041808
-05482  -73.2231435149301717    44.3849729878625894
-20905  -76.9935711135763512    39.1078913928722756
-83931  -110.793433666666658    34.3375066666666626
-72391  -90.2116575666666591    35.6698234333333346
-94564  -122.287442071926051    37.9955183623027111
-68802  -98.3530644999999879    40.9193614999999937
-60018  -87.8922930612096991    42.0147388557116344
-45692  -82.5556684893196007    39.1204277050570113
-72949  -93.8250676265448078    35.5217307624243972
-50704  -92.3725394999999878    42.4592999999999989
-17528  -76.0011600555555447    40.1275627222222226
-39840  -84.7666170499086604    31.7742427526508386
-55602  -91.8712164934441233    47.3014426956631837
-28104  -80.6980320413843799    35.0622755513813615
-17337  -77.2025566666666663    40.0154893333333348
-50595  -93.8260259252909208    42.4543321748754039
-80751  -103.2222573961498      40.6391789412279181
-21639  -75.8015677111110335    38.9635582337164621
-63342  -90.9959531818181802    38.6080736818181833
-85707  -110.875839782312838    32.1776652789115616
-99657  -161.388973812500012    61.866999687499991
-29070  -81.4669813448130071    33.9510651359968705
-17088  -76.2933949903660817    40.2994934797687989
-10118  -73.9858696666666589    40.7485500000000016
-37779  -83.764493177790726     36.2076800607604099
-66211  -94.6356234101622391    38.9238188821372404
-74108  -95.7889184229691324    36.1488041040416164
-26519  -79.6346478628355925    39.558873320848349
-78220  -98.4138804108052341    29.4129103891437751
-17097  -76.6865632812500451    40.5732964765625468
-08560  -74.854223607219339     40.3061330475340043
-23704  -76.3147407670762306    36.8282178005059748
-57563  -100.388375333333315    43.3585151111111102
-92688  -117.608772299076634    33.6340854415136548
-01351  -72.526157001743826     42.5392695433482544
-75150  -96.629859781442363     32.8161038292037119
-25208  -81.6457263658192289    37.8766148714689024
-28728  -82.6442667857143078    35.5493547000000021
-23238  -77.6245804215110269    37.6010208540774684
-78712  -97.7350614725738609    30.2848441476793262
-07663  -74.0951445117205907    40.9045069547078342
-38583  -85.4671705603560667    35.954334365933903
-33513  -82.1583942712361193    28.659199595971689
-44702  -81.3753702558769589    40.7989151220614517
-30229  -84.5670179199999836    33.2283589600000013
-40923  -83.8482803000823935    36.9211763718054655
-05088  -72.3091788827362052    43.6743310130293168
-23143  -77.1930041428571485    37.4552177142857161
-98614  -123.939926217964071    46.2740356646706559
-76691  -97.0989431289217038    31.7780580809385711
-52745  -90.7622781392684033    41.7203463036591913
-56287  -95.3285646868686882    44.4812771616161839
-73549  -99.1725596902654445    34.6721014424778744
-23146  -77.7044162358367032    37.7214618725310586
-50143  -92.8078581843154922    41.3369487416924031
-40709  -84.1758677499999948    45.1210252499999953
-14042  -78.4867666628997398    42.4716402246417175
-04774  -68.9823947967105795    47.1310062559210934
-68375  -97.4930374512986617    40.0220090292207615
-44872  -82.6820009999999996    40.7775304999999975
-87108  -106.581192017384424    35.0732840858460477
-72169  -91.2222855555555299    35.3971028199233828
-16872  -77.3765389368340522    40.9630593942162236
-67529  -99.2407652000000269    38.0740621870967786
-24736  -81.2648839617834398    37.4382915500868449
-01245  -73.2095759321254747    42.1850905648547538
-28352  -79.4698274830406888    34.7609526189965408
-79936  -106.295933174175431    31.7643614212044518
-14750  -79.3264325770030183    42.0948305159818545
-55350  -94.3906249011401712    44.8998237017623367
-10707  -73.8220428451613628    40.9588561442396895
-31093  -83.6509193026046773    32.6404525990807244
-62077  -89.5233022514124315    39.0298362853106937
-73901  -101.073186325581389    36.7434212441860453
-38847  -88.2327738063558371    34.4124491093805744
-73842  -99.1425449190981425    36.825534558355443
-61864  -88.1531501313867665    39.9892083211679292
-50452  -93.3754606815474375    42.7837321511904491
-31092  -83.8088995548664428    32.0935478524063953
-02725  -71.1777555289192776    41.7237073614916554
-08313  -75.2060267352941167    39.5348843529411837
-83332  -114.890241130234415    42.8053862912024812
-06502  -92.6772509999999983    38.2385872857142886
-46171  -86.9642984570821653    39.5374685880575356
-06610  -73.1691130375053547    41.2052131918884257
-50703  -92.3249481952240103    42.5212775380196888
-37221  -86.9600877739384828    36.0642299417860528
-38674  -88.9010105189339441    34.8793812996556909
-74821  -96.8359090000000009    34.6229684999999989
-22712  -77.7618148402963527    38.5653081473209554
-71251  -92.6629553967634365    32.2278785673547716
-36069  -86.1770401980383554    32.0797813037507424
-25878  -81.2349373116727094    37.7188965198556048
-35874  -85.2217229000000032    32.5170682000000042
-86017  -111.637522953867574    34.9420352078284324
-59546  -108.529198387832665    47.9001040380228034
-72312  -90.7679419655172524    34.5476264482758708
-54611  -90.9120564918032983    44.4358361540983466
-80221  -105.008919535797119    39.8328705921796384
-68778  -99.7966074446397613    42.8324195395430465
-99118  -118.660969471909183    48.9273236526645832
-31546  -81.8496562070419316    31.5442987370445174
-14892  -76.5258621248665349    42.0349139027291869
-45662  -82.9335890736054893    38.7746462109260648
-78012  -98.4977772463766996    28.7876620676328336
-34471  -82.11850534837167      29.1688537037371987
-56558  -95.5396029999999854    46.261572857142859
-72447  -90.3353711659511021    35.9062813543156309
-39480  -89.3100601235181273    31.7135430043977671
-16932  -76.948960940071899     41.7822082764682747
-29402  -79.9503326666666538    32.782037333333335
-74316  -95.3224677500000013    36.3097989999999982
-29042  -81.1468331257539717    33.3189504126960401
-32836  -81.5103379766755296    28.4241187175189829
-46941  -85.6968623669689151    40.8297833870714229
-07057  -74.1075416589205815    40.8534686664168376
-88102  -103.327256642857151    34.7785416785714148
-23059  -77.5636855200021671    37.692631869724643
-71070  -92.9923444542433231    32.1060278340380378
-61913  -88.445358655225661     39.816922981874292
-00637  -66.9473426260868649    18.0643753786561163
-13848  -75.7221888888888799    42.2323981111111095
-77327  -95.0020222770208989    30.3378469569266009
-71342  -92.1254527182971259    31.6453735987666462
-33490  -80.2842933333333519    27.0268740952380924
-14609  -77.5581391143026906    43.1761398895273061
-19390  -75.8476018668325622    39.8217360466249062
-17364  -76.8995750442412458    39.9285775152556042
-66043  -94.9053467448273409    39.2479658080959624
-67117  -97.3495786790540194    38.0754518648648528
-98933  -120.619327309615315    46.4040734128205017
-72701  -94.1149747287606289    36.0231394979571675
-60128  -88.0058566666666735    41.8517896666666616
-05450  -72.7840261587334822    44.8922155063353543
-39829  -84.3430281714285996    30.7165449999999964
-56057  -93.7172356656241163    44.3947722942206298
-60638  -87.7719910282354476    41.78777020178849
-84043  -111.872970873554976    40.4044090450434936
-17569  -76.0986536406022509    40.2698865706632034
-12820  -73.6414727065217249    43.4625531195652144
-58625  -102.193652776836203    47.3102970706215018
-74332  -95.2475399966213558    36.5263217251229193
-04406  -69.4957108993006756    45.207728817249432
-30014  -83.8371597777336603    33.5677062818598984
-46343  -87.1962019999999995    41.5361580000000004
-71235  -92.6651700876844018    32.6829704337984168
-75574  -94.5443538712148381    33.3496029445458362
-23411  -81.4035097647058592    36.8844986470588196
-32202  -81.6528632514597632    30.3286460145984123
-36867  -85.0208698338651629    32.490627296981863
-68528  -96.7759221191195991    40.8230463854122618
-85008  -111.998202293660924    33.4668644471250616
-61109  -89.0511699087054751    42.2111494285459088
-51449  -94.7397286870257034    42.2719801943201574
-23177  -77.0160834303239028    37.7370241727183569
-92312  -116.940473200561158    34.7842528120617231
-97603  -121.710552910623306    42.1671917232950832
-01760  -71.3530544829798146    42.2876453671857035
-56521  -95.870264283713837     46.9907658298755209
-56088  -94.4451016675821364    43.8166481705794624
-48446  -83.3334431007235992    43.0568408817974557
-29920  -80.5477646288237707    32.3844269441183954
-98629  -122.621658626448877    45.8764305593918209
-42064  -88.102286784514007     37.3409165545179462
-69128  -103.892754848056512    41.2386851448762997
-43732  -81.6385950506039535    39.8685673920939649
-68651  -97.561655151027864     41.2028361215370822
-02644  -70.5121485743073606    41.6829307942904563
-14726  -79.0188403312757828    42.2569997006173494
-28573  -77.2154645452252453    35.0088630592498902
-78950  -96.4904308260336592    29.9148435153913468
-57381  -98.831738968661881     44.4796245012633946
-72454  -90.2214293596439347    36.3977594666666846
-83341  -114.370372327420156    42.5250131976475814
-04017  -70.1175462229087145    43.7352282338403242
-79766  -102.350490997856724    31.7436606387017797
-24480  -75.6916269999999969    37.6030719999999974
-90047  -118.309353076106134    33.9549706917134628
-25187  -82.0228750101902762    38.7256729106657502
-53826  -90.912052808362418     43.1205948174880547
-43064  -83.2793426188064103    40.099253766516469
-43565  -83.7419876142131869    41.4210564162436654
-74601  -97.0947620715636646    36.7071705256463332
-84772  -112.937253953333297    37.8006100066666733
-56744  -97.1059613476949721    48.2593385986393599
-35563  -87.8970161116374129    33.976580233713328
-85233  -111.807513141230956    33.34267808380487
-49117  -86.7563715058432621    41.7835293010573707
-37369  -84.4816716558287339    35.192723128706163
-94240  -121.258940666666675    38.1451133333333345
-60120  -88.2541184872912936    42.039899826125442
-17570  -76.5695684705882371    40.1294974313725419
-48636  -84.2696000353938217    44.6384118868940902
-03049  -71.5769714350840474    42.7473826899039793
-17504  -76.328110705882338     40.023793352941162
-36302  -85.3374056666666689    31.2075738888888914
-86327  -112.225243254979731    34.5422746133687468
-84075  -112.069004340505472    41.0860844714047815
-51365  -94.7412669528302729    43.3105643333333177
-80210  -104.96266212941633     39.6776454527066491
-38544  -85.6576658953146648    36.1213976430215951
-04427  -69.0083337126369827    44.9797960546019269
-59855  -114.117840452307789    47.6006366584615463
-57115  -96.8876105818182083    43.547652145454542
-52540  -91.8293260188443838    41.1697369233858836
-53924  -90.2591491527057883    43.4765101760562303
-39265  -86.0545035000000098    34.261997000000008
-49065  -85.8350964342246527    42.1410934081283699
-60041  -88.1501621687328623    42.3759245158646536
-44450  -80.8397765563612865    41.4490485748187325
-43717  -81.5544058148148281    39.7898735185184975
-72556  -91.9233019005219347    36.0471035297716469
-48307  -83.1246885509238211    42.662642763267435
-78144  -97.8748321546391367    29.0286387010309248
-38652  -88.9914439515814877    34.4920279279875288
-45359  -84.3524270797544915    40.0517056492842798
-21922  -75.8684566428571543    39.641515714285724
-02135  -71.1540064480018088    42.3490152895208709
-15679  -79.6468734689264721    40.1816527229925882
-93111  -119.803140862933262    34.449551507270975
-61327  -89.3169221927844887    41.2378671877113732
-12542  -73.9924365291059161    41.6061481975052274
-29744  -80.8431789531249763    34.8683727343750078
-51027  -96.3262775918761491    42.9556643738877568
-56738  -96.3288778917276431    48.3357409576440631
-44316  -81.486943999999994     41.0692939999999993
-57279  -96.8232738156089141    45.4244407255575027
-28345  -79.6898035507165758    34.8783249891914053
-06359  -71.8746431027506958    41.4657948284279456
-68514  -96.6472667172774607    40.9325052879581364
-35480  -87.7848590786794887    33.0950494184660826
-80833  -104.018200109632176    38.7747070263638136
-93644  -119.63459661208924     37.3405680232986228
-57261  -97.483981634799008     45.5260327265774123
-34494  -82.0484105000000028    28.919668999999999
-15741  -78.8727854999999778    40.7992365425531816
-74883  -96.2338328108107675    35.2352141261261238
-75930  -94.0082282063147687    31.3646693289341876
-96708  -156.280255432169383    20.9053214260937459
-98664  -122.577997198164638    45.6220106614804379
-25087  -82.0252692413793199    38.6471114827586177
-29418  -80.0771419943693417    32.8961571432779465
-16329  -79.2761816738055956    41.8097275164744531
-25163  -81.3910937999999931    38.205331000000001
-37707  -83.5801374999999922    36.5836339062500002
-29862  -81.3893020000000007    35.2172809999999998
-15955  -78.7264666875979771    40.32865932981219
-48336  -83.3453756736206799    42.4640184423094524
-68870  -99.1478365013121845    40.834542481889784
-24595  -79.0784353068181787    37.5565816931818333
-06777  -73.3446654737183223    41.6921042415289236
-30220  -84.8175675008661329    33.222407764833342
-48130  -83.8980147408584855    42.3531267973500718
-62226  -89.9971144229002107    38.5429921688409038
-20657  -76.4334611263152226    38.3708003639325668
-62874  -88.977979682170556     37.9184560465116007
-03882  -71.0369712764975532    43.7399617669520424
-39565  -88.7413866674425975    30.5619950556603719
-14541  -76.8404564928000156    42.7514002743999981
-52323  -90.9574592263253976    41.9863847641681573
-54664  -90.6082012344551231    43.4903086558156602
-65676  -92.6131568338657161    36.5660458370606563
-44680  -81.5337744024618587    40.6003380608453455
-94947  -122.587740821622532    38.0962255364487632
-97754  -120.785582220427798    44.2708916716695668
-78675  -98.7047531073657751    30.430700852684172
-08724  -74.1151240182966262    40.0880735338765106
-13659  -75.873621824760761     43.7462024706937456
-00670  -67.0109234036697217    18.2381150779816501
-68355  -95.5896850196547945    40.0753297025551376
-38703  -91.0308204574799902    33.4289256659692882
-83442  -111.900954010190887    43.6656160361308494
-49439  -85.8814849999999979    43.5426019999999951
-57565  -99.4402274307692409    43.7384921692307671
-24634  -81.8984330784699921    37.272270115142021
-88241  -103.190049685714243    32.7153294571428574
-67842  -99.7785814119132368    37.6044375162454543
-21538  -79.2065002231214237    39.3990034231213215
-95439  -122.776344293628682    38.4905404501384751
-60015  -87.8675899262678541    42.1698184589081038
-61052  -89.003716525351237     42.1078383115454713
-25149  -81.8145041212121242    37.958929636363635
-33154  -80.1291012996276919    25.8849382047146506
-01834  -71.0225528288758312    42.7528520587033682
-57266  -97.0768261424778274    45.2574556530973879
-04008  -69.875220577646985     44.0368661278431546
-28382  -78.505841893439765     34.9909951331802418
-18463  -75.3921472439807587    41.3489285200641774
-30565  -83.4166127060584017    34.094046934920101
-86430  -114.451112481481488    35.232022839506179
-97632  -121.419528661444815    42.0250408315927189
-29071  -81.2277634000000148    33.9698146000000065
-72641  -93.195413619627999     35.9854077658755642
-14727  -78.2915585260837474    42.2056074243579076
-17563  -76.1831877204016763    39.7674433622675139
-72971  -96.5555576666666724    28.8099999999999987
-22923  -78.3273606944680409    38.1944370807038567
-46460  -85.9359153999999705    40.117399000000006
-59101  -108.479349147031755    45.7466723449324348
-57601  -100.470741700378525    45.5163584447448386
-80019  -104.735615756235731    39.7869439172335717
-41524  -82.2354278854369483    37.4154539582523995
-76034  -97.1477293576216852    32.8894420818309356
-54515  -90.4846867499999945    45.5428119375000051
-73503  -98.3961557938388154    34.6572646311216275
-67646  -99.5687309432347831    39.6346678950232487
-04456  -68.9894516741355091    44.8795384013831296
-31022  -83.0823272189422966    32.5141475135301121
-07652  -74.0684942056195723    40.9490601739230939
-68337  -95.8295759519379402    40.117616885271282
-75227  -96.689292941073262     32.7693558362968531
-84058  -111.710427507095886    40.2807545620345948
-95935  -121.215496489111459    39.3796298299342524
-75147  -96.0897776820646214    32.3934106360406275
-25851  -81.2686889470899416    37.7949567513227578
-06472  -72.7851372127569789    41.3915337746147216
-55386  -93.662188201143266     44.8526090777026667
-63863  -89.979353008205095     36.5680114023076541
-59037  -108.252241423671606    45.8642961832528968
-58830  -103.501259186785205    48.5864339822109201
-85342  -112.558281204051156    33.8716125200426532
-01240  -73.272909227242252     42.3620380391410336
-13144  -75.9675789968122643    43.5624649458104827
-47533  -86.8406426999999894    38.7052882999999994
-89043  -114.431034205818122    38.0054595130909192
-08535  -74.4348847658649788    40.2328499724084523
-74545  -95.5152695652173804    34.885458217391303
-71079  -92.8260401370327344    32.9268149082672679
-23607  -76.4187735682975671    36.9882713421500853
-25836  -81.2741151301169111    37.7718981008772161
-27357  -79.9748361320052084    36.2720536970118559
-76006  -97.0827631526899495    32.7769987212637162
-67073  -97.3127098516320075    38.3789800178041389
-77650  -94.6632846639003134    29.4378058572126982
-22954  -79.0142574830508266    37.7926809915254367
-72687  -92.7109778828955484    36.2644212871946863
-85755  -110.975916255497111    32.4515470035402771
-40601  -84.8820140802152281    38.2152435934480792
-28212  -80.7444094946871189    35.1891222404250783
-86074  -112.529589999999999    36.9825850000000003
-41132  -82.833960161904642     38.2553804831168449
-81121  -107.417375288553288    37.0285111868044723
-10580  -73.6918216185222548    40.9753776729569523
-31901  -84.9794023577763511    32.4726896720875118
-61084  -89.1882823448448931    42.1182424544098737
-78871  -101.702334677777742    30.1511213999999867
-77878  -96.4631302959831771    30.4768987928118698
-75173  -96.3939255718820505    33.0608711411500096
-62870  -89.0503773675424668    38.6249035629056579
-23113  -77.657305725836693     37.5312391413511293
-12845  -73.6952411576777422    43.4257114668408093
-78886  -99.1617834281610158    29.1518440258620863
-64766  -94.1580644999999947    37.5861919999999969
-56279  -95.1695776031860561    45.2095349276960263
-69336  -103.103012920885988    41.6659902765823418
-44822  -82.403968396280348     40.565698600719891
-44310  -81.5006194970124653    41.106594742301354
-44473  -80.6687329167482261    41.2416801415279153
-95949  -121.085156181121235    39.112798376058457
-04009  -70.7357705758354456    44.0534373852132717
-02871  -71.2526994154519286    41.5889229307830561
-02808  -71.7467990954357902    41.4078623573075078
-84052  -110.048820967741747    40.1911041459546325
-23917  -78.330732120030774     36.6267665783385965
-55368  -93.9136939140469593    44.7575978662952494
-63044  -90.4201531609899121    38.7529055673251008
-96063  -121.585891098384664    40.3532865183553398
-00956  -66.1671764479866198    18.3454593590603885
-77066  -95.498753543782982     29.9611107904910803
-25919  -81.244551117647049     37.930828558823535
-41261  -86.4899691702127598    37.1934633404255379
-37187  -87.2140240324395961    36.1284980722661047
-95220  -121.233887431350226    38.1960750093036552
-50854  -94.2354125402822831    40.7085449863450179
-18020  -75.3247821226226932    40.6621927586051797
-94592  -122.273130367729848    38.0939221088180346
-97837  -118.085481509966797    44.504874897009941
-16863  -78.4878882362710186    40.9154962871186072
-02879  -71.5320427238860503    41.4271880537222259
-53508  -89.562162990222177     42.8865187818293521
-30454  -82.7237218895582913    32.4597434404283973
-76058  -97.4157174771865755    32.4704496201459918
-48933  -84.5549195937053071    42.7328066351931
-53049  -88.1393709999999828    43.879801999999998
-94402  -122.331612317793713    37.5469765605189494
-77855  -96.1223370522087635    31.1588837028112415
-31722  -83.6245070121950533    31.0704199634146434
-49881  -88.0785520370370421    46.0894319629629692
-72180  -92.2134119152542269    34.5295467525423661
-16726  -78.5670953378213568    41.8202312558139582
-52002  -90.7624298150614806    42.5160738553771296
-42722  -85.7200477376351131    37.2741853581408691
-22722  -78.2227632431507232    38.4733932363013267
-44656  -81.3350496781657739    40.5672176650621594
-56291  -96.058576750612616     44.609581628676473
-62927  -89.2391367121212085    37.9380609898990073
-20010  -77.0318892247859139    38.9331047878675136
-30471  -82.1791479166519281    32.5374780579890057
-67447  -96.9851346429322234    39.4750485240837889
-64801  -94.5018846753306434    37.0995031097263208
-84307  -112.261495473053913    41.5063775211798358
-77042  -95.5594929567488691    29.7441522933134657
-12418  -74.1482256162738906    42.3617632530013779
-84525  -110.155573890310734    39.0068450356490288
-72560  -92.0957278316331553    35.850307265267503
-00912  -66.0592688438618154    18.4454241060786543
-39319  -84.3390674999999987    33.8560659999999984
-30412  -82.4863632980132593    32.0848113841059543
-97822  -120.333933799999997    45.2987911999999966
-05036  -72.5799230053321338    44.0270613803598607
-25818  -81.228141785234925     37.83812152013423
-96156  -119.959114083333304    38.9436296666666593
-90402  -118.504029860709807    34.0359634168856928
-65731  -93.1218765540136957    36.6552183290386324
-10007  -74.0086076612245023    40.7141166653061148
-64573  -90.1571589487179637    40.2716920769230882
-57259  -96.5598486556775981    45.02168956776557
-89502  -119.76315010252118     39.4965702828533765
-46515  -85.9398025454545405    41.6654974545454664
-77419  -96.2094928854700271    28.8711608940170841
-34537  -82.4982505499999945    27.3455222000000049
-76679  -96.626600473837442     31.9538365046511252
-10954  -74.0128406091630353    41.1013728765555229
-56134  -96.2158710909091468    43.7886870230879879
-65724  -93.3240358845209386    37.8459956658476528
-75439  -96.2705311976422138    33.566359215672648
-90277  -118.382833919429686    33.8269421682677418
-65578  -91.6862514285714241    37.3102925714285689
-87572  -105.885069249999987    35.9565928749999983
-29724  -81.0122726217948781    34.775401288461552
-30544  -83.5633643333333396    34.5888629999999964
-08732  -74.1449525678321493    39.9424853020978645
-12412  -74.2665469933388493    42.0033588326394778
-22303  -77.0814262397210967    38.7925617092510464
-40808  -83.266088785502788     36.9841223757396591
-42026  -88.2620520000000113    36.769831300000007
-96007  -122.33380002871246     40.4573101411271097
-96719  -155.827779917647035    20.2290130705882412
-85078  -111.985338545454539    33.7282810909090855
-95938  -121.788697552022384    39.6377307137810249
-40516  -84.3765828742492232    38.0805695305546124
-72217  -92.171338333333324     34.8286343333333335
-03243  -71.7525506478136776    43.5307294134981788
-24416  -79.3566139543911078    37.7481350335468022
-71865  -94.1471303109541111    33.7400044805653678
-17035  -77.5796675623775229    40.4252607689936525
-57049  -96.5018057756355745    42.5187651118752186
-68852  -99.1466205964215277    41.1541937852882995
-10562  -73.843825769679512     41.1806017609840538
-03459  -72.1526501666666746    43.0133981666666685
-14817  -76.3546205929267501    42.3657414319962271
-92551  -117.220718468363259    33.8863085584008843
-28619  -81.6039569021207711    35.7573630848287252
-18015  -75.3745260753084949    40.5910492429521739
-61553  -90.0331226271186864    40.6261689491525289
-51636  -95.2432002024703195    40.663355808998773
-58466  -98.3691271562884424    46.6584505266584344
-59221  -104.097754781485875    47.8760900854190581
-33523  -82.2150703494463784    28.431750346579463
-87935  -107.219708175454798    33.2109830660605709
-98901  -120.45541060831161     46.6164580917664964
-46528  -85.8168636368131672    41.6147419585143439
-49082  -84.8835820575683329    41.9230893129582682
-08241  -74.4937360414364349    39.5232430460405411
-12156  -73.7356947661725002    42.4775402021563053
-58552  -100.284315965762303    46.2591190853712959
-04918  -69.8717854780652345    44.5148027345332125
-65335  -93.3129927103174737    38.5059759047619394
-80430  -106.41400431987563     40.5079283964804162
-99170  -117.378450721352692    47.2687071822166658
-38045  -89.2491279615384485    35.285009115384625
-32568  -87.4593126487106076    30.8890669252453343
-08808  -75.0415113846153758    40.7379871538461487
-60504  -88.2450922297957732    41.7445276412984754
-10919  -74.3823916012120492    41.5250241878787918
-60924  -87.8805174620388527    40.5712374566160037
-40336  -83.9931524664852134    37.6981147848797349
-49745  -84.4669055312700863    46.0369695854287784
-78039  -98.8238167381428525    29.3153634696058809
-84020  -111.86310342899634     40.5058218679298889
-55342  -94.7291993580945189    44.7439048870753382
-15015  -80.0814661949579261    40.6360351831932647
-33714  -82.6772341199825576    27.817211465750475
-54156  -87.9494016666666596    45.6254620357142855
-51645  -95.420025393530949     40.8846518849955842
-75931  -94.0101694219994783    31.0986585264613922
-71711  -92.7197193333333303    33.6288053333333323
-83546  -115.801958380487804    46.4990010406504339
-78943  -96.5904344054054036    29.699826918918923
-84770  -113.603419203184544    37.1221271202470788
-00618  -66.3076541875000061    18.1847657500000004
-15401  -79.7381963836600391    39.8970949633416367
-02870  -71.5588037499999956    41.1700879999999998
-23669  -76.3409562048049537    37.044383936294274
-55790  -92.3466759520784848    47.8094194112355453
-16053  -79.9819157978977415    40.812623831293223
-13142  -76.1389824590165034    43.5610764472558927
-35951  -86.1650781649795761    34.3240305501519387
-95320  -121.002680029377885    37.8009010862135497
-41602  -82.7588573679654758    37.7369588441558221
-02335  -70.6142025000000046    41.7177245000000028
-14701  -79.247622054136059     42.0892006754873265
-61460  -90.8265226825775898    40.7484969737470024
-92259  -115.955110339308618    32.7652364404609457
-67450  -98.4180329660546249    38.6122581347420137
-48744  -83.3503265672052436    43.3471166796150769
-65730  -94.17443557822088      36.6202430820551967
-14030  -78.5031232521738076    42.5575131177257475
-65305  -93.5739042479253982    38.7272998703319828
-73634  -99.1731335000000058    35.1580294999999978
-29225  -81.028582654411764     33.9939893823529502
-91016  -118.000287195263752    34.1468330190797928
-71422  -92.6536353060311484    32.0841059434332294
-07760  -74.0056950388532613    40.3679231194682231
-31081  -84.2634218694690986    32.4100264026548572
-25015  -81.5241285083193077    38.2367300162987576
-62999  -89.0527949628609861    37.9000803837689517
-95234  -121.500469767857098    37.9532400937500327
-75417  -95.161708684290204     33.4497722438498855
-84634  -111.815091557105006    39.152121128154036
-83613  -115.880577785714294    43.6314762142857191
-91786  -117.656329165819443    34.105432349129913
-66086  -95.0865104902215847    39.1152540609517558
-02860  -71.3898149893994258    41.8720331932104486
-79755  -101.924096151515158    31.5921367636363684
-33772  -82.7969685619144258    27.8445596574941803
-42037  -88.1701389698795026    37.1885768674698696
-16235  -79.3562112566387441    41.319352742766597
-23939  -78.7660995396039993    37.3171651188118503
-15009  -80.3473567414747833    40.6985506409216384
-84095  -111.957033749120427    40.5606572869965305
-84760  -112.777061129793495    37.8874106949852418
-06379  -71.8509756248434286    41.3715727756892448
-12470  -74.0415945250247063    42.2727963984297901
-12864  -74.3107424137930934    43.7204135517241355
-36316  -85.8681339465867097    31.1891194434601324
-93631  -119.538216150699171    36.5033078364515973
-45784  -81.6878415900347932    39.3767019381899317
-19150  -75.1712685028665817    40.0726435941851449
-05072  -72.3863069684913256    43.8750847250158316
-46740  -84.9654247113984269    40.602890988957391
-01856  -111.076513999999989    31.7277278888888894
-68629  -97.1305807587016119    41.7547506769651875
-77853  -96.8365280567473548    30.3620195397923922
-08316  -74.9951145454545269    39.2843464969696967
-48359  -83.2827152699114066    42.7219927433626765
-95240  -121.244576601092476    38.123068405524613
-05682  -72.5654746718647772    44.3839602962963511
-98118  -122.275630826571089    47.5408676024018177
-61845  -88.4016265546665636    40.368098661333299
-88410  -103.239018736301361    35.9147431232876571
-23064  -76.2996203631578709    37.4982840815789515
-96816  -157.795414973516813    21.2838724587216745
-28612  -81.5111615205411653    35.6851253164880475
-47405  -86.5212823361884489    39.1740348158458076
-55105  -93.1661593709944214    44.9343639960356427
-24065  -79.9581702869405007    37.1179970848245446
-78583  -97.5274397158391508    26.2568482992908123
-42413  -87.4917831557477257    37.4313092904062046
-17728  -77.08052795989191      41.3216148763111732
-78211  -98.5475920719098468    29.3576997368914618
-92530  -117.359822258526208    33.6642501354484054
-26814  -79.4434004788519701    38.7397364954682217
-15458  -79.8571661261997008    39.8862300142196844
-77481  -95.6077022802197689    29.4900940439560451
-42403  -87.9338771967212978    37.4454659836065531
-06048  -72.3196696666666554    41.9107486666666702
-59544  -107.526279399617664    48.7773808432122564
-17894  -75.2062600000000003    40.4134453333333354
-40280  -85.6877227179487164    38.2488477435897423
-63823  -89.4520114120413439    36.9041431166510421
-51463  -94.9275676534653172    41.9104358184818437
-93285  -118.48337689500265     35.7089833725435213
-81015  -106.152673800000002    35.0340643999999983
-50538  -94.4297259868815217    42.2788776541442104
-50130  -93.6657434955890693    42.3013230633269544
-61476  -90.8312229981761874    41.1117137270516366
-55946  -92.9621026036757598    44.2688836779863806
-95536  -124.262488245732143    40.5412934372925804
-93276  -119.372498670000027    35.2750886399999999
-94401  -122.319844253308943    37.5717454861286981
-96822  -157.817809508649162    21.3130593798036472
-50672  -93.081989423794866     42.4230910264384846
-24153  -80.0860729074496902    37.2931114359916691
-98622  -122.484061782608691    45.8254596521739259
-21734  -77.7076120218750077    39.6091319562500033
-58045  -97.055151224985039     47.3996759909035319
-60517  -88.046918011344772     41.7486773293293965
-01073  -72.7262269777116899    42.2270541784545728
-55960  -92.5280884553780396    44.1507899263780246
-87575  -106.526098452296793    36.6540633763250767
-25865  -81.3272921638847635    37.7399951177542192
-63135  -90.3008500858231287    38.7506103719796045
-75562  -94.2482997318435451    32.9323381899441543
-84762  -112.641462255985886    37.504489011267566
-69120  -100.254747969558736    41.3994773105023199
-44145  -81.9287177894924952    41.452349149897799
-25508  -82.0080839222143112    37.9666845701501714
-67346  -96.4376710702402704    37.3221209685767121
-98513  -122.754199186324357    47.0085446351368432
-04971  -69.3935777835789338    44.9281498735050064
-87565  -105.489304491228097    35.4226070745613981
-00909  -66.0683404816111732    18.4427962364273235
-83232  -111.980646062264029    42.1309001000000052
-59044  -108.760326615805766    45.6542807458175446
-26804  -79.5375416734853644    38.6150369260424213
-25301  -81.6299585240507639    38.351175474430427
-80425  -105.236401817480669    39.3846446786632782
-04255  -70.6682292945522192    44.351085244730335
-55090  -92.9571494952977275    45.0539992006269543
-16259  -79.448493099978819     40.9163203430246298
-53216  -87.9754815263728176    43.0868230122756799
-38480  -89.2766536249999945    31.760257124999999
-96099  -122.306917238095238    40.86244984126985
-48886  -85.1598353368907226    43.4196388331553962
-57238  -96.8746669851935991    44.8719742938495898
-54855  -90.8363347463216968    46.3859837935059289
-87122  -106.51611854655016     35.1800563790225667
-31560  -82.0419286522338211    31.5216862902633714
-79415  -101.889764510592798    33.6424272953532579
-57424  -98.5055380441320807    44.9906899159856266
-28534  -77.8395257499999929    35.4085702500000039
-44864  -82.3227672075031762    40.6729013013642131
-19128  -75.2259990026522445    40.0453806732968474
-08008  -74.1968775724618865    39.6238594506873412
-17803  -76.3606175151515032    40.0498901212121154
-25661  -82.273753895745287     37.6915209495865327
-95426  -122.725702730215744    38.8341358734262627
-49125  -86.5992735753306704    41.8882102398634046
-72075  -91.30797903448277      35.6410880344827561
-06244  -71.9832934680851082    41.986117744680854
-97931  -123.824223847222257    44.5161074722222025
-23839  -76.9197997351739673    37.0771907201130944
-83704  -116.287326139694997    43.6315845006006597
-75124  -95.9921038812490082    32.3137577882410909
-85752  -111.120100500000007    32.3643697499999945
-61079  -89.1991150000000204    42.4443315081967114
-50421  -93.622668472729984     42.845823512313288
-51401  -94.8721720267652984    42.0660854139096116
-21108  -76.6178231879517       39.0969559777311915
-97720  -118.98891581496521     43.5901338025391496
-54454  -89.8838640275589       44.6044915033746321
-65345  -93.1004538804450021    38.5502704402224339
-31545  -81.9215215996548949    31.661780887979674
-62413  -87.8459568000000957    39.1371900172042402
-62063  -90.1427532743121134    39.1881618446339317
-84636  -112.286938477099412    39.1166802862595802
-31421  -81.0861016153846208    32.0863951538461549
-61744  -88.8804252707330704    40.764280969157042
-68603  -96.2997112500000014    41.0247859999999989
-74554  -95.7168471761309121    34.9282234100096289
-15056  -80.2009334290618199    40.5655224874142206
-76082  -97.7022015739903793    32.96352005843341
-30171  -84.744699698780579     34.355478750113015
-83345  -113.911248499999999    42.577022999999997
-47535  -87.3065335234375226    38.8654376113281117
-66207  -94.6445980720461364    38.9574596344608821
-75666  -94.9062735999999916    32.3613466000000045
-17046  -76.428840929522579     40.36800265053499
-33432  -80.0860221961600303    26.3465663603877367
-25979  -80.9361840604924367    37.5099804544968265
-97867  -117.983339141724528    45.0312231372646039
-86302  -112.540200738532135    34.5603446330275048
-48003  -83.046255650687641     42.9246131308447829
-27695  -78.6811317142857121    35.786521142857147
-33169  -80.2144407663791981    25.9450495479903864
-47455  -86.9534554876032644    39.3130913719008319
-49544  -85.715470000743565     43.019647025539328
-12181  -73.5445544210526236    42.7922935789473726
-27890  -77.604341254219392     36.4198872542193754
-41848  -82.9478049696969322    37.1105367878787931
-72046  -91.962299428184437     34.5533106452574899
-07839  -74.8437111111111051    40.9939549999999997
-02859  -71.7267921003133608    41.9644894378739011
-75559  -94.631347591683749     33.4802736768315512
-25550  -82.0848838307823456    38.8618313564551698
-55052  -93.4400805893179154    44.2386231505734244
-50215  -105.583629399999992    47.423216999999994
-04675  -68.2398579623971386    44.2971714594594914
-72396  -90.7962280747029808    35.2287579655136298
-71966  -93.8984205000000003    34.5847282499999977
-47545  -87.0011508421052469    38.4135198947368437
-75203  -96.8040871705699999    32.7442709503964338
-36011  -85.6628567592592702    31.7013538703703794
-99619  -152.497883750000028    57.7428488750000071
-70447  -90.1894339405273797    30.4343641181840354
-89139  -115.213259748218192    36.0358310238774564
-10331  -84.5284070000000014    33.7255595000000028
-49016  -85.2979090000000042    42.3502645000000015
-53109  -88.1405126666666661    42.545177333333335
-71662  -91.4902217014217314    33.8425357867298615
-49038  -86.3299083421288884    42.2098215678528774
-64105  -94.589552429615992     39.1039580667275999
-37167  -86.5285404237325508    35.9606757115150444
-22847  -78.7075475057179688    38.7133553113087743
-04611  -67.6014270358880793    44.5049921849147907
-22580  -77.4537892783409632    38.1025388933676155
-30830  -81.980927970937401     33.0906152908139291
-59926  -114.029874434900478    48.3866806962025393
-37343  -85.2143811893725029    35.1630592276740472
-65347  -93.0512295471050237    38.9704622158979319
-14878  -76.9416027160817748    42.4513376364588666
-14810  -77.3393080695666413    42.3491411236826139
-74637  -96.7030484375330275    36.5686150848709559
-59033  -109.717028949284867    45.732336889466815
-95207  -121.325107417322585    38.0038776287447462
-77004  -95.3656265139608763    29.7282579649463123
-17738  -77.5935610961538629    41.2879098076923086
-27284  -80.0854981321932229    36.1178362632352545
-26588  -80.1402668394535738    39.5672996646741666
-88346  -105.580166343647406    33.3374396484529001
-58549  -99.887293185388117     46.4924711726026132
-86401  -113.948262500567168    35.22378961478978
-70806  -91.13060794718983      30.4472998310259939
-03860  -71.1319640178340649    44.0408526280692669
-52146  -91.2013603858668631    43.1764794708583963
-43127  -82.3242384351851797    39.4767807685185019
-98624  -124.020443776565415    46.3234558244781525
-71263  -91.4211720698396988    32.8746686132102539
-71411  -93.0817606285600476    31.9142785528778532
-34756  -81.6811002477719512    28.5895906037128427
-18642  -75.7653679159357694    41.3475687309941549
-78147  -98.0799239695182337    29.0699134611603185
-00641  -66.7228116976744872    18.2760661395348833
-91030  -118.158281918495661    34.1108256870562059
-55009  -92.8792851273878597    44.4882972823593477
-07845  -74.6280670000000015    40.8265121538461528
-06784  -73.4921132696485273    41.5795916431159895
-12983  -74.1821478679730575    44.3321177707286722
-58582  -100.596293500000002    46.3916035000000022
-03248  -72.0648985890410358    43.5065766849315168
-31088  -83.6617802216642303    32.5879578975709521
-83540  -116.796970802705417    46.3797470505971674
-10278  -74.0041934999999995    40.7154847500000017
-78721  -97.6847095146385271    30.2726226335773028
-47225  -85.3744007169811283    39.4459587735849055
-58529  -101.567104081184269    46.3383595093070539
-97507  -117.398666050000003    44.5297434250000066
-64058  -94.3396566334606206    39.1516273733624871
-65630  -93.2151255871367397    36.8302876203319016
-75706  -95.3218223812678218    32.4491779102957523
-72028  -92.4581647837837863    35.4926662702702771
-72648  -93.1136034674555475    36.090089520710066
-60054  -88.2858508571428473    41.7065100000000015
-47485  -87.2314877499999994    39.1919364999999971
-70577  -91.9362950930189413    30.5667074628114399
-51452  -94.7831966730769011    42.124903544871799
-27605  -78.6545041375054552    35.7904983076245244
-08827  -74.9689786626409642    40.6744787609480554
-28102  -79.9749860681818348    34.8134331136363713
-42273  -86.8674458522279025    37.208269908065418
-63663  -90.6442926317281064    37.6236061586402499
-14521  -76.7964693521754214    42.6751785871873963
-27316  -79.6320685538617994    35.7081069919390259
-26601  -80.6667806103475584    38.6441474176107036
-03750  -72.2025576035367891    43.7064704991443662
-14081  -79.0833663123993915    42.5632585040258604
-26298  -80.287331779069774     38.4910929186046573
-85606  -109.915945443430644    32.0172299649634624
-20675  -77.0126761532976047    38.584586417557901
-66510  -95.6267668006508842    38.5015756558177742
-58348  -99.5544139294493107    47.8480456008192192
-35205  -86.8053241765157111    33.4967940692631174
-03909  -70.6607374337621508    43.1573198049903723
-99652  -149.858837621517296    61.5412688275370456
-33042  -81.4712373250623472    24.6590861442307627
-01805  -71.2085650000000072    42.4861118461538538
-14215  -78.8093446345409916    42.9352954084539533
-23701  -76.3697744636155846    36.8088875784183074
-78180  -96.6040464999999955    32.7120034999999945
-06082  -72.5610613696380256    41.9882652412417912
-65323  -93.6197354839285083    38.4591072535714389
-10506  -73.6350855465612426    41.1869039823492287
-75846  -96.1720737813556212    31.3372240936824724
-62633  -89.8797111190564948    40.214449222263255
-17350  -77.0670735190180807    39.8800346703147
-07643  -74.0420534299876039    40.8493939101611048
-37035  -87.1278892665090865    36.3830071140008826
-36028  -86.389608817728373     31.4773999646967404
-28503  -77.5952466399999992    35.3181984
-31536  -81.7733029607843065    31.5756047254901944
-18764  -75.8680855000000065    41.2582420000000027
-17850  -76.8535794475308762    40.9636195771604932
-37348  -86.4411724090793854    35.1164722011537407
-82638  -107.400540208333311    43.1185939791666613
-07931  -74.6473738017999153    40.7111295344600848
-15148  -79.8007874712268972    40.3932591411509279
-79537  -100.217501928131398    32.2713550636550295
-60047  -88.0501256975726818    42.2030548039134814
-23413  -75.8771580730277861    37.4684779530916714
-93301  -119.022020849266994    35.3827712355979003
-80018  -104.713484223006105    39.6894913660018389
-44639  -81.2057871948051826    40.4523894675324698
-56047  -94.2328160740740941    43.7413109074073887
-13424  -75.3492477824609921    43.1511486587354938
-73641  -99.1402261033434087    35.2780125379939165
-55403  -93.2871480620416378    44.9694863801467051
-18036  -75.3981708361150709    40.5089817133096304
-80125  -105.062875172123228    39.4772196357727054
-14772  -78.9541713250698649    42.1569184959622447
-72432  -90.6961672716160194    35.5694665922629127
-11729  -73.3272941487043681    40.7609306699211658
-71602  -92.1102668840271264    34.2640426881924469
-56176  -94.7200982176844093    43.7830639535406831
-36754  -87.6987284997318       32.1367108053619219
-54974  -88.6702610654361933    43.8105655100671072
-77426  -96.2612868504920272    30.1251720212823493
-16371  -79.3258625361335277    41.865208539633521
-97439  -124.086240307561283    44.0102030324577171
-79788  -103.004707201232108    31.5643644496919862
-61846  -87.6250672031535771    39.9729375722658702
-58833  -103.525020126213562    48.9093433640776851
-98843  -120.030526764789528    47.7801031603425272
-22403  -76.4931907499999966    38.9689862500000004
-77961  -96.3460781740506604    28.8534808892405081
-72575  -91.6148343333333344    35.6970509333333297
-56318  -94.6689029577015191    45.8523387096966815
-08735  -74.0685553753138493    39.9828149616074171
-43036  -83.2638631964285878    40.352682991071454
-77531  -95.4034340091480431    29.0455640002230915
-66520  -96.6184425727209799    39.4230555305032411
-68620  -98.021704786233272     41.698568618817049
-16621  -78.0958195484283664    40.2980532450287896
-61739  -88.510914709388345     40.7365855537282044
-25260  -82.0286287350357668    39.0154889808460084
-62977  -88.5363933531073712    37.8464941574858926
-21104  -76.9140184597779779    39.3468339838187475
-12972  -73.5396024194836286    44.5685401123947642
-26150  -81.5253193970572738    39.1665265103109377
-63371  -90.9022505384615584    39.2615354615384575
-80120  -105.005562685994505    39.594062130240637
-47616  -87.9164311096696878    38.2061195837264052
-60473  -87.597690384305352     41.5978554228701114
-04730  -67.8753693184050633    46.1268591389449156
-81329  -108.127472600000004    37.1134342000000004
-39117  -89.6743724882575037    32.3419974357364595
-74562  -95.3764164833333155    34.2370712722222237
-17921  -76.3660505888038443    40.7564686321075271
-30056  -83.6697436826378862    33.4948798069987035
-04781  -68.5885182779953624    47.1507691088488059
-54980  -88.7720835315789714    43.9875416789473661
-38622  -90.1428898393782987    34.1712491036269697
-11782  -73.0807293781513749    40.7408361008403617
-65675  -93.4972771428571718    36.9306770918367349
-99217  -117.297544071903218    47.7255841669637917
-29010  -80.2801105645785782    34.2108032639484989
-58646  -102.271186533629276    46.2059432761375959
-45895  -84.1623573422613731    40.5775533927826757
-15469  -79.4379840500475751    40.0182745052431912
-66072  -94.96998969005692      38.3174030730192499
-06757  -73.4528744166856882    41.7341444513716624
-55115  -92.9566672820083966    45.061678729652634
-53551  -88.9063061212242616    43.0781485111287807
-93609  -119.841498727810333    36.5331748973372612
-62905  -89.3541332867306721    37.5708779589602457
-15468  -79.8422098187210167    39.9425285811096984
-16024  -80.0379246603773424    40.7406871273585125
-15742  -78.8603343005941468    40.8138339690334462
-54529  -89.6582914745723372    45.6881302744264346
-96082  -122.489477500000007    40.5927302500000025
-40437  -84.8237364504468445    37.4426384310345597
-97405  -123.115767626236817    44.0005146545424424
-25009  -81.7078904079403259    38.1865244177214649
-82510  -108.556662927678602    42.9954755910714681
-78015  -98.6470742394008937    29.7352911751493174
-00920  -66.0893419966232187    18.4088591553304148
-61239  -90.3921233822715067    41.4949135540166338
-01701  -71.4296397989322003    42.3205981474807089
-38725  -91.0181818197879977    33.6375782273262729
-38468  -87.3029510117035983    35.1327504360409009
-84651  -111.732789983261583    40.0278064826453175
-48835  -84.7459455729895268    43.0248087600525011
-03259  -71.3928332768942937    43.8623301375116696
-35603  -86.9794852983099531    34.542085894512546
-30741  -85.2774766015005099    34.9559732101552001
-88354  -105.514560463227156    32.7870702222831625
-84750  -112.241359030276101    38.4275673303650649
-52654  -91.6679677286691259    41.1442669372013654
-04671  -67.1460876824759225    45.0603691061093343
-57111  -96.4976245000000006    45.3444860000000034
-84533  -110.656225969827489    37.6543405301724121
-42280  -87.104456707619164     36.9437331547619152
-04855  -69.2568879152318573    43.92905640794703
-30031  -84.061876666666663     33.8187682500000051
-03068  -72.3932357999999994    43.1199909999999988
-78216  -98.4957285541019161    29.5405110750117466
-73939  -101.634998284507049    36.5992906788732029
-16661  -78.4486235619677359    40.8315813438978736
-65705  -93.6106294819151685    37.0090570574468885
-97360  -122.475269061705035    44.7525646462554434
-06019  -72.9056699226811133    41.8477013434849354
-40514  -84.5640384827717355    37.982068102791132
-28778  -82.4081795708990938    35.6028304891963359
-39465  -89.201747888625377     31.349415782845945
-60126  -87.940811904822624     41.892139295558394
-71836  -94.3996665257675005    33.7404754851057689
-30102  -84.6295011668441219    34.0968928705080216
-45365  -84.1607541101344623    40.2889642915968622
-45164  -83.7868391066667044    39.5526340466666539
-78600  -98.5539638571428611    30.502238285714288
-32617  -82.0922718525166601    29.3078366402693646
-62806  -88.0668623452706925    38.4004307561509322
-65457  -92.0589198569404914    37.8477240410764608
-72736  -94.4458449244454812    36.4073606042731512
-52237  -91.2542070818347923    42.3502507409576907
-19348  -75.7057964272292736    39.8607378254520555
-47912  -87.0235985333333133    39.739562333333339
-98544  -123.035046592592536    46.7381372592592612
-60077  -87.7566759210404825    42.0332001724907585
-61359  -89.2741363798076577    41.3647946442307699
-48128  -83.2628503288363646    42.3214747466273522
-17316  -77.0058578083476561    39.9641717718426364
-21140  -76.5847450520473956    38.9505878721776071
-49303  -85.8354068611111245    43.2753475300925814
-32647  -82.2892650000000003    29.6224217500000009
-88139  -81.9640129999999942    35.3781315000000021
-02828  -71.5571252082918221    41.8738314085913998
-23842  -77.2425503069844126    37.1329937032736694
-83243  -112.617318054490568    42.2722421786074918
-58705  -101.33376475   48.4222150000000013
-33202  -82.6489997500000015    29.9945230000000009
-73083  -97.4251328256880385    35.6270254587155861
-27973  -76.0723205879689459    36.3618859256145086
-74949  -94.7995839096267332    34.6790580785854488
-18059  -75.5346474892601805    40.7246722183771084
-92606  -117.805122625738463    33.6984779148608666
-93607  -119.577769307692307    36.8418571538461563
-56384  -94.5700724096386125    45.8073415421687145
-28371  -78.9920218609635043    34.9108866240116527
-93962  -121.647108458333335    36.6243249583333252
-51638  -95.2694955554221252    40.8395914562932134
-67039  -97.008188902463317     37.5201606078816852
-19519  -75.7267927826086833    40.3216854130434754
-32112  -81.5633939584095344    29.4315421634522458
-31520  -81.4946921243472957    31.1794212783899418
-74846  -96.9575891249999984    36.965189874999993
-77407  -95.7166318690465658    29.6812740108431719
-99965  -149.700698400000022    61.5474815000000035
-80010  -104.861669929449462    39.7359666868316666
-65793  -91.9590319865827865    36.9885305571023935
-81415  -107.624563751266308    38.6953532228074906
-54923  -88.9274785225114925    43.9727030462480712
-61810  -87.9273648596938244    39.9076379821428446
-21632  -75.7743770178227294    38.7106783261756107
-12235  -75.6942344999999932    38.2175399999999996
-05436  -72.5104546249999942    43.1015540000000072
-96039  -123.410276745321539    41.7671091368999967
-64493  -94.2967212407863258    39.6322035143325166
-54488  -90.3155886388888831    44.8497625381944331
-72470  -90.6963251219686697    36.4642153281027248
-84646  -111.579487426174822    39.5270688238255232
-14020  -78.1967625236313779    42.9962593427580586
-86501  -79.9938410000000033    39.6284132499999942
-07416  -74.586066032414351     41.1130505522569152
-33051  -81.0218025560345012    24.7220240215517286
-39194  -90.4380952935889866    32.8316479357942796
-44470  -80.9577134089027908    41.2939119347826207
-63631  -90.7847267909036759    37.7604597377437017
-28390  -78.9583104244279923    35.2284447540045207
-92637  -117.730499501344681    33.6090754341145086
-44115  -81.6720966445596872    41.4950437658030822
-12816  -73.3884174874294644    43.0525007443728143
-34476  -82.2100647842881642    29.080235572680909
-38342  -88.2876698113565794    36.0911202812152965
-22945  -78.5975737499999951    38.056092249999999
-99328  -117.951668502342656    46.3186163095570365
-24840  -81.4866696875000116    37.6837874374999942
-22711  -78.2906428318912333    38.4608324388133198
-34135  -81.7722405455167518    26.3534430417025476
-37032  -87.0201722992419064    36.5173836665591267
-85208  -111.642712268996647    33.4000586795881134
-66501  -96.2391924190476402    39.0531386476190505
-12435  -74.5100211558643082    41.7272050794752971
-76885  -98.8326476693658975    30.8634725748987968
-05361  -72.8685002375115971    42.7815830874963083
-99635  -151.222740987598286    60.7307259092446401
-90254  -118.397696721640671    33.8661010096180632
-39555  -88.494569846153837     30.6649055384615359
-10920  -73.9420628898245127    41.1521703529824876
-29433  -80.6189583928571381    33.0577656071428549
-69027  -101.501289927536234    40.4438944227053199
-14710  -79.4102563495431752    42.1018197521599333
-00654  -66.8890743333333262    18.0205933333333341
-34683  -82.7592042507644408    28.0793555564576813
-93461  -120.297728147835798    35.6469213754917646
-23433  -76.4931338710509152    36.9075609716311561
-70039  -90.3887478618289748    29.8979929622266738
-59943  -106.744006300000024    45.5641700999999983
-58652  -102.273794861470193    46.8414031572448764
-30148  -84.2869874033576707    34.4427342965992693
-33183  -80.4080306613239912    25.700353280732628
-97380  -123.907240894343403    44.7357521804292091
-14613  -77.6388121274298584    43.1820438977681675
-15075  -79.8226069999999908    40.5834398895027633
-04681  -68.6634708087742496    44.1692209207741513
-02169  -71.0002420559435876    42.2497138162227657
-67623  -98.9535660529986387    39.4503055299859895
-72661  -92.5839268558250126    36.4580478044983565
-24628  -82.214694697368401     37.2915132302631562
-66218  -94.8252377597829934    39.0168748837658796
-78261  -98.4217347126358248    29.679334175659374
-32118  -81.0043563609277584    29.2130690640218091
-03451  -72.4995367668216346    42.8017900564340792
-25118  -81.3027379703703446    38.1095508098765521
-33067  -80.2258340430186649    26.3034908469091953
-20658  -77.1607230759762928    38.5623921182451923
-77963  -97.410776366139288     28.7138505729252138
-25623  -81.8583642749999569    37.7559969625000207
-04895  -70.0347710000000063    45.3961660000000009
-59724  -112.763959787701353    44.7175297569545762
-82229  -105.050573561759663    42.8557027495769844
-77623  -94.4013292849161871    29.5606506927374397
-23126  -77.1439925419789176    37.925089129685233
-85553  -111.290076781679304    33.8429758076335787
-79322  -101.354247056696821    33.6947977429869852
-23930  -78.10428175266415      37.166486676068736
-29911  -81.1526311222969525    32.9266899096065373
-51008  -96.2682374642857042    42.8089109880952279
-07892  -74.7544162500000198    41.306379833333331
-77005  -95.4267119762191101    29.7181530122507667
-68971  -99.2389985107186448    40.0944314237074195
-97345  -122.577420083117772    44.4157041946804938
-40823  -82.9876481340382242    36.9777626532218235
-72037  -91.8713169047618692    34.5381209285714164
-70769  -90.9468353408381205    30.3130141553208325
-44907  -82.5247202738948289    40.7318539136145858
-97004  -122.467872175985974    45.2538542704301463
-48750  -83.3917545110655993    44.4553755704356064
-13647  -74.9725524729729926    44.6077397027027089
-52778  -91.0065879773678716    41.6046111553505682
-56127  -94.7776715436532271    43.5519685721362961
-24586  -79.2908365952857963    36.6040222460158375
-45820  -84.0843496633663108    40.8311335940594162
-67122  -96.3834759658703462    37.6337860529010015
-84025  -111.902932213706691    40.9872150697127537
-51588  -95.9307101874999972    41.9033063749999997
-39451  -88.6187547351923541    31.1600035208400818
-64068  -94.4211294043144136    39.2492127166880209
-21152  -76.6783572094098957    39.5456040480589266
-73055  -97.9413587036022477    34.6411070307032318
-72487  -91.3814713000000154    36.2891748999999919
-66930  -97.4327085142857641    39.7067055142857228
-83128  -111.016866253466404    43.1366979435665954
-60625  -87.7020344164894539    41.9704033857710641
-66760  -94.6224631241379512    37.3439663448275709
-16333  -78.9532017384341884    41.7213790960853785
-93030  -119.173919459647081    34.2088231753664473
-57660  -101.335338728778567    45.8569297556936135
-77045  -95.4367326218789174    29.6309733224356897
-38113  -90.1068346157517652    35.0976839379474654
-99131  -118.123001862590741    48.2779780423728369
-40328  -85.0308814241302429    37.5798751366735146
-93510  -118.193843109660619    34.4919963597692671
-52572  -92.6939149563935558    40.6733319741044355
-27288  -79.7552031338610448    36.4982860217582115
-97135  -123.95888070398685     45.2046433309666469
-83825  -116.613426504999879    48.2524075775000085
-39170  -90.3326471899738692    32.1256816044245781
-73071  -97.4129667369555392    35.2267717902530109
-37398  -86.1478541014525803    35.1909922003714826
-48763  -83.5798413636097024    44.2595360906845698
-49656  -85.6846693940358932    44.0551195738272909
-41271  -82.7232466118479977    37.8285277754199711
-38664  -90.2942991361622234    34.820678846421842
-06248  -72.3990215633801881    41.6813049550638155
-48063  -82.6787351351860877    42.8466531497880396
-99138  -118.281839363177951    48.2744753814209986
-75735  -97.8348252857142882    30.2404765714285695
-63775  -89.8892459580132339    37.7060144683653888
-78369  -99.0178586759776351    27.4393709217877202
-33459  -80.7993721249999908    26.6933601250000017
-92404  -117.264034394462769    34.1553617279357269
-61337  -89.3417999122023474    41.4293971741071445
-63765  -89.9920153333333275    37.3242745833333345
-54650  -91.2161650692810326    43.8913312240959286
-60931  -87.5913178270981234    40.889162522244618
-39395  -89.3140324999999962    32.9402515000000022
-45441  -91.2555784999999986    38.1950519999999969
-80487  -106.878510081698678    40.4805347543141849
-24330  -81.0143388296670963    36.7207065615505499
-19350  -75.7841711648758292    39.7693562305536759
-01749  -71.5545016537450209    42.3898060508110319
-05861  -72.0594781176470462    44.3792349117647262
-59827  -114.082224539234545    45.8908039995214665
-37403  -85.2978162037840804    35.0455303027198113
-85228  -111.524899513955177    32.974192635125938
-32136  -81.1334720127682374    29.4622084148779102
-62441  -87.695061513234549     39.3900386863524048
-63114  -90.364380062091513     38.7034663386017002
-95586  -123.648346578947397    41.0249626578947399
-86325  -111.916745395398607    34.7263285951004548
-44608  -81.5917965583546589    40.6521344030848439
-95945  -121.000459148034935    39.1956218585475256
-29765  -82.3949780000000089    34.4418875
-76133  -97.3781739740909558    32.652260808659662
-02130  -71.1133854938862555    42.310783633915662
-83423  -112.292716236734577    44.2073798428571791
-19960  -75.4027044152744992    38.8558979038981178
-72602  -93.1470108837209381    36.2975905813953474
-32327  -84.331428171506488     30.189992562260386
-59225  -106.012331197828885    48.2311732617610858
-29465  -80.1225233333333335    32.941082999999999
-04924  -69.5511296201313058    44.7682343251331432
-96653  -121.971142     38.6822397499999937
-57061  -97.0335601290322813    44.243445032258073
-91764  -117.619846570321144    34.077431103570099
-02461  -71.2080162345971672    42.3180951012188089
-56724  -95.7208895943737019    48.4585853861891991
-83841  -116.771462423077011    48.1899161672629006
-44856  -82.856803236842083     40.7937874999999934
-58760  -101.191701320000107    48.7051774825315675
-75165  -96.8208915667627679    32.4006403206244826
-04682  -68.6719259999999991    44.1534385
-03445  -72.215301005582262     43.005706547846799
-54667  -90.8564642417404542    43.6532985036261749
-23921  -78.6142202272971389    37.5986120094854073
-43760  -82.1851686033558053    39.8854646568068105
-53152  -88.2473683563218145    42.5780034022988474
-59484  -111.923686484225485    48.9541857988732687
-45341  -84.0238552732833739    39.8808007027280951
-23106  -77.2180406441476492    37.7313034670070735
-17823  -76.7298396378199357    40.7161234321881551
-56014  -93.8311589023827679    43.5828737207147654
-40826  -82.7754933912269166    37.0611105426793586
-71406  -93.5027975034280274    31.7296419618021339
-04575  -69.646787242833085     43.8448374232714784
-51025  -95.5627035371025073    42.4927218771405606
-18255  -75.8288019713686055    40.9473893401810258
-08320  -75.187815999999998     39.4059534000000014
-72383  -91.0245473023255585    34.4834454651162758
-70005  -90.1327306438428479    29.9978427093052069
-97137  -122.955962304595516    45.2189725320925646
-87374  -97.5890688749999953    43.728921624999991
-78612  -97.4952960167470195    30.0900406028121026
-41264  -82.6660789377560548    37.9401200540540415
-96705  -159.581836811563306    21.9095969379014939
-31602  -83.3133602494609704    30.8742559913129391
-59014  -108.904853695912607    45.2690950980926701
-73936  -100.538474666666673    36.9045619999999985
-13148  -76.7853233461204638    42.9047650669574878
-43326  -83.58459813550418      40.6482663130231785
-79424  -101.936119212633585    33.5036178675952527
-91719  -117.480813197183011    33.8092298591549323
-13774  -75.176875103416549     41.9668288790396673
-35160  -86.1185358410854462    33.4179045840780375
-87930  -107.318697906976709    32.8525363953488423
-37825  -83.6690747917103437    36.4164142918998053
-38401  -87.0314406583221825    35.6291645468771421
-42310  -82.7215523333333351    38.1682711666666634
-97541  -122.77362461426587     42.6983055983215891
-71007  -94.0165805783784947    32.3728413999999844
-63080  -91.1394479867202989    38.2272838236871522
-94124  -122.391060189295416    37.731968741658946
-80810  -102.370367111913211    38.8252338324909445
-49797  -84.6892901978609416    44.8776391818181537
-57479  -98.4516297491836667    45.3141574748530331
-62801  -89.1187041834365772    38.5224060353176725
-67123  -97.0080528042930013    37.9483579160354338
-57322  -97.9747280730638437    44.6104787347131762
-98465  -122.532686650711625    47.2482703421733703
-20616  -77.0806709878334999    38.6425002737483112
-10965  -74.014977756140155     41.0622138555555978
-78410  -97.5978430944170299    27.8481366188309956
-90094  -118.420073118896042    33.9746313694267599
-72265  -92.8017785714285708    36.0326698571428565
-50056  -93.3020430099552271    42.0149313294797082
-24486  -78.9267898359050264    38.2924437896154544
-62938  -88.5592076112383921    37.3612644135276426
-49255  -84.8373362180501687    41.7739446831356602
-57659  -100.6181034501993      45.640915398406392
-37749  -84.5563005000000061    35.9949280714285678
-35772  -85.8443420806726323    34.8780697990462301
-02538  -70.6497357007299485    41.7812925485401792
-82244  -104.331630714438546    41.8732524812835152
-29893  -81.7436110000000014    33.5089117500000029
-75936  -94.6035406449197893    30.9324949932263955
-77859  -96.5144438404753515    30.8861095984969971
-18471  -75.7024911795213029    41.5285883710106489
-16940  -77.2362004360189758    41.9791675308057108
-75097  -96.6490788775510623    33.3037699795918272
-83621  -115.774458500000009    43.8445985000000036
-75876  -94.9422387142857218    31.4829226428571403
-15081  -80.2377526416667166    40.5736583541667102
-41265  -82.733229441710975     37.764485748226889
-10017  -73.9736201016166603    40.7526707413395073
-85016  -112.026499367194589    33.5103387046701684
-49107  -86.3917525061001044    41.8409068796118575
-89147  -115.276270028371229    36.1120488728970699
-16732  -78.599883441379319     41.8574177758620536
-52580  -92.0905488598616984    41.1249960588235197
-41702  -83.1826593248407136    37.2770625987261397
-37384  -85.7260780000000011    35.2682831818181768
-75475  -96.2499951894272385    33.4746618414097057
-71241  -92.3703155645295482    32.7682227849609262
-28119  -80.021754919415045     34.8507917120733453
-57271  -97.5085203355122303    44.7304550100218137
-17379  -76.7754625999999973    40.1272282000000047
-57362  -99.0374237123479162    44.4779712388479211
-87049  -107.601533068181794    35.0789938181818073
-76855  -100.099861363636364    31.5515909090909084
-85024  -112.037843907304577    33.680467570041472
-68014  -96.9554485247932973    41.2776238450413615
-97491  -124.373895847457604    42.5910779322033974
-35543  -87.7300734378357561    34.2403857967781278
-76380  -99.2656363877163415    33.6111534399653706
-14047  -78.9893829776477645    42.6941301633847061
-75061  -96.9631831455540691    32.8269427626299546
-04056  -70.8729623840303873    43.6507080893535857
-15327  -79.9559904974796041    39.7523956794354447
-04664  -68.1762534128614277    44.528880481221357
-74003  -96.0026371672287127    36.7440626086120901
-29577  -78.8971460925311305    33.6970344492470701
-36052  -86.0537314408743441    32.1806229061697167
-59485  -111.527832500000031    47.4107216557177864
-93010  -119.054835106192769    34.2369463825467406
-13859  -75.2492339905062551    42.3714845316455637
-76476  -97.913842462490976     32.3676039305657
-47990  -87.0556279906334822    40.0668979812671893
-74105  -95.9633382545052029    36.0978850271116585
-89452  -119.958900236363633    39.2551291818181838
-17974  -76.2360076953642505    40.695806165562928
-54741  -90.9547326087751316    44.6029329634369063
-98029  -122.016342730353372    47.5641106692758626
-71449  -93.5411643922123091    31.5210854661915469
-37321  -85.0087071336493096    35.4984093904915454
-55934  -92.2604006790163993    44.0077740520153
-77612  -93.9529177354306029    30.4088822862803774
-25891  -80.7074750000000023    38.056789000000002
-06478  -73.1314219802743537    41.4267532038549362
-10028  -73.9539256065934296    40.7766423516483698
-77056  -95.4691554279226722    29.7502246685585021
-76686  -96.5419420411764975    31.7382979764705837
-93250  -119.203358886530822    35.6720459718493075
-92934  -116.208938928571456    32.8099675000000062
-31569  -81.675617446266159     30.8979645742788449
-69031  -101.405561500000005    40.1132867500000003
-76043  -97.7788350601833969    32.2145454994021065
-44730  -81.2645602463876742    40.7679840425098448
-19126  -75.1378644195402643    40.0546856097700825
-17777  -76.8374906502695865    41.101318125515597
-72922  -93.2986926666666676    34.285774333333336
-32081  -81.4284283630245653    30.098716285603377
-54491  -88.6811393081231785    45.1582288898226238
-83650  -116.505666799369038    43.1027851148264034
-56554  -96.1108429459008278    46.8287834266591787
-28608  -81.7176060263158206    36.1883542368421089
-56048  -93.6843914208788391    44.1056749575823517
-91941  -116.996192083369124    32.7611799694262444
-38946  -90.3632891684210904    33.3782054526315761
-18440  -75.7554494754901953    41.5592627450980387
-78582  -98.7657195976375561    26.4002923915324672
-48852  -85.0442418315789439    43.3544527052631636
-57212  -97.1290657474124259    44.3658633301251868
-58048  -97.2831947444055061    47.1772051951049747
-92835  -117.914441939826446    33.9013876691941363
-06783  -73.3005017580273517    41.5551878188073118
-29630  -82.7914430683631508    34.7412655262693022
-35234  -86.806721248587408     33.5378881165254654
-04758  -67.8581183755166677    46.5416433925620154
-07646  -74.0187697965248077    40.9332628398387897
-79565  -101.016129522916756    32.3603691895833165
-06268  -72.249860144434237     41.799154569680681
-88026  -108.151458963976765    32.7753403731988868
-58346  -99.4371456753047482    48.2988217499999948
-35618  -87.3035413990591138    34.6451863211290885
-77453  -96.0170929753086426    29.2208531358024715
-48227  -83.1918928611441117    42.3888476939857028
-60490  -88.1415801426689001    41.6829296208673483
-28168  -81.4211155775010553    35.55634231088181
-92669  -117.861044000000007    33.6303016666666679
-61839  -88.6400037519043451    40.1284102905332176
-11432  -73.7946986249999952    40.7105466250000063
-71955  -94.2197302222222106    34.5358515555555599
-63763  -90.1242067333333381    37.0662358000000012
-30602  -83.3739229847715535    33.9462339695431723
-62216  -89.6079167653013968    38.6193419148642931
-79178  -81.6172358000000031    34.4959741999999991
-77654  -94.6864767555555602    30.2025842444444343
-23507  -76.3013404852941193    36.864727363171383
-25206  -81.7134642660332133    37.9779667909738734
-02769  -71.2484768869640135    41.8415026686964495
-39162  -90.5994641526627333    32.6380826733727432
-43845  -81.7341866294477626    40.2591885858069034
-46996  -86.6370030705851661    41.0600424491333769
-10508  -73.6264552307692242    41.4043250769230866
-98833  -120.452947440095912    48.6155599944088621
-32950  -80.5828667630622419    27.9791166591226101
-46075  -86.3460786604936175    40.0023292528658914
-24457  -79.872833060773516     37.7935465248619025
-92607  -117.778281571428579    33.8511181428571462
-54846  -90.7345349069767906    46.3781481113830907
-96107  -119.472072185277895    38.5309195177767307
-66871  -95.6139831689981037    38.3609244745036264
-32831  -81.1532197641025164    28.4605361025641166
-40208  -85.7659653692056452    38.2183001338735906
-56267  -95.9066276520259606    45.5982948198277853
-65565  -91.2788119591546234    37.9318258093508405
-56547  -96.5667232509896252    46.8918465989706021
-97539  -122.812831898461383    42.6153715495384375
-97049  -121.933530232157608    45.3490931381742115
-16729  -78.485809779205681     41.9591908119159385
-49104  -86.3610599999999948    41.9638547142857163
-57762  -103.583425549792622    44.7061184114799772
-98445  -122.410628543801735    47.1345911102840915
-24451  -79.3609230000000139    37.9926475000000039
-95349  -120.6742165    38.1892189999999943
-95524  -124.053207495085019    40.8270692189454607
-53923  -89.107215940828425     43.546661548323506
-50133  -94.047744716917876     40.7112106298157954
-67651  -99.0744285689320208    39.2410661501617852
-40009  -85.1063199404270421    37.487544799299215
-92592  -117.064228939233217    33.5091990286769956
-52101  -91.7658155788158325    43.3405360363499952
-31699  -83.2062485806451662    30.9577916451612793
-43179  -81.4678475000000049    39.807170499999998
-65243  -92.3660506346778476    39.2565256405866165
-24094  -80.5550109926471691    37.423702062499963
-24845  -81.7148306554621797    37.5791540000000097
-35441  -87.7242647812831393    32.8550207932001044
-46385  -87.1116201441172677    41.4819048557139283
-16230  -79.2736331901234479    41.0227650296296602
-72908  -94.4101496073544268    35.3015013902726977
-62343  -91.2329111678952813    39.7317828149057775
-38153  -90.5900646666666631    33.3463769999999968
-40134  -86.5192685000000097    37.8155299999999954
-45739  -81.7484052575757687    39.1909588636363608
-05250  -73.1784973718535952    43.1067182743709196
-14070  -78.9153015550122774    42.4437387393641714
-45332  -84.7908721878171576    39.9946154340101714
-57626  -102.279762470213527    44.9935094020232
-31036  -83.4987803808048454    32.2753684343946716
-67059  -99.1041706702127954    37.6301886914893799
-76442  -98.6094274492934062    31.9323707799327288
-65333  -93.3077971701220861    38.906650970731647
-67836  -102.014125137931032    38.0145055086207009
-63654  -90.8523730722891116    37.4607576163113762
-61467  -90.2404302132131164    41.0693435893393115
-29127  -81.506088475989003     34.1535983682039443
-47388  -85.4452440909090853    40.0045839518716804
-01520  -71.8434614135157261    42.3399680685190347
-20132  -77.7242182682346083    39.1582167567136352
-00638  -66.4835596597511085    18.3268634024896464
-91604  -118.391295430824854    34.1377790058584765
-19770  -75.0859401818181738    38.5466310909090879
-29574  -79.2601439460122066    34.1914670016012252
-50263  -93.8609388246216696    41.5938034322046803
-75407  -96.4938240426266702    33.1571733210594601
-53137  -88.6694625000000087    42.9789635000000061
-95151  -121.740971433333328    37.2260833333333352
-39110  -90.1394107272964078    32.4945436784608219
-47960  -86.7572148859496224    40.7825459868506144
-28216  -80.882592097630905     35.3074205914159123
-18801  -75.9256794136229018    41.8382068687828692
-99146  -118.196539427397326    48.9264735589041138
-63950  -90.4333625049504946    37.2550327524752447
-16841  -77.6773640567200516    41.0325630276164262
-65065  -92.6712515709430846    38.1346304976917594
-97017  -122.404886305217715    45.1806808913299847
-17265  -77.7837448537253096    40.0465655905672619
-48104  -83.7192734296039589    42.2639003934479049
-53401  -87.7993950000000041    42.7376830000000041
-39095  -90.0818870965004663    33.1028311213996318
-68728  -96.9625097457628016    42.3784987415254335
-78504  -98.2337567304184205    26.2676504705460161
-83854  -116.958254435935601    47.7185484235692456
-00615  -66.062276120000007     17.9655146400000056
-50573  -94.6257039325842726    42.8832633258426981
-38923  -89.9926173744799627    33.3839923381414465
-29170  -81.1458796220949097    33.9439016499224593
-06902  -73.5438990643194757    41.0580023279850153
-25976  -80.8477107500897318    37.8484909298307528
-70510  -92.1538313100471811    29.951014902993311
-13056  -76.0727124999999944    42.6727245000000011
-54848  -91.0979590043543368    45.4645179947120894
-82085  -106.050583200000005    41.9251526999999982
-57438  -99.117022772969392     45.0458745825566851
-77064  -95.554213800147906     29.9175414380646174
-82604  -106.434419777675672    42.8322168832943717
-55079  -93.044964877977165     45.4095243404903783
-28909  -83.9073326488191498    35.0014123097170256
-56763  -95.3221509259512487    48.867439864470235
-43543  -84.6356899114516636    41.6105736131583797
-47802  -87.3975728099556903    39.3852813482274726
-39755  -88.9601119031490413    33.6079480986334147
-65506  -91.543923250000006     38.3519793750000062
-56058  -93.9083493439552086    44.4496667091541084
-74435  -95.0921816461746801    35.5643485942622419
-68502  -96.6934817517381191    40.7869138612516551
-35961  -85.8579940541037701    34.2703196540302457
-17036  -76.7019433216428439    40.2767563506585233
-19064  -75.3356397907503919    39.9307742197263096
-92229  -116.861564727272722    33.8475079090909006
-74054  -96.365074356269119     36.2734925305810307
-31005  -83.6070956421268647    32.5484513461147387
-35154  -86.1715712499999995    33.6039085000000028
-13340  -75.1184830207482577    43.0473524066334434
-12767  -75.0035750033898552    41.8445467593220144
-30911  -81.9607230000000015    33.4713864000000072
-54230  -87.9026877270570708    44.1545061584788883
-72347  -90.982920711722528     35.3639305424641108
-64637  -93.9253393549246454    39.564448712511151
-15722  -78.7232768252100925    40.5993637417366529
-16829  -77.9123214098883494    41.0713559710261151
-79912  -106.539171481369252    31.8487617649406012
-32765  -81.2092891288416183    28.6474084380865364
-49642  -85.7808941476269666    43.8878249374796283
-62349  -91.20940037505666      40.1667117094441863
-62844  -88.0074163454060709    38.257986486847102
-48363  -83.1700227514021435    42.7654367047222337
-43139  -82.5665565000000043    39.5180419999999941
-54964  -88.7235533379043773    43.9324768985189351
-57778  -103.768662858921232    44.1248554688797014
-20195  -77.3292630769230556    38.9472429230769279
-54865  -91.3961439698292679    46.7613114078518137
-50675  -92.4913160111646846    42.1944999809433057
-38108  -89.960117466116813     35.1731812126903947
-70078  -90.3844881904761905    29.9791818571428514
-15807  -78.5062843541666808    41.5956150833333353
-76015  -97.1336643844402943    32.6919367891579142
-05740  -73.0890215876777205    43.977322682464461
-46789  -85.2005998461538496    41.583051999999995
-56363  -93.6466701718750016    45.6964791875000103
-92593  -117.079049999999995    33.4940496666666618
-65582  -91.9334417578925667    38.1871974486724852
-73527  -98.6124664037167662    34.6039053671900447
-87375  -108.82765321879009     35.620341220077222
-58484  -98.458719076994953     47.3735838880075448
-66077  -94.9608290983606338    39.368626344262303
-69631  -103.678241913043479    42.1623296086956429
-38462  -87.5486194964584428    35.5282159209258808
-84704  -112.291418749999991    40.6345227500000021
-29973  -81.231474185185192     33.9001203703703737
-20184  -77.8778505953845297    38.9881376565383704
-33826  -81.5500307500000048    27.6222437500000026
-61466  -90.482830301747228     41.1099764106183159
-12819  -73.465148889318499     43.6147778438859532
-19427  -75.2273165000000006    40.0318299999999994
-37660  -82.5582398218228093    36.5448192063405131
-92227  -115.528415477736573    32.9855936908834906
-12010  -74.1793586247084562    42.9397604817300405
-29603  -81.1993616000000031    34.114530699999996
-38339  -88.513535860173576     35.0512486387014377
-26287  -79.6827541312662078    39.1675828858839594
-83277  -112.675574776632246    43.0843408213058368
-15650  -79.3930546275074107    40.288674457728078
-90705  -118.327448000000004    33.3447286666666685
-82314  -108.104987666666673    43.2357676666666677
-54638  -90.3811705708289566    43.8010829862983329
-96001  -122.432274920373743    40.5627489425371195
-12047  -73.7203173432114625    42.7790167263651
-57235  -97.2990644525169017    45.0532666227296232
-50592  -95.1833013392857765    42.7285294464286025
-66955  -97.3163240919999453    39.9627234320000042
-40142  -86.2050341042801307    37.8895771447754797
-05354  -72.5185462681545516    42.7611345103264284
-80842  -105.780182131386837    39.93261305109489
-59549  -110.550608166666677    48.5636098333333379
-10970  -74.0426451262599272    41.1886521671087351
-98903  -120.628505530212308    46.5534054615517192
-37040  -87.3378016683169989    36.5363796022420289
-48329  -83.3847982171509727    42.6882788057976015
-48710  -83.9731928333333286    43.5166745000000006
-24577  -78.9853558169075569    36.9398626837099044
-94134  -122.409060318831791    37.7194696954708064
-27431  -79.7927356666666725    35.4723196666666709
-62478  -87.7209017545873451    39.1716342637614829
-54455  -89.680300529448445     44.7873113537053413
-78823  -99.9021776129032872    29.908337193548391
-81520  -108.444869300237798    39.0858800041619361
-43157  -82.5453890728155102    39.8414429708737927
-38551  -85.4971542624809473    36.5503603288866472
-72837  -93.1157599659692465    35.4236696522895684
-48536  -83.3157456250000052    42.983767874999991
-99801  -134.562751554587095    58.3657448299623454
-66534  -95.8077310416479264    39.894385164101493
-15223  -79.9530758652140889    40.505356540663918
-05674  -72.8535325165442487    44.1128717406688367
-88032  -106.835051983695706    32.3947929239130588
-29032  -80.4745991218867118    34.3425248149607256
-91205  -118.242554277094385    34.1351932524898842
-93002  -119.371681745098002    34.3721032156862734
-78960  -96.8810460857142743    30.0800510380952417
-40913  -83.5386974999998984    36.961698107456094
-23109  -76.3256622037962842    37.4304678858641751
-78377  -97.2883245384831241    28.3354345317660368
-66427  -96.4470813453803828    39.6743152243369082
-04419  -69.0400456017082433    44.802570673785219
-24896  -81.5938140909090777    37.5464242727272719
-70433  -90.1057875866181917    30.4588357858200247
-36618  -88.1762900464177619    30.7329216667183474
-79845  -104.385727327691484    29.5938267118006308
-17779  -77.3782267086330364    41.198933147482002
-31211  -83.6018767971003172    32.8935093627817992
-73932  -100.523856121752047    36.8073726733481195
-22909  -78.4542932857142716    38.0290650714285761
-36727  -88.0228220700524417    31.9063182784588584
-18635  -76.2117335703820089    41.0314493237573785
-62841  -89.0003932584269535    37.8585647191011248
-45416  -84.2581154109356589    39.8057116480136699
-19520  -75.8051404647541887    40.1575155604728664
-78057  -99.029617303107031     29.0368516853323939
-85531  -109.789941201612947    32.8687860026881822
-38141  -89.8468350271949419    35.018063332865168
-34945  -80.4542524842570543    27.4257392109572926
-29210  -81.1112149861418317    34.0454584940354081
-78735  -97.8643734343257279    30.2615015334770412
-81639  -107.259374262616177    40.4691714035070333
-48348  -83.3926885571415397    42.7652462796590456
-97403  -123.059759624361604    44.0366091078585598
-00917  -66.0503340500510205    18.4234511057200869
-60645  -87.696283934640519     42.008855171061704
-27606  -78.720476959720358     35.7441926531532701
-77471  -95.8171498126529997    29.5441198301459202
-55065  -93.0094682875340482    44.5369576242037652
-63779  -89.6409352307692302    37.5011115769230798
-81210  -106.641646081562243    38.7956725910370395
-49921  -88.5823625454545436    47.0928001875000248
-96857  -158.040961548387088    21.5109898064516116
-29364  -81.4621145454545683    34.7889204545454689
-84738  -113.681841216987678    37.1709157036474167
-25259  -81.2531558948769685    38.672651303171456
-36262  -85.4535170020170938    33.7659059737752614
-51536  -95.3789655922181794    41.3851866926070855
-10522  -73.8656615597979282    41.0122581107605555
-37752  -83.5761529087469484    36.5708903535470427
-11024  -73.7398814662824833    40.815623050720454
-36585  -88.0392302411655123    31.4040709150650308
-45372  -83.8358311435897292    40.0138294205128346
-95820  -121.445401095623495    38.5348452519444535
-15686  -79.4343925478056292    40.6219407978056708
-35232  -86.6327527777777675    33.4454856666666629
-67020  -97.6834039331076696    38.0053301703640614
-35070  -86.7477070458937902    34.0116726787439561
-02724  -71.1764451349550029    41.6841493802064775
-45146  -83.7956296539075964    39.3187290967570249
-48889  -84.7970248209875592    43.2944648441357884
-32579  -86.5718653527191719    30.4455566732123799
-59007  -109.147310718631061    45.1561590912547572
-24991  -80.4819271667744403    37.977883050420111
-87901  -107.250476466975272    33.139506157407645
-27349  -79.4188288825107946    35.9032379688259624
-57245  -96.9191215849056817    44.8920150377358453
-95548  -124.053675380434569    41.5676417455842824
-49762  -85.2650231692308438    46.1318717538461414
-22938  -78.7925182355110962    37.8576409873009041
-25505  -82.037508911504446     38.0072464557521883
-88263  -104.090816283018839    32.2303049119496947
-72442  -90.1778575314411626    35.843963336486766
-95701  -120.795553151988443    39.2129854161931917
-58656  -102.432609339981781    46.8871944401631069
-16882  -77.3668176641391057    40.901475933541434
-48095  -83.0397256885246833    42.7821526784363186
-03843  -70.9697917499999988    42.9637367499999954
-74552  -95.2550496445496577    35.11590099932301
-26572  -80.3044023176471313    39.4975307333333703
-75130  -96.3632272307692261    32.1299023846153844
-70465  -90.5169546393442772    30.8767016284152795
-80294  -104.989794875000001    39.7494485000000068
-45233  -84.6648895863023938    39.1198054843364744
-40342  -84.9837175234751498    38.0013003634888165
-64735  -93.7269094532356917    38.3651682908885547
-76251  -97.7028747310272649    33.6481785369127806
-99733  -144.14641509843409     65.774933733780756
-32935  -80.6506024216993183    28.1413255121384474
-97110  -123.95977501545606     45.8893546468314923
-90504  -118.32945575101499     33.8706790854883621
-73873  -97.0498739999999884    35.188406999999998
-51105  -96.3788534358574793    42.5039484476615357
-54729  -91.3817635556624595    44.9375061591200478
-40048  -85.472251042253518     37.8491534929577469
-27534  -77.9187896361429182    35.3750032517290052
-59416  -111.620623916666702    48.0390180201343497
-14170  -78.6697459050631949    42.700473315400842
-33762  -82.6849815726708215    27.8894869652174044
-60062  -87.8452880983448097    42.1262754141189149
-46012  -85.6416639993201017    40.1348791133998049
-74736  -94.9791167571428758    33.9451968476190586
-23149  -76.6096899662342281    37.5761905163668075
-95315  -120.775294534512469    37.4242947175174194
-13237  -75.8789038888888996    43.0867434444444513
-97303  -123.02226170507997     45.0028998926814978
-64020  -93.590789371832301     38.966240320662763
-28373  -79.479037390097929     35.100161352013096
-05647  -72.2882148605934276    44.4109915258957031
-35505  -87.245131750000013     33.9256929999999954
-97461  -123.466179267798196    44.0942387086527248
-18225  -75.953462256756751     40.9887806756756845
-90023  -118.200825484840976    34.0233084976584124
-42762  -86.3915595857003069    37.4538625876591453
-21519  -75.813525999999996     39.5269325000000009
-53114  -88.7271628679536661    42.6032459073359036
-36521  -88.2069250059210503    30.9532257496300538
-25962  -80.7969902471649277    37.9645909344812722
-12721  -74.4277536721250499    41.5694428387917441
-83844  -117.009549761904751    46.7286046904762031
-61319  -88.7426199136706799    41.0234390775502433
-50105  -93.6424740447976944    42.1116699248555193
-50402  -93.1325180000000046    43.1481539999999981
-80439  -105.36053742628016     39.6427093568155939
-29302  -81.8620765217709305    34.9180847326016419
-36439  -87.3418051320754216    31.4267778339622517
-30582  -83.8929140358358296    34.9537616180442896
-53132  -88.0048016361120631    42.8979901206967824
-95830  -121.284505661383363    38.4731061498559228
-44082  -80.5621327108105021    41.7607664578377751
-75954  -94.0678250726432594    31.9327649770658262
-72256  -116.587510285714288    34.0618306428571458
-01263  -73.3176551999999759    42.2966364800000036
-21032  -76.5985700402656988    39.0395399097460754
-59410  -112.50866033600704     47.4892374972786513
-67472  -97.4219755000000021    39.2480887500000009
-33611  -82.504402100733401     27.8902416276187033
-31024  -83.3354248293491366    33.3034238250724357
-17923  -76.3204421179775068    40.6707558792134947
-46377  -87.345615200565021     41.1897401864406802
-40921  -83.924312550655543     36.7834359785458673
-28462  -78.292595434968419     33.9515038963799967
-29554  -79.4048720629065912    33.7136014709257381
-10704  -73.8619194310145986    40.9194212232493726
-75554  -94.7881149731143751    33.5597381292090944
-25110  -81.3824492070844769    38.2114980626702732
-25251  -81.2309970973901727    38.6226801311266641
-88462  -103.579217749999998    35.5402760000000058
-39447  -89.0381153750000038    31.7749060624999977
-76640  -97.0861208119835908    31.685404362603272
-12764  -74.998947137375751     41.6032291603619129
-52154  -92.1657133106219959    43.119138483937796
-64733  -93.8393841824850341    38.57815303180044
-21821  -75.9351524446607726    38.1671112689011025
-72122  -92.7647321668245013    34.7663248377835856
-55765  -92.7573896681611814    47.1076771439462263
-66855  -96.0292015000000134    38.1130172499999986
-24042  -81.1247651666666627    33.3279778333333354
-77660  -94.1698095467754257    30.6635084599575194
-08514  -74.5051319661018141    40.1294036771392939
-28101  -81.07707714573651      35.2571101782945746
-16506  -80.1470723718456952    42.0692152834492745
-03871  -70.7718131000000028    42.9811142499999974
-53569  -90.4516885331885163    42.9891514149167122
-95972  -121.323081942857058    39.4401017285714346
-32410  -85.4053846666666772    29.9419599484126913
-83406  -111.949167272313474    43.4622630123109133
-18632  -76.3801419053708486    41.4790908951406792
-15954  -79.0110778472978694    40.4239310575112114
-14437  -77.7207379630685011    42.5695569569135515
-52774  -90.5968011675392404    41.9092330523560292
-45631  -82.2476343675428154    38.8178524805984821
-28554  -77.5841087429805185    35.4802716825054176
-97411  -124.393970339908691    43.1011402336467029
-28452  -78.5523878832753439    34.0037708571428681
-69219  -101.11599527777777     42.8285516111111093
-82726  -104.614438000000007    44.3094214999999991
-72904  -94.3885326019750721    35.4049470400205522
-50040  -94.1131512985074181    42.1872583283582117
-24266  -82.1113863591321831    36.8712748093249516
-92397  -117.622499129446183    34.3663921270849002
-55341  -93.666910479596325     45.1609928968845864
-99017  -117.874929822541802    47.1749321882494357
-86031  -110.110791755102028    35.5323535510204138
-04685  -68.4357079344811154    44.16238932878057
-72703  -94.0985830522362789    36.1076315929563947
-46939  -86.4083354842918396    41.0040658695278211
-69218  -101.726490216216206    42.878408740540543
-77373  -95.3900503736020511    30.0604652460408381
-96776  -155.364966234042583    19.9901955957446802
-47454  -86.4709439045808921    38.5233748981313084
-64078  -94.4649836503486426    38.7098668316188181
-38230  -88.7755949444560599    36.1496358747860285
-36613  -88.1806542291266169    30.7964613892690586
-28712  -82.7495519551974184    35.1792335885618783
-18336  -74.7161875513747589    41.3728281804147713
-11379  -73.8822340833333158    40.7242934166666757
-51050  -95.9468415031230819    42.792169427712146
-41071  -84.4838965643386217    39.0779073761046547
-75235  -96.847369155685854     32.8281177505275608
-30077  -84.3511860000000127    34.0298269999999974
-92612  -117.825310140963126    33.6595926417305762
-95250  -120.436819581632719    38.2306762585034079
-12143  -73.8448007609937491    42.4795277799250997
-28310  -78.9992406929134177    35.1173395275590394
-98370  -122.63340415712571     47.7450377996563589
-32129  -81.0239618331933826    29.1371118205801984
-51012  -95.5580568514928501    42.7434792780855446
-83602  -116.13535007042266     44.0746827934272289
-41731  -83.0757893253565953    37.0976522194264575
-71361  -92.4006943478260894    31.3632776521739167
-86312  -112.393294536796517    34.533492536796544
-75759  -95.414310303030291     32.0348678484848506
-79853  -106.084633144898021    31.4464178489796105
-04848  -68.9055008058822551    44.3091047373402844
-26570  -80.2277126650225227    39.6286851912590095
-49874  -87.1696978421052648    45.7715910000000008
-22476  -77.0590322959075706    38.0458760524659638
-06416  -72.6657270482045874    41.6117429918002628
-65270  -92.4300760023962198    39.4174730193857386
-74432  -95.5656905933620635    35.2747994558591387
-74434  -95.216084136817102     35.815360111480615
-74455  -95.2943059873418434    35.357358574683559
-75505  -94.2973705999999936    33.3737342000000012
-97913  -117.064276692613916    43.8384002092377045
-32538  -86.2953980263157661    30.9454876578947378
-38643  -90.2632855681369364    34.1779951303488758
-46185  -86.1057634999999948    39.5698255000000003
-65785  -93.8115158177365487    37.7014758382814748
-92329  -117.54010039539348     34.4693823166986348
-12507  -73.9243105531914892    42.0017821489361793
-97414  -124.148456793814532    42.9962461556700859
-31733  -83.5033809810679202    31.5800635669902832
-71282  -91.1918071515556932    32.3985950477458502
-41097  -84.5750491915683256    38.620778080453519
-47374  -84.8910701911221679    39.8317850350780063
-89123  -115.145666899604237    36.0324949920273667
-43946  -80.9706862959303351    39.6456855241105686
-02840  -71.3150079267220605    41.4847808848820208
-98935  -120.024596127486362    46.1916204541140019
-06235  -72.1264914071317094    41.7877071562790121
-96760  -155.055234703125052    19.5566002656250006
-72053  -92.2279768494623653    34.7081163978494516
-78131  -98.3412916666666632    29.8008431999999956
-90731  -118.291354198656222    33.7343801779142396
-32611  -82.3862065000000001    29.8110110000000006
-87574  -105.904966610942253    35.8109004680850944
-00987  -65.9537652556213487    18.364053660355026
-62374  -90.8971090407523405    40.4107964666368034
-12205  -73.8230461327542002    42.7171192353270399
-18708  -75.9496171199682379    41.3041616124703594
-86003  -111.536961500000004    35.2627954999999957
-57048  -97.1786149899561309    43.722512359729663
-08557  -74.937247499999998     40.4509093461538498
-86329  -112.232866672559609    34.5030591944657701
-52201  -91.5488943690293411    41.3276907141758301
-97880  -118.947957330568812    45.0954026783175479
-91790  -117.938101979122919    34.0668442836638619
-45287  -87.1512063333333344    41.1739376666666672
-17737  -76.6874384779851965    41.2750300847582139
-62052  -90.3309072758278404    39.103333463667731
-49614  -86.1276826883819666    44.4356047607882516
-67548  -99.3096287731255813    38.5394882541383126
-19026  -75.3033362389183196    39.950008740866835
-54856  -91.1043668124790855    46.4376883406350416
-88202  -104.771862074074107    33.3314395061728419
-46065  -86.6126378003805542    40.4245634348653198
-47536  -86.8363379473684347    38.1129056842105243
-17832  -76.4637434093959882    40.8051378456375815
-38017  -89.6777100078254676    35.0602080346809188
-15210  -79.9880052768557448    40.4076346322268449
-16868  -77.8821548852458108    40.7338214229507827
-37756  -84.4223379084993582    36.3593162649226898
-03906  -70.7684645446824305    43.334955230287143
-12926  -74.3264055574283873    44.946058928655475
-18371  -75.0308206050687261    41.1609706008447844
-32425  -85.7203738141147937    30.8600273165168133
-76009  -97.2150354546500495    32.4231512641319028
-32835  -81.4859095742549044    28.5236700003520198
-43928  -80.8920920048780374    40.0062590243902676
-72132  -92.1979114788731664    34.4482888665958882
-61038  -88.7343385381280569    42.2546112071057678
-61748  -88.9680213717686001    40.6311462085034876
-36693  -88.1554888989564347    30.6307808391651122
-53587  -89.905502551026899     42.5862744653402459
-16509  -80.0642121156213022    42.0702603137387925
-17212  -78.0783521395014333    39.8107446445145143
-75076  -96.7057098311296528    33.8174424542932002
-00635  -65.642256885572138     18.2201654527363281
-01241  -73.2031679999999909    42.190437799999998
-87723  -105.38713250183153     36.0611156300366744
-08311  -75.2043487308838365    39.3293271529294657
-10271  -74.0110379999999992    40.7084054999999978
-38348  -88.6390785898361884    35.8593959077183229
-70404  -90.5016594285714291    30.5059139523809577
-19333  -75.4241011428570829    40.0459532396764715
-37763  -84.4938208182708479    35.8351789683102169
-85209  -111.641730331967977    33.3755772107926276
-28988  -117.169926875000002    34.1231350000000049
-29583  -79.5714364242901837    33.972425902208137
-50327  -93.5011124935654721    41.5895412884178342
-64088  -94.1932281215961495    39.1591655782140933
-07099  -74.1067369999999954    40.7469422499999965
-18938  -74.995394335491838     40.351363508709305
-18347  -75.5543814971007066    41.1376599130174441
-62220  -89.9805588523878583    38.4995937115605713
-68364  -97.1978318487179109    40.8167724230769053
-97806  -122.566955500000006    45.4503880000000038
-46511  -86.4245136065046182    41.2187221073048491
-08074  -75.1386803333333404    39.7146276666666722
-51543  -95.0697257820823154    41.6568652590799076
-12995  -74.2663945789473701    44.8148441578947399
-45389  -84.0255461068965133    40.0564961034483105
-54123  -88.1566680652174028    44.2100362500000159
-04915  -69.0296089252578184    44.4540877801740493
-23868  -77.8160427337579819    36.7304915210191751
-15673  -79.5575229327052682    40.5922970026918222
-29386  -81.8110537045454436    34.9065304090909052
-62365  -91.1656269782608035    39.7919194987212208
-21742  -77.6783812360750687    39.6650241609372713
-05857  -72.2974851132043739    44.9449826962858623
-87511  -106.044462910407219    36.1129420153845899
-04231  -70.8571847032928019    44.2512530819613445
-88317  -105.685734395879251    32.9256778522671922
-97480  -123.824001506649239    44.1080113123580659
-71264  -91.7702651734042547    32.6023725468085033
-77371  -94.9884805632423763    30.484666670795658
-31629  -83.6871416878797731    30.8124012861775753
-33912  -81.8303524095839663    26.5341888291139476
-44676  -82.028842219364023     40.6755311891166471
-98922  -120.920025791667939    47.1930934739471581
-70528  -91.9888146436961023    29.9487223101018039
-15045  -79.8870576930329861    40.3261315191198833
-72333  -90.8747796386805931    34.3106068185907134
-56669  -93.1633904687106593    48.4199875441065188
-31037  -82.9229134412347264    32.1069639014642334
-42303  -87.0663538572732136    37.7576056749031892
-68667  -97.3110950332102931    41.1056599372693867
-72531  -92.1337714151909069    36.327065359569886
-86314  -112.325483464801849    34.6066448733798708
-95922  -121.074994912128204    39.4406390805727227
-94963  -122.669943759955842    38.0134542433627871
-46290  -86.1647202233333331    39.9358468099999939
-67627  -99.2161635500000045    38.9275236500000119
-70720  -91.3595448571428648    30.5569324285714323
-39344  -85.5471924999999942    42.5999300000000005
-38360  -85.8738732857142821    36.2906022857142858
-30607  -83.4435808496839826    34.0134220404403891
-62305  -91.3456882045436345    39.9273195879273644
-45112  -84.1393505962440855    38.7929231643192409
-97116  -123.143740053291893    45.5503737135018554
-39140  -89.9819283284944333    31.7393542779107634
-46407  -87.3350577326358462    41.5809153588669531
-56514  -96.4016973860597943    46.6675154539117258
-12923  -73.9582513994280504    44.9434261811248561
-80727  -102.488098753593249    40.0816808490760224
-49746  -83.963585722535683     45.0718590182494765
-43713  -81.173342029511943     39.9722519883123724
-77514  -94.674547605369213     29.7166702351636154
-50674  -92.0725413971344153    42.8500272411755176
-50451  -94.0882506430697561    43.3792885353955811
-91303  -118.603294837185899    34.1979772185929818
-48326  -83.248946996526044     42.6727997533342389
-08062  -75.218761138118623     39.7229580930988107
-60179  -88.0871081874999931    42.0322119375000014
-78580  -97.7783276235231398    26.4792377575757634
-85132  -111.396213556897649    33.0498776397311431
-27842  -77.8618961065211295    36.5262856647978893
-35545  -87.9196471593406841    33.657443450549458
-31751  -85.0462116666666788    31.602625833333331
-02339  -70.8586312183187772    42.1240120360341379
-29054  -81.3850602877336087    33.9592077501842127
-32105  -81.4204830864198073    29.1943317777777835
-60013  -88.2402967504812636    42.217625330861857
-70848  -91.118002583333336     30.9145754166666649
-10005  -74.0089264797687605    40.7061551791907448
-36401  -86.9479319433516054    31.4639504505401142
-87747  -104.594533914791143    36.3706110281350661
-90040  -118.151916419496473    33.9952139299013183
-27043  -80.4616717459216915    36.3301336491843543
-50563  -94.5400918642985886    42.5319259143879407
-43331  -83.9024702567318883    40.5052388147996751
-77842  -96.361663875000005     30.6193276249999968
-44143  -81.4833852137648194    41.5529589756873321
-98936  -120.349901716001085    46.54818423303103
-66865  -96.1953682461539046    38.2510462591716305
-56347  -94.8616408264354618    45.9661501193301234
-47160  -86.0493834327868115    38.1485096491802977
-01634  -73.0004338181818326    42.0675060909090845
-77991  -96.6169409241379356    28.8240452999999768
-35147  -86.5312902420715346    33.405733088176035
-46929  -86.4826856647646878    40.5488621788872479
-59920  -114.496808809049469    48.0950757239557944
-28399  -78.7264805510703241    34.7651142449983297
-77657  -94.2018723579217436    30.2392944828634036
-61059  -89.9451077370892307    42.4586970422535472
-04853  -68.8724943467783532    44.145238555264541
-36562  -87.6508990610996079    31.0247414544660174
-14131  -78.9048651288936753    43.2330117117795254
-49026  -85.966649424918316     42.3742942045701767
-07603  -74.0281415862069707    40.8748573659003895
-53504  -89.9002226082791935    42.7034028195859179
-25003  -81.7999054094820508    38.2650412306505032
-66780  -95.0552189750803365    37.598447111736391
-70084  -90.5585277504744397    30.060957534630024
-03305  -71.5171415555555683    43.2128962222222199
-45418  -84.268692439999981     39.707089952000004
-38016  -89.7700378378292925    35.1770238869917762
-05759  -72.9571637957725869    43.5386460000000781
-01060  -72.6358405324921108    42.3259591287735475
-59029  -108.892475347265048    45.3906669938537348
-27803  -77.8488522377747501    35.9142590111667914
-29493  -80.8436073592814068    33.0335374011976057
-76850  -100.134734095238102    30.4790377142857167
-44817  -83.550066995863645     41.1931468593590253
-24172  -80.2519970000000029    37.454085500000005
-39520  -89.4070073585419465    30.3022632754957293
-57370  -99.1882597035905746    43.7758084797555114
-78135  -98.0856517500000109    29.7390757500000014
-23602  -76.5195165233578933    37.1134478721237144
-85645  -111.058209844922672    31.7226979238411033
-15444  -79.9053421510791821    40.0112808944843579
-75028  -97.0608247053720987    33.0367694629280635
-86053  -111.03650191666668     36.5861745833333387
-31527  -81.4144562468283652    31.0712423610149884
-47446  -86.5045716135110041    38.7378259759113064
-52247  -91.7183791518348954    41.5116883868910733
-92352  -117.193983932706928    34.2575323145225425
-60081  -88.2276090796335808    42.4493308061328918
-62520  -89.4612032934974337    39.8145476836554977
-30252  -84.0694698227134296    33.4720240959705038
-97114  -123.075000910969592    45.1924840638160106
-49935  -88.6790810781168659    46.1134291050888123
-19060  -75.4909767018207276    39.8481196122228241
-79605  -99.7702516261006451    32.4313767705338307
-53930  -89.4686977601713522    43.7150221927194664
-08403  -74.5264224967177711    39.3148333894967692
-10545  -73.8321171666666629    41.1789761666666649
-83001  -110.771508040845845    43.4656498072444819
-30013  -83.9847684879510723    33.628428282894653
-68823  -99.1506764209474198    41.8644427391564378
-19440  -75.2918071763706109    40.2783218596102017
-29449  -80.2513668967001053    32.723342971397706
-30460  -81.7831341666666702    32.4270765833333314
-40052  -85.5117843029441929    37.5834980835220236
-05819  -72.0050477400599362    44.4207106615718814
-34996  -80.2027976253837949    27.1952006608665826
-36769  -87.5787491738045958    32.0102151884960193
-60444  -88.4066750724786061    41.2366562789743227
-67458  -97.2685921348111719    39.1857283660875026
-98363  -123.639717316283637    48.1042529095466378
-92396  -117.605730900900838    34.379620846846862
-98221  -122.634540999573005    48.4881370579925459
-29036  -81.3347312922048928    34.1319883231676329
-92057  -117.298643843027136    33.2437203426807173
-54311  -87.9298296774402672    44.4889916347768093
-81311  -105.770239285714297    37.9911405714285664
-58036  -96.9529686808244122    47.1600073222985685
-07712  -74.0435031887078736    40.240779724365126
-04649  -67.6015276015081668    44.5591475611949832
-66354  -90.8241565000000151    37.4496476666666638
-08611  -74.7513755413035028    40.2072714040644215
-53015  -87.7773976926724231    43.9160857551724391
-45430  -84.0851444760434248    39.7108761061073707
-97434  -122.837737620161093    43.7191227463709993
-49103  -86.3609441484949372    41.941381356280246
-10705  -73.8917379357045121    40.9177835756498425
-49616  -86.0883372741572543    44.5821177555056423
-96055  -122.09661679972028     40.0573858102242042
-19964  -75.7296582147285307    39.0985695968991678
-15378  -80.2726057882352677    40.2777171999999908
-39845  -84.8796255214839306    30.9408719148286657
-89315  -114.863912977011466    39.2637502068965603
-20895  -77.0771891888319374    39.0277411798486185
-15731  -79.1674932928571309    40.5030010500000017
-14786  -78.2225034199999811    42.1494741199999936
-28434  -78.4735670935114484    34.4700857812976622
-80130  -104.92426824811605     39.5361695426263395
-02568  -70.6209476596127814    41.4400502126071686
-24333  -80.9259146972422627    36.6457722946870774
-55443  -93.3389097174921005    45.1205626489163691
-64688  -93.3751511009772202    39.8247674505971503
-32309  -84.1616914771265812    30.5387386953994593
-51601  -95.3462516142602823    40.7446019858679449
-64479  -94.6837290138114156    40.3485838844197389
-74838  -96.95083116666666      35.2278341666666677
-06787  -73.0849548134214899    41.6716084539621576
-27658  -81.3034524999999917    35.6339137499999978
-45684  -83.2820485814666824    38.6906340277858618
-77089  -95.2235791837788241    29.5883556363637084
-43110  -82.8061951540835679    39.8444542753704312
-76857  -98.9630370877193428    31.923364028935989
-78380  -97.7126485903304598    27.809211555778603
-72209  -92.3463290017213012    34.6762890936236516
-67638  -98.8524551568047798    39.6456919585798673
-48420  -83.7215306126126819    43.1802498196359608
-37410  -85.3143932759468129    35.0028166224207169
-31050  -83.9493127795179959    32.7346910072289319
-01434  -71.6167921160151195    42.5433304501891456
-95019  -121.779126120615913    36.9364640607356804
-10912  -74.2924989333333201    41.2476802000000049
-44446  -80.749395569960825     41.1883881639855574
-75086  -96.5053270000000083    33.0372753333333335
-45216  -84.4793910770112291    39.1991719026819609
-49240  -84.1853711872068544    42.2821840227247066
-27518  -78.7759292811536938    35.7256104874012692
-68365  -97.7254418742689808    40.6233004532164159
-36395  -85.5908476666666616    31.1174800000000005
-03282  -71.9183156918316371    43.8596134451319841
-08219  -74.8959511529411799    39.042891400000002
-10011  -74.0000503791605979    40.7409362604920275
-87508  -105.971729788295335    35.5463162943695323
-13313  -75.2597466985506003    42.8780139449275453
-50539  -94.4172051035773165    43.2316595883609764
-40253  -85.5169685000000044    38.3076690000000042
-12136  -73.5579263151659148    42.435374855450199
-70051  -90.6186550632110368    30.0545964829330394
-62419  -87.9885072449823014    38.6276670802833451
-14825  -76.6202026060331178    42.0518056983546487
-57373  -98.8827185318931043    44.5406905679012866
-68503  -96.6770091917062331    40.8232705931340192
-46240  -86.1227422131439937    39.9054107961727595
-21226  -76.5615028153071222    39.2022349259853087
-64747  -94.1839082552134244    38.5729540498180583
-15178  -79.2002455000000083    40.2107212000000018
-53018  -88.3990878162149301    43.0609340052225775
-78063  -98.935147895561002     29.6679877503019895
-24483  -79.2116565907651449    37.8273975291318081
-31522  -81.3782998986249595    31.198169533524446
-72204  -92.350661168456412     34.7249573475459101
-46806  -85.110764651831559     41.0468665727098525
-34427  -81.9592373636363618    29.0718109090909103
-14568  -77.2850531399036811    43.1381525103369512
-92354  -117.247754047594512    34.0472688230718106
-43341  -83.3133125117574593    40.5902648527227683
-18507  -75.7093581042639983    41.3585958508940692
-70392  -91.3092624800321033    29.6988105567093363
-50123  -93.5016060656167269    40.8539322318459668
-44816  -82.349893245901626     41.3323502131147507
-33410  -80.0885372547606096    26.8445821460798548
-75988  -94.8951047142857078    31.6704561428571409
-62370  -90.9761318606016829    39.5227044512105152
-61112  -88.9769757710843834    42.246409084337337
-69134  -101.372325979104403    40.8213462238805604
-78602  -97.3222750529762379    30.1160812683000323
-57792  -102.355574092261989    44.586302474702336
-44601  -81.1181747118994139    40.9170222140072966
-53956  -89.0061447473524225    43.5400567942511643
-84316  -112.433653319477543    41.7543830558195737
-32464  -85.9423623347763481    30.8924676596385446
-85335  -112.329454483900065    33.6020670631959106
-72477  -92.9593029999999914    36.4495296666666704
-62230  -89.5289817163828161    38.6259386367327835
-03201  -71.0387664999999942    42.0952701999999945
-64496  -95.6060238732943901    40.4957822768030837
-84627  -111.584394403020667    39.35566315894269
-42786  -85.4722273499999972    36.8308673499999983
-14707  -78.0658965806451448    42.0829128903225893
-76245  -96.8460813156672344    33.8358244733952205
-24609  -81.7670592542718708    37.059820491261334
-51238  -95.9016423966393177    43.0744269914028735
-67456  -97.671404257804312     38.6229400032743229
-61843  -88.3638695340516023    40.3147351797414402
-49736  -84.1316341738158116    46.0664532920552858
-16030  -79.8018713052838109    41.1358415714285499
-50453  -93.6498149932646413    43.3659492952852545
-54822  -91.7244343060397256    45.4038384072570693
-33803  -81.9505821960766099    28.0124933682507837
-76559  -97.6052362526222765    31.0786355576834801
-02032  -71.218085090018036     42.1557187161319931
-20650  -76.6258288327828296    38.2707275258582129
-45657  -83.2212937635502357    38.849537528404646
-96850  -157.863324499999976    21.3050082500000002
-46766  -85.2863684994807301    40.7066686718587718
-63033  -90.2787152095300343    38.7962393618986354
-65647  -94.0011094436700176    36.6868562022017812
-31769  -83.3337899090909104    31.624052000000006
-21222  -76.5025350502282322    39.2637197370745739
-95004  -121.637882776756285    36.8750933529218159
-18555  -76.2515445294117598    41.1521510294117547
-85912  -109.996103186974779    34.361352130252115
-13178  -76.4730101875000088    42.7825712499999966
-71665  -92.1190129909695372    33.9466938039841679
-62074  -89.6890313593467852    38.964392237144672
-51366  -95.0011171663748684    42.9476006112084079
-50033  -93.7923543859649129    41.3607179649122685
-11965  -72.3504754848484311    41.0758718576239374
-96730  -157.854197999999997    21.554335499999997
-77340  -95.5344129644398947    30.6713709406281616
-46254  -86.2654917684225353    39.8446743926221174
-84325  -111.981342884014538    41.7179705066914863
-57004  -96.7733236137221837    43.0466799601390306
-71460  -93.6066287499999987    31.4530086249999989
-15729  -78.9230334780294527    40.7077331660007644
-75144  -96.2218029254988068    32.1137918086474272
-31562  -82.1328631765957908    30.456351748936175
-62570  -89.4505581403508216    39.5882275684210541
-77334  -95.387478746212139     30.7594860833333215
-87258  -106.990384500000005    36.9359435000000005
-56141  -95.7725267128291335    43.8803892349192068
-80909  -104.777062746626427    38.8524214013958371
-19807  -75.6110176736093962    39.7912332697517215
-10548  -73.935048580446562     41.2491089476520258
-83623  -115.317311455344125    42.9665935702782349
-79261  -100.882377138107401    34.3873273938618951
-70936  -100.603185333333343    30.8619209999999988
-84662  -111.493446778960617    39.4774027764558895
-88165  -107.754591363636351    39.537202818181818
-88058  -106.72423804545457     32.1539918030303085
-11746  -73.3687312471141979    40.8180407916925745
-18060  -75.5202040399999959    40.5276202399999974
-91201  -118.289973714630307    34.1701269224275848
-02539  -70.5321506667686435    41.3846512704900675
-33439  -80.6161430833333128    26.8501586250000024
-77566  -95.4470685315977079    29.0444938375913644
-41005  -84.743592938534519     39.0154034339637548
-33870  -81.4489716201639169    27.4984074030706829
-48070  -83.1678559371766113    42.4828401736880963
-05673  -72.8369600823240972    44.1854459948546321
-82523  -108.692583283204002    43.2928961935190486
-10998  -74.5428600251654672    41.334165424503361
-45780  -82.1332848168926688    39.3706358508014134
-18239  -75.9816231217949252    40.9892832179486675
-57559  -100.712821922268901    43.8613266176470518
-74450  -95.4696461796832949    35.5963261867832301
-16344  -79.6901776390804031    41.4712813333332946
-88047  -106.726924932378154    32.2241918624642238
-04099  -70.6694487999999978    44.0133425999999943
-07093  -74.0125365501248496    40.7887173999999888
-41760  -83.0860619160584548    37.1969245437956246
-50006  -93.3905757775625887    42.5005362833032763
-84170  -111.972562499999995    40.6930019999999999
-40363  -85.0122360425531696    38.5217477845744796
-17527  -75.99234234054056      40.0056473688394192
-95698  -121.914578025906906    38.8155827478411126
-60014  -88.3343505239835309    42.2255519709171523
-67679  -93.1160192666666688    36.532566199999998
-75702  -95.3099207861228166    32.3602012348376462
-50246  -93.7868381351637339    42.2846172170010135
-10474  -73.8867428325302171    40.8127823771083911
-77637  -98.2357719999999972    34.0119304999999983
-49259  -84.2476517432875767    42.3831450805501291
-38337  -89.0117665332373917    35.783758170319814
-89505  -119.835009400000018    39.5226293999999925
-43843  -82.1747180325589852    40.3305135624050237
-78570  -97.9228422774817346    26.1783470794437321
-77708  -94.1628836884082574    30.1412059938649683
-03685  -71.9348326666666793    44.2724673333333385
-76209  -97.1110537366304385    33.2357161283826983
-52857  -97.3257600000000025    47.6085915000000028
-19374  -75.7533844513108363    39.8268802434457214
-79758  -102.353811222061111    32.0262281023222428
-64053  -94.4637373944267864    39.1061111704179751
-98349  -122.776452276217213    47.2680265733049438
-67511  -99.0063632049585891    38.463263305785091
-38301  -88.8247702084563713    35.5974408450492561
-57401  -98.4953712108931683    45.4731913271681236
-37210  -86.7387918353125258    36.1405949857757633
-25010  -81.5335063076923063    38.2326553076923119
-61546  -89.7982472954296185    40.4490281782159613
-14048  -79.3272358075838753    42.4797572727614536
-95675  -120.743596275773257    38.546013771907262
-90814  -118.14364105911325     33.7710225987958026
-56651  -95.6301210146036311    47.4718660535466483
-39603  -89.8530930000000012    33.0774681999999984
-88264  -103.757771575757559    32.8555759696969645
-63767  -89.6110591325301016    37.0438552289156533
-65542  -91.8733708296395548    37.4987862587594876
-92548  -117.112281409166854    33.7521562236810411
-55931  -91.4078281541286373    43.5189762293577758
-77584  -95.36519383101448      29.5536746755199609
-85320  -113.141795188180311    33.9120903157076512
-33493  -80.7186577181817455    26.66334583506492
-43910  -80.8217204740623316    40.3778411259381045
-79913  -106.552717999999999    31.905899999999999
-03897  -71.33161960683762      43.9072553846153895
-93207  -118.655860943573643    35.8766470426332162
-56428  -96.006172499999991     45.7821895000000012
-56310  -94.4513796891399409    45.6255113852688794
-97357  -123.817064629363358    44.7428153408624141
-27239  -80.116147832857294     35.6140570558006999
-99149  -117.479690095652259    47.2180857391304514
-36567  -87.6244502492050543    30.597678385318833
-56673  -95.1119297357919464    48.8491043548971504
-18942  -75.1581975372361626    40.4732330424231819
-15333  -80.0114981179370659    40.0222518926009627
-63769  -89.7386074439753116    37.5173146528092829
-53525  -88.8606095187368936    42.5557368258153446
-60642  -87.658527373860224     41.8989103088905921
-60503  -88.2546842249655157    41.7129794924553678
-64109  -94.5670867836977322    39.0662186361829029
-72938  -94.3735453313649941    35.0157490910742553
-10940  -74.4509397887644724    41.4515335736228892
-44105  -81.6223893522370929    41.4508257765973767
-95451  -122.780084106606964    38.9571603969274989
-17503  -76.0837783749999943    39.9380502499999963
-51545  -96.0064105744449989    41.8305275795413039
-75374  -96.144161749999995     32.8395377500000052
-12929  -73.7240420373443754    44.7229566991701333
-24328  -80.6963002291795135    36.6589291420519174
-37184  -86.1461084442848346    36.0882507271679174
-53176  -88.4127822727272843    42.6423115909090953
-47326  -84.9702033487858301    40.5455038356412913
-30909  -82.0716260809089988    33.4783499205968411
-97735  -120.975177227378353    43.3658844037123288
-41762  -83.4929521241379291    37.2290552597701279
-61449  -89.9947016368638089    41.0908064662998669
-07203  -74.2618142860048494    40.6517358366655657
-61535  -89.5392632188045923    40.5915723070226306
-71367  -92.3025771169995153    30.8908041992429183
-21113  -76.7076520945464608    39.0739547870649773
-10312  -74.1782376467592428    40.5432179013585667
-99115  -119.349298669606839    47.6151481323042063
-38254  -89.3504324698795216    36.3812901927710897
-26170  -81.1697001666159679    39.3722556528322585
-15316  -80.2669944999999956    39.7502293148148382
-71826  -93.6703465121950671    33.1088809502439005
-42741  -85.2476945619090571    36.9974469135525297
-12543  -74.2144070095578883    41.4877751373954737
-15542  -79.069631407739152     39.8665297567607695
-31701  -84.1598848723094477    31.5769931100353958
-50849  -94.4225568653926217    41.3031207631906412
-97533  -123.270211777777803    42.2722729814814926
-92136  -117.121528146341447    32.6837810813008147
-02645  -70.0575581536826348    41.7031506056241028
-53146  -88.158133777170363     42.9728359223896419
-30581  -83.4191096549295708    34.7931949436619661
-43579  -84.3963674999999967    41.4238100000000031
-92202  -116.256629666666697    33.746091642857138
-17756  -76.7255658249052317    41.2134647145846813
-06059  -72.9093687338402958    41.9310953688212891
-20784  -76.8891013778085295    38.9528512275637269
-68865  -98.1992186405313419    40.8991634747508925
-97351  -123.184854544800402    44.8384725834245188
-72330  -90.2177017896076592    35.5895798976057449
-27838  -77.5079596794871719    36.4684452435897484
-23160  -77.8309989999999914    37.6410808888888937
-46047  -85.9291293846153792    40.2634494230769207
-53511  -89.0414323307934694    42.5307713750889604
-84405  -111.969785113167546    41.1635071013348792
-35068  -86.8166318553060705    33.6084815236733689
-76909  -100.464466112359531    31.4433094157303401
-26447  -80.4896302656824361    38.8899168645230162
-08607  -74.7475037142857133    40.2661265714285719
-78122  -97.7226382760416072    29.4423802354166462
-36875  -85.1507694260916281    32.3241812475980339
-52255  -90.9538662449140105    41.860320399452263
-23061  -76.547260972082384     37.4281137023736932
-31204  -83.6756266370328063    32.8485400224719299
-44001  -82.235776573054423     41.3891172845477158
-23661  -76.3831044854388068    37.0076925533253345
-67337  -95.6288998550544136    37.0433922352674259
-02142  -71.0824650310558752    42.3638291739130324
-55334  -94.2160582318111324    44.5390581511958175
-58533  -101.798556671814538    46.4076300685328462
-27851  -78.0286843015593377    35.6404967552543042
-85338  -112.414104845648197    33.3978321233476336
-17881  -76.6765348926488315    40.7817683325554228
-78503  -98.2469058768872259    26.1751029119235703
-89191  -115.046026020618555    36.2412999621993208
-01242  -73.2517350469613007    42.3187121906077266
-74067  -96.1149854705882518    35.9976011176470649
-75189  -96.3181555184843177    32.9415255850755884
-93456  -120.202701605072491    35.0144990072463571
-98533  -122.519433064899445    46.5898394424132221
-72125  -92.7901598396408502    35.0574743842207113
-75496  -96.0719977829947709    33.3626382366398317
-28464  -78.020984768513344     34.7740221514980234
-18421  -75.4476757852796851    41.6574560461237695
-85612  -110.240492249999988    31.6860159999999986
-60603  -87.6272630889570792    41.8795751564417174
-70607  -93.2041138548786563    30.0918235959466571
-17405  -76.5356215000000049    39.9635640000000052
-37146  -87.031012687843841     36.3995875082554932
-49076  -84.899204526140096     42.4369669076751563
-28159  -80.4350881165455007    35.6936234711500333
-45683  -82.8593225483870839    38.9527560967741948
-29546  -79.3696020499648114    33.9293186138869487
-78222  -98.3884251773222474    29.3805663905101611
-77205  -95.3395403492063735    29.9818808095238083
-57055  -96.7402332817572983    43.6650652702960684
-94118  -122.460345961182213    37.7817400454345034
-56164  -96.3286438537831202    44.0288195399911473
-86308  -109.018824124999995    35.3648503333333366
-26578  -80.1731413571428675    39.4469148571428576
-96728  -155.115032357142866    19.86996657142857
-62665  -90.5338375569879474    39.8201808161465109
-11952  -72.5407397861201275    40.996006064661465
-14571  -78.245508412064865     43.3476017113689025
-29826  -81.3807339061033161    33.3844357464788786
-20440  -80.1788205833333336    32.7214759999999956
-53913  -89.7482430285145654    43.4834991700990088
-81252  -105.389851798434648    38.1359310830780558
-06516  -72.9678256544991655    41.2694731046631986
-43620  -83.5520351114903974    41.6647154675767908
-41544  -82.1734361656229311    37.600261877522648
-97448  -123.263125591236459    44.1977294235310154
-27047  -80.5778792902737706    36.3136088435713233
-16124  -80.2684934068697657    41.3305496375314405
-21652  -76.2835779842271648    38.7228401955836006
-25125  -81.1849898818351221    38.3190520755328734
-75770  -95.6446898321947003    32.1469943622971925
-68946  -99.9753244742268237    40.1182435463917813
-13734  -76.4046185547802708    42.0681248339148937
-15342  -80.2181628750001039    40.2420865351368775
-06473  -72.8579710018907036    41.3805646182448896
-35921  -90.0347583333333432    34.005471
-04261  -70.8824094419808688    44.5495904868808736
-73074  -97.263892080341833     34.8363753760683892
-36748  -87.7790972237835234    32.2885781933724729
-38559  -85.5087372725850514    35.8190563288207002
-23409  -75.6242450091241238    37.8675970821167311
-24608  -81.3411812500000053    37.0869047500000022
-02895  -71.4998596300965801    42.0024564107717566
-59823  -113.589374487963923    46.8912401344032119
-65625  -93.829739391842665     36.6681030381939763
-54636  -91.2589359600585794    43.9554098246469209
-16156  -80.2175818999409245    41.0975649207120313
-85308  -112.183716536999171    33.6599969298368649
-27115  -80.4201670000000064    35.9355358333333328
-76272  -97.110266656938748     33.4744562466296216
-62703  -89.6325152971249537    39.7701777725363073
-68756  -98.0236104216066195    42.144605834349079
-72068  -91.6919687076565708    35.2070669744779394
-66548  -96.75374833779955      39.6807539110839684
-23665  -76.3867980922787382    37.0905985084746064
-84032  -111.347822223786835    40.4731072072453628
-48611  -84.0893536021616796    43.6152032032938735
-60948  -88.0614056191222119    40.5266316055381068
-43230  -82.8752476598557166    40.0402871763463253
-96703  -159.309606140000199    22.150266302727271
-86082  -88.2562326666666621    30.3851739999999957
-33530  -82.1802147083333381    27.8919037083333308
-79831  -103.716078887871802    30.3506512723111932
-46798  -85.2273567188697569    40.949406761494302
-85997  -109.828720000000004    34.5823134999999979
-95526  -123.620601794990478    40.4447428250894703
-92007  -117.275164356759362    33.0242195365398672
-17539  -76.0968756666666621    40.0364163333333281
-79052  -101.754970964843878    34.3589748684895895
-72153  -92.3192355958519215    35.6389768919806329
-51557  -95.9640906873807609    41.738128767784076
-58746  -102.115400431762907    48.7181388243514846
-60433  -88.0552855069598337    41.5091862181234816
-02465  -71.2262291609239924    42.349990601672971
-74826  -96.91557371680382      35.0093048454759028
-05873  -72.2149820092699173    44.4102560085746916
-72321  -89.9406108495574728    35.8179097079645956
-89017  -115.2127972425249      37.5294052990033151
-28472  -78.7125302691211033    34.3134249033678955
-47905  -86.8053571799369195    40.4194729203516019
-24237  -82.2812929435248748    37.0274722682965489
-78062  -98.1891183571428741    28.7347818928571357
-15470  -79.5499280350214661    39.8506760996766261
-74040  -96.6115135000000009    35.9867135000000005
-52044  -91.3177476812266917    42.7627096161710156
-75444  -95.5620666666666665    32.7374836666666624
-06039  -73.4430190101222706    41.9551084470338651
-49659  -85.0067056798196887    44.8914827380990928
-37857  -82.9697305076825273    36.4150348618714688
-24353  -80.5804402727272588    36.7036278181818219
-32619  -82.8830510878275106    29.7479989315219413
-62873  -89.0473975000000024    38.4832989999999882
-30024  -84.0962119887204267    34.0666614601371123
-08542  -74.6584006378269578    40.3522006458752358
-30812  -82.0272222857142879    33.3715674285714314
-58802  -103.616706499999992    48.1763295000000014
-88252  -103.21752040143393     32.1171324383000183
-34974  -80.8433918178656938    27.185811519134969
-68834  -99.6559028735869816    41.0119222538540527
-11225  -73.9535014285714851    40.6629912775842755
-27217  -79.402776491443646     36.155220842046532
-29718  -80.3720587512573132    34.6401102244717336
-24901  -80.4415538228452931    37.8235487628519493
-21022  -76.6705686086956604    39.4002362608695691
-98011  -122.199481224834997    47.7558560847910627
-12917  -74.175015071129792     44.9232475905559596
-49643  -85.8084779626517786    44.6447135286659531
-87579  -105.612022321479429    36.1539458918918939
-28208  -80.8987852626793256    35.2361421267644133
-45015  -84.5500404671313248    39.365079227490078
-98331  -124.414678676147616    47.9191802348629849
-79311  -101.870710772013027    33.8448065835298166
-30155  -84.3075970000000012    34.246015666666672
-70554  -92.4390737822059378    30.6307116024557153
-36849  -85.4894916582278626    32.5988987278481162
-02139  -71.1044358623303765    42.3642388747967473
-94528  -121.956006830826894    37.8424422124060058
-21758  -77.6666549366003096    39.3459397704500091
-97384  -122.618927826086946    44.8181866521738996
-84540  -109.619718263157878    39.0292629421052766
-31823  -84.8193664239448708    32.8108805613346348
-17235  -77.6982919374999739    39.8577594119318448
-84057  -111.706592977074166    40.3154807951867653
-05068  -72.5358801836702582    43.7917234022967534
-94608  -122.281841104821282    37.8357048680358119
-41002  -83.9887952634367991    38.7340163997412077
-59772  -111.268458500000008    45.7850427500000023
-28326  -79.1523832171668715    35.2816522598611897
-38242  -88.315799353420644     36.3058502198833608
-06239  -71.8619320138474933    41.7972695895646567
-62814  -88.739654068624489     38.3619654306263413
-60142  -88.4400362011231351    42.1681899542427558
-42461  -87.905752187109357     37.7771218093748686
-79545  -100.572554177120935    32.4211845976862705
-75087  -96.4471210239246659    32.9421685752177069
-39753  -88.6354335909090736    33.483238568181811
-24218  -83.0832346981132162    36.7354939433962215
-33009  -80.1512388124486819    25.9857942257193422
-13353  -74.7596190035842341    43.385291103942663
-31057  -83.9341883335242898    32.4445989484240371
-48134  -83.2899181468653751    42.1088843291620236
-36568  -88.2569632542372915    30.5008762542372835
-98682  -122.50945597059868     45.6680321512841516
-98252  -121.932449390319036    48.0807007650732672
-01903  -70.9451729999999969    42.4622172000000049
-49913  -88.4505266437189306    47.2395932196339885
-31518  -82.1824474251815786    31.5185663016949107
-47114  -86.0720189128440296    38.2865539816514016
-49102  -86.2737276099585415    41.9441864456431333
-79924  -106.415863304151387    31.9038648259127484
-77993  -97.4307201515151462    28.8223330909090869
-21803  -75.5988045     38.365680999999995
-13795  -75.7862206442230075    42.0631833848606433
-27313  -79.7506741287236025    35.9348414663296296
-24891  -80.755715500000008     37.6487424999999973
-43084  -83.5475035976290741    40.1614412601115944
-80932  -104.920396000000011    39.1238820000000018
-04490  -67.7544629933962312    45.4290338122641018
-02050  -70.7061601857162856    42.1093886848034629
-31040  -82.9327145624999957    32.5643025624999964
-11212  -73.9135261803543244    40.6625883569511757
-61479  -89.6428116193181523    40.9982282045454625
-57437  -99.6480928774121253    45.772831380531116
-01564  -71.7706111489803504    42.4414322645013087
-49034  -85.3395437963065433    42.2407879755567208
-01088  -72.6440460624999815    42.3864930614919189
-65726  -93.2401921474358915    36.6231394423077106
-15753  -78.6578659397174107    40.7923175229073252
-83815  -116.793822146706319    47.7222185332753881
-99650  -162.88273700000002     61.9394163333333339
-64067  -93.8652808718934466    39.1671753416851516
-88108  -115.21053839999999     36.2082184000000069
-72104  -92.8204395703692171    34.3750995618624984
-94526  -121.983311100257879    37.81518489577455
-26349  -80.120702964285698     39.2332778571428591
-49113  -86.4962293440795236    41.7997536975380797
-46764  -85.6212072411066174    41.2113238382740263
-01607  -71.7941981560124987    42.2287633996424105
-54024  -92.631282808315845     45.4652277895099886
-42711  -85.3069231333333278    36.8603096999999948
-43531  -84.4941882080000255    41.6354821439999867
-74028  -96.521102452738532     35.7981858424613009
-16154  -80.4169802401170131    41.3234861727248557
-91917  -116.727203134498325    32.6268258982252206
-41367  -83.2278030892019132    37.4062811825769117
-18466  -75.3702208416209203    41.1836466964270187
-17973  -76.22698166666666      40.5948373333333379
-43466  -83.5074503776009607    41.2949229088092125
-76520  -96.9492117442088954    30.8629656001984891
-45347  -84.7738977324765983    39.8968148505723263
-17211  -78.4145265580149697    39.750232532309866
-35973  -85.5586156272946141    34.3501002498340142
-07474  -74.2377024999999975    40.8922434999999993
-95863  -122.350464344086035    39.1453876666666787
-31017  -83.2386421315288629    32.6265622346549904
-78342  -98.081004225225243     27.6473664954954863
-62942  -89.48901480763368      37.6312849134859704
-90716  -118.072999440498876    33.8295440489443493
-25181  -81.6249976268391748    38.0772120229547042
-67405  -96.289005666666668     37.7735586666666663
-14171  -78.6396749420569847    42.4196619309674574
-79323  -102.831819015105864    32.9625611712758868
-42031  -88.9862490209691828    36.6812795126872828
-79014  -100.364809125783168    35.8934418067470276
-69032  -101.058548402337379    40.5429089582637445
-79561  -100.14432847566934     32.4921812348215298
-45132  -83.5999569545454762    39.3443474772727129
-18322  -75.3998027764595236    40.9271309662816023
-03505  -71.5630639090909       44.2574267272727297
-73724  -98.6109771675125586    36.0562143413705343
-01570  -71.8556190295270341    42.0462203514501809
-29058  -80.6979495916036313    34.5959980405536882
-76131  -97.3441311236657043    32.8794805590912489
-26585  -80.3989821858563829    39.6063811455289496
-83200  -112.435331888888896    42.315790111111113
-43619  -83.4758461257030717    41.6053860939257163
-64074  -94.0757327890466115    39.0968969492900769
-44861  -83.1504880624999885    41.2404343374999911
-41554  -82.3185080076372202    37.4515240415274206
-30625  -83.3333889511753512    33.5227469147830277
-62613  -89.7171833971084141    39.9651200739757684
-40065  -85.2157294914955088    38.2093145876580067
-68784  -96.8757053603312954    42.2451161840773537
-01611  -71.874483182008376     42.2403537008367564
-66154  -89.4681708333333319    40.834994833333333
-98561  -123.621097400000011    46.5856205999999986
-01262  -73.3240708063082991    42.3019727605509104
-98579  -123.071326133324135    46.8149786133468737
-28523  -77.2893614137929461    35.2113299368941952
-83627  -115.496867759353137    42.9449764883720846
-15436  -79.7516566099584168    39.8216344123444372
-97886  -118.285089394006363    45.7955825231378952
-12770  -74.8578648201663412    41.4469306112265983
-31728  -84.2791184838709597    30.8212235161290344
-30291  -84.5434021049273383    33.5744092234432472
-15992  -78.9099934999999988    40.5300378333333313
-52041  -91.2637573256310759    42.4986532984755314
-61278  -90.3557197222222044    41.5748273434343432
-97033  -120.666692495297781    45.1551726363636234
-31830  -84.7144016098013992    32.8962991698013383
-74043  -95.793425473684195     35.9215586315789537
-76424  -98.9221391026645591    32.7586675084615067
-95372  -120.26975893227754     37.9888322954669633
-30448  -82.3655377404579667    32.4913853358778795
-27552  -78.9341591702127658    35.4101034042553167
-37381  -84.8603400070999925    35.6927065516689694
-12067  -73.9231036044949832    42.5598792139520441
-57729  -102.119370387464514    44.2897794672364427
-40360  -83.7608724934340501    38.1541047853081423
-95910  -120.846841049541254    39.4681235724771042
-97383  -122.749146121333141    44.7965235112899052
-26405  -79.8940990262083233    39.2222190755616111
-31811  -84.9373515114853035    32.7377136499146744
-97011  -122.012824536852506    45.3699419970119635
-12040  -73.3629655551020932    42.6351989959183797
-43727  -81.8159598214786428    39.8749557901173617
-60417  -87.5936722213634482    41.4438332020412119
-98520  -123.820917148874415    46.9755190153583513
-41098  -85.0119079501423442    38.5904213686967736
-44149  -81.8554057548807208    41.3138166769563
-17515  -95.5086912499999983    29.1505832500000004
-05142  -72.5883441515486112    43.4052151023230905
-12789  -74.5692866602055062    41.7059957041139455
-18662  -75.7704569523809539    41.0457426190476227
-54169  -88.2776448749999929    44.1803725312500006
-30411  -82.7826029619388777    32.127540678269348
-70436  -90.5216346656580697    30.8192240332828611
-15929  -79.0009331891891833    40.4671450000000092
-12192  -73.8277682434433586    42.4079825266893167
-67055  -97.2035978372093012    37.7835431395348706
-48723  -83.3866723567646488    43.4873694049510533
-28743  -82.8893894779736513    35.8157637078399986
-38137  -82.428875357142843     36.5147397142857173
-35481  -88.0388402021397667    33.4016668598710709
-94539  -121.925991490704945    37.5159329222683695
-95811  -121.488400270188009    38.5816254371584435
-66404  -96.1854362370571607    39.8563586307901971
-87433  -108.009970764705869    36.7211415882352981
-18330  -75.4543703129811973    40.9714112516201112
-29909  -80.9310882401958054    32.3072322422968412
-16935  -77.3228753467248993    41.8672240541484513
-57625  -101.184353287165692    45.0011008540106872
-92270  -116.422512723258308    33.7709924636287937
-92560  -118.231972999999996    34.863710999999995
-78009  -98.8905060885842744    29.3482193835924257
-02651  -69.9893665236363063    41.8601227527272997
-96938  -122.523625500000009    41.647001000000003
-61041  -90.3043190143969809    42.2693313606029477
-16826  -77.6006133997478571    41.0744928726355951
-12873  -73.3156783057444699    43.1130032392290587
-10703  -73.8809695861001501    40.9566300442673992
-96008  -122.120640225776299    40.7113627911452696
-38928  -90.2802332407407135    33.8561166481481379
-71255  -92.6567569999999989    32.6985592500000024
-32503  -87.2104122774441066    30.4570524622586909
-26611  -80.8210940783882137    38.8415745223443665
-40339  -84.6412487929155191    37.9443184114441578
-74362  -95.2728028823529485    36.3287515294117682
-13456  -75.2570197809383075    43.0028599811599506
-75791  -95.2216548808589067    32.2250409401637796
-50234  -93.1828577180086199    41.8993693313168976
-33848  -81.5076018405797242    28.2611717246376841
-08021  -75.0042851490305083    39.8082735349934467
-32072  -82.4243733591160748    30.205189154696118
-70003  -90.2140377588103348    29.9968586063562164
-70585  -92.4067027089843407    30.8762411191406088
-62051  -89.4046179678300774    39.203559658795335
-99341  -118.616449372964226    46.9394130659608919
-68928  -98.5938006832883644    40.359788595687327
-57371  -99.2222136845860661    44.4103909487609201
-13367  -75.4435820066922815    43.8085297877071298
-43739  -82.2887889910654167    39.9094064250614124
-77015  -95.1770047358255198    29.7818545620919473
-77445  -96.0568281264503696    30.1013962350977486
-35026  -86.2148068636363547    32.7793362727272779
-56466  -94.6191223299269666    46.3560429051917637
-27109  -80.2793437800000333    36.1348456200000072
-39744  -89.2860802554308464    33.5687618129007248
-76475  -98.4993285418162401    32.6901144125192573
-52802  -90.6195447124195965    41.5114285079825081
-12308  -73.9201550453762763    42.8200051568063316
-25271  -81.6989064100064155    38.7972895388680286
-49905  -88.6746301580408129    47.1167746298520882
-33880  -81.7571193907507734    27.9956802683756507
-13413  -75.283364937491001     43.0650014840819537
-57739  -103.604724166666657    43.7704356666666641
-14766  -78.8136160588235271    42.3646500588235355
-95640  -120.933705720671782    38.3275737418245512
-80644  -104.527031279347398    40.3598041153999318
-18272  -104.605599800000007    44.6794392000000045
-24977  -80.6568845712165512    37.8800290593471942
-30814  -82.3071864873989796    33.4363315542673476
-83313  -114.240929336952007    43.4223005944419498
-17516  -76.3630877942211299    39.9378243072924235
-73734  -97.897444456325232     35.9858854006024416
-65729  -92.5824330051282232    36.5215447076923283
-30683  -83.2648998385793959    33.9555183039585131
-13378  -74.9762051000000156    42.1215321000000031
-27943  -75.6857653647642223    35.2171088693134564
-05030  -72.4116047800000047    43.4079598799999999
-92831  -117.898919595991529    33.8814598964365956
-83429  -111.390676528443663    44.4985377706361049
-38550  -85.6293110000000013    35.769488209302331
-55766  -92.3913876069182862    47.2315739512578432
-77477  -95.5688762153037032    29.6279469969459939
-38579  -85.5502443896662896    35.826710947255151
-17744  -77.1587250314455702    41.2445106524009759
-29641  -82.5868380000000002    34.7505389999999963
-02668  -70.3677308023157195    41.7055592955195706
-28741  -83.2085236814666729    35.0647316758261169
-73062  -98.741547292499888     35.0724649974999849
-97487  -123.360993700275131    44.0324571796782038
-37828  -84.0704792229904143    36.1954710155575015
-36003  -86.7156616935817937    32.453523442238783
-97376  -124.02992991404048     44.5051821986437659
-07034  -74.3816802272160942    40.8811874051185811
-45688  -82.5205695275511601    38.7164007816325935
-15549  -79.0130882666666707    40.0288837888888764
-08328  -75.0546643704663126    39.573784278497385
-32920  -80.6075666091597753    28.3943118722352636
-07304  -74.0729624024520064    40.7168532862473853
-58329  -100.071390161082519    48.8444864243319969
-45414  -84.205836914899038     39.8314855134578849
-74075  -97.0579429655327885    36.1539137709752794
-75377  -98.2208067000000113    33.9911967000000033
-71660  -92.1926029671551248    33.7605282152601944
-30564  -83.8856514439202385    34.4702127062154204
-67205  -97.4427655718488523    37.7384872687115092
-46799  -85.2819500563380473    40.9161567699530693
-63010  -90.3929965335509422    38.4294456398440119
-67844  -100.196220779362278    37.3906060597733543
-44703  -81.3813686955218998    40.8098328264410171
-74030  -96.5804534255445475    35.9932581407921646
-84765  -113.650792856954581    37.1365989356030539
-51455  -95.0593405359769719    41.9002211251450092
-92410  -117.299848547465245    34.1061649523261252
-33276  -81.1889156000000014    28.6181120000000035
-73942  -101.481356744263294    36.6872583009227142
-22357  -101.381863749999994    33.6763244999999998
-26710  -78.9385002051480313    39.3205225195008197
-54766  -90.953694204778202     45.2701570546074734
-45174  -84.3093969980353108    39.159580401768217
-03070  -71.6854504714125511    42.9813538566799878
-95027  -121.42405895555558     36.8090819777777725
-70662  -93.0023044231706564    30.7969710524389804
-29536  -79.3591769166961853    34.4121763861994765
-48412  -83.1690561101721215    43.0599856093597424
-64108  -94.5850548859530278    39.0844502967479883
-63936  -90.1259277703905042    36.8158758320767703
-12183  -73.693531124711285     42.7426860623556735
-04426  -69.1964645316823521    45.1916874696404562
-41517  -82.6038472701149686    37.1884202241379498
-49816  -86.880431976744191     46.2355021627907092
-23229  -77.5657920250414747    37.5927102214402495
-07852  -74.6666065483538262    40.8810672453704527
-16155  -80.5085847142857034    41.0735169999999883
-36047  -86.4719677619663116    32.0758025122897692
-86406  -114.272976008728406    34.4765874675426502
-14036  -78.386590131122091     42.9780359925603932
-00979  -66.0167702951805779    18.4347815271084379
-33106  -83.2251464999999939    33.0526875000000047
-04551  -69.4361711965838708    44.0095564357141384
-21867  -75.7965701282051612    38.1097251025640986
-01830  -71.0639038634731577    42.7897538664058885
-88752  -105.955852999999991    36.0120736666666659
-51056  -95.9554487368422144    42.2381862825753629
-67360  -96.1037953532537017    37.0617169867197802
-53066  -88.4830785370781996    43.0797420308442369
-68942  -98.3143287779751347    40.0926899822379994
-63932  -90.2480167402274702    36.683525174383135
-74745  -94.8251419490890868    33.8938307969190191
-36346  -85.9316839725154722    31.5533494390415186
-59213  -104.838451609375014    48.1548847218749927
-37892  -84.4252771966105229    36.5621356514213218
-59837  -113.224621431134508    46.5438026388887494
-34293  -82.3888885762826391    27.0553363658865891
-83283  -111.700902914230028    42.3590686500974414
-66085  -94.6525569459192582    38.8087441537610047
-29516  -79.6328929696969965    34.4708805274365062
-19505  -75.6247407844602151    40.3814346355655474
-17925  -76.0682362662889489    40.7491252464589309
-62627  -90.1145656260747785    40.0513030185759078
-07050  -74.2358251583260653    40.7676543968939384
-75750  -95.0719458477547477    32.2653236494591624
-06447  -72.4594053050907547    41.6400839295677017
-41364  -83.6491592974452942    37.3899056715328442
-56180  -95.4663502890399513    44.2346618327980821
-98003  -122.313944183154419    47.3135252168297455
-95835  -121.520526832278037    38.6712566049355644
-47227  -85.6502852639446957    38.8722568346750919
-61064  -89.5891393643892826    41.9904579387475607
-52548  -92.5291239302325437    41.1172568571428201
-90038  -118.327786361453946    34.0888255171467023
-84106  -111.85632116750277     40.7039803123373929
-12933  -73.7237517407407523    44.6327480740740654
-73720  -97.8578984900663187    36.2053648410595699
-98117  -122.380995428147429    47.6880412369737101
-24374  -81.1906914745889594    36.8072817623318045
-73627  -99.4698809265092052    35.206900044619438
-54940  -88.842899570241272     44.2211223370739646
-67575  -99.2482629979253943    38.4425375103734694
-89407  -118.790240133333342    39.4885931333333318
-17260  -77.8924931397429816    40.2974057859061574
-04492  -67.6901591324920986    45.3478604337539366
-98896  -119.949510600000011    48.027409200000001
-50055  -93.2870139881235474    41.8827739192398525
-20522  -77.0495901666666754    38.8935823333333346
-17111  -76.7868768316766648    40.2712525375854824
-29340  -81.6162726744130964    35.0145609169642924
-46910  -86.0378501714164798    41.0344915777917265
-04450  -68.9325779196598063    44.915846277410111
-11569  -73.5807008141592718    40.5904516238938342
-29589  -79.3198003134328502    34.0949231940298461
-22551  -77.6979737191006024    38.182724494671497
-75563  -94.3781463603455109    33.0127557659399145
-53805  -90.6889679366226176    43.144684363641943
-40143  -86.491830578850724     37.7724043581202693
-89825  -114.668842251045973    41.9815953138075457
-25820  -81.104316997331253     37.5002420850172129
-56552  -96.2300307532564574    46.9819228283525092
-76958  -100.71686158027515     31.6646925344036632
-94590  -122.24684590893969     38.1049794991106836
-59722  -112.741477557712557    46.3772076892005032
-46563  -86.3290841091858141    41.3448591059702153
-18823  -75.6865841273712476    41.7822994308943123
-47438  -87.1994810267689928    39.1705711800233232
-40858  -83.3971617222221795    37.0097350317460396
-19331  -75.5266997999999887    39.8897658666666715
-51579  -95.7245057242840574    41.7544448914072603
-63760  -89.8767872533333474    37.2372316622222002
-08844  -74.6524261187554572    40.4998555970342338
-80238  -104.885773727766889    39.7684148881801107
-53011  -88.0098907336344212    43.6586154627539216
-71839  -93.71925313120569      33.3208357819149228
-52231  -92.0637723694331527    41.3624244919028143
-68767  -97.5132948978873912    42.1941644122426283
-07205  -74.2281149668847036    40.695294404657929
-29886  -77.5057998000000055    35.8762516000000034
-24283  -82.3461960854092183    36.93818949433836
-68839  -98.3781385000000057    40.8197155000000009
-25262  -81.8309500374833618    38.9039743159303697
-13808  -75.2559991739887835    42.5273952640852571
-71467  -92.3921556852174604    31.5238407201160591
-61270  -89.9660383456019588    41.8301277881508966
-25048  -81.4366132448377158    37.9490399174041713
-36765  -87.5386416084573113    32.5891347541111926
-32134  -81.8657508333771062    29.396574475525064
-42207  -86.283977570574919     37.3011355197700567
-68524  -96.791078784987107     40.8535418479643724
-07850  -74.6562221535649542    40.9085416550882286
-84339  -111.924285520340433    41.6423886631564955
-50274  -94.8612234799999925    41.3856491545946454
-56050  -93.9512309760284836    44.2672770279663581
-59418  -109.907078200589936    46.8068272094395468
-01851  -71.3328501540997024    42.6307126448290106
-53059  -88.5183959585635023    43.3103846077347825
-47385  -85.4504036538462657    39.8330178623076918
-60350  -88.7940279999999973    41.3844720000000024
-51007  -96.1885112484254705    42.4083818964310879
-64868  -94.6158988499999793    36.669189700000004
-74840  -96.7821293497631672    35.296509913270107
-55962  -91.8446376214875073    43.7705827570248047
-75473  -95.5031671774990087    33.8000368734091268
-39579  -89.2567769999999996    30.3109863333333323
-16159  -80.465723049273862     41.1648847926089374
-19031  -75.2118273410771252    40.1087887460400836
-78578  -97.2529046688430441    26.0873116732937724
-83112  -110.926800960030121    42.8825821983407849
-41175  -82.961014920800352     38.6637824292826906
-30635  -82.8217524042466522    34.1194111885374269
-77969  -96.6719148615384256    28.8030014615384538
-90222  -118.236604963461431    33.9112280205128656
-30047  -84.1145256888091097    33.8723585178697704
-13120  -76.1767786745974718    42.9494747186843853
-37915  -83.899673310145829     35.971913358748445
-20018  -76.9739715151071522    38.9275927165355355
-94675  -68.2301903333333257    44.2918636666666643
-26416  -80.0181918017285909    39.156142319788465
-04654  -67.4938416330217592    44.7187321431020379
-07047  -74.0192076104175527    40.7938477717233425
-95123  -121.832784502464662    37.2433078361635097
-27589  -78.1436464790779013    36.3550330597857112
-18825  -75.5937622883434983    41.8178956472392684
-50671  -91.8059898164556927    42.6470543101265918
-23901  -78.4217355045049942    37.3033046610803893
-60442  -87.972554179925524     41.418271215226909
-46926  -86.054785499688407     40.8790769279924362
-06333  -72.2347905906017758    41.3754975651422612
-21402  -76.4759009624572741    38.9887330716723426
-33970  -81.6577816754966364    26.557156788079471
-08107  -75.0844217607702831    39.9075530471364317
-34239  -82.518887960048275     27.310829933613757
-47863  -87.4590342655601489    39.5785141037344559
-06117  -72.7533015632003952    41.7899020123087084
-49229  -83.8388195276145609    41.98778727692914
-68648  -96.7917255313496412    41.4089411849097218
-84065  -111.955361754430371    40.5097281220985579
-64152  -94.6995589603434667    39.2200438554810091
-46714  -85.1657601463598866    40.7289634702614123
-74117  -95.8896936707317309    36.2285712225610013
-25082  -82.037831470233499     38.5925276493969989
-78758  -97.7039363422667151    30.3809586526880615
-60113  -88.95792889230772      41.9302028830769515
-25554  -82.0785939069767352    38.0837543023255805
-29734  -83.4146370645161426    35.1107739032257982
-36476  -86.4981988562499851    31.3639821562499996
-38488  -86.6901115160576268    35.0425999276023461
-15033  -79.8623932432874       40.1783945272580567
-89702  -119.633506987341718    39.2279666835443095
-49401  -85.9423449560991202    42.9701972688246485
-01720  -71.4432467951627785    42.4792454270507349
-78231  -98.5426096191035441    29.5739358274244957
-38957  -90.3580709806679039    33.9722367803163507
-28153  -81.5052363333333432    37.4282630000000012
-86038  -111.454208816393404    34.9093931868852394
-15477  -79.8635672231708753    40.0796478317073053
-94936  -70.7672177586206885    45.1392390517241253
-54432  -89.6165029999999945    44.9348090000000013
-80514  -104.94621110561792     40.0756332943820084
-67052  -97.5633192504869697    37.6633084274157284
-04281  -70.498319380406457     44.2381335797034367
-39364  -88.4971914535323094    32.4095543060272036
-14611  -77.642067623524909     43.1480458373894038
-96710  -155.136888000000027    19.886507888888886
-45144  -83.6137299213935847    38.7058052901867455
-45788  -81.3685005404919224    39.5154437831187551
-75117  -95.859400280335592     32.7052642980016728
-58631  -101.825072477568384    46.8112096610587685
-72934  -94.2563775308304486    35.6760376471362548
-13477  -75.5107648398648621    43.0367402385135094
-32663  -82.2059339999999992    29.3315829999999984
-66776  -95.4821281469879608    37.4644459656625983
-22980  -78.9049777059654502    38.0843602934240835
-03782  -72.0897006891439958    43.3828222728000554
-37098  -87.3184376322408156    35.886403773375406
-36907  -88.3508587735461219    32.4135271615336578
-95204  -121.318428136091171    37.9733760488311276
-62129  -89.7785291935484082    39.6980928387096839
-58506  -100.811458461538464    46.8204539230769186
-61313  -88.6748731137820556    41.0735984807691992
-72059  -91.3380838823529473    35.1500031176470671
-96033  -122.636631202028454    40.732207688438038
-24066  -79.6993703206573798    37.5360796916149937
-58236  -97.5643287328767173    48.7176984794520465
-53706  -89.4127922781248969    43.0752010390624918
-46953  -85.6547693108695967    40.5302666984319941
-51009  -95.5512667674418736    42.9459185813953326
-59918  -114.925942818973979    48.7577443107454371
-59058  -107.892276615384461    47.104076155195628
-15484  -79.7853401347149713    39.8943817046632319
-76086  -97.7912437621413062    32.7558000196259655
-70773  -91.3740899658119901    30.6092331709401826
-27597  -78.3079564154989072    35.8502635755580457
-73703  -97.9192637094051292    36.4041509984122911
-35624  -87.7493976666666669    34.6987186666666716
-95912  -122.056845578485408    38.992388362788212
-07820  -74.8187292836879294    40.9193676524822649
-22488  -76.5844566496335659    38.0485554310048855
-63825  -89.9303969150699345    36.9191743071069141
-67216  -97.3140056380650407    37.6135250453498031
-54452  -89.6966480046528858    45.1492516694814014
-01915  -70.8679979478862236    42.5649006095507403
-01609  -71.8247551849194537    42.2824104612008114
-29505  -79.7385438631846881    34.1389862791101635
-94043  -122.078382678693302    37.4065641589466509
-31019  -83.0544957445501524    32.4234464316854911
-18405  -75.1026179255636066    41.6089032891838926
-47586  -86.7168581309460222    38.006455339493165
-21784  -76.9655159526840293    39.4004171374176906
-71759  -92.658795758434465     33.3229635465586611
-14052  -78.597443505659939     42.7722322699643911
-12121  -73.6021452458175958    42.8411297534994944
-46809  -85.1868269480654163    41.0235936530402938
-56710  -97.0045732409502648    48.2308340797511761
-45122  -84.1268633114353008    39.2207383350584138
-22714  -77.9085167290280367    38.5239453528628673
-21804  -75.561679822521441     38.3486294205788738
-66502  -96.5648330023902304    39.1870188563117949
-64101  -94.5991958571428739    39.1032752877846974
-50269  -93.0055786382978624    42.260317925531929
-41634  -82.6677801333333377    37.4563375666666687
-65626  -92.0824730987298494    36.5809066024169525
-29129  -81.6679368484936248    33.7899524974091392
-30332  -84.39698688571427      33.7732900571428658
-29587  -78.9725977777777786    33.614859222222222
-66860  -96.1343289918099941    38.1419724156429538
-29615  -82.3034214317004285    34.8605199348935173
-99759  -163.012593621621562    69.7454186081080962
-36583  -88.2004512643380139    31.3637825588615833
-04612  -68.3749507986436811    44.2538325607720893
-43355  -84.2539783333333361    41.4381576666666689
-97341  -124.05771409619463     44.8157732547568415
-08629  -74.7321489779146901    40.220512648690331
-77032  -95.3456361173334841    29.9432111697189143
-12549  -74.2535666333727846    41.5310617352282065
-39530  -88.8921342581583218    30.4028873753896924
-43317  -82.6823982857142994    40.4795849428571515
-73027  -97.2377418041344441    35.9821262931355434
-92038  -116.602033833333323    33.0788186666666704
-78884  -99.5189605734109364    29.6374277217457767
-64870  -94.4719327664005846    37.1571166588381914
-36753  -87.0939231160714371    31.8227624732142935
-60951  -87.749166254721402     40.9173559273608234
-47551  -86.5732555166578663    38.1180886377579071
-63240  -89.6516283333333348    37.1736943333333301
-78833  -99.969564261413808     29.7031487437407655
-37046  -86.7262246491609545    35.7808791762316787
-04541  -69.4782799444443953    43.8870883773148321
-61924  -87.6458575433535003    39.7810495437488214
-46113  -86.3113561312531203    39.6329052824098937
-05872  -72.0292741169915587    44.8570228235840744
-94964  -122.483786482352912    37.9422172235294184
-92701  -117.860432523469171    33.7474394020406478
-33550  -82.3078143333333401    27.9785989999999991
-37215  -86.8274225661057528    36.090694750863463
-40055  -85.327664766319657     38.5022256862719487
-63601  -90.5371904521487636    37.8404269952561307
-44630  -81.4045603750000026    40.9273996249999996
-55126  -93.1366609050588181    45.0878901200328244
-16942  -77.3402219715329977    41.9654367437956637
-88628  -90.2579289999999901    34.3935804999999988
-77435  -96.0567568220424874    29.507484865857748
-58795  -103.169104499999975    48.6283791003788011
-54006  -92.6438023392746857    45.5867819022742182
-25274  -92.7858015882353016    39.0094917058823469
-35952  -86.2939825131189906    34.0592025419306168
-78540  -98.1907450937499959    26.372185093749998
-78572  -98.3317692473431748    26.2161328857729892
-48162  -83.3989243786235903    41.9463185933857829
-39429  -89.7680431864943387    31.2683781418080926
-54845  -92.1351317636887472    45.8081526051873311
-85713  -110.984160258056534    32.1945092492112224
-56264  -95.9733505739611417    44.5571560045748001
-94080  -122.431908479077322    37.6542553165068412
-60471  -87.7260675851869536    41.4815842928227596
-15421  -79.6082769099098897    39.8425556726726811
-66717  -95.6864684263394025    37.7105117968749681
-58210  -98.0312200125627839    48.3987097935501538
-68136  -96.1788371776244588    41.1747645167819059
-99420  -117.19892440000001     46.1412138000000027
-45647  -82.7376845667230185    39.2851992307431104
-95606  -122.184916789209524    38.7736918193224227
-27323  -79.6467407380952324    36.4512417857142879
-68819  -99.8620234999999923    41.6169827500000054
-15631  -79.5864888059702622    40.0899855354477594
-54612  -91.4824008054767717    44.2543610339943854
-90840  -118.122744080000018    33.7850135599999959
-50564  -83.9618676666666772    34.4359935000000021
-78130  -98.0987692267988507    29.6916723794058051
-34291  -82.2325702277453559    27.0935103259526535
-58243  -97.718704051627725     48.5265581686945353
-43348  -83.8844795674127113    40.4688847699115684
-98222  -122.808070637305747    48.5622783523316457
-96160  -120.220555358139549    39.3564721348837097
-31712  -83.7268600685944335    31.8360241916610889
-20164  -77.3927098347924129    39.0129734251998386
-76521  -99.7308622500000013    33.1566222500000052
-72014  -91.1102501626016874    35.4282654715447336
-39653  -90.8542671224293343    31.4648891913834525
-04250  -70.113154653979251     44.0274063021914941
-82944  -110.502235566666528    41.1173648038095081
-59240  -106.240354123188439    48.8427328913043439
-69441  -87.8083834999999908    39.5359820000000042
-75233  -96.8730256771301157    32.7035412394618703
-87742  -105.410176735103647    35.8288992538859432
-28546  -77.3745534830049024    34.7797135557947001
-96781  -155.092491000000024    19.7863433684210506
-49015  -85.2148831735386665    42.2846237169958457
-88445  -104.490572142857118    35.4625372142857103
-10992  -74.1693779503094106    41.4276098018174821
-59254  -104.556499206647658    48.7715572577610175
-75048  -96.5829363401482084    32.9784689195938654
-85603  -109.921373659486918    31.41624534280486
-60101  -88.0060136402855164    41.9326039326953861
-35806  -86.686048611104809     34.7674800785164422
-79070  -100.811422212847276    36.3600227583334288
-46104  -85.5976151389000677    39.6587812244398776
-47904  -86.8731240625206453    40.4281418472582672
-47341  -84.8997622231182447    39.9723235291858501
-17009  -77.5635995205949058    40.6358330675056791
-76841  -100.091843782287782    30.9211420369003704
-31301  -81.6179214907459709    31.76066490521589
-07004  -74.2949964544519901    40.879950223365924
-75684  -94.9427972436084247    32.273336611354182
-99576  -158.528767269137063    59.0475841682105624
-56207  -96.0582581132898525    45.5291653006535455
-27833  -77.3096754999999973    35.6259870000000021
-37325  -84.597606941863603     35.248942074572156
-52147  -91.9590048789574581    42.9549118782270085
-59750  -112.694162650485396    45.95676344538834
-94904  -122.541223152813984    37.9506274123494407
-05009  -72.3431789090909092    43.648393545454546
-24557  -79.3325097143334119    36.972601746408202
-37638  -82.2040343333333254    36.2588346666666652
-63628  -90.5472754291250652    37.9346984765556812
-99151  -118.063353658385083    48.6645865341614794
-07851  -74.8485012067227586    41.2054380554621247
-88003  -106.748362118644096    32.2800225932203446
-85245  -111.384181738095265    32.6030586333333048
-61073  -88.9945782029762569    42.4218959212769917
-70555  -92.1290579418296574    30.0889753614377682
-33605  -82.4319465479567697    27.9637277320163626
-62278  -90.0042693454862643    38.2051832217004232
-28125  -80.7058408200258839    35.6558997637030544
-43119  -83.1804243433439439    39.9401832294420416
-31798  -83.0516579953462895    31.622567064632964
-61470  -90.4896288902438926    40.6089003928570591
-60140  -88.4801646979343133    42.0934492636695765
-58220  -97.6951256480765693    48.8070484071779731
-17028  -76.6595001046684388    40.386136725307118
-37421  -85.1450400265744491    35.0249486272992883
-75607  -94.8151410000000112    32.4451180000000008
-32085  -81.3223066666666767    29.8282306666666663
-95141  -121.752832135593209    37.1612384915254239
-15331  -80.0212839635723014    40.1076954994124435
-31784  -84.0364283619220203    31.2542188118544928
-83861  -116.60905387077743     47.2964469100046045
-40070  -85.262460765329223     38.4800164148373085
-58225  -97.2336425587836288    48.6081871970812642
-84648  -111.833631567522986    39.7106796813574903
-35476  -87.5857046407947308    33.2314569228459362
-67839  -100.452602437956202    38.4809936715328789
-97443  -123.055081185287492    43.2703626508047563
-52544  -92.8946600631231547    40.7251756056847896
-22579  -76.3279548720930165    37.8129636162790632
-70605  -93.2491813775922509    30.1645572226105259
-72108  -91.0935805645161452    34.7217422096774087
-53532  -89.3321141166465935    43.2357788675417112
-80948  -106.096230843750007    39.6662269374999923
-66851  -96.9223115792922556    38.2392616697247689
-45815  -83.9414869838709876    41.1535138709677355
-87417  -108.345966721468997    36.7366380884180259
-17965  -76.1651824194659213    40.6989753583117917
-72335  -90.7758990969674358    35.0151153986019494
-71052  -93.694324211449171     32.0139322525484928
-20769  -76.8076750699399327    38.9814470934132231
-01460  -71.4844112036277437    42.5391257317144849
-01608  -71.8013347350198927    42.2621432143808562
-84774  -113.285056201956579    37.2413349776380755
-99185  -118.694563415767959    47.7802787138326295
-62401  -88.5630280233030618    39.1176634394716203
-39438  -89.109085571428551     31.9653450000000063
-52313  -92.0893912805016583    42.2656190809578263
-00718  -65.7247794636872129    18.2186035240223383
-61441  -90.2902597586560347    40.3391489420364522
-47513  -86.7107586472368723    38.3107848036337089
-14172  -78.8323718993399751    43.2973354859736119
-56037  -94.0502547776596458    44.0291372803110761
-43063  -82.4460699999999918    39.7639172500000058
-05449  -73.2667644999999936    44.5476765000000015
-32664  -82.2222278286478883    29.4500775903614844
-12517  -73.5127822171052259    42.1311628110902419
-88827  -135.39771515384615     59.1713401538461454
-30882  -81.9246821666666705    32.8938876666666715
-56303  -94.2015952199839006    45.5714964028663019
-26408  -80.2994134902437509    39.2047601954703993
-11969  -72.4295125499999841    40.880408800000005
-76665  -97.7149313546551355    31.9224625817146332
-76870  -98.5173001935483796    31.6484358677419522
-32621  -82.6132350913248388    29.4447768930298075
-44040  -81.4120749059026281    41.5282090663194765
-98603  -122.435161540406455    45.9931191755080917
-29567  -79.4300802894632767    34.5434537630209064
-17080  -76.8024059375000121    40.6398618616071374
-85708  -110.864422249161052    32.1840492802012932
-67364  -95.8194234739582527    37.0379180624999762
-89003  -116.762420705211795    36.913477350162907
-45362  -84.6407962489727623    40.2836977892359158
-74631  -97.2903331351780594    36.7994156503376857
-71670  -91.4333304947195558    33.7493121506904572
-49261  -84.2459684705882665    42.1636127411764647
-36083  -85.7022502996592976    32.4206714598885171
-55704  -92.7544178413205458    46.2030600103834388
-37166  -85.7900580131146455    35.9232963169771793
-79344  -102.954454824701102    33.8538294365395984
-57256  -97.2025080253377212    45.2388484054053777
-18464  -75.180590534119986     41.4061791511479811
-98273  -122.333950563145024    48.4187715378154451
-16656  -78.5650298818970612    40.8082280815249447
-95555  -124.062052823574675    41.2885791864407494
-14060  -78.3100234737375303    42.4343972555554885
-57074  -96.3378445000000028    44.1250130000000027
-15633  -79.5207740491803321    40.3554688797814194
-10106  -73.9803765000000055    40.7652225000000001
-82514  -108.905785302083444    43.0092206671006139
-16502  -80.0998079086996029    42.1116743140008367
-04079  -69.9488278722989207    43.803707327469219
-56680  -93.9468065023752814    47.6416818990499067
-39633  -91.1657114659206513    31.2812387177499716
-60438  -87.545896610838156     41.5663476562154983
-67938  -100.53826766666667     36.904565666666663
-14167  -78.3176449450957648    42.7392293584206229
-71943  -93.5609695470919576    34.3340142504690249
-96085  -123.019502661224507    41.7384399244897608
-08527  -74.315546040729771     40.1238441540363837
-61014  -89.8829952453542518    41.9750096163256003
-88206  -108.099440999999999    32.782837200000003
-15366  -80.0472052657142541    40.1366595228571086
-24072  -80.2268599855668896    37.040424127835081
-72478  -91.0603449360682049    36.4582606543589876
-52245  -91.5029003053369934    41.6649819208386702
-27052  -80.1572601683286479    36.3331552699609333
-22000  -76.5953459411764754    37.9948782352941166
-27576  -78.2632781518570226    35.5678099143323294
-17763  -76.9376978393235902    41.5115336004228155
-31909  -84.9212559590584561    32.5410193518979014
-03817  -71.2174614751286157    43.875051061749538
-79732  -102.539361624999984    31.2397642500000003
-72995  -94.1029860000000156    34.8822911249999947
-34274  -82.4549692232142917    27.139569598214301
-56663  -94.4775643493802164    47.5154096849380565
-75169  -95.9988212404441299    32.7318437557171222
-89034  -114.119553527114874    36.8295914143167238
-60615  -87.6014488908235904    41.8019177388059759
-78235  -98.4439988809524067    29.3471493194444477
-50642  -92.8110921088957497    42.4202448773006395
-41759  -83.0286516562796209    37.2229416666666779
-15373  -79.5594832222222266    40.5900022222222248
-41501  -82.5211885229754216    37.4926600498907234
-63954  -90.4850732458643563    36.5563914810250026
-49639  -85.4082290658763554    43.8441658582174654
-65078  -93.0002936639884581    38.3339935140758783
-61519  -90.0946347594936867    40.4640465221518681
-30161  -85.1400626262983877    34.2504858041974316
-07976  -74.4897019257504667    40.7351372322274656
-27213  -79.42197818181819      35.6453121818181771
-19810  -75.5051025574671684    39.8182030251554622
-37664  -82.5005062750684459    36.5226137312035348
-16217  -79.1896225920000347    41.3405388303999715
-11109  -73.9566816363636406    40.7479265454545398
-42257  -86.2891754999999989    37.2392739999999947
-71238  -92.3707570355241216    32.3740867184803491
-11959  -72.6035470510592944    40.8242156572515
-48124  -83.2545864826939095    42.2972476613656951
-17349  -76.6792253087615308    39.7501801401293164
-25692  -82.118429163461542     37.6420988461538428
-71451  -92.6182436111110974    31.0988887222222274
-55477  -103.793320153846167    43.0318098461538412
-61257  -90.2075545333333366    41.6016809075117351
-60135  -88.6927302844511729    42.0961879734709754
-08203  -74.3811058910618499    39.4014698587674204
-87648  -106.203365000000005    36.2018668333333338
-85550  -110.464428461748625    33.3416241393442405
-61932  -87.8621822101617056    39.7905882147806054
-55346  -93.4854590472166507    44.8779153164950131
-12809  -73.4584491563090012    43.2368861594959171
-73458  -97.2447674734424794    34.3440168577048865
-31069  -83.7228951690419478    32.4658696167017951
-16738  -78.6994621102677883    41.8266973891330878
-21675  -76.0878182404643724    38.2880873084577402
-63622  -90.8855628059702525    37.7909053943916859
-78264  -98.4899867554219242    29.1808936582831997
-72572  -91.2963422721202704    35.8986538430717772
-46203  -86.1037943338413356    39.7367830802843685
-04962  -69.6223248035714306    44.4840775535714315
-83253  -113.865004955935433    44.5756432976619124
-71061  -93.9890430776414831    32.7478194678132368
-85044  -111.99150058813143     33.3315767390747908
-90031  -118.210703441617937    34.0812106707849125
-61301  -89.0906856399726337    41.3556169626968355
-23386  -77.7399793571428432    36.792870357142867
-65589  -91.8236449477125376    37.234066859477096
-53191  -88.5443512994127389    42.5772441353555635
-47882  -87.4148595950910732    39.0962740559980162
-96074  -122.574633760330542    39.8855057913223234
-02576  -70.761864031000826     41.7750861972246454
-89030  -115.126432201772985    36.2084903265511215
-25103  -81.396766652482242     38.1987594361702278
-43728  -81.8923477920375973    39.4915616516042007
-97721  -118.649096963396872    43.072643253294352
-62756  -88.9572427499999918    40.0337700833333372
-79087  -102.977916296471719    36.2838803080895147
-35773  -86.7134216737110819    34.8929830383867312
-59928  -114.34406413011142     48.8017744721189715
-10988  -74.5631929813780658    41.3016519888267624
-15325  -79.9655084316546834    39.9485556043165388
-47141  -85.6089415284137516    38.5483780339271149
-02672  -70.3205671271477826    41.6359189553264528
-08078  -75.0721075206314765    39.8492153489556458
-55786  -93.3751072362205008    47.3139888503936916
-43988  -81.0996193797221423    40.4039129912687542
-73047  -98.2711367666898212    35.4463785257302249
-01561  -71.6869007962962854    42.4429198148148146
-55006  -93.1899410187555191    45.7358397523896016
-88134  -103.922860492882535    34.4800353398576718
-37813  -83.2712570197722215    36.1862812137351284
-24737  -81.2500650839160556    37.3552116783216661
-34205  -82.5851028740132875    27.482409715890185
-62704  -89.6866573018068038    39.7775753343641796
-49021  -85.0568243447327319    42.4498879814401988
-68527  -96.5296159803240528    40.8450565428241035
-91776  -118.094916060102051    34.09040152064496
-60666  -87.9117716623376566    41.9684102857142776
-79535  -100.427093347826087    32.2205594754558362
-11726  -73.3960688066426883    40.6791487931600599
-17271  -77.7995525202952365    40.1036405448954412
-04739  -68.5931242055747958    47.0293069168117626
-14543  -77.6758091218411408    42.992614708935001
-49093  -85.6520511933858728    41.9600437006172484
-33437  -80.1481453493234994    26.5139917794940878
-60301  -87.7980575189873349    41.888032831223633
-16342  -79.9330025975081213    41.3243026678485066
-80746  -102.472549172413792    40.6104494827586251
-79403  -101.789936911813726    33.6191743972075088
-24613  -81.3281648028022772    37.2668971904514876
-56172  -95.7537193348312741    44.0115401316854218
-60585  -88.2298659668831817    41.6527231766559751
-35036  -86.8542177663043304    33.5564968478260894
-35024  -86.0126963750000044    32.6362094999999925
-22039  -77.3095671882881987    38.7550689882989232
-45301  -84.0232778088235364    39.7095933676470594
-51521  -95.3415901785966611    41.4756194422807667
-31072  -83.5688286374999336    31.9760542807692012
-42157  -85.8202273309230321    36.7852407643555637
-66761  -95.5521082454694977    37.9061612701812649
-79905  -106.426028791814716    31.768134360665055
-17882  -77.2022421250000122    40.805040500000004
-37774  -84.3264059367702856    35.7210515170661509
-65483  -91.9550182122584232    37.3186758475250215
-54666  -90.512442695738315     44.1113758576600787
-99836  -134.650214235294044    56.2499339852941134
-62568  -89.2983158344592169    39.5527824697782506
-52501  -92.4249140164519645    41.024681294432888
-94060  -122.345823311425875    37.2257316744046349
-98532  -122.992885824180206    46.6213630317956742
-54736  -91.9613160762094708    44.6273480192180187
-59528  -110.425746426174484    48.5860910637583814
-59255  -105.183089117258646    48.1585116180841624
-29453  -79.6768353315114837    33.2109148162789296
-59643  -111.526432810897333    46.1666128317307098
-66419  -95.6134358709056187    39.3732163121387444
-95703  -120.994167493762433    38.9945829808529538
-24553  -78.8146325879564529    37.5421101226490777
-12765  -74.6126435390334137    41.8485188468400651
-26339  -80.6055847920257804    39.4152573696120854
-22957  -78.1778903955095359    38.2272790017271262
-26823  -78.4987326096491103    39.134551065789438
-32320  -85.0037345912428322    29.7297052676979519
-89120  -115.094047385133024    36.0861061271351531
-43525  -83.7064116905370383    41.4637083478261133
-04038  -70.4575718607501784    43.7010101677500913
-03853  -71.2820672999486362    43.6324785952747902
-34997  -80.2223060181900536    27.1306877586917103
-48758  -83.6698053333333434    43.405665666666664
-72476  -90.9436515156992726    36.0567637338036846
-45419  -84.1678373214997464    39.714429897999679
-57420  -100.119178717171707    45.3186806969696789
-84060  -111.49425326226627     40.6568925439088815
-11102  -73.9285014545454402    40.7740012727272827
-15101  -79.9596407456820515    40.5722366182328642
-13480  -75.3711098607328438    42.9182617238219919
-57248  -97.1999886872074939    44.5652991895476021
-17505  -76.1952379790608632    40.0630553375635046
-82648  -107.104715294736863    43.058449305263153
-27956  -76.0057894405940999    36.405399757425748
-19063  -75.405288736871924     39.9189770898661038
-86237  -112.166163777777768    34.5564441111111122
-63876  -90.1601143731698329    36.1311281242764579
-44690  -81.6894789847328582    40.6226084732824617
-98822  -120.308118087836647    47.7264391350009092
-36251  -85.8485992405442602    33.2434985682281834
-47273  -85.736915265332911     39.0749596805509896
-41091  -84.7084953830226368    38.9314057813818479
-44615  -81.0740412456771793    40.5606578033509564
-37361  -84.6898084997366709    35.1053115327595222
-38945  -90.184157096551715     33.6586807999999991
-64040  -93.9905287794119317    38.7298505722556499
-57329  -98.1649539476660493    42.9767553224893604
-37246  -86.7900934000000035    36.158764000000005
-77496  -95.5852624117647025    29.5440088039215709
-91124  -118.151521166666669    34.1495586666666711
-18091  -75.3138023722773085    40.8233392084865727
-12075  -73.6425757803055632    42.3011687941993131
-00707  -65.9154876740947202    18.0079455041782808
-31060  -83.0660972173218397    31.9814784774689258
-79371  -102.660181553616866    33.9925611761701774
-73750  -97.9347093905851267    35.856617236641199
-70579  -91.8614565000000027    30.5435544999999991
-50448  -93.2337271865056323    43.3540925277016527
-07701  -74.0828956777516652    40.3574976330211044
-14904  -76.8037407332392377    42.0723183861387042
-05672  -72.703295056626601     44.4740935930655823
-01803  -71.2011413860071087    42.5062312827745572
-65020  -92.7851918784742935    38.027327779491749
-78933  -96.3631209753988145    29.8363552539893391
-07938  -74.5806742352941257    40.6635811176470554
-31047  -83.6570129179991397    32.5160689014945063
-47556  -86.9234702500000083    38.1600734999999958
-63850  -89.7817898400000161    36.8227975999999941
-59833  -114.047936179162477    46.6406635117853341
-95706  -121.817637703703696    37.0024461111111052
-96750  -155.932956806451614    19.5363210967741914
-46966  -86.564185666666674     41.0441966666666715
-07394  -124.08113075   44.4368774999999943
-81642  -106.643244824046931    39.3328360366569001
-78356  -101.437337200000002    33.2261839999999964
-34757  -81.6429987499999896    28.7918831666666648
-87558  -105.391442266606802    36.6795637176840543
-13117  -76.7062233230768982    43.0082635076923125
-85282  -111.924776406212814    33.3915082417899924
-00969  -66.1070081468307791    18.364724228910152
-88122  -103.791801259259259    33.8217611666666684
-10805  -73.7794004706616136    40.8998335805243514
-04989  -69.6482879579713625    44.4301484717007753
-77093  -95.3385201248890155    29.8642688962890013
-91730  -117.587226695694198    34.1063723113865862
-53232  -120.094972599999977    36.2010464000000027
-10009  -73.9794104249547217    40.7260578878842665
-32064  -82.9905373041338663    30.2935670593274331
-26224  -80.1715895361445803    38.7151128072289126
-95819  -121.439490525880785    38.5706105704653481
-35044  -86.3714931371958272    33.2569849399158031
-20911  -77.0341324999999983    38.9930080000000032
-68866  -99.1024327408009356    40.9601577843057143
-75763  -95.4989267448741259    32.0701421863482423
-63745  -89.6811832642857212    37.2495390428571582
-78244  -98.3485627802586606    29.4767099449581522
-20781  -76.9339905653068854    38.9476717593190003
-13360  -74.776490008109846     43.751554192139686
-78362  -97.2066011673036741    27.8676875459860725
-36854  -85.1796635787539458    32.773775698558623
-93424  -120.729277380484632    35.1878046142762955
-23843  -77.8115168639705672    36.8485593145052448
-65327  -93.4284098823529661    38.8672016544117653
-85325  -113.970094580957351    33.9688032945906642
-85601  -111.278060414804088    31.5816004349577995
-16052  -80.0674515271318796    40.9016060059157951
-12910  -73.6533922523775146    44.8655402820044671
-14126  -78.7202767162790593    43.3366085744186194
-44514  -80.6087540447972799    41.012794628030889
-17112  -76.7863147226610749    40.3440291263373325
-52251  -92.1939159081385498    41.7177162449637606
-01453  -71.7556989470529771    42.5249425119425197
-07970  -74.570856859375013     40.8145806875000048
-43231  -82.9400495497276609    40.079105479725591
-03416  -72.040934923076918     42.7734066923076881
-47849  -87.5500304600732733    39.1891265831501983
-56641  -94.2565953810356092    47.2110184880744512
-87652  -105.673072200000007    35.4965676000000059
-37026  -86.1185581721240396    35.7025943244778716
-75056  -96.8949568906483165    33.0759580388758181
-54235  -87.374340928574469     44.8504084563695358
-19001  -75.1282016583320171    40.1277381392850998
-63472  -91.5818854696132405    40.3952792900552708
-76692  -97.3527134110747028    31.9794602772321603
-71857  -93.3527099967579375    33.7935813363313216
-56574  -96.7289055972222371    47.1892314537037052
-97063  -121.262597630454962    45.2368310239555385
-71671  -92.1002150488019566    33.6076546210586926
-64148  -94.4873089999999962    39.2281171999999998
-54740  -92.1496039644886338    44.7799637272727153
-92375  -117.231502631578962    34.2479507894736841
-31643  -83.5489941843915318    30.7845158168214219
-10016  -73.979670063063125     40.7448101209781157
-84076  -109.837473236543957    40.4548763271954641
-04986  -69.2294811088484181    44.5579876421818994
-16860  -78.1712824399550641    40.9560822738496313
-23405  -75.9402284568192414    37.4164343400188386
-21654  -76.1422676445784248    38.6853222031763195
-63107  -90.2096418792481245    38.6631287411036766
-35805  -86.6158453386181293    34.7094073407120902
-89824  -115.441923181818183    40.9695999999999998
-12976  -74.1673271065831443    44.4694172115987598
-58854  -103.194127619434738    47.7933533600171074
-43083  -83.8374266000000006    40.1085390000000004
-69153  -101.697664920791013    41.112231414322423
-17318  -76.729413162162146     40.0183505675675448
-33408  -80.0609991484054149    26.8398020978843341
-27603  -78.6618113331723521    35.6769750488983917
-29706  -81.2132482713152797    34.7239831670979555
-92579  -117.258262200000019    33.7900440000000017
-12857  -73.9206067759267427    43.7932773090379968
-17762  -76.6966505604166713    41.265512508333309
-59647  -111.668164687581822    46.4833953006535907
-95816  -121.467685458648887    38.5718415586185515
-68446  -96.1825163064905695    40.6615040924091105
-52078  -91.1184639867818618    42.4008253678213194
-56587  -95.8468923131908213    46.6392574476062052
-25823  -81.2099393604575113    37.6721389101307267
-17844  -77.0641032915953161    40.9389056678304186
-31790  -83.5843047003822761    31.6572670066041013
-07920  -74.5691768779057895    40.6778507868622441
-97202  -122.638150761622029    45.4845864562847453
-76121  -97.5405939999999987    32.6150583333333302
-77933  -96.3268570000000039    29.8780000000000001
-87328  -108.988652072289142    35.8395157771084314
-32561  -87.1577234443064697    30.3544457474119618
-37713  -83.1342611191620335    36.0844925321888894
-19380  -75.6030690116921704    39.9862368549791611
-27601  -78.6330089779047086    35.7746724682224198
-06498  -72.4591223231448964    41.298071304709957
-02723  -71.1315761716720658    41.6930760998376684
-44830  -83.4109508232654662    41.1638858699193406
-04970  -70.6447924847055049    44.9639612922628515
-49014  -85.128783646965573     42.3077054801517249
-33035  -80.4513783309913322    25.4492621971116222
-13901  -75.8799561918331449    42.1610363099480026
-46763  -85.2290981295337389    41.2907842336316619
-08536  -74.5806254254126486    40.3350714360013498
-68354  -97.5874173022636313    40.6353241617842826
-89025  -114.645537816556399    36.6899697774834692
-11955  -72.8233194067797456    40.8066943262712201
-87395  -108.830451399999987    35.4637902000000054
-56211  -96.7008524736048116    45.5658128763196686
-02140  -71.1280984050950309    42.3918802997002686
-79257  -101.347205339712957    34.467931782775139
-56714  -95.9961149861593412    48.7842167277970518
-68640  -97.7538449374300171    41.4509651122905325
-19806  -75.5638464587714367    39.7584262032576063
-92029  -117.115310013854995    33.0870816797617451
-70564  -92.5117391666666578    30.6632925000000007
-17127  -76.8809109999999976    40.2614984000000007
-91762  -117.663426544580744    34.0554039961945278
-23069  -77.3376597585164234    37.7665009857682108
-85552  -109.761778487921035    32.832382392020655
-33765  -82.7459076313815842    27.9744450781655587
-49752  -84.5767416619127914    46.2777155444630637
-53935  -89.0678697236841828    43.5877488289473831
-94960  -122.57158087702598     37.9857093688363818
-18472  -75.3938528100132146    41.5839127726401188
-68428  -96.806773170570338     40.9725179058045086
-08750  -74.0445201069915697    40.1349570905719588
-19132  -75.1699639231121068    39.9958758878525558
-78550  -97.6926424624056722    26.1964187390573997
-63119  -90.3532175843238008    38.5871996050492285
-13494  -75.1468542019899957    43.5349342766169087
-24363  -81.3885709995582829    36.6071381656067487
-57005  -96.5794339401890198    43.5826314933544054
-98256  -121.541817987834577    47.823904863746975
-36641  -88.3603584999999896    30.596528499999998
-49766  -83.4485749203905556    44.9151407724372049
-29415  -79.9463445000000092    32.7265096250000056
-17889  -76.8964790153466993    40.8870187283061242
-63952  -90.6645245343915747    37.0448459100529206
-30141  -84.7780552716727698    33.8627301772808167
-55806  -92.1269850901522886    46.7730524301231938
-43551  -83.6139748590000522    41.5417701358257219
-31743  -84.0255528680947066    31.9254024859075614
-97902  -117.499371459459454    42.9100185405405341
-54423  -89.4178437785235616    44.5806222657719573
-90064  -118.421930053079265    34.0357174482434388
-70791  -91.1415122651997933    30.6565771707707775
-21917  -76.0959938823987159    39.6699860218068352
-49332  -85.2562134022149252    43.6339728070875452
-20714  -76.5364727725795149    38.7133162215724624
-76626  -96.7116568036047397    32.092384581727778
-56345  -94.3746776269063474    45.9819912852983919
-05154  -72.5191252059659206    43.1387537528408416
-99027  -117.126146663997886    47.7074717724154951
-83541  -116.482631806785776    46.5046272490222918
-15557  -79.209149567143541     39.936771805978772
-29412  -79.9539181418471401    32.7312213641215521
-95954  -121.596433804247141    39.8459298923011431
-63544  -92.8250173343950991    40.2431139938295317
-35601  -86.9872383367152224    34.5906141735082144
-20834  -81.1981300000000061    35.3289037999999991
-01230  -73.3580222352472191    42.1838228419709225
-36087  -85.729395750000009     32.3889556499999998
-50632  -92.7091257763899392    42.0827472425463327
-18403  -75.5526462061581725    41.4942874091890701
-82630  -107.215401613636331    43.1188250681818275
-81144  -106.145972153916361    37.5676203717358206
-08550  -74.608200104344661     40.2884788100778408
-46353  -83.9602102857142825    38.0368512857142917
-56732  -96.4733617618709616    48.5575511360736698
-57313  -98.3534692577811285    43.3363210354744552
-57756  -102.473062239130428    43.2331903913043405
-78355  -98.1423522702981614    27.2323328439534258
-98610  -121.866078943480062    45.7630973640410232
-13406  -74.9345478368122144    43.143735999999997
-46704  -85.2923304421052677    41.1034879157894721
-43523  -84.000327947368433     41.3425176842105415
-42085  -88.7928927802691277    36.5685898565021503
-55336  -94.1711412724703933    44.7668008901205923
-22479  -79.1963394999999934    38.1559120000000007
-56009  -93.554777392372003     43.673299026645708
-96813  -157.848133983002043    21.3136354072752354
-18644  -75.8699902179552765    41.3262256613041288
-79010  -102.147113478409054    35.471758585227299
-08202  -74.7281401886876182    39.0944972872294016
-32607  -82.4192098115301519    29.6451468318965361
-24848  -81.4245871458333426    37.2964588680555664
-15866  -78.8063161129706771    41.0385809288702745
-95724  -120.34279869026544     39.3111913598819882
-81320  -108.785576572390596    37.7049927609428082
-32616  -82.4909727783018667    29.794831183962259
-80904  -104.867218772623815    38.857587854481892
-64842  -94.1027873360811924    36.7970301743817103
-22849  -78.6086415988552289    38.5102150695533751
-06794  -73.3244397350961066    41.6499284608172573
-05630  -67.4043174999999906    44.7190165000000022
-72374  -90.829555876106042     34.5508375823008436
-55802  -92.0912567331189535    46.7821128108252466
-29207  -80.9353985465116068    34.007807825581402
-72619  -92.5901240519022366    36.3756816540690338
-77467  -96.196923987654344     29.2399829135802527
-10026  -73.9532619496567776    40.8026410480549515
-89010  -118.036145386819442    37.639083017191993
-24970  -80.4678869235955716    37.7422921546066092
-62673  -89.983421584944054     40.0823830020345682
-93552  -118.032938036860031    34.5495719419795861
-33152  -80.3129624999999976    25.7946035000000009
-50676  -92.2726776587156508    42.802842338837884
-28014  -80.639710666666673     35.1381021666666626
-38345  -88.5134587475096168    35.5994125920550886
-78640  -97.8443432146615351    29.999412891000123
-77404  -95.6626441724137919    28.7854949310344779
-88347  -105.61728291142208     32.7913947440559923
-26203  -80.629421973818495     38.522813365900376
-32024  -82.7173645108006923    30.0971666321438285
-46056  -85.613496407299948     39.9761230045625595
-33001  -80.8144950150375649    24.8244604360902024
-98237  -121.767822095504741    48.529259993084672
-66025  -95.0855230821700559    38.920854515431607
-26369  -80.3328489254658393    39.3347073540372634
-41825  -82.7089439892703808    37.2272208079399221
-11979  -72.6038262499999973    40.8146614999999997
-32412  -85.1776782499999996    30.1038782500000011
-02557  -70.5721084172828057    41.4474136669908901
-95317  -120.491736276091814    37.1263275040710994
-87740  -104.435651457432314    36.8939061607842547
-49995  -89.3561729999999983    46.6131662727272698
-98649  -122.664988046225687    46.3389126432259459
-63634  -89.4312454374999959    40.0686179375000009
-71247  -92.719059066582858     32.2742924597989997
-10285  -74.0151140000000112    40.7141944999999978
-38116  -90.0130988350960024    35.0313229813834752
-49734  -84.512076820512803     45.0487564615384528
-78053  -98.2225509999999957    28.9610252857142889
-98386  -122.499896333333325    47.5120044999999962
-00966  -66.1189848223683896    18.3977822796052912
-16401  -80.3821645662158772    41.8857809221740496
-83520  -116.340394011273986    46.5107139921082293
-42261  -86.6667163930239894    37.2315665612914657
-96796  -159.666419312723946    21.9629941272401723
-14056  -78.3102781538461556    42.9944510384615342
-18071  -75.5878624925487514    40.830621561329977
-40481  -84.0893115819520176    37.4639077348066465
-11003  -73.7040103857840592    40.698335846807737
-84927  -110.861264816326539    40.1793404489796089
-30445  -82.5829589660276753    32.1807392563068575
-71362  -91.9588617292698132    30.9308631372871901
-96084  -121.946749083447571    40.797080878671359
-43412  -83.3228720480688452    41.6317689675431239
-97415  -124.26769097381495     42.0961049984100413
-26415  -80.9366472296551223    39.2913764521426572
-72380  -90.9809960000000046    34.1507253999999989
-77535  -94.8976267375231259    30.0399523316107597
-38768  -90.4794297711864459    33.9606669745762773
-98926  -120.51818604955885     47.0093620637556739
-54315  -87.3614434444444328    44.8547917777777698
-80831  -104.545926185167062    38.9783156948754126
-38668  -89.9293110993031064    34.606517522118061
-76371  -99.6375482195830955    33.463997539990288
-80818  -103.477450947396562    39.3950144347825884
-44147  -81.6811256679310276    41.3097555522474025
-04505  -68.4838829999999916    44.7034064999999998
-29502  -79.7526389811320797    34.1768424339622712
-37745  -82.8119400131918866    36.240871159048254
-84199  -111.943484249999983    40.7279162500000069
-50476  -92.7725986854962628    43.4453248804072487
-66105  -94.6359454152965469    39.0854724996426697
-49092  -84.9781391120894085    42.0976890667118369
-33033  -80.4303469284375154    25.4862279250340009
-54839  -91.1279398847641176    46.3535777393658606
-60152  -88.6043081371653614    42.2376529979312778
-85436  -114.223183000000006    33.6659549999999967
-75220  -96.8589045570249709    32.8691690458301622
-98590  -124.005418070110721    46.716115260762578
-47494  -84.974866999999989     40.1766729999999939
-19149  -75.0676003867948225    40.0374154976594596
-49017  -85.1998062615223404    42.3703513126745861
-11980  -72.929513160471501     40.8286027932910329
-06254  -72.1416627697956017    41.6135061289910766
-76374  -98.7543302070768902    33.3571199452307852
-76831  -98.9243112456140068    30.6668974526315807
-25541  -82.1334680463512825    38.4576852718225339
-30660  -82.9236472801999867    33.783098698001794
-83469  -114.391975768496295    45.3174860735084195
-74461  -95.7213853181818166    35.4007042727272676
-75976  -94.9549387136039229    31.498539554494851
-41365  -83.6300618335178996    37.7220270989294661
-93012  -118.979239075076777    34.226140223809054
-60555  -88.169306294776149     41.8124380000000073
-64561  -92.5685280000000148    40.4096693333333334
-81610  -108.819352897486851    40.273509446428605
-27520  -78.4748679507865887    35.6176892709415114
-20105  -77.5887295626767752    38.9451254424771065
-04642  -68.7926772552900445    44.335058027986328
-99147  -118.438590686868608    47.8357144680134425
-46779  -85.0252417617533638    41.5775386295707747
-49930  -88.554358232320979     47.1424989829306753
-05401  -73.2100137110445246    44.4738470765764831
-35224  -86.9346101796261479    33.5195772521494959
-84132  -111.837171000000012    40.7686868000000047
-61621  -107.070436999999998    39.3711028571428514
-66527  -95.6795129747212485    39.7474799107807399
-45622  -82.5015897887037255    39.3554412588378639
-73136  -97.476624000000001     35.4927552499999948
-55838  -91.6818880000000007    46.229686666666673
-72303  -90.1951433333333341    35.1315471111111037
-20740  -76.9255838660014177    38.9967278269422337
-12120  -74.1439308402408841    42.45427604109112
-30413  -82.5110380980429596    32.8864020265336876
-18958  -75.4316148846153993    40.2932159230769145
-24751  -81.3307612999999918    37.3093281000000019
-34601  -82.3721661923652277    28.5660106705800345
-44045  -81.2809551493670313    41.7392167291139486
-37404  -85.2722588555371601    35.0295471450917262
-90220  -118.240400339316125    33.8870684434188192
-60046  -88.0540447357439575    42.4126222337673582
-28575  -76.8878007920000499    34.6888213559999912
-98024  -121.900113607487754    47.565239842693174
-63781  -89.9403585264117424    37.5503303260473231
-27866  -77.512504740959443     36.518775573062662
-26181  -81.6578428682284709    39.2144779820159712
-29853  -81.4195068167600056    33.3920111192253088
-20134  -77.6930456363636353    39.1208844090909125
-54614  -90.9903843253389226    43.8923708957247101
-92866  -117.845164949262781    33.7849176221655512
-34950  -80.3364634924632526    27.4464786231645341
-52342  -92.5621193611427771    42.0258471027141809
-95309  -120.444676067796607    37.8631219067796465
-49044  -102.384614999999997    35.906224888888886
-59002  -108.679775475719495    45.931110224820209
-28458  -78.0546085496203972    34.824279907710654
-58367  -99.5794076825425662    48.8461136039846835
-37732  -84.6107964673366979    36.3304519020100258
-96740  -155.977154883561525    19.6614746301369792
-04108  -70.1899877742196736    43.6604952748277029
-69334  -103.355573534526783    41.7646331576086993
-40818  -83.269262171717159     36.8091458989898896
-52036  -91.3390278118812518    42.4740933910890988
-42347  -86.8834258847800953    37.5231613410954097
-75228  -96.6824688004379169    32.8236508085926957
-28036  -80.8053515192963374    35.4839805397822516
-46986  -85.8234155130282659    40.4972805109155374
-08032  -75.1032189454545431    39.6900483454545494
-05822  -72.1560125008043514    44.7532271044426153
-99661  -160.484522011764739    55.3479603568627638
-48301  -83.2787730201201271    42.5449993818221159
-56177  -96.2571952394365979    43.8888562816901668
-46968  -86.5529367631578594    41.1740809736842479
-65770  -93.522359320346041     37.4003303879268643
-48461  -83.2168810829943766    43.2066447605097963
-79372  -102.478563528596098    33.4733315008665571
-70814  -91.0667226573216908    30.4862472481281515
-56713  -96.8132143634001494    48.3521086561432654
-17272  -77.638118999999989     39.7703549000000081
-32322  -84.6545336725490927    29.8612895887255867
-02435  -71.168651666666662     42.3421606666666719
-38841  -89.0195781087150522    34.3510638968429731
-46590  -85.8140497098310959    41.2171086466002521
-58445  -98.7649274181468968    47.5397477666827655
-37852  -84.6013941421142306    36.3456595736580255
-00673  -65.714638142857126     18.3740738571428572
-08205  -74.4913346150472506    39.4785634498419782
-29931  -80.7448162799999949    32.5711411999999996
-77507  -95.066500046822739     29.6262133043478393
-36266  -85.7227107620447413    33.343152632824868
-27819  -77.4590244092219109    35.8174995677233525
-17105  -76.8763815178571264    40.2785003750000072
-24475  -79.212977823529414     37.9550824705882306
-44845  -83.110706257142823     41.0249763142857091
-78255  -98.6559107118707033    29.6521175950972733
-88267  -103.312282967204453    33.2476050853722285
-12567  -73.6542564897341805    41.9847653630430671
-40152  -86.4448823302138436    37.6184471381461663
-49519  -85.7183675019454228    42.8918221649063796
-87825  -107.271648299452224    34.1055599896530168
-99665  -159.528567799999962    62.6539716125000297
-60928  -87.8548447410713038    40.7639323469387449
-57434  -98.1001678611775532    45.1936832669998907
-75744  -95.7031896249999932    32.4467725000000016
-96720  -155.091538866165934    19.6998619931534087
-17007  -77.1162433542413197    40.1442849743212875
-13838  -75.3913715480002793    42.3008373965334386
-27927  -75.8219289985345597    36.3559646803445347
-36080  -86.2850819090527636    32.6877234171227613
-21434  -80.7232989999999972    37.2339481428571375
-26032  -80.5532379741035527    40.1893188791500791
-30369  -84.475815499999996     33.8038494999999983
-55909  -92.7313178413926096    43.5664667221148534
-61884  -88.4921674380553043    40.1058629916361795
-43233  -83.0497194999999948    39.9563892500000009
-35222  -86.7701625784841895    33.5217973487224157
-50012  -93.6472255250000245    42.0245042000000026
-16536  -79.6514880000000005    40.354258999999999
-62044  -90.1684797219685805    39.3431368325723625
-05641  -72.4848810213464105    44.1910203124444436
-33983  -82.0184841877876494    27.0108495601749325
-58446  -110.275744500000016    47.6050705000000036
-03890  -71.1954940867768471    43.8216993078512971
-93705  -119.827526817449126    36.7873046359058762
-87353  -105.359402370370404    34.8923593703703787
-12903  -73.4515834365732871    44.6740908863261694
-37726  -84.82676667774696      36.1943428198694548
-06475  -72.3858381759699938    41.2945972842006697
-27506  -78.7397215473372256    35.4105506834319286
-10754  -77.7280242727272821    40.4981793636363605
-56273  -94.9721436630742915    45.3144405549859286
-59642  -110.752707726775952    46.2882955628415544
-02907  -71.4247074878188783    41.8001844272041936
-48342  -83.2801224545606971    42.6454995304869442
-74901  -94.4380362034154075    35.3516605534906745
-95603  -121.085956710943606    38.9133332054643688
-67753  -100.743658753593451    39.4126350698151953
-78955  -100.297532900000007    32.4009173000000033
-28428  -77.8977639092009468    34.036570888862002
-94536  -121.998100419400416    37.5616021992488598
-40330  -84.8797915950904382    37.7820989297931717
-60166  -87.8343880000000041    42.3126855000000006
-44671  -81.3685150991501445    40.6424478045326012
-63468  -92.0385161155825244    39.6874714732223808
-73147  -97.5834660000000014    35.4917790000000011
-26206  -80.5414817010545789    38.4195367748646674
-95383  -120.226730912545875    38.0456502317201384
-60655  -87.7006241166942999    41.696309894657233
-38425  -87.985657648916316     35.3977957536884276
-68967  -99.6181503439212293    40.2493064523548938
-56548  -96.739034618078918     47.3708775736347079
-75699  -94.5181642000000011    32.0797304000000025
-27856  -77.9727319699764081    35.9919001743160081
-38007  -89.4374601040000243    36.1618537119999885
-35671  -86.9499261472499114    34.6892865283672478
-37057  -86.0282431029387595    36.412439663456702
-71953  -94.179332258373492     34.5754662930051566
-70903  -102.406891000000002    34.2358137499999913
-95514  -123.663465513915526    40.2976927933314286
-62480  -88.0060377366848172    39.0058097685415603
-65735  -93.4801728533834648    38.0745491203007518
-93036  -119.179557346386503    34.2314729577256145
-04763  -68.1294774544902424    46.0949750843446537
-21218  -76.6050788372181586    39.3290407363424848
-78023  -98.7073301455352805    29.5912801706302524
-95245  -120.599679776373037    38.302662732365377
-58645  -103.549685409289012    46.87587316255442
-50398  -93.7856043846153966    41.5943039230769216
-56055  -94.2322585591338964    44.1291456291849116
-57015  -96.9818681643239984    43.4386118823478498
-68348  -96.13400266023163      40.2909087297297503
-47531  -86.8482997439087541    38.0426890305857839
-87037  -107.755083939172778    36.2304714890510908
-74027  -95.6407474475704902    36.7773000869565223
-51528  -95.49719253836669      41.927318087519275
-07458  -74.0977881472637137    41.0507558468600422
-24422  -79.7812759682111619    37.8276124155544693
-55812  -92.0743884488233988    46.8105739449918161
-59754  -112.363466277187726    45.4873528969241576
-02909  -71.4501743394614266    41.8186385307208681
-24268  -82.2258748823529402    37.2861323529411806
-81132  -106.366475553584593    37.6966581081189815
-25023  -81.5345549999999974    38.4055464999999998
-53110  -87.8625208125262702    42.9477711360558772
-70760  -91.4448288562723377    30.698959718131011
-62459  -88.0251973869565489    38.9320054565217077
-12545  -73.6830405648769755    41.786544406750636
-32328  -84.8806339585492822    29.7064805028261993
-91234  -117.591501285714273    35.1314232857142841
-68003  -96.3666705846589338    41.0554797435389673
-89128  -115.267305996246876    36.1954654233365787
-50545  -94.0927763071672416    42.7927362474403168
-77423  -95.9826827505714419    29.8135540766438609
-50109  -93.8032563095022596    41.7625438755655765
-04600  -68.2690879999999964    44.4368090000000038
-39866  -84.6115559494736971    31.5449713031578831
-58380  -98.4958107670106671    47.7944713170103981
-18844  -75.9189905685809521    41.6906520496621766
-18572  -75.3371437058823403    41.524016764705884
-35658  -86.7657860000000056    34.7371252500000054
-12561  -74.0932262861755646    41.749027998591707
-64849  -94.4441234901960911    37.2551257058823495
-12993  -73.4642123351338654    44.2035347765773139
-11694  -73.8456257534246845    40.5778582791095559
-25817  -81.4117715743090713    37.7709670104556068
-06109  -72.6777688562716691    41.6979495544514478
-10583  -73.7950397083882734    40.9892376884122314
-37807  -83.8213473937055653    36.2528614496992461
-85658  -111.109894395390072    32.4690352810283471
-49060  -85.3974874722891144    42.4199778108433634
-90601  -118.038422929005421    34.0031644429557716
-87111  -106.515956337691307    35.1383310476404986
-61049  -89.025536918551964     42.0516661119909614
-47712  -87.6611151090075111    37.9662870528539216
-43786  -81.2774876153846151    39.7127231410256485
-58321  -98.2804558248234912    48.2054728356164688
-49520  -110.119856750000011    48.179152749999993
-30034  -84.2451857062623048    33.6912588600523506
-83249  -111.325465000000008    44.4976410000000016
-67856  -100.451429625000003    38.1985592500000024
-40215  -85.7852571791917455    38.190946959151411
-46936  -85.9438519913695558    40.4757068742221051
-01522  -71.8737275622036975    42.3775559222456337
-07753  -74.0629729074202885    40.2135355055832449
-48442  -83.6079833197547231    42.7944343527518214
-95364  -119.992130534420397    38.1943807083333269
-04762  -68.1232376269841922    46.9730163501984421
-15126  -80.2655658593304793    40.4571084685177809
-21787  -77.1638121621495969    39.6669060288393425
-45838  -84.4765764222222089    40.7388546000000105
-75432  -95.6604380562162788    33.3818463410309505
-86468  -114.023652636363622    34.8804100454545534
-30011  -83.8406211908800145    34.0246271893628744
-41377  -83.4303972910797853    37.4114663145539694
-08063  -75.1800147975021957    39.8666458189116071
-29693  -83.1177871711998364    34.6364299166379226
-71635  -91.9624240687301295    33.1385729674711058
-46381  -87.3317333690851996    41.1648246687697039
-74422  -95.7278340519782915    35.6354781675717263
-93064  -118.709035274999991    34.2587591624999988
-04765  -68.4978167601028645    46.0353685308595715
-03291  -71.1392564476190188    43.18180212380949
-06615  -73.1349418532378053    41.1765161866686071
-14894  -76.7569876057268772    42.0185179757709406
-80938  -104.674709533898309    38.9103995169491625
-83111  -111.017380293361825    42.7957565481798952
-62921  -89.082137565916284     37.8045592379421009
-90032  -118.177804926202853    34.0799892950765653
-50151  -93.4882234230481544    41.0775293937686925
-96438  -113.903293500000018    34.7253376000000031
-63474  -91.9266462628866208    40.3657193865979309
-80470  -105.369929955703171    39.4419777053741072
-81403  -107.903917991930541    38.4291326201154106
-97825  -119.540942584987164    44.4654334055220133
-72313  -90.1192635000000024    35.5463071250000056
-53147  -88.4536304991886482    42.598301860598859
-25649  -82.0763361611161031    37.8612707992798789
-48088  -82.9835473063790801    42.5179951336479363
-57714  -101.989653555555549    43.2825270000000089
-84308  -111.958594580180133    41.9699993801802265
-25162  -81.386429049261082     38.206203603448273
-19118  -75.2087087638023775    40.0716676234951521
-17576  -76.197832589743598     40.0370390000000143
-95322  -121.012237538721749    37.1730318210932538
-95531  -124.147373798445443    41.7969103564827265
-93465  -120.722792083442101    35.5439798824097366
-34211  -82.4060241032697007    27.4501890220220943
-42464  -87.3694902127227664    37.1636258166026821
-58572  -100.337043349980348    46.8693694589068244
-98644  -124.049104376958411    46.3299218488479738
-54627  -91.2657489498327408    44.1693471304347725
-80905  -104.835099938984456    38.8186749206140576
-78629  -97.4567181577641719    29.4978796368260952
-54418  -88.8973505555555477    45.1831867777777774
-62838  -88.6985151278196611    38.8420097297655929
-94598  -122.021184290033801    37.9161065236511376
-02652  -70.0838330007819792    42.0296607888974378
-98814  -120.109266156606012    48.2319379208426966
-04922  -69.371339090984705     44.6789028493758877
-27828  -77.5872595228575648    35.5881411628746847
-43125  -82.8898350968786417    39.849092694221234
-20408  -77.02346266666666      38.8936530000000005
-12189  -73.7152632736910647    42.7343205160102784
-12521  -73.649641539176443     42.1668681138331891
-98570  -122.670781883060272    46.5868351623471213
-36560  -88.035452081149856     31.0933359192141161
-45433  -84.0566839159663601    39.7972513623949098
-85309  -112.36654148380947     33.5367412142856836
-18815  -76.2347295000000003    41.7306247857142836
-33839  -81.7551181700704461    27.97800468325282
-85644  -109.865066428571453    32.2847903571428532
-68753  -99.4481131428571388    42.9037996666666643
-06520  -72.9286617599999971    41.3054916800000029
-92836  -117.881348500000001    33.8495662499999952
-81413  -107.924448633180688    38.9472240259012139
-61516  -89.1293325128535514    40.8526898688945295
-64759  -94.2656958266046701    37.5144570119975782
-76134  -97.3357940952627274    32.6442932135060815
-54216  -87.5118808477157302    44.4545780219966247
-90001  -118.247490376516581    33.9722542935467615
-49304  -85.8795470484861028    43.8965560875541598
-61816  -88.0033291520376935    39.9178198228840628
-73009  -98.3590430152942332    35.2962485094117682
-25936  -81.023466276595741     37.9030416595744626
-64461  -94.8180098526975712    40.5263849265051945
-16121  -80.4940861178237839    41.2115993943492853
-27853  -77.3108677449174309    36.5150693341804882
-05141  -72.5643980452261559    43.1536357587939605
-17263  -77.7195320237154021    39.7257987747035841
-32903  -80.5777803562738484    28.1075545899016674
-76930  -101.168011562500112    31.1345433020833333
-75637  -94.4763506666666757    32.0982460000000103
-65230  -92.699742281574359     39.2739207339965617
-08752  -74.0791778226046347    39.9214390404191377
-56236  -96.4006570372880276    45.6589226016948686
-10455  -73.9089149003286394    40.8152536823658423
-10199  -73.9954219999999907    40.7520505000000028
-39736  -88.6440132466666739    33.4138750866666641
-75071  -96.6470613240750538    33.2287766243133262
-10122  -73.9919905     40.7516629999999935
-64833  -94.1301818627451041    37.195131333333336
-78379  -97.7513449891520594    27.3133658836290998
-80468  -106.185533098317336    39.9747000792622131
-80136  -104.323396645789416    39.7607053774613206
-29570  -79.5503233333700877    34.6670667722283383
-95076  -121.775054448132508    36.9456597479590556
-13608  -75.6184268847842844    44.2377391675200755
-93333  -120.621707999999984    35.3243101999999993
-08608  -74.7631140807899612    40.220065450628347
-08829  -74.8934076695634872    40.6683919497668427
-12184  -73.6587222938953516    42.4241564998649707
-53812  -90.6085252499999712    42.5829441833333178
-76311  -98.5153313814180507    33.9708798092909419
-44634  -81.0465149236136853    40.8330168894920504
-61262  -90.3529976031492765    41.282605754498654
-48854  -84.4455317939300301    42.5782031347870102
-70615  -93.1428840228209509    30.2467628666665966
-80022  -104.859312860032631    39.8542833661189846
-47033  -85.1692396666666554    39.2558253333333269
-51035  -95.7920389659902867    42.7887459745642076
-01474  -71.7450123597712945    42.6673535541264926
-39813  -84.6980425284441623    31.4216463125428547
-78590  -97.6711540598802941    26.5013340179640728
-23115  -76.9533834821429252    37.8276555133928696
-33511  -82.292109434494904     27.9056621349769003
-23302  -75.5243557205240421    37.8678310524017334
-51542  -95.8355357149633278    41.4357095167882576
-57422  -97.9285381750973443    45.39356476264593
-00716  -66.6059070264285964    18.0008699146428484
-93309  -119.06835998331988     35.3393572619606715
-48831  -84.3953914964736356    43.0984485685373002
-57323  -97.7179463635097676    44.1923384610027625
-59812  -113.981555542857151    46.8600633428571385
-72131  -92.1991733228174013    35.4020875677588975
-04936  -70.4928278018588657    45.2071646763836128
-87005  -107.984139497767828    35.2611923861606869
-42516  -84.7769638813323496    37.2209010513532235
-19034  -75.2016824947141345    40.1383399203036788
-16036  -79.6803119193548497    41.1381523677419523
-93328  -119.317128499999995    35.5867580000000032
-44663  -81.4426737824862812    40.4717394599055709
-74130  -95.9594681480001839    36.2389569860000051
-78111  -97.752871448979576     29.0578914285714305
-60664  -87.8245064999999983    41.657474999999998
-01852  -71.2957608396979055    42.6339227782712271
-62834  -88.1193516666666739    37.9751646666666716
-07935  -74.4549039923224711    40.7391246199615935
-78723  -97.6831869531126387    30.3064439591319186
-04153  -72.6388709999999946    43.3825240000000107
-25866  -81.1476543070865972    38.0102773779527681
-46743  -84.8753412218325565    41.2131824125384512
-88253  -104.415407351730138    32.9850497928164827
-27967  -76.9321275803814615    36.223481373296984
-96706  -157.982661124999993    21.3288696328125056
-32181  -81.6004094390042525    29.4872611977869852
-61517  -89.8390784181698621    40.8146583136596064
-24277  -83.0204419869197778    36.7486563258832106
-36280  -85.3979842487301255    33.387963679337453
-62954  -88.2625211005619121    37.7155886202247004
-13103  -76.0973241780821752    43.3329320410958871
-98391  -122.171026536425686    47.1839678709789538
-74522  -95.6886132488262859    34.8991353380281737
-04981  -68.854465678130083     44.5146123553645907
-25209  -81.5285188644208887    37.969509290879131
-34637  -82.4657719958187698    28.2703611595818849
-77550  -94.7942195341133527    29.2978261052632298
-38481  -87.4962240025195541    35.033376542116585
-14647  -77.6066186666666766    43.1537583333333359
-24822  -81.6747506835079946    37.6323561077216482
-04422  -69.036268992282757     45.0653997201463099
-45314  -83.7886691285550853    39.7501407412716006
-24243  -82.9217847822654335    36.7798086340722961
-98068  -121.403508535000142    47.4082032590001248
-33919  -81.9015025550239955    26.5533968548330392
-54229  -87.8283282298198458    44.563413350900575
-92653  -117.702670021209741    33.5951946619909023
-18711  -75.8814109000000059    41.2482416000000072
-38012  -89.2636348368995556    35.6064909658130517
-79038  -101.531081190476186    35.6426450952381018
-56098  -94.1784943098786584    43.7687641906182279
-31781  -83.7868123406309877    31.5376461767546878
-47006  -85.2108043323518274    39.3079664041713528
-83350  -113.641500887416967    42.6674259400189442
-47670  -87.5664937695894423    38.3520185217808631
-19456  -75.4597667025316383    40.1333571265822755
-06750  -73.2535180327868289    41.7194117327868028
-62045  -90.716769843373541     39.2329528433735035
-02462  -71.2552242469512578    42.3306074725609705
-60501  -87.8082541981351881    41.783611903651888
-32583  -87.0102938462070057    30.5903553167451108
-21560  -78.7106338051948313    39.5637383506493592
-57562  -100.934143066176489    43.8881135294117684
-95568  -123.471846175242632    41.4396085827740492
-83646  -116.407424112747123    43.6375873245965238
-45614  -82.2790690770497122    38.9277122983842645
-40723  -85.0240268571428572    38.8648003809523885
-33953  -82.2162897174856369    27.0022403674132647
-27836  -77.2145578333333447    35.5802015000000011
-51331  -95.1381003097687028    43.3762873367609316
-67644  -99.1255386006654788    39.6378656372712186
-56315  -95.5860475990790093    45.9848009321797022
-06061  -72.9668657181818361    41.8748979363636167
-24539  -78.8769060827886079    36.858495740014547
-80002  -105.105209634861623    39.7957685324244324
-95203  -121.31277603870619     37.9540425025599504
-62095  -90.0794922642426457    38.8625346591515282
-74484  -96.5069885000000056    35.2213687499999963
-42528  -85.0092384057391541    37.1823543808438401
-01036  -72.4245523464315113    42.0664879081245076
-75032  -96.4329004222143453    32.8644838429428816
-53714  -89.3126034009624732    43.0980460163343366
-77044  -95.1833427330324895    29.8977253755339021
-16664  -78.4235645602179687    40.1765330198909325
-81211  -106.174228799530582    38.8502832143086252
-79018  -102.30331761922605     35.7161236866417298
-10024  -73.9763470293160452    40.7865302410423922
-14716  -79.4368103436264335    42.3856703602533926
-17967  -76.2099861573723416    40.8598441702191124
-39054  -90.923798241803226     32.8097251516393271
-45417  -84.2582433123212269    39.7431034439248094
-20176  -77.5323612242710425    39.1524771944219623
-78163  -98.4346435598182552    29.7677253365542889
-22877  -78.5790545999999921    38.4017027999999954
-81125  -106.094723016895756    37.7616140221936831
-17325  -77.2260211002940764    39.8230003701231396
-57469  -98.5252901612916503    44.8685049591143041
-62316  -91.0604326776536226    40.237879391662652
-82240  -104.187934705304883    42.0578052225652783
-67030  -97.5429888654171862    37.7810881839862986
-95765  -121.263844130987394    38.8156102238146161
-46186  -85.6412551922525864    39.8931221395264402
-83875  -116.938661999999994    46.9839304444444394
-56123  -95.6276987108874579    44.0788350462031602
-45237  -84.4526350767564224    39.1924548703382385
-70525  -92.2180871169950507    30.4046604726394882
-83221  -112.389168247625889    43.2153803721978704
-70796  -90.9807940000000031    30.2937925000000021
-77976  -97.0979382631578574    28.9380294678362517
-44116  -81.850505211700721     41.4719066073468738
-54456  -90.5949654501262387    44.560835679924196
-00959  -66.1630673942064362    18.3871000491183736
-30746  -85.0264569245340027    34.573384464221256
-23885  -77.5736409010352332    37.1927003273292414
-49338  -85.57550393400183      43.7711021731784058
-14741  -78.6006250002302806    42.2170776559909129
-07446  -74.1426504292948039    41.0580422047833835
-39478  -89.8673643646533122    31.0569474466283495
-38876  -88.2327560383641867    34.2213503055695583
-63088  -90.4934007730812482    38.5551753612902246
-54221  -87.6182785833333355    44.2228707499999913
-57225  -97.7168489863631891    44.8795397167531362
-81161  -105.900428250000004    37.2598169999999982
-61732  -89.2177554779480033    40.5443532205220336
-26508  -79.9051859322066349    39.6102465889172066
-96038  -122.533480778633262    41.6181317362848375
-98607  -122.409515679514158    45.6206800245425939
-82336  -107.99305512625439     41.7659835118859206
-51462  -94.5566879140675667    42.0111713308614654
-65580  -91.7903035243186451    38.1093253420631513
-28169  -81.4293595411764954    35.3597183529411723
-08302  -75.2467250309740905    39.4447733775007237
-85247  -111.751282339331539    33.1050994164524539
-41722  -83.1438462556389482    37.3277444306599335
-17344  -77.0206422979941436    39.8054800171920533
-35560  -87.2781711290322448    34.0464004999999901
-87650  -105.438096442622935    35.4225244262295007
-68660  -97.8585059956415932    41.5747973792030123
-44837  -82.4872925455238857    41.0173265943881589
-28776  -82.5232532222222375    35.4838940555555595
-38077  -89.4742759800000442    36.3282358600000208
-52254  -90.799924329731482     41.9557750887361678
-49781  -84.6656355218398176    45.9151536734162846
-29396  -79.3674013333333193    34.846065000000003
-77009  -95.3677047142703316    29.7942178652675622
-35413  -86.4053707499999888    33.7633744999999976
-40816  -83.3469617445652631    37.0089599891304246
-14433  -76.8780273538295233    43.0786914237939556
-23830  -77.3896650681692222    37.023109708310713
-82440  -108.8688171764706      44.7149543823529427
-30516  -83.0404599396344167    34.3740865232839425
-70454  -90.3888844359316863    30.4433310158212365
-25707  -82.3968593333333388    38.3993866666666648
-14150  -78.8617713972335537    43.000818294002336
-99338  -119.246832855852901    46.1905956643018882
-85719  -110.949480464611327    32.2435045390334665
-92630  -117.689149319695161    33.6399668582927802
-70353  -90.712035720031551     29.3744410962145004
-78218  -98.402629860197834     29.496939189464598
-66428  -95.9378136648251427    39.6736835285451193
-99001  -117.58994599153867     47.6444661600000359
-74018  -95.6137793999999701    36.3485322615384518
-54436  -90.4621019263803419    44.5867321779140937
-97857  -117.426241841300282    45.4698638087954379
-33136  -80.2034414619152756    25.7864749646354667
-70083  -89.7494743978763125    29.5155939175516053
-62915  -89.1188699846154009    37.7841544999999783
-73048  -98.5771404781311134    35.5019395526838508
-97039  -120.701119340856408    45.4687076192128785
-52337  -91.1507553872987728    41.8856097567083836
-04037  -70.9552761461722952    44.0690148395358676
-02823  -71.5467679200000077    41.7357108800000063
-29912  -80.9321845301204803    32.5820848674699022
-79082  -102.299636013761415    34.2383103463303087
-55798  -92.9573064222007304    46.7195262544114911
-33381  -81.7269087500000069    28.022588749999997
-25415  -77.9993334642857263    39.4109051785714328
-75949  -94.5207313452747684    31.25188991921965
-59025  -106.849703666666684    45.1897725196078284
-75736  -95.6768164285714278    32.3387299999999982
-17015  -77.2233041848182893    40.1954165455063901
-22211  -77.0793388143236342    38.8825112360742366
-78934  -96.5656944287446777    29.7225858346472833
-74726  -96.1806570028791725    33.966087074472199
-23321  -76.4153345358002696    36.8234469555927646
-55707  -92.6339270654961666    46.53655846651003
-08553  -74.6384923764258588    40.3969043041825131
-46556  -86.2521557333333391    41.6925520400000096
-96817  -157.855216356681524    21.330257874620429
-68342  -96.9570450754048068    40.1039653249111865
-97106  -123.13420566735175     45.6489100288008416
-31566  -81.8075888698581224    31.200715589588679
-12985  -73.6838688221560432    44.585460002980696
-11230  -73.9702686735497821    40.6209403062930008
-55122  -93.1932619068393393    44.8027177465275983
-62552  -88.8207932727272578    39.904178636363639
-11238  -73.963271608208899     40.6805416511193911
-29607  -82.3339257705872853    34.8164364036767822
-29445  -80.0335522141677984    33.0011080047808747
-51345  -95.4321496497727395    43.4161856049382919
-22578  -76.3631167192623366    37.6476478634928853
-85738  -111.077325785714294    32.6796470476190422
-75020  -96.577182880876066     33.7547468432188822
-12069  -74.2784795294117828    42.9421569058823778
-30678  -83.0800499347546832    33.4587163611111791
-76531  -98.1661715927068741    31.6830268262450581
-72210  -92.493582308321237     34.7115623385384353
-40440  -84.8254237826761539    37.5796025216548699
-49749  -84.587001853451028     45.4261479904054184
-54915  -88.3871854527576772    44.2462720194523698
-84748  -110.785123333333331    32.2341021666666663
-08081  -74.9857179718580653    39.7385447880396114
-88213  -103.684941888888886    33.3787108148148164
-90274  -118.377825377035251    33.7795096723990582
-28341  -78.172096776851447     35.116746198382188
-66417  -96.0331938716418705    39.6649141104477465
-48205  -82.980415307851203     42.4338136781245652
-85048  -112.034373960207816    33.3035628027682051
-32402  -85.6446464999999932    30.1563559999999988
-27825  -77.1721839922480797    35.8344135426356587
-60085  -87.8633124413190814    42.3580216675852128
-94591  -122.208865374101464    38.1048702258860033
-15364  -80.29896971825994      39.9433008189175922
-18446  -75.7675679622222304    41.6364569915151961
-48042  -82.9263370685171992    42.6841220909353467
-15656  -79.6178942104204026    40.6361160316081396
-39477  -89.03512922085892      31.7865270809815641
-16622  -78.0367789021276366    40.3222864156028251
-54961  -88.7408720999376754    44.3870389494102255
-44404  -80.5407791923077099    41.3308007115385223
-75125  -96.6478459963030474    32.5244983942698624
-83492  -112.067636999999991    43.4853905000000012
-36663  -88.1130877000000083    30.7918641000000051
-60469  -87.6874279730970869    41.6283295209974256
-38702  -91.1565433076923171    33.5434536923076934
-43214  -83.0191356070290425    40.0517403006942487
-38574  -85.2303111365089592    36.1409174689080714
-29831  -81.8160543751765488    33.3504499629629265
-07417  -74.2103810174039467    41.0082120995958235
-76936  -100.599679177275476    30.8766522459231183
-21530  -78.5426714959317565    39.6948569150641433
-58655  -103.02300542857148     46.7901997772657836
-74467  -95.359688823467792     35.9623822502772583
-80469  -106.966016386271889    40.2077512759084783
-46151  -86.4157416896640171    39.4480087500082703
-72136  -92.0234772908319627    35.2309569370944473
-29123  -81.2493023928712006    33.767058597300462
-27519  -78.8818117329481225    35.8045446648111891
-20601  -76.8678644485245712    38.6257874591764718
-14855  -77.5038739007998885    42.1376811461332466
-14729  -78.732596872314943     42.3994870131265458
-31537  -82.014993677034127     30.851989581043135
-30039  -84.0359346611504776    33.8014340916875753
-65862  -94.1531977499999897    37.0503259999999983
-04743  -68.5608451105668593    47.2314660860626034
-64756  -94.0140045392899282    37.6291790785799947
-22546  -77.4684870032287449    37.9554403731250929
-55430  -93.3017015782980508    45.0639456968085099
-94304  -122.16747169735018     37.3981122322175636
-23690  -76.5286803948338559    37.2266140147602158
-92611  -117.911361999999997    33.6046733333333307
-45577  -103.454405399999999    43.4145521000000016
-95133  -121.858018994751447    37.3744565504571469
-12165  -73.5209516856677538    42.3150161726384582
-40146  -86.3092556718593471    37.8421754462167286
-62274  -89.3934640403148819    38.0996797136804375
-28333  -78.0205119956415984    35.2886088411649084
-26037  -80.5826634604407559    40.3357266442813014
-43451  -83.6250767713003995    41.3159127264574053
-20710  -76.9271399823399946    38.9420067395143121
-70640  -92.9174669530201385    30.3659676375838963
-81241  -106.53062782269501     38.6249486708037679
-76092  -97.1532629475668017    32.9478934883364829
-37052  -87.3971152670194158    36.3716958367482093
-33716  -82.6535877119723636    27.8768930364372736
-79903  -106.441460950288402    31.7866945570070918
-42163  -86.1405014618320592    37.0802780572519026
-63401  -91.4023689188926483    39.7013348226156495
-57706  -103.069718052173783    44.1469517673913003
-43529  -83.784303724137942     41.1900539448276035
-67016  -97.5141699607143408    37.8862022749999738
-35555  -87.8230102289648471    33.6721888893811467
-98121  -122.345451365044212    47.6152548860619831
-27207  -79.3898256944957552    35.6077993103481205
-27979  -76.6101567606367553    36.4326109289869038
-04677  -68.1802582045779815    44.4887611273247927
-38387  -88.2694701423308459    35.8715088492201204
-74301  -95.1725292410704355    36.6327632433374717
-57348  -98.3731871879978002    44.6362051931711932
-97478  -122.893917521052501    44.067616131840964
-53803  -90.3656091612435972    42.5627334497469292
-63087  -90.4593822337258189    38.0094922628116763
-04240  -70.1797401199223572    44.0963374568691648
-13364  -75.2570056936936993    42.8092723378378395
-36832  -85.5354860983940029    32.5920658952128548
-99693  -148.680171615384609    60.7741878461538434
-25821  -81.2945671111111352    37.7103989259259365
-91729  -117.538142499999992    34.1135288333333335
-72384  -90.2712010925711041    35.3766193364449251
-44904  -82.5872171963484618    40.6749041615952578
-21793  -77.3428255468815138    39.4843678281690131
-05656  -72.675337720584011     44.6482800841448082
-23116  -77.3659228151518903    37.6705141087586242
-72857  -93.4021110896055688    34.8671147481073831
-15410  -79.9046175170576731    39.915502380063927
-61917  -87.9152521586379549    39.7068469634551278
-63846  -89.8208911761030606    36.8447125595588432
-94720  -122.252460869565212    37.8681580434782674
-04424  -67.8644565902373245    45.6793230291086942
-16682  -78.4574408173913298    40.2716359130434824
-83626  -116.822914943862983    43.6704343101808021
-61530  -89.272775781614456     40.7145694532356615
-63657  -94.2194073999999944    40.1584488000000022
-32814  -81.330165989134855     28.5687888265775349
-77705  -94.1449253510838844    29.9720979605981235
-57147  -85.443871333333334     38.582780333333325
-08882  -74.3808200469841125    40.4441464688889027
-66618  -95.723553169004731     39.1344055728789826
-68751  -96.9831739069767593    42.690932999999994
-50607  -91.7388145381854656    42.6188853690415996
-97711  -120.730368810344828    44.7276060344827471
-19010  -75.3287335525179458    40.0237064834401721
-44708  -81.4316747486255821    40.8152374532016822
-76106  -97.3542282170905651    32.8055367335713868
-10177  -73.9759334999999965    40.7551387500000004
-16354  -79.7109806722681071    41.6117574599222451
-58451  -99.9227658607640876    47.4553279016270437
-62748  -90.5971545714285611    41.6601458571428651
-25070  -81.9290444382470611    38.5389215126161915
-73938  -100.539390783641196    36.9071183667546663
-21864  -75.4174581474323986    38.0418427614577936
-05902  -71.4984802770781158    45.0074696473551512
-45323  -83.9359034064845702    39.8648419802047655
-31020  -83.4908150807220721    32.7376327859797698
-62668  -90.2369742963316241    39.5750900185803189
-28269  -80.7954877907811806    35.3402897027284908
-08247  -74.7622806420581441    39.0518275182699455
-15959  -78.9164237499999928    40.2649465833333338
-32442  -85.0132329523183614    30.7003367076348077
-80925  -104.654968969519004    38.7432713974208411
-49241  -84.5888348756633235    42.1007703290371396
-48419  -82.6407338949870507    43.4285098513397116
-80246  -104.929869025960556    39.7044783444098641
-77363  -95.8563058357343607    30.2943660486193771
-12879  -73.791988333333336     43.8060516666666686
-76953  -100.286601696721277    31.7425058934426012
-81023  -104.947900891596348    38.0779959531282941
-91601  -118.370955255449019    34.1680190600382332
-76016  -97.1899065780576308    32.6876942330515519
-78150  -98.2808444117647184    29.5342895882352927
-60177  -88.3134604095829872    41.9915663869284899
-67051  -97.1707391333332282    37.0949927059523645
-33904  -81.9517901017456154    26.5822677439063888
-80758  -102.226792860427622    40.1060934829480544
-73668  -99.984041739130447     35.221779347826093
-25635  -81.8728787070254072    37.7366628744394532
-61378  -89.1614173415993037    41.7191607672064961
-53159  -88.2848924761904925    42.5456818095238134
-78542  -98.1021538338238344    26.3208419813923662
-32337  -84.0213410600000117    30.4767709999999887
-14068  -78.7545538530742419    43.0233163336346678
-18641  -75.7434272286942161    41.3324853325377219
-36505  -88.0314385242031392    30.9295313069657567
-68956  -98.6769611117837258    40.6343407948525126
-47624  -86.190827000000013     39.0253749999999968
-08810  -74.5094432344520214    40.3753780034550829
-35452  -87.6741395858477972    33.2803531763729481
-98409  -122.480468994704111    47.211880123637961
-92140  -117.205283107142847    32.7421488928571449
-42063  -88.5689919285714353    36.5596106428571446
-36110  -86.2679310140688784    32.4258895229213664
-84322  -111.810002416666677    41.7219305833333252
-81019  -104.846145560584574    37.9409341076264681
-54480  -90.295272302777704     45.0709088444444745
-19065  -75.3892175000000009    39.9333757499999962
-02532  -70.6039278084062403    41.7478705914205079
-68041  -96.492222980769256     41.2370735092838601
-49288  -84.4261103501374492    41.7339763345555426
-54462  -88.9893305625000011    45.3933385000000129
-00729  -65.8970357825730559    18.365300675371099
-43359  -83.4494870680672278    40.8701824403361513
-72427  -90.9441125783132946    35.8666940240963754
-53582  -89.9922801513737056    43.0216456585164266
-18311  -108.828695999999979    37.5982300000000009
-57023  -96.7504492500000026    43.8774182500000052
-76678  -96.7589739635761958    31.6429159238410733
-19963  -75.4150861619355766    38.9221802631313878
-01380  -72.4135196521739033    42.5756394268774443
-93724  -119.786527749999991    36.7390427499999959
-49454  -86.2901948737940501    43.9509431750803614
-14035  -78.8521716428571438    42.4949786428571414
-65810  -93.3175569490373675    37.1199504705741461
-38261  -89.0904952924409059    36.4305822085201925
-59636  -111.973369333333324    46.5825024444444367
-43203  -82.9703281792000098    39.9720023850667445
-19334  -75.8941433333333322    40.0918361111111068
-22150  -77.1850598926856435    38.7784014106329025
-44629  -81.438550724165637     40.3545350961282665
-35662  -87.7914402608695639    34.7477443478260923
-02459  -71.1912122070929883    42.3183391215117197
-05341  -72.7882035639647427    42.9541039257813395
-03465  -72.1839822706042469    42.8290782527472231
-63656  -90.7585086376811603    37.6263942695652105
-22720  -77.6463860862399287    38.4807722384055069
-26348  -80.5249163276595965    39.4611865319148833
-98116  -122.394941581349727    47.5749476151014221
-38381  -88.9515137229665811    35.3505541508779828
-23898  -76.8460005754510007    36.8325716529734137
-11706  -73.25441712884205      40.7309392251058711
-47925  -86.7437015776397686    40.8823733788819865
-68641  -97.019425503985957     41.7690014317980456
-57651  -103.057435542372872    45.4892097269303477
-71047  -93.899860087419512     32.313444424701153
-41314  -83.6248692818497119    37.4480726425280253
-58062  -97.8034391610038512    46.6602164150549399
-16263  -79.3339678584070782    40.8000869646017676
-33760  -82.7155087652230918    27.912990314555497
-02912  -71.4015847948717948    41.8256747179487292
-24133  -80.1380169020093973    36.6774309908809286
-04536  -69.827389249999996     43.9070830000000001
-12072  -74.3682842446873025    42.8973058518517618
-12037  -73.5692433267974906    42.3421949574228123
-15089  -79.7513507772426067    40.218346886092661
-99674  -148.528790522727007    61.7559040212514816
-97064  -123.211697861801582    45.8634477982273836
-01983  -70.9471148349719982    42.6405452675920955
-72517  -91.9480232361112257    36.1509545265151573
-97219  -122.704831867567904    45.4561465314243236
-04497  -68.0363202717770292    45.7026211244400145
-44641  -81.2566817571231468    40.8525816135193764
-15626  -79.5774004223880382    40.4099701997512426
-39304  -88.7321749374999911    32.3746707499999999
-59008  -109.056940526637661    45.0958196331878369
-46016  -85.6844609649540985    40.0983649948617256
-58575  -100.897107395491773    47.5628759804642698
-00617  -66.5587923480217256    18.4428768012590076
-78873  -99.7500640497760713    29.7419814318711673
-80116  -104.711484910206423    39.3533380307294252
-89429  -119.280258848475313    39.3645469561536743
-05045  -72.196245111879648     43.9173416536400936
-46410  -87.3458760115979089    41.4895078613609485
-56452  -94.4534422123069533    46.9485782791994524
-76542  -97.7264330377592643    31.0398981461612813
-47871  -87.2991962444444596    39.3897786740740798
-08641  -74.5875142404512275    40.0368983834121366
-87916  -106.041202249999998    34.8702800000000011
-58366  -99.9419769503458468    48.6348089934352927
-79236  -100.301480515964229    33.617272965762659
-85083  -112.168369446200714    33.7253543016140895
-24594  -79.1907602477461836    36.6443587766715311
-71603  -92.0576654232005325    34.1737400560173157
-56395  -94.2206546666666753    45.5676376666666627
-60601  -87.6243754894515803    41.8827855189873475
-99357  -119.670394828556482    46.9199393694360225
-60070  -87.9306234074570909    42.1033489279262056
-74641  -96.8727039249116046    36.7766417491165925
-95471  -122.979007201954374    38.5231883843648006
-13438  -75.154741854154878     43.350282022991685
-26451  -80.4161780762251226    39.1743078947368772
-26230  -80.1932285636896154    38.6789375417276631
-16035  -80.0079671126760132    41.106919732394374
-50621  -92.9015476995191989    42.2407673503605636
-27243  -79.1962858464793413    36.0845769874745912
-24485  -79.3329148739779555    38.2591772987013243
-40199  -86.4705012400000186    37.5869317399999971
-06033  -72.5559811606065352    41.7054564402583381
-55041  -92.3036346732146171    44.4272734891277281
-27924  -76.8361497320801448    36.1774128197258875
-92627  -117.917526609278454    33.6471117521676248
-18458  -74.930343462672667     41.403367859227032
-75230  -96.7922007027214306    32.9029458634686236
-96854  -158.036016333333322    21.4847126666666668
-11978  -72.6461333412858465    40.8142237166997788
-51342  -94.7424311344647947    43.2404261549173654
-26571  -80.2633619203586051    39.5113097584388839
-27544  -78.4335515170748039    36.2017529776258371
-06840  -73.4963915192751074    41.1553235400654174
-28571  -76.6952422992127367    35.0472738641420278
-76402  -98.2117765769230857    32.2077611153846135
-61419  -90.1180435131579003    41.2002531184210312
-67491  -97.9229725709730019    38.3825390510366589
-90604  -118.012124897245641    33.9299975700783421
-59806  -113.801736099999999    47.5825214999999986
-89121  -115.092370584438825    36.1202105243439604
-43974  -80.8876762424242628    40.1818164090909278
-27839  -77.5829372898061251    36.3035138812889144
-57024  -96.6769233285396865    43.9878253882743593
-38139  -89.7605640047510178    35.0870812638918466
-48751  -84.4531065999999839    44.9123461999999947
-20158  -77.6613924274701191    39.1394160348955609
-92884  -116.487323374999988    34.1147667500000011
-45327  -84.388077808699947     39.6279380846779645
-69044  -101.033206285100349    40.1635893395415451
-08101  -74.8844344999999976    39.6891255000000029
-35171  -86.7300860633755519    32.8911232777587159
-81418  -107.966860965833305    38.8517879731003788
-04646  -68.2346823625000241    44.2701246350000304
-46349  -87.4319887375049376    41.1217365650515063
-03883  -71.3228667941712473    43.8275392495446496
-50543  -94.3036133335796478    42.2711895223494594
-58422  -99.4328434253112903    47.606365363761995
-36098  -85.8733751428571566    32.5436398571428569
-87410  -107.987080907194382    36.8424781458282524
-29487  -80.1808374756827504    32.6556303218927511
-79102  -101.846022186079821    35.1998819637784592
-25875  -81.4601134885496663    37.6683968982188091
-71971  -94.018156326145089     34.3026453768740893
-08349  -75.0565213266999365    39.2608775460199837
-38562  -85.6467093314054608    36.3485696301984476
-71473  -92.451347447477886     32.0790644050961689
-29051  -80.1253203647358703    33.8636249019732958
-05855  -72.2043614127184554    44.9341411663750847
-95518  -123.675466710144917    40.9413488840579731
-64439  -94.7593503027932655    39.5185345821228893
-14544  -77.2467081477351627    42.7559772010452406
-75127  -95.7956087736704518    32.6831426251621053
-53115  -88.6231256550535136    42.616908894680968
-68633  -96.8325368361633565    41.6857243368857766
-41159  -82.9634098627670227    38.0057211361079723
-93452  -121.174496310416714    35.6618145562500004
-59847  -114.15442641542576     46.7542676682939344
-42131  -85.9132704619002538    36.8195310460959604
-49410  -86.1335546386492013    44.0271720998123897
-39337  -88.9942965019330359    32.5181970184707438
-59859  -114.877066573511826    47.4953618441524057
-24230  -82.4602736843469444    36.9676742213097
-63055  -90.8346836298795779    38.5249168837115477
-12568  -74.0424144999999783    41.6663202500000125
-24842  -81.5983256000000097    37.4409079499999962
-34768  -86.1048006666666623    34.7857968333333289
-03579  -71.0960948632618965    44.834708811367463
-56054  -94.3812219342051577    44.4438121851539307
-77320  -95.4978430093001123    30.7864497458232087
-81134  -105.515910857142856    37.0861472857142829
-98038  -122.029716334012605    47.385931185159393
-62964  -89.2079498685910011    37.1265570672124028
-91760  -117.549044722222234    33.9437973333333289
-38658  -89.8967896188442808    34.1890343305598776
-29576  -79.0370920858097747    33.5791015581086398
-02791  -71.0725661509434445    41.5252918113207414
-93265  -118.765832346560302    36.1809992112591274
-32547  -86.627976264076878     30.4475288334077696
-95604  -120.073224452873575    39.2412797517241358
-45405  -84.2153895073824401    39.7921616552023139
-46619  -86.3269401695915803    41.6669930216629325
-74948  -94.5736164184960444    35.4537821047212489
-13078  -76.0726755909895331    42.9835612880355953
-05048  -72.4205395156277802    43.574244169286402
-36782  -87.8948176480464554    32.108279976232069
-12856  -74.0762814896448702    43.7237933713017171
-79331  -101.956143820013907    32.7114476689449774
-61552  -89.5668648063379322    40.8179275598591644
-55369  -93.4355851130732304    45.1172951786367733
-26757  -78.7300257971296986    39.3372734625623437
-95070  -122.025405914057529    37.2689768417649603
-98361  -121.652956099893643    46.6306935749203078
-80820  -105.479697882402377    38.7860746034566404
-15635  -79.4970735175438818    40.351483008771929
-20141  -77.7820306159181314    39.1304068949127668
-92589  -117.099998666666664    33.6133416190476169
-27604  -78.5765412329853206    35.8172588490495158
-39740  -88.3199717765536576    33.6854919805085444
-12015  -73.818861499458464     42.2880062485110244
-83348  -114.049577510489527    43.2983364335664191
-46327  -87.5099434831870582    41.6336208589181425
-14301  -79.038657657342668     43.0953167651515798
-95075  -121.288502976190458    36.7774917910052679
-66216  -94.7418911439391138    39.012561813377701
-15546  -79.0470306416274724    40.1431228888889038
-30506  -83.9085971597439482    34.3485649594786153
-12974  -73.4662186547145097    44.0486647164674778
-11954  -71.9503029753634138    41.0433130986806205
-04775  -68.4039565079365275    46.6543519999999887
-43612  -83.5581936325528574    41.7074899216389809
-73531  -98.5678745615384742    34.1880410076923056
-92264  -116.521280155409528    33.798199419075722
-29805  -81.6203239977235029    33.6453531847553364
-17052  -77.9850106816062407    40.3208485238290493
-92633  -92.9119686551724158    36.173440448275862
-99110  -117.560506482134755    48.0128395142469913
-17256  -77.69193966666667      39.7828307500000093
-13786  -74.6914792211055385    42.4465562998326078
-05052  -72.3526338406374805    43.5979695976095556
-63746  -89.6916342727272564    37.7025725454545366
-97524  -122.755320823213353    42.4709184680632603
-74833  -96.4032013993505643    35.5573126396103945
-27315  -79.3914289198611982    36.5087589911197625
-17120  -76.8823943020833411    40.2659321666666656
-16828  -77.6854759903487064    40.8117653963805935
-74359  -94.8489354844035972    36.1717707596330555
-32207  -81.6346479652635679    30.2914472080299397
-87327  -108.83223811639526     35.0985517811772425
-35907  -86.0272094607963282    33.9027826098360094
-39153  -89.4978570331291081    32.0425666837416756
-93287  -118.832600303082131    35.7153655479452041
-66771  -95.1662958999193052    37.5054750072639251
-86335  -111.784116737211107    34.6412236224730847
-29130  -80.8774253576728057    34.3238003752334464
-95678  -121.289920919601627    38.7597512569153153
-27857  -77.2868897938021036    35.965028985935561
-14625  -77.5052316432794441    43.1463662945136761
-28781  -83.6437232307795711    35.2196432062740215
-13320  -74.738410033040239     42.7718690459444275
-50044  -92.9046717234887751    41.2054964779957444
-36850  -85.6488011859214566    32.7979543878505382
-06256  -72.1591209664091622    41.7385470698689858
-71403  -93.4083191408405753    31.2198997155135878
-44432  -80.7573039473323604    40.7550407467267277
-73123  -97.650295153846173     35.559053769230772
-35562  -87.1044023636363676    33.7330392727272681
-74702  -96.3706179166666601    34.0061504999999968
-59911  -114.030525878794791    48.0548271953705424
-84732  -111.949040913043504    38.4173229782608558
-62630  -90.0765199197441149    39.2654329921874918
-87499  -108.048444437799091    36.6393795574162766
-43107  -82.4176914070374096    39.6868215133442988
-86504  -109.080603058712128    35.7418050208332758
-02466  -71.2469424875400534    42.3460345530546292
-10926  -74.1367638664627862    41.2994788914372748
-54137  -88.2271943447099858    44.7618109453924973
-27330  -79.1757535527497822    35.5093995855613684
-13301  -75.2139483805774205    43.4215388320209854
-29020  -80.5906066684641047    34.2867752205738725
-36079  -86.0048357967175576    31.7778116327372011
-92672  -117.61113671080922     33.4273853122247644
-84522  -111.248037616412233    38.9240151927480511
-54460  -90.5646217558141018    44.948259377906993
-75414  -96.4280204553853793    33.6207853606969778
-81063  -103.782321570472007    38.3166224760841558
-14770  -78.3134241081645968    42.0400022623865723
-23181  -76.8637283115257048    37.5842645978896357
-39336  -89.2398780915997918    32.3245625536193231
-28392  -78.7959046884233487    34.7233496338974206
-55751  -92.6455952223287511    47.4135589803544732
-84513  -111.020974931801362    39.2172837079317844
-59858  -113.381894930638595    46.2889314532116742
-85249  -111.796789803591494    33.2276939681136412
-19362  -76.0709960749029079    39.753576452145083
-31039  -84.3813306068965119    32.5997549448275947
-08809  -74.9127504791550507    40.6436968456895897
-28204  -80.8265350463827161    35.2136720453444099
-25849  -81.2836595256410703    37.7332905897435893
-99716  -146.872320512820494    64.8773346410256551
-42632  -93.7425936666666644    36.4132243333333321
-56168  -95.7986772341121622    43.6050224481344841
-31623  -82.6443135029940947    31.0709115329341259
-85119  -111.510719611748613    33.4192846586933712
-03585  -71.900278842837011     44.237859410814643
-96101  -120.561001345173253    41.4710425204916504
-38330  -89.0258852777251519    36.0711387818121594
-71060  -93.9751429409950276    32.6615026439144671
-72576  -91.8408667021990937    36.3506600391871331
-82839  -107.167811755218253    44.9105104212524751
-74660  -95.960448999999997     35.5194345000000027
-44053  -82.212863093586094     41.4287130518750857
-10314  -74.146002627313905     40.6046302434718598
-55627  -93.940277750000007     48.0955615000000023
-12463  -74.0112033187530329    42.1839649041415541
-99883  -119.326110760000006    46.194316520000001
-38880  -88.6057361249999929    34.579229374999997
-75010  -96.8976940001752922    33.0283106073619521
-52583  -93.1531138177710716    40.7896484427710675
-56594  -96.7079994406393411    46.5609546301369335
-01922  -70.9294015969229577    42.7538029226923655
-28046  -80.297584428571426     33.4066311428571439
-30624  -83.0372769728653424    34.186066869573132
-23608  -76.5428753768291728    37.1512532617734124
-59313  -104.274453110236479    46.3435840485259192
-95054  -121.958746026527322    37.3924446253637086
-02113  -71.0550284048642027    42.3652085822603297
-80926  -104.892845447080816    38.6448711018394704
-60620  -87.652137005885308     41.7400550986526753
-85260  -111.88698803634334     33.6057262255260483
-07067  -74.3152451320401326    40.593505924047605
-15131  -79.805982043110518     40.3385757533389508
-13641  -76.0076100066666953    44.2754536866666513
-52001  -90.6862978714110994    42.520627227903411
-82720  -104.63389314461179     44.6963791660063734
-44754  -81.9115351250000003    40.5679382499999974
-04234  -70.1906542289156334    44.6135711686747101
-07606  -74.0471483500809597    40.863213750405194
-13551  -77.039077000000006     43.2697648571428672
-58067  -97.4467168279569336    46.0382216441372449
-66507  -96.0235228387615081    39.0254270892642339
-06804  -73.3954104397458877    41.4663760332608078
-28679  -81.8412611422100866    36.2578438660506919
-55746  -92.943412516342903     47.3851618324773796
-66757  -95.6824422500000509    37.4244858490630179
-30184  -84.717315459312573     34.2505176400462688
-97204  -122.675267838461423    45.5185784999999896
-16253  -79.3545634767441612    40.9841435755813919
-17034  -76.7866510459843568    40.209246810880714
-54512  -89.6581101756090959    46.1124060140660674
-00656  -66.7885761939438538    18.0224358464311862
-73801  -99.3981401523497965    36.42641115554013
-95942  -121.628712593128711    39.9339486893251276
-63387  -91.0152025304877696    39.1832711036585408
-59257  -104.93595797912316     48.7395085741127119
-83544  -116.202826256235625    46.4921410926130463
-62590  -89.18434533333334      37.7111626666666737
-16314  -80.0520801801771711    41.5195247261871998
-93662  -119.625433124300656    36.5641304867956194
-93221  -119.103327721060609    36.3021219457896862
-62280  -89.6696411203116099    37.844212917681368
-66863  -96.0793876478873017    37.8345477746479091
-97301  -123.004290062229529    44.9453971183114973
-66066  -95.3393890079747024    39.2035076072567321
-48387  -83.4745695000000012    42.6139700000000019
-65941  -91.4474573333333325    38.6907591666666661
-13614  -75.6938545897435944    44.5351958995726704
-89415  -118.662466377197049    38.5667746693587219
-19053  -74.9806503289666892    40.153560428818551
-48377  -83.4722589520321208    42.5106797545636326
-24348  -81.1569042357084669    36.635079768775185
-72320  -90.5553280039999748    34.8344132640000055
-12494  -74.2874491151701051    41.9601396174530379
-82620  -106.781599917857136    42.5421605482142837
-20062  -77.0372544999999889    38.9002835000000005
-44623  -86.0214369999999917    39.7054407142857144
-28667  -81.4294396165048227    35.7711498203883664
-71407  -92.4977452229868504    31.5167008561596482
-64110  -94.5730386686098541    39.033448180122285
-22639  -78.0114810128247882    38.8162214771457244
-76240  -97.1195021137042858    33.6299445890680033
-14745  -78.1369905405405518    42.475571594594598
-15213  -79.9559867550731411    40.4436303993506669
-81652  -107.655648469985877    39.514062820115349
-56458  -94.9858404124897788    47.2039258635990109
-40366  -83.7490953255814077    38.0854976511627967
-84529  -110.810886032786968    39.6821582513661113
-46595  -86.1695094210526236    41.5264468421052584
-43342  -83.1780049882683699    40.4732442991552901
-25536  -82.0458349999999967    38.4150369999999981
-77840  -96.3226536939834688    30.6125800529614551
-47453  -86.7519834429530334    38.9310060671141045
-86411  -113.687605476923125    35.2670748868778219
-42440  -87.4704261199186561    37.2361563760162326
-50035  -93.4542645573181403    41.7157166222688147
-05680  -72.4732173493483316    44.5519390910584647
-14083  -78.4393028214285835    42.6766092261904646
-83522  -116.387698563909979    46.0135289924811417
-67512  -98.3217382728493874    38.2402284274193747
-53505  -88.822301569844754     42.6545945742794075
-66773  -94.8356727097575316    37.2737270863891084
-29940  -80.7425246999545294    32.5603871134408394
-37820  -83.5642596922780427    36.0838110618484507
-34109  -81.7694591027154303    26.2436444264095918
-10459  -73.8942811253644152    40.8253696472303247
-13267  -75.4503271578947334    43.7628950526315847
-66753  -95.0141250699931561    37.376668410256535
-16002  -79.8597440893497605    40.8175256281075676
-08534  -74.7837901145848463    40.3238628599850699
-55954  -91.7726904564317465    43.5497427745503671
-33430  -80.668717751650604     26.6849047696801058
-56302  -94.1618113333333326    45.5603003333333376
-06002  -72.7339182457189537    41.8341265579082986
-04270  -70.5074556787555764    44.1206969379432863
-46613  -86.2501114770642374    41.6547770448047103
-74652  -96.681981450000066     36.8263435885416825
-52581  -93.0613522817352958    40.7964287931507243
-20059  -77.0193195263157975    38.9237856315789514
-79096  -100.205442040337601    35.4008598798312732
-84088  -111.966752623926382    40.5943544891756787
-61372  -89.0804145370370293    41.4669127962963131
-46380  -86.9682159999999982    41.1930444999999992
-40155  -85.991447706045733     37.936360699096646
-79118  -101.824182570314903    35.0940739584090693
-36092  -86.20154665546751      32.6060960556831034
-76864  -98.7024317285714545    31.5501950059523644
-92625  -117.867510791975462    33.6013594658830215
-24236  -81.7437135669790678    36.6412007874205301
-93451  -120.609485176864325    35.786483291075271
-79231  -101.089694046874953    33.9417477343749994
-85828  -110.623266333333333    34.4380103333333309
-42258  -86.3291677200000009    37.2598336533333381
-55374  -93.5649541945631285    45.1908224562135601
-85356  -114.143497850309984    32.6781874738706861
-80830  -103.905865514297574    39.1007012026524237
-30342  -84.3732826334751138    33.8811810457473399
-78611  -98.2982383725064039    30.7784819863525811
-03293  -71.6811429857819888    43.9610042037914468
-61721  -89.3254072331406803    40.3428441764931733
-65101  -92.1532191999098416    38.5099343675699473
-37051  -87.415269833142375     36.3037070430800171
-25427  -78.0674524599273099    39.5428802475141197
-35150  -86.2547279979537507    33.1843001857034068
-31210  -83.7285744970037769    32.895879897718963
-22655  -78.2026337467876118    39.0767422820321855
-67643  -100.297442349206321    39.6834860211640219
-21802  -75.7078162857143013    38.2650736666666589
-72613  -93.7582361920000125    36.4704060240000132
-67330  -95.3002790704697986    37.18512675922819
-07675  -74.007421656917046     41.0082346183819055
-80923  -104.717510390636505    38.9239066865799686
-25989  -81.0623887366412958    37.6861158066157529
-59483  -111.727784846230207    47.4995106076388112
-98168  -122.301488740115218    47.4895090612270678
-19709  -75.695840325518688     39.4832324917651789
-83530  -116.10503318016346     45.9268601593872887
-79313  -102.189729159034698    33.7733517766088838
-84744  -112.007246230769326    38.3471126013985995
-16404  -79.7871514559148522    41.7211674262276375
-01702  -71.4298258198295883    42.283007152342833
-18041  -75.5083893104931576    40.4169664747706605
-61021  -89.4716692548234107    41.858202301575794
-71327  -92.0455583715397267    30.9879531139327433
-93067  -119.597440512475885    34.4230092360844537
-08270  -74.8105435047469314    39.2527007396108374
-88002  -106.494263739289963    32.3827193500611799
-84334  -112.14861085234898     41.7877649261744679
-17877  -76.6661129687499852    40.8749361718750066
-03252  -71.5768587999999966    43.5116878000000042
-40157  -86.3730005126051736    38.0223213664525943
-23192  -77.6761698042181052    37.8171160865825513
-82082  -104.107204958556807    41.2133393405695472
-61914  -88.7378460270474818    39.6442284620585852
-95430  -123.082117970526255    38.4455897557894772
-72160  -91.5468853750889338    34.4766728239323825
-33514  -81.9919663337686586    28.6470433194081728
-62076  -89.2173352469879859    39.3444903012047931
-79022  -102.535561023770384    36.1317759633809032
-38127  -90.0055251340469482    35.2280203675426051
-76123  -97.383999923586444     32.6215082981812543
-99770  -160.012012999999996    66.6014330000000001
-83318  -113.792479615368748    42.4979698747397165
-02136  -71.1240086126901474    42.2553371039332433
-42370  -86.7412245399999904    37.4504490000000061
-80137  -104.588347920670472    39.7554658994414112
-82005  -104.8618651619433      41.1504100607287455
-95547  -124.077862685060595    40.5356406117093115
-98110  -122.533654525065927    47.6415534449799409
-34986  -80.399106624350452     27.33286615510033
-55354  -94.0595896086607013    44.8836264450682449
-94521  -121.973253751795625    37.9561061503173676
-49689  -85.9124016781309052    44.2138319761905905
-13101  -76.072213264413918     42.5963773025418178
-58701  -101.290119038490076    48.1935578102130222
-36555  -87.7792036544656185    30.4019225270863984
-42071  -88.2784993710685768    36.6191492010580575
-32759  -80.8610053484035802    28.8621862401809679
-66801  -96.1919239196365368    38.4124482046451234
-78224  -98.5395626736188603    29.3287528335921834
-58577  -101.040510058658583    47.3354364290290022
-72130  -92.081809559953399     35.6651254792393999
-47576  -86.5861974519632582    38.1900559256474423
-12050  -73.7133800000000008    42.3368430512820524
-78361  -98.6920134173365398    27.2301289703977147
-15475  -79.8803306532156085    39.9617049407314155
-75219  -96.8124056495755383    32.812279565230682
-89409  -117.928451991631775    38.8651676694560848
-38321  -88.5382747667557481    35.8396899710736179
-02334  -71.142056636363634     42.0234267272727209
-76227  -96.987548465393786     33.2616326032743217
-13621  -75.0666525894358614    44.8395508139255554
-58753  -102.580782499999998    47.9762695000000008
-42715  -85.4125221898981408    36.950772484338259
-06120  -72.6720838983273012    41.7867163036972045
-46970  -86.0785313809086716    40.7554444274640773
-59872  -114.861173801508343    47.1489551651442653
-66616  -95.6377202065370255    39.0644624959735083
-03240  -71.9659807511086456    43.5750497186808303
-33324  -80.2753680112648453    26.1131279699854986
-14101  -78.5340954508105398    42.39307390011313
-24541  -79.4685838658819108    36.585969588988192
-92004  -116.317488462088235    33.211047537626186
-43138  -82.4165263119827927    39.5279642258440305
-08072  -75.411169450549437     39.5461773736263638
-70363  -90.6909736472846788    29.5553811825919901
-28529  -76.8650890793550445    35.0792071748339893
-54227  -87.7998976306065941    44.2830621094987791
-62071  -90.1518225364238788    38.6577375364238449
-24091  -80.323943398720445     36.9223831212112472
-98564  -122.481773823714605    46.5085910658908759
-25705  -82.3641472632682792    38.4086088428776904
-65664  -93.6262807941176334    37.194093235294126
-21105  -76.6550951666666549    39.7157041666666615
-03264  -71.7030694607497736    43.7401291654879358
-25504  -82.2727527929866511    38.3833588765574234
-13473  -75.4404449973088731    43.6435133719052004
-58576  -101.16902059332341     47.4568547149360711
-97444  -124.387734315580559    42.4501159366812999
-43938  -80.6410152255613326    40.3126313791019086
-25547  -81.9630819378452458    37.932207171270683
-59407  -110.535262541666654    45.7152441249999981
-12471  -74.0384156062992389    41.8378707165354271
-56175  -95.635083425726549     44.2424598615706017
-13403  -75.2714371772864865    43.1659549613943199
-32764  -81.1325022790184391    28.848507744049261
-25601  -81.9940035279215635    37.8588204827288237
-29044  -80.7159240218816052    33.9239811995805951
-83656  -116.798756138181801    43.7278998690909262
-58721  -102.246727431385665    48.8451003821832401
-72063  -92.7643387308069975    35.3325077122247748
-19944  -75.0545947084546583    38.4676225451895135
-87443  -111.449997499999995    38.2651000000000039
-39772  -89.3116816620860874    33.3102677931287658
-08723  -74.1252609596126746    40.0401774837147855
-32549  -86.2281089999999892    30.3487220000000022
-99772  -166.069403000000023    66.2564749999999947
-96054  -121.186627654437999    41.2393160994082706
-72453  -90.709952614329282     36.2641328201220006
-40759  -84.0606795827089428    36.8164995240371766
-21234  -76.5351431962887716    39.3919480454392144
-90640  -118.112661382177038    34.0159081776881536
-57110  -96.6443902871261429    43.5378195494215063
-56174  -95.3014800198609464    44.0167253892750381
-71018  -93.427314271860709     32.8152053923767042
-75555  -94.1271022249771505    32.9558010899907927
-43602  -83.548365814814801     41.6450150000000079
-02030  -71.283307728348575     42.235964304903284
-47941  -86.7695712850299827    40.3771317604790383
-60467  -87.8916661630922107    41.5986235692583151
-67211  -97.3173168905753556    37.6667522917403303
-54851  -94.6179290000000037    37.1105815000000021
-62018  -90.0838837412430848    38.910926890395551
-66434  -95.5448604844901581    39.8648715707683579
-15544  -79.0912729593220263    40.1336948271186316
-12423  -74.1136064932855305    42.3775184664280076
-99721  -151.734270116666607    68.1432272833333457
-23231  -77.3432846726714871    37.4725580264706721
-20745  -76.9909106345167942    38.804892383873252
-39855  -88.5073892000000058    31.9602287999999994
-36012  -88.3507224999999892    32.309071000000003
-38047  -89.5255566849315301    36.0720555525114079
-86522  -105.966183999999998    36.0067935000000006
-98625  -122.785616748064697    46.0114031062473003
-04364  -69.9615990939745416    44.3091819500761304
-65708  -93.9132873443831357    36.9214667620059487
-27233  -79.7000474376304027    35.8942951842379614
-75226  -96.7767458406297862    32.7837807766846936
-28438  -78.9030178003389153    34.4334680450179249
-81410  -107.9838954997591      38.8032490019286982
-04090  -70.6213130447096376    43.3196523352388283
-50219  -92.911576443866096     41.4144147908622458
-42460  -87.9498654473684098    37.4985268421052638
-67418  -98.0579248388059597    39.2008897582089588
-15137  -79.8121926017879986    40.3776921931465083
-61930  -88.1243627876409903    39.6875302672879471
-17243  -77.8520610866851825    40.2516202912620855
-63837  -89.9752670947175801    36.4510442723133181
-97877  -118.255074193893051    44.7567128076334839
-74019  -95.6276920276761899    36.2836577805301062
-56035  -93.2674459875518522    43.8223600954357124
-17747  -77.3193298002161953    41.0312108395511075
-12481  -74.2146285134907941    41.9842649312814729
-90515  -92.6009269999999987    30.532885499999999
-23065  -77.9274923653798766    37.7984159396920845
-55923  -92.1834978475523741    43.855452255433768
-62080  -89.1192266545716905    39.1547545667633656
-50677  -92.4614268313139291    42.7364137147749048
-48000  -84.9569979999999987    43.9224595000000022
-88027  -106.679653007853361    32.040100282722527
-49612  -85.2476639626085984    44.8780244147825655
-83463  -113.949436905013286    45.5255223192612064
-20336  -77.0109400624999836    38.8432093125000009
-56027  -94.1195147435798845    43.5099081962438774
-15447  -79.9392868200000208    39.9457826200000028
-74437  -95.9731968712206509    35.4529870603093187
-84664  -111.584090660765156    40.1291829351880551
-38044  -88.7929488239434903    35.1977997343150619
-98416  -122.482349416666679    47.2624685000000042
-85615  -110.192896536778747    31.4211172016974665
-19311  -75.7664215916333887    39.8170077202621115
-75639  -94.1556645620533459    32.2961774872132139
-68930  -98.4221192011791572    40.3455942483419108
-83113  -110.146211443200642    42.5775580627583992
-68037  -96.1304079953774675    40.9895036373908539
-40119  -86.5290886129785832    37.6034341447918834
-45120  -84.0990796921924471    38.8251588994570511
-61376  -89.6121238511379801    41.5418004342878859
-44140  -81.9288781884383042    41.484710519961645
-79056  -100.229032821256055    36.2176254299516955
-75278  -92.4092821666666708    39.339552833333336
-06024  -73.2762080679784873    42.0042715116279055
-44436  -80.5426997760643104    41.0533052608114062
-23882  -77.4256791646884892    36.9228858922971952
-83261  -111.406044072022183    42.2275138337950153
-98020  -122.36989853513505     47.8016600336476927
-13331  -74.8794292197854361    43.8219502449836611
-03810  -71.2711367327128187    43.5055286471631533
-21849  -75.46771931642607      38.3834712226231645
-56731  -97.1167240285714115    48.9229547428571507
-43011  -82.6843110133750514    40.3100335059084145
-85420  -110.419364000000002    39.5484204999999989
-15010  -80.3439985389231737    40.7676023169145267
-35080  -86.8714220275116986    33.2785792576572277
-73728  -98.3567377624223411    36.7553023998446875
-55964  -92.1596210474074553    44.160710214518474
-27588  -78.5000438888888965    35.9775367777777717
-24141  -80.5683821964518501    37.1039986264903661
-33076  -80.2737887104759551    26.3069193142109086
-49262  -84.4836136839546299    41.9650193598054955
-60440  -88.0755909411260944    41.7050761060250181
-95915  -121.226557228501207    40.0035986289925987
-21918  -76.157820907844183     39.6776806258913624
-65803  -93.2891848027573474    37.2668703625634947
-96158  -120.023285491228165    38.8868467280701822
-78664  -97.6450716027796091    30.5085750244352489
-65640  -93.5627603522897431    37.6941709305484665
-32771  -81.3026282114543761    28.8038905851677391
-79408  -101.902651666666657    33.5681463333333312
-28423  -78.3887990983204617    34.3359916833587775
-43616  -83.4542519578722448    41.6506479484113257
-72441  -90.3897071071428257    36.4374606726190535
-16827  -77.7801540667303613    40.7779145460415293
-16143  -80.4585843438923973    41.1033286391281365
-78759  -97.7598356054521247    30.4041437676192814
-04064  -70.3914381555793511    43.5195267594420372
-71028  -93.0683452341059478    32.5072680348864509
-58415  -98.4861774403893264    46.3729570924574759
-72124  -91.7089273333333352    34.5410183333333336
-48444  -83.0660512456181266    43.0471336206481183
-10454  -73.9167845551913274    40.8067734065573902
-63090  -91.03077308613247      38.5321437450504334
-67885  -101.561186399999997    37.5650645999999995
-85530  -110.120672114285711    33.1327333714285786
-60445  -87.7326251133308261    41.6334571333081769
-21738  -77.0232169045615933    39.2793592960207221
-15157  -78.9112147142857197    40.5580537142857196
-35208  -86.8814923227181168    33.4964439829211429
-21233  -76.6458547777777852    39.2931508412698278
-87540  -105.922367332351996    35.4584332423945838
-08002  -75.0193471008215624    39.9315275851183316
-38475  -88.0441972073909085    35.2752944355382851
-44111  -81.7860970262112517    41.4576448221258858
-02446  -71.1233966126191604    42.3429301038151138
-30623  -83.518493188311723     33.7321531298701487
-42718  -85.3684324383752227    37.3830444454097091
-48362  -83.2550576328651601    42.7826391357955345
-52042  -91.3641078615074065    42.6864087149310336
-79745  -103.094949931385699    31.8544224100777136
-85268  -111.734865115922688    33.6031125911271431
-78353  -98.206413894882516     26.897617970954343
-92532  -117.301633335326358    33.6915727045652602
-32955  -80.7269632655415847    28.3027414728192639
-21017  -76.2437823618135297    39.474532397122907
-92251  -115.592275012283835    32.8507774086645625
-32424  -85.0719603517284924    30.4264989992071655
-69046  -100.113983216216283    40.087507516216192
-43022  -82.3515341989841971    40.3478314829179396
-12915  -74.0425805263158026    44.8458878947368333
-84764  -112.123664676595737    37.7110478893617156
-92064  -117.032974995190315    32.9836014863253979
-33101  -80.3537425000000098    25.8861710000000009
-10538  -73.7570447770375637    40.9364458951790269
-23083  -78.1093200961196601    37.3225789962520551
-29014  -81.1217264243250895    34.5584132306594043
-67425  -97.921148651520312     38.808362984967566
-82837  -106.233939665775281    44.8778978716577654
-04939  -69.1540789759143735    45.0528991954101983
-99128  -117.083230761668389    47.0944383644488624
-43778  -81.3727002836485553    40.0073218890939017
-68523  -96.7587506365198777    40.7408461310818879
-16020  -79.8987470302812426    41.113366815789476
-68343  -97.132317778584266     40.6257336617060645
-72565  -91.9158531838617989    36.1958488144092243
-06450  -72.7794981328709127    41.5303342667200539
-95228  -120.633515255759832    37.9386479929807692
-16629  -78.5148698064516424    40.5350110322580761
-65453  -91.4220753540988369    38.0969261665210581
-89002  -114.9626419457813      36.0003966196589644
-07676  -74.0628958594985818    40.9899392490553538
-47125  -86.3059590782313109    38.4619738362114987
-87515  -106.413968619047679    36.4845919153439269
-11413  -73.7566044509804044    40.6705580784313767
-99775  -147.826089589108904    64.8586753514851324
-48357  -83.6389288078255646    42.6557900782559258
-08872  -74.3482573894202403    40.463424595337635
-13485  -75.3126965798867332    42.7899375504249662
-63827  -89.8863827336063395    36.2544792729508245
-85758  -112.63763583333332     37.2760364999999965
-19087  -75.3997213353605815    40.059662342849812
-78565  -98.576181441988922     26.2650917403315027
-07503  -74.157512942008637     40.8972373288542386
-18195  -75.6083545000000044    40.5600670000000108
-85617  -109.718264387072892    31.5329549587665987
-59727  -112.779750989672863    45.7909191772805642
-50521  -94.1008702705882456    42.3422338470588357
-48314  -83.0573979644590565    42.6099696354296995
-47721  -87.6015516666666798    37.9777366666666651
-07601  -74.0479792718816157    40.8880768106368606
-18332  -75.268950563981079     41.0874198243950346
-62346  -90.9589271722091013    40.1477387019002236
-52573  -91.930139925991682     40.6329351681467656
-63445  -91.7171042100283387    40.4217273320718888
-40229  -85.6629125958865103    38.0931595323875385
-89519  -119.852523001596765    39.4857728903081977
-35811  -86.514391773062556     34.7887807121040069
-52721  -90.9605679170402652    41.7495791771301015
-04410  -68.9185385561887216    45.0876197251627957
-85172  -111.949057684478262    32.9131929185750707
-30269  -84.5703294390883968    33.3995859936325914
-27202  -79.5417890508474414    36.1287834406779496
-42406  -87.6903962916512825    37.7279306794919052
-99023  -117.186337192209663    47.5598829999999921
-37211  -86.7244003090087574    36.0663013842465219
-76844  -98.5210910806617051    31.4446573373270155
-02351  -70.9558590462332575    42.1177433337769074
-13114  -76.2427526890674869    43.4669827413791268
-03063  -71.5135736678340663    42.7722316136186649
-23002  -77.9560385748733182    37.3451133728258995
-60460  -88.5257521446802826    40.9992718235642855
-85041  -112.105577706942469    33.3845857061701139
-45208  -84.4359465950296197    39.1345197163022291
-77843  -96.3421060000000011    30.6130140000000033
-97543  -123.533515844114859    42.3662332708895235
-50073  -93.5209395308149425    41.7965154811133246
-54761  -92.1929320136986377    44.6321961272015457
-42129  -85.5948825184598974    36.9924753467595977
-82217  -104.212832284246588    41.770881499999966
-12946  -73.984038127316893     44.2764124697662425
-75946  -94.5270291361439519    31.8220509667794609
-20116  -77.8528790000000015    38.8640199999999965
-24314  -81.2057137790699102    37.1689915309345267
-27530  -78.0346392610224626    35.38598329303003
-22201  -77.0946539043218166    38.886670771153355
-24411  -79.3213612479999881    38.1012367039999944
-67208  -97.2795485107942994    37.7032831736437259
-63126  -90.3786952726109973    38.55067538035523
-99565  -158.528935956521735    56.3106867826086983
-70455  -90.3341713835022375    30.5157488133140333
-08332  -75.0413057484587966    39.3761840831680274
-32321  -84.9710458652052978    30.3712709538246379
-07880  -74.8943238823529356    40.8710922352941211
-05468  -73.1400752118636461    44.6529302352342086
-90263  -118.711582615384586    34.0411232307692373
-87007  -107.506549759920773    35.0463639375000469
-76661  -96.8655437347702843    31.3135238858267044
-71211  -92.0452837428571513    32.525656000000005
-76303  -112.45941062499999     34.5278098750000026
-72428  -90.2133308833333558    35.7359176583333564
-12046  -73.9144930357455507    42.4901953561464794
-12984  -73.7938419999999979    44.1963934999999992
-13339  -74.6596215764920004    42.9407837905658596
-13732  -76.1516843201718956    42.050418971819731
-67485  -98.4978624765101074    39.3254132259508324
-24487  -79.6126829297592025    38.1935992651951466
-24868  -81.4284335562914237    37.4148394039735095
-97654  -159.33797061538462     22.1832349230769204
-05681  -72.4098523268920218    44.4417855641439559
-64157  -94.471843218332026     39.2760742387416215
-20678  -76.5925303055370108    38.5282002216342221
-55408  -93.2883631940802189    44.9465331065538152
-29163  -80.437772317319272     33.4201626392024664
-68743  -96.6250889999997327    42.4612684552655821
-25611  -81.8652810828026674    37.6881304755838684
-33576  -82.3113154593709453    28.3220508397484352
-62878  -88.4647058693693396    38.5803398963963673
-56525  -96.7473388076922873    46.6600229769231092
-35963  -85.9252044179767722    34.3594054571698919
-50664  -92.0759202972972872    42.7014257567567412
-49248  -84.0119211610738716    41.7677616692233968
-57533  -99.4333561859684352    43.2713829735704394
-22396  -78.596225000000004     36.9555966666666649
-70080  -90.4336267818533628    29.8773266196911003
-55324  -94.4191763432486084    45.0634242391389108
-74630  -97.4369181557593009    36.5103527395288054
-81001  -104.578550283256448    38.2943309121886699
-44106  -81.607027733917505     41.5076277253862926
-14453  -77.48220241025642      43.0232789743589805
-55353  -94.3069385023382267    45.3361184362649894
-73555  -98.9808824096385678    34.507068072289151
-12193  -74.0430664440992388    42.5135076758109278
-01366  -72.1908099510393697    42.4860140604486887
-43842  -82.0131686009173535    40.1410732752293313
-04978  -69.8126703661765191    44.632659700367725
-47965  -86.9183283620690048    39.9522165632183999
-95710  -120.786381333333352    39.2309123333333289
-64428  -95.0607970642185478    40.4436944882340015
-30904  -82.0135819399301909    33.4746214195295906
-61332  -88.9905195928571828    41.1664357142857185
-77455  -96.3998617140350547    29.1126513245614191
-61341  -88.6977805896221128    41.3399533522841764
-01420  -71.8079139402980218    42.5819239699898446
-85239  -112.091156072159464    32.9835887040926536
-49071  -85.7784305580165096    42.2302484645089322
-89434  -119.699379779922822    39.5484003989289334
-28351  -79.5542801127106003    34.8334281709036304
-35580  -87.2782095951167776    33.7062429582657543
-80915  -104.718443166915009    38.8575714234394738
-11961  -72.8922147461342007    40.9047882777451477
-47573  -87.3224459687499888    38.7443549843750006
-87416  -108.396628618470814    36.7403196449660072
-72307  -117.104171400000013    34.5444972000000021
-44262  -81.4379358054546429    41.1405644068180791
-05868  -72.3913973103447432    44.9139269133510552
-78665  -97.6404464177124396    30.5396576327723075
-24085  -79.8354106083787229    37.6657495088624685
-82243  -104.390914751004061    41.9765992208835144
-95231  -121.279823501562618    37.8792699117188079
-48433  -83.8383102801621476    43.0687927576566167
-97336  -122.855074842592657    44.3569296574074059
-08083  -75.0288589185776402    39.8411994742439219
-96756  -159.469822396291761    21.8995007068366228
-56461  -94.8175729650379111    47.2457708675814771
-28052  -81.225491782561491     35.2334383188618219
-43446  -82.8069420274261034    41.6875079440928928
-68349  -96.3008437066919214    40.8320801082106044
-22922  -78.9225244438730158    37.6867137393806146
-26101  -81.5587863252315657    39.2500523467504365
-80030  -105.037538935966751    39.8393620226611205
-44195  -81.6212324999999908    41.5033470000000051
-45230  -84.3835827296646528    39.0762926052436868
-53801  -91.0642684888338465    42.924885888751092
-21622  -76.1832448002837879    38.4026182110743122
-17014  -77.1968493615818971    40.660289971751439
-80813  -105.184747360778843    38.7789020306662024
-30441  -82.2310386742576895    32.7944118434707903
-14754  -78.2036661801500941    42.0225167247707319
-87506  -105.997190964377353    35.7936431628089196
-48841  -84.2345263550368486    43.1130042481572602
-17438  -76.4155729999999949    40.0972904999999997
-24201  -82.171324116565458     36.6107388740272768
-27974  -76.0361701433370882    36.235875730683091
-25981  -80.7333393451328192    38.0884305314651144
-80920  -104.76651870276082     38.9544744205333302
-00737  -66.1520917999999938    18.1173874500000025
-98402  -122.441100536419995    47.2501827611111764
-74528  -95.7446384499999681    34.73907937500001
-85611  -110.511241361131908    31.5861667769811874
-61751  -89.2841293909091007    40.2186711181818168
-76238  -97.347216590336032     33.4806672153361191
-95369  -120.448042079111062    37.5389790071110525
-66609  -95.6697708682720389    38.9896828549575289
-48762  -83.5036779701848531    44.804395370900501
-27863  -77.9795506319561866    35.482748370408288
-36444  -87.4585088765023642    31.6685768611686989
-17018  -76.9340758147335038    40.3853307458769564
-55146  -93.0832754736842105    44.9431656315789425
-25515  -82.1416447516232324    38.7536165710993714
-49088  -85.4565746509862834    42.1855145953465183
-54204  -87.6323783688710876    44.754302117928134
-45864  -84.1316945588235399    41.1031938088235265
-29613  -82.4354161666666698    34.9395864166666712
-18072  -75.259204950454972     40.847864201213234
-62851  -88.6799238654618307    38.4328903333333756
-75857  -95.8272469999999998    31.9526030000000034
-15967  -78.9880044999999882    40.2093710000000044
-10596  -73.9592313561643522    41.253388063926927
-44250  -81.4354134132581748    41.0211916854725374
-97501  -122.887421863350397    42.3101947766674797
-16657  -78.1873450822739642    40.3257314976388201
-11960  -72.7035737587209212    40.8082939709302153
-35013  -86.5113504285714328    33.9152692142857219
-51237  -95.9966132979269275    43.3364201425520079
-14612  -77.6769567657020588    43.2593465233747665
-77665  -94.3857440219913002    29.8208297916868936
-57758  -102.704284250219544    44.9479904719052215
-47366  -85.2629294363636347    39.8620687818181736
-58640  -102.834884315732296    47.4000148448557468
-92257  -115.624735434964037    33.3088048794749128
-07505  -74.1718167507163599    40.9163935243553141
-96106  -120.560564839130365    39.7476715458936809
-30122  -84.6455325774646496    33.7659510071935642
-37666  -84.1104129999999941    36.3641821111111128
-28623  -80.9730193104723952    36.5288318466968747
-04348  -69.4981410150165857    44.2069185125437514
-29710  -81.1809189998120075    35.1076403188373902
-76671  -97.504227986811685     31.9901279542280719
-68902  -98.3583553550136998    40.5910446883469049
-47884  -87.4530058988763983    39.6209697752808907
-74766  -94.9998676783784219    34.0648078027027097
-34232  -82.4746639346245018    27.322102501091944
-37138  -86.6075001648416247    36.2364437589206503
-32311  -84.170060754382547     30.4071105784752476
-73741  -98.2666632127658914    36.5471785319149021
-95918  -121.357989029606827    39.2883106602624608
-07302  -74.0468989426327653    40.721561172101417
-89456  -117.794925333333325    41.5585771666666588
-57050  -97.0028444032833193    44.1569184211277062
-50631  -92.3072012307691949    42.8828949358974398
-93420  -120.526294002280849    35.1311458902213047
-30272  -84.5162595000000039    33.6213910000000027
-12736  -75.0259333559718868    41.8557301639344317
-76471  -98.9893142258610794    32.115728946870405
-36027  -85.1921427680868391    31.8962531420191446
-33614  -82.5041068097776957    28.0097093338794778
-68039  -96.3601062461539897    42.1149846683760885
-62549  -88.8735677197499143    39.7805173062711575
-48766  -83.854085163404136     44.1213261234042804
-28076  -81.7900449705470294    35.2566689901823409
-00745  -65.8336012989468742    18.3689147754027324
-52211  -92.4391718069528423    41.7624349993592361
-39704  -88.3273432727272763    33.6883360909090968
-79356  -101.412577220557594    33.2311797699176239
-08006  -74.1174450848709228    39.7475833265682965
-37804  -83.9108919077126245    35.7825115938676035
-65203  -92.3773630789461464    38.9180931359555586
-83321  -114.896956835626995    42.4397402629968994
-44621  -81.3024809684580703    40.4216261140070401
-84739  -112.21517056129035     38.6266756838709071
-95950  -121.908208679089114    39.0650861076604059
-31539  -82.5931236520992513    31.8373394341043436
-69335  -102.165677783517907    41.9498021131611338
-73655  -99.2671811326379867    34.9668614605067276
-59848  -114.647498802023264    47.7141314841040227
-08840  -74.3582244298243467    40.5439565194235811
-16434  -79.6659263706099523    41.7962002818451808
-37755  -84.531132962646879     36.4263912971744688
-83689  -116.550723142857137    43.5619015714285709
-46376  -87.4526872516703406    41.1822090000000216
-13603  -75.8096501463093233    44.0370936893672535
-76711  -97.1509029432547919    31.5195216213419158
-07495  -74.163564500000021     41.105426388888894
-76599  -97.7286000000000143    31.467331333333334
-91306  -118.5769364074078      34.2080718769840928
-25535  -82.4414521903163404    38.3080804917435813
-55406  -93.2200748789097844    44.9383977602655236
-79039  -101.119614392229366    35.2389635559666914
-34951  -80.4048573610769353    27.5357060118903441
-68749  -97.4705026666666754    42.4579515208333262
-64494  -94.607372488008977     39.983696767986693
-14548  -77.2375353971766714    42.9708877423804836
-83119  -110.996227130925547    42.6737137968397207
-33315  -80.1534950591487956    26.0944118751113052
-73151  -97.4044552827890726    35.5730319429994353
-25915  -81.2485840597668414    37.6321484212828068
-91326  -118.551957664897543    34.2794458582013419
-62466  -87.8676171716548993    38.7462322808098349
-51534  -95.7323231894480955    41.0440626404087539
-45255  -84.3213459465213049    39.0633099763368961
-81505  -108.60395139804848     39.1229616375054903
-61030  -89.5900234729792402    42.1150650296509212
-13611  -76.1305335220588688    43.775870794117651
-07829  -75.0048875294117749    40.8332744705882291
-36607  -88.103990393535355     30.6982308638383721
-23806  -77.4512157272727251    37.2261000909090853
-92313  -117.312789060975206    34.0319608427471323
-81067  -103.722126031207353    38.0382146624965998
-32712  -81.5191747743958217    28.7138118037133836
-48321  -83.3231079999999906    42.6878560000000036
-45634  -82.5010481265507707    39.180147945409459
-88421  -104.442302995260661    35.3725387156398057
-72504  -92.2275701666666663    36.3799605000000028
-39563  -88.5286113127335454    30.4102682639177289
-87053  -106.787704726995173    35.5341468966419498
-93230  -119.647162261608926    36.329868121771618
-30060  -84.5516156256836382    33.92014334150862
-50541  -94.447609688902233     42.702143738932655
-66036  -94.8519587499999943    38.6644462500000046
-50214  -93.0505575846107291    41.4549891142168931
-95336  -121.217702102842978    37.8161983389075402
-71434  -92.9480104709676027    31.4357652935483678
-43764  -82.1939782609555323    39.7152741999999819
-13208  -76.1479889854184222    43.0746946277820655
-32638  -82.7719239999999985    29.3227795000000029
-78728  -97.6823878434129966    30.4505238820359523
-81030  -103.546565378612755    38.10594031502891
-01030  -72.6767578018653637    42.0715049957460181
-45830  -84.0934805280506055    40.9093939115534511
-40763  -83.9451852098690239    36.6911850143659848
-05074  -72.2245802180851371    43.8334275106382947
-80930  -104.514130799785235    38.8267516473430021
-74424  -96.0697281428571443    35.7411617142857168
-31627  -83.3881943236994232    31.0435599190751468
-93512  -118.532483579104507    37.8108344716417832
-25165  -81.6572026701031746    38.1448780250368458
-02172  -71.1556713333333306    42.3687856666666676
-86303  -112.458954059354198    34.5162539625471325
-16834  -78.1125650490018302    41.0333208548094319
-18816  -75.9082799767441827    41.7451003255813902
-64507  -94.7882141380177643    39.7332382715867567
-92024  -117.261237076220922    33.0550917800084818
-44224  -81.4347770041193399    41.1752635357292718
-57379  -98.5199200708701284    44.2686978759771108
-51523  -96.076107814363084     41.916243513550171
-95984  -121.107819668313397    39.9888472695835731
-33884  -81.6777596774041683    27.9897234841332079
-58021  -97.0763332117766424    46.7355384421487514
-86403  -114.329752476641147    34.4876205577886807
-33948  -82.143760707328056     26.98360101806065
-45594  -82.8386078000000055    38.7833338000000012
-38232  -89.3183392770624067    36.34677644311558
-78608  -97.9406707483050241    30.9223875525423892
-79402  -101.843093500000009    33.5812370000000016
-59110  -108.356977099999995    45.8191145999999989
-63028  -90.4125885304695487    38.1737495065178578
-44072  -81.3413789343068032    41.4729461686942784
-58747  -100.48642729686182     47.7658049457166882
-45331  -84.637587097248641     40.0944220882601883
-67009  -98.2403933702594543    37.2424084471057881
-70448  -90.0564481621639885    30.3729304605877566
-14464  -77.9291865808557134    43.3144049546772223
-66087  -95.1115660638754434    39.79820375047845
-04861  -69.1804816538612073    44.0847870442375509
-39305  -88.6997581111677107    32.4503155753740842
-53033  -88.2500042122703405    43.2355292461951564
-58488  -99.9866007570432345    47.1728278026820576
-64490  -94.5330324010212024    39.7336638513067228
-47881  -87.190286466666663     39.4869215199999815
-48735  -83.2683667582416973    43.6629037362637007
-33835  -81.9791904468085022    27.7982666808510537
-91214  -118.248128726327607    34.2334500573685361
-48066  -82.9387231263657583    42.5059849199525246
-23039  -77.8061533049557994    37.6536734294563473
-95668  -121.494311441102795    38.8205101516290583
-62969  -89.3433556103151147    37.1670275988538563
-78727  -97.71118317306302      30.4261347329832041
-64434  -94.7310051878636301    40.2590826986699923
-49613  -86.2147632567940718    44.4992217857423924
-46060  -85.975019301853095     40.0452742819474139
-16617  -78.3333149314114507    40.602396763916488
-20628  -76.3570550532286347    38.1470766195463042
-72617  -92.3863892887169555    35.9905646946902564
-23063  -77.9819508836074817    37.7227981153147596
-13790  -75.9807813574387438    42.1437151408194737
-53190  -88.7519719675915582    42.8155634563231615
-14502  -77.3350001851089388    43.0959694697570797
-76202  -98.2815006333333372    33.7396505666666613
-98358  -122.690827629675852    48.044992365336654
-37620  -82.1667193755191647    36.5640775024531806
-01842  -71.1597538571428601    42.7022514285714365
-29203  -81.0280805028061764    34.0745958009132721
-04558  -69.5155208692411293    43.8965038895664037
-27711  -78.8432137499999897    36.0894079999999988
-13677  -75.1660502692307659    44.537702884615392
-80017  -104.786305194363152    39.6938757932186732
-12592  -73.5527166460095998    41.7908359591549186
-35185  -86.534668744186078     33.3523092558139425
-50019  -93.62066200000001      42.044454199999997
-40356  -84.5654131341501056    37.8736216244615491
-31201  -83.6358124653268931    32.8341262833141485
-29861  -81.940521375000003     33.5895038750000055
-54031  -73.2036684444444461    44.4247918888889046
-61402  -90.388201189189175     40.9462804864864864
-86323  -112.473514308887289    34.7688684196210644
-14477  -78.1413665817131147    43.3429118964792153
-75853  -95.8062043540801653    31.950045114799476
-72020  -91.4908535618245367    35.4833907645319542
-94531  -121.776042886541717    37.9704582316720973
-04073  -70.7535043814440314    43.4235473011160451
-13343  -75.3524285049562224    43.7403267369018067
-76664  -96.8351707590320814    31.5537874843217558
-99176  -117.412507737316716    47.096506045095893
-44317  -81.5293139999999994    41.0527934999999999
-95957  -121.88244115407862     39.1059696943605601
-30253  -84.1819393265621585    33.4534697664743845
-89701  -119.741374921454238    39.1502909189129582
-03431  -72.2933250744131328    42.9491299494131411
-17401  -76.732744026524216     39.9584751539786325
-81330  -108.489097692307695    37.1938638076922956
-19732  -75.5767478990384092    39.7941297499999962
-19125  -75.1262176474021146    39.977720774664455
-13694  -75.1777860415568142    44.8509672763852265
-80759  -102.671669430958758    40.163617517721157
-32707  -81.3150105280907098    28.663416284433282
-41639  -82.7069315333333179    37.5242569999999986
-79712  -102.171547750000002    31.9482904999999988
-29677  -82.7504188846153568    34.5921225384615383
-02051  -70.734601687499989     42.1485604375000023
-31207  -83.6520163571428554    32.8295995476190541
-70598  -92.1243336666666579    30.0673270000000024
-60072  -88.3028244916446852    42.4024369577836708
-01469  -71.693879381052227     42.6576699609424352
-17044  -77.5837611966733931    40.5919274759887259
-42167  -85.6860570482949413    36.7221511262437517
-82654  -116.297033299999995    45.0007260000000002
-95010  -121.955246281778926    36.9774391579820616
-99741  -156.871220970588183    64.7451239656862185
-29628  -82.5704951773563636    34.1003234104531145
-35703  -86.9635497142857048    33.6280164285714278
-85743  -111.154373475283251    32.3383741255982216
-10069  -73.9885691555555383    40.7777615333333188
-80142  -88.4569240000000008    42.1540634999999995
-72702  -94.0305244807692162    35.8578418653846143
-55781  -93.0385235257365082    47.6760033883563921
-33890  -81.7175504232239689    27.4613746809946484
-54120  -88.500471374152994     45.7592982705711719
-27030  -80.6243244549749392    36.491302688490606
-55988  -91.7740097692307586    44.0272998846153669
-56657  -93.6049239128619632    47.5722601127506053
-62988  -89.2819457475519584    37.2452443601533574
-27531  -77.9656547714285608    35.349812
-20169  -77.6457825343393608    38.8582402076746334
-88045  -108.751262031957296    32.4140006953396167
-57375  -98.4692789394812706    43.5619152396733753
-94070  -122.269995547653096    37.4969737584684282
-76065  -96.9772532884534542    32.4703997360829462
-35004  -86.4960044136450676    33.5982416527351404
-06489  -72.8729015580286728    41.6068461249709216
-19532  -75.7888322999999957    40.5819425000000038
-05254  -73.0689897265745429    43.167499815668215
-29676  -82.9477043968764036    34.8812998719663767
-45171  -83.7938406166725969    38.9896894903126991
-35176  -86.5063949868862778    33.4814092997376846
-53588  -90.0996271737425616    43.1234075704332085
-18433  -75.5781028540636015    41.5601122681450263
-37727  -83.0274542506793836    35.8924978637188943
-92307  -117.194191559527866    34.5425803954431956
-14608  -77.6230498423850435    43.15279058830221
-57648  -100.304161127132602    45.8521320787012243
-74082  -95.8813910595237644    36.4491484761904587
-41633  -84.9797322666666588    36.7415320666666645
-37055  -87.4163956365075592    36.0747583043562443
-48243  -83.0397636923076874    42.3299391538461549
-60171  -87.840875547372292     41.9265307757216519
-43232  -82.8664545980927016    39.922357571563488
-52769  -90.8481209781929948    41.6116094722741252
-36756  -87.2991833259585235    32.694449793264539
-51022  -95.8632856324981049    42.9725174407745314
-85934  -110.245324675512535    34.3076176079614115
-61854  -88.5185766514959482    40.2032533801096363
-30894  -71.2592319687499867    43.5987032187499963
-01038  -72.6120775277916124    42.3836609414121455
-11360  -73.777000928571411     40.7794819999999945
-13131  -76.1004136749164815    43.4170324844270823
-56089  -93.4946900190476526    43.5805558523809538
-44854  -82.8437397879255855    40.9578627358100817
-78209  -98.4553362178502738    29.4884315085641013
-33950  -82.0463985179143691    26.9090779266599434
-52224  -92.3076544937333239    42.1495062343330318
-67449  -96.9130680088330365    38.6734820771069181
-27957  -76.7613656224277037    36.0716353815028654
-83868  -116.196734003787839    47.5442550416666805
-65466  -91.3671707820990235    37.1634757474693913
-37641  -82.6754627000269124    36.2175177382137647
-12376  -74.9144114999999999    41.9449954999999974
-75270  -96.8018173999999902    32.7809797999999972
-94920  -122.471937085005834    37.8891716212683036
-58361  -98.3257839002989584    47.7609370136633942
-49755  -84.7914010631333355    45.6378148352819721
-74945  -94.8110070868421246    35.5754662105263151
-62353  -90.7567478892044051    39.9905019730113693
-76263  -97.4368489324324969    33.4857699189189191
-97761  -121.284325820459145    44.7840299586602271
-90503  -118.356247632130021    33.8408935409380192
-89118  -115.216351821872109    36.0782943457723135
-49799  -84.5799202550475115    45.2603265214511197
-83163  -110.107586909090926    42.5529579090909067
-47401  -86.4884852648215201    39.1198773101373547
-99918  -132.820280847908748    56.0120316806083736
-85636  -110.804498666666674    31.8592887999999981
-16730  -78.4243529729729971    41.8091258783783815
-44749  -84.509135999999998     45.4468930000000029
-24366  -81.1208109240781567    37.2566652863340479
-49625  -85.8791552545051786    44.4374265621246138
-79119  -101.968138775236298    35.1213032573634507
-35121  -86.449374399241222     33.9427575593472852
-16402  -79.4728777200886753    41.9548329575333128
-71741  -92.7783093750000063    33.1297741249999973
-70556  -92.5833966318182178    30.189456365909102
-86328  -109.095436333333339    36.0758801111111111
-71642  -91.8735775675258992    33.3674051845361177
-76903  -100.438991528320699    31.4699063852578682
-66711  -94.6619124021927547    37.6347938390075001
-72846  -93.3417535307776944    35.4732628311284657
-66515  -95.6990776728211472    39.9448646093057533
-36735  -87.4741814444444401    31.8491973333333362
-41201  -82.7310694855434008    38.0601541635094804
-78341  -98.4247180506564376    27.5875753048780012
-87520  -106.566243205863685    36.8335377762906973
-71031  -92.8980700109036945    32.0121600445844265
-24323  -81.2006225552620009    36.8700716904447248
-49406  -86.2022072147886149    42.645931406103287
-56593  -95.3518542499999882    46.8030792500000032
-76430  -99.2834304296351746    32.7400559936707651
-93635  -120.878701557036095    37.0456031919487927
-68379  -95.8913010303030262    40.5011889393939484
-72414  -90.3643190426065104    35.822894761904756
-56660  -94.172654985667819     47.9453706143322549
-77854  -96.6752251538461564    30.1027732307692339
-85502  -110.787118843749951    33.4650708671874995
-63380  -91.1319455047318172    38.8132752492113511
-92113  -117.117299345845737    32.6971363329350311
-77598  -95.1404543852104183    29.5429570062832667
-98374  -122.263988205483145    47.1325744242672329
-53057  -88.2470251885966093    43.8233596535088026
-99340  -119.926291000000006    46.6875879999999981
-37191  -87.5333432084161558    36.4999732311133229
-85741  -111.04046279825009     32.3369546061106234
-03678  -72.1470037142857308    43.845750114285714
-40351  -83.4080831753236396    38.1931587692963532
-44505  -80.6217633423459432    41.1270014443634722
-28670  -80.9243450304609695    36.2080060297879101
-36749  -86.8612736589008705    32.5452567721723085
-99134  -118.341188223042991    47.4736776794682456
-26671  -80.9472151999999738    38.2950074857142937
-43758  -81.9326012857452355    39.6280427203053733
-15034  -79.891254669472076     40.3520550290742364
-95928  -121.779772995244912    39.7364718716174394
-30216  -83.8952221009333385    33.2472857172485377
-80835  -104.084545380857776    39.1939174440032048
-49506  -85.6158243463367228    42.9434075843245253
-16444  -80.1204582222222257    41.8691944444444459
-52644  -91.4050251303006434    41.0355534425597952
-59434  -113.216625940495788    48.443509120661183
-78364  -97.880284346153843     27.4259436538461578
-71721  -93.2175338181818347    33.8862663181818178
-22733  -78.0457438908973558    38.326156765303395
-77867  -96.4673290991378849    31.0521881508620723
-97229  -122.815112772987248    45.5459687589194218
-73761  -98.0441768419865127    36.6784483679458333
-43158  -82.3577833768115966    39.4517943550724581
-15851  -78.8922944392122361    41.1023785623299958
-56671  -95.0382571255195217    47.8701068869493511
-19979  -75.5734939410112503    39.0472649466292197
-52216  -91.046568723902837     41.8955768743075083
-65535  -91.2920010049371342    38.07660670753787
-38049  -89.5527692944188658    35.3992196136971913
-96096  -121.924748897733039    40.6469454512075004
-03057  -71.6780180028428759    42.9005061445684603
-75059  -96.2466326666666561    31.8099529999999966
-32182  -81.9593086666666863    29.4893631466666797
-47437  -86.6700327076923571    38.7223836384615296
-74428  -95.6430890336538653    35.5378976153846011
-98569  -124.154691249018128    46.9773248288851022
-25607  -81.7913153240418609    37.7878817404181362
-48015  -83.024471465035063     42.4783590293706723
-07021  -74.2784413094688318    40.8273629491916878
-88835  -105.986165454545471    33.0815291818181834
-95129  -122.001306306923624    37.3058293035608344
-50591  -94.0591153255813595    42.6660512034883084
-92602  -117.773708611095813    33.7309630895357913
-55977  -92.640502248061992     43.5591578361018534
-13748  -75.818636542715879     42.0483302396582346
-45880  -84.7359010111224222    41.0715722278840403
-07054  -74.4108567283136892    40.8599287401652091
-13052  -75.8739910177710328    42.7372243283133102
-35007  -86.8111456206659824    33.2269200526512876
-59638  -112.02250869321297     46.3942829741076324
-78986  -96.8165549999999939    29.6332020000000007
-52227  -91.5667600311687835    41.8974508435064479
-04473  -68.6982189127581222    44.8860046500939731
-85637  -110.666497400096773    31.7014520096641235
-89402  -120.003277241071416    39.2294088303571513
-85355  -112.441591509596861    33.5699451011125234
-34143  -81.4512711111111116    26.4455290222222175
-12817  -73.8261770312784762    43.6431327798359447
-52543  -92.5186235140624689    41.211661139062457
-62682  -89.6126184578377405    40.293922378378312
-37419  -85.3787694779450845    35.0404518301637324
-98661  -122.624808940696752    45.6433721836834962
-12913  -74.043915503159127     44.4131974554854381
-43783  -82.2883549676521682    39.8033370016943664
-28019  -81.7909117945205537    35.2796889315068682
-80442  -105.824316361745872    39.9596938314293695
-85395  -112.390092919083557    33.4826297947085791
-97856  -119.144752672831402    44.7733316825187657
-37841  -84.5235245329315035    36.5002177087206121
-79901  -106.477582247895668    31.7592982267173127
-11563  -73.6739201152737735    40.6574398202776663
-29226  -80.3451363636363709    32.7206800000000015
-78843  -100.792446347826086    29.3561851521739108
-76883  -99.9051854166666544    30.3438733333333346
-31793  -83.5691013756868983    31.4596901310816257
-74063  -96.1652138687329909    36.1419357453504375
-22602  -78.2431466039466272    39.1588862168547536
-99181  -117.746807789740615    48.1404404668828505
-37316  -84.7338868571428492    34.9891148571428587
-98403  -122.459836342785181    47.2653589269061243
-58002  -97.3749631071428468    46.9778396071428688
-46390  -86.8768973057977547    41.4211819010463529
-98509  -122.815848400000007    47.1032960000000003
-78112  -98.3832300469826038    29.2068961902890472
-50651  -92.1957423708116863    42.3213462725432308
-41572  -82.6330312171455574    37.3278992896950754
-72023  -92.0522140753058267    34.9722305379920826
-46814  -85.3077193238489571    41.0487855094156728
-08088  -74.7207321429996085    39.8669597167392524
-82050  -104.19928603426294     41.4083439633465602
-96123  -120.206564794871767    40.9453800769230725
-28590  -77.4014900491237796    35.5348963285916
-45831  -84.2568582535292734    41.111569583647352
-32968  -80.4386748322119303    27.5977474419714639
-58487  -99.5873620731984914    46.8236172143444733
-47879  -87.3842527640348976    39.1862921643275683
-24731  -81.144873944625445     37.4030226807817883
-33579  -82.3025650670977171    27.8009336176286439
-77024  -95.5207108798371252    29.7700149749491096
-85377  -111.907086814041307    33.8220406146417716
-44718  -81.4510915178317418    40.8529100205522369
-61790  -88.9980304999999987    40.5102654999999956
-43907  -81.0368833295707702    40.2620153233464819
-15756  -79.2969698028169176    40.5701009577464617
-44055  -82.1343928090614099    41.4349654259397226
-24544  -79.0993649411765034    37.078873999999999
-66024  -94.8787891552918836    39.756768096933726
-47906  -86.9487669280791238    40.4642977349295592
-72670  -93.4042190072992327    35.8381268905109422
-48383  -83.5369293190372417    42.6593200735722391
-62054  -90.3465638543800083    39.1899316905574366
-91766  -117.757507178464849    34.0421855769821491
-68661  -97.0699724123223859    41.4608106479350269
-44057  -81.0596657957369757    41.796250995331782
-57720  -103.644121240434131    45.5802224945745493
-68613  -93.3887863333333286    37.6526362222222275
-64672  -93.2468177817746096    40.5507478393285794
-18299  -75.7229152499999998    40.8922368750000018
-23098  -84.3307704999999999    33.8964969999999965
-99032  -118.026232555869655    47.3285801485148596
-13607  -75.9211755227472054    44.3253809313210922
-64128  -94.5346820694531544    39.065381254871177
-30558  -83.5641471110992171    34.2665012528046873
-16784  -77.9579658000000109    41.9819021999999933
-10039  -73.9369100183149754    40.8291071868132391
-45168  -83.7641027110718852    38.8520163200202973
-32131  -81.5878370878212564    29.6784576607821364
-35457  -87.7796656025917912    33.3060405075593948
-37383  -85.9238295483871042    35.2054518709677424
-52657  -91.5233745779816559    40.758943692660516
-16651  -78.3700709620666771    40.8268842808101979
-61925  -88.8343175679156758    39.7343675573770057
-70001  -90.1674903073825504    29.9845184014966648
-20612  -76.6805878417508637    38.5104908787878841
-77475  -96.6649585929078086    29.5011724283687826
-81630  -108.350497240491151    39.4062976519414505
-48413  -83.0012420299786697    43.8023137922912085
-79490  -101.939675272727257    33.5737007272727368
-70725  -90.9478730550523551    30.135954150522668
-66529  -94.4266305000000017    30.0322659999999999
-36855  -85.3060051843723102    33.0396571241147754
-32069  -82.7966281333333427    30.365131266666662
-29932  -81.3154799880596926    32.8261711383084531
-60020  -88.1752851572977647    42.3971312489748513
-96795  -157.714586204865469    21.3601938335467345
-58424  -99.1096066972681342    46.8810917901639144
-45745  -81.3202558368841579    39.6181611728955332
-59758  -111.202292438131138    44.7597452312710828
-85387  -112.434551137704105    33.7032454666832422
-61938  -88.3747826905192682    39.4708509969750594
-37474  -86.6178819999999945    31.4538618333333346
-49888  -85.642106499999997     43.4775269999999949
-24104  -79.5001547299005864    37.1268061358338244
-62830  -88.9705399402192683    38.4416852556969317
-91202  -118.267024023199497    34.1687380076312621
-33907  -81.8723647023023773    26.5622452239870768
-38944  -90.3252897053332759    33.7577388520000099
-89011  -114.972808612749262    36.0835641726537304
-24857  -81.6614082072727143    37.6718149599999563
-68102  -95.9364821517102939    41.2607152362173437
-87107  -106.645315773778648    35.1358942058933437
-50475  -93.2157882234582331    42.8812000346836655
-42320  -86.8659111615788646    37.3769023253711907
-76579  -97.2829481056520109    31.2003910637822486
-25904  -81.271666831460692     37.9169163295880338
-45827  -84.2939302943754569    41.0004414300486744
-12775  -74.5838526333126595    41.616360615910537
-29175  -80.6081769748642785    34.4433271644021985
-64444  -94.6366125131745264    39.4865085094102781
-94112  -122.441591014559435    37.7208005810567215
-74931  -94.8078783987179605    35.7188472070512262
-77303  -95.3958668650521702    30.3777397710939496
-85551  -109.627800004566282    32.8145804292237386
-62961  -89.2558856629213437    37.3400720898876415
-32508  -87.2842087082801896    30.3529890904458455
-32059  -83.2802467022899151    30.4082351385919978
-20688  -76.4609970677339561    38.336599230295576
-66409  -95.576940406199256     38.9276019967654889
-80403  -105.300273711426527    39.8341873033330742
-31829  -84.7349031305682558    32.5644588033794449
-67445  -97.8144681464668508    39.3817270026987529
-34660  -82.7762960000000021    28.0669279047619007
-78653  -97.5339978250463275    30.346730804810381
-27959  -75.6190430557789313    35.9390025229283907
-13156  -76.6699694513828263    43.335465026984906
-01037  -72.2003886115385995    42.3647080884615477
-65058  -92.1500542469250661    38.2666132705770963
-28648  -81.8483311250000014    36.1237917500000023
-84120  -112.001308191477477    40.6889995004694995
-18370  -75.3312018740269025    41.090544333333348
-49319  -85.5391046719362009    43.2232836542175392
-04290  -70.4379668667246079    44.4859003581960195
-58853  -103.86696937313431     48.0728940895522427
-01907  -70.9075736714599287    42.4740358358992083
-19351  -75.9685317714285731    39.9425106285714264
-29150  -80.3646994190281134    33.9062502964858226
-71832  -94.3352818916973632    34.0464392973229764
-61828  -88.6540202222222149    40.581163333333329
-41810  -82.6863454289044029    37.1845433496503546
-39042  -89.9531559076262113    32.2483467952160723
-15413  -79.8728435000000019    39.9856707039473704
-28362  -79.120758540983644     34.3639865245901746
-25160  -81.2855952174688241    38.2887359803921399
-72394  -90.6308205018698914    35.0444279839192063
-44253  -82.0338859971154477    41.1676845519230454
-58713  -100.630394978021982    48.4870204945054866
-99360  -118.646972092807658    46.0553974335433267
-74842  -96.6256238931297844    34.6081687938931211
-69037  -101.432359433497552    40.1480172709359593
-58561  -99.7086752085277652    46.4931278079675394
-77476  -95.9873795072203109    29.6796648393501918
-99150  -118.600464714801404    48.8012311028881314
-47974  -87.4772357842920201    40.0500012699115047
-10523  -73.8147220113585547    41.0573235074966263
-92860  -117.553291575591558    33.9231346081289189
-56441  -93.9801264505676812    46.550363208017977
-48651  -84.6475227612206851    44.2890361057001201
-35976  -86.3297449972333908    34.3460991142314853
-18323  -75.2708232780142339    41.1934419148935973
-92582  -116.996700718659469    33.7882040231133871
-27868  -77.9046828189654832    36.0381549396551932
-33770  -82.8023324254415911    27.9152053691632283
-17124  -76.8858730000000037    40.2671915000000027
-93546  -118.92366944298746     37.6233328758995285
-05654  -72.484308861086447     44.1444034327693799
-59746  -113.107359522439737    45.4115091449942838
-95237  -121.145040296640289    38.1606661622586927
-67436  -97.7165601810122268    39.2996046461026367
-73505  -98.4618483430098479    34.612931194603469
-56578  -95.6770892881539083    46.9220714683030238
-93454  -120.335263629985988    34.9729202426071879
-07726  -74.3341407728867267    40.2890705365239228
-85902  -109.884494016260135    34.3251617560975717
-72579  -91.4641571682789447    35.8119211224675098
-56367  -94.1887961598622212    45.7425091108276263
-44260  -81.3516177991450604    41.0334785835854419
-05459  -73.0359431373133106    44.9525887348711208
-95979  -122.486824521962717    39.28680674266122
-04705  -68.360276454545442     44.4668544545454552
-76179  -97.4141022014373164    32.8775354470641901
-93921  -121.921849529411801    36.5581157124183065
-26215  -80.3997765685484467    38.7107487399193388
-00739  -66.1608875273632435    18.1714415754560648
-68734  -98.7977560729926694    42.4766020510948934
-12834  -73.4970626187855203    43.0979694368378787
-74855  -96.8997150043666551    35.497358222707426
-85745  -111.042896790557833    32.2518819902788181
-55701  -103.236879871794883    44.0874126923076943
-97840  -116.847058352272754    44.994061247727295
-79601  -99.6893703151546475    32.5179812406556508
-30093  -84.1816377862758998    33.9053912490970504
-77498  -95.6481851062808488    29.6471511925733715
-13425  -75.4819112278808575    42.9580935463962419
-28435  -78.1060048301723526    34.4399210720375351
-16233  -79.2766571885739069    41.3649388044778448
-28624  -81.4187950731412684    36.1177707829737642
-03054  -71.5183311577002456    42.8602108014044774
-47845  -87.2343695416666662    39.1934193611111041
-90221  -118.203406373440146    33.8940652045803574
-72002  -92.5084044205109421    34.6548869587153803
-31785  -84.342186562500018     31.7179953750000045
-58643  -103.926498938931303    46.284835450381685
-92624  -117.663945899999931    33.4590489739130348
-62638  -90.0808757907680757    39.609422015890992
-42529  -73.5751060000000052    42.2690482500000044
-43140  -83.4237155842306777    39.8957048803523762
-01084  -72.8844852143885049    42.3944775525180617
-18976  -75.1398587631080801    40.2462351679704682
-97329  -122.45824644797689     44.3998669104046257
-56448  -94.0553305260756787    46.7615726768309301
-77626  -93.8764534166666778    30.198342416666673
-25051  -81.7087480374331676    38.1639132352941175
-49631  -85.2613415013668572    43.894512176540232
-42713  -85.889944314699278     37.3758386379114711
-75424  -96.3910887887731604    33.3054903085807013
-85930  -109.846911702549633    34.0638408725212329
-52073  -90.812365260106489     42.6212001648935939
-92407  -117.276279956579017    34.2304087288824022
-50136  -92.2767711894976657    41.4680526609588824
-40951  -83.7867096666666669    37.1113399629629654
-71426  -93.4645566593886059    31.4935986681222673
-18078  -75.6151258698349977    40.6759447593743246
-72091  -92.5389887199999919    34.6227920400000002
-54536  -90.3271495429403615    46.3466311819504924
-08004  -74.8758859598234636    39.7650300726893917
-05351  -72.7355918693932182    42.9374516609497974
-03833  -70.9808809984008207    42.9736680063305343
-88427  -103.644734082267561    34.7687401841432546
-28244  -80.8437422500000054    35.2249169999999978
-78777  -97.8583600000000047    29.913391125000004
-17268  -77.5727981967645803    39.7625003052034529
-77553  -94.985588666666672     29.1746552222222206
-22117  -80.8484970000000089    35.5366604999999964
-12763  -74.5184703657760537    41.6837176615776386
-41604  -82.6632483188404734    37.3941129797101723
-37921  -83.9940025220150801    35.9770028282690646
-53228  -88.0418212753811105    42.9681284959093261
-57047  -97.2374764459131171    43.5037075737793231
-24633  -81.5589464444444445    37.2054196666666712
-17829  -77.1565142469135594    40.9006241358024596
-33407  -80.0801664282319337    26.7540780707891379
-54214  -87.7165281452991366    44.1987143846153785
-01259  -73.2521867447183439    42.0774369427816239
-93263  -119.275098590045502    35.4956711390648891
-41622  -82.8154717297297367    37.5079864702702253
-26722  -78.6263787456588688    39.5074824678243104
-72460  -91.1699352577606845    36.3446257801183492
-16631  -78.3407804444444338    40.2745842638888973
-23662  -76.3803854183639288    37.1331741048695676
-96061  -121.488605390835616    40.3156685444743843
-93523  -117.910101090506302    34.9555086189873165
-27941  -75.8175896636690823    36.0971184910071869
-35477  -88.2565867929291699    32.9361642196970124
-40324  -84.5609753108859223    38.2411745562654417
-41256  -82.8733527190145054    37.8254545561408335
-02790  -71.0843397692963634    41.6033214263880708
-95122  -121.834924702047118    37.3290754244272023
-08094  -74.9781001119885957    39.6691137711081865
-68755  -99.0997713003952612    42.934653803688974
-59260  -106.098988322952778    48.7969079354094362
-16123  -80.1992375854516411    40.8220116617070303
-60914  -87.8756403469090515    41.1706277995227907
-04263  -70.1285268465204297    44.2878090152527761
-37715  -83.9528008707657563    36.5668147128129419
-06330  -72.0731163791553797    41.6339613489128908
-22731  -78.2604963596490819    38.3407362105263161
-36263  -85.3603248126539569    33.4666527962202025
-80807  -102.234932518536056    39.3492164761231535
-87725  -105.346467888888881    35.9034610000000001
-13754  -75.4387261848857378    42.0813241514939591
-73551  -98.8871176785713999    34.3535154642857137
-70663  -93.3583593890033541    30.2493205099037255
-30514  -84.0029692522522708    34.8657009189189111
-08330  -74.7204194072050996    39.4610992123214714
-78733  -97.8699088080157225    30.3285064266483175
-27573  -78.9798757922616659    36.3997327758002172
-61411  -90.4909622567791558    40.3906133613724876
-72113  -92.4075482940047266    34.8597548184130943
-57775  -102.090387129591704    44.0704026836734926
-35573  -87.5190106967741741    33.9297014000000061
-94111  -122.400848991408935    37.7976837164948236
-30303  -84.3913164948644692    33.7555666984126646
-13035  -75.8398055224037506    42.9371881925409014
-75231  -96.7453733970155412    32.8773626741683458
-02921  -71.509104773181619     41.7623088028120222
-47550  -86.9223906172130256    38.0689936672130642
-13036  -76.164545880085484     43.3060675600545295
-30525  -83.4116290523540016    34.8837828111794011
-76319  -98.598589000000004     33.7561894999999978
-78203  -98.4604897337951996    29.4148947021276292
-70352  -90.9439847570093178    29.6963688411215081
-55405  -93.3033236194316231    44.9701839338281317
-63869  -89.5339054798852061    36.6067867435345349
-92082  -117.037935874406017    33.2528522073046702
-58040  -97.7570720779327331    46.2035033662837975
-17866  -76.5620450866393298    40.788181214702405
-62431  -88.9835900875621064    39.2182706079601715
-02171  -71.0228929600516494    42.2845764188145168
-49777  -83.4958212550668151    45.3065643298836207
-05447  -72.6870276538461297    44.9291721105769568
-54562  -89.1075608769936736    45.809018927394483
-79842  -103.235656599236577    30.1702166717557212
-24630  -81.5035112360437637    37.1670379668572366
-14805  -76.7320422105973137    42.3613121407357553
-04716  -68.0122096666666636    46.9819191666666711
-27917  -75.9783929615384466    36.3773764736842082
-61283  -89.7873648651911367    41.5845262018779209
-87248  -97.2757707500000066    32.9553484999999995
-70394  -90.6099610804428153    29.7107816584927953
-13166  -76.5579611636442507    43.0637100518973739
-04605  -68.4245059112667633    44.5886335359216446
-27712  -78.9234857410764903    36.0895193380924368
-10542  -73.7624038888888833    41.3727792222222206
-74137  -95.9273699519306859    36.0178228819561284
-75928  -93.6924315581679252    30.6910712247328945
-85548  -109.687571428571445    32.7193434285714275
-61272  -90.9926247729568303    41.2323254232443617
-26714  -78.638629143934125     39.1811501514735951
-60103  -88.1924178199438131    41.9786624326062778
-98802  -120.256578595723695    47.4416652144936251
-48340  -83.2904907689582643    42.6699887683682419
-69360  -102.477617304326955    42.7263655624999927
-83465  -113.655611164722927    44.8227493338192104
-42321  -87.05238495772943      37.1764485084540581
-15363  -80.2001087837837758    40.251249864864846
-92025  -117.056785199068599    33.0957985584195029
-60712  -87.7356964897577569    42.0056910753474853
-42022  -88.9456809862069093    37.1454348275862145
-20693  -77.092147865421893     38.4791440159470639
-26302  -80.3104910851063778    39.2714859787234118
-99649  -157.555202897810261    57.5532578394160481
-34789  -82.7487895000000009    28.1677560000000007
-57201  -97.1154163525511223    44.9159188652792665
-25161  -81.3228775761317166    38.0849563127571855
-97426  -123.028908080620312    43.9095053874721089
-14621  -77.6035309103269242    43.18454967110209
-99381  -118.12898457142856     46.5190637142857142
-54827  -91.0957390078124973    46.8423749062499368
-01256  -73.0170730445603908    42.5851833841425744
-98087  -122.266269555613547    47.8635776782058215
-91356  -118.548388340797288    34.1565972781741394
-49650  -85.8746875356216464    44.7331352951209098
-72855  -93.7183145015797123    35.2832241439178063
-21050  -76.3907645688370991    39.5764133237541031
-97481  -123.549498750000041    43.1081913862359229
-66953  -97.1238517827828218    39.6873896636636232
-25810  -81.3493107894736198    37.5891841999999983
-54563  -90.9714437272727423    45.4716539090908967
-01854  -71.3403574065801251    42.6495871884646718
-51230  -96.3128480816485535    43.3480391625194272
-59323  -106.627959116406061    45.8971144161512115
-27986  -76.9324100622317246    36.3887702214592679
-77662  -94.0123093732537995    30.161044506535994
-67642  -99.8446685721604297    39.3646366259606921
-17251  -77.6421375913043619    40.1970261478260795
-66853  -96.1696742490931058    37.99138148972186
-63543  -92.024800472222239     40.3647404999999964
-97007  -122.851750913140293    45.4588528871870423
-58227  -97.8961280211165246    48.5332304875127392
-71368  -91.6900706257004856    31.840428774219383
-93260  -118.657854907922001    35.8139403749998948
-29431  -79.8989230345410135    33.290753647181802
-04462  -68.7304780859492865    45.6709229887893073
-65624  -93.5296891835664894    36.7452009587144062
-31646  -82.1825928372093131    30.4843680465116336
-50557  -94.0319985325543968    42.3601238526711725
-41520  -82.5567017266187122    37.2837176798561316
-42746  -85.7424195370107469    37.2158452780607334
-94913  -122.53213199999999     38.0479684999999961
-66206  -94.6196140708125455    38.9595372597689362
-85305  -112.251372003576805    33.5326238536513443
-15920  -79.0501724951456879    40.4617869600863003
-62218  -89.4687240261207393    38.5324893914578084
-29403  -79.9475933704425472    32.7957209939985219
-49446  -86.3914912107970849    43.5515158693230191
-83311  -113.578242804804788    42.4092347207207254
-42553  -84.6736228225669407    37.1751686951480309
-23389  -75.8350910431035032    37.6561771235632108
-70582  -91.8109576957949827    30.1514838134778245
-98382  -123.093409166234011    48.0753159737056563
-78215  -98.4824618676469896    29.4375321565743988
-48707  -83.687464047619045     44.3399317142857115
-68357  -96.5515461136964745    40.3102990289728425
-38449  -86.8217713320989333    35.0375835256172934
-16603  -78.4075705000000056    40.5012724999999989
-77807  -96.4570946956604018    30.6805220501741367
-11788  -73.205654697597339     40.8203642797018134
-27616  -78.5414274625212983    35.866925868026172
-16421  -79.9383993274980185    42.1688089183078176
-43794  -80.8876814999999993    40.1807684999999992
-56276  -96.3258577752212943    45.2486964017699052
-82431  -108.375683206702789    44.8250897841921159
-63015  -90.7528578737181135    38.3952635262820792
-75240  -96.7851812461737211    32.9339269672618471
-67510  -98.2148296952802156    37.988305903834771
-37315  -85.061959192857131     35.0531534142857311
-24439  -79.4866429605397826    37.9972211652239906
-20851  -77.1229293786604586    39.0765159171995933
-77430  -95.6469443249494446    29.302373446371881
-46034  -86.0311403544228881    40.126114875075551
-98816  -120.082660070754287    47.868065260207274
-43237  -82.5162496666666669    27.3410016666666671
-43302  -83.1234457246278282    40.5842389118394351
-72530  -91.9617421578454213    35.616836450673226
-95762  -121.066235149394331    38.6885770134817193
-17842  -77.0295896677011882    40.8068427323724592
-28109  -80.2793032972972895    35.4799034662162143
-91708  -117.63466153632136     33.9629897550232016
-08558  -74.7014238899870264    40.4128204283048831
-70546  -92.6625727965056569    30.2469291193045926
-37367  -85.2086605866929006    35.6320590312980769
-61844  -87.8592127851992046    40.1418696417457141
-49973  -84.8061320000000052    44.8057335000000023
-15682  -79.6629561940298458    40.683851126865676
-46721  -84.8687282618451064    41.4203162460914101
-68138  -96.1353782990579901    41.175672025656425
-54957  -88.6136276363636313    44.2137438181818112
-77461  -95.821881217922126     29.3997059615749912
-55925  -91.4349755633232633    43.9104653004052992
-29116  -80.9333021764705762    33.5098179705882373
-91340  -118.436926580715536    34.2868907182903797
-33844  -81.613278829519416     28.09638569815219
-13738  -76.1239645625000065    42.5676015000000021
-58762  -100.927350502857308    48.680452082285683
-63653  -90.5901696727272139    37.8634085350649414
-38322  -89.1657657499999914    36.2055098333333376
-47868  -86.8906710939164668    39.4097604559466959
-63434  -91.9529911618704858    39.9012402733813047
-10987  -74.2107918594409881    41.2016435133794374
-28305  -78.9065197496820048    35.0534398937659759
-06795  -73.1242202887661534    41.6092196122935647
-13616  -75.8531311213591692    44.0266636407766185
-79258  -101.291670651162704    34.2222564767441852
-80479  -106.8484236089745      40.0450800032050864
-15120  -79.9045672958126545    40.3943765081043864
-17550  -76.5831361724137594    40.0737660394088593
-12077  -73.7953905995165371    42.594472687080362
-33132  -80.1890885943128069    25.7852759364928694
-59468  -111.682125150543484    47.7305545247735665
-68329  -96.1539608571428488    40.5235608816631085
-00650  -66.5620937050690884    18.3609257004608146
-45390  -84.7740231507656148    40.2177490341390964
-25879  -81.1151802625820295    37.9767702472647741
-49839  -86.0629997391304045    46.5424000000000007
-15553  -78.7756229062499926    39.9850391406249983
-98670  -121.130078345478978    45.8591395870445595
-32391  -84.6876226666666696    30.5902382500000023
-85051  -112.13497381043976     33.5595313594337483
-32219  -81.7726658805798508    30.4139422179015106
-95697  -121.812767500000021    38.7359700282258146
-88055  -108.754181287036928    32.7272987777777828
-52168  -91.9531323048780109    43.2038802682926999
-57328  -98.4383375018573901    43.4347849747287924
-87358  -108.412600499999996    34.8871809999999982
-33711  -82.6888613202855538    27.7480896191669792
-02888  -71.4085859317402338    41.7487464342049748
-69155  -101.373683504500889    41.1486147101557549
-64864  -94.4424645333333501    36.9954344666666657
-08722  -74.1955593626290977    39.9314755032478885
-11934  -72.7800510799145428    40.8048564320513023
-35739  -86.8108837215190619    34.9715522667271088
-56170  -96.150598906595917     44.1724829198759608
-61054  -89.4422133642978849    42.0508458715723705
-85140  -111.542636883357901    33.2345120973054335
-13751  -74.8871271966102654    42.4567019084745425
-97389  -123.10265479901534     44.5360175443151007
-31307  -81.3966890529876679    32.1750221352875059
-39832  -85.031384333333321     31.1929450000000017
-72520  -91.7214195037460911    36.3961696275419939
-49436  -86.476991113202871     43.6782754788551557
-54113  -88.3063915048378618    44.2632512424586935
-06511  -72.9301257393826461    41.3186399135350086
-21644  -75.8714290586318754    39.1101796807817621
-68924  -99.1226347534303045    40.4977475340909692
-80124  -104.895220820381724    39.5390440953424402
-31645  -83.2122586950469554    31.0600395058205194
-49002  -85.5633565201758017    42.2000958848371681
-67354  -95.4085267088123317    37.2174038754788512
-59211  -104.387285051282149    48.7047273812709491
-00723  -66.0492781296295561    17.9908606560846707
-80543  -104.855739655733203    40.3354357775242534
-74321  -95.0258996666666604    36.5221646666666686
-45307  -83.7234927295597515    39.5798824905660567
-22401  -77.4801712306183674    38.2973280309125954
-87525  -105.514302906934304    36.5663742208029348
-42134  -86.5622897903501922    36.7247275196458816
-47371  -84.9638854584228653    40.4139400363619075
-65446  -91.2741371925796159    37.843674551236667
-03101  -71.464559223961956     42.9895107113683252
-97020  -122.838352283636254    45.2220789563636245
-12106  -73.7054110193579675    42.3858980949008028
-44065  -81.2373871038446396    41.4656005402298575
-26651  -80.8504912516427083    38.293755903683639
-55910  -91.9555963251129356    44.1226204188954938
-00709  -67.1239236497695799    18.1797570414746374
-34740  -81.6561377142857197    28.5470064999999984
-13495  -75.2761483038922137    43.1116098428143957
-83702  -116.199415491281584    43.6400133958533161
-52235  -91.5340347898734592    41.5554875721519039
-45404  -84.1619137306580001    39.7877573050355622
-89048  -116.00551797535023     36.1793908438376022
-27704  -78.8617640512127167    36.0373250015518494
-19730  -75.6571637567568018    39.4578244324324388
-21902  -76.0726207321428518    39.5533108571428542
-68050  -96.8245681009314865    41.315083370341668
-74527  -96.4219130000000035    34.6025584999999936
-82083  -105.944556066046545    41.7653081395349233
-29927  -81.0460782852647128    32.255490669728367
-49232  -84.6543455983416635    41.7323435601989132
-13410  -74.6028715714285795    42.9330479642857341
-75441  -95.6556648701298826    33.4335778051948083
-31064  -83.7280605824250728    33.3380522666667147
-56756  -95.5170047145382597    48.8461728201501444
-95367  -120.94332160404123     37.7292535042096517
-95554  -123.801023443701197    40.2737094328317156
-12042  -73.9102193932267255    42.3928339021636518
-30504  -83.8839181568696404    34.2687423226321286
-94931  -122.710229116530257    38.3256102111131227
-08234  -74.6110763441963769    39.3872520028311399
-20910  -77.03366152725593      39.0018374119185864
-60456  -87.7319838581688316    41.7311755816875944
-97882  -119.317682277869849    45.9127038805821144
-68719  -98.5789513457143443    42.9865277428571346
-51243  -95.903665136640484     43.4456525748477986
-66092  -95.0948894323384906    38.6937158737247273
-29422  -89.1090997142857049    31.965176428571425
-45337  -84.421803852482995     39.9848282434273798
-48827  -84.6613210332569963    42.5063206930285205
-59531  -110.783392092979128    48.6436172998102165
-56432  -93.5486781337579743    46.3490944076432925
-95511  -123.615440735254296    40.1656164613559525
-15380  -80.4675483626428445    39.8734230094386319
-16993  -75.5041586333333328    38.7509652666666682
-36523  -88.1693776716480642    30.3880834790369363
-92027  -117.030662992441307    33.1383479589000203
-93720  -119.758254114581035    36.8619932776156034
-62517  -89.3928367689530035    39.6029347689530695
-59737  -113.469415904761917    45.404328904761897
-56361  -95.3644536784558312    46.1316942933425054
-65064  -92.481245765531952     38.4031129974468541
-71037  -93.5465780977867354    32.5527356497396525
-30097  -84.145250067858413     34.0275127084731039
-02721  -71.1543479935932908    41.6834282790653674
-48602  -83.9735499431429417    43.4237388841028249
-88100  -103.264792499999999    34.9084344999999985
-15463  -79.8882751456953741    39.9693316688741547
-54445  -91.5702630000000113    46.2863992500000094
-57052  -97.6926032617586344    43.2714810552146787
-21733  -77.7569209761676206    39.5466742697807945
-90007  -118.284428886456269    34.0281188530612084
-82937  -110.299941064478247    41.3331899361078925
-25614  -82.0248542321428573    37.8400756339285564
-25618  -81.8936563333333396    38.5413837999999984
-37341  -85.0903036326298405    35.1848861494106373
-50149  -94.0668372506667652    41.1447108657778102
-13745  -75.8717410000000143    42.1738676666666592
-87022  -106.729781530785615    34.885628061571154
-18851  -76.1794470935903547    41.9270243953488659
-62458  -88.8494744647618262    39.0256719155556056
-81411  -108.91255943063058     38.3120598378378645
-12787  -74.8323105409357368    41.8014074122807031
-15106  -80.0973016046916371    40.4051729424632668
-18201  -75.9741427649728536    40.9563472142279537
-84096  -112.028948211028876    40.5018781724813905
-64477  -94.4577929649678367    39.561563785739601
-78376  -98.4678380486202229    27.3982900367937141
-24089  -79.96339512835074      36.708930491594657
-20151  -77.4326870777293124    38.8847545369399867
-55917  -93.0603407786834254    43.8728798457681251
-94022  -122.13505492140969     37.3759957325965573
-39859  -84.8045899569721797    31.0112308119521707
-36040  -86.6629504071763535    32.1874984543681393
-95462  -123.017013864432528    38.4725995872583155
-98333  -122.628667326140189    47.2489081953017802
-37304  -85.1414976000000081    35.3475396000000046
-32833  -81.0908379488190434    28.5094530640520105
-16646  -78.7146857108896398    40.677229016515426
-06051  -72.7702874962843254    41.6655451136774531
-87647  -108.316918000000001    36.7478454444444438
-78017  -99.2369575718621917    28.6988528931464302
-85353  -112.270594113641948    33.4215715756783993
-25090  -81.2141998837209655    38.1556955348837192
-99037  -117.199057199060661    47.6371834682572128
-01906  -71.0138659240619745    42.4652566828206233
-14487  -77.6550234393859427    42.8101668878771733
-97347  -123.630475001674085    45.0710314074321445
-50008  -93.3804038965786276    40.6933917410575816
-75112  -96.5836073333333189    32.1597216666666625
-04734  -67.8679556687937549    46.4861015909381265
-65109  -92.2602266067141414    38.5689543393287835
-94933  -122.691720146464732    38.0164746805555467
-61814  -87.5848694108937167    40.2328997895294123
-28775  -83.3161895763453657    35.021912148812504
-06102  -72.6675459285714282    41.7936979285714258
-72314  -90.6530740000000037    35.3611905000000064
-48912  -84.5230585423379495    42.7382347886492653
-37096  -87.875851268531548     35.6074585640973353
-77006  -95.3901152821006093    29.7423752653804812
-13783  -75.2553411368733691    41.964751843756126
-75548  -95.7652771818181918    33.3415729090908997
-78705  -97.7393098090196872    30.2937081050980268
-73739  -98.1429146783919748    36.5294267386934735
-44110  -81.572258613585177     41.5639915377677767
-22625  -78.31041079147424      39.3543453366415008
-53149  -88.3276329616439853    42.8632568356165251
-91723  -117.886604284203329    34.0850509619182418
-54427  -89.2706061885427147    44.8142597675195091
-63118  -90.2282307275500415    38.5940100498552141
-87580  -105.59411512899905     36.5486315005160094
-66210  -94.70412544267991      38.9226260402980699
-38641  -90.1600085897386094    34.8937041139719781
-24562  -78.6261398440858841    37.7073111189515728
-37846  -84.4624745224464135    35.6733784590573677
-57031  -97.16170312163338      42.876831539530798
-61275  -90.3159628160149168    41.5935148293957369
-67226  -97.2371524358455588    37.7484027484485409
-99148  -117.606534830510839    48.0913570778604154
-62960  -88.7146550130900948    37.2080692088107199
-32127  -80.9866256841670946    29.1094008031463218
-83323  -113.544224144278658    42.5290132201492312
-57718  -103.331114158764223    44.1699830387123313
-37604  -82.3861455118893531    36.3128456629998766
-72024  -91.7426349937883003    34.7768399627271663
-38936  -90.4290612727272816    34.0291584545454526
-12734  -74.750426960629909     41.741888746214336
-16601  -78.3906760562121008    40.5293898533274231
-46064  -85.7557366908449694    39.9875389615763055
-41240  -82.7946947721987812    37.8201907121198033
-70563  -91.7787683075643628    30.0209248110780855
-65690  -91.4342606000000018    36.5988722000000024
-17739  -77.4351406876543535    41.3826243753086302
-98537  -123.657620884397474    46.8705074159573911
-29134  -80.4056961666666581    33.8809529999999981
-57339  -99.4416988843095737    44.0815618669558873
-19464  -75.6237335304588214    40.257549622793789
-81057  -102.869126768055537    38.1259207569444527
-60169  -88.1032953138833932    42.0484490345070157
-65462  -91.8711141229611172    37.6888517813676103
-47978  -87.1318551677279061    40.9684889727193422
-59462  -109.882929981210864    47.1010930647182064
-53542  -89.1603144999999842    42.6385718749999967
-47060  -84.8747525762850472    39.2871774133547262
-48154  -83.3777999280308393    42.3970222666719394
-01258  -73.44655967461145      42.1263065761658169
-29483  -80.2140472412570205    33.0234469350941566
-79884  -104.010221799999997    30.3162526000000021
-21231  -76.5924798770587216    39.2887451198774755
-68923  -99.4752263098591811    40.3685144084507002
-87777  -105.553213     35.4713640000000012
-62203  -90.0749898581304507    38.5987660144831821
-50601  -93.0652446643827034    42.554219391907381
-03811  -71.1589516562407454    42.8378646863157115
-55811  -92.1787582352375381    46.8145120048568302
-68855  -99.33230285568753      41.1877126808149256
-45382  -84.6053237927712303    39.908029610441794
-57481  -98.6461513025718233    45.6768484828543535
-56386  -93.5375904219210952    46.11095818385391
-66537  -95.721426104366472     38.7608394302448929
-70127  -89.9778739311938409    30.0316447741308252
-52758  -90.4440061037036998    41.7455247037036727
-20155  -77.6165457717347493    38.8029485849523539
-32693  -82.8156983419077761    29.6126117806600035
-39368  -89.4710352499999999    31.9370384999999999
-33031  -80.4940161896613091    25.5253628388591416
-04979  -69.8162030953946839    44.9456235580143257
-44243  -81.3403125999999759    41.1485070263158121
-43156  -82.7776814061433583    39.5552576552900774
-58540  -101.594080786528096    47.6539861529071089
-50249  -93.9092364546862655    42.2831190919154878
-59762  -113.147393309639057    45.8377924229753546
-80477  -106.797965774193614    40.3716133369175481
-46985  -86.5685601776514204    40.9551849029359403
-29733  -81.0315084666666792    34.9395017777777781
-05470  -72.6197226153846174    44.8978428076922995
-65231  -91.9025315550040744    39.0150160969427304
-28669  -80.9944323260185826    36.2301051609196278
-25193  -81.5613496854839184    38.0138447903225796
-35451  -86.176052999999996     34.2633900000000011
-32905  -80.6064477361377527    28.0278278534599004
-48062  -82.7755741163103664    42.8297171008926583
-19113  -75.2783132982456209    39.8683078771929758
-08721  -74.1618379447495784    39.9031749774147215
-77515  -95.4558816224918161    29.1693328498456204
-31091  -83.7147908553540248    32.2414697163212409
-67152  -97.3984836776387795    37.2694281312634033
-65233  -92.7331234974266465    38.9334864163303891
-03836  -71.0773659520294387    43.81477973408672
-23663  -76.3155538729452303    37.0344115480635665
-98355  -122.176445590043201    46.7297618512598945
-76201  -97.1421112588115392    33.2205224543033353
-36421  -86.4626428756337049    31.3447497809752242
-61491  -89.7402495632911297    41.0685859696202584
-37691  -81.757102056441866     36.3683837735176283
-43554  -84.5569247795993704    41.6661640910746272
-58999  -96.9054516666666785    46.8516983333333314
-85191  -111.449163614379103    32.9851070000000064
-17845  -77.1960881385483191    40.8830098338710073
-87206  -107.026324736842099    35.064248736842103
-44046  -81.0763697170542343    41.5366883372093127
-04235  -70.1993057307692396    44.3530275769230755
-91390  -118.405951986129338    34.5033360276711889
-08071  -75.129851668645216     39.7305749046787753
-16923  -77.8689197945066525    41.9406042942999733
-72528  -92.1130967647058867    36.2543384705882374
-96785  -155.254012969696987    19.4371773030302997
-67676  -99.387927833333336     39.1313795000000013
-76511  -97.42530367899559      30.8025543417927459
-19938  -75.6800019143994831    39.2611306070006876
-04418  -68.5498812857782696    45.0617911725831348
-77642  -93.9287020771098184    29.9232983906649821
-44714  -81.3604052136070948    40.8343254654685524
-73937  -102.79056281818184     36.5815463181818217
-35760  -86.3845876524749343    34.5471912396664962
-25069  -81.4438192000000072    38.2166530000000009
-29148  -80.3298291595785514    33.5609889767709717
-57476  -98.5733559853555619    44.7386428188283674
-83402  -112.089551999551958    43.4998010839946261
-10166  -73.9761364999999955    40.7544074999999992
-78872  -99.8474254168067006    28.9473890252100894
-57456  -98.9745597826665886    45.735585713490444
-53578  -89.7338733379685465    43.2922216505441284
-93930  -121.117032880891031    36.1976835169057765
-16937  -77.7107557132353293    41.9623297990195638
-21207  -76.721230896548775     39.3258004220929323
-84531  -109.865167477611934    37.1446212089552219
-79380  -102.327500371323524    33.7417428051470552
-66438  -96.4948866321394263    39.8539212846079209
-13685  -76.1034925462574705    43.9413576345885488
-40456  -84.3240752616057563    37.3739915876113855
-49518  -85.7315550000000144    42.8655417000000014
-41635  -82.6329806087842655    37.4942702231530447
-23457  -76.0386847518698801    36.6198111085331348
-98626  -122.861132537206203    46.13657587659592
-77957  -96.6776976660845264    28.9951438476646643
-31796  -83.8802596114430941    31.7926856491268381
-24983  -80.5319195826963465    37.5829474128773384
-59248  -106.354463894308964    48.1377365776637589
-45219  -84.5127869033596255    39.127054796764817
-32823  -81.2840664999999944    28.4876070000000006
-38704  -91.0018811999999997    33.0071671999999978
-02746  -70.9360771677174426    41.6599456633039011
-95576  -158.499639166666697    59.0428996666666706
-15025  -79.9207006486711151    40.2980946952580865
-83256  -112.278154200000003    43.229804333333341
-43615  -83.6711446256441178    41.653038574413408
-32443  -85.1137307762494117    30.8654561505377814
-21345  -75.7116443333333393    38.2927309999999963
-43762  -81.7425246162528367    40.0269746563275746
-33402  -80.056879500000008     26.7376564999999999
-04547  -69.3316135102782169    43.9927763897622341
-05343  -72.7992205767421297    43.0989015566022289
-70780  -91.1674527698112911    30.2946802169811313
-62009  -89.8020736377035576    39.0929001272304149
-54724  -91.4782818450280644    45.1090483530918362
-71071  -93.437721746044204     32.9226595966278452
-18702  -75.8400637817036056    41.2373660278467398
-19518  -75.7364650852651948    40.2778185327044014
-60071  -88.2993418217255055    42.4634308549896744
-01226  -73.1445219289651192    42.4706197448459335
-25603  -81.4589519642856885    38.134225464285727
-64025  -95.0656370000000095    38.9402187499999997
-56631  -93.8027092142857271    47.5481172142857105
-97756  -121.213015758889242    44.2788589955369574
-73760  -98.1780475548780629    36.3863355609756027
-65746  -92.7851414973402342    37.1565782859572948
-72017  -91.4038124650889046    34.8601634355029688
-62284  -89.3171500821717359    38.8822058327219864
-27817  -77.0747776722917877    35.4754214427732038
-77564  -94.6639712554244426    30.1959185668062666
-95073  -121.95102596282797     37.016244202281392
-38112  -89.9738575168845642    35.1478544943153395
-05653  -72.4973253273965952    44.7087331739295379
-59070  -109.171784265553356    45.3660199707092815
-44704  -81.3558484476026536    40.7994377832327331
-95525  -123.881482288570282    40.9208472719093805
-82524  -108.488181072727286    42.9952734545454547
-48045  -82.8316708957626417    42.5846753569210748
-80814  -105.184105885949037    38.9415602557994589
-13441  -75.4114854108527055    43.2179822041343442
-19173  -75.5630416666666633    39.866505999999994
-38645  -90.4862510401661808    34.2414578102493081
-33693  -88.131260999999995     30.6390154999999993
-27320  -79.6716971189768941    36.3447823717807736
-22084  -78.1159432000000038    37.9251661999999996
-01005  -72.1139717230144157    42.416355380521729
-43773  -81.2931757163013486    39.9851539023252442
-47988  -87.147348666666673     39.9865103333333352
-77036  -95.5361287375885411    29.7011452344857396
-30165  -85.2397008691498712    34.2908352095930269
-79556  -100.387237247262519    32.4556318971510152
-50062  -93.2507900009378972    41.2313096128048713
-04434  -69.1316094949289237    44.7886946653143738
-93702  -119.754052935994295    36.7420486567077376
-19545  -75.6296156338027998    40.3416678028169002
-95970  -122.028947244080172    39.4213017795992755
-06183  -72.6729086666666717    41.7640346666666673
-87517  -105.796071838283822    36.3625862838284277
-28451  -78.0624966023058136    34.2382958795811234
-27055  -80.6415602059286272    36.1176526595020277
-66078  -95.2659944032260313    38.483534991756386
-37794  -87.7072126249999968    33.9031713749999994
-07849  -74.6154955272698288    40.96270566726011
-21703  -77.4565206145797305    39.3870335014957291
-29472  -80.3283606377393653    33.063158387762634
-23066  -76.2845721072492751    37.5021298838133177
-95450  -123.213766891255176    38.5115864091595625
-28330  -79.8237436684782296    34.9134243695652202
-51448  -95.304829905660327     42.1995933459119215
-62952  -89.3080332595773143    37.4193750830043399
-50515  -94.8626844837364445    43.0214589499582161
-76886  -100.223869363636382    31.4918154090909148
-50031  -94.1424281666666616    42.037592277777776
-15054  -80.4059070525292015    40.3637609747081925
-46982  -85.9081392015276464    41.0554307787014565
-95720  -120.242684126044153    38.7817267479118684
-66222  -89.8477320000000077    38.4895092499999976
-52134  -92.3958267620416933    43.4756721624730673
-18977  -74.8840800462806016    40.2912203789676155
-10528  -73.720340099724126     40.9769301082434936
-56240  -96.4544619749129026    45.5572139804878944
-47907  -86.9161596893204376    40.4246342621359034
-92161  -117.175263428571412    32.9654998571428592
-27539  -78.7782812674669515    35.6779895059499168
-02457  -71.2752328421052397    42.2984496842105315
-17870  -76.878176180694922     40.8188022541750186
-03815  -71.1040287800000073    43.2377405199999956
-88203  -104.530880111307553    33.3582032461701203
-37708  -83.3314562241434658    36.3196708549279066
-08317  -74.8321885333333654    39.405205384999995
-66701  -94.7257437095327646    37.8290100308531194
-19490  -75.3498844166666828    40.1883632500000019
-65897  -93.2762269000000117    37.1992554999999996
-49663  -85.4092266483226155    44.4141505292628906
-87566  -106.063668839643682    36.0757276867112395
-38746  -90.9186921589506767    33.9437319074074324
-90638  -118.008012969613318    33.9053656285496245
-62965  -88.517337725806442     37.7656469516129079
-01542  -71.9087285983707574    42.2048541810776356
-70112  -90.0764489616566522    29.957715467024574
-25524  -82.1299237392032495    38.0109905011717331
-27812  -77.3694262816286198    35.7995062768619192
-24592  -78.9488982319492436    36.6855238942037403
-57044  -97.1140962083333079    42.8425579583333374
-43782  -82.2177612539228733    39.6221076462198027
-10309  -74.2153174584607029    40.5317083331874741
-33707  -82.7183343637710493    27.7561485043657861
-47944  -87.326508976449432     40.6072733713571594
-23350  -75.8777878751815393    37.5169219185048348
-03254  -71.3847355880032239    43.7067830541963929
-42408  -87.6888061510659611    37.1903921169036806
-31642  -82.8693331297531159    31.3179110535231615
-65048  -92.025858536340678     38.3477990726817737
-99754  -157.702237812499988    64.8833155625000018
-18128  -75.9100820000000027    40.8221851666666637
-68346  -96.0361524856187714    40.6621303070233893
-84766  -112.302337406015127    38.5816793859649181
-04949  -69.3322248132544701    44.3749933042663756
-57566  -101.062582134502875    43.3055370175438554
-30905  -82.1248579031705503    33.4128561465295704
-63011  -90.5589250639375933    38.6036121277552979
-83124  -110.298428961805598    41.7739616458333174
-04475  -68.5995066117380787    45.1720490699774757
-65666  -92.3574372095238516    36.5796759428571292
-56022  -94.8323721813471252    44.051845341968928
-21704  -77.361796639170251     39.3536043696504407
-71409  -92.6788406993157849    31.3011018895290327
-01985  -70.9749064832978576    42.7946601656003978
-47339  -85.0994683330508224    39.9705223288135514
-17099  -77.5763876733067832    40.6445252709163825
-19373  -75.5345421368665484    39.9047556599077495
-04343  -69.892597181818175     44.3212465454545566
-99821  -134.704479249999991    58.4214426499999959
-75025  -96.743090824698811     33.089443545152001
-46903  -86.1291520000000048    40.4909290000000013
-05261  -73.2168984426269844    42.7831869072353612
-50312  -93.6763099136022959    41.5845771585832509
-88342  -106.090731406666649    32.3784552466666824
-90061  -118.273960321553545    33.9200464576626572
-54405  -90.2923168765356223    44.9569512745699882
-49883  -86.0872140785288167    46.418333202783316
-18930  -75.2133169733059788    40.5361707200546419
-98047  -122.248043540263637    47.2639775395314814
-58642  -102.834460220385651    47.2060136143250517
-24944  -79.8171822413792427    38.4106047984084853
-50560  -94.1100288984245879    42.9638192980929148
-28455  -78.6457928491315101    34.109881730068949
-85373  -112.287367002813241    33.6593577433735476
-15026  -80.3654438714421673    40.5065819249278434
-57462  -98.7012679999999989    45.3646740000000008
-56117  -95.68409599460918      43.531058175202169
-51250  -96.1940015672194733    43.078784489068255
-95969  -121.606108726610643    39.7563841672251002
-96249  -120.470900478260873    38.170967304347819
-18623  -76.1443019378483825    41.6727177677290399
-12921  -73.4279668881117971    44.8839130778554676
-23395  -75.4560660679903776    37.9615176594464643
-41560  -82.5642999922879426    37.3931920912596283
-02203  -71.0602169999999944    42.3615084999999993
-48179  -83.2665558769530634    42.0532483450521042
-94952  -122.690328887371109    38.2442648270732803
-62357  -90.8524421506024709    39.6956494939759281
-42712  -86.1613930701074366    37.5626877227709102
-34615  -82.7980069999999984    27.9700710000000008
-23068  -76.3371249804877863    37.4943760975609877
-71676  -91.5894476891294289    33.0549212661090905
-33767  -82.824638988895515     27.9815484839275612
-56723  -96.8201669867549697    47.8054418498895757
-13673  -75.7134231660060948    44.1675194345888116
-93218  -119.040166152019097    35.894800554631793
-55793  -93.2735386411201972    47.1259865549005355
-70467  -89.8209319999999991    30.9015395000000019
-43549  -84.5187574786749991    41.3788345211082316
-33867  -81.1906758511236148    27.7680707359550496
-68105  -95.964144867249928     41.2410628354887976
-32056  -82.6522955882352761    30.1686547647058738
-05031  -72.6118425581896787    43.7216984741379164
-17246  -77.6787941891891478    40.0603192094594647
-91080  -118.124905499999997    34.108035000000001
-77478  -95.6094606559112208    29.617685250529437
-09021  -122.449501695652174    40.0073155652173895
-72679  -92.7875048460177112    35.7238074353982427
-26217  -80.449240064516033     38.5829891673387166
-96116  -120.486288595679028    41.2454738719135392
-87561  -105.431142250000022    35.3250732499999955
-57611  -87.0652905000000032    37.9886049999999997
-08240  -74.5538291249999929    39.4945721785714383
-25624  -82.0149532724458084    37.8122325634674823
-83651  -116.599817852016173    43.5865305438189949
-60534  -87.8227006033613549    41.8125011085713965
-64501  -94.8430314798408034    39.7674112422433268
-44201  -81.1942976447754887    41.0234614722603013
-50506  -103.995715777777775    39.0967151111111093
-35766  -86.2517590906040823    34.8745490713087349
-21664  -75.9476152707774617    38.6070507855227945
-21625  -76.0007426558739354    38.8712616744986619
-92314  -116.909498677837874    34.2585071045084888
-82801  -106.964874036118772    44.7811884112307652
-53595  -90.1417976153845899    42.9783876153846194
-68106  -96.0004732500879356    41.24049090632694
-48411  -83.5349595789473796    42.9368197105263221
-44022  -81.3959229532699595    41.4439986236848981
-67563  -99.5780747988463872    37.8364427267483521
-72034  -92.4726265742823728    35.069750429318745
-40526  -84.5010248749999988    38.0291518750000037
-56260  -95.4771761994950481    44.924402470779242
-56434  -94.9378345161765367    46.3545497544117708
-79013  -102.000578861167014    36.048075861167014
-46574  -86.4915832455695295    41.4708552653580114
-17585  -76.3444980769230881    39.8797806153846111
-39163  -89.8690678141592088    32.6198331681416107
-71728  -93.1023692045454823    34.0017696136363696
-30740  -85.0568149917942975    34.765566527269236
-11596  -73.6419662664893195    40.759877297872265
-72763  -93.8500936363636384    36.3776778863636494
-68529  -96.7825603749999885    40.8799466249999952
-44039  -82.016018863878017     41.3897840544078903
-33503  -82.2712099148936034    27.7625038936170299
-32087  -82.2700350323777343    30.3639696752577848
-78333  -98.0823200000000099    27.6646722499999989
-04454  -67.530441512690345     45.545503040609141
-39461  -88.7370002213833828    31.1923338924528473
-39766  -88.3151720139780423    33.5885871605512989
-48650  -83.9879633662641112    43.8507062929250822
-43212  -83.0449127111808707    39.9878255101948383
-51442  -95.3619902191930606    42.0299761082802377
-90834  -118.199271500000009    33.7676255000000012
-73753  -97.8698329098360347    36.5458344036885308
-30619  -83.2343564846305526    33.8731948940484671
-22207  -77.1250951087042722    38.9057107805694926
-56371  -94.6373374959999438    45.4326015200000128
-06231  -72.3640897167123001    41.6292331104223479
-98441  -117.960690999999997    45.4641799999999989
-13401  -75.7099128437500184    43.2670335000000037
-20748  -76.9386975324682965    38.8159842066355623
-02839  -71.645361989532006     41.9459407549260774
-63441  -91.3088215959058829    39.4720368356702522
-30738  -85.478614512549413     34.7989208302591422
-78219  -98.3970837471120348    29.4506329260260955
-16059  -79.9351561710329435    40.7000954319337396
-83814  -116.795982398765815    47.6410791276192853
-70360  -90.7554436888507183    29.5931794713369563
-53783  -89.2851959999999991    43.1609673749999985
-72756  -94.0277002208570991    36.3345544590420459
-03743  -72.3348847690598262    43.3661308983732141
-62890  -88.7493509312280366    37.890489700631548
-49424  -86.1358670700862348    42.8204842208987912
-86505  -109.679320563218283    35.6356029770114944
-65710  -93.4226292292788116    37.4838710575887575
-80234  -105.00843613018003     39.9085414601478377
-04786  -68.1486712375526764    46.784359986919732
-82225  -104.412240395621637    42.8322700745558862
-23932  -78.6884569999999997    38.0686643333333379
-49455  -86.3870938618239848    43.6043774656533927
-08201  -74.5071782674782099    39.4391331222756492
-41564  -82.3628491283688078    37.6031707641842985
-21771  -77.1538282182500268    39.3868675810286746
-72173  -92.2108870855212928    35.0890647751652551
-72769  -94.4992782647835412    36.0319210153219913
-08020  -75.2238370144509219    39.7951938907514844
-15531  -79.0483951883367268    40.1800630742338782
-15628  -79.3777409311334736    40.1059393758967104
-39205  -90.1838013636363627    32.2907177272727282
-69163  -100.591162942717787    41.5059664351687942
-28054  -81.1521844123133036    35.2578397509234733
-84716  -111.428394133945091    37.9001791871559988
-66946  -96.9876590575079831    39.9687576453674041
-32254  -81.7285681757014828    30.337459253745628
-05358  -72.7407883255519891    42.7737488039048372
-67941  -98.435561000000007     39.8254890000000046
-39094  -89.6718531292649459    32.5711253716111315
-15361  -80.2573713120567334    40.3283692836879126
-36603  -88.0545052697016501    30.6894248075079759
-29065  -81.2832836481209       34.2976687096145412
-78404  -97.4001931540512516    27.768750337612623
-59760  -111.658412442952994    45.7905169932885983
-33857  -81.1891192922172849    27.3946539500734296
-67140  -97.3764393494950298    37.0664808565655974
-55303  -93.4189844873208699    45.2645590798238118
-44651  -80.9495630677807867    40.6199155427207828
-03832  -71.0501151874503307    43.9011259086576615
-43468  -83.3400689462365705    41.6029123655913935
-57311  -97.7709666977174692    43.6557451492906168
-07717  -74.0175436443940526    40.1915358878822175
-22308  -77.060071138315692     38.730193286264992
-18933  -75.0442329072580492    40.4003787197580593
-12566  -74.3328082314790777    41.6228134005217854
-19435  -75.5545477536945782    40.3253924827586232
-39743  -88.6201543767804623    33.3191587928356725
-15227  -79.9732783529044298    40.3762067195233172
-84033  -111.49897661526478     41.0182554382139557
-20185  -77.8135766500000017    38.9769555000000025
-63648  -90.6792616024798122    37.8275724442013654
-42220  -87.1795849066783859    36.8938524200685549
-63937  -90.7541437758126079    36.9343837528680368
-82631  -105.259654999999981    43.1535489999999982
-60196  -88.0994721818182001    42.0680677954545601
-92374  -117.159034284705868    34.0648100747480669
-45378  -84.4873375924170205    39.9038505023696501
-57975  -94.3413343571428555    31.9527210000000004
-91325  -118.518049157149434    34.2365921651437972
-43609  -83.5772547978696849    41.6307924042608377
-63561  -92.5734980172154565    40.4150858772455308
-52631  -91.6743670949556275    40.8031344925816057
-47833  -86.9709196660049884    39.3631692189436322
-23117  -77.8671991830883314    37.9956935310273067
-57475  -99.6355312248802676    45.2445744258373281
-25430  -77.9391876411638265    39.3474611101096414
-64861  -94.1536167784911839    36.6964622410914458
-20707  -76.8767723948120647    39.0986893810137417
-32937  -80.5983941012796663    28.1707939605429445
-15376  -80.4895407131433842    40.0975011168759039
-72521  -91.5303552040566899    35.9277628549202532
-45176  -84.0267859202554348    39.0782224938868126
-35654  -87.6428716934010907    34.5065572730118646
-30170  -85.1725792519297755    33.4287604680702302
-70458  -89.7768460715643641    30.2703993306613484
-14111  -78.9081316207885095    42.5859206028674464
-33133  -80.243754675431461     25.7307810325170934
-89449  -119.907828558766624    38.975350358381526
-21774  -77.2883912467716101    39.4091154322010055
-92616  -117.834964000000014    33.6479916666666625
-46372  -87.3131075862068826    41.1437829310344867
-85491  -110.023882720000003    33.7865629599999977
-85376  -114.214551666666651    33.6755133333333347
-07039  -74.3196008600128124    40.789767461889447
-28544  -77.3212085952861798    34.7260044973063273
-58029  -97.3850743548765792    47.1225431938894843
-11768  -73.3260635971908954    40.9064483453996388
-67213  -97.3620863273638548    37.6681152651047029
-18940  -74.9418918520900661    40.2558509438727867
-30017  -83.96384199233907      33.890503710010087
-68133  -96.00208992936264      41.1362127915379432
-77870  -96.4268512941176539    31.077287882352941
-32148  -81.8816436064923749    29.6335235054535104
-02359  -70.8027839580495879    42.0650772713621777
-37657  -82.5606036703388497    36.0108736977759349
-49628  -86.2284659465020695    44.6188902880658347
-59441  -109.043278480359902    46.8884793091455236
-57077  -96.7614465115755564    43.3137901970637174
-64086  -94.3170899601725807    38.924717829910314
-75425  -95.5831924444444496    33.8643402222222178
-70570  -92.0989874329249432    30.5307490936792263
-97266  -122.559655052753044    45.4818423030420078
-79742  -102.853033280777581    31.3396991382289301
-21773  -77.5544779415942571    39.5332669161404411
-63939  -90.7072951714285978    36.669516238095234
-47989  -87.05344142896638      39.8859676147042421
-42519  -84.5514409788274861    36.9483114736989222
-93530  -117.863445689075604    36.4811228235294109
-62628  -90.4035316780684042    39.7738248705566662
-26667  -80.9913401836734721    38.2784912653061156
-00671  -65.8671061111110987    18.1849858333333394
-27701  -78.8973915565825905    35.9982067286774736
-43914  -80.9412100752688417    39.7703260107527043
-76021  -97.1328699309790977    32.8529440796477914
-42265  -86.99514081266733      36.7365192901427946
-21619  -76.2834565621220264    38.955341070996603
-11231  -74.002699422599477     40.6788949986936146
-90804  -118.149307654219157    33.7829306028725114
-29856  -81.5148807544868674    33.4870020859021551
-33537  -82.1494143877551153    28.4765003367346985
-60458  -87.8344196536413335    41.7474738401420282
-88062  -108.281570664233541    32.8210385821167563
-16239  -79.1292469878843576    41.4669463353525245
-92317  -117.210637935709073    34.257862553451254
-51450  -95.0317800137970607    42.3056530059988418
-50470  -93.5554437334422175    42.742009656582141
-44839  -82.5577399840964858    41.3863391663440225
-60082  -87.7977374999999967    42.0915150000000011
-45833  -84.3415365291837986    40.8386807503443094
-01747  -71.5325517980769945    42.1230470337995158
-94503  -122.25110991267988     38.1733731031119277
-93647  -119.23205622767621     36.5607949528285161
-95553  -123.85270124606177     40.2300787054189684
-60962  -88.1795226942508066    40.6242525749129513
-28412  -77.9111304447591522    34.1381292182374594
-70038  -89.3965581743420756    29.3241176085526405
-39033  -90.6099142000000057    32.3247056000000015
-44089  -82.3683862979333412    41.4015789181399043
-49011  -85.2281839150685556    42.101733819178051
-63620  -90.6084335022300849    37.3896980156111525
-50551  -94.7529403623187818    42.4836438786231909
-93227  -119.427620033333326    36.2692175333333395
-21084  -76.4662964820422246    39.6135638179578393
-63933  -90.0899750263938017    36.5192797495875965
-56262  -95.8659965413021382    45.113039706997057
-49336  -85.4385234621369989    43.5017750282675948
-15344  -80.0569419854166568    39.9238066640625036
-53939  -89.1300416335403725    43.6919988695652108
-02564  -69.9772413050168609    41.2609838040132999
-13643  -75.7206006153846118    44.0318876666666625
-70011  -90.1643564999999967    29.9933240000000012
-22027  -77.2217088953487831    38.8947021127906964
-34105  -81.7645883430099616    26.1936585478812383
-45055  -84.5156722666666553    39.4518231333333418
-45612  -83.2670885648000763    39.2191151874503774
-44345  -82.8313224999999989    41.6382195000000053
-08873  -74.5167882516404205    40.5043267471251767
-82635  -106.245107457516269    43.4107853039215712
-28468  -78.5159501667041866    33.8996468237564699
-08505  -74.7232778613784916    40.1242380933966274
-48225  -82.9261556603773897    42.4393486231654862
-52729  -90.7400710488599032    41.8002575141151951
-24726  -81.3457676636418512    37.5188106594071229
-33805  -81.9481766261255444    28.0801188137591602
-45115  -83.7016285342465665    38.8195874657534148
-68637  -98.6691025613540234    41.7789360592383971
-32976  -80.5153035559138885    27.876446923835065
-46724  -83.9267004999999955    43.4670650000000052
-68406  -97.3906516815533934    40.4985160699028981
-56138  -96.3694444801015635    43.5290439788315311
-38764  -90.8736576225680892    33.7885215680933868
-54628  -91.0337394137171287    43.3695394222741299
-54417  -89.6535299999999893    45.0275350833333334
-29661  -82.526001786367388     35.0512971846039392
-71448  -92.479987466666671     31.2333953333333376
-76890  -98.7791387011632196    31.6934669129562998
-25136  -81.3294936964736479    38.1795888198993012
-54421  -90.3122882435724819    44.909861526386976
-71852  -93.848603153937816     33.9861806628881524
-95865  -121.400474000000003    38.4667969999999997
-32512  -87.3011570000000034    30.3970720000000014
-18943  -75.0356804772727344    40.3178390568181726
-76018  -97.1039756153734004    32.6606824796831603
-18415  -75.116687879099544     41.7454594203935088
-04359  -69.7606096247085361    44.1794435314685074
-75947  -93.946850166666664     31.4482476666666706
-67878  -101.760193497447077    37.9709954916119727
-90078  -85.2177829999999972    37.8625490000000013
-36541  -88.3316253485071883    30.508169329327405
-38631  -90.6329103432836689    34.3669413507462806
-06010  -72.9331002224089815    41.682584298212852
-52225  -92.3330623818565783    42.0051803987341614
-95067  -121.840084343750007    37.0680648749999975
-34465  -82.4818918216406303    28.9286683788449679
-77063  -95.5210494953733331    29.7347047660278001
-63144  -90.3500359992027171    38.6203479933563756
-52632  -91.4070519075035293    40.4177585333142204
-43985  -81.1280847115384489    40.1607941346153936
-53039  -88.7027199936467809    43.4034401829732914
-13074  -76.5492620698539099    43.3089696414156577
-83432  -107.958273833333337    44.2681031666666698
-62948  -89.0282985898013663    37.8002164608173459
-37884  -84.2305735797101391    35.5652590289855084
-94979  -122.705857199999997    38.0214636000000041
-32736  -81.531712160130752     28.8936735918733838
-59465  -110.745757531081196    46.9683706459459742
-52164  -91.8910483521672177    42.8500494187306273
-01863  -71.3899493925802915    42.6316338928571241
-39325  -88.8682915019994368    32.5443988866284286
-44429  -80.9840987569734665    41.09933377022314
-07111  -74.2322463598736704    40.7248393432020777
-91720  -117.650570829268318    33.8858245365853605
-23112  -77.6532968787717834    37.4260298875176147
-55051  -93.2953674537547357    45.9048914798445935
-62266  -89.6687137051281979    38.4883167948718139
-50129  -94.3798587673019682    42.0151145123665728
-19312  -75.4504895777749596    40.0369736461498462
-49268  -83.9309908761468364    41.8702682779816868
-24184  -79.7715875411733606    37.0843182376219787
-83316  -114.785026803886183    42.6008580754801685
-15324  -80.0550918020133651    40.0996526157717668
-44427  -80.9558667045544524    40.7193500291649428
-62555  -89.2108014666667799    39.4689421016260837
-14720  -79.280988403703688     42.1084545962962622
-13415  -75.2010308641304874    42.5990678478260847
-35542  -87.6828956628873755    33.7235134903453968
-93610  -120.278421536493539    37.0949470590175565
-61282  -90.4140044153108988    41.5000787732057077
-06798  -73.2081071410791679    41.5564135986833563
-62535  -88.9648052980103188    39.924444175844485
-28384  -78.9594278870696797    34.8045722010024861
-23408  -75.870515142857144     37.4364842714285757
-95627  -122.02732801567268     38.7145110821124163
-72462  -90.7554520379310219    36.3622705344827821
-13504  -75.1846820000000093    43.0930244999999985
-30656  -83.7275258819841923    33.8616285157422965
-97730  -121.655410774152784    44.4490460790464255
-03279  -71.8871219195757902    43.9388960578877246
-42266  -87.3583684845259825    36.7740276194675175
-35411  -78.2175311666666744    39.6355690000000038
-66835  -96.2465634545454947    38.5218774872408218
-68534  -101.579421999999994    37.1413474000000008
-95955  -122.263163586870206    39.2782477155172458
-47280  -85.9502607681818063    39.2951079340909359
-84710  -112.509844248603471    37.4466205055865942
-63437  -92.2478638462330451    39.7310140928792208
-07245  -73.2037206666666691    42.1867319999999992
-30757  -85.435582060967505     34.947893770377803
-76680  -96.7926325440180051    31.1865449435665987
-67521  -99.7363991344827241    38.630126689655178
-72001  -92.8784943273246597    35.0638327182163678
-54710  -82.0571608000000055    39.173308200000001
-54471  -89.4579746145833354    44.9184290156250086
-47638  -87.7692285031695718    38.0747654079239766
-92155  -117.160147750000007    32.6776116666666638
-11902  -72.6783754000000073    40.9452975999999964
-97019  -122.249758789053587    45.517153362501837
-33982  -81.941833457231624     26.9616943220698531
-50230  -93.4392249204129968    42.3030528046890737
-67743  -101.213274157205248    39.4120971353711766
-76641  -96.7819420990098394    32.0340144620461302
-19550  -76.242413257731954     40.4567850000000035
-29913  -81.0903204062500151    32.9214150781249941
-84643  -111.706066750356712    39.1141228059914638
-65368  -93.627435333333338     38.5235835000000009
-29564  -79.8697693471366676    33.4928359801762241
-05602  -72.5978933349164635    44.2718740895484544
-38030  -89.5467984973638949    36.0235681234622334
-79703  -102.129411496334953    31.9836419678681736
-38950  -90.2128040959064776    33.7502278853801059
-66019  -95.0020156249999985    38.9431807500000033
-82609  -106.270351193029725    42.8394930774814924
-33436  -80.108190788065798     26.5313892054293134
-68359  -97.288566408409082     40.6445541805034054
-47561  -87.4263573652379904    38.8584156539440073
-50370  -84.4696312500000062    38.3932564166666666
-12438  -74.617158269703566     42.2196768452638693
-48366  -83.1429633023255974    42.8212503720930258
-27045  -80.2924398120759122    36.2341788764714607
-72824  -93.4175456839233078    35.1411367371681962
-71657  -91.7927848999999867    33.6291173999999984
-58722  -101.459902492204705    48.2559329109131525
-73045  -97.1661712348009843    35.491333448054931
-42354  -86.9250469423077448    37.3803805750000038
-88133  -103.47134603645199     34.4772320249088509
-71222  -92.6296184544344214    32.8211857592013843
-90606  -118.066154123487337    33.977025457651493
-24093  -80.8594979566295251    37.3710145390334603
-01938  -70.8530700376637981    42.6833095818729333
-38754  -90.6096790787068898    33.251933133520744
-16579  -79.6110753333333179    40.173250666666668
-55385  -94.5044445497231891    44.7573048425217692
-08853  -74.742345315174191     40.5327732176616351
-99167  -118.11928591271662     48.4146432126253288
-22539  -76.279126809041145     37.8583818315637117
-06022  -72.9311493306559981    41.8465553842034836
-32697  -82.4378109202625637    29.9466600684802913
-02178  -71.1762534166666683    42.3968935833333305
-69029  -100.256634613052015    40.7424696354647153
-17938  -76.5065287568963299    40.656875560554667
-35761  -86.4447693025954749    34.8977409769006215
-15655  -79.1961900836014792    40.2076438220793335
-41615  -82.6819027390000088    37.5434063629999883
-37336  -84.9261763922166608    35.3062233973225332
-90447  -90.1612255263157891    30.3791905263157886
-49696  -85.521916808321464     44.6792263139023333
-22701  -78.011317608687321     38.4616423619558958
-40357  -84.1081866707317118    38.145164939024383
-17270  -77.7977184285714287    39.8501078571428593
-21077  -76.699621938095234     39.1576893238095209
-58496  -99.3184718277523473    47.1725727996416353
-47715  -87.4784999757116708    37.9745617729607403
-58788  -100.476830483870842    48.3571931977725598
-97205  -122.696879396904961    45.5204299390077836
-36866  -85.7168414005421084    32.5555395634987903
-62639  -90.506868124125873     40.0489127727272347
-99124  -118.937558767025067    48.0039909641577083
-03847  -71.1203258382352601    44.071165882352922
-99720  -152.692257185185269    66.5543950679012255
-88422  -103.977578481250049    36.2699073062499764
-57701  -103.215952840908074    44.0812561952546105
-63986  -91.0073747499999968    37.0052725000000038
-87556  -105.587406708386098    36.7371726434892452
-27541  -79.0817523298102003    36.2669534096692843
-57520  -100.138102042234635    44.8371412363003756
-56729  -96.59068890082645      48.6616537603306085
-35673  -87.1346770395724377    34.5717655829064512
-28627  -81.0028727306874288    36.450397285127714
-11581  -73.7135550697040429    40.6515626611899492
-68501  -96.7194959999999924    40.8159755000000004
-66109  -94.8179220237920646    39.1530564176701006
-71653  -91.2907275432867635    33.3362630368671589
-36060  -85.8131556923077028    31.6087049230769281
-37830  -84.2586448423839727    36.0134345433516856
-36530  -87.5590777898716084    30.3929967215922616
-42332  -87.0888617739937843    37.2517819256966121
-46802  -85.1557887811984955    41.0710263174414791
-73572  -98.3014640296183444    34.3682066119478336
-24852  -81.4415427647058721    37.4169312058823493
-58011  -97.5498398677368215    46.937514968654412
-60531  -88.7762662705350607    41.6124668402656042
-70761  -91.0222667809033084    30.9734944405705335
-13904  -75.8361857138384607    42.1235604037558815
-22740  -78.2308937805643012    38.6104896884795963
-78371  -98.9741664697986607    27.4868931073825458
-46045  -86.1493835909090961    40.2892192500000164
-38357  -88.4213044401267467    35.0508475952551635
-60539  -88.3315025939849932    41.8243174887217961
-46348  -86.8687133912423946    41.3111016810253631
-27962  -76.7434307604359986    35.8379445744366549
-99566  -143.290280063829812    61.439207468085101
-33138  -80.1850893881901499    25.8536482615647074
-10590  -73.5381911738659113    41.253247386609047
-33538  -82.1426972285618717    28.7988578858839226
-27906  -76.3114513333333235    36.3628968333333304
-50847  -94.9843001526717075    41.1426651526717464
-49048  -85.5213723252670377    42.2946893749067101
-74640  -97.654595041015682     36.5613970546875322
-07737  -74.0595079557422196    40.4117753899160093
-07977  -74.6554396761657841    40.7085561036269254
-82190  -110.643828764610475    44.7928255535714115
-29316  -81.9756930329081825    35.0392134104174033
-65046  -92.4774902208547758    38.7703189228095866
-29395  -81.7419151818181575    34.8568798181818238
-01373  -72.617118780013314     42.4725440327215864
-87025  -106.650941809101781    35.8427385864486965
-37811  -83.2172898844967222    36.3499808037876235
-40486  -83.8775058638064053    37.3623290364238869
-04258  -70.3372583104787026    44.1443760769729394
-24075  -96.9795344999999998    36.1301750000000013
-17731  -76.5812480102765107    41.4101497233201599
-54412  -90.0008184896444163    44.6476744208676308
-69346  -103.808392362170537    42.6939351073534255
-29322  -82.1364141982400753    35.1175511775193954
-12417  -73.9936994692307479    41.9058234384615389
-75478  -95.3499823150337988    33.1529684113174952
-27248  -79.7101650822566796    35.779465857142867
-08361  -74.9771863163310144    39.4601883668835995
-91344  -118.504321571721192    34.283851855039515
-13805  -90.6761412957746984    43.0798284788732531
-39635  -90.450163948936094     31.1856927617021249
-73755  -98.5572261945205099    36.1294720602739758
-76651  -96.8755178073360241    32.1824381541311411
-75436  -95.2493319268375842    33.6889255722288183
-89024  -114.108647202127656    36.7528095531914758
-87118  -106.599266183908043    35.0564877816091922
-29928  -80.7523058268869676    32.163222812640754
-98580  -122.476711496130918    46.9487951772697087
-51510  -95.9144631728895973    41.2928738482143132
-98527  -123.946029659340695    46.6119821263736398
-81429  -108.96046291949142     38.3480870649717716
-80027  -105.150699034491538    39.9626818984840142
-71416  -92.8927384093985893    31.5462148746885518
-21665  -76.3261003844731363    38.7467483641404584
-32725  -81.2442654158707001    28.9004673477503431
-62428  -88.1376083003398492    39.2590049518221278
-96109  -120.160582678899132    40.033297293578002
-93612  -119.710357414533334    36.8152573415222619
-54302  -87.9732357635827356    44.5028202798825774
-58426  -98.5987823045430787    47.224454399887648
-18812  -75.9509525788841131    41.9658166553689682
-88231  -103.163666629218142    32.4411918445109038
-49879  -88.0426907178836728    46.3331073964020703
-73946  -102.77582723529413     36.8848463529411745
-78853  -100.476951305555559    28.6771618611111059
-97531  -123.645617606557366    42.1955721675774242
-83236  -112.164283115738968    43.2897600708849737
-43040  -83.3644400736195337    40.2502697659437416
-74956  -94.7103121305245708    35.1217298620405174
-36427  -87.0665705362318647    31.1788503623188333
-85122  -111.744143449436848    32.9152713121730827
-49619  -85.9953204066725192    44.3021236559964251
-18504  -75.689354436460448     41.4167042522733553
-17980  -76.5548689930656963    40.5734142678831944
-31794  -83.4819736034875319    31.4557658378774825
-48647  -84.1179437042923297    44.6683794627526112
-68001  -96.8703574444444513    41.3534572698412646
-69170  -100.747898151774848    40.7911424547123644
-35893  -86.6559610000000049    34.7227899999999963
-48740  -83.3467529552904978    44.6620561086143795
-83865  -117.039908000000011    47.4778766666666669
-50457  -93.4844636581787825    42.9184713912037097
-25189  -81.2856084375000165    38.1386478750000038
-35672  -87.412628292930691     34.6220606626355476
-29690  -82.4283674732577509    35.0415801831916625
-77372  -95.1571235010950573    30.2293382465312881
-56219  -96.8135761370757848    45.6094787421671128
-71868  -96.0292163999999957    30.4296559000000002
-63112  -90.2822023487383376    38.6627647309428468
-54658  -91.216434951690772     43.6658528260869616
-33012  -80.300654255688741     25.865626363209973
-63670  -90.161636871126845     37.9041227086589743
-71752  -93.2019092510698925    33.3815429346647434
-19604  -75.9116130812688965    40.3550076377643734
-43802  -81.8561058649808473    40.0917048059770948
-97530  -123.023595147692987    42.2280701264691487
-30735  -84.9126462176176631    34.6044016492731217
-45227  -84.3866731396029763    39.1541208329439385
-17821  -76.6280796836567788    40.9857885636425152
-93040  -118.788661079950927    34.4245820147601407
-25411  -78.2204864621950406    39.5629391434755533
-44820  -82.9733589016097142    40.8126829391373249
-36515  -87.8418220294117731    31.3412404411764776
-64030  -94.5212683005384378    38.879791762423217
-24836  -81.5456814293947758    37.3630739394812537
-48183  -83.2229212057377907    42.1329039986337719
-64119  -94.5233069831163277    39.2059508939483123
-97826  -119.204490748208414    45.7071758636025436
-30314  -84.4293593807507676    33.757576404358268
-60187  -88.1042656487397551    41.8675876947287122
-75401  -96.1129861532807013    33.1614511260252698
-70559  -92.5007937103220428    30.1208616850167594
-06512  -72.8718682044053452    41.2804106123181
-30052  -83.9056320201187589    33.8270906083942648
-28711  -82.3024023175807855    35.5905300183886268
-43569  -83.7934937315644959    41.351605557939962
-64667  -93.3344683451201291    40.3915810282884777
-08035  -75.0663264291217587    39.8791017118643722
-12480  -74.3818157137586979    42.1275811391670914
-25855  -81.1502872093023058    37.9408647209302217
-47964  -87.2988156116504967    40.9510377475728191
-50032  -93.5447485736434032    41.666200953488385
-51017  -96.3093380714285843    42.8963800000000077
-31634  -82.7363139756479598    31.0383657440093508
-99130  -117.180643672357391    46.9895151391210035
-81447  -107.011663499999983    37.2707493333333346
-49835  -86.5900507859573025    45.7419661231332313
-12207  -73.7498738630339403    42.6536090883652719
-40231  -85.6967783999999995    38.1969398000000027
-14564  -77.42352641794389      42.9932398049977138
-76449  -98.4053937399112471    32.8932998322050949
-46984  -85.8310672323232353    40.6688923434343366
-78453  -97.9883067500000067    26.2994289999999999
-63106  -90.2077633349569936    38.6444432163731548
-47003  -84.8325089133033856    39.5581578968609477
-67060  -97.3483982276832762    37.5525471816432841
-56515  -95.7070351449697938    46.2931698036073769
-60636  -87.6680161249830689    41.7757382940123492
-50467  -93.0839271472869001    43.209673511627912
-13160  -76.6664872354497788    42.8283945230536176
-50220  -94.1069470043094611    41.8470692681915253
-92398  -116.813242348761477    34.9191500873533087
-39051  -89.4814543918699883    32.7870248869488705
-71486  -93.6590554040798082    31.6168649545808513
-78907  -106.350761500000004    31.7222985000000008
-43046  -82.5382348468148166    39.9056874133333608
-46923  -86.6565261818911949    40.602381551194739
-87736  -105.208206413533844    35.9856826015037612
-57725  -102.867686349999929    43.9531927594595047
-56381  -95.5429167386034806    45.5669943499065297
-67857  -101.561057194999918    37.9554305599999751
-76243  -97.6074674583333177    33.1932893749999991
-78252  -98.6929719427403853    29.3503045333333148
-05679  -72.5408169546823842    44.1106590008112249
-11549  -73.602051000000003     40.7183653333333311
-01583  -71.7871787897194338    42.36236892445487
-12534  -73.7553575452172652    42.228724742361301
-49942  -88.4190859754098284    47.2682011065573633
-00765  -65.4529835032377036    18.1291793320999126
-48879  -84.5651911047514062    43.0041830046952001
-68787  -97.0316573504050979    42.2094254410434147
-76701  -97.1374153360057591    31.5525369832361555
-84714  -113.666030895635657    37.7568293409680749
-08855  -74.4704360000000065    40.5127925000000033
-12779  -74.6280687984008182    41.7046939737292419
-08401  -74.4415600260000474    39.3648191774284442
-62460  -87.6793438077880296    38.6027375484672319
-54409  -89.1684532211941274    45.1321552513433915
-35233  -86.7978477114778855    33.5092554300314731
-12766  -74.9793185038428476    41.8143834491887318
-46340  -86.7687373196202287    41.3973724985934268
-67710  -101.048359333333337    39.3912584999999993
-98560  -123.434425772245802    47.2636905783898413
-31826  -84.6993431164485884    32.8043545633931757
-70750  -91.7603756761506162    30.518291321338932
-77833  -96.4070494239628886    30.196633216759146
-24554  -79.0586604211278683    37.1343554085632377
-59141  -87.5709994999999992    44.2403790000000043
-19015  -75.3884033193450165    39.8660021584761282
-96142  -120.128666234689334    39.0470559885741721
-44509  -80.693833114845944     41.1053922350139871
-97407  -123.978607161616125    43.4549375454545626
-19951  -75.2430579110281599    38.6899681811401734
-03842  -70.8283029811841232    42.9395408305551598
-08113  -105.43103450000001     37.4277804999999972
-59327  -106.649162280076567    46.1692866538593591
-43516  -83.9056179095138646    41.2070239625493286
-52345  -91.8862361558441307    42.2220389177489039
-47172  -85.7734976425603008    38.3949067387983334
-31773  -84.0425338227515653    30.9688539480984311
-61281  -90.5075479252256798    41.3002331645040925
-79916  -106.407293045454509    31.8045047272727395
-41776  -83.2913408460302094    37.1526564870355855
-99101  -117.937632935719449    48.3296129569029205
-40026  -85.5634004536180157    38.4126469839727918
-98585  -122.531461635208885    46.549781950544407
-95991  -121.620787832522822    39.1133358219026803
-81632  -106.627232053547274    39.6357320989331257
-92406  -117.772909374999998    33.6880708750000011
-61321  -88.9736604926752932    40.9677734795681872
-41834  -82.9439185046583702    37.2697858773291983
-07704  -74.03732095196915      40.3600659466858573
-70653  -93.5447064781897666    30.7462514835142287
-14840  -77.1845420646864824    42.4475175303997716
-28616  -81.9257967942708092    36.027065240451364
-72523  -91.8388081135245358    35.6496376428757102
-98262  -122.677768895912777    48.7094156174387365
-92135  -117.168526531250009    32.7007577812500045
-46220  -86.1084148012278519    39.8676038212093857
-63965  -91.0171859399750076    36.9857003793247472
-98447  -122.439942000000002    47.1422494999999984
-92807  -117.788297890644927    33.847664404175859
-53129  -87.9975892335540379    42.93814010958463
-03249  -71.396042891700958     43.5575494521781295
-67543  -97.7916371951248351    37.8815240659014165
-41102  -82.7004047434547545    38.4361576861019003
-97639  -121.44162305120166     42.4574970663530564
-52043  -91.421311464021997     42.8472893371673464
-38866  -88.681512272771883     34.362087839498308
-87827  -108.16702578212292     34.3866425139664713
-39954  -87.8110685714285637    33.8350799999999978
-41348  -83.3022690248068756    37.4301961123663958
-75825  -95.0861457999999971    31.641544599999996
-49774  -84.3204059768914078    46.1632669781576865
-45317  -84.0122430199006232    40.1758503283581447
-01880  -71.066659340876555     42.5012346805300112
-65349  -93.0519789492841625    39.2190378515336775
-49770  -84.9306804483376823    45.3533247969483426
-77369  -94.7536219207406702    30.4635883281481412
-06384  -71.8306438335835509    41.585697772678536
-45303  -84.6474257819305222    40.2156939411766317
-52171  -92.040339580286286     43.0559384533653429
-43462  -83.7042490947866327    41.284203725908327
-20855  -77.1413043255038531    39.1358902594215508
-55333  -94.866862920494313     44.552332264571632
-62817  -88.4712896903073442    37.9510127895980958
-21837  -75.7480047319917418    38.4741015892479581
-97057  -120.884956185185175    45.1201902518518523
-71483  -92.6605711970645984    31.9169169577554612
-07853  -74.781049238553166     40.7926224106387636
-15348  -79.9960777850000255    39.9892062425000177
-15941  -78.5905015624999947    40.4997113125000041
-95021  -121.604729666666671    37.0257014166666636
-56142  -96.2429952137565152    44.4708074370370738
-97111  -123.197518826086892    45.290411617565681
-80480  -106.301060076883999    40.6628486831498321
-40150  -85.7151165550034193    37.8679026571615367
-87046  -106.935244350724574    36.1974121318840503
-12407  -74.3455465019010546    42.313582880228104
-67520  -99.1898092528409023    38.544547937499992
-21211  -76.6350776983585575    39.3312506782285425
-49347  -85.3397816831275264    43.3184269814814868
-32325  -85.7071818039215856    30.872696607843146
-28708  -82.8801352284264823    35.2276739348561208
-74335  -94.8516295263157758    36.9735108596491315
-40843  -82.9903012693207529    36.8725273911006965
-45140  -84.2532588441069663    39.2489071414519657
-13348  -75.060356065420379     42.7016206399120151
-46403  -87.258088885550535     41.6054980954611651
-95914  -121.358240610824041    39.4267225408480257
-63462  -91.6903728819683579    39.435199275278805
-97055  -122.219827689067671    45.3881225103225603
-56301  -94.2086354567437496    45.5115704752602781
-04645  -68.6342070000000177    44.0607298275862007
-55340  -93.558643328281434     45.0675911261036077
-76755  -85.1854861999999855    41.4051369999999963
-12472  -74.0763452323856058    41.8446011730531708
-12125  -73.4050050912898087    42.4704077839196756
-75490  -96.3213816622161829    33.4309628255681517
-47433  -86.6514418493928815    39.3435451022739358
-50608  -92.9702238235294374    42.5775074705882375
-13632  -76.0636415961538574    44.1302005769230874
-66055  -95.3983620000000059    39.0440287499999954
-15736  -79.3415252629108778    40.6983065539906192
-29437  -80.4201137866211297    33.1437430288124517
-68505  -96.6200701889733864    40.8252721104674023
-85120  -111.567579154446236    33.4238012636810708
-85193  -111.800595619070023    32.8438966478200172
-85304  -112.17669416312377     33.5941949299020308
-79133  -98.2866176999999936    29.8806111499999929
-32179  -81.8848138993385817    29.0854685404630153
-25844  -81.3718374403638478    37.8030390605105637
-30569  -83.5047894999999869    34.3293660000000003
-41557  -82.4188979281909582    37.4878088425725053
-81651  -106.935049285714314    39.3127590714285731
-95136  -121.851198992652698    37.2689055525907591
-60416  -88.2800421034412466    41.2959584172677765
-71333  -92.0834917126026937    30.9197790368852772
-21841  -75.293432516792052     38.244917416040046
-72026  -91.3057915030580318    34.5172402813455363
-33462  -80.0796553116358041    26.5818941329279532
-74401  -95.4110968038906861    35.743227312687857
-50156  -93.8145459735490306    41.8871737581351908
-66516  -95.7280977439024383    39.6429059793620837
-36729  -87.5905474999999996    31.980104500000003
-78228  -98.5707342893439318    29.4621410258420298
-03269  -71.5796421211645821    43.5251516765957192
-06605  -73.2171150352994431    41.1635870252789857
-22742  -77.7128678868254212    38.4631172066164169
-47249  -86.2020176666666629    38.9594493333333318
-89007  -114.157686195555556    36.7460015170370511
-06374  -71.9166732834519422    41.6808918172056408
-82332  -107.430857758064519    41.0617965967741796
-46971  -86.1446234999999945    40.6636917499999981
-66439  -95.5443061837822398    39.6671614886150863
-76063  -97.1278462818958843    32.5810024793454716
-62626  -89.8876204818032107    39.2748490965038144
-54005  -92.2487061159420421    45.2388562193674915
-16346  -79.6834118596442664    41.3790361204201957
-37709  -83.6607590237881453    36.1633932914629241
-85295  -111.744210649471427    33.3068189366972049
-48170  -83.4960078264912937    42.3704094349210934
-58301  -98.8482121083326746    48.1436185332581914
-04655  -67.389236590651123     44.6709364868112715
-42234  -87.1717459251396463    36.7026148756051214
-97463  -122.454271501027478    43.7545441567378646
-62180  -81.466620000000006     29.2395747499999956
-15642  -79.7188156840802691    40.3231777216873084
-12070  -74.2498290022336391    42.9757444199553262
-58627  -103.187600720720752    47.2045438738738525
-45370  -84.0407891817639694    39.6129234621573332
-71443  -93.4240283076923248    31.2230816538461546
-34956  -80.4953916683116404    27.057181562225864
-25654  -81.902729134408645     37.8087721559139993
-66429  -95.5485313021277562    39.0979197304964003
-68532  -96.8348045437955989    40.7892898321167792
-05350  -72.9675379972066338    42.7810146700185925
-31404  -81.0658849628099034    32.0457330047987199
-12496  -74.259922501202297     42.3206322351969106
-48813  -84.8264776831536693    42.5759191890126303
-62297  -89.8129302686382402    38.0452998256315809
-72633  -92.8759592082861047    36.138347098224429
-17769  -77.5405591755952202    41.4965266726190833
-38456  -87.2771428457106708    35.3356419192661591
-93608  -120.357931180866913    36.5174200044843289
-30206  -84.4590803004214763    33.1017504265636617
-40506  -84.5049071038961159    38.0341871753246963
-01342  -72.6020428131147213    42.5403391923497765
-75040  -96.6241927545929542    32.9250661762062506
-59036  -109.861026103543338    46.4357048677164812
-61334  -89.0914496142536052    41.1461204926470501
-56280  -96.1612262493887613    44.6465433496332267
-68813  -99.7961734209636973    41.6804634125105409
-15764  -79.0298471333333623    40.9969402175438731
-23832  -77.5920919541658662    37.4054690246090402
-32931  -80.6114355197808692    28.3294859087035107
-14527  -77.0600201897670871    42.6590004920717405
-46787  -85.6210233720000531    41.0755294459998552
-35544  -88.0132664865763843    33.9423587122255057
-23696  -76.4299370577702035    37.1902998736486552
-14220  -78.819127101896683     42.8453326035700783
-84089  -112.423455352941161    40.1736031176470547
-36547  -87.6247819473684331    30.2800541052631509
-13045  -76.1895210867195374    42.5934638429689372
-27845  -77.4287864002786392    36.3810786842012917
-38343  -88.9056310157224061    35.830594874256704
-76632  -97.0718289738039743    31.3001471292710143
-41858  -82.8419646354785613    37.1295807079500548
-29550  -80.0816264275730418    34.3844502491109623
-11552  -73.6545995110442249    40.6936581493975993
-45328  -84.494419540084408     40.1140619324894487
-26259  -79.8986050099009901    38.835257108910902
-97874  -119.859177186755304    44.8005559011913874
-62650  -90.2369310803287306    39.7306923315810891
-93105  -119.744732689610046    34.4593919782780134
-17942  -76.116330099999999     40.6241926000000007
-54141  -88.0224078418791152    44.7174953042675938
-31542  -82.1343110619075958    31.1741341984598179
-34478  -82.1898077499999999    29.2917507499999985
-41401  -82.526625566666695     37.4149101333333292
-37374  -85.6401811712608918    35.1657615216901789
-50248  -93.597020344596487     42.1945673460529846
-30040  -84.1799229651219036    34.2163888455798215
-06796  -73.3343255332077746    41.8729379465744245
-34953  -80.3806785486686692    27.2494803770067229
-46115  -85.5717491693975632    39.73914278270734
-49330  -85.7368536294216028    43.2381665074380095
-16148  -80.448502642392782     41.2328536343486007
-78114  -98.2032027343170455    29.1702559514245792
-83669  -116.496198553487147    43.7089589374772487
-07765  -74.2497794999999883    40.3469479999999976
-41129  -82.6433723426486466    38.3543351516550004
-13040  -75.9363676319339902    42.5566182212892912
-48393  -83.5346524211762329    42.5362288348234614
-11742  -73.0400897054886684    40.8099241750334585
-23922  -78.2275207958342236    37.1933444550015508
-38654  -89.83119714054952      34.94625650785148
-19090  -75.123071569119773     40.1479403464080633
-38839  -89.2852469166666936    33.8549182380952374
-81077  -103.622134125683047    38.0280098251366354
-12776  -74.9511508109322619    41.9532534090776821
-84537  -111.057291281412319    39.2289209844237092
-02588  -70.656549499999997     41.7421264999999977
-78026  -98.5707400169632564    28.9083928455229362
-56537  -96.0538089871772058    46.2964975319615846
-68649  -96.7685553188252072    41.490959145254223
-66104  -94.6801251069153125    39.1391812962562256
-66750  -95.1431124000000068    37.6990906000000052
-01040  -72.6355346759230969    42.2048204718255064
-45005  -84.3057539865121015    39.5467003659075971
-30636  -84.4279256666666811    34.6362508333333281
-92256  -116.55769942570069     34.0722047535525689
-24590  -78.4737542381113826    37.8036400722102357
-15905  -78.9493929163133856    40.2919090915452642
-79005  -100.522341275964536    36.4400051107814065
-38723  -91.0330690120481734    33.2431101325301341
-93256  -119.287535971014705    35.9689264938352409
-08540  -74.6542103623172721    40.3650719162664089
-76634  -97.5397447611117059    31.8062723326656034
-07936  -74.3620377931291472    40.8173090376973917
-34231  -82.5162138807738614    27.2690258612799568
-35802  -86.554668720873849     34.6700032279127299
-99578  -162.022992054545426    60.2163504727272638
-53142  -87.8867199996279993    42.5640224187409615
-04975  -69.5866648311688323    44.6243557662337622
-55921  -91.4723158400588687    43.6204115105481662
-46677  -85.0005045999999993    41.034911000000001
-17329  -76.8530905502301351    39.7622922791768545
-55037  -92.8738628795361052    46.0212398604838171
-15218  -79.8873559786210166    40.4249092748692291
-54022  -92.6210435241057155    44.8723154634594223
-84301  -112.127877269607936    41.6127055130719086
-37883  -83.4854509999999976    35.7341258400000044
-23833  -77.6671535405547502    37.1976230181428846
-02552  -70.7522492222222326    41.3559410000000014
-26335  -80.6772079988840716    38.849866953497056
-16802  -77.8601235629629969    40.8034450592592535
-62526  -88.9582687699697345    39.8788532566741125
-77480  -95.7197668143344345    29.073130962994405
-27360  -80.0947211868813724    35.8657768955389713
-62932  -89.2282777180618041    37.9012411659324329
-98356  -122.30960416206085     46.5816933194097089
-93725  -119.740546191766697    36.6643981364164873
-90275  -118.362150970315881    33.7597144420979518
-95333  -120.25902272239108     37.2433130260172049
-93654  -119.432126484395056    36.6145573241400299
-64098  -94.8981439125443558    39.4501992934324477
-78860  -100.311285595555574    28.5033040444444481
-55320  -94.0751945624399895    45.3981382161126703
-52349  -92.0028609516970022    42.173958719478243
-23173  -77.5418180555555949    37.5752235101009759
-83631  -115.875487459910715    43.8563060142539101
-97534  -123.708215889420003    42.0620581781231522
-80620  -104.714244898688506    40.3774533819797057
-82646  -106.767160477272725    43.0029924318181926
-39462  -89.0164187611837576    31.2075380203028949
-22031  -77.2603796950559314    38.8595526699320786
-24083  -79.913605618547507     37.413153640223463
-56230  -95.092388363109535     44.7967836512102551
-72410  -91.0806818803164049    35.9307722057369006
-84004  -111.772822289904269    40.4553018082602236
-44620  -81.2131836084932104    40.5805758208291181
-54671  -90.5623292500000048    46.0095244999999977
-74871  -96.5557667943833451    34.6433889331827345
-76951  -100.992021627978275    31.8314521944658289
-62269  -89.9133232826524704    38.5984508604597067
-38588  -85.7235504226728011    36.444449761953237
-43235  -83.0533017843734456    40.1036837422909258
-00714  -66.053327337059244     17.9826853069647399
-85294  -111.650447515463952    32.9076507577319646
-93106  -119.8457705    34.4169684999999959
-80202  -104.996496846663419    39.7502998150789892
-14062  -79.1565836107092906    42.4457062538765015
-36267  -85.9624903176470383    33.189974458823535
-95694  -121.978239099416911    38.5302958193876393
-53809  -90.6351629136449475    42.9975341697197209
-53208  -87.9648091246451571    43.0472874514838679
-39107  -89.6761479090909006    32.9998319090909078
-63023  -90.7118405557016132    38.2795680606144799
-35187  -86.8836637551020203    33.0755940612244856
-72455  -91.0231794627792254    36.3066107943868204
-28622  -81.9446493881169005    36.1927401897634198
-52165  -91.9837839022113428    43.3065495071253181
-08836  -74.5534665185186327    40.5970274634377617
-04446  -69.5107271428571352    45.2748972857142888
-10973  -74.4740113016241168    41.3861076769141505
-31780  -84.3832056055729112    32.0342050485491967
-74582  -96.8952428333333273    35.1016698333333323
-23070  -76.3898991200545225    37.5546263806274609
-13731  -74.7830230905200324    42.1439953987821099
-68123  -95.9535029746509878    41.1189567824394686
-60487  -87.8312147650108841    41.5661207811409454
-36331  -85.8762817999999868    31.283688999999999
-60465  -87.8288629133668763    41.7010105380063507
-70068  -90.4822406115208366    30.0689965055927964
-71056  -93.510112399999997     31.8085592000000013
-33545  -82.2979768431030294    28.2534345039137449
-31731  -84.7188159999999897    31.2719915999999998
-44802  -83.4270941185916968    41.0381006788140965
-76443  -99.1877993418323456    32.1409253390437755
-12018  -73.5398213534206917    42.6355971639838884
-65650  -93.4292194672365639    37.7840593867521335
-36454  -87.1999847515151316    31.3362497939393734
-71350  -92.0649209879963877    31.0653934701004353
-50841  -94.759755640106917     40.9964703073914905
-53075  -87.9633686626650757    43.5520829171668353
-41513  -82.3470819311163496    37.3565811219318888
-89828  -115.477375069053679    40.7288317186700581
-98154  -122.333340500000006    47.6063994999999949
-83228  -112.010600023106619    42.2103251553273253
-28356  -78.8018254198987336    35.2357642833903881
-30562  -83.3939992634352336    34.9162178788198361
-22042  -77.1905507161509661    38.864216403264102
-01603  -71.8422128570790761    42.2439253352627802
-58414  -90.816506000000004     46.8110557500000013
-56093  -93.5111207621190914    44.0700678882770802
-72682  -92.7390760511972871    36.1385245086705496
-62546  -89.44859136859138      39.4261411767048955
-47977  -87.1566088917972195    40.7469219883871148
-33414  -80.2526804348544971    26.6562092638813439
-56751  -95.7399300271724059    48.801247907118686
-45597  -87.3054388000000046    38.6644519999999972
-78207  -98.5243172168623857    29.4233399181226858
-12155  -74.8233301777276836    42.5863679224271294
-98351  -122.769597161540787    47.2015589178858264
-64126  -94.4988686662824477    39.0914788547549676
-27813  -77.9345265062343628    35.632935324189539
-86538  -109.619412955223822    36.3433960746268525
-52040  -91.1212420766008364    42.4905952142665768
-62293  -89.6813985406227658    38.6174892297781227
-01346  -72.812455683159726     42.6741468398437362
-56632  -94.630694142857152     47.2937008571428592
-37370  -84.6990774659463028    35.3640404966664548
-41503  -82.2877955235920382    37.6702331232876517
-41534  -82.4790599922026786    37.2796155847953088
-59343  -105.496355735099414    45.9088140860927112
-13145  -76.139764201207214     43.6541417857142946
-06032  -72.8366688308625641    41.728149715405408
-75725  -95.1141520909091156    31.7384805454545393
-58239  -98.6872105113636309    48.9463254204545422
-80815  -103.054177234958445    39.360312209046981
-77007  -95.4025798044039846    29.7723339750092215
-24985  -80.6818207862232981    37.6054937672209206
-88340  -105.745903226240486    33.1874836143329262
-46845  -85.1157008918407598    41.1980418443490422
-72141  -92.6293228548386054    35.5190722073732346
-18081  -75.2806851269035207    40.5620360253806922
-67524  -98.350463926289919     38.3583852813267896
-60952  -88.2592726527777387    40.5737159976851274
-25907  -81.081655532338317     37.8540470597015215
-27332  -79.1187681115893184    35.3722047240216213
-76623  -96.7579496956521155    32.1973961739130559
-64862  -94.1195458914229022    37.0863748862833873
-77868  -96.0505229788564208    30.3737732938014346
-53013  -87.818186167198391     43.5466223816208853
-26851  -78.6208554702914739    39.0716585439087538
-18321  -75.2886450395815388    41.0162306665149714
-75207  -96.8207775868056473    32.7871888616898062
-93558  -117.622247092857137    35.3547329428571544
-17324  -77.2133005352465034    40.0336196110923339
-15350  -80.2008706845637676    40.2941387281879315
-92703  -117.902599188202132    33.747725365038626
-11436  -73.7980876428571406    40.6761794999999964
-84018  -111.48139666421217     41.0849488600883674
-78669  -98.0842503121911449    30.4197635704105345
-79363  -102.020448550400232    33.6906540684800291
-78628  -97.722976448526822     30.6577328289607962
-15624  -79.4682502812500502    40.3644751145833567
-84328  -111.822001256729592    41.5522304353112304
-46110  -85.9154364705473341    39.5601539459458991
-76269  -96.8516845000000046    33.7066119999999998
-05085  -72.1459893500838376    44.0794310134002743
-08207  -74.3879234999999994    40.5591790000000003
-72660  -93.3701477848647414    36.4809670064864733
-83322  -114.955220624999981    43.35212931249999
-61111  -89.0087994405415088    42.3295163840540809
-49655  -85.4334444354968383    44.0324577489127975
-99637  -165.106986833333366    60.5315080000000023
-58401  -98.7372321561035875    46.9009073805006977
-29351  -81.8128542103703609    34.4158127837036574
-38834  -88.5282278363708457    34.9227903901270835
-83501  -116.95513197223292     46.3652601177435386
-72150  -92.3861331326125708    34.3081847295007591
-28393  -78.1923019733918778    34.9844748269319794
-15637  -79.7116460253441375    40.2629886670838104
-98015  -122.088768333333334    47.6576826666666662
-62684  -89.5911833852758832    39.8981474856015197
-67111  -97.9344941791836732    37.6201739538776039
-65025  -92.6766002156592492    38.6559897448489664
-37043  -87.2537853316159016    36.5075820466083485
-34209  -82.6321588486974719    27.4910742477750283
-30177  -84.3818426705632163    34.4136537725823075
-37621  -82.1832694285714211    36.5929295714285701
-97976  -97.1480537500000025    28.9761280000000028
-35474  -87.6042833413824127    32.9584879643825985
-15848  -78.7265195373812077    41.0307604485784196
-87583  -105.371232369932542    35.2780028749999985
-68371  -97.8222753316872513    40.7818484345678769
-00736  -66.1532290510693031    18.120684698052969
-\.
diff --git a/data/us_postcode_table.sql b/data/us_postcode_table.sql
new file mode 100644 (file)
index 0000000..9958916
--- /dev/null
@@ -0,0 +1,16 @@
+SET statement_timeout = 0;
+SET client_encoding = 'UTF8';
+SET check_function_bodies = false;
+SET client_min_messages = warning;
+
+SET search_path = public, pg_catalog;
+
+SET default_tablespace = '';
+
+SET default_with_oids = false;
+
+CREATE TABLE us_postcode (
+    postcode text,
+    x double precision,
+    y double precision
+);
index cbe91b91d355e90416b0aa30be7d096cec010b25..4c7cbabcf7d211510c675a98401aecb0a1d3cfea 100644 (file)
@@ -5,16 +5,45 @@
 
 configure_file(mkdocs.yml ../mkdocs.yml)
 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/appendix)
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data-sources)
+
+set (DOC_SOURCES
+     admin
+     develop
+     api
+     index.md
+     extra.css
+     styles.css
+     data-sources/overview.md
+    )
+
+foreach (src ${DOC_SOURCES})
+    execute_process(
+        COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${CMAKE_CURRENT_BINARY_DIR}/${src}
+    )
+endforeach()
+
+execute_process(
+   COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/data-sources/us-tiger/README.md ${CMAKE_CURRENT_BINARY_DIR}/data-sources/US-Tiger.md
+)
+execute_process(
+   COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/data-sources/gb-postcodes/README.md ${CMAKE_CURRENT_BINARY_DIR}/data-sources/GB-Postcodes.md
+)
+execute_process(
+   COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/data-sources/country-grid/README.md ${CMAKE_CURRENT_BINARY_DIR}/data-sources/Country-Grid.md
+)
+execute_process(
+   COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/data-sources/country-grid/mexico.quad.png ${CMAKE_CURRENT_BINARY_DIR}/data-sources/mexico.quad.png
+)
+execute_process(
+   COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/data-sources/wikipedia-wikidata/README.md  ${CMAKE_CURRENT_BINARY_DIR}/data-sources/Wikipedia-Wikidata.md
+)
 
 ADD_CUSTOM_TARGET(doc
-   COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/admin ${CMAKE_CURRENT_BINARY_DIR}/admin
-   COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/develop ${CMAKE_CURRENT_BINARY_DIR}/develop
-   COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/api ${CMAKE_CURRENT_BINARY_DIR}/api
-   COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/index.md ${CMAKE_CURRENT_BINARY_DIR}/index.md
-   COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/extra.css ${CMAKE_CURRENT_BINARY_DIR}/extra.css
    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Centos-7.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Centos-7.md
-   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Ubuntu-16.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Ubuntu-16.md
+   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Centos-8.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Centos-8.md
    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Ubuntu-18.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Ubuntu-18.md
+   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Ubuntu-20.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Ubuntu-20.md
    COMMAND mkdocs build -d ${CMAKE_CURRENT_BINARY_DIR}/../site-html -f ${CMAKE_CURRENT_BINARY_DIR}/../mkdocs.yml
 )
 
diff --git a/docs/admin/Advanced-Installations.md b/docs/admin/Advanced-Installations.md
new file mode 100644 (file)
index 0000000..8486b6a
--- /dev/null
@@ -0,0 +1,109 @@
+# Advanced installations
+
+This page contains instructions for setting up multiple countries in 
+your Nominatim database. It is assumed that you have already successfully
+installed the Nominatim software itself, if not return to the 
+[installation page](Installation.md).
+
+## Importing multiple regions
+
+To import multiple regions in your database, you need to configure and run `utils/import_multiple_regions.sh` file. This script will set up the update directory which has the following structure:
+
+```bash
+update
+    ├── europe
+    │   ├── andorra
+    │   │   └── sequence.state
+    │   └── monaco
+    │       └── sequence.state
+    └── tmp
+        ├── combined.osm.pbf
+        └── europe
+                ├── andorra-latest.osm.pbf
+                └── monaco-latest.osm.pbf
+
+
+```
+
+The `sequence.state` files will contain the sequence ID, which will be used by pyosmium to get updates. The tmp folder is used for import dump.
+
+### Configuring multiple regions
+
+The file `import_multiple_regions.sh` needs to be edited as per your requirement:
+
+1. List of countries. eg:
+
+        COUNTRIES="europe/monaco europe/andorra"
+
+2. Path to Build directory. eg:
+
+        NOMINATIMBUILD="/srv/nominatim/build"
+
+3. Path to Update directory. eg:
+        
+        UPDATEDIR="/srv/nominatim/update"
+
+4. Replication URL. eg:
+    
+        BASEURL="https://download.geofabrik.de"
+        DOWNCOUNTRYPOSTFIX="-latest.osm.pbf"
+!!! tip
+    If your database already exists and you want to add more countries, replace the setting up part
+    `${SETUPFILE} --osm-file ${UPDATEDIR}/tmp/combined.osm.pbf --all 2>&1`
+    with `${UPDATEFILE} --import-file ${UPDATEDIR}/tmp/combined.osm.pbf 2>&1`.
+
+### Setting up multiple regions
+
+Run the following command from your Nominatim directory after configuring the file.
+
+    bash ./utils/import_multiple_regions.sh
+
+!!! danger "Important"
+        This file uses osmium-tool. It must be installed before executing the import script.
+        Installation instructions can be found [here](https://osmcode.org/osmium-tool/manual.html#installation).
+
+## Updating multiple regions
+
+To import multiple regions in your database, you need to configure and run ```utils/update_database.sh```.
+This uses the update directory set up while setting up the DB.   
+
+### Configuring multiple regions
+
+The file `update_database.sh` needs to be edited as per your requirement:
+
+1. List of countries. eg:
+
+        COUNTRIES="europe/monaco europe/andorra"
+
+2. Path to Build directory. eg:
+
+        NOMINATIMBUILD="/srv/nominatim/build"
+
+3. Path to Update directory. eg:
+        
+        UPDATEDIR="/srv/nominatim/update"
+
+4. Replication URL. eg:
+    
+        BASEURL="https://download.geofabrik.de"
+        DOWNCOUNTRYPOSTFIX="-updates"
+
+5. Followup can be set according to your installation. eg: For Photon,
+
+        FOLLOWUP="curl http://localhost:2322/nominatim-update"
+
+    will handle the indexing.
+
+### Updating the database
+
+Run the following command from your Nominatim directory after configuring the file.
+
+    bash ./utils/update_database.sh
+
+This will get diffs from the replication server, import diffs and index the database. The default replication server in the script([Geofabrik](https://download.geofabrik.de)) provides daily updates.
+
+## Verification and further setup
+
+Instructions for import verification and other details like importing Wikidata can be found in [import and update page](Import-and-Update.md)
+
index 46da7e21ba0b8384e9d3ff8c38804124a9cf6f3e..126d79772459c1beb6209c9637c4a9fde7003305 100644 (file)
@@ -24,16 +24,18 @@ If the reported rank is 26 or higher, you can also safely add `--index-noanalyse
 
 ### PHP "open_basedir restriction in effect" warnings
 
-    `PHP Warning:  file_get_contents(): open_basedir restriction in effect.`
+    PHP Warning:  file_get_contents(): open_basedir restriction in effect.
 
-You need to adjust the [open_basedir](http://www.php.net/manual/en/ini.core.php#ini.open-basedir) setting
-in your PHP configuration (`php.ini file`). By default this setting may look like this:
+You need to adjust the
+[open_basedir](https://www.php.net/manual/en/ini.core.php#ini.open-basedir)
+setting in your PHP configuration (`php.ini` file). By default this setting may
+look like this:
 
     open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/
 
-Either add reported directories to the list or disable this setting temporarily by 
-dding ";" at the beginning of the line. Don't forget to enable this setting again
-once you are done with the PHP command line operations.
+Either add reported directories to the list or disable this setting temporarily
+by adding ";" at the beginning of the line. Don't forget to enable this setting
+again once you are done with the PHP command line operations.
 
 
 ### PHP timzeone warnings
@@ -44,9 +46,9 @@ The Apache log may contain lots of PHP warnings like this:
 You should set the default time zone as instructed in the warning in
 your `php.ini` file. Find the entry about timezone and set it to
 something like this:
-  
+
     ; Defines the default timezone used by the date functions
-    ; http://php.net/date.timezone
+    ; https://php.net/date.timezone
     date.timezone = 'America/Denver'
 
 Or
@@ -66,11 +68,41 @@ server development libraries (`postgresql-server-dev-9.5` on Ubuntu)
 and recompile (`cmake .. && make`).
 
 
+### I see the error "ERROR: permission denied for language c"
+
+`nominatim.so`, written in C, is required to be installed on the database
+server. Some managed database (cloud) services like Amazon RDS do not allow
+this. There is currently no work-around other than installing a database
+on a non-managed machine.
+
+
 ### I see the error: "function transliteration(text) does not exist"
 
 Reinstall the nominatim functions with `setup.php --create--functions`
 and check for any errors, e.g. a missing `nominatim.so` file.
 
+### I see the error: "ERROR: mmap (remap) failed"
+
+This may be a simple out-of-memory error. Try reducing the memory used
+for `--osm2pgsql-cache`. Also make sure that overcommitting memory is
+allowed: `cat /proc/sys/vm/overcommit_memory` should print 0 or 1.
+
+If you are using a flatnode file, then it may also be that the underlying
+filesystem does not fully support 'mmap'. A notable candidate is virtualbox's
+vboxfs.
+
+### I see the error: "clang: Command not found" on CentOS
+
+On CentOS 7 users reported `/opt/rh/llvm-toolset-7/root/usr/bin/clang: Command not found`.
+Double-check clang is installed. Instead of `make` try running `make CLANG=true`.
+
+### nominatim UPDATE failed: ERROR: buffer 179261 is not owned by resource owner Portal
+
+Several users [reported this](https://github.com/openstreetmap/Nominatim/issues/1168) during the initial import of the database. It's
+something PostgreSQL internal Nominatim doesn't control. And PostgreSQL forums
+suggest it's threading related but definitely some kind of crash of a process.
+Users reported either rebooting the server, different hardware or just trying
+the import again worked.
 
 ### The website shows: "Could not get word tokens"
 
@@ -82,10 +114,11 @@ to get the full error message.
 
 `could not connect to server: No such file or directory`
 
-On CentOS v7 the PostgreSQL server is started with `systemd`.
-Check if `/usr/lib/systemd/system/httpd.service` contains a line `PrivateTmp=true`.
-If so then Apache cannot see the `/tmp/.s.PGSQL.5432` file. It's a good security feature,
-so use the [preferred solution](../appendix/Install-on-Centos-7/#adding-selinux-security-settings).
+On CentOS v7 the PostgreSQL server is started with `systemd`. Check if
+`/usr/lib/systemd/system/httpd.service` contains a line `PrivateTmp=true`. If
+so then Apache cannot see the `/tmp/.s.PGSQL.5432` file. It's a good security
+feature, so use the
+[preferred solution](../appendix/Install-on-Centos-7/#adding-selinux-security-settings).
 
 However, you can solve this the quick and dirty way by commenting out that line and then run
 
@@ -95,7 +128,10 @@ However, you can solve this the quick and dirty way by commenting out that line
 
 ### Website reports "DB Error: insufficient permissions"
 
-The user the webserver, e.g. Apache, runs under needs to have access to the Nominatim database. You can find the user like [this](https://serverfault.com/questions/125865/finding-out-what-user-apache-is-running-as), for default Ubuntu operating system for example it's `www-data`.
+The user the webserver, e.g. Apache, runs under needs to have access to the
+Nominatim database. You can find the user like
+[this](https://serverfault.com/questions/125865/finding-out-what-user-apache-is-running-as),
+for default Ubuntu operating system for example it's `www-data`.
 
 1. Repeat the `createuser` step of the installation instructions.
 
@@ -118,7 +154,7 @@ Example error message
    CONTEXT: PL/pgSQL function make_standard_name(text) line 5 at assignment]
 ```
 
-The Postgresql database, i.e. user postgres, needs to have access to that file.
+The PostgreSQL database, i.e. user `postgres`, needs to have access to that file.
 
 The permission need to be read & executable by everybody, e.g.
 
@@ -133,19 +169,9 @@ When running SELinux, make sure that the
 
 ### Setup.php fails with "DB Error: extension not found"
 
-Make sure you have the Postgres extensions hstore and postgis installed.
-See the installation instruction for a full list of required packages.
-
-
-### Setup.php reports "Cannot redeclare getDB()"
-
-`Cannot redeclare getDB() (previously declared in /your/path/Nominatim/lib/db.php:4)`
-
-The message is a bit misleading as PHP needs to load the file `DB.php` and
-instead re-loads Nominatim's `db.php`. To solve this make sure you
-have the [Pear module 'DB'](http://pear.php.net/package/DB/) installed.
+Make sure you have the PostgreSQL extensions "hstore" and "postgis" installed.
+See the installation instructions for a full list of required packages.
 
-    sudo pear install DB
 
 ### I forgot to delete the flatnodes file before starting an import.
 
@@ -156,22 +182,6 @@ for more information.
 
 ## Running your own instance
 
-### Can I import multiple countries and keep them up to date?
-
-You should use the extracts and updates from https://download.geofabrik.de.
-For the initial import, download the countries you need and merge them.
-See [OSM Help](https://help.openstreetmap.org/questions/48843/merging-two-or-more-geographical-areas-to-import-two-or-more-osm-files-in-nominatim)
-for examples how to do that. Use the resulting single osm file when
-running `setup.php`.
-
-For updates you need to download the change files for each country
-once per day and apply them **separately** using
-
-    ./utils/update.php --import-diff <filename> --index
-    
-See [this issue](https://github.com/openstreetmap/Nominatim/issues/60#issuecomment-18679446)
-for a script that runs the updates using osmosis.
-
 ### Can I import negative OSM ids into Nominatim?
 
 See [this question of Stackoverflow](https://help.openstreetmap.org/questions/64662/nominatim-flatnode-with-negative-id).
index 731ff8faee6bda0fb480b53e62fdceb7052b6bf9..0d1bb027e9e0a7d45084d61b2aa5e494aaef32aa 100644 (file)
@@ -29,56 +29,178 @@ Add to your `settings/local.php`:
     @define('CONST_Osm2pgsql_Flatnode_File', '/path/to/flatnode.file');
 
 Replace the second part with a suitable path on your system and make sure
-the directory exists. There should be at least 40GB of free space.
+the directory exists. There should be at least 64GB of free space.
 
 ## Downloading additional data
 
-### Wikipedia rankings
+### Wikipedia/Wikidata rankings
 
 Wikipedia can be used as an optional auxiliary data source to help indicate
-the importance of osm features. Nominatim will work without this information
+the importance of OSM features. Nominatim will work without this information
 but it will improve the quality of the results if this is installed.
 This data is available as a binary download:
 
     cd $NOMINATIM_SOURCE_DIR/data
-    wget https://www.nominatim.org/data/wikipedia_article.sql.bin
-    wget https://www.nominatim.org/data/wikipedia_redirect.sql.bin
+    wget https://www.nominatim.org/data/wikimedia-importance.sql.gz
 
-Combined the 2 files are around 1.5GB and add around 30GB to the install
-size of nominatim. They also increase the install time by an hour or so.
+The file is about 400MB and adds around 4GB to Nominatim database.
 
-*NOTE:* you'll need to download the Wikipedia rankings before performing
-the initial import of the data if you want the rankings applied to the
-loaded data.
+!!! tip
+    If you forgot to download the wikipedia rankings, you can also add
+    importances after the import. Download the files, then run
+    `./utils/setup.php --import-wikipedia-articles`
+    and `./utils/update.php --recompute-importance`.
 
-### UK postcodes
+### Great Britain, USA postcodes
 
-Nominatim can use postcodes from an external source to improve searches that involve a UK postcode. This data can be optionally downloaded: 
+Nominatim can use postcodes from an external source to improve searches that
+involve a GB or US postcode. This data can be optionally downloaded:
 
     cd $NOMINATIM_SOURCE_DIR/data
     wget https://www.nominatim.org/data/gb_postcode_data.sql.gz
+    wget https://www.nominatim.org/data/us_postcode_data.sql.gz
 
+## Choosing the Data to Import
+
+In its default setup Nominatim is configured to import the full OSM data
+set for the entire planet. Such a setup requires a powerful machine with
+at least 64GB of RAM and around 800GB of SSD hard disks. Depending on your
+use case there are various ways to reduce the amount of data imported. This
+section discusses these methods. They can also be combined.
+
+### Using an extract
+
+If you only need geocoding for a smaller region, then precomputed extracts
+are a good way to reduce the database size and import time.
+[Geofabrik](https://download.geofabrik.de) offers extracts for most countries.
+They even have daily updates which can be used with the update process described
+below. There are also
+[other providers for extracts](https://wiki.openstreetmap.org/wiki/Planet.osm#Downloading).
+
+Please be aware that some extracts are not cut exactly along the country
+boundaries. As a result some parts of the boundary may be missing which means
+that Nominatim cannot compute the areas for some administrative areas.
+
+### Dropping Data Required for Dynamic Updates
+
+About half of the data in Nominatim's database is not really used for serving
+the API. It is only there to allow the data to be updated from the latest
+changes from OSM. For many uses these dynamic updates are not really required.
+If you don't plan to apply updates, the dynamic part of the database can be
+safely dropped using the following command:
+
+```
+./utils/setup.php --drop
+```
+
+Note that you still need to provide for sufficient disk space for the initial
+import. So this option is particularly interesting if you plan to transfer the
+database or reuse the space later.
+
+### Reverse-only Imports
+
+If you only want to use the Nominatim database for reverse lookups or
+if you plan to use the installation only for exports to a
+[photon](https://photon.komoot.de/) database, then you can set up a database
+without search indexes. Add `--reverse-only` to your setup command above.
+
+This saves about 5% of disk space.
+
+### Filtering Imported Data
+
+Nominatim normally sets up a full search database containing administrative
+boundaries, places, streets, addresses and POI data. There are also other
+import styles available which only read selected data:
+
+* **settings/import-admin.style**
+  Only import administrative boundaries and places.
+* **settings/import-street.style**
+  Like the admin style but also adds streets.
+* **settings/import-address.style**
+  Import all data necessary to compute addresses down to house number level.
+* **settings/import-full.style**
+  Default style that also includes points of interest.
+* **settings/import-extratags.style**
+  Like the full style but also adds most of the OSM tags into the extratags
+  column.
+
+The style can be changed with the configuration `CONST_Import_Style`.
+
+To give you an idea of the impact of using the different styles, the table
+below gives rough estimates of the final database size after import of a
+2018 planet and after using the `--drop` option. It also shows the time
+needed for the import on a machine with 64GB RAM, 4 CPUS and SSDs. Note that
+the given sizes are just an estimate meant for comparison of style requirements.
+Your planet import is likely to be larger as the OSM data grows with time.
+
+style     | Import time  |  DB size   |  after drop
+----------|--------------|------------|------------
+admin     |    5h        |  190 GB    |   20 GB
+street    |   42h        |  400 GB    |  180 GB
+address   |   59h        |  500 GB    |  260 GB
+full      |   80h        |  575 GB    |  300 GB
+extratags |   80h        |  585 GB    |  310 GB
+
+You can also customize the styles further. For a description of the
+style format see [the development section](../develop/Import.md).
 
 ## Initial import of the data
 
-**Important:** first try the import with a small excerpt, for example from
-[Geofabrik](https://download.geofabrik.de).
+!!! danger "Important"
+    First try the import with a small extract, for example from
+    [Geofabrik](https://download.geofabrik.de).
+
+Download the data to import and load the data with the following command
+from the build directory:
+
+```sh
+./utils/setup.php --osm-file <data file> --all 2>&1 | tee setup.log
+```
+
+***Note for full planet imports:*** Even on a perfectly configured machine
+the import of a full planet takes at least 2 days. Once you see messages
+with `Rank .. ETA` appear, the indexing process has started. This part takes
+the most time. There are 30 ranks to process. Rank 26 and 30 are the most complex.
+They take each about a third of the total import time. If you have not reached
+rank 26 after two days of import, it is worth revisiting your system
+configuration as it may not be optimal for the import.
+
+### Notes on memory usage
 
-Download the data to import and load the data with the following command:
+In the first step of the import Nominatim uses osm2pgsql to load the OSM data
+into the PostgreSQL database. This step is very demanding in terms of RAM usage.
+osm2pgsql and PostgreSQL are running in parallel at this point. PostgreSQL
+blocks at least the part of RAM that has been configured with the
+`shared_buffers` parameter during [PostgreSQL tuning](Installation#postgresql-tuning)
+and needs some memory on top of that. osm2pgsql needs at least 2GB of RAM for
+its internal data structures, potentially more when it has to process very large
+relations. In addition it needs to maintain a cache for node locations. The size
+of this cache can be configured with the parameter `--osm2pgsql-cache`.
+
+When importing with a flatnode file, it is best to disable the node cache
+completely and leave the memory for the flatnode file. Nominatim will do this
+by default, so you do not need to configure anything in this case.
+
+For imports without a flatnode file, set `--osm2pgsql-cache` approximately to
+the size of the OSM pbf file (in MB) you are importing. Make sure you leave
+enough RAM for PostgreSQL and osm2pgsql as mentioned above. If the system starts
+swapping or you are getting out-of-memory errors, reduce the cache size or
+even consider using a flatnode file.
+
+### Verify import finished
+
+Run this script to verify all required tables and indices got created successfully.
 
 ```sh
-./utils/setup.php --osm-file <data file> --all [--osm2pgsql-cache 28000] 2>&1 | tee setup.log
+./utils/check_import_finished.php
 ```
 
-The `--osm2pgsql-cache` parameter is optional but strongly recommended for
-planet imports. It sets the node cache size for the osm2pgsql import part
-(see `-C` parameter in osm2pgsql help). As a rule of thumb, this should be
-about the same size as the file you are importing but never more than
-2/3 of RAM available. If your machine starts swapping reduce the size.
 
-Computing word frequency for search terms can improve the performance of
-forward geocoding in particular under high load as it helps Postgres' query
-planner to make the right decisions. To recompute word counts run:
+## Tuning the database
+
+Accurate word frequency information for search terms helps PostgreSQL's query
+planner to make the right decisions. Recomputing them can improve the performance
+of forward geocoding in particular under high load. To recompute word counts run:
 
 ```sh
 ./utils/update.php --recompute-word-counts
@@ -96,74 +218,61 @@ you also need to enable these key phrases like this:
     ./utils/specialphrases.php --wiki-import > specialphrases.sql
     psql -d nominatim -f specialphrases.sql
 
-Note that this command downloads the phrases from the wiki link above.
+Note that this command downloads the phrases from the wiki link above. You
+need internet access for the step.
 
 
 ## Installing Tiger housenumber data for the US
 
-Nominatim is able to use the official TIGER address set to complement the
-OSM house number data in the US. You can add TIGER data to your own Nominatim
-instance by following these steps:
-
-  1. Install the GDAL library and python bindings and the unzip tool
+Nominatim is able to use the official [TIGER](https://www.census.gov/geographies/mapping-files/time-series/geo/tiger-line-file.html)
+address set to complement the OSM house number data in the US. You can add
+TIGER data to your own Nominatim instance by following these steps. The
+entire US adds about 10GB to your database.
 
-       * Ubuntu: `sudo apt-get install python-gdal unzip`
-       * CentOS: `sudo yum install gdal-python unzip`
-
-  2. Get preprocessed TIGER 2017 data and unpack it into the
+  1. Get preprocessed TIGER 2019 data and unpack it into the
      data directory in your Nominatim sources:
 
         cd Nominatim/data
-        wget https://nominatim.org/data/tiger2017-nominatim-preprocessed.tar.gz
-        tar xf tiger2017-nominatim-preprocessed.tar.gz
+        wget https://nominatim.org/data/tiger2019-nominatim-preprocessed.tar.gz
+        tar xf tiger2019-nominatim-preprocessed.tar.gz
+
+    `data-source/us-tiger/README.md` explains how the data got preprocessed.
 
-  3. Import the data into your Nominatim database: 
+  2. Import the data into your Nominatim database:
 
         ./utils/setup.php --import-tiger-data
 
-  4. Enable use of the Tiger data in your `settings/local.php` by adding:
+  3. Enable use of the Tiger data in your `settings/local.php` by adding:
 
          @define('CONST_Use_US_Tiger_Data', true);
 
-  5. Apply the new settings:
+  4. Apply the new settings:
 
 ```sh
     ./utils/setup.php --create-functions --enable-diff-updates --create-partition-functions
 ```
 
-The entire US adds about 10GB to your database.
-
-You can also process the data from the original TIGER data to create the
-SQL files, Nominatim needs for the import:
-
-  1. Get the TIGER 2017 data. You will need the EDGES files
-     (3,234 zip files, 11GB total).
-
-         wget -r ftp://ftp2.census.gov/geo/tiger/TIGER2017/EDGES/
-
-  2. Convert the data into SQL statements: 
-
-         ./utils/imports.php --parse-tiger <tiger edge data directory>
-
-Be warned that this can take quite a long time. After this process is finished,
-the same preprocessed files as above are available in `data/tiger`.
 
 ## Updates
 
-There are many different possibilities to update your Nominatim database.
+There are many different ways to update your Nominatim database.
 The following section describes how to keep it up-to-date with Pyosmium.
 For a list of other methods see the output of `./utils/update.php --help`.
 
+!!! warning
+    If you have configured a flatnode file for the import, then you
+    need to keep this flatnode file around for updates as well.
+
 #### Installing the newest version of Pyosmium
 
-It is recommended to install Pyosmium via pip. Run (as the same user who
-will later run the updates):
+It is recommended to install Pyosmium via pip. Make sure to use python3.
+Run (as the same user who will later run the updates):
 
 ```sh
-pip install --user osmium
+pip3 install --user osmium
 ```
 
-Nominatim needs a tool called `pyosmium-get-updates`, which comes with
+Nominatim needs a tool called `pyosmium-get-updates` which comes with
 Pyosmium. You need to tell Nominatim where to find it. Add the
 following line to your `settings/local.php`:
 
@@ -179,7 +288,7 @@ to update using the global minutely diffs.
 
 If you want a different update source you will need to add some settings
 to `settings/local.php`. For example, to use the daily country extracts
-diffs for Ireland from geofabrik add the following:
+diffs for Ireland from Geofabrik add the following:
 
     // base URL of the replication service
     @define('CONST_Replication_Url', 'https://download.geofabrik.de/europe/ireland-and-northern-ireland-updates');
@@ -195,7 +304,7 @@ To set up the update process now run the following command:
 It outputs the date where updates will start. Recheck that this date is
 what you expect.
 
-The --init-updates command needs to be rerun whenever the replication service
+The `--init-updates` command needs to be rerun whenever the replication service
 is changed.
 
 #### Updating Nominatim
@@ -204,9 +313,10 @@ The following command will keep your database constantly up to date:
 
     ./utils/update.php --import-osmosis-all
 
-(Note that even though the old name "import-osmosis-all" has been kept for compatibility reasons, Osmosis is not required to run this - it uses pyosmium behind the scenes.)
+(Note that even though the old name "import-osmosis-all" has been kept for
+compatibility reasons, Osmosis is not required to run this - it uses pyosmium
+behind the scenes.)
 
 If you have imported multiple country extracts and want to keep them
-up-to-date, have a look at the script in
-[issue #60](https://github.com/openstreetmap/Nominatim/issues/60).
-
+up-to-date, [Advanced installations section](Advanced-Installations.md) contains instructions 
+to set up and update multiple country extracts.
\ No newline at end of file
index fe4749e25ea215628112854037f7ff93dc1dad0e..2d8936bdbbca2a2c2eff03fffe88ac1458d5be34 100644 (file)
@@ -4,8 +4,9 @@ This page contains generic installation instructions for Nominatim and its
 prerequisites. There are also step-by-step instructions available for
 the following operating systems:
 
+  * [Ubuntu 20.04](../appendix/Install-on-Ubuntu-20.md)
   * [Ubuntu 18.04](../appendix/Install-on-Ubuntu-18.md)
-  * [Ubuntu 16.04](../appendix/Install-on-Ubuntu-16.md)
+  * [CentOS 8](../appendix/Install-on-Centos-8.md)
   * [CentOS 7.2](../appendix/Install-on-Centos-7.md)
 
 These OS-specific instructions can also be found in executable form
@@ -25,45 +26,51 @@ and can't offer support.
 For compiling:
 
   * [cmake](https://cmake.org/)
-  * [libxml2](http://xmlsoft.org/)
-  * a recent C++ compiler
-
-Nominatim comes with its own version of osm2pgsql. See the
-osm2pgsql README for additional dependencies required for compiling osm2pgsql.
-
-For running tests:
-
-  * [behave](http://pythonhosted.org/behave/)
-  * [Psycopg2](http://initd.org/psycopg)
-  * [nose](https://nose.readthedocs.io)
-  * [phpunit](https://phpunit.de)
+  * [expat](https://libexpat.github.io/)
+  * [proj](https://proj.org/)
+  * [bzip2](http://www.bzip.org/)
+  * [zlib](https://www.zlib.net/)
+  * [Boost libraries](https://www.boost.org/), including system and filesystem
+  * PostgreSQL client libraries
+  * a recent C++ compiler (gcc 5+ or Clang 3.8+)
 
 For running Nominatim:
 
-  * [PostgreSQL](http://www.postgresql.org) (9.1 or later)
-  * [PostGIS](http://postgis.refractions.net) (2.0 or later)
-  * [PHP](http://php.net) (5.4 or later)
+  * [PostgreSQL](https://www.postgresql.org) (9.3 - 11)
+  * [PostGIS](https://postgis.org) (2.2 - 2.5)
+  * [Python 3](https://www.python.org/)
+  * [Psycopg2](https://initd.org/psycopg)
+  * [PHP](https://php.net) (7.0 or later)
   * PHP-pgsql
   * PHP-intl (bundled with PHP)
-  * [PEAR::DB](http://pear.php.net/package/DB)
   * a webserver (apache or nginx are recommended)
 
+!!! danger "Important"
+    Postgresql 12+ and Postgis 3.0+ are known to cause performance issues. They are
+    not recommended for a production installation at the moment.
+
 For running continuous updates:
 
-  * [pyosmium](http://osmcode.org/pyosmium/)
+  * [pyosmium](https://osmcode.org/pyosmium/) (with Python 3)
+
+For running tests:
+
+  * [behave](http://pythonhosted.org/behave/)
+  * [nose](https://nose.readthedocs.io)
+  * [phpunit](https://phpunit.de) >= 7.3
 
 ### Hardware
 
 A minimum of 2GB of RAM is required or installation will fail. For a full
-planet import 32GB of RAM or more strongly are recommended.
+planet import 64GB of RAM or more are strongly recommended. Do not report
+out of memory problems if you have less than 64GB RAM.
 
-For a full planet install you will need at least 700GB of hard disk space
+For a full planet install you will need at least 800GB of hard disk space
 (take into account that the OSM database is growing fast). SSD disks
 will help considerably to speed up import and queries.
 
-On a 6-core machine with 32GB RAM and SSDs the import of a full planet takes
-a bit more than 2 days. Without SSDs 7-8 days are more realistic.
-
+Even on a well configured machine the import of a full planet takes
+at least 2 days. Without SSDs 7-8 days are more realistic.
 
 ## Setup of the server
 
@@ -73,17 +80,30 @@ You might want to tune your PostgreSQL installation so that the later steps
 make best use of your hardware. You should tune the following parameters in
 your `postgresql.conf` file.
 
-    shared_buffers (2GB)
-    maintenance_work_mem (10GB)
-    work_mem (50MB)
-    effective_cache_size (24GB)
+    shared_buffers = 2GB
+    maintenance_work_mem = (10GB)
+    autovacuum_work_mem = 2GB
+    work_mem = (50MB)
+    effective_cache_size = (24GB)
     synchronous_commit = off
     checkpoint_segments = 100 # only for postgresql <= 9.4
+    max_wal_size = 1GB # postgresql > 9.4
     checkpoint_timeout = 10min
     checkpoint_completion_target = 0.9
 
 The numbers in brackets behind some parameters seem to work fine for
-32GB RAM machine. Adjust to your setup.
+64GB RAM machine. Adjust to your setup. A higher number for `max_wal_size`
+means that PostgreSQL needs to run checkpoints less often but it does require
+the additional space on your disk.
+
+Autovacuum must not be switched off because it ensures that the
+tables are frequently analysed. If your machine has very little memory,
+you might consider setting:
+
+    autovacuum_max_workers = 1
+
+and even reduce `autovacuum_work_mem` further. This will reduce the amount
+of memory that autovacuum takes away from the import process.
 
 For the initial import, you should also set:
 
@@ -91,8 +111,8 @@ For the initial import, you should also set:
     full_page_writes = off
 
 Don't forget to reenable them after the initial import or you risk database
-corruption. Autovacuum must not be switched off because it ensures that the
-tables are frequently analysed.
+corruption.
+
 
 ### Webserver setup
 
index e18b3df54dbe8d1fef9b72347439cdd9c7d92e7a..e6b6d1026e215414538d8d7d64d9ec3e90c63c06 100644 (file)
@@ -3,8 +3,75 @@
 This page describes database migrations necessary to update existing databases
 to newer versions of Nominatim.
 
-SQL statements should be executed from the postgres commandline. Execute
-`psql nominiatim` to enter command line mode.
+SQL statements should be executed from the PostgreSQL commandline. Execute
+`psql nominatim` to enter command line mode.
+
+## 3.4.0 -> master
+
+### New Wikipedia/Wikidata importance tables
+
+The `wikipedia_*` tables have a new format that also includes references to
+Wikidata. You need to update the computation functions and the tables as
+follows:
+
+  * download the new Wikipedia tables as described in the import section
+  * reimport the tables: `./utils/setup.php --import-wikipedia-articles`
+  * update the functions: `./utils/setup.php --create-functions --enable-diff-updates`
+  * compute importance: `./utils/update.php --recompute-importance`
+
+The last step takes about 10 hours on the full planet.
+
+## 3.3.0 -> 3.4.0
+
+### Reorganisation of location_area_country table
+
+The table `location_area_country` has been optimized. You need to switch to the
+new format when you run updates. While updates are disabled, run the following
+SQL commands:
+
+```sql
+CREATE TABLE location_area_country_new AS
+  SELECT place_id, country_code, geometry FROM location_area_country;
+DROP TABLE location_area_country;
+ALTER TABLE location_area_country_new RENAME TO location_area_country;
+CREATE INDEX idx_location_area_country_geometry ON location_area_country USING GIST (geometry);
+CREATE INDEX idx_location_area_country_place_id ON location_area_country USING BTREE (place_id);
+```
+
+## 3.2.0 -> 3.3.0
+
+### New database connection string (DSN) format
+
+Previously database connection setting (`CONST_Database_DSN` in `settings/*.php`) had the format
+
+   * (simple) `pgsql://@/nominatim`
+   * (complex) `pgsql://johndoe:secret@machine1.domain.com:1234/db1`
+
+The new format is
+
+   * (simple) `pgsql:dbname=nominatim`
+   * (complex) `pgsql:dbname=db1;host=machine1.domain.com;port=1234;user=johndoe;password=secret`
+
+### Natural Earth country boundaries no longer needed as fallback
+
+```
+DROP TABLE country_naturalearthdata;
+```
+
+Finally, update all SQL functions:
+
+```sh
+./utils/setup.php --create-functions --enable-diff-updates --create-partition-functions
+```
+
+### Configurable Address Levels
+
+The new configurable address levels require a new table. Create it with the
+following command:
+
+```sh
+./utils/update.php --update-address-levels
+```
 
 ## 3.1.0 -> 3.2.0
 
@@ -15,17 +82,17 @@ SQL statements to create the indexes:
 
 ```
 CREATE INDEX idx_placex_geometry_reverse_lookupPoint
-  ON placex USING gist (geometry) {ts:search-index}
+  ON placex USING gist (geometry)
   WHERE (name is not null or housenumber is not null or rank_address between 26 and 27)
     AND class not in ('railway','tunnel','bridge','man_made')
     AND rank_address >= 26 AND indexed_status = 0 AND linked_place_id is null;
 CREATE INDEX idx_placex_geometry_reverse_lookupPolygon
-  ON placex USING gist (geometry) {ts:search-index}
+  ON placex USING gist (geometry)
   WHERE St_GeometryType(geometry) in ('ST_Polygon', 'ST_MultiPolygon')
     AND rank_address between 4 and 25 AND type != 'postcode'
     AND name is not null AND indexed_status = 0 AND linked_place_id is null;
 CREATE INDEX idx_placex_geometry_reverse_placeNode
-  ON placex USING gist (geometry) {ts:search-index}
+  ON placex USING gist (geometry)
   WHERE osm_type = 'N' AND rank_search between 5 and 25
     AND class = 'place' AND type != 'postcode'
     AND name is not null AND indexed_status = 0 AND linked_place_id is null;
@@ -39,12 +106,18 @@ GRANT SELECT ON table country_osm_grid to "www-user";
 
 Replace the `www-user` with the user name of your website server if necessary.
 
-Finally, you can drop the now unused indexes:
+You can now drop the unused indexes:
 
 ```
 DROP INDEX idx_placex_reverse_geometry;
 ```
 
+Finally, update all SQL functions:
+
+```sh
+./utils/setup.php --create-functions --enable-diff-updates --create-partition-functions
+```
+
 ## 3.0.0 -> 3.1.0
 
 ### Postcode Table
index 027138a9b73615869f4723bb3eb3a35ae9dcec34..2776bfe2e24894b3e900d1fe3df7a894aeea949e 100644 (file)
@@ -24,7 +24,7 @@ but the `class` parameter is left out, then one of the places will be chosen
 at random and displayed.
 
 ```
-  https://nominatim.openstreetmap.org/details?placeid=<value>
+  https://nominatim.openstreetmap.org/details?place_id=<value>
 ```
 
 Placeids are assigned sequentially during Nominatim data import. The id for a place is different between Nominatim installation (servers) and changes when data gets reimported. Therefore it can't be used as permanent id and shouldn't be used in bug reports.
@@ -40,7 +40,7 @@ See [Place Output Formats](Output.md) for details on each format. (Default: html
 
 * `json_callback=<string>`
 
-Wrap json output in a callback function (JSONP) i.e. `<string>(<json>)`.
+Wrap JSON output in a callback function (JSONP) i.e. `<string>(<json>)`.
 Only has an effect for JSON output formats.
 
 * `pretty=[0|1]`
index cc6397d35c3eed9d6ee9e792fda552904be446a2..86f0e7835484628a9702cf23df610ba9b3368a79 100644 (file)
@@ -7,11 +7,11 @@
 Nominatim computes the address from two sources in the OpenStreetMap data:
 from administrative boundaries and from place nodes. Boundaries are the more
 useful source. They precisely describe an area. So it is very clear for
-Nominatim if a point belongs to an area of not. Place nodes are more complicated.
-These are only points without any precise extend. So Nominatim has to take a
-guess and assume that an address belongs to the closest place nose it can find.
+Nominatim if a point belongs to an area or not. Place nodes are more complicated.
+These are only points without any precise extent. So Nominatim has to take a
+guess and assume that an address belongs to the closest place node it can find.
 In an ideal world, Nominatim would not need the place nodes but there are
-many places on earth where there are not precise boundaries available for
+many places on earth where there are no precise boundaries available for
 all parts that make up an address. This is in particular true for the more
 local address parts, like villages and suburbs. Therefore it is not possible
 to completely dismiss place nodes. And sometimes they sneak in where they
@@ -21,7 +21,7 @@ As a OpenStreetMap mapper, you can improve the situation in two ways: if you
 see a place node for which already an administrative area exists, then you
 should _link_ the two by adding the node with a 'label' role to the boundary
 relation. If there is no administrative area, you can add the approximate
-extend of the place and tag it place=<something> as well.
+extent of the place and tag it place=<something> as well.
 
 #### 2. When doing reverse search, the address details have parts that don't contain the point I was looking up.
 
@@ -30,7 +30,7 @@ Reverse does not give you the address of the point you asked for. Reverse
 returns the closest object to the point you asked for and then returns the
 address of that object. Now, if you are close to a border, then the closest
 object may be across that border. When Nominatim then returns the address,
-contains the county/state/country across the border.
+it contains the county/state/country across the border.
 
 #### 3. I get different counties/states/countries when I change the zoom parameter in the reverse query. How is that possible?
 
@@ -41,3 +41,21 @@ border while the closest street is on the other. As the address details contain
 the address of the closest object found, you might sometimes get one result,
 sometimes the other for the closest point.
 
+#### 4. Can you return the continent?
+
+Nominatim assigns each map feature one country. Those outside any administrative
+boundaries are assigned a special no-country. Continents or other super-national
+administrations (e.g. European Union, NATO, Custom unions) are not supported,
+see also [Administrative Boundary](https://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative#Super-national_administrations).
+
+#### 5. Can you return the timezone?
+
+See this separate OpenStreetMap-based project [Timezone Boundary Builder](https://github.com/evansiroky/timezone-boundary-builder).
+
+#### 6. I want to download a list of streets/restaurants of a city/region
+
+The [Overpass API](https://wiki.openstreetmap.org/wiki/Overpass_API) is more
+suited for these kinds of queries.
+
+That said if you installed your own Nominatim instance you can use the
+`/utils/export.php` PHP script as basis to return such lists.
index 57bf7b5fe41becfda82d20436c399db4ab0bfc77..2412be1eb0efb91f4091540defec58f9c542daf9 100644 (file)
@@ -19,13 +19,13 @@ Additional optional parameters are explained below.
 
 ### Output format
 
-* `format=[html|xml|json|jsonv2|geojson|geocodejson]`
+* `format=[xml|json|jsonv2|geojson|geocodejson]`
 
 See [Place Output Formats](Output.md) for details on each format. (Default: xml)
 
 * `json_callback=<string>`
 
-Wrap json output in a callback function (JSONP) i.e. `<string>(<json>)`.
+Wrap JSON output in a callback function (JSONP) i.e. `<string>(<json>)`.
 Only has an effect for JSON output formats.
 
 ### Output details
index 5a33942034d4d49c41145cf02e9f8dbd0f62f571..2f9bdaebe98fa7b4958587f2f7f2871ac4db745c 100644 (file)
@@ -1,6 +1,6 @@
 # Place Output
 
-The [\reverse](Reverse.md), [\search](Search.md) and [\lookup](Lookup.md)
+The [/reverse](Reverse.md), [/search](Search.md) and [/lookup](Lookup.md)
 API calls produce very similar output which is explained in this section.
 There is one section for each format which is selectable via the `format`
 parameter.
@@ -46,9 +46,9 @@ a single place (for reverse) of the following format:
 
 The possible fields are:
 
- * `place_id` - reference to the Nominatim internal database ID
+ * `place_id` - reference to the Nominatim internal database ID ([see notes](#place_id-is-not-a-persistent-id))
  * `osm_type`, `osm_id` - reference to the OSM object
- * `boundingbox` - area of corner coordinates
+ * `boundingbox` - area of corner coordinates ([see notes](#boundingbox))
  * `lat`, `lon` - latitude and longitude of the centroid of the object
  * `display_name` - full comma-separated address
  * `class`, `type` - key and value of the main OSM tag
@@ -70,12 +70,12 @@ This is the same as the JSON format with two changes:
 
 ### GeoJSON
 
-This format follows the [RFC7946](http://geojson.org). Every feature includes
+This format follows the [RFC7946](https://geojson.org). Every feature includes
 a bounding box (`bbox`).
 
 The feature list has the following fields:
 
- * `place_id` - reference to the Nominatim internal database ID
+ * `place_id` - reference to the Nominatim internal database ID ([see notes](#place_id-is-not-a-persistent-id))
  * `osm_type`, `osm_id` - reference to the OSM object
  * `category`, `type` - key and value of the main OSM tag
  * `display_name` - full comma-separated address
@@ -83,7 +83,7 @@ The feature list has the following fields:
  * `importance` - computed importance rank
  * `icon` - link to class icon (if available)
  * `address` - dictionary of address details (only with `addressdetails=1`)
- * `extratags` - dictionary with additional useful tags like website or maxspeed
+ * `extratags` - dictionary with additional useful tags like `website` or `maxspeed`
    (only with `extratags=1`)
  * `namedetails` - dictionary with full list of available names including ref etc.
 
@@ -100,12 +100,9 @@ The following feature attributes are implemented:
  * `type` - value of the main tag of the object (e.g. residential, restaurant, ...)
  * `label` - full comma-separated address
  * `name` - localised name of the place
- * `housenumber`, `street`, `locality`, `postcode`, `city`,
-   `district`, `county`, `state`, `country` -
+ * `housenumber`, `street`, `locality`, `district`, `postcode`, `city`,
+   `county`, `state`, `country` -
    provided when it can be determined from the address
-   (see [this issue](https://github.com/openstreetmap/Nominatim/issues/1080) for
-   current limitations on the correctness of the address) and `addressdetails=1`
-   was given
  * `admin` - list of localised names of administrative boundaries (only with `addressdetails=1`)
 
 Use `polygon_geojson` to output the full geometry of the object instead
@@ -120,7 +117,7 @@ formats depending on the API call.
 
 ```
 <reversegeocode timestamp="Sat, 11 Aug 18 11:53:21 +0000"
-                attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright"
+                attribution="Data © OpenStreetMap contributors, ODbL 1.0. https://www.openstreetmap.org/copyright"
                 querystring="lat=48.400381&lon=11.745876&zoom=5&format=xml">
   <result place_id="179509537" osm_type="relation" osm_id="2145268" ref="BY"
           lat="48.9467562" lon="11.4038717"
@@ -148,13 +145,13 @@ attribution to OSM and the original querystring.
 
 The place information can be found in the `result` element. The attributes of that element contain:
 
- * `place_id` - reference to the Nominatim internal database ID
+ * `place_id` - reference to the Nominatim internal database ID ([see notes](#place_id-is-not-a-persistent-id))
  * `osm_type`, `osm_id` - reference to the OSM object
  * `ref` - content of `ref` tag if it exists
  * `lat`, `lon` - latitude and longitude of the centroid of the object
- * `boundingbox` - comma-separated list of corner coordinates
+ * `boundingbox` - comma-separated list of corner coordinates ([see notes](#boundingbox))
 
-The full address address of the result can be found in the content of the
+The full address of the result can be found in the content of the
 `result` element as a comma-separated list.
 
 Additional information requested with `addressdetails=1`, `extratags=1` and
@@ -164,12 +161,12 @@ Additional information requested with `addressdetails=1`, `extratags=1` and
 
 ```
 <searchresults timestamp="Sat, 11 Aug 18 11:55:35 +0000"
-               attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright"
+               attribution="Data © OpenStreetMap contributors, ODbL 1.0. https://www.openstreetmap.org/copyright"
                querystring="london" polygon="false" exclude_place_ids="100149"
                more_url="https://nominatim.openstreetmap.org/search.php?q=london&addressdetails=1&extratags=1&exclude_place_ids=100149&format=xml&accept-language=en-US%2Cen%3Bq%3D0.7%2Cde%3Bq%3D0.3">
   <place place_id="100149" osm_type="node" osm_id="107775" place_rank="15"
          boundingbox="51.3473219,51.6673219,-0.2876474,0.0323526" lat="51.5073219" lon="-0.1276474"
-         display_name="London, Greater London, England, SW1A 2DU, United Kingdom" 
+         display_name="London, Greater London, England, SW1A 2DU, United Kingdom"
          class="place" type="city" importance="0.9654895765402"
          icon="https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png">
     <extratags>
@@ -203,11 +200,11 @@ generic information about the query:
 The place information can be found in the `place` elements, of which there may
 be more than one. The attributes of that element contain:
 
- * `place_id` - reference to the Nominatim internal database ID
+ * `place_id` - reference to the Nominatim internal database ID ([see notes](#place_id-is-not-a-persistent-id))
  * `osm_type`, `osm_id` - reference to the OSM object
  * `ref` - content of `ref` tag if it exists
  * `lat`, `lon` - latitude and longitude of the centroid of the object
- * `boundingbox` - comma-separated list of corner coordinates
+ * `boundingbox` - comma-separated list of corner coordinates ([see notes](#boundingbox))
  * `place_rank` - class search rank
  * `display_name` - full comma-separated address
  * `class`, `type` - key and value of the main OSM tag
@@ -220,3 +217,34 @@ as subelements with the type of the address part.
 Additional information requested with `extratags=1` and `namedetails=1` can
 be found in extra elements as sub-element of each place.
 
+
+## Notes on field values
+
+### place_id is not a persistent id
+
+The `place_id` is created when a Nominatim database gets installed. A
+single place will have a different value on another server or even when
+the same data gets re-imported. It's thus not useful to treat it as
+permanent for later use.
+
+The combination `osm_type`+`osm_id` is slighly better but remember in
+OpenStreetMap mappers can delete, split, recreate places (and those
+get a new `osm_id`), there is no link between those old and new ids.
+Places can also change their meaning without changing their `osm_id`,
+e.g. when a restaurant is retagged as supermarket. For a more in-depth
+discussion see [Permanent ID](https://wiki.openstreetmap.org/wiki/Permanent_ID).
+
+Nominatim merges some places (e.g. center node of a city with the boundary
+relation) so `osm_type`+`osm_id`+`class_name` would be more unique.
+
+### boundingbox
+
+Comma separated list of min latitude, max latitude, min longitude, max longitude.
+The whole planet would be `-90,90,-180,180`.
+
+Can we used to pan and center the map on the result, for example with leafletjs
+mapping library
+`map.fitBounds([[bbox[0],bbox[2]],[bbox[1],bbox[3]]], {padding: [20, 20], maxzoom: 16});`
+
+Bounds crossing the antimeridian have a min latitude -180 and max latitude 180,
+essentially covering the planet (See [issue 184](https://github.com/openstreetmap/Nominatim/issues/184)).
index 7e8220591779abc820233fdfc4ae777ce75c7be4..a718079d5a8693ad6ee2d4b4acd2ee3db6f6bf33 100644 (file)
@@ -7,7 +7,7 @@ Its API has the following endpoints for querying the data:
  * __[/search](Search.md)__ - search OSM objects by name or type
  * __[/reverse](Reverse.md)__ - search OSM object by their location
  * __[/lookup](Lookup.md)__ - look up address details for OSM objects by their ID
- * __/status__ - query the status of the server
+ * __[/status](Status.md)__ - query the status of the server
  * __/deletable__ - list objects that have been deleted in OSM but are held
                     back in Nominatim in case the deletion was accidental
  * __/polygons__ - list of broken polygons detected by Nominatim
index 22e0133160d5dce90275c20fa103dbd1a65d5a7a..13805fd45edc7cab65b80d868270367c54f0777e 100644 (file)
@@ -22,7 +22,7 @@ There are two ways how the requested location can be specified:
 
     A specific OSM node(N), way(W) or relation(R) to return an address for.
 
-In both cases exactly one object is returned. The two input paramters cannot
+In both cases exactly one object is returned. The two input parameters cannot
 be used at the same time. Both accept the additional optional parameters listed
 below.
 
@@ -34,7 +34,7 @@ See [Place Output Formats](Output.md) for details on each format. (Default: html
 
 * `json_callback=<string>`
 
-Wrap json output in a callback function ([JSONP](https://en.wikipedia.org/wiki/JSONP)) i.e. `<string>(<json>)`.
+Wrap JSON output in a callback function ([JSONP](https://en.wikipedia.org/wiki/JSONP)) i.e. `<string>(<json>)`.
 Only has an effect for JSON output formats.
 
 ### Output details
@@ -80,7 +80,8 @@ In terms of address details the zoom levels are as follows:
   8   | county
   10  | city
   14  | suburb
-  16  | street
+  16  | major streets
+  17  | major and minor streets
   18  | building
 
 
@@ -134,7 +135,7 @@ This overrides the specified machine readable format. (Default: 0)
       <postcode>B72</postcode>
       <country>United Kingdom</country>
       <country_code>gb</country_code>
-    </addressparts>   
+    </addressparts>
   </reversegeocode>
 ```
 
@@ -145,7 +146,7 @@ This overrides the specified machine readable format. (Default: 0)
 ```json
 {
   "place_id":"134140761",
-  "licence":"Data © OpenStreetMap contributors, ODbL 1.0. http:\/\/www.openstreetmap.org\/copyright",
+  "licence":"Data © OpenStreetMap contributors, ODbL 1.0. https:\/\/www.openstreetmap.org\/copyright",
   "osm_type":"way",
   "osm_id":"280940520",
 "lat":"-34.4391708",
index 4b9d773c485dd4869b430b593a9b85487adf6ddb..c18655dcc03f570b866af1d94ed5d049423db633 100644 (file)
@@ -1,6 +1,6 @@
 # Search queries
 
-The search API allows to look up a location from a textual description.
+The search API allows you to look up a location from a textual description.
 Nominatim supports structured as well as free-form search queries.
 
 The search query may also contain
@@ -46,7 +46,7 @@ In this form, the query may be given through two different sets of parameters:
     Structured requests are faster but are less robust against alternative
     OSM tagging schemas. **Do not combine with** `q=<query>` **parameter**.
 
-All three query forms accept the additional paramters listed below.
+All three query forms accept the additional parameters listed below.
 
 ### Output format
 
@@ -56,7 +56,7 @@ See [Place Output Formats](Output.md) for details on each format. (Default: html
 
 * `json_callback=<string>`
 
-Wrap json output in a callback function ([JSONP](https://en.wikipedia.org/wiki/JSONP)) i.e. `<string>(<json>)`.
+Wrap JSON output in a callback function ([JSONP](https://en.wikipedia.org/wiki/JSONP)) i.e. `<string>(<json>)`.
 Only has an effect for JSON output formats.
 
 ### Output details
@@ -92,8 +92,12 @@ comma-separated list of language codes.
 * `countrycodes=<countrycode>[,<countrycode>][,<countrycode>]...`
 
 Limit search results to one or more countries. `<countrycode>` must be the
-ISO 3166-1alpha2 code, e.g. `gb` for the United Kingdom, `de` for Germany.
+[ISO 3166-1alpha2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code,
+e.g. `gb` for the United Kingdom, `de` for Germany.
 
+Each place in Nominatim is assigned to one country code based
+on `admin_level=2` tags, in rare cases to none (for example in
+international waters outside any country).
 
 * `exclude_place_ids=<place_id,[place_id],[place_id]`
 
@@ -112,7 +116,8 @@ Limit the number of returned results. (Default: 10, Maximum: 50)
 * `viewbox=<x1>,<y1>,<x2>,<y2>`
 
 The preferred area to find search results. Any two corner points of the box
-are accepted in any order as long as they span a real box.
+are accepted in any order as long as they span a real box. `x` is longitude,
+`y` is latitude.
 
 
 * `bounded=[0|1]`
@@ -167,21 +172,27 @@ This overrides the specified machine readable format. (Default: 0)
 ## Examples
 
 
-##### XML with polygon points
+##### XML with kml polygon
 
-* [https://nominatim.openstreetmap.org/search?q=135+pilkington+avenue,+birmingham&format=xml&polygon=1&addressdetails=1](https://nominatim.openstreetmap.org/search?q=135+pilkington+avenue,+birmingham&format=xml&polygon=1&addressdetails=1)
-* [https://nominatim.openstreetmap.org/search/gb/birmingham/pilkington%20avenue/135?format=xml&polygon=1&addressdetails=1](https://nominatim.openstreetmap.org/search/gb/birmingham/pilkington%20avenue/135?format=xml&polygon=1&addressdetails=1)
-* [https://nominatim.openstreetmap.org/search/135%20pilkington%20avenue,%20birmingham?format=xml&polygon=1&addressdetails=1](https://nominatim.openstreetmap.org/search/135%20pilkington%20avenue,%20birmingham?format=xml&polygon=1&addressdetails=1)
+* [https://nominatim.openstreetmap.org/search?q=135+pilkington+avenue,+birmingham&format=xml&polygon_geojson=1&addressdetails=1](https://nominatim.openstreetmap.org/search?q=135+pilkington+avenue,+birmingham&format=xml&polygon_geojson=1&addressdetails=1)
 
 ```xml
   <searchresults timestamp="Sat, 07 Nov 09 14:42:10 +0000" querystring="135 pilkington, avenue birmingham" polygon="true">
-    <place 
-      place_id="1620612" osm_type="node" osm_id="452010817" 
-      boundingbox="52.548641204834,52.5488433837891,-1.81612110137939,-1.81592094898224" 
-      polygonpoints="[['-1.81592098644987','52.5487429714954'],['-1.81592290792183','52.5487234624632'],...]" 
-      lat="52.5487429714954" lon="-1.81602098644987" 
-      display_name="135, Pilkington Avenue, Wylde Green, City of Birmingham, West Midlands (county), B72, United Kingdom" 
+    <place
+      place_id="1620612" osm_type="node" osm_id="452010817"
+      boundingbox="52.548641204834,52.5488433837891,-1.81612110137939,-1.81592094898224"
+      lat="52.5487429714954" lon="-1.81602098644987"
+      display_name="135, Pilkington Avenue, Wylde Green, City of Birmingham, West Midlands (county), B72, United Kingdom"
       class="place" type="house">
+      <geokml>
+        <Polygon>
+          <outerBoundaryIs>
+            <LinearRing>
+              <coordinates>-1.816513,52.548756599999997 -1.816434,52.548747300000002 -1.816429,52.5487629 -1.8163717,52.548756099999999 -1.8163464,52.548834599999999 -1.8164599,52.548848100000001 -1.8164685,52.5488213 -1.8164913,52.548824000000003 -1.816513,52.548756599999997</coordinates>
+            </LinearRing>
+          </outerBoundaryIs>
+        </Polygon>
+      </geokml>
       <house_number>135</house_number>
       <road>Pilkington Avenue</road>
       <village>Wylde Green</village>
@@ -237,7 +248,7 @@ This overrides the specified machine readable format. (Default: 0)
 
 ##### JSON with address details
 
-[https://nominatim.openstreetmap.org/?format=json&addressdetails=1&q=bakery+in+berlin+wedding&format=json&limit=1](https://nominatim.openstreetmap.org/?format=json&addressdetails=1&q=bakery+in+berlin+wedding&format=json&limit=1)
+[https://nominatim.openstreetmap.org/?addressdetails=1&q=bakery+in+berlin+wedding&format=json&limit=1](https://nominatim.openstreetmap.org/?addressdetails=1&q=bakery+in+berlin+wedding&format=json&limit=1)
 
 ```json
     {
diff --git a/docs/api/Status.md b/docs/api/Status.md
new file mode 100644 (file)
index 0000000..0241b6f
--- /dev/null
@@ -0,0 +1,60 @@
+# Status
+
+Useful for checking if the service and database is running. The JSON output also shows
+when the database was last updated.
+
+## Parameters
+
+* `format=[text|json]` (defaults to 'text')
+
+
+## Output
+
+#### Text format
+
+```
+   https://nominatim.openstreetmap.org/status.php
+```
+
+will return HTTP status code 200 and print `OK`.
+
+On error it will return HTTP status code 500 and print a message, e.g.
+`ERROR: Database connection failed`.
+
+
+
+#### JSON format
+
+```
+   https://nominatim.openstreetmap.org/status.php?format=json
+```
+
+will return HTTP code 200 and a structure
+
+```json
+  {
+      "status": 0,
+      "message": "OK",
+      "data_updated": "2020-05-04T14:47:00+00:00"
+  }
+```
+
+On error will also return HTTP status code 200 and a structure with error
+code and message, e.g.
+
+```json
+   {
+       "status": 700,
+       "message": "Database connection failed"
+   }
+```
+
+Possible status codes are
+
+   |     | message              | notes                                             |
+   |-----|----------------------|---------------------------------------------------|
+   | 700 | "No database"        | connection failed                                 |
+   | 701 | "Module failed"      | database could not load nominatim.so              |
+   | 702 | "Module call failed" | nominatim.so loaded but calling a function failed |
+   | 703 | "Query failed"       | test query against a database table failed        |
+   | 704 | "No value"           | test query worked but returned no results         |
diff --git a/docs/data-sources/overview.md b/docs/data-sources/overview.md
new file mode 100644 (file)
index 0000000..a6dc0db
--- /dev/null
@@ -0,0 +1,4 @@
+# Additional Data Sources
+
+This guide explains how data sources other than OpenStreetMap mentioned in
+the install instructions got obtained and converted.
diff --git a/docs/develop/Documentation.md b/docs/develop/Documentation.md
new file mode 100644 (file)
index 0000000..df8d2b1
--- /dev/null
@@ -0,0 +1,36 @@
+# Documentation Pages
+
+The [Nominatim documentation](https://nominatim.org/release-docs/develop/) is built using the [MkDocs](https://www.mkdocs.org/) static site generation framework. The master branch is automatically deployed every night on under [https://nominatim.org/release-docs/develop/](https://nominatim.org/release-docs/develop/)
+
+To preview local changes, first install MkDocs
+
+```
+pip3 install --user mkdocs
+```
+
+
+Then go to the build directory and run
+
+```
+make doc
+INFO - Cleaning site directory
+INFO - Building documentation to directory: /home/vagrant/build/site-html
+```
+
+This runs `mkdocs build` plus extra transformation of some files and adds
+symlinks (see `CMakeLists.txt` for the exact steps).
+
+Now you can start webserver for local testing
+
+```
+build> mkdocs serve
+[server:296] Serving on http://127.0.0.1:8000
+[handlers:62] Start watching changes
+```
+
+If you develop inside a Vagrant virtual machine:
+
+ * add port forwarding to your Vagrantfile,
+   e.g. `config.vm.network "forwarded_port", guest: 8000, host: 8000`
+ * use `mkdocs serve --dev-addr 0.0.0.0:8000` because the default localhost
+   IP does not get forwarded.
diff --git a/docs/develop/Import.md b/docs/develop/Import.md
new file mode 100644 (file)
index 0000000..5a323d2
--- /dev/null
@@ -0,0 +1,170 @@
+# OSM Data Import
+
+OSM data is initially imported using osm2pgsql. Nominatim uses its own data
+output style 'gazetteer', which differs from the output style created for
+map rendering.
+
+## Database Layout
+
+The gazetteer style produces a single table `place` with the following rows:
+
+ * `osm_type` - kind of OSM object (**N** - node, **W** - way, **R** - relation)
+ * `osm_id` - original OSM ID
+ * `class` - key of principal tag defining the object type
+ * `type` - value of principal tag defining the object type
+ * `name` - collection of tags that contain a name or reference
+ * `admin_level` - numerical value of the tagged administrative level
+ * `address` - collection of tags defining the address of an object
+ * `extratags` - collection of additional interesting tags that are not
+                 directly relevant for searching
+ * `geometry` - geometry of the object (in WGS84)
+
+A single OSM object may appear multiple times in this table when it is tagged
+with multiple tags that may constitute a principal tag. Take for example a
+motorway bridge. In OSM, this would be a way which is tagged with
+`highway=motorway` and `bridge=yes`. This way would appear in the `place` table
+once with `class` of `highway` and once with a `class` of `bridge`. Thus the
+*unique key* for `place` is (`osm_type`, `osm_id`, `class`).
+
+## Configuring the Import
+
+How tags are interpreted and assigned to the different `place` columns can be
+configured via the import style configuration file (`CONST_Import_style`). This
+is a JSON file which contains a list of rules which are matched against every
+tag of every object and then assign the tag its specific role.
+
+### Configuration Rules
+
+A single rule looks like this:
+
+```json
+{
+    "keys" : ["key1", "key2", ...],
+    "values" : {
+        "value1" : "prop",
+        "value2" : "prop1,prop2"
+    }
+}
+```
+
+A rule first defines a list of keys to apply the rule to. This is always a list
+of strings. The string may have four forms. An empty string matches against
+any key. A string that ends in an asterisk `*` is a prefix match and accordingly
+matches against any key that starts with the given string (minus the `*`). A
+suffix match can be defined similarly with a string that starts with a `*`. Any
+other string constitutes an exact match.
+
+The second part of the rules defines a list of values and the properties that
+apply to a successful match. Value strings may be either empty, which
+means that they match any value, or describe an exact match. Prefix
+or suffix matching of values is not possible.
+
+For a rule to match, it has to find a valid combination of keys and values. The
+resulting property is that of the matched values.
+
+The rules in a configuration file are processed sequentially and the first
+match for each tag wins.
+
+A rule where key and value are the empty string is special. This defines the
+fallback when none of the rules match. The fallback is always used as a last
+resort when nothing else matches, no matter where the rule appears in the file.
+Defining multiple fallback rules is not allowed. What happens in this case,
+is undefined.
+
+### Tag Properties
+
+One or more of the following properties may be given for each tag:
+
+* `main`
+
+    A principal tag. A new row will be added for the object with key and value
+    as `class` and `type`.
+
+* `with_name`
+
+    When the tag is a principal tag (`main` property set): only really add a new
+    row, if there is any name tag found (a reference tag is not sufficient, see
+    below).
+
+* `with_name_key`
+
+    When the tag is a principal tag (`main` property set): only really add a new
+    row, if there is also a name tag that matches the key of the principal tag.
+    For example, if the main tag is `bridge=yes`, then it will only be added as
+    an extra row, if there is a tag `bridge:name[:XXX]` for the same object.
+    If this property is set, all other names that are not domain-specific are
+    ignored.
+
+* `fallback`
+
+    When the tag is a principal tag (`main` property set): only really add a new
+    row, when no other principal tags for this object have been found. Only one
+    fallback tag can win for an object.
+
+* `operator`
+
+    When the tag is a principal tag (`main` property set): also include the
+    `operator` tag in the list of names. This is a special construct for an
+    out-dated tagging practise in OSM. Fuel stations and chain restaurants
+    in particular used to have the name of the chain tagged as `operator`.
+    These days the chain can be more commonly found in the `brand` tag but
+    there is still enough old data around to warrant this special case.
+
+* `name`
+
+    Add tag to the list of names.
+
+* `ref`
+
+    Add tag to the list of names as a reference. At the moment this only means
+    that the object is not considered to be named for `with_name`.
+
+* `address`
+
+    Add tag to the list of address tags. If the tag starts with `addr:` or
+    `is_in:`, then this prefix is cut off before adding it to the list.
+
+* `postcode`
+
+    Add the value as a postcode to the address tags. If multiple tags are
+    candidate for postcodes, one wins out and the others are dropped.
+
+* `country`
+
+    Add the value as a country code to the address tags. The value must be a
+    two letter country code, otherwise it is ignored. If there are multiple
+    tags that match, then one wins out and the others are dropped.
+
+* `house`
+
+    If no principle tags can be found for the object, still add the object with
+    `class`=`place` and `type`=`house`. Use this for address nodes that have no
+    other function.
+
+* `interpolation`
+
+    Add this object as an address interpolation (appears as `class`=`place` and
+    `type`=`houses` in the database).
+
+* `extra`
+
+    Add tag to the list of extra tags.
+
+* `skip`
+
+    Skip the tag completely. Useful when a custom default fallback is defined
+    or to define exceptions to rules.
+
+A rule can define as many of these properties for one match as it likes. For
+example, if the property is `"main,extra"` then the tag will open a new row
+but also have the tag appear in the list of extra tags.
+
+There are a number of pre-defined styles in the `settings/` directory. It is
+advisable to start from one of these styles when defining your own.
+
+### Changing the Style of Existing Databases
+
+There is normally no issue changing the style of a database that is already
+imported and now kept up-to-date with change files. Just be aware that any
+change in the style applies to updates only. If you want to change the data
+that is already in the database, then a reimport is necessary.
diff --git a/docs/develop/Postcodes.md b/docs/develop/Postcodes.md
new file mode 100644 (file)
index 0000000..ff36b0d
--- /dev/null
@@ -0,0 +1,45 @@
+# Postcodes in Nominatim
+
+The blog post
+[Nominatim and Postcodes](https://www.openstreetmap.org/user/lonvia/diary/43143)
+describes the handling implemented since Nominatim 3.1.
+
+Postcode centroids (aka 'calculated postcodes') are generated by looking at all
+postcodes of a country, grouping them and calculating the geometric centroid.
+There is currently no logic to deal with extreme outliers (typos or other
+mistakes in OSM data). There is also no check if a postcodes adheres to a
+country's format, e.g. if Swiss postcodes are 4 digits.
+
+
+## Regular updating calculated postcodes
+
+The script to rerun the calculation is
+`build/utils/update.php --calculate-postcodes`
+and runs once per night on nominatim.openstreetmap.org.
+
+
+## Finding places that share a specific postcode
+
+In the Nominatim database run
+
+```sql
+SELECT address->'postcode' as pc,
+       osm_type, osm_id, class, type,
+       st_x(centroid) as lon, st_y(centroid) as lat
+FROM placex
+WHERE country_code='fr'
+  AND upper(trim (both ' ' from address->'postcode')) = '33210';
+```
+
+Alternatively on [Overpass](https://overpass-turbo.eu/) run the following query
+
+```
+[out:json][timeout:250];
+area["name"="France"]->.boundaryarea;
+(
+nwr(area.boundaryarea)["addr:postcode"="33210"];
+);
+out body;
+>;
+out skel qt;
+```
diff --git a/docs/develop/Ranking.md b/docs/develop/Ranking.md
new file mode 100644 (file)
index 0000000..776de8f
--- /dev/null
@@ -0,0 +1,90 @@
+# Place Ranking in Nominatim
+
+Nominatim uses two metrics to rank a place: search rank and address rank.
+Both can be assigned a value between 0 and 30. They serve slightly
+different purposes, which are explained in this chapter.
+
+## Search rank
+
+The search rank describes the extent and importance of a place. It is used
+when ranking search result. Simply put, if there are two results for a
+search query which are otherwise equal, then the result with the _lower_
+search rank will be appear higher in the result list.
+
+Search ranks are not so important these days because many well-known
+places use the Wikipedia importance ranking instead.
+
+## Address rank
+
+The address rank describes where a place shows up in an address hierarchy.
+Usually only administrative boundaries and place nodes and areas are
+eligible to be part of an address. All other objects have an address rank
+of 0.
+
+Note that the search rank of a place plays a role in the address computation
+as well. When collecting the places that should make up the address parts
+then only places are taken into account that have a lower address rank than
+the search rank of the base object.
+
+## Rank configuration
+
+Search and address ranks are assigned to a place when it is first imported
+into the database. There are a few hard-coded rules for the assignment:
+
+ * postcodes follow special rules according to their length
+ * boundaries that are not areas and railway=rail are dropped completely
+ * the following are always search rank 30 and address rank 0:
+    * highway nodes
+    * landuse that is not an area
+
+Other than that, the ranks can be freely assigned via the JSON file
+defined with `CONST_Address_Level_Config` according to their type and
+the country they are in.
+
+The address level configuration must consist of an array of configuration
+entries, each containing a tag definition and an optional country array:
+
+```
+[ {
+    "tags" : {
+      "place" : {
+        "county" : 12,
+        "city" : 16,
+      },
+      "landuse" : {
+        "residential" : 22,
+        "" : 30
+      }
+    }
+  },
+  {
+    "countries" : [ "ca", "us" ],
+    "tags" : {
+      "boundary" : {
+        "administrative8" : 18,
+        "administrative9" : 20
+      },
+      "landuse" : {
+        "residential" : [22, 0]
+      }
+    }
+  }
+]
+```
+
+The `countries` field contains a list of countries (as ISO 3166-1 alpha 2 code)
+for which the definition applies. When the field is omitted, then the
+definition is used as a fallback, when nothing more specific for a given
+country exists.
+
+`tags` contains the ranks for key/value pairs. The ranks can be either a
+single number, in which case they are the search and address rank, or an array
+of search and address rank (in that order). The value may be left empty.
+Then the rank is used when no more specific value is found for the given
+key.
+
+Countries and key/value combination may appear in multiple definitions. Just
+make sure that each combination of counrty/key/value appears only once per
+file. Otherwise the import will fail with a UNIQUE INDEX constraint violation
+on import.
+
index 179eeb0b6328f8333037700c689d5ba577501e45..c0a37a41dd8b54e296e33476d6576dd8571b519e 100644 (file)
@@ -1,6 +1,6 @@
 # Basic Architecture
 
-Nominatim provides geocoding based on OpenStreetMap data. It uses a Postgresql
+Nominatim provides geocoding based on OpenStreetMap data. It uses a PostgreSQL
 database as a backend for storing the data.
 
 There are three basic parts to Nominatim's architecture: the data import,
@@ -15,10 +15,10 @@ the import can be found in the database table `place`.
 The __address computation__ or __indexing__ stage takes the data from `place`
 and adds additional information needed for geocoding. It ranks the places by
 importance, links objects that belong together and computes addresses and
-the search index. Most of this work is done in Pl/pqSQL via database triggers
+the search index. Most of this work is done in PL/pgSQL via database triggers
 and can be found in the file `sql/functions.sql`.
 
-The __search frontend__ implements the actual API. It takes queries for
-search and reverse geocoding queries from the user, looks up the data and
+The __search frontend__ implements the actual API. It takes search
+and reverse geocoding queries from the user, looks up the data and
 returns the results in the requested format. This part is written in PHP
 and can be found in the `lib/` and `website/` directories.
index b620decf19bbed792e0aa9b15f4c450d5e7a4d69..88663f8b1892cd7305d4d4870be0b13d85e253b3 100644 (file)
@@ -1,7 +1,7 @@
 site_name: Nominatim Documentation
 theme: readthedocs
 docs_dir: ${CMAKE_CURRENT_BINARY_DIR}
-site_url: http://nominatim.org
+site_url: https://nominatim.org
 repo_url: https://github.com/openstreetmap/Nominatim
 pages:
     - 'Introduction' : 'index.md'
@@ -11,22 +11,35 @@ pages:
         - 'Reverse': 'api/Reverse.md'
         - 'Address Lookup': 'api/Lookup.md'
         - 'Details' : 'api/Details.md'
+        - 'Status' : 'api/Status.md'
         - 'Place Output Formats': 'api/Output.md'
         - 'FAQ': 'api/Faq.md'
     - 'Administration Guide':
         - 'Basic Installation': 'admin/Installation.md'
         - 'Importing and Updating' : 'admin/Import-and-Update.md'
+        - 'Advanced Installations' : 'admin/Advanced-Installations.md'
         - 'Migration from older Versions' : 'admin/Migration.md'
         - 'Troubleshooting' : 'admin/Faq.md'
     - 'Developers Guide':
         - 'Overview' : 'develop/overview.md'
+        - 'OSM Data Import' : 'develop/Import.md'
+        - 'Place Ranking' : 'develop/Ranking.md'
+        - 'Postcodes' : 'develop/Postcodes.md'
+        - 'Documentation' : 'develop/Documentation.md'
+    - 'External Data Sources':
+        - 'Overview' : 'data-sources/overview.md'
+        - 'US Census (Tiger)': 'data-sources/US-Tiger.md'
+        - 'GB Postcodes': 'data-sources/GB-Postcodes.md'
+        - 'Country Grid': 'data-sources/Country-Grid.md'
+        - 'Wikipedia & Wikidata': 'data-sources/Wikipedia-Wikidata.md'
     - 'Appendix':
         - 'Installation on CentOS 7' : 'appendix/Install-on-Centos-7.md'
-        - 'Installation on Ubuntu 16' : 'appendix/Install-on-Ubuntu-16.md'
+        - 'Installation on CentOS 8' : 'appendix/Install-on-Centos-8.md'
         - 'Installation on Ubuntu 18' : 'appendix/Install-on-Ubuntu-18.md'
+        - 'Installation on Ubuntu 20' : 'appendix/Install-on-Ubuntu-20.md'
 markdown_extensions:
-    - codehilite:
-        use_pygments: False
+    - codehilite
+    - admonition
     - toc:
         permalink: 
-extra_css: [extra.css]
+extra_css: [extra.css, styles.css]
diff --git a/docs/styles.css b/docs/styles.css
new file mode 100644 (file)
index 0000000..8ba0a1d
--- /dev/null
@@ -0,0 +1,69 @@
+.codehilite .hll { background-color: #ffffcc }
+.codehilite  { background: #f0f0f0; }
+.codehilite .c { color: #60a0b0; font-style: italic } /* Comment */
+.codehilite .err { /* border: 1px solid #FF0000 */ } /* Error */
+.codehilite .k { color: #007020; font-weight: bold } /* Keyword */
+.codehilite .o { color: #666666 } /* Operator */
+.codehilite .ch { color: #60a0b0; font-style: italic } /* Comment.Hashbang */
+.codehilite .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.codehilite .cp { color: #007020 } /* Comment.Preproc */
+.codehilite .cpf { color: #60a0b0; font-style: italic } /* Comment.PreprocFile */
+.codehilite .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.codehilite .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.codehilite .gd { color: #A00000 } /* Generic.Deleted */
+.codehilite .ge { font-style: italic } /* Generic.Emph */
+.codehilite .gr { color: #FF0000 } /* Generic.Error */
+.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.codehilite .gi { color: #00A000 } /* Generic.Inserted */
+.codehilite .go { color: #888888 } /* Generic.Output */
+.codehilite .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.codehilite .gs { font-weight: bold } /* Generic.Strong */
+.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.codehilite .gt { color: #0044DD } /* Generic.Traceback */
+.codehilite .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.codehilite .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.codehilite .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.codehilite .kp { color: #007020 } /* Keyword.Pseudo */
+.codehilite .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.codehilite .kt { color: #902000 } /* Keyword.Type */
+.codehilite .m { color: #40a070 } /* Literal.Number */
+.codehilite .s { color: #4070a0 } /* Literal.String */
+.codehilite .na { color: #4070a0 } /* Name.Attribute */
+.codehilite .nb { color: #007020 } /* Name.Builtin */
+.codehilite .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.codehilite .no { color: #60add5 } /* Name.Constant */
+.codehilite .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.codehilite .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.codehilite .ne { color: #007020 } /* Name.Exception */
+.codehilite .nf { color: #06287e } /* Name.Function */
+.codehilite .nl { color: #002070; font-weight: bold } /* Name.Label */
+.codehilite .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.codehilite .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.codehilite .nv { color: #bb60d5 } /* Name.Variable */
+.codehilite .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.codehilite .w { color: #bbbbbb } /* Text.Whitespace */
+.codehilite .mb { color: #40a070 } /* Literal.Number.Bin */
+.codehilite .mf { color: #40a070 } /* Literal.Number.Float */
+.codehilite .mh { color: #40a070 } /* Literal.Number.Hex */
+.codehilite .mi { color: #40a070 } /* Literal.Number.Integer */
+.codehilite .mo { color: #40a070 } /* Literal.Number.Oct */
+.codehilite .sa { color: #4070a0 } /* Literal.String.Affix */
+.codehilite .sb { color: #4070a0 } /* Literal.String.Backtick */
+.codehilite .sc { color: #4070a0 } /* Literal.String.Char */
+.codehilite .dl { color: #4070a0 } /* Literal.String.Delimiter */
+.codehilite .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.codehilite .s2 { color: #4070a0 } /* Literal.String.Double */
+.codehilite .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.codehilite .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.codehilite .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.codehilite .sx { color: #c65d09 } /* Literal.String.Other */
+.codehilite .sr { color: #235388 } /* Literal.String.Regex */
+.codehilite .s1 { color: #4070a0 } /* Literal.String.Single */
+.codehilite .ss { color: #517918 } /* Literal.String.Symbol */
+.codehilite .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.codehilite .fm { color: #06287e } /* Name.Function.Magic */
+.codehilite .vc { color: #bb60d5 } /* Name.Variable.Class */
+.codehilite .vg { color: #bb60d5 } /* Name.Variable.Global */
+.codehilite .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.codehilite .vm { color: #bb60d5 } /* Name.Variable.Magic */
+.codehilite .il { color: #40a070 } /* Literal.Number.Integer.Long */
index badf868de8774ab5c568b1119a51594e8c987882..3322c6b2da8d985f6473a2cecba540cd53d5dd14 100644 (file)
@@ -9,29 +9,32 @@ require_once(CONST_BasePath.'/lib/ClassTypes.php');
  */
 class AddressDetails
 {
+    private $iPlaceID;
     private $aAddressLines;
 
     public function __construct(&$oDB, $iPlaceID, $sHousenumber, $mLangPref)
     {
+        $this->iPlaceID = $iPlaceID;
+
         if (is_array($mLangPref)) {
-            $mLangPref = 'ARRAY['.join(',', array_map('getDBQuoted', $mLangPref)).']';
+            $mLangPref = $oDB->getArraySQL($oDB->getDBQuotedList($mLangPref));
         }
 
-        if (!$sHousenumber) {
+        if (!isset($sHousenumber)) {
             $sHousenumber = -1;
         }
 
         $sSQL = 'SELECT *,';
-        $sSQL .= '  get_name_by_language(name,'.$mLangPref.') as localname';
+        $sSQL .= ' get_name_by_language(name,'.$mLangPref.') as localname';
         $sSQL .= ' FROM get_addressdata('.$iPlaceID.','.$sHousenumber.')';
-        $sSQL .= ' ORDER BY rank_address desc,isaddress DESC';
+        $sSQL .= ' ORDER BY rank_address DESC, isaddress DESC';
 
-        $this->aAddressLines = chksql($oDB->getAll($sSQL));
+        $this->aAddressLines = $oDB->getAll($sSQL);
     }
 
     private static function isAddress($aLine)
     {
-        return $aLine['isaddress'] == 't' || $aLine['type'] == 'country_code';
+        return $aLine['isaddress'] || $aLine['type'] == 'country_code';
     }
 
     public function getAddressDetails($bAll = false)
@@ -40,7 +43,7 @@ class AddressDetails
             return $this->aAddressLines;
         }
 
-        return array_filter($this->aAddressLines, 'AddressDetails::isAddress');
+        return array_filter($this->aAddressLines, array(__CLASS__, 'isAddress'));
     }
 
     public function getLocaleAddress()
@@ -49,7 +52,7 @@ class AddressDetails
         $sPrevResult = '';
 
         foreach ($this->aAddressLines as $aLine) {
-            if ($aLine['isaddress'] == 't' && $sPrevResult != $aLine['localname']) {
+            if ($aLine['isaddress'] && $sPrevResult != $aLine['localname']) {
                 $sPrevResult = $aLine['localname'];
                 $aParts[] = $sPrevResult;
             }
@@ -76,14 +79,14 @@ class AddressDetails
                 $bFallback = true;
             }
 
-            $sName = false;
-            if (isset($aLine['localname']) && $aLine['localname']) {
+            $sName = null;
+            if (isset($aLine['localname']) && $aLine['localname']!=='') {
                 $sName = $aLine['localname'];
-            } elseif (isset($aLine['housenumber']) && $aLine['housenumber']) {
+            } elseif (isset($aLine['housenumber']) && $aLine['housenumber']!=='') {
                 $sName = $aLine['housenumber'];
             }
 
-            if ($sName) {
+            if (isset($sName)) {
                 $sTypeLabel = strtolower(isset($aTypeLabel['simplelabel']) ? $aTypeLabel['simplelabel'] : $aTypeLabel['label']);
                 $sTypeLabel = str_replace(' ', '_', $sTypeLabel);
                 if (!isset($aAddress[$sTypeLabel])
@@ -97,13 +100,67 @@ class AddressDetails
                 }
             }
         }
+
         return $aAddress;
     }
 
+    /**
+     * Annotates the given json with geocodejson address information fields.
+     *
+     * @param array  $aJson  Json hash to add the fields to.
+     *
+     * Geocodejson has the following fields:
+     *  street, locality, postcode, city, district,
+     *  county, state, country
+     *
+     * Postcode and housenumber are added by type, district is not used.
+     * All other fields are set according to address rank.
+     */
+    public function addGeocodeJsonAddressParts(&$aJson)
+    {
+        foreach (array_reverse($this->aAddressLines) as $aLine) {
+            if (!$aLine['isaddress']) {
+                continue;
+            }
+
+            if (!isset($aLine['localname']) || $aLine['localname'] == '') {
+                continue;
+            }
+
+            if ($aLine['type'] == 'postcode' || $aLine['type'] == 'postal_code') {
+                $aJson['postcode'] = $aLine['localname'];
+            } elseif ($aLine['type'] == 'house_number') {
+                $aJson['housenumber'] = $aLine['localname'];
+            }
+
+            if ($this->iPlaceID == $aLine['place_id']) {
+                continue;
+            }
+
+            $iRank = (int)$aLine['rank_address'];
+
+            if ($iRank > 25 && $iRank < 28) {
+                $aJson['street'] = $aLine['localname'];
+            } elseif ($iRank >= 22 && $iRank <= 25) {
+                $aJson['locality'] = $aLine['localname'];
+            } elseif ($iRank >= 17 && $iRank <= 21) {
+                $aJson['district'] = $aLine['localname'];
+            } elseif ($iRank >= 13 && $iRank <= 16) {
+                $aJson['city'] = $aLine['localname'];
+            } elseif ($iRank >= 10 && $iRank <= 12) {
+                $aJson['county'] = $aLine['localname'];
+            } elseif ($iRank >= 5 && $iRank <= 9) {
+                $aJson['state'] = $aLine['localname'];
+            } elseif ($iRank == 4) {
+                $aJson['country'] = $aLine['localname'];
+            }
+        }
+    }
+
     public function getAdminLevels()
     {
         $aAddress = array();
-        foreach ($this->aAddressLines as $aLine) {
+        foreach (array_reverse($this->aAddressLines) as $aLine) {
             if (self::isAddress($aLine)
                 && isset($aLine['admin_level'])
                 && $aLine['admin_level'] < 15
index d46847f1c7a65d6ec7565070361ac32da0bb5383..a7c2cd4f8e25159d1d9a15a31d76511ef55202ab 100644 (file)
@@ -6,6 +6,13 @@ function getInfo($aPlace)
 {
     $aClassType = getList();
 
+    if ($aPlace['type'] == 'administrative' && isset($aPlace['place_type'])) {
+        $sName = 'place:'.$aPlace['place_type'];
+        if (isset($aClassType[$sName])) {
+            return $aClassType[$sName];
+        }
+    }
+
     if (isset($aPlace['admin_level'])) {
         $sName = $aPlace['class'].':'.$aPlace['type'].':'.$aPlace['admin_level'];
         if (isset($aClassType[$sName])) {
@@ -72,12 +79,13 @@ function getList()
             'boundary:administrative:1' => array('label' => 'Continent', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defdiameter' => 0.32),
             'boundary:administrative:2' => array('label' => 'Country', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defdiameter' => 0.32),
             'place:country' => array('label' => 'Country', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defzoom' => 6, 'defdiameter' => 15),
-            'boundary:administrative:3' => array('label' => 'State', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defdiameter' => 0.32),
+            'boundary:administrative:3' => array('label' => 'Region', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defdiameter' => 0.32),
             'boundary:administrative:4' => array('label' => 'State', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defdiameter' => 0.32),
             'place:state' => array('label' => 'State', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defzoom' => 8, 'defdiameter' => 5.12),
+            'place:province' => array('label' => 'Province', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defzoom' => 8, 'defdiameter' => 5.12),
             'boundary:administrative:5' => array('label' => 'State District', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defdiameter' => 0.32),
             'boundary:administrative:6' => array('label' => 'County', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defdiameter' => 0.32),
-            'boundary:administrative:7' => array('label' => 'County', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defdiameter' => 0.32),
+            'boundary:administrative:7' => array('label' => 'Municipality', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defdiameter' => 0.32),
             'place:county' => array('label' => 'County', 'frequency' => 108, 'icon' => 'poi_boundary_administrative', 'defzoom' => 10, 'defdiameter' => 1.28),
             'boundary:administrative:8' => array('label' => 'City', 'frequency' => 0, 'icon' => 'poi_boundary_administrative', 'defdiameter' => 0.32),
             'place:city' => array('label' => 'City', 'frequency' => 66, 'icon' => 'poi_place_city', 'defzoom' => 12, 'defdiameter' => 0.32),
@@ -260,7 +268,7 @@ function getList()
             'tourism:caravan_site' => array('label' => 'Caravan Site', 'frequency' => 183, 'icon' => 'accommodation_caravan_park'),
             'amenity:bus_station' => array('label' => 'Bus Station', 'frequency' => 181, 'icon' => 'transport_bus_station'),
             'amenity:kindergarten' => array('label' => 'Kindergarten', 'frequency' => 179),
-            'highway:construction' => array('label' => 'Construction', 'frequency' => 176),
+            'highway:construction' => array('label' => 'Construction', 'frequency' => 176, 'simplelabel' => 'road'),
             'amenity:atm' => array('label' => 'Atm', 'frequency' => 172, 'icon' => 'money_atm2'),
             'amenity:emergency_phone' => array('label' => 'Emergency Phone', 'frequency' => 164),
             'waterway:lock' => array('label' => 'Lock', 'frequency' => 146),
diff --git a/lib/DB.php b/lib/DB.php
new file mode 100644 (file)
index 0000000..38b3e27
--- /dev/null
@@ -0,0 +1,421 @@
+<?php
+
+namespace Nominatim;
+
+require_once(CONST_BasePath.'/lib/DatabaseError.php');
+
+/**
+ * Uses PDO to access the database specified in the CONST_Database_DSN
+ * setting.
+ */
+class DB
+{
+    protected $connection;
+
+    public function __construct($sDSN = CONST_Database_DSN)
+    {
+        $this->sDSN = $sDSN;
+    }
+
+    public function connect($bNew = false, $bPersistent = true)
+    {
+        if (isset($this->connection) && !$bNew) {
+            return true;
+        }
+        $aConnOptions = array(
+                         \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
+                         \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
+                         \PDO::ATTR_PERSISTENT         => $bPersistent
+        );
+
+        // https://secure.php.net/manual/en/ref.pdo-pgsql.connection.php
+        try {
+            $conn = new \PDO($this->sDSN, null, null, $aConnOptions);
+        } catch (\PDOException $e) {
+            $sMsg = 'Failed to establish database connection:' . $e->getMessage();
+            throw new \Nominatim\DatabaseError($sMsg, 500, null, $e->getMessage());
+        }
+
+        $conn->exec("SET DateStyle TO 'sql,european'");
+        $conn->exec("SET client_encoding TO 'utf-8'");
+        $iMaxExecution = ini_get('max_execution_time');
+        if ($iMaxExecution > 0) $conn->setAttribute(\PDO::ATTR_TIMEOUT, $iMaxExecution); // seconds
+
+        $this->connection = $conn;
+        return true;
+    }
+
+    // returns the number of rows that were modified or deleted by the SQL
+    // statement. If no rows were affected returns 0.
+    public function exec($sSQL, $aInputVars = null, $sErrMessage = 'Database query failed')
+    {
+        $val = null;
+        try {
+            if (isset($aInputVars)) {
+                $stmt = $this->connection->prepare($sSQL);
+                $stmt->execute($aInputVars);
+            } else {
+                $val = $this->connection->exec($sSQL);
+            }
+        } catch (\PDOException $e) {
+            throw new \Nominatim\DatabaseError($sErrMessage, 500, null, $e, $sSQL);
+        }
+        return $val;
+    }
+
+    /**
+     * Executes query. Returns first row as array.
+     * Returns false if no result found.
+     *
+     * @param string  $sSQL
+     *
+     * @return array[]
+     */
+    public function getRow($sSQL, $aInputVars = null, $sErrMessage = 'Database query failed')
+    {
+        try {
+            $stmt = $this->getQueryStatement($sSQL, $aInputVars, $sErrMessage);
+            $row = $stmt->fetch();
+        } catch (\PDOException $e) {
+            throw new \Nominatim\DatabaseError($sErrMessage, 500, null, $e, $sSQL);
+        }
+        return $row;
+    }
+
+    /**
+     * Executes query. Returns first value of first result.
+     * Returns false if no results found.
+     *
+     * @param string  $sSQL
+     *
+     * @return array[]
+     */
+    public function getOne($sSQL, $aInputVars = null, $sErrMessage = 'Database query failed')
+    {
+        try {
+            $stmt = $this->getQueryStatement($sSQL, $aInputVars, $sErrMessage);
+            $row = $stmt->fetch(\PDO::FETCH_NUM);
+            if ($row === false) return false;
+        } catch (\PDOException $e) {
+            throw new \Nominatim\DatabaseError($sErrMessage, 500, null, $e, $sSQL);
+        }
+        return $row[0];
+    }
+
+    /**
+     * Executes query. Returns array of results (arrays).
+     * Returns empty array if no results found.
+     *
+     * @param string  $sSQL
+     *
+     * @return array[]
+     */
+    public function getAll($sSQL, $aInputVars = null, $sErrMessage = 'Database query failed')
+    {
+        try {
+            $stmt = $this->getQueryStatement($sSQL, $aInputVars, $sErrMessage);
+            $rows = $stmt->fetchAll();
+        } catch (\PDOException $e) {
+            throw new \Nominatim\DatabaseError($sErrMessage, 500, null, $e, $sSQL);
+        }
+        return $rows;
+    }
+
+    /**
+     * Executes query. Returns array of the first value of each result.
+     * Returns empty array if no results found.
+     *
+     * @param string  $sSQL
+     *
+     * @return array[]
+     */
+    public function getCol($sSQL, $aInputVars = null, $sErrMessage = 'Database query failed')
+    {
+        $aVals = array();
+        try {
+            $stmt = $this->getQueryStatement($sSQL, $aInputVars, $sErrMessage);
+
+            while (($val = $stmt->fetchColumn(0)) !== false) { // returns first column or false
+                $aVals[] = $val;
+            }
+        } catch (\PDOException $e) {
+            throw new \Nominatim\DatabaseError($sErrMessage, 500, null, $e, $sSQL);
+        }
+        return $aVals;
+    }
+
+    /**
+     * Executes query. Returns associate array mapping first value to second value of each result.
+     * Returns empty array if no results found.
+     *
+     * @param string  $sSQL
+     *
+     * @return array[]
+     */
+    public function getAssoc($sSQL, $aInputVars = null, $sErrMessage = 'Database query failed')
+    {
+        try {
+            $stmt = $this->getQueryStatement($sSQL, $aInputVars, $sErrMessage);
+
+            $aList = array();
+            while ($aRow = $stmt->fetch(\PDO::FETCH_NUM)) {
+                $aList[$aRow[0]] = $aRow[1];
+            }
+        } catch (\PDOException $e) {
+            throw new \Nominatim\DatabaseError($sErrMessage, 500, null, $e, $sSQL);
+        }
+        return $aList;
+    }
+
+    /**
+     * Executes query. Returns a PDO statement to iterate over.
+     *
+     * @param string  $sSQL
+     *
+     * @return PDOStatement
+     */
+    public function getQueryStatement($sSQL, $aInputVars = null, $sErrMessage = 'Database query failed')
+    {
+        try {
+            if (isset($aInputVars)) {
+                $stmt = $this->connection->prepare($sSQL);
+                $stmt->execute($aInputVars);
+            } else {
+                $stmt = $this->connection->query($sSQL);
+            }
+        } catch (\PDOException $e) {
+            throw new \Nominatim\DatabaseError($sErrMessage, 500, null, $e, $sSQL);
+        }
+        return $stmt;
+    }
+
+    /**
+     * St. John's Way => 'St. John\'s Way'
+     *
+     * @param string  $sVal  Text to be quoted.
+     *
+     * @return string
+     */
+    public function getDBQuoted($sVal)
+    {
+        return $this->connection->quote($sVal);
+    }
+
+    /**
+     * Like getDBQuoted, but takes an array.
+     *
+     * @param array  $aVals  List of text to be quoted.
+     *
+     * @return array[]
+     */
+    public function getDBQuotedList($aVals)
+    {
+        return array_map(function ($sVal) {
+            return $this->getDBQuoted($sVal);
+        }, $aVals);
+    }
+
+    /**
+     * [1,2,'b'] => 'ARRAY[1,2,'b']''
+     *
+     * @param array  $aVals  List of text to be quoted.
+     *
+     * @return string
+     */
+    public function getArraySQL($a)
+    {
+        return 'ARRAY['.join(',', $a).']';
+    }
+
+    /**
+     * Check if a table exists in the database. Returns true if it does.
+     *
+     * @param string  $sTableName
+     *
+     * @return boolean
+     */
+    public function tableExists($sTableName)
+    {
+        $sSQL = 'SELECT count(*) FROM pg_tables WHERE tablename = :tablename';
+        return ($this->getOne($sSQL, array(':tablename' => $sTableName)) == 1);
+    }
+
+    /**
+    * Returns a list of table names in the database
+    *
+    * @return array[]
+    */
+    public function getListOfTables()
+    {
+        return $this->getCol("SELECT tablename FROM pg_tables WHERE schemaname='public'");
+    }
+
+    /**
+     * Deletes a table. Returns true if deleted or didn't exist.
+     *
+     * @param string  $sTableName
+     *
+     * @return boolean
+     */
+    public function deleteTable($sTableName)
+    {
+        return $this->exec('DROP TABLE IF EXISTS '.$sTableName.' CASCADE') == 0;
+    }
+
+    /**
+    * Check if an index exists in the database. Optional filtered by tablename
+    *
+    * @param string  $sTableName
+    *
+    * @return boolean
+    */
+    public function indexExists($sIndexName, $sTableName = null)
+    {
+        return in_array($sIndexName, $this->getListOfIndices($sTableName));
+    }
+
+    /**
+    * Returns a list of index names in the database, optional filtered by tablename
+    *
+    * @param string  $sTableName
+    *
+    * @return array
+    */
+    public function getListOfIndices($sTableName = null)
+    {
+        //  table_name            | index_name                      | column_name
+        // -----------------------+---------------------------------+--------------
+        //  country_name          | idx_country_name_country_code   | country_code
+        //  country_osm_grid      | idx_country_osm_grid_geometry   | geometry
+        //  import_polygon_delete | idx_import_polygon_delete_osmid | osm_id
+        //  import_polygon_delete | idx_import_polygon_delete_osmid | osm_type
+        //  import_polygon_error  | idx_import_polygon_error_osmid  | osm_id
+        //  import_polygon_error  | idx_import_polygon_error_osmid  | osm_type
+        $sSql = <<< END
+SELECT
+    t.relname as table_name,
+    i.relname as index_name,
+    a.attname as column_name
+FROM
+    pg_class t,
+    pg_class i,
+    pg_index ix,
+    pg_attribute a
+WHERE
+    t.oid = ix.indrelid
+    and i.oid = ix.indexrelid
+    and a.attrelid = t.oid
+    and a.attnum = ANY(ix.indkey)
+    and t.relkind = 'r'
+    and i.relname NOT LIKE 'pg_%'
+    FILTERS
+ ORDER BY
+    t.relname,
+    i.relname,
+    a.attname
+END;
+
+        $aRows = null;
+        if ($sTableName) {
+            $sSql = str_replace('FILTERS', 'and t.relname = :tablename', $sSql);
+            $aRows = $this->getAll($sSql, array(':tablename' => $sTableName));
+        } else {
+            $sSql = str_replace('FILTERS', '', $sSql);
+            $aRows = $this->getAll($sSql);
+        }
+
+        $aIndexNames = array_unique(array_map(function ($aRow) {
+            return $aRow['index_name'];
+        }, $aRows));
+        sort($aIndexNames);
+
+        return $aIndexNames;
+    }
+
+    /**
+     * Tries to connect to the database but on failure doesn't throw an exception.
+     *
+     * @return boolean
+     */
+    public function checkConnection()
+    {
+        $bExists = true;
+        try {
+            $this->connect(true);
+        } catch (\Nominatim\DatabaseError $e) {
+            $bExists = false;
+        }
+        return $bExists;
+    }
+
+    /**
+     * e.g. 9.6, 10, 11.2
+     *
+     * @return float
+     */
+    public function getPostgresVersion()
+    {
+        $sVersionString = $this->getOne('SHOW server_version_num');
+        preg_match('#([0-9]?[0-9])([0-9][0-9])[0-9][0-9]#', $sVersionString, $aMatches);
+        return (float) ($aMatches[1].'.'.$aMatches[2]);
+    }
+
+    /**
+     * e.g. 2, 2.2
+     *
+     * @return float
+     */
+    public function getPostgisVersion()
+    {
+        $sVersionString = $this->getOne('select postgis_lib_version()');
+        preg_match('#^([0-9]+)[.]([0-9]+)[.]#', $sVersionString, $aMatches);
+        return (float) ($aMatches[1].'.'.$aMatches[2]);
+    }
+
+    /**
+     * Returns an associate array of postgresql database connection settings. Keys can
+     * be 'database', 'hostspec', 'port', 'username', 'password'.
+     * Returns empty array on failure, thus check if at least 'database' is set.
+     *
+     * @return array[]
+     */
+    public static function parseDSN($sDSN)
+    {
+        // https://secure.php.net/manual/en/ref.pdo-pgsql.connection.php
+        $aInfo = array();
+        if (preg_match('/^pgsql:(.+)$/', $sDSN, $aMatches)) {
+            foreach (explode(';', $aMatches[1]) as $sKeyVal) {
+                list($sKey, $sVal) = explode('=', $sKeyVal, 2);
+                if ($sKey == 'host') $sKey = 'hostspec';
+                if ($sKey == 'dbname') $sKey = 'database';
+                if ($sKey == 'user') $sKey = 'username';
+                $aInfo[$sKey] = $sVal;
+            }
+        }
+        return $aInfo;
+    }
+
+    /**
+     * Takes an array of settings and return the DNS string. Key names can be
+     * 'database', 'hostspec', 'port', 'username', 'password' but aliases
+     * 'dbname', 'host' and 'user' are also supported.
+     *
+     * @return string
+     *
+     */
+    public static function generateDSN($aInfo)
+    {
+        $sDSN = sprintf(
+            'pgsql:host=%s;port=%s;dbname=%s;user=%s;password=%s;',
+            $aInfo['host'] ?? $aInfo['hostspec'] ?? '',
+            $aInfo['port'] ?? '',
+            $aInfo['dbname'] ?? $aInfo['database'] ?? '',
+            $aInfo['user'] ?? '',
+            $aInfo['password'] ?? ''
+        );
+        $sDSN = preg_replace('/\b\w+=;/', '', $sDSN);
+        $sDSN = preg_replace('/;\Z/', '', $sDSN);
+
+        return $sDSN;
+    }
+}
diff --git a/lib/DatabaseError.php b/lib/DatabaseError.php
new file mode 100644 (file)
index 0000000..3a53bc8
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+
+namespace Nominatim;
+
+class DatabaseError extends \Exception
+{
+
+    public function __construct($message, $code = 500, Exception $previous = null, $oPDOErr, $sSql = null)
+    {
+        parent::__construct($message, $code, $previous);
+        // https://secure.php.net/manual/en/class.pdoexception.php
+        $this->oPDOErr = $oPDOErr;
+        $this->sSql = $sSql;
+    }
+
+    public function __toString()
+    {
+        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
+    }
+
+    public function getSqlError()
+    {
+        return $this->oPDOErr->getMessage();
+    }
+
+    public function getSqlDebugDump()
+    {
+        if (CONST_Debug) {
+            return var_export($this->oPDOErr, true);
+        } else {
+            return $this->sSql;
+        }
+    }
+}
index f0e03de5f3e75c1b8e4b81ba458963c94b8828b9..55dd46e78f44b270811a04d5bf8b2b9baba0c549 100644 (file)
@@ -245,7 +245,6 @@ class Geocode
         }
 
         $this->oPlaceLookup->loadParamArray($oParams, $sForceGeometryType);
-        $this->oPlaceLookup->setIncludePolygonAsPoints($oParams->getBool('polygon'));
         $this->oPlaceLookup->setIncludeAddressDetails($oParams->getBool('addressdetails', false));
     }
 
@@ -348,10 +347,7 @@ class Geocode
             $aNewPhraseSearches = array();
             $sPhraseType = $bIsStructured ? $oPhrase->getPhraseType() : '';
 
-            foreach ($oPhrase->getWordSets() as $iWordSet => $aWordset) {
-                // Too many permutations - too expensive
-                if ($iWordSet > 120) break;
-
+            foreach ($oPhrase->getWordSets() as $aWordset) {
                 $aWordsetSearches = $aSearches;
 
                 // Add all words from this wordset
@@ -527,8 +523,8 @@ class Geocode
         $sNormQuery = $this->normTerm($this->sQuery);
         Debug::printVar('Normalized query', $sNormQuery);
 
-        $sLanguagePrefArraySQL = getArraySQL(
-            array_map('getDBQuoted', $this->aLangPrefOrder)
+        $sLanguagePrefArraySQL = $this->oDB->getArraySQL(
+            $this->oDB->getDBQuotedList($this->aLangPrefOrder)
         );
 
         $sQuery = $this->sQuery;
@@ -546,7 +542,6 @@ class Geocode
         // Do we have anything that looks like a lat/lon pair?
         $sQuery = $oCtx->setNearPointFromQuery($sQuery);
 
-        $aResults = array();
         if ($sQuery || $this->aStructuredQuery) {
             // Start with a single blank search
             $aSearches = array(new SearchDescription($oCtx));
@@ -582,8 +577,9 @@ class Geocode
 
             if ($sSpecialTerm && !$aSearches[0]->hasOperator()) {
                 $sSpecialTerm = pg_escape_string($sSpecialTerm);
-                $sToken = chksql(
-                    $this->oDB->getOne("SELECT make_standard_name('$sSpecialTerm')"),
+                $sToken = $this->oDB->getOne(
+                    'SELECT make_standard_name(:term)',
+                    array(':term' => $sSpecialTerm),
                     'Cannot decode query. Wrong encoding?'
                 );
                 $sSQL = 'SELECT class, type FROM word ';
@@ -591,7 +587,7 @@ class Geocode
                 $sSQL .= '   AND class is not null AND class not in (\'place\')';
 
                 Debug::printSQL($sSQL);
-                $aSearchWords = chksql($this->oDB->getAll($sSQL));
+                $aSearchWords = $this->oDB->getAll($sSQL);
                 $aNewSearches = array();
                 foreach ($aSearches as $oSearch) {
                     foreach ($aSearchWords as $aSearchTerm) {
@@ -629,8 +625,9 @@ class Geocode
             $aTokens = array();
             $aPhrases = array();
             foreach ($aInPhrases as $iPhrase => $sPhrase) {
-                $sPhrase = chksql(
-                    $this->oDB->getOne('SELECT make_standard_name('.getDBQuoted($sPhrase).')'),
+                $sPhrase = $this->oDB->getOne(
+                    'SELECT make_standard_name(:phrase)',
+                    array(':phrase' => $sPhrase),
                     'Cannot normalize query string (is it a UTF-8 string?)'
                 );
                 if (trim($sPhrase)) {
@@ -640,7 +637,6 @@ class Geocode
                 }
             }
 
-            Debug::printDebugTable('Phrases', $aPhrases);
             Debug::printVar('Tokens', $aTokens);
 
             $oValidTokens = new TokenList();
@@ -648,7 +644,7 @@ class Geocode
             if (!empty($aTokens)) {
                 $sSQL = 'SELECT word_id, word_token, word, class, type, country_code, operator, search_name_count';
                 $sSQL .= ' FROM word ';
-                $sSQL .= ' WHERE word_token in ('.join(',', array_map('getDBQuoted', $aTokens)).')';
+                $sSQL .= ' WHERE word_token in ('.join(',', $this->oDB->getDBQuotedList($aTokens)).')';
 
                 Debug::printSQL($sSQL);
 
@@ -685,6 +681,11 @@ class Geocode
 
                 Debug::printGroupTable('Valid Tokens', $oValidTokens->debugInfo());
 
+                foreach ($aPhrases as $oPhrase) {
+                    $oPhrase->computeWordSets($oValidTokens);
+                }
+                Debug::printDebugTable('Phrases', $aPhrases);
+
                 Debug::newSection('Search candidates');
 
                 $aGroupedSearches = $this->getGroupedSearches($aSearches, $aPhrases, $oValidTokens, $bStructuredPhrases);
@@ -746,8 +747,10 @@ class Geocode
             // Start the search process
             $iGroupLoop = 0;
             $iQueryLoop = 0;
+            $aNextResults = array();
             foreach ($aGroupedSearches as $iGroupedRank => $aSearches) {
                 $iGroupLoop++;
+                $aResults = $aNextResults;
                 foreach ($aSearches as $oSearch) {
                     $iQueryLoop++;
 
@@ -757,16 +760,42 @@ class Geocode
                         $oValidTokens->debugTokenByWordIdList()
                     );
 
-                    $aResults += $oSearch->query(
+                    $aNewResults = $oSearch->query(
                         $this->oDB,
                         $this->iMinAddressRank,
                         $this->iMaxAddressRank,
                         $this->iLimit
                     );
 
+                    // The same result may appear in different rounds, only
+                    // use the one with minimal rank.
+                    foreach ($aNewResults as $iPlace => $oRes) {
+                        if (!isset($aResults[$iPlace])
+                            || $aResults[$iPlace]->iResultRank > $oRes->iResultRank) {
+                            $aResults[$iPlace] = $oRes;
+                        }
+                    }
+
                     if ($iQueryLoop > 20) break;
                 }
 
+                if (!empty($aResults)) {
+                    $aSplitResults = Result::splitResults($aResults);
+                    Debug::printVar('Split results', $aSplitResults);
+                    if ($iGroupLoop <= 4 && empty($aSplitResults['tail'])
+                        && reset($aSplitResults['head'])->iResultRank > 0) {
+                        // Haven't found an exact match for the query yet.
+                        // Therefore add result from the next group level.
+                        $aNextResults = $aSplitResults['head'];
+                        foreach ($aNextResults as $oRes) {
+                            $oRes->iResultRank--;
+                        }
+                        $aResults = array();
+                    } else {
+                        $aResults = $aSplitResults['head'];
+                    }
+                }
+
                 if (!empty($aResults) && ($this->iMinAddressRank != 0 || $this->iMaxAddressRank != 30)) {
                     // Need to verify passes rank limits before dropping out of the loop (yuk!)
                     // reduces the number of place ids, like a filter
@@ -778,9 +807,7 @@ class Geocode
                         $sSQL .= 'WHERE place_id in ('.$sPlaceIds.') ';
                         $sSQL .= '  AND (';
                         $sSQL .= "         placex.rank_address between $this->iMinAddressRank and $this->iMaxAddressRank ";
-                        if (14 >= $this->iMinAddressRank && 14 <= $this->iMaxAddressRank) {
-                            $sSQL .= "     OR (extratags->'place') = 'city'";
-                        }
+                        $sSQL .= "         OR placex.rank_search between $this->iMinAddressRank and $this->iMaxAddressRank ";
                         if ($this->aAddressRankList) {
                             $sSQL .= '     OR placex.rank_address in ('.join(',', $this->aAddressRankList).')';
                         }
@@ -803,7 +830,7 @@ class Geocode
                     if ($aFilterSql) {
                         $sSQL = join(' UNION ', $aFilterSql);
                         Debug::printSQL($sSQL);
-                        $aFilteredIDs = chksql($this->oDB->getCol($sSQL));
+                        $aFilteredIDs = $this->oDB->getCol($sSQL);
                     }
 
                     $tempIDs = array();
@@ -877,12 +904,6 @@ class Geocode
                 $aResult = array_merge($aResult, $aOutlineResult);
             }
 
-            if ($aResult['extra_place'] == 'city') {
-                $aResult['class'] = 'place';
-                $aResult['type'] = 'city';
-                $aResult['rank_search'] = 16;
-            }
-
             // Is there an icon set for this type of result?
             $aClassInfo = ClassTypes\getInfo($aResult);
 
index 26b648bb2865165d8b9ee897263b2ebed17016f1..32a848b93011fce3edaa1975ad6450369b121725 100644 (file)
@@ -91,7 +91,7 @@ class ParameterParser
         $sLangString = $this->getString('accept-language', $sFallback);
 
         if ($sLangString) {
-            if (preg_match_all('/(([a-z]{1,8})(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $sLangString, $aLanguagesParse, PREG_SET_ORDER)) {
+            if (preg_match_all('/(([a-z]{1,8})([-_][a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $sLangString, $aLanguagesParse, PREG_SET_ORDER)) {
                 foreach ($aLanguagesParse as $iLang => $aLanguage) {
                     $aLanguages[$aLanguage[1]] = isset($aLanguage[5])?(float)$aLanguage[5]:1 - ($iLang/100);
                     if (!isset($aLanguages[$aLanguage[2]])) $aLanguages[$aLanguage[2]] = $aLanguages[$aLanguage[1]]/10;
@@ -104,18 +104,29 @@ class ParameterParser
         }
 
         foreach ($aLanguages as $sLanguage => $fLanguagePref) {
-            $aLangPrefOrder['short_name:'.$sLanguage] = 'short_name:'.$sLanguage;
             $aLangPrefOrder['name:'.$sLanguage] = 'name:'.$sLanguage;
         }
-        $aLangPrefOrder['short_name'] = 'short_name';
         $aLangPrefOrder['name'] = 'name';
         $aLangPrefOrder['brand'] = 'brand';
         foreach ($aLanguages as $sLanguage => $fLanguagePref) {
             $aLangPrefOrder['official_name:'.$sLanguage] = 'official_name:'.$sLanguage;
+            $aLangPrefOrder['short_name:'.$sLanguage] = 'short_name:'.$sLanguage;
         }
         $aLangPrefOrder['official_name'] = 'official_name';
+        $aLangPrefOrder['short_name'] = 'short_name';
         $aLangPrefOrder['ref'] = 'ref';
         $aLangPrefOrder['type'] = 'type';
         return $aLangPrefOrder;
     }
+
+    public function hasSetAny($aParamNames)
+    {
+        foreach ($aParamNames as $sName) {
+            if ($this->getBool($sName)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
 }
index 7cf3f29736d0f7cee944581b558a8bc2658d02cd..e2643e878ed40a3bb22533600603647418e98011 100644 (file)
@@ -9,7 +9,8 @@ namespace Nominatim;
  */
 class Phrase
 {
-    const MAX_DEPTH = 7;
+    const MAX_WORDSET_LEN = 20;
+    const MAX_WORDSETS = 100;
 
     // Complete phrase as a string.
     private $sPhrase;
@@ -20,13 +21,24 @@ class Phrase
     // Possible segmentations of the phrase.
     private $aWordSets;
 
+    public static function cmpByArraylen($aA, $aB)
+    {
+        $iALen = count($aA);
+        $iBLen = count($aB);
+
+        if ($iALen == $iBLen) {
+            return 0;
+        }
+
+        return ($iALen < $iBLen) ? -1 : 1;
+    }
+
 
     public function __construct($sPhrase, $sPhraseType)
     {
         $this->sPhrase = trim($sPhrase);
         $this->sPhraseType = $sPhraseType;
         $this->aWords = explode(' ', $this->sPhrase);
-        $this->aWordSets = $this->createWordSets($this->aWords, 0);
     }
 
     /**
@@ -60,10 +72,17 @@ class Phrase
      */
     public function addTokens(&$aTokens)
     {
-        foreach ($this->aWordSets as $aSet) {
-            foreach ($aSet as $sWord) {
-                $aTokens[' '.$sWord] = ' '.$sWord;
-                $aTokens[$sWord] = $sWord;
+        $iNumWords = count($this->aWords);
+
+        for ($i = 0; $i < $iNumWords; $i++) {
+            $sPhrase = $this->aWords[$i];
+            $aTokens[' '.$sPhrase] = ' '.$sPhrase;
+            $aTokens[$sPhrase] = $sPhrase;
+
+            for ($j = $i + 1; $j < $iNumWords; $j++) {
+                $sPhrase .= ' '.$this->aWords[$j];
+                $aTokens[' '.$sPhrase] = ' '.$sPhrase;
+                $aTokens[$sPhrase] = $sPhrase;
             }
         }
     }
@@ -75,45 +94,60 @@ class Phrase
      */
     public function invertWordSets()
     {
-        $this->aWordSets = $this->createInverseWordSets($this->aWords, 0);
+        foreach ($this->aWordSets as $i => $aSet) {
+            $this->aWordSets[$i] = array_reverse($aSet);
+        }
     }
 
-    private function createWordSets($aWords, $iDepth)
+    public function computeWordSets($oTokens)
     {
-        $aResult = array(array(join(' ', $aWords)));
-        $sFirstToken = '';
-        if ($iDepth < Phrase::MAX_DEPTH) {
-            while (count($aWords) > 1) {
-                $sWord = array_shift($aWords);
-                $sFirstToken .= ($sFirstToken?' ':'').$sWord;
-                $aRest = $this->createWordSets($aWords, $iDepth + 1);
-                foreach ($aRest as $aSet) {
-                    $aResult[] = array_merge(array($sFirstToken), $aSet);
-                }
-            }
-        }
+        $iNumWords = count($this->aWords);
+        // Caches the word set for the partial phrase up to word i.
+        $aSetCache = array_fill(0, $iNumWords, array());
 
-        return $aResult;
-    }
+        // Initialise first element of cache. There can only be the word.
+        if ($oTokens->containsAny($this->aWords[0])) {
+            $aSetCache[0][] = array($this->aWords[0]);
+        }
 
-    private function createInverseWordSets($aWords, $iDepth)
-    {
-        $aResult = array(array(join(' ', $aWords)));
-        $sFirstToken = '';
-        if ($iDepth < Phrase::MAX_DEPTH) {
-            while (count($aWords) > 1) {
-                $sWord = array_pop($aWords);
-                $sFirstToken = $sWord.($sFirstToken?' ':'').$sFirstToken;
-                $aRest = $this->createInverseWordSets($aWords, $iDepth + 1);
-                foreach ($aRest as $aSet) {
-                    $aResult[] = array_merge(array($sFirstToken), $aSet);
+        // Now do the next elements using what we already have.
+        for ($i = 1; $i < $iNumWords; $i++) {
+            for ($j = $i; $j > 0; $j--) {
+                $sPartial = $j == $i ? $this->aWords[$j] : $this->aWords[$j].' '.$sPartial;
+                if (!empty($aSetCache[$j - 1]) && $oTokens->containsAny($sPartial)) {
+                    $aPartial = array($sPartial);
+                    foreach ($aSetCache[$j - 1] as $aSet) {
+                        if (count($aSet) < Phrase::MAX_WORDSET_LEN) {
+                            $aSetCache[$i][] = array_merge($aSet, $aPartial);
+                        }
+                    }
+                    if (count($aSetCache[$i]) > 2 * Phrase::MAX_WORDSETS) {
+                        usort(
+                            $aSetCache[$i],
+                            array('\Nominatim\Phrase', 'cmpByArraylen')
+                        );
+                        $aSetCache[$i] = array_slice(
+                            $aSetCache[$i],
+                            0,
+                            Phrase::MAX_WORDSETS
+                        );
+                    }
                 }
             }
+
+            // finally the current full phrase
+            $sPartial = $this->aWords[0].' '.$sPartial;
+            if ($oTokens->containsAny($sPartial)) {
+                $aSetCache[$i][] = array($sPartial);
+            }
         }
 
-        return $aResult;
+        $this->aWordSets = $aSetCache[$iNumWords - 1];
+        usort($this->aWordSets, array('\Nominatim\Phrase', 'cmpByArraylen'));
+        $this->aWordSets = array_slice($this->aWordSets, 0, Phrase::MAX_WORDSETS);
     }
 
+
     public function debugInfo()
     {
         return array(
index 46b17882a5ec90064454c86348c1cf5300c989f8..8a1a366678652513e37378e15c36c64d18c0e679 100644 (file)
@@ -15,7 +15,6 @@ class PlaceLookup
     protected $bExtraTags = false;
     protected $bNameDetails = false;
 
-    protected $bIncludePolygonAsPoints = false;
     protected $bIncludePolygonAsText = false;
     protected $bIncludePolygonAsGeoJSON = false;
     protected $bIncludePolygonAsKML = false;
@@ -38,11 +37,6 @@ class PlaceLookup
         return $this->bDeDupe;
     }
 
-    public function setIncludePolygonAsPoints($b = true)
-    {
-        $this->bIncludePolygonAsPoints = $b;
-    }
-
     public function setIncludeAddressDetails($b)
     {
         $this->bAddressDetails = $b;
@@ -52,7 +46,7 @@ class PlaceLookup
     {
         $aLangs = $oParams->getPreferredLanguages();
         $this->aLangPrefOrderSql =
-            'ARRAY['.join(',', array_map('getDBQuoted', $aLangs)).']';
+            'ARRAY['.join(',', $this->oDB->getDBQuotedList($aLangs)).']';
 
         $this->bExtraTags = $oParams->getBool('extratags', false);
         $this->bNameDetails = $oParams->getBool('namedetails', false);
@@ -61,7 +55,6 @@ class PlaceLookup
 
         if ($sGeomType === null || $sGeomType == 'geojson') {
             $this->bIncludePolygonAsGeoJSON = $oParams->getBool('polygon_geojson');
-            $this->bIncludePolygonAsPoints = false;
         }
 
         if ($oParams->getString('format', '') !== 'geojson') {
@@ -100,7 +93,6 @@ class PlaceLookup
         if ($this->bExtraTags) $aParams['extratags'] = '1';
         if ($this->bNameDetails) $aParams['namedetails'] = '1';
 
-        if ($this->bIncludePolygonAsPoints) $aParams['polygon'] = '1';
         if ($this->bIncludePolygonAsText) $aParams['polygon_text'] = '1';
         if ($this->bIncludePolygonAsGeoJSON) $aParams['polygon_geojson'] = '1';
         if ($this->bIncludePolygonAsKML) $aParams['polygon_kml'] = '1';
@@ -132,8 +124,9 @@ class PlaceLookup
 
     public function setLanguagePreference($aLangPrefOrder)
     {
-        $this->aLangPrefOrderSql =
-            'ARRAY['.join(',', array_map('getDBQuoted', $aLangPrefOrder)).']';
+        $this->aLangPrefOrderSql = $this->oDB->getArraySQL(
+            $this->oDB->getDBQuotedList($aLangPrefOrder)
+        );
     }
 
     private function addressImportanceSql($sGeometry, $sPlaceId)
@@ -162,8 +155,8 @@ class PlaceLookup
 
     public function lookupOSMID($sType, $iID)
     {
-        $sSQL = "select place_id from placex where osm_type = '".$sType."' and osm_id = ".$iID;
-        $iPlaceID = chksql($this->oDB->getOne($sSQL));
+        $sSQL = 'select place_id from placex where osm_type = :type and osm_id = :id';
+        $iPlaceID = $this->oDB->getOne($sSQL, array(':type' => $sType, ':id' => $iID));
 
         if (!$iPlaceID) {
             return null;
@@ -214,7 +207,7 @@ class PlaceLookup
                 'ST_Collect(centroid)',
                 'min(CASE WHEN placex.rank_search < 28 THEN placex.place_id ELSE placex.parent_place_id END)'
             );
-            $sSQL .= "    (extratags->'place') AS extra_place ";
+            $sSQL .= "    COALESCE(extratags->'place', extratags->'linked_place') AS extra_place ";
             $sSQL .= ' FROM placex';
             $sSQL .= " WHERE place_id in ($sPlaceIDs) ";
             $sSQL .= '   AND (';
@@ -247,7 +240,7 @@ class PlaceLookup
             $sSQL .= '     ref, ';
             if ($this->bExtraTags) $sSQL .= 'extratags, ';
             if ($this->bNameDetails) $sSQL .= 'name, ';
-            $sSQL .= "     extratags->'place' ";
+            $sSQL .= '     extra_place ';
 
             $aSubSelects[] = $sSQL;
         }
@@ -424,9 +417,10 @@ class PlaceLookup
 
         $sSQL = join(' UNION ', $aSubSelects);
         Debug::printSQL($sSQL);
-        $aPlaces = chksql($this->oDB->getAll($sSQL), 'Could not lookup place');
+        $aPlaces = $this->oDB->getAll($sSQL, null, 'Could not lookup place');
 
         foreach ($aPlaces as &$aPlace) {
+            $aPlace['importance'] = (float) $aPlace['importance'];
             if ($this->bAddressDetails) {
                 // to get addressdetails for tiger data, the housenumber is needed
                 $aPlace['address'] = new AddressDetails(
@@ -498,7 +492,7 @@ class PlaceLookup
             if ($this->bIncludePolygonAsGeoJSON) $sSQL .= ',ST_AsGeoJSON(geometry) as asgeojson';
             if ($this->bIncludePolygonAsKML) $sSQL .= ',ST_AsKML(geometry) as askml';
             if ($this->bIncludePolygonAsSVG) $sSQL .= ',ST_AsSVG(geometry) as assvg';
-            if ($this->bIncludePolygonAsText || $this->bIncludePolygonAsPoints) $sSQL .= ',ST_AsText(geometry) as astext';
+            if ($this->bIncludePolygonAsText) $sSQL .= ',ST_AsText(geometry) as astext';
             if ($fLonReverse != null && $fLatReverse != null) {
                 $sFrom = ' from (SELECT * , CASE WHEN (class = \'highway\') AND (ST_GeometryType(geometry) = \'ST_LineString\') THEN ';
                 $sFrom .=' ST_ClosestPoint(geometry, ST_SetSRID(ST_Point('.$fLatReverse.','.$fLonReverse.'),4326))';
@@ -513,9 +507,9 @@ class PlaceLookup
                 $sSQL .= $sFrom;
             }
 
-            $aPointPolygon = chksql($this->oDB->getRow($sSQL), 'Could not get outline');
+            $aPointPolygon = $this->oDB->getRow($sSQL, null, 'Could not get outline');
 
-            if ($aPointPolygon['place_id']) {
+            if ($aPointPolygon && $aPointPolygon['place_id']) {
                 if ($aPointPolygon['centrelon'] !== null && $aPointPolygon['centrelat'] !== null) {
                     $aOutlineResult['lat'] = $aPointPolygon['centrelat'];
                     $aOutlineResult['lon'] = $aPointPolygon['centrelon'];
@@ -525,8 +519,6 @@ class PlaceLookup
                 if ($this->bIncludePolygonAsKML) $aOutlineResult['askml'] = $aPointPolygon['askml'];
                 if ($this->bIncludePolygonAsSVG) $aOutlineResult['assvg'] = $aPointPolygon['assvg'];
                 if ($this->bIncludePolygonAsText) $aOutlineResult['astext'] = $aPointPolygon['astext'];
-                if ($this->bIncludePolygonAsPoints) $aOutlineResult['aPolyPoints'] = geometryText2Points($aPointPolygon['astext'], $fRadius);
-
 
                 if (abs($aPointPolygon['minlat'] - $aPointPolygon['maxlat']) < 0.0000001) {
                     $aPointPolygon['minlat'] = $aPointPolygon['minlat'] - $fRadius;
@@ -549,17 +541,12 @@ class PlaceLookup
 
         // as a fallback we generate a bounding box without knowing the size of the geometry
         if ((!isset($aOutlineResult['aBoundingBox'])) && isset($fLon)) {
-            //
-            if ($this->bIncludePolygonAsPoints) {
-                $sGeometryText = 'POINT('.$fLon.','.$fLat.')';
-                $aOutlineResult['aPolyPoints'] = geometryText2Points($sGeometryText, $fRadius);
-            }
-
-            $aBounds = array();
-            $aBounds['minlat'] = $fLat - $fRadius;
-            $aBounds['maxlat'] = $fLat + $fRadius;
-            $aBounds['minlon'] = $fLon - $fRadius;
-            $aBounds['maxlon'] = $fLon + $fRadius;
+            $aBounds = array(
+                        'minlat' => $fLat - $fRadius,
+                        'maxlat' => $fLat + $fRadius,
+                        'minlon' => $fLon - $fRadius,
+                        'maxlon' => $fLon + $fRadius
+                       );
 
             $aOutlineResult['aBoundingBox'] = array(
                                                (string)$aBounds['minlat'],
index d69ac62f1f7b28cc731a49146b830a59f0323f05..a67c2fe474910a20356ac05edafdac68e3168c17 100644 (file)
@@ -68,4 +68,32 @@ class Result
 
         return $sHousenumbers;
     }
+
+    /**
+     * Split a result array into highest ranked result and the rest
+     *
+     * @param object[] $aResults List of results to split.
+     *
+     * @return array[]
+     */
+    public static function splitResults($aResults)
+    {
+        $aHead = array();
+        $aTail = array();
+        $iMinRank = 10000;
+
+        foreach ($aResults as $oRes) {
+            if ($oRes->iResultRank < $iMinRank) {
+                $aTail = array_merge($aTail, $aHead);
+                $aHead = array($oRes->iId => $oRes);
+                $iMinRank = $oRes->iResultRank;
+            } elseif ($oRes->iResultRank == $iMinRank) {
+                $aHead[$oRes->iId] = $oRes;
+            } else {
+                $aTail[$oRes->iId] = $oRes;
+            }
+        }
+
+        return array('head' => $aHead, 'tail' => $aTail);
+    }
 }
index 820ca3855b178ef4365201ce5db9481f159d223b..5cecfd33a8606934fa3109929c5ad84313805f21 100644 (file)
@@ -36,8 +36,8 @@ class ReverseGeocode
                       13 => 18,
                       14 => 22, // Suburb
                       15 => 22,
-                      16 => 26, // Street, TODO: major street?
-                      17 => 26,
+                      16 => 26, // major street
+                      17 => 27, // minor street
                       18 => 30, // or >, Building
                       19 => 30, // or >, Building
                      );
@@ -63,8 +63,9 @@ class ReverseGeocode
         $sSQL .= ' and indexed_status = 0 and startnumber is not NULL ';
         $sSQL .= ' ORDER BY distance ASC limit 1';
 
-        return chksql(
-            $this->oDB->getRow($sSQL),
+        return $this->oDB->getRow(
+            $sSQL,
+            null,
             'Could not determine closest housenumber on an osm interpolation line.'
         );
     }
@@ -92,8 +93,9 @@ class ReverseGeocode
         $sSQL = 'SELECT country_code FROM country_osm_grid';
         $sSQL .= ' WHERE ST_CONTAINS(geometry, '.$sPointSQL.') LIMIT 1';
 
-        $sCountryCode = chksql(
-            $this->oDB->getOne($sSQL),
+        $sCountryCode = $this->oDB->getOne(
+            $sSQL,
+            null,
             'Could not determine country polygon containing the point.'
         );
         if ($sCountryCode) {
@@ -115,10 +117,7 @@ class ReverseGeocode
                 $sSQL .= ' LIMIT 1';
 
                 if (CONST_Debug) var_dump($sSQL);
-                $aPlace = chksql(
-                    $this->oDB->getRow($sSQL),
-                    'Could not determine place node.'
-                );
+                $aPlace = $this->oDB->getRow($sSQL, null, 'Could not determine place node.');
                 if ($aPlace) {
                     return new Result($aPlace['place_id']);
                 }
@@ -134,10 +133,7 @@ class ReverseGeocode
             $sSQL .= ' ORDER BY distance ASC';
 
             if (CONST_Debug) var_dump($sSQL);
-            $aPlace = chksql(
-                $this->oDB->getRow($sSQL),
-                'Could not determine place node.'
-            );
+            $aPlace = $this->oDB->getRow($sSQL, null, 'Could not determine place node.');
             if ($aPlace) {
                 return new Result($aPlace['place_id']);
             }
@@ -178,10 +174,8 @@ class ReverseGeocode
         $sSQL .= ' WHERE ST_CONTAINS(geometry, '.$sPointSQL.' )';
         $sSQL .= ' ORDER BY rank_address DESC LIMIT 1';
 
-        $aPoly = chksql(
-            $this->oDB->getRow($sSQL),
-            'Could not determine polygon containing the point.'
-        );
+        $aPoly = $this->oDB->getRow($sSQL, null, 'Could not determine polygon containing the point.');
+
         if ($aPoly) {
         // if a polygon is found, search for placenodes begins ...
             $iParentPlaceID = $aPoly['parent_place_id'];
@@ -213,10 +207,7 @@ class ReverseGeocode
                 $sSQL .= ' LIMIT 1';
 
                 if (CONST_Debug) var_dump($sSQL);
-                $aPlacNode = chksql(
-                    $this->oDB->getRow($sSQL),
-                    'Could not determine place node.'
-                );
+                $aPlacNode = $this->oDB->getRow($sSQL, null, 'Could not determine place node.');
                 if ($aPlacNode) {
                     return $aPlacNode;
                 }
@@ -255,24 +246,18 @@ class ReverseGeocode
             $sSQL .= ' placex';
             $sSQL .= '   WHERE ST_DWithin('.$sPointSQL.', geometry, '.$fSearchDiam.')';
             $sSQL .= '   AND';
-            // only streets
-            if ($iMaxRank == 26) {
-                $sSQL .= ' rank_address = 26';
-            } else {
-                $sSQL .= ' rank_address between 26 and '.$iMaxRank;
-            }
+            $sSQL .= ' rank_address between 26 and '.$iMaxRank;
             $sSQL .= ' and (name is not null or housenumber is not null';
             $sSQL .= ' or rank_address between 26 and 27)';
-            $sSQL .= ' and class not in (\'railway\',\'tunnel\',\'bridge\',\'man_made\')';
+            $sSQL .= ' and (rank_address between 26 and 27';
+            $sSQL .= '      or ST_GeometryType(geometry) != \'ST_LineString\')';
+            $sSQL .= ' and class not in (\'boundary\')';
             $sSQL .= ' and indexed_status = 0 and linked_place_id is null';
             $sSQL .= ' and (ST_GeometryType(geometry) not in (\'ST_Polygon\',\'ST_MultiPolygon\') ';
             $sSQL .= ' OR ST_DWithin('.$sPointSQL.', centroid, '.$fSearchDiam.'))';
             $sSQL .= ' ORDER BY distance ASC limit 1';
             if (CONST_Debug) var_dump($sSQL);
-            $aPlace = chksql(
-                $this->oDB->getRow($sSQL),
-                'Could not determine closest place.'
-            );
+            $aPlace = $this->oDB->getRow($sSQL, null, 'Could not determine closest place.');
 
             if (CONST_Debug) var_dump($aPlace);
             if ($aPlace) {
@@ -314,16 +299,14 @@ class ReverseGeocode
                     // radius ?
                     $sSQL .= ' WHERE ST_DWithin('.$sPointSQL.', geometry, 0.001)';
                     $sSQL .= ' AND parent_place_id = '.$iPlaceID;
-                    $sSQL .= ' and rank_address != 28';
+                    $sSQL .= ' and rank_address > 28';
+                    $sSQL .= ' and ST_GeometryType(geometry) != \'ST_LineString\'';
                     $sSQL .= ' and (name is not null or housenumber is not null)';
-                    $sSQL .= ' and class not in (\'railway\',\'tunnel\',\'bridge\',\'man_made\')';
+                    $sSQL .= ' and class not in (\'boundary\')';
                     $sSQL .= ' and indexed_status = 0 and linked_place_id is null';
                     $sSQL .= ' ORDER BY distance ASC limit 1';
                     if (CONST_Debug) var_dump($sSQL);
-                    $aStreet = chksql(
-                        $this->oDB->getRow($sSQL),
-                        'Could not determine closest place.'
-                    );
+                    $aStreet = $this->oDB->getRow($sSQL, null, 'Could not determine closest place.');
                     if ($aStreet) {
                         if (CONST_Debug) var_dump($aStreet);
                         $oResult = new Result($aStreet['place_id']);
@@ -344,10 +327,7 @@ class ReverseGeocode
                     $sSQL .= ' AND ST_DWithin('.$sPointSQL.', linegeo, 0.001)';
                     $sSQL .= ' ORDER BY distance ASC limit 1';
                     if (CONST_Debug) var_dump($sSQL);
-                    $aPlaceTiger = chksql(
-                        $this->oDB->getRow($sSQL),
-                        'Could not determine closest Tiger place.'
-                    );
+                    $aPlaceTiger = $this->oDB->getRow($sSQL, null, 'Could not determine closest Tiger place.');
                     if ($aPlaceTiger) {
                         if (CONST_Debug) var_dump('found Tiger housenumber', $aPlaceTiger);
                         $oResult = new Result($aPlaceTiger['place_id'], Result::TABLE_TIGER);
index 84159b83ca21c660112df8d4c8ed27837ff6ce19..3d399bdcf62967d63fe96b5f3d614d315f1c9c4e 100644 (file)
@@ -126,7 +126,7 @@ class SearchContext
      * The viewbox may be bounded which means that no search results
      * must be outside the viewbox.
      *
-     * @param object   $oDB          DB connection to use for computing the box.
+     * @param object   $oDB          Nominatim::DB instance to use for computing the box.
      * @param string[] $aRoutePoints List of x,y coordinates along a route.
      * @param float    $fRouteWidth  Buffer around the route to use.
      * @param bool     $bBounded     True if the viewbox bounded.
@@ -146,11 +146,11 @@ class SearchContext
         $this->sqlViewboxCentre .= ")'::geometry,4326)";
 
         $sSQL = 'ST_BUFFER('.$this->sqlViewboxCentre.','.($fRouteWidth/69).')';
-        $sGeom = chksql($oDB->getOne('select '.$sSQL), 'Could not get small viewbox');
+        $sGeom = $oDB->getOne('select '.$sSQL, null, 'Could not get small viewbox');
         $this->sqlViewboxSmall = "'".$sGeom."'::geometry";
 
         $sSQL = 'ST_BUFFER('.$this->sqlViewboxCentre.','.($fRouteWidth/30).')';
-        $sGeom = chksql($oDB->getOne('select '.$sSQL), 'Could not get large viewbox');
+        $sGeom = $oDB->getOne('select '.$sSQL, null, 'Could not get large viewbox');
         $this->sqlViewboxLarge = "'".$sGeom."'::geometry";
     }
 
@@ -203,7 +203,7 @@ class SearchContext
     }
 
     /**
-     * Get an SQL snipped for computing the distance from the reference point.
+     * Get an SQL snippet for computing the distance from the reference point.
      *
      * @param string $sObj SQL variable name to compute the distance from.
      *
@@ -215,7 +215,7 @@ class SearchContext
     }
 
     /**
-     * Get an SQL snipped for checking if something is within range of the
+     * Get an SQL snippet for checking if something is within range of the
      * reference point.
      *
      * @param string $sObj SQL variable name to compute if it is within range.
@@ -228,14 +228,14 @@ class SearchContext
     }
 
     /**
-     * Get an SQL snipped of the importance factor of the viewbox.
+     * Get an SQL snippet of the importance factor of the viewbox.
      *
      * The importance factor is computed by checking if an object is within
      * the viewbox and/or the extended version of the viewbox.
      *
      * @param string $sObj SQL variable name of object to weight the importance
      *
-     * @return string SQL snipped of the factor with a leading multiply sign.
+     * @return string SQL snippet of the factor with a leading multiply sign.
      */
     public function viewboxImportanceSQL($sObj)
     {
@@ -252,7 +252,7 @@ class SearchContext
     }
 
     /**
-     * SQL snipped checking if a place ID should be excluded.
+     * SQL snippet checking if a place ID should be excluded.
      *
      * @param string $sVariable SQL variable name of place ID to check,
      *                          potentially prefixed with more SQL.
index 079cb8a6e65d1c72d8dd8693e40d740569206d45..bb478b29b88af4fbcef3a174d8e5405cedd616ea 100644 (file)
@@ -237,7 +237,8 @@ class SearchDescription
                 $oSearch->sHouseNumber = $oSearchTerm->sToken;
                 // sanity check: if the housenumber is not mainly made
                 // up of numbers, add a penalty
-                if (preg_match_all('/[^0-9]/', $oSearch->sHouseNumber, $aMatches) > 2) {
+                if (preg_match('/\\d/', $oSearch->sHouseNumber) === 0
+                    || preg_match_all('/[^0-9]/', $oSearch->sHouseNumber, $aMatches) > 2) {
                     $oSearch->iSearchRank++;
                 }
                 if (empty($oSearchTerm->iId)) {
@@ -287,7 +288,7 @@ class SearchDescription
             if (!empty($this->aName) || !($bFirstPhrase || $sPhraseType == '')) {
                 if (($sPhraseType == '' || !$bFirstPhrase) && !$bHasPartial) {
                     $oSearch = clone $this;
-                    $oSearch->iSearchRank++;
+                    $oSearch->iSearchRank += 2;
                     $oSearch->aAddress[$iWordID] = $iWordID;
                     $aNewSearches[] = $oSearch;
                 } else {
@@ -403,7 +404,7 @@ class SearchDescription
     /**
      * Query database for places that match this search.
      *
-     * @param object  $oDB      Database connection to use.
+     * @param object  $oDB      Nominatim::DB instance to use.
      * @param integer $iMinRank Minimum address rank to restrict search to.
      * @param integer $iMaxRank Maximum address rank to restrict search to.
      * @param integer $iLimit   Maximum number of results.
@@ -446,13 +447,20 @@ class SearchDescription
                 $iLimit
             );
 
-            //now search for housenumber, if housenumber provided
-            if ($this->sHouseNumber && !empty($aResults)) {
-                $aNamedPlaceIDs = $aResults;
-                $aResults = $this->queryHouseNumber($oDB, $aNamedPlaceIDs);
+            // Now search for housenumber, if housenumber provided. Can be zero.
+            if (($this->sHouseNumber || $this->sHouseNumber === '0') && !empty($aResults)) {
+                // Downgrade the rank of the street results, they are missing
+                // the housenumber.
+                foreach ($aResults as $oRes) {
+                    $oRes->iResultRank++;
+                }
+
+                $aHnResults = $this->queryHouseNumber($oDB, $aResults);
 
-                if (empty($aResults) && $this->looksLikeFullAddress()) {
-                    $aResults = $aNamedPlaceIDs;
+                if (!empty($aHnResults)) {
+                    foreach ($aHnResults as $oRes) {
+                        $aResults[$oRes->iId] = $oRes;
+                    }
                 }
             }
 
@@ -469,16 +477,13 @@ class SearchDescription
             if ($sPlaceIds) {
                 $sSQL = 'SELECT place_id FROM placex';
                 $sSQL .= ' WHERE place_id in ('.$sPlaceIds.')';
-                $sSQL .= " AND postcode = '".$this->sPostcode."'";
+                $sSQL .= " AND postcode != '".$this->sPostcode."'";
                 Debug::printSQL($sSQL);
-                $aFilteredPlaceIDs = chksql($oDB->getCol($sSQL));
+                $aFilteredPlaceIDs = $oDB->getCol($sSQL);
                 if ($aFilteredPlaceIDs) {
-                    $aNewResults = array();
                     foreach ($aFilteredPlaceIDs as $iPlaceId) {
-                        $aNewResults[$iPlaceId] = $aResults[$iPlaceId];
+                        $aResults[$iPlaceId]->iResultRank++;
                     }
-                    $aResults = $aNewResults;
-                    Debug::printVar('Place IDs after postcode filtering', $aResults);
                 }
             }
         }
@@ -499,8 +504,10 @@ class SearchDescription
 
         Debug::printSQL($sSQL);
 
+        $iPlaceId = $oDB->getOne($sSQL);
+
         $aResults = array();
-        foreach (chksql($oDB->getCol($sSQL)) as $iPlaceId) {
+        if ($iPlaceId) {
             $aResults[$iPlaceId] = new Result($iPlaceId);
         }
 
@@ -516,8 +523,7 @@ class SearchDescription
         $aDBResults = array();
         $sPoiTable = $this->poiTable();
 
-        $sSQL = 'SELECT count(*) FROM pg_tables WHERE tablename = \''.$sPoiTable."'";
-        if (chksql($oDB->getOne($sSQL))) {
+        if ($oDB->tableExists($sPoiTable)) {
             $sSQL = 'SELECT place_id FROM '.$sPoiTable.' ct';
             if ($this->oContext->sqlCountryList) {
                 $sSQL .= ' JOIN placex USING (place_id)';
@@ -537,14 +543,14 @@ class SearchDescription
             } elseif ($this->oContext->hasNearPoint()) {
                 $sSQL .= ' ORDER BY '.$this->oContext->distanceSQL('ct.centroid').' ASC';
             }
-            $sSQL .= " limit $iLimit";
+            $sSQL .= " LIMIT $iLimit";
             Debug::printSQL($sSQL);
-            $aDBResults = chksql($oDB->getCol($sSQL));
+            $aDBResults = $oDB->getCol($sSQL);
         }
 
         if ($this->oContext->hasNearPoint()) {
             $sSQL = 'SELECT place_id FROM placex WHERE ';
-            $sSQL .= 'class=\''.$this->sClass."' and type='".$this->sType."'";
+            $sSQL .= 'class = :class and type = :type';
             $sSQL .= ' AND '.$this->oContext->withinSQL('geometry');
             $sSQL .= ' AND linked_place_id is null';
             if ($this->oContext->sqlCountryList) {
@@ -553,7 +559,10 @@ class SearchDescription
             $sSQL .= ' ORDER BY '.$this->oContext->distanceSQL('centroid').' ASC';
             $sSQL .= " LIMIT $iLimit";
             Debug::printSQL($sSQL);
-            $aDBResults = chksql($oDB->getCol($sSQL));
+            $aDBResults = $oDB->getCol(
+                $sSQL,
+                array(':class' => $this->sClass, ':type' => $this->sType)
+            );
         }
 
         $aResults = array();
@@ -572,20 +581,23 @@ class SearchDescription
             $sSQL .= ', search_name s ';
             $sSQL .= 'WHERE s.place_id = p.parent_place_id ';
             $sSQL .= 'AND array_cat(s.nameaddress_vector, s.name_vector)';
-            $sSQL .= '      @> '.getArraySQL($this->aAddress).' AND ';
+            $sSQL .= '      @> '.$oDB->getArraySQL($this->aAddress).' AND ';
         } else {
             $sSQL .= 'WHERE ';
         }
 
         $sSQL .= "p.postcode = '".reset($this->aName)."'";
         $sSQL .= $this->countryCodeSQL(' AND p.country_code');
+        if ($this->oContext->bViewboxBounded) {
+            $sSQL .= ' AND ST_Intersects('.$this->oContext->sqlViewboxSmall.', geometry)';
+        }
         $sSQL .= $this->oContext->excludeSQL(' AND p.place_id');
         $sSQL .= " LIMIT $iLimit";
 
         Debug::printSQL($sSQL);
 
         $aResults = array();
-        foreach (chksql($oDB->getCol($sSQL)) as $iPlaceId) {
+        foreach ($oDB->getCol($sSQL) as $iPlaceId) {
             $aResults[$iPlaceId] = new Result($iPlaceId, Result::TABLE_POSTCODE);
         }
 
@@ -628,14 +640,14 @@ class SearchDescription
         }
 
         if (!empty($this->aName)) {
-            $aTerms[] = 'name_vector @> '.getArraySQL($this->aName);
+            $aTerms[] = 'name_vector @> '.$oDB->getArraySQL($this->aName);
         }
         if (!empty($this->aAddress)) {
             // For infrequent name terms disable index usage for address
             if ($this->bRareName) {
-                $aTerms[] = 'array_cat(nameaddress_vector,ARRAY[]::integer[]) @> '.getArraySQL($this->aAddress);
+                $aTerms[] = 'array_cat(nameaddress_vector,ARRAY[]::integer[]) @> '.$oDB->getArraySQL($this->aAddress);
             } else {
-                $aTerms[] = 'nameaddress_vector @> '.getArraySQL($this->aAddress);
+                $aTerms[] = 'nameaddress_vector @> '.$oDB->getArraySQL($this->aAddress);
             }
         }
 
@@ -648,10 +660,7 @@ class SearchDescription
             $aTerms[] = 'address_rank between 16 and 27';
         } elseif (!$this->sClass || $this->iOperator == Operator::NAME) {
             if ($iMinAddressRank > 0) {
-                $aTerms[] = 'address_rank >= '.$iMinAddressRank;
-            }
-            if ($iMaxAddressRank < 30) {
-                $aTerms[] = 'address_rank <= '.$iMaxAddressRank;
+                $aTerms[] = "((address_rank between $iMinAddressRank and $iMaxAddressRank) or (search_rank between $iMinAddressRank and $iMaxAddressRank))";
             }
         }
 
@@ -690,7 +699,7 @@ class SearchDescription
         if (!empty($this->aFullNameAddress)) {
             $sExactMatchSQL = ' ( ';
             $sExactMatchSQL .= ' SELECT count(*) FROM ( ';
-            $sExactMatchSQL .= '  SELECT unnest('.getArraySQL($this->aFullNameAddress).')';
+            $sExactMatchSQL .= '  SELECT unnest('.$oDB->getArraySQL($this->aFullNameAddress).')';
             $sExactMatchSQL .= '    INTERSECT ';
             $sExactMatchSQL .= '  SELECT unnest(nameaddress_vector)';
             $sExactMatchSQL .= ' ) s';
@@ -701,7 +710,7 @@ class SearchDescription
         }
 
         if ($this->sHouseNumber || $this->sClass) {
-            $iLimit = 20;
+            $iLimit = 40;
         }
 
         $aResults = array();
@@ -715,10 +724,7 @@ class SearchDescription
 
             Debug::printSQL($sSQL);
 
-            $aDBResults = chksql(
-                $oDB->getAll($sSQL),
-                'Could not get places for search terms.'
-            );
+            $aDBResults = $oDB->getAll($sSQL, null, 'Could not get places for search terms.');
 
             foreach ($aDBResults as $aResult) {
                 $oResult = new Result($aResult['place_id']);
@@ -748,7 +754,7 @@ class SearchDescription
         Debug::printSQL($sSQL);
 
         // XXX should inherit the exactMatches from its parent
-        foreach (chksql($oDB->getCol($sSQL)) as $iPlaceId) {
+        foreach ($oDB->getCol($sSQL) as $iPlaceId) {
             $aResults[$iPlaceId] = new Result($iPlaceId);
         }
 
@@ -774,7 +780,7 @@ class SearchDescription
 
             Debug::printSQL($sSQL);
 
-            foreach (chksql($oDB->getCol($sSQL)) as $iPlaceId) {
+            foreach ($oDB->getCol($sSQL) as $iPlaceId) {
                 $oResult = new Result($iPlaceId, Result::TABLE_OSMLINE);
                 $oResult->iHouseNumber = $iHousenumber;
                 $aResults[$iPlaceId] = $oResult;
@@ -790,7 +796,7 @@ class SearchDescription
 
             Debug::printSQL($sSQL);
 
-            foreach (chksql($oDB->getCol($sSQL)) as $iPlaceId) {
+            foreach ($oDB->getCol($sSQL) as $iPlaceId) {
                 $aResults[$iPlaceId] = new Result($iPlaceId, Result::TABLE_AUX);
             }
         }
@@ -811,7 +817,7 @@ class SearchDescription
 
             Debug::printSQL($sSQL);
 
-            foreach (chksql($oDB->getCol($sSQL)) as $iPlaceId) {
+            foreach ($oDB->getCol($sSQL) as $iPlaceId) {
                 $oResult = new Result($iPlaceId, Result::TABLE_TIGER);
                 $oResult->iHouseNumber = $iHousenumber;
                 $aResults[$iPlaceId] = $oResult;
@@ -845,7 +851,7 @@ class SearchDescription
 
             Debug::printSQL($sSQL);
 
-            foreach (chksql($oDB->getCol($sSQL)) as $iPlaceId) {
+            foreach ($oDB->getCol($sSQL) as $iPlaceId) {
                 $aResults[$iPlaceId] = new Result($iPlaceId);
             }
         }
@@ -853,12 +859,11 @@ class SearchDescription
         // NEAR and IN are handled the same
         if ($this->iOperator == Operator::TYPE || $this->iOperator == Operator::NEAR) {
             $sClassTable = $this->poiTable();
-            $sSQL = "SELECT count(*) FROM pg_tables WHERE tablename = '$sClassTable'";
-            $bCacheTable = (bool) chksql($oDB->getOne($sSQL));
+            $bCacheTable = $oDB->tableExists($sClassTable);
 
             $sSQL = "SELECT min(rank_search) FROM placex WHERE place_id in ($sPlaceIDs)";
             Debug::printSQL($sSQL);
-            $iMaxRank = (int)chksql($oDB->getOne($sSQL));
+            $iMaxRank = (int) $oDB->getOne($sSQL);
 
             // For state / country level searches the normal radius search doesn't work very well
             $sPlaceGeom = false;
@@ -871,7 +876,7 @@ class SearchDescription
                 $sSQL .= ' ORDER BY rank_search ASC ';
                 $sSQL .= ' LIMIT 1';
                 Debug::printSQL($sSQL);
-                $sPlaceGeom = chksql($oDB->getOne($sSQL));
+                $sPlaceGeom = $oDB->getOne($sSQL);
             }
 
             if ($sPlaceGeom) {
@@ -881,7 +886,7 @@ class SearchDescription
                 $sSQL = 'SELECT place_id FROM placex';
                 $sSQL .= " WHERE place_id in ($sPlaceIDs) and rank_search < $iMaxRank";
                 Debug::printSQL($sSQL);
-                $aPlaceIDs = chksql($oDB->getCol($sSQL));
+                $aPlaceIDs = $oDB->getCol($sSQL);
                 $sPlaceIDs = join(',', $aPlaceIDs);
             }
 
@@ -927,7 +932,7 @@ class SearchDescription
 
                     Debug::printSQL($sSQL);
 
-                    foreach (chksql($oDB->getCol($sSQL)) as $iPlaceId) {
+                    foreach ($oDB->getCol($sSQL) as $iPlaceId) {
                         $aResults[$iPlaceId] = new Result($iPlaceId);
                     }
                 } else {
@@ -959,7 +964,7 @@ class SearchDescription
 
                     Debug::printSQL($sSQL);
 
-                    foreach (chksql($oDB->getCol($sSQL)) as $iPlaceId) {
+                    foreach ($oDB->getCol($sSQL) as $iPlaceId) {
                         $aResults[$iPlaceId] = new Result($iPlaceId);
                     }
                 }
diff --git a/lib/Shell.php b/lib/Shell.php
new file mode 100644 (file)
index 0000000..59c4473
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+namespace Nominatim;
+
+class Shell
+{
+    public function __construct($sBaseCmd, ...$aParams)
+    {
+        if (!$sBaseCmd) {
+            throw new Exception('Command missing in new() call');
+        }
+        $this->baseCmd = $sBaseCmd;
+        $this->aParams = array();
+        $this->aEnv = null; // null = use the same environment as the current PHP process
+
+        $this->stdoutString = null;
+
+        foreach ($aParams as $sParam) {
+            $this->addParams($sParam);
+        }
+    }
+
+    public function addParams(...$aParams)
+    {
+        foreach ($aParams as $sParam) {
+            if (isset($sParam) && $sParam !== null && $sParam !== '') {
+                array_push($this->aParams, $sParam);
+            }
+        }
+        return $this;
+    }
+
+    public function addEnvPair($sKey, $sVal)
+    {
+        if (isset($sKey) && $sKey && isset($sVal)) {
+            if (!isset($this->aEnv)) $this->aEnv = $_ENV;
+            $this->aEnv = array_merge($this->aEnv, array($sKey => $sVal), $_ENV);
+        }
+        return $this;
+    }
+
+    public function escapedCmd()
+    {
+        $aEscaped = array_map(function ($sParam) {
+            return $this->escapeParam($sParam);
+        }, array_merge(array($this->baseCmd), $this->aParams));
+
+        return join(' ', $aEscaped);
+    }
+
+    public function run()
+    {
+        $sCmd = $this->escapedCmd();
+        // $aEnv does not need escaping, proc_open seems to handle it fine
+
+        $aFDs = array(
+                 0 => array('pipe', 'r'),
+                 1 => STDOUT,
+                 2 => STDERR
+                );
+        $aPipes = null;
+        $hProc = @proc_open($sCmd, $aFDs, $aPipes, null, $this->aEnv);
+        if (!is_resource($hProc)) {
+            throw new \Exception('Unable to run command: ' . $sCmd);
+        }
+
+        fclose($aPipes[0]); // no stdin
+
+        $iStat = proc_close($hProc);
+        return $iStat;
+    }
+
+
+
+    private function escapeParam($sParam)
+    {
+        if (preg_match('/^-*\w+$/', $sParam)) return $sParam;
+        return escapeshellarg($sParam);
+    }
+}
index 86f5cac344dcd4f4d12103a7fd13375625dab73f..a276c4d5faa2c8ffe6d2bb672a5085c384ddd393 100644 (file)
@@ -3,7 +3,6 @@
 namespace Nominatim;
 
 use Exception;
-use PEAR;
 
 class Status
 {
@@ -16,12 +15,18 @@ class Status
 
     public function status()
     {
-        if (!$this->oDB || PEAR::isError($this->oDB)) {
+        if (!$this->oDB) {
             throw new Exception('No database', 700);
         }
 
+        try {
+            $this->oDB->connect();
+        } catch (\Nominatim\DatabaseError $e) {
+            throw new Exception('Database connection failed', 700);
+        }
+
         $sStandardWord = $this->oDB->getOne("SELECT make_standard_name('a')");
-        if (PEAR::isError($sStandardWord)) {
+        if ($sStandardWord === false) {
             throw new Exception('Module failed', 701);
         }
 
@@ -32,7 +37,7 @@ class Status
         $sSQL = 'SELECT word_id, word_token, word, class, type, country_code, ';
         $sSQL .= "operator, search_name_count FROM word WHERE word_token IN (' a')";
         $iWordID = $this->oDB->getOne($sSQL);
-        if (PEAR::isError($iWordID)) {
+        if ($iWordID === false) {
             throw new Exception('Query failed', 703);
         }
         if (!$iWordID) {
@@ -45,7 +50,7 @@ class Status
         $sSQL = 'SELECT EXTRACT(EPOCH FROM lastimportdate) FROM import_status LIMIT 1';
         $iDataDateEpoch = $this->oDB->getOne($sSQL);
 
-        if (PEAR::isError($iDataDateEpoch)) {
+        if ($iDataDateEpoch === false) {
             throw Exception('Data date query failed '.$iDataDateEpoch->getMessage(), 705);
         }
 
index a5b3c2d28710214ec21b7b0a2c2b0c248ca84746..fce5f940b84513a6bc1850cbbbdb5e9fa043682c 100644 (file)
@@ -55,6 +55,18 @@ class TokenList
         return isset($this->aTokens[$sWord]);
     }
 
+    /**
+     * Check if there are partial or full tokens for the given word.
+     *
+     * @param string $sWord Token word to look for.
+     *
+     * @return bool True if there is one or more token for the token word.
+     */
+    public function containsAny($sWord)
+    {
+        return isset($this->aTokens[$sWord]) || isset($this->aTokens[' '.$sWord]);
+    }
+
     /**
      * Get the list of tokens for the given token word.
      *
@@ -71,7 +83,7 @@ class TokenList
     /**
      * Add token information from the word table in the database.
      *
-     * @param object   $oDB           Database connection.
+     * @param object   $oDB           Nominatim::DB instance.
      * @param string[] $aTokens       List of tokens to look up in the database.
      * @param string[] $aCountryCodes List of country restrictions.
      * @param string   $sNormQuery    Normalized query string.
@@ -85,11 +97,11 @@ class TokenList
         $sSQL = 'SELECT word_id, word_token, word, class, type, country_code,';
         $sSQL .= ' operator, coalesce(search_name_count, 0) as count';
         $sSQL .= ' FROM word WHERE word_token in (';
-        $sSQL .= join(',', array_map('getDBQuoted', $aTokens)).')';
+        $sSQL .= join(',', $oDB->getDBQuotedList($aTokens)).')';
 
         Debug::printSQL($sSQL);
 
-        $aDBWords = chksql($oDB->getAll($sSQL), 'Could not get word tokens.');
+        $aDBWords = $oDB->getAll($sSQL, null, 'Could not get word tokens.');
 
         foreach ($aDBWords as $aWord) {
             $oToken = null;
index 44923618723636b86aec3c17f9f3ae4df3742e83..72b666088d1248b601d3edcfad521e99c89da139 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 
+require_once(CONST_BasePath.'/lib/Shell.php');
 
 function getCmdOpt($aArg, $aSpec, &$aResult, $bExitOnError = false, $bExitOnUnknown = false)
 {
@@ -120,15 +121,6 @@ function showUsage($aSpec, $bExit = false, $sError = false)
     exit;
 }
 
-function chksql($oSql, $sMsg = false)
-{
-    if (PEAR::isError($oSql)) {
-        fail($sMsg || $oSql->getMessage(), $oSql->userinfo);
-    }
-
-    return $oSql;
-}
-
 function info($sMsg)
 {
     echo date('Y-m-d H:i:s == ').$sMsg."\n";
@@ -155,32 +147,35 @@ function repeatWarnings()
 function runSQLScript($sScript, $bfatal = true, $bVerbose = false, $bIgnoreErrors = false)
 {
     // Convert database DSN to psql parameters
-    $aDSNInfo = DB::parseDSN(CONST_Database_DSN);
+    $aDSNInfo = \Nominatim\DB::parseDSN(CONST_Database_DSN);
     if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432;
-    $sCMD = 'psql -p '.$aDSNInfo['port'].' -d '.$aDSNInfo['database'];
+
+    $oCmd = new \Nominatim\Shell('psql');
+    $oCmd->addParams('--port', $aDSNInfo['port']);
+    $oCmd->addParams('--dbname', $aDSNInfo['database']);
     if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
-        $sCMD .= ' -h ' . $aDSNInfo['hostspec'];
+        $oCmd->addParams('--host', $aDSNInfo['hostspec']);
     }
     if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
-        $sCMD .= ' -U ' . $aDSNInfo['username'];
+        $oCmd->addParams('--username', $aDSNInfo['username']);
     }
-    $aProcEnv = null;
-    if (isset($aDSNInfo['password']) && $aDSNInfo['password']) {
-        $aProcEnv = array_merge(array('PGPASSWORD' => $aDSNInfo['password']), $_ENV);
+    if (isset($aDSNInfo['password'])) {
+        $oCmd->addEnvPair('PGPASSWORD', $aDSNInfo['password']);
     }
     if (!$bVerbose) {
-        $sCMD .= ' -q';
+        $oCmd->addParams('--quiet');
     }
     if ($bfatal && !$bIgnoreErrors) {
-        $sCMD .= ' -v ON_ERROR_STOP=1';
+        $oCmd->addParams('-v', 'ON_ERROR_STOP=1');
     }
+
     $aDescriptors = array(
                      0 => array('pipe', 'r'),
                      1 => STDOUT,
                      2 => STDERR
                     );
     $ahPipes = null;
-    $hProcess = @proc_open($sCMD, $aDescriptors, $ahPipes, null, $aProcEnv);
+    $hProcess = @proc_open($oCmd->escapedCmd(), $aDescriptors, $ahPipes, null, $oCmd->aEnv);
     if (!is_resource($hProcess)) {
         fail('unable to start pgsql');
     }
@@ -200,23 +195,3 @@ function runSQLScript($sScript, $bfatal = true, $bVerbose = false, $bIgnoreError
         fail("pgsql returned with error code ($iReturn)");
     }
 }
-
-
-function runWithEnv($sCmd, $aEnv)
-{
-    $aFDs = array(
-             0 => array('pipe', 'r'),
-             1 => STDOUT,
-             2 => STDERR
-            );
-    $aPipes = null;
-    $hProc = @proc_open($sCmd, $aFDs, $aPipes, null, $aEnv);
-    if (!is_resource($hProc)) {
-        fail('unable to run command:' . $sCmd);
-    }
-
-    fclose($aPipes[0]); // no stdin
-
-    $iStat = proc_close($hProc);
-    return $iStat;
-}
diff --git a/lib/db.php b/lib/db.php
deleted file mode 100644 (file)
index 493d25f..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-require_once('DB.php');
-
-
-function &getDB($bNew = false, $bPersistent = false)
-{
-    // Get the database object
-    $oDB = chksql(
-        DB::connect(CONST_Database_DSN.($bNew?'?new_link=true':''), $bPersistent),
-        'Failed to establish database connection'
-    );
-    $oDB->setFetchMode(DB_FETCHMODE_ASSOC);
-    $oDB->query("SET DateStyle TO 'sql,european'");
-    $oDB->query("SET client_encoding TO 'utf-8'");
-    $iMaxExecution = ini_get('max_execution_time') * 1000;
-    if ($iMaxExecution > 0) $oDB->query("SET statement_timeout TO $iMaxExecution");
-    return $oDB;
-}
-
-function getDBQuoted($s)
-{
-    return "'".pg_escape_string($s)."'";
-}
-
-function getArraySQL($a)
-{
-    return 'ARRAY['.join(',', $a).']';
-}
-
-function getPostgresVersion(&$oDB)
-{
-    $sVersionString = $oDB->getOne('select version()');
-    preg_match('#PostgreSQL ([0-9]+)[.]([0-9]+)[^0-9]#', $sVersionString, $aMatches);
-    return (float) ($aMatches[1].'.'.$aMatches[2]);
-}
-
-function getPostgisVersion(&$oDB)
-{
-    $sVersionString = $oDB->getOne('select postgis_full_version()');
-    preg_match('#POSTGIS="([0-9]+)[.]([0-9]+)[.]([0-9]+)( r([0-9]+))?"#', $sVersionString, $aMatches);
-    return (float) ($aMatches[1].'.'.$aMatches[2]);
-}
index ca5214da07fd50530ae5abec74bb3cba1afa5e1c..23c15ba81b3b3dc0253c0d26fc88cc2a282b8dc8 100644 (file)
@@ -10,79 +10,83 @@ require_once(CONST_Debug ? 'DebugHtml.php' : 'DebugNone.php');
  *
  */
 
+function userError($sMsg)
+{
+    throw new Exception($sMsg, 400);
+}
+
 
-function chksql($oSql, $sMsg = 'Database request failed')
+function exception_handler_html($exception)
 {
-    if (!PEAR::isError($oSql)) return $oSql;
-
-    header('HTTP/1.0 500 Internal Server Error');
-    header('Content-type: text/html; charset=utf-8');
-
-    $sSqlError = $oSql->getMessage();
-
-    echo <<<INTERNALFAIL
-<html>
-  <head><title>Internal Server Error</title></head>
-  <body>
-    <h1>Internal Server Error</h1>
-    <p>Nominatim has encountered an internal error while accessing the database.
-       This may happen because the database is broken or because of a bug in
-       the software. If you think it is a bug, feel free to report
-       it over on <a href="https://github.com/openstreetmap/Nominatim/issues">
-       Github</a>. Please include the URL that caused the problem and the
-       complete error details below.</p>
-    <p><b>Message:</b> $sMsg</p>
-    <p><b>SQL Error:</b> $sSqlError</p>
-    <p><b>Details:</b> <pre>
-INTERNALFAIL;
-
-    if (CONST_Debug) {
-        var_dump($oSql);
-    } else {
-        echo "<pre>\n".$oSql->getUserInfo().'</pre>';
+    http_response_code($exception->getCode());
+    header('Content-type: text/html; charset=UTF-8');
+    include(CONST_BasePath.'/lib/template/error-html.php');
+    exit();
+}
+
+function exception_handler_json($exception)
+{
+    http_response_code($exception->getCode());
+    header('Content-type: application/json; charset=utf-8');
+    include(CONST_BasePath.'/lib/template/error-json.php');
+    exit();
+}
+
+function exception_handler_xml($exception)
+{
+    http_response_code($exception->getCode());
+    header('Content-type: text/xml; charset=utf-8');
+    echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
+    include(CONST_BasePath.'/lib/template/error-xml.php');
+    exit();
+}
+
+function shutdown_exception_handler_html()
+{
+    $error = error_get_last();
+    if ($error !== null && $error['type'] === E_ERROR) {
+        exception_handler_html(new Exception($error['message'], 500));
     }
+}
 
-    echo '</pre></p></body></html>';
-    exit;
+function shutdown_exception_handler_xml()
+{
+    $error = error_get_last();
+    if ($error !== null && $error['type'] === E_ERROR) {
+        exception_handler_xml(new Exception($error['message'], 500));
+    }
 }
 
-function failInternalError($sError, $sSQL = false, $vDumpVar = false)
+function shutdown_exception_handler_json()
 {
-    header('HTTP/1.0 500 Internal Server Error');
-    header('Content-type: text/html; charset=utf-8');
-    echo '<html><body><h1>Internal Server Error</h1>';
-    echo '<p>Nominatim has encountered an internal error while processing your request. This is most likely because of a bug in the software.</p>';
-    echo '<p><b>Details:</b> '.$sError,'</p>';
-    echo '<p>Feel free to file an issue on <a href="https://github.com/openstreetmap/Nominatim/issues">Github</a>. ';
-    echo 'Please include the error message above and the URL you used.</p>';
-    if (CONST_Debug) {
-        echo '<hr><h2>Debugging Information</h2><br>';
-        if ($sSQL) {
-            echo '<h3>SQL query</h3><code>'.$sSQL.'</code>';
-        }
-        if ($vDumpVar) {
-            echo '<h3>Result</h3> <code>';
-            var_dump($vDumpVar);
-            echo '</code>';
-        }
+    $error = error_get_last();
+    if ($error !== null && $error['type'] === E_ERROR) {
+        exception_handler_json(new Exception($error['message'], 500));
     }
-    echo "\n</body></html>\n";
-    exit;
 }
 
 
-function userError($sError)
+function set_exception_handler_by_format($sFormat = null)
 {
-    header('HTTP/1.0 400 Bad Request');
-    header('Content-type: text/html; charset=utf-8');
-    echo '<html><body><h1>Bad Request</h1>';
-    echo '<p>Nominatim has encountered an error with your request.</p>';
-    echo '<p><b>Details:</b> '.$sError.'</p>';
-    echo '<p>If you feel this error is incorrect feel file an issue on <a href="https://github.com/openstreetmap/Nominatim/issues">Github</a>. ';
-    echo 'Please include the error message above and the URL you used.</p>';
-    echo "\n</body></html>\n";
-    exit;
+    // Multiple calls to register_shutdown_function will cause multiple callbacks
+    // to be executed, we only want the last executed. Thus we don't want to register
+    // one by default without an explicit $sFormat set.
+
+    if (!isset($sFormat)) {
+        set_exception_handler('exception_handler_html');
+    } elseif ($sFormat == 'html') {
+        set_exception_handler('exception_handler_html');
+        register_shutdown_function('shutdown_exception_handler_html');
+    } elseif ($sFormat == 'xml') {
+        set_exception_handler('exception_handler_xml');
+        register_shutdown_function('shutdown_exception_handler_xml');
+    } else {
+        set_exception_handler('exception_handler_json');
+        register_shutdown_function('shutdown_exception_handler_json');
+    }
 }
+// set a default
+set_exception_handler_by_format();
 
 
 /***************************************************************************
@@ -96,6 +100,6 @@ if (CONST_NoAccessControl) {
         header('Access-Control-Allow-Headers: '.$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']);
     }
 }
-if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') exit;
+if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'OPTIONS') exit;
 
 if (CONST_Debug) header('Content-type: text/html; charset=utf-8');
index d21880715abcbe8f91429c2effb973d603de768e..0bd23e31cfe57ffb1376b8025574efd738f22a1e 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 require_once(CONST_BasePath.'/lib/lib.php');
-require_once(CONST_BasePath.'/lib/db.php');
+require_once(CONST_BasePath.'/lib/DB.php');
 
 if (get_magic_quotes_gpc()) {
     echo "Please disable magic quotes in your php.ini configuration\n";
index a749cb6bd65842b5264f17ae2b23c0033aa1aa3e..c4fbca308636e60e0cd0e59a27fc63eb517b7597 100644 (file)
@@ -4,7 +4,7 @@ function fail($sError, $sUserError = false)
 {
     if (!$sUserError) $sUserError = $sError;
     error_log('ERROR: '.$sError);
-    echo $sUserError."\n";
+    var_dump($sUserError)."\n";
     exit(-1);
 }
 
@@ -61,23 +61,26 @@ function byImportance($a, $b)
 
 function javascript_renderData($xVal, $iOptions = 0)
 {
-    $iOptions |= JSON_UNESCAPED_UNICODE;
+    $sCallback = isset($_GET['json_callback']) ? $_GET['json_callback'] : '';
+    if ($sCallback && !preg_match('/^[$_\p{L}][$_\p{L}\p{Nd}.[\]]*$/u', $sCallback)) {
+        // Unset, we call javascript_renderData again during exception handling
+        unset($_GET['json_callback']);
+        throw new Exception('Invalid json_callback value', 400);
+    }
+
+    $iOptions |= JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES;
     if (isset($_GET['pretty']) && in_array(strtolower($_GET['pretty']), array('1', 'true'))) {
         $iOptions |= JSON_PRETTY_PRINT;
     }
 
     $jsonout = json_encode($xVal, $iOptions);
 
-    if (!isset($_GET['json_callback'])) {
+    if ($sCallback) {
+        header('Content-Type: application/javascript; charset=UTF-8');
+        echo $_GET['json_callback'].'('.$jsonout.')';
+    } else {
         header('Content-Type: application/json; charset=UTF-8');
         echo $jsonout;
-    } else {
-        if (preg_match('/^[$_\p{L}][$_\p{L}\p{Nd}.[\]]*$/u', $_GET['json_callback'])) {
-            header('Content-Type: application/javascript; charset=UTF-8');
-            echo $_GET['json_callback'].'('.$jsonout.')';
-        } else {
-            header('HTTP/1.0 400 Bad Request');
-        }
     }
 }
 
@@ -92,8 +95,8 @@ function parseLatLon($sQuery)
     $fQueryLat = null;
     $fQueryLon = null;
 
-    if (preg_match('/\\s*([NS])[ ]+([0-9]+[0-9.]*)[° ]+([0-9.]+)?[′\']*[, ]+([EW])[ ]+([0-9]+)[° ]+([0-9]+[0-9.]*)[′\']*\\s*/', $sQuery, $aData)) {
-        /*               1         2                   3                    4         5            6
+    if (preg_match('/\\s*([NS])[\s]+([0-9]+[0-9.]*)[°\s]+([0-9.]+)?[′\']*[,\s]+([EW])[\s]+([0-9]+)[°\s]+([0-9]+[0-9.]*)[′\']*\\s*/', $sQuery, $aData)) {
+        /*               1          2                    3                     4          5             6
          * degrees decimal minutes
          * N 40 26.767, W 79 58.933
          * N 40°26.767′, W 79°58.933′
@@ -101,8 +104,8 @@ function parseLatLon($sQuery)
         $sFound    = $aData[0];
         $fQueryLat = ($aData[1]=='N'?1:-1) * ($aData[2] + $aData[3]/60);
         $fQueryLon = ($aData[4]=='E'?1:-1) * ($aData[5] + $aData[6]/60);
-    } elseif (preg_match('/\\s*([0-9]+)[° ]+([0-9]+[0-9.]*)?[′\']*[ ]+([NS])[, ]+([0-9]+)[° ]+([0-9]+[0-9.]*)?[′\' ]+([EW])\\s*/', $sQuery, $aData)) {
-        /*                     1            2                         3          4            5                      6
+    } elseif (preg_match('/\\s*([0-9]+)[°\s]+([0-9]+[0-9.]*)?[′\']*[\s]+([NS])[,\s]+([0-9]+)[°\s]+([0-9]+[0-9.]*)?[′\'\s]+([EW])\\s*/', $sQuery, $aData)) {
+        /*                     1             2                          3           4             5                       6
          * degrees decimal minutes
          * 40 26.767 N, 79 58.933 W
          * 40° 26.767′ N 79° 58.933′ W
@@ -110,8 +113,8 @@ function parseLatLon($sQuery)
         $sFound    = $aData[0];
         $fQueryLat = ($aData[3]=='N'?1:-1) * ($aData[1] + $aData[2]/60);
         $fQueryLon = ($aData[6]=='E'?1:-1) * ($aData[4] + $aData[5]/60);
-    } elseif (preg_match('/\\s*([NS])[ ]([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+)[″"]*[, ]+([EW])[ ]([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+)[″"]*\\s*/', $sQuery, $aData)) {
-        /*                     1        2            3              4                 5        6            7              8
+    } elseif (preg_match('/\\s*([NS])[\s]+([0-9]+)[°\s]+([0-9]+)[′\'\s]+([0-9]+)[″"]*[,\s]+([EW])[\s]+([0-9]+)[°\s]+([0-9]+)[′\'\s]+([0-9]+)[″"]*\\s*/', $sQuery, $aData)) {
+        /*                     1          2             3               4                  5          6             7               8
          * degrees decimal seconds
          * N 40 26 46 W 79 58 56
          * N 40° 26′ 46″, W 79° 58′ 56″
@@ -119,8 +122,8 @@ function parseLatLon($sQuery)
         $sFound    = $aData[0];
         $fQueryLat = ($aData[1]=='N'?1:-1) * ($aData[2] + $aData[3]/60 + $aData[4]/3600);
         $fQueryLon = ($aData[5]=='E'?1:-1) * ($aData[6] + $aData[7]/60 + $aData[8]/3600);
-    } elseif (preg_match('/\\s*([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+[0-9.]*)[″" ]+([NS])[, ]+([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+[0-9.]*)[″" ]+([EW])\\s*/', $sQuery, $aData)) {
-        /*                     1            2              3                    4          5            6              7                     8
+    } elseif (preg_match('/\\s*([0-9]+)[°\s]+([0-9]+)[′\'\s]+([0-9]+[0-9.]*)[″"\s]+([NS])[,\s]+([0-9]+)[°\s]+([0-9]+)[′\'\s]+([0-9]+[0-9.]*)[″"\s]+([EW])\\s*/', $sQuery, $aData)) {
+        /*                     1             2               3                     4           5             6               7                     8
          * degrees decimal seconds
          * 40 26 46 N 79 58 56 W
          * 40° 26′ 46″ N, 79° 58′ 56″ W
@@ -129,24 +132,24 @@ function parseLatLon($sQuery)
         $sFound    = $aData[0];
         $fQueryLat = ($aData[4]=='N'?1:-1) * ($aData[1] + $aData[2]/60 + $aData[3]/3600);
         $fQueryLon = ($aData[8]=='E'?1:-1) * ($aData[5] + $aData[6]/60 + $aData[7]/3600);
-    } elseif (preg_match('/\\s*([NS])[ ]([0-9]+[0-9]*\\.[0-9]+)[°]*[, ]+([EW])[ ]([0-9]+[0-9]*\\.[0-9]+)[°]*\\s*/', $sQuery, $aData)) {
-        /*                     1        2                               3        4
+    } elseif (preg_match('/\\s*([NS])[\s]+([0-9]+[0-9]*\\.[0-9]+)[°]*[,\s]+([EW])[\s]+([0-9]+[0-9]*\\.[0-9]+)[°]*\\s*/', $sQuery, $aData)) {
+        /*                     1          2                                3          4
          * degrees decimal
          * N 40.446° W 79.982°
          */
         $sFound    = $aData[0];
         $fQueryLat = ($aData[1]=='N'?1:-1) * ($aData[2]);
         $fQueryLon = ($aData[3]=='E'?1:-1) * ($aData[4]);
-    } elseif (preg_match('/\\s*([0-9]+[0-9]*\\.[0-9]+)[° ]+([NS])[, ]+([0-9]+[0-9]*\\.[0-9]+)[° ]+([EW])\\s*/', $sQuery, $aData)) {
-        /*                     1                           2          3                           4
+    } elseif (preg_match('/\\s*([0-9]+[0-9]*\\.[0-9]+)[°\s]+([NS])[,\s]+([0-9]+[0-9]*\\.[0-9]+)[°\s]+([EW])\\s*/', $sQuery, $aData)) {
+        /*                     1                            2           3                            4
          * degrees decimal
          * 40.446° N 79.982° W
          */
         $sFound    = $aData[0];
         $fQueryLat = ($aData[2]=='N'?1:-1) * ($aData[1]);
         $fQueryLon = ($aData[4]=='E'?1:-1) * ($aData[3]);
-    } elseif (preg_match('/(\\s*\\[|^\\s*|\\s*)(-?[0-9]+[0-9]*\\.[0-9]+)[, ]+(-?[0-9]+[0-9]*\\.[0-9]+)(\\]\\s*|\\s*$|\\s*)/', $sQuery, $aData)) {
-        /*                 1                   2                             3                        4
+    } elseif (preg_match('/(\\s*\\[|^\\s*|\\s*)(-?[0-9]+[0-9]*\\.[0-9]+)[,\s]+(-?[0-9]+[0-9]*\\.[0-9]+)(\\]\\s*|\\s*$|\\s*)/', $sQuery, $aData)) {
+        /*                 1                   2                              3                        4
          * degrees decimal
          * 12.34, 56.78
          * 12.34 56.78
@@ -162,39 +165,6 @@ function parseLatLon($sQuery)
     return array($sFound, $fQueryLat, $fQueryLon);
 }
 
-
-function geometryText2Points($geometry_as_text, $fRadius)
-{
-    $aPolyPoints = null;
-    if (preg_match('#POLYGON\\(\\(([- 0-9.,]+)#', $geometry_as_text, $aMatch)) {
-        //
-        preg_match_all('/(-?[0-9.]+) (-?[0-9.]+)/', $aMatch[1], $aPolyPoints, PREG_SET_ORDER);
-        //
-    } elseif (preg_match('#LINESTRING\\(([- 0-9.,]+)#', $geometry_as_text, $aMatch)) {
-        //
-        preg_match_all('/(-?[0-9.]+) (-?[0-9.]+)/', $aMatch[1], $aPolyPoints, PREG_SET_ORDER);
-        //
-    } elseif (preg_match('#MULTIPOLYGON\\(\\(\\(([- 0-9.,]+)#', $geometry_as_text, $aMatch)) {
-        //
-        preg_match_all('/(-?[0-9.]+) (-?[0-9.]+)/', $aMatch[1], $aPolyPoints, PREG_SET_ORDER);
-        //
-    } elseif (preg_match('#POINT\\((-?[0-9.]+) (-?[0-9.]+)\\)#', $geometry_as_text, $aMatch)) {
-        //
-        $aPolyPoints = createPointsAroundCenter($aMatch[1], $aMatch[2], $fRadius);
-        //
-    }
-
-    if (isset($aPolyPoints)) {
-        $aResultPoints = array();
-        foreach ($aPolyPoints as $aPoint) {
-            $aResultPoints[] = array($aPoint[1], $aPoint[2]);
-        }
-        return $aResultPoints;
-    }
-
-    return;
-}
-
 function createPointsAroundCenter($fLon, $fLat, $fRadius)
 {
     $iSteps = max(8, min(100, ($fRadius * 40000)^2));
@@ -225,3 +195,25 @@ function closestHouseNumber($aRow)
 
     return max(min($aRow['endnumber'], $iHn), $aRow['startnumber']);
 }
+
+function getSearchRankLabel($iRank)
+{
+    if (!isset($iRank)) return 'unknown';
+    if ($iRank < 2) return 'continent';
+    if ($iRank < 4) return 'sea';
+    if ($iRank < 8) return 'country';
+    if ($iRank < 12) return 'state';
+    if ($iRank < 16) return 'county';
+    if ($iRank == 16) return 'city';
+    if ($iRank == 17) return 'town / island';
+    if ($iRank == 18) return 'village / hamlet';
+    if ($iRank == 20) return 'suburb';
+    if ($iRank == 21) return 'postcode area';
+    if ($iRank == 22) return 'croft / farm / locality / islet';
+    if ($iRank == 23) return 'postcode area';
+    if ($iRank == 25) return 'postcode point';
+    if ($iRank == 26) return 'street / major landmark';
+    if ($iRank == 27) return 'minory street / path';
+    if ($iRank == 28) return 'house / building';
+    return 'other: ' . $iRank;
+}
index 97d7d9c9f9c997adccc81dc8769f076d0fe71f63..25ed75cb2c7117411d013a5b78931129496cfec3 100644 (file)
@@ -36,9 +36,19 @@ function logStart(&$oDB, $sType = '', $sQuery = '', $aLanguageList = array())
             $sUserAgent = $_SERVER['HTTP_USER_AGENT'];
         else $sUserAgent = '';
         $sSQL = 'insert into new_query_log (type,starttime,query,ipaddress,useragent,language,format,searchterm)';
-        $sSQL .= ' values ('.getDBQuoted($sType).','.getDBQuoted($hLog[0]).','.getDBQuoted($hLog[2]);
-        $sSQL .= ','.getDBQuoted($hLog[1]).','.getDBQuoted($sUserAgent).','.getDBQuoted(join(',', $aLanguageList)).','.getDBQuoted($sOutputFormat).','.getDBQuoted($hLog[3]).')';
-        $oDB->query($sSQL);
+        $sSQL .= ' values (';
+        $sSQL .= join(',', $oDB->getDBQuotedList(array(
+            $sType,
+            $hLog[0],
+            $hLog[2],
+            $hLog[1],
+            $sUserAgent,
+            join(',', $aLanguageList),
+            $sOutputFormat,
+            $hLog[3]
+        )));
+        $sSQL .= ')';
+        $oDB->exec($sSQL);
     }
 
     return $hLog;
@@ -53,11 +63,11 @@ function logEnd(&$oDB, $hLog, $iNumResults)
         if (!$aEndTime[1]) $aEndTime[1] = '0';
         $sEndTime = date('Y-m-d H:i:s', $aEndTime[0]).'.'.$aEndTime[1];
 
-        $sSQL = 'update new_query_log set endtime = '.getDBQuoted($sEndTime).', results = '.$iNumResults;
-        $sSQL .= ' where starttime = '.getDBQuoted($hLog[0]);
-        $sSQL .= ' and ipaddress = '.getDBQuoted($hLog[1]);
-        $sSQL .= ' and query = '.getDBQuoted($hLog[2]);
-        $oDB->query($sSQL);
+        $sSQL = 'update new_query_log set endtime = '.$oDB->getDBQuoted($sEndTime).', results = '.$iNumResults;
+        $sSQL .= ' where starttime = '.$oDB->getDBQuoted($hLog[0]);
+        $sSQL .= ' and ipaddress = '.$oDB->getDBQuoted($hLog[1]);
+        $sSQL .= ' and query = '.$oDB->getDBQuoted($hLog[2]);
+        $oDB->exec($sSQL);
     }
 
     if (CONST_Log_File) {
index 9d4b7502c855044c6859bae36f1d291897ab20c7..823a6631e08cfeab2b134d803784cf77beb985d8 100644 (file)
@@ -12,6 +12,8 @@ function formatOSMType($sType, $bIncludeExternal = true)
     if ($sType == 'T') return 'way';
     if ($sType == 'I') return 'way';
 
+    // not handled: P, L
+
     return '';
 }
 
@@ -33,20 +35,39 @@ function wikipediaLink($aFeature)
     return '';
 }
 
-function detailsLink($aFeature, $sTitle = false)
+function detailsLink($aFeature, $sTitle = false, $sExtraProperties = false)
 {
     if (!$aFeature['place_id']) return '';
 
-    return '<a href="details.php?place_id='.$aFeature['place_id'].'">'.($sTitle?$sTitle:$aFeature['place_id']).'</a>';
+    $sHtml = '<a ';
+    if ($sExtraProperties) {
+        $sHtml .= $sExtraProperties.' ';
+    }
+
+    $sHtml .= 'href="details.php?place_id='.$aFeature['place_id'].'">'.($sTitle?$sTitle:$aFeature['place_id']).'</a>';
+
+    return $sHtml;
 }
 
-function detailsPermaLink($aFeature, $sRefText = false)
+function detailsPermaLink($aFeature, $sRefText = false, $sExtraProperties = false)
 {
     $sOSMType = formatOSMType($aFeature['osm_type'], false);
 
     if ($sOSMType) {
-        $sLabel = $sRefText ? $sRefText : $sOSMType.' '.$aFeature['osm_id'];
-        return '<a href="details.php?osmtype='.$aFeature['osm_type'].'&osmid='.$aFeature['osm_id'].'&class='.$aFeature['class'].'">'.$sLabel.'</a>';
+        $sHtml = '<a ';
+        if ($sExtraProperties) {
+            $sHtml .= $sExtraProperties.' ';
+        }
+        $sHtml .= 'href="details.php?osmtype='.$aFeature['osm_type']
+                  .'&osmid='.$aFeature['osm_id'].'&class='.$aFeature['class'].'">';
+
+        if ($sRefText) {
+            $sHtml .= $sRefText.'</a>';
+        } else {
+            $sHtml .= $sOSMType.' '.$aFeature['osm_id'].'</a>';
+        }
+
+        return $sHtml;
     }
-    return '';
+    return detailsLink($aFeature, $sRefText, $sExtraProperties);
 }
diff --git a/lib/setup/AddressLevelParser.php b/lib/setup/AddressLevelParser.php
new file mode 100644 (file)
index 0000000..a399c95
--- /dev/null
@@ -0,0 +1,98 @@
+<?php
+
+namespace Nominatim\Setup;
+
+/**
+ * Parses an address level description.
+ */
+class AddressLevelParser
+{
+    private $aLevels;
+
+    public function __construct($sDescriptionFile)
+    {
+        $sJson = file_get_contents($sDescriptionFile);
+        $this->aLevels = json_decode($sJson, true);
+        if (!$this->aLevels) {
+            switch (json_last_error()) {
+                case JSON_ERROR_NONE:
+                    break;
+                case JSON_ERROR_DEPTH:
+                    fail('JSON error - Maximum stack depth exceeded');
+                    break;
+                case JSON_ERROR_STATE_MISMATCH:
+                    fail('JSON error - Underflow or the modes mismatch');
+                    break;
+                case JSON_ERROR_CTRL_CHAR:
+                    fail('JSON error - Unexpected control character found');
+                    break;
+                case JSON_ERROR_SYNTAX:
+                    fail('JSON error - Syntax error, malformed JSON');
+                    break;
+                case JSON_ERROR_UTF8:
+                    fail('JSON error - Malformed UTF-8 characters, possibly incorrectly encoded');
+                    break;
+                default:
+                    fail('JSON error - Unknown error');
+                    break;
+            }
+        }
+    }
+
+    /**
+     * Dump the description into a database table.
+     *
+     * @param object $oDB    Database conneciton to use.
+     * @param string $sTable Name of table to create.
+     *
+     * @return null
+     *
+     * A new table is created. Any previously existing table is dropped.
+     * The table has the following columns:
+     * country, class, type, rank_search, rank_address.
+     */
+    public function createTable($oDB, $sTable)
+    {
+        $oDB->exec('DROP TABLE IF EXISTS '.$sTable);
+        $sSql = 'CREATE TABLE '.$sTable;
+        $sSql .= '(country_code varchar(2), class TEXT, type TEXT,';
+        $sSql .= ' rank_search SMALLINT, rank_address SMALLINT)';
+        $oDB->exec($sSql);
+
+        $sSql = 'CREATE UNIQUE INDEX ON '.$sTable.' (country_code, class, type)';
+        $oDB->exec($sSql);
+
+        $sSql = 'INSERT INTO '.$sTable.' VALUES ';
+        foreach ($this->aLevels as $aLevel) {
+            $aCountries = array();
+            if (isset($aLevel['countries'])) {
+                foreach ($aLevel['countries'] as $sCountry) {
+                    $aCountries[$sCountry] = $oDB->getDBQuoted($sCountry);
+                }
+            } else {
+                $aCountries['NULL'] = 'NULL';
+            }
+            foreach ($aLevel['tags'] as $sKey => $aValues) {
+                foreach ($aValues as $sValue => $mRanks) {
+                    $aFields = array(
+                        $oDB->getDBQuoted($sKey),
+                        $sValue ? $oDB->getDBQuoted($sValue) : 'NULL'
+                    );
+                    if (is_array($mRanks)) {
+                        $aFields[] = (string) $mRanks[0];
+                        $aFields[] = (string) $mRanks[1];
+                    } else {
+                        $aFields[] = (string) $mRanks;
+                        $aFields[] = (string) $mRanks;
+                    }
+                    $sLine = ','.join(',', $aFields).'),';
+
+                    foreach ($aCountries as $sCountries) {
+                        $sSql .= '('.$sCountries.$sLine;
+                    }
+                }
+            }
+        }
+        $oDB->exec(rtrim($sSql, ','));
+    }
+}
diff --git a/lib/setup/SetupClass.php b/lib/setup/SetupClass.php
new file mode 100755 (executable)
index 0000000..385eff7
--- /dev/null
@@ -0,0 +1,885 @@
+<?php
+
+namespace Nominatim\Setup;
+
+require_once(CONST_BasePath.'/lib/setup/AddressLevelParser.php');
+require_once(CONST_BasePath.'/lib/Shell.php');
+
+class SetupFunctions
+{
+    protected $iCacheMemory;
+    protected $iInstances;
+    protected $sModulePath;
+    protected $aDSNInfo;
+    protected $bQuiet;
+    protected $bVerbose;
+    protected $sIgnoreErrors;
+    protected $bEnableDiffUpdates;
+    protected $bEnableDebugStatements;
+    protected $bNoPartitions;
+    protected $bDrop;
+    protected $oDB = null;
+
+    public function __construct(array $aCMDResult)
+    {
+        // by default, use all but one processor, but never more than 15.
+        $this->iInstances = isset($aCMDResult['threads'])
+            ? $aCMDResult['threads']
+            : (min(16, getProcessorCount()) - 1);
+
+        if ($this->iInstances < 1) {
+            $this->iInstances = 1;
+            warn('resetting threads to '.$this->iInstances);
+        }
+
+        if (isset($aCMDResult['osm2pgsql-cache'])) {
+            $this->iCacheMemory = $aCMDResult['osm2pgsql-cache'];
+        } elseif (!is_null(CONST_Osm2pgsql_Flatnode_File)) {
+            // When flatnode files are enabled then disable cache per default.
+            $this->iCacheMemory = 0;
+        } else {
+            // Otherwise: Assume we can steal all the cache memory in the box.
+            $this->iCacheMemory = getCacheMemoryMB();
+        }
+
+        $this->sModulePath = CONST_Database_Module_Path;
+        info('module path: ' . $this->sModulePath);
+
+        // parse database string
+        $this->aDSNInfo = \Nominatim\DB::parseDSN(CONST_Database_DSN);
+        if (!isset($this->aDSNInfo['port'])) {
+            $this->aDSNInfo['port'] = 5432;
+        }
+
+        // setting member variables based on command line options stored in $aCMDResult
+        $this->bQuiet = isset($aCMDResult['quiet']) && $aCMDResult['quiet'];
+        $this->bVerbose = $aCMDResult['verbose'];
+
+        //setting default values which are not set by the update.php array
+        if (isset($aCMDResult['ignore-errors'])) {
+            $this->sIgnoreErrors = $aCMDResult['ignore-errors'];
+        } else {
+            $this->sIgnoreErrors = false;
+        }
+        if (isset($aCMDResult['enable-debug-statements'])) {
+            $this->bEnableDebugStatements = $aCMDResult['enable-debug-statements'];
+        } else {
+            $this->bEnableDebugStatements = false;
+        }
+        if (isset($aCMDResult['no-partitions'])) {
+            $this->bNoPartitions = $aCMDResult['no-partitions'];
+        } else {
+            $this->bNoPartitions = false;
+        }
+        if (isset($aCMDResult['enable-diff-updates'])) {
+            $this->bEnableDiffUpdates = $aCMDResult['enable-diff-updates'];
+        } else {
+            $this->bEnableDiffUpdates = false;
+        }
+
+        $this->bDrop = isset($aCMDResult['drop']) && $aCMDResult['drop'];
+    }
+
+    public function createDB()
+    {
+        info('Create DB');
+        $oDB = new \Nominatim\DB;
+
+        if ($oDB->checkConnection()) {
+            fail('database already exists ('.CONST_Database_DSN.')');
+        }
+
+        $oCmd = (new \Nominatim\Shell('createdb'))
+                ->addParams('-E', 'UTF-8')
+                ->addParams('-p', $this->aDSNInfo['port']);
+
+        if (isset($this->aDSNInfo['username'])) {
+            $oCmd->addParams('-U', $this->aDSNInfo['username']);
+        }
+        if (isset($this->aDSNInfo['password'])) {
+            $oCmd->addEnvPair('PGPASSWORD', $this->aDSNInfo['password']);
+        }
+        if (isset($this->aDSNInfo['hostspec'])) {
+            $oCmd->addParams('-h', $this->aDSNInfo['hostspec']);
+        }
+        $oCmd->addParams($this->aDSNInfo['database']);
+
+        $result = $oCmd->run();
+        if ($result != 0) fail('Error executing external command: '.$oCmd->escapedCmd());
+    }
+
+    public function connect()
+    {
+        $this->oDB = new \Nominatim\DB();
+        $this->oDB->connect();
+    }
+
+    public function setupDB()
+    {
+        info('Setup DB');
+
+        $fPostgresVersion = $this->oDB->getPostgresVersion();
+        echo 'Postgres version found: '.$fPostgresVersion."\n";
+
+        if ($fPostgresVersion < 9.03) {
+            fail('Minimum supported version of Postgresql is 9.3.');
+        }
+
+        $this->pgsqlRunScript('CREATE EXTENSION IF NOT EXISTS hstore');
+        $this->pgsqlRunScript('CREATE EXTENSION IF NOT EXISTS postgis');
+
+        $fPostgisVersion = $this->oDB->getPostgisVersion();
+        echo 'Postgis version found: '.$fPostgisVersion."\n";
+
+        if ($fPostgisVersion < 2.2) {
+            echo "Minimum required Postgis version 2.2\n";
+            exit(1);
+        }
+
+        $i = $this->oDB->getOne("select count(*) from pg_user where usename = '".CONST_Database_Web_User."'");
+        if ($i == 0) {
+            echo "\nERROR: Web user '".CONST_Database_Web_User."' does not exist. Create it with:\n";
+            echo "\n          createuser ".CONST_Database_Web_User."\n\n";
+            exit(1);
+        }
+
+        // Try accessing the C module, so we know early if something is wrong
+        checkModulePresence(); // raises exception on failure
+
+        if (!file_exists(CONST_ExtraDataPath.'/country_osm_grid.sql.gz')) {
+            echo 'Error: you need to download the country_osm_grid first:';
+            echo "\n    wget -O ".CONST_ExtraDataPath."/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz\n";
+            exit(1);
+        }
+        $this->pgsqlRunScriptFile(CONST_BasePath.'/data/country_name.sql');
+        $this->pgsqlRunScriptFile(CONST_ExtraDataPath.'/country_osm_grid.sql.gz');
+        $this->pgsqlRunScriptFile(CONST_BasePath.'/data/gb_postcode_table.sql');
+        $this->pgsqlRunScriptFile(CONST_BasePath.'/data/us_postcode_table.sql');
+
+        $sPostcodeFilename = CONST_BasePath.'/data/gb_postcode_data.sql.gz';
+        if (file_exists($sPostcodeFilename)) {
+            $this->pgsqlRunScriptFile($sPostcodeFilename);
+        } else {
+            warn('optional external GB postcode table file ('.$sPostcodeFilename.') not found. Skipping.');
+        }
+
+        $sPostcodeFilename = CONST_BasePath.'/data/us_postcode_data.sql.gz';
+        if (file_exists($sPostcodeFilename)) {
+            $this->pgsqlRunScriptFile($sPostcodeFilename);
+        } else {
+            warn('optional external US postcode table file ('.$sPostcodeFilename.') not found. Skipping.');
+        }
+
+        if ($this->bNoPartitions) {
+            $this->pgsqlRunScript('update country_name set partition = 0');
+        }
+    }
+
+    public function importData($sOSMFile)
+    {
+        info('Import data');
+
+        if (!file_exists(CONST_Osm2pgsql_Binary)) {
+            echo "Check CONST_Osm2pgsql_Binary in your local settings file.\n";
+            echo "Normally you should not need to set this manually.\n";
+            fail("osm2pgsql not found in '".CONST_Osm2pgsql_Binary."'");
+        }
+
+        $oCmd = new \Nominatim\Shell(CONST_Osm2pgsql_Binary);
+        $oCmd->addParams('--style', CONST_Import_Style);
+
+        if (!is_null(CONST_Osm2pgsql_Flatnode_File) && CONST_Osm2pgsql_Flatnode_File) {
+            $oCmd->addParams('--flat-nodes', CONST_Osm2pgsql_Flatnode_File);
+        }
+        if (CONST_Tablespace_Osm2pgsql_Data) {
+            $oCmd->addParams('--tablespace-slim-data', CONST_Tablespace_Osm2pgsql_Data);
+        }
+        if (CONST_Tablespace_Osm2pgsql_Index) {
+            $oCmd->addParams('--tablespace-slim-index', CONST_Tablespace_Osm2pgsql_Index);
+        }
+        if (CONST_Tablespace_Place_Data) {
+            $oCmd->addParams('--tablespace-main-data', CONST_Tablespace_Place_Data);
+        }
+        if (CONST_Tablespace_Place_Index) {
+            $oCmd->addParams('--tablespace-main-index', CONST_Tablespace_Place_Index);
+        }
+        $oCmd->addParams('--latlong', '--slim', '--create');
+        $oCmd->addParams('--output', 'gazetteer');
+        $oCmd->addParams('--hstore');
+        $oCmd->addParams('--number-processes', 1);
+        $oCmd->addParams('--cache', $this->iCacheMemory);
+        $oCmd->addParams('--port', $this->aDSNInfo['port']);
+
+        if (isset($this->aDSNInfo['username'])) {
+            $oCmd->addParams('--username', $this->aDSNInfo['username']);
+        }
+        if (isset($this->aDSNInfo['password'])) {
+            $oCmd->addEnvPair('PGPASSWORD', $this->aDSNInfo['password']);
+        }
+        if (isset($this->aDSNInfo['hostspec'])) {
+            $oCmd->addParams('--host', $this->aDSNInfo['hostspec']);
+        }
+        $oCmd->addParams('--database', $this->aDSNInfo['database']);
+        $oCmd->addParams($sOSMFile);
+        $oCmd->run();
+
+        if (!$this->sIgnoreErrors && !$this->oDB->getRow('select * from place limit 1')) {
+            fail('No Data');
+        }
+
+        if ($this->bDrop) {
+            $this->dropTable('planet_osm_nodes');
+            $this->removeFlatnodeFile();
+        }
+    }
+
+    public function createFunctions()
+    {
+        info('Create Functions');
+
+        // Try accessing the C module, so we know early if something is wrong
+        checkModulePresence(); // raises exception on failure
+
+        $this->createSqlFunctions();
+    }
+
+    public function createTables($bReverseOnly = false)
+    {
+        info('Create Tables');
+
+        $sTemplate = file_get_contents(CONST_BasePath.'/sql/tables.sql');
+        $sTemplate = $this->replaceSqlPatterns($sTemplate);
+
+        $this->pgsqlRunScript($sTemplate, false);
+
+        if ($bReverseOnly) {
+            $this->dropTable('search_name');
+        }
+
+        $oAlParser = new AddressLevelParser(CONST_Address_Level_Config);
+        $oAlParser->createTable($this->oDB, 'address_levels');
+    }
+
+    public function createTableTriggers()
+    {
+        info('Create Tables');
+
+        $sTemplate = file_get_contents(CONST_BasePath.'/sql/table-triggers.sql');
+        $sTemplate = $this->replaceSqlPatterns($sTemplate);
+
+        $this->pgsqlRunScript($sTemplate, false);
+    }
+
+    public function createPartitionTables()
+    {
+        info('Create Partition Tables');
+
+        $sTemplate = file_get_contents(CONST_BasePath.'/sql/partition-tables.src.sql');
+        $sTemplate = $this->replaceSqlPatterns($sTemplate);
+
+        $this->pgsqlRunPartitionScript($sTemplate);
+    }
+
+    public function createPartitionFunctions()
+    {
+        info('Create Partition Functions');
+
+        $sTemplate = file_get_contents(CONST_BasePath.'/sql/partition-functions.src.sql');
+        $this->pgsqlRunPartitionScript($sTemplate);
+    }
+
+    public function importWikipediaArticles()
+    {
+        $sWikiArticlesFile = CONST_Wikipedia_Data_Path.'/wikimedia-importance.sql.gz';
+        if (file_exists($sWikiArticlesFile)) {
+            info('Importing wikipedia articles and redirects');
+            $this->dropTable('wikipedia_article');
+            $this->dropTable('wikipedia_redirect');
+            $this->pgsqlRunScriptFile($sWikiArticlesFile);
+        } else {
+            warn('wikipedia importance dump file not found - places will have default importance');
+        }
+    }
+
+    public function loadData($bDisableTokenPrecalc)
+    {
+        info('Drop old Data');
+
+        $this->oDB->exec('TRUNCATE word');
+        echo '.';
+        $this->oDB->exec('TRUNCATE placex');
+        echo '.';
+        $this->oDB->exec('TRUNCATE location_property_osmline');
+        echo '.';
+        $this->oDB->exec('TRUNCATE place_addressline');
+        echo '.';
+        $this->oDB->exec('TRUNCATE location_area');
+        echo '.';
+        if (!$this->dbReverseOnly()) {
+            $this->oDB->exec('TRUNCATE search_name');
+            echo '.';
+        }
+        $this->oDB->exec('TRUNCATE search_name_blank');
+        echo '.';
+        $this->oDB->exec('DROP SEQUENCE seq_place');
+        echo '.';
+        $this->oDB->exec('CREATE SEQUENCE seq_place start 100000');
+        echo '.';
+
+        $sSQL = 'select distinct partition from country_name';
+        $aPartitions = $this->oDB->getCol($sSQL);
+
+        if (!$this->bNoPartitions) $aPartitions[] = 0;
+        foreach ($aPartitions as $sPartition) {
+            $this->oDB->exec('TRUNCATE location_road_'.$sPartition);
+            echo '.';
+        }
+
+        // used by getorcreate_word_id to ignore frequent partial words
+        $sSQL = 'CREATE OR REPLACE FUNCTION get_maxwordfreq() RETURNS integer AS ';
+        $sSQL .= '$$ SELECT '.CONST_Max_Word_Frequency.' as maxwordfreq; $$ LANGUAGE SQL IMMUTABLE';
+        $this->oDB->exec($sSQL);
+        echo ".\n";
+
+        // pre-create the word list
+        if (!$bDisableTokenPrecalc) {
+            info('Loading word list');
+            $this->pgsqlRunScriptFile(CONST_BasePath.'/data/words.sql');
+        }
+
+        info('Load Data');
+        $sColumns = 'osm_type, osm_id, class, type, name, admin_level, address, extratags, geometry';
+
+        $aDBInstances = array();
+        $iLoadThreads = max(1, $this->iInstances - 1);
+        for ($i = 0; $i < $iLoadThreads; $i++) {
+            // https://secure.php.net/manual/en/function.pg-connect.php
+            $DSN = CONST_Database_DSN;
+            $DSN = preg_replace('/^pgsql:/', '', $DSN);
+            $DSN = preg_replace('/;/', ' ', $DSN);
+            $aDBInstances[$i] = pg_connect($DSN, PGSQL_CONNECT_FORCE_NEW);
+            pg_ping($aDBInstances[$i]);
+        }
+
+        for ($i = 0; $i < $iLoadThreads; $i++) {
+            $sSQL = "INSERT INTO placex ($sColumns) SELECT $sColumns FROM place WHERE osm_id % $iLoadThreads = $i";
+            $sSQL .= " and not (class='place' and type='houses' and osm_type='W'";
+            $sSQL .= "          and ST_GeometryType(geometry) = 'ST_LineString')";
+            $sSQL .= ' and ST_IsValid(geometry)';
+            if ($this->bVerbose) echo "$sSQL\n";
+            if (!pg_send_query($aDBInstances[$i], $sSQL)) {
+                fail(pg_last_error($aDBInstances[$i]));
+            }
+        }
+
+        // last thread for interpolation lines
+        // https://secure.php.net/manual/en/function.pg-connect.php
+        $DSN = CONST_Database_DSN;
+        $DSN = preg_replace('/^pgsql:/', '', $DSN);
+        $DSN = preg_replace('/;/', ' ', $DSN);
+        $aDBInstances[$iLoadThreads] = pg_connect($DSN, PGSQL_CONNECT_FORCE_NEW);
+        pg_ping($aDBInstances[$iLoadThreads]);
+        $sSQL = 'insert into location_property_osmline';
+        $sSQL .= ' (osm_id, address, linegeo)';
+        $sSQL .= ' SELECT osm_id, address, geometry from place where ';
+        $sSQL .= "class='place' and type='houses' and osm_type='W' and ST_GeometryType(geometry) = 'ST_LineString'";
+        if ($this->bVerbose) echo "$sSQL\n";
+        if (!pg_send_query($aDBInstances[$iLoadThreads], $sSQL)) {
+            fail(pg_last_error($aDBInstances[$iLoadThreads]));
+        }
+
+        $bFailed = false;
+        for ($i = 0; $i <= $iLoadThreads; $i++) {
+            while (($hPGresult = pg_get_result($aDBInstances[$i])) !== false) {
+                $resultStatus = pg_result_status($hPGresult);
+                // PGSQL_EMPTY_QUERY, PGSQL_COMMAND_OK, PGSQL_TUPLES_OK,
+                // PGSQL_COPY_OUT, PGSQL_COPY_IN, PGSQL_BAD_RESPONSE,
+                // PGSQL_NONFATAL_ERROR and PGSQL_FATAL_ERROR
+                // echo 'Query result ' . $i . ' is: ' . $resultStatus . "\n";
+                if ($resultStatus != PGSQL_COMMAND_OK && $resultStatus != PGSQL_TUPLES_OK) {
+                    $resultError = pg_result_error($hPGresult);
+                    echo '-- error text ' . $i . ': ' . $resultError . "\n";
+                    $bFailed = true;
+                }
+            }
+        }
+        if ($bFailed) {
+            fail('SQL errors loading placex and/or location_property_osmline tables');
+        }
+
+        for ($i = 0; $i < $this->iInstances; $i++) {
+            pg_close($aDBInstances[$i]);
+        }
+
+        echo "\n";
+        info('Reanalysing database');
+        $this->pgsqlRunScript('ANALYSE');
+
+        $sDatabaseDate = getDatabaseDate($this->oDB);
+        $this->oDB->exec('TRUNCATE import_status');
+        if (!$sDatabaseDate) {
+            warn('could not determine database date.');
+        } else {
+            $sSQL = "INSERT INTO import_status (lastimportdate) VALUES('".$sDatabaseDate."')";
+            $this->oDB->exec($sSQL);
+            echo "Latest data imported from $sDatabaseDate.\n";
+        }
+    }
+
+    public function importTigerData()
+    {
+        info('Import Tiger data');
+
+        $aFilenames = glob(CONST_Tiger_Data_Path.'/*.sql');
+        info('Found '.count($aFilenames).' SQL files in path '.CONST_Tiger_Data_Path);
+        if (empty($aFilenames)) {
+            warn('Tiger data import selected but no files found in path '.CONST_Tiger_Data_Path);
+            return;
+        }
+        $sTemplate = file_get_contents(CONST_BasePath.'/sql/tiger_import_start.sql');
+        $sTemplate = $this->replaceSqlPatterns($sTemplate);
+
+        $this->pgsqlRunScript($sTemplate, false);
+
+        $aDBInstances = array();
+        for ($i = 0; $i < $this->iInstances; $i++) {
+            // https://secure.php.net/manual/en/function.pg-connect.php
+            $DSN = CONST_Database_DSN;
+            $DSN = preg_replace('/^pgsql:/', '', $DSN);
+            $DSN = preg_replace('/;/', ' ', $DSN);
+            $aDBInstances[$i] = pg_connect($DSN, PGSQL_CONNECT_FORCE_NEW | PGSQL_CONNECT_ASYNC);
+            pg_ping($aDBInstances[$i]);
+        }
+
+        foreach ($aFilenames as $sFile) {
+            echo $sFile.': ';
+            $hFile = fopen($sFile, 'r');
+            $sSQL = fgets($hFile, 100000);
+            $iLines = 0;
+            while (true) {
+                for ($i = 0; $i < $this->iInstances; $i++) {
+                    if (!pg_connection_busy($aDBInstances[$i])) {
+                        while (pg_get_result($aDBInstances[$i]));
+                        $sSQL = fgets($hFile, 100000);
+                        if (!$sSQL) break 2;
+                        if (!pg_send_query($aDBInstances[$i], $sSQL)) fail(pg_last_error($aDBInstances[$i]));
+                        $iLines++;
+                        if ($iLines == 1000) {
+                            echo '.';
+                            $iLines = 0;
+                        }
+                    }
+                }
+                usleep(10);
+            }
+            fclose($hFile);
+
+            $bAnyBusy = true;
+            while ($bAnyBusy) {
+                $bAnyBusy = false;
+                for ($i = 0; $i < $this->iInstances; $i++) {
+                    if (pg_connection_busy($aDBInstances[$i])) $bAnyBusy = true;
+                }
+                usleep(10);
+            }
+            echo "\n";
+        }
+
+        for ($i = 0; $i < $this->iInstances; $i++) {
+            pg_close($aDBInstances[$i]);
+        }
+
+        info('Creating indexes on Tiger data');
+        $sTemplate = file_get_contents(CONST_BasePath.'/sql/tiger_import_finish.sql');
+        $sTemplate = $this->replaceSqlPatterns($sTemplate);
+
+        $this->pgsqlRunScript($sTemplate, false);
+    }
+
+    public function calculatePostcodes($bCMDResultAll)
+    {
+        info('Calculate Postcodes');
+        $this->oDB->exec('TRUNCATE location_postcode');
+
+        $sSQL  = 'INSERT INTO location_postcode';
+        $sSQL .= ' (place_id, indexed_status, country_code, postcode, geometry) ';
+        $sSQL .= "SELECT nextval('seq_place'), 1, country_code,";
+        $sSQL .= "       upper(trim (both ' ' from address->'postcode')) as pc,";
+        $sSQL .= '       ST_Centroid(ST_Collect(ST_Centroid(geometry)))';
+        $sSQL .= '  FROM placex';
+        $sSQL .= " WHERE address ? 'postcode' AND address->'postcode' NOT SIMILAR TO '%(,|;)%'";
+        $sSQL .= '       AND geometry IS NOT null';
+        $sSQL .= ' GROUP BY country_code, pc';
+        $this->oDB->exec($sSQL);
+
+        // only add postcodes that are not yet available in OSM
+        $sSQL  = 'INSERT INTO location_postcode';
+        $sSQL .= ' (place_id, indexed_status, country_code, postcode, geometry) ';
+        $sSQL .= "SELECT nextval('seq_place'), 1, 'us', postcode,";
+        $sSQL .= '       ST_SetSRID(ST_Point(x,y),4326)';
+        $sSQL .= '  FROM us_postcode WHERE postcode NOT IN';
+        $sSQL .= '        (SELECT postcode FROM location_postcode';
+        $sSQL .= "          WHERE country_code = 'us')";
+        $this->oDB->exec($sSQL);
+
+        // add missing postcodes for GB (if available)
+        $sSQL  = 'INSERT INTO location_postcode';
+        $sSQL .= ' (place_id, indexed_status, country_code, postcode, geometry) ';
+        $sSQL .= "SELECT nextval('seq_place'), 1, 'gb', postcode, geometry";
+        $sSQL .= '  FROM gb_postcode WHERE postcode NOT IN';
+        $sSQL .= '           (SELECT postcode FROM location_postcode';
+        $sSQL .= "             WHERE country_code = 'gb')";
+        $this->oDB->exec($sSQL);
+
+        if (!$bCMDResultAll) {
+            $sSQL = "DELETE FROM word WHERE class='place' and type='postcode'";
+            $sSQL .= 'and word NOT IN (SELECT postcode FROM location_postcode)';
+            $this->oDB->exec($sSQL);
+        }
+
+        $sSQL = 'SELECT count(getorcreate_postcode_id(v)) FROM ';
+        $sSQL .= '(SELECT distinct(postcode) as v FROM location_postcode) p';
+        $this->oDB->exec($sSQL);
+    }
+
+    public function index($bIndexNoanalyse)
+    {
+        $oBaseCmd = (new \Nominatim\Shell(CONST_BasePath.'/nominatim/nominatim.py'))
+                    ->addParams('--database', $this->aDSNInfo['database'])
+                    ->addParams('--port', $this->aDSNInfo['port'])
+                    ->addParams('--threads', $this->iInstances);
+
+        if (!$this->bQuiet) {
+            $oBaseCmd->addParams('-v');
+        }
+        if ($this->bVerbose) {
+            $oBaseCmd->addParams('-v');
+        }
+        if (isset($this->aDSNInfo['hostspec'])) {
+            $oBaseCmd->addParams('--host', $this->aDSNInfo['hostspec']);
+        }
+        if (isset($this->aDSNInfo['username'])) {
+            $oBaseCmd->addParams('--user', $this->aDSNInfo['username']);
+        }
+        if (isset($this->aDSNInfo['password'])) {
+            $oBaseCmd->addEnvPair('PGPASSWORD', $this->aDSNInfo['password']);
+        }
+
+        info('Index ranks 0 - 4');
+        $oCmd = (clone $oBaseCmd)->addParams('--maxrank', 4);
+        echo $oCmd->escapedCmd();
+        
+        $iStatus = $oCmd->run();
+        if ($iStatus != 0) {
+            fail('error status ' . $iStatus . ' running nominatim!');
+        }
+        if (!$bIndexNoanalyse) $this->pgsqlRunScript('ANALYSE');
+
+        info('Index ranks 5 - 25');
+        $oCmd = (clone $oBaseCmd)->addParams('--minrank', 5, '--maxrank', 25);
+        $iStatus = $oCmd->run();
+        if ($iStatus != 0) {
+            fail('error status ' . $iStatus . ' running nominatim!');
+        }
+        if (!$bIndexNoanalyse) $this->pgsqlRunScript('ANALYSE');
+
+        info('Index ranks 26 - 30');
+        $oCmd = (clone $oBaseCmd)->addParams('--minrank', 26);
+        $iStatus = $oCmd->run();
+        if ($iStatus != 0) {
+            fail('error status ' . $iStatus . ' running nominatim!');
+        }
+
+        info('Index postcodes');
+        $sSQL = 'UPDATE location_postcode SET indexed_status = 0';
+        $this->oDB->exec($sSQL);
+    }
+
+    public function createSearchIndices()
+    {
+        info('Create Search indices');
+
+        $sSQL = 'SELECT relname FROM pg_class, pg_index ';
+        $sSQL .= 'WHERE pg_index.indisvalid = false AND pg_index.indexrelid = pg_class.oid';
+        $aInvalidIndices = $this->oDB->getCol($sSQL);
+
+        foreach ($aInvalidIndices as $sIndexName) {
+            info("Cleaning up invalid index $sIndexName");
+            $this->oDB->exec("DROP INDEX $sIndexName;");
+        }
+
+        $sTemplate = file_get_contents(CONST_BasePath.'/sql/indices.src.sql');
+        if (!$this->bDrop) {
+            $sTemplate .= file_get_contents(CONST_BasePath.'/sql/indices_updates.src.sql');
+        }
+        if (!$this->dbReverseOnly()) {
+            $sTemplate .= file_get_contents(CONST_BasePath.'/sql/indices_search.src.sql');
+        }
+        $sTemplate = $this->replaceSqlPatterns($sTemplate);
+
+        $this->pgsqlRunScript($sTemplate);
+    }
+
+    public function createCountryNames()
+    {
+        info('Create search index for default country names');
+
+        $this->pgsqlRunScript("select getorcreate_country(make_standard_name('uk'), 'gb')");
+        $this->pgsqlRunScript("select getorcreate_country(make_standard_name('united states'), 'us')");
+        $this->pgsqlRunScript('select count(*) from (select getorcreate_country(make_standard_name(country_code), country_code) from country_name where country_code is not null) as x');
+        $this->pgsqlRunScript("select count(*) from (select getorcreate_country(make_standard_name(name->'name'), country_code) from country_name where name ? 'name') as x");
+        $sSQL = 'select count(*) from (select getorcreate_country(make_standard_name(v),'
+            .'country_code) from (select country_code, skeys(name) as k, svals(name) as v from country_name) x where k ';
+        if (CONST_Languages) {
+            $sSQL .= 'in ';
+            $sDelim = '(';
+            foreach (explode(',', CONST_Languages) as $sLang) {
+                $sSQL .= $sDelim."'name:$sLang'";
+                $sDelim = ',';
+            }
+            $sSQL .= ')';
+        } else {
+            // all include all simple name tags
+            $sSQL .= "like 'name:%'";
+        }
+        $sSQL .= ') v';
+        $this->pgsqlRunScript($sSQL);
+    }
+
+    public function drop()
+    {
+        info('Drop tables only required for updates');
+
+        // The implementation is potentially a bit dangerous because it uses
+        // a positive selection of tables to keep, and deletes everything else.
+        // Including any tables that the unsuspecting user might have manually
+        // created. USE AT YOUR OWN PERIL.
+        // tables we want to keep. everything else goes.
+        $aKeepTables = array(
+                        '*columns',
+                        'import_polygon_*',
+                        'import_status',
+                        'place_addressline',
+                        'location_postcode',
+                        'location_property*',
+                        'placex',
+                        'search_name',
+                        'seq_*',
+                        'word',
+                        'query_log',
+                        'new_query_log',
+                        'spatial_ref_sys',
+                        'country_name',
+                        'place_classtype_*',
+                        'country_osm_grid'
+                       );
+
+        $aDropTables = array();
+        $aHaveTables = $this->oDB->getListOfTables();
+
+        foreach ($aHaveTables as $sTable) {
+            $bFound = false;
+            foreach ($aKeepTables as $sKeep) {
+                if (fnmatch($sKeep, $sTable)) {
+                    $bFound = true;
+                    break;
+                }
+            }
+            if (!$bFound) array_push($aDropTables, $sTable);
+        }
+        foreach ($aDropTables as $sDrop) {
+            $this->dropTable($sDrop);
+        }
+
+        $this->removeFlatnodeFile();
+    }
+
+    private function removeFlatnodeFile()
+    {
+        if (!is_null(CONST_Osm2pgsql_Flatnode_File) && CONST_Osm2pgsql_Flatnode_File) {
+            if (file_exists(CONST_Osm2pgsql_Flatnode_File)) {
+                if ($this->bVerbose) echo 'Deleting '.CONST_Osm2pgsql_Flatnode_File."\n";
+                unlink(CONST_Osm2pgsql_Flatnode_File);
+            }
+        }
+    }
+
+    private function pgsqlRunScript($sScript, $bfatal = true)
+    {
+        runSQLScript(
+            $sScript,
+            $bfatal,
+            $this->bVerbose,
+            $this->sIgnoreErrors
+        );
+    }
+
+    private function createSqlFunctions()
+    {
+        $sBasePath = CONST_BasePath.'/sql/functions/';
+        $sTemplate = file_get_contents($sBasePath.'utils.sql');
+        $sTemplate .= file_get_contents($sBasePath.'normalization.sql');
+        $sTemplate .= file_get_contents($sBasePath.'ranking.sql');
+        $sTemplate .= file_get_contents($sBasePath.'importance.sql');
+        $sTemplate .= file_get_contents($sBasePath.'address_lookup.sql');
+        $sTemplate .= file_get_contents($sBasePath.'interpolation.sql');
+        if ($this->oDB->tableExists('place')) {
+            $sTemplate .= file_get_contents($sBasePath.'place_triggers.sql');
+        }
+        if ($this->oDB->tableExists('placex')) {
+            $sTemplate .= file_get_contents($sBasePath.'placex_triggers.sql');
+        }
+        if ($this->oDB->tableExists('location_postcode')) {
+            $sTemplate .= file_get_contents($sBasePath.'postcode_triggers.sql');
+        }
+        $sTemplate = str_replace('{modulepath}', $this->sModulePath, $sTemplate);
+        if ($this->bEnableDiffUpdates) {
+            $sTemplate = str_replace('RETURN NEW; -- %DIFFUPDATES%', '--', $sTemplate);
+        }
+        if ($this->bEnableDebugStatements) {
+            $sTemplate = str_replace('--DEBUG:', '', $sTemplate);
+        }
+        if (CONST_Limit_Reindexing) {
+            $sTemplate = str_replace('--LIMIT INDEXING:', '', $sTemplate);
+        }
+        if (!CONST_Use_US_Tiger_Data) {
+            $sTemplate = str_replace('-- %NOTIGERDATA% ', '', $sTemplate);
+        }
+        if (!CONST_Use_Aux_Location_data) {
+            $sTemplate = str_replace('-- %NOAUXDATA% ', '', $sTemplate);
+        }
+
+        $sReverseOnly = $this->dbReverseOnly() ? 'true' : 'false';
+        $sTemplate = str_replace('%REVERSE-ONLY%', $sReverseOnly, $sTemplate);
+
+        $this->pgsqlRunScript($sTemplate);
+    }
+
+    private function pgsqlRunPartitionScript($sTemplate)
+    {
+        $sSQL = 'select distinct partition from country_name';
+        $aPartitions = $this->oDB->getCol($sSQL);
+        if (!$this->bNoPartitions) $aPartitions[] = 0;
+
+        preg_match_all('#^-- start(.*?)^-- end#ms', $sTemplate, $aMatches, PREG_SET_ORDER);
+        foreach ($aMatches as $aMatch) {
+            $sResult = '';
+            foreach ($aPartitions as $sPartitionName) {
+                $sResult .= str_replace('-partition-', $sPartitionName, $aMatch[1]);
+            }
+            $sTemplate = str_replace($aMatch[0], $sResult, $sTemplate);
+        }
+
+        $this->pgsqlRunScript($sTemplate);
+    }
+
+    private function pgsqlRunScriptFile($sFilename)
+    {
+        if (!file_exists($sFilename)) fail('unable to find '.$sFilename);
+
+        $oCmd = (new \Nominatim\Shell('psql'))
+                ->addParams('--port', $this->aDSNInfo['port'])
+                ->addParams('--dbname', $this->aDSNInfo['database']);
+
+        if (!$this->bVerbose) {
+            $oCmd->addParams('--quiet');
+        }
+        if (isset($this->aDSNInfo['hostspec'])) {
+            $oCmd->addParams('--host', $this->aDSNInfo['hostspec']);
+        }
+        if (isset($this->aDSNInfo['username'])) {
+            $oCmd->addParams('--username', $this->aDSNInfo['username']);
+        }
+        if (isset($this->aDSNInfo['password'])) {
+            $oCmd->addEnvPair('PGPASSWORD', $this->aDSNInfo['password']);
+        }
+        $ahGzipPipes = null;
+        if (preg_match('/\\.gz$/', $sFilename)) {
+            $aDescriptors = array(
+                             0 => array('pipe', 'r'),
+                             1 => array('pipe', 'w'),
+                             2 => array('file', '/dev/null', 'a')
+                            );
+            $oZcatCmd = new \Nominatim\Shell('zcat', $sFilename);
+
+            $hGzipProcess = proc_open($oZcatCmd->escapedCmd(), $aDescriptors, $ahGzipPipes);
+            if (!is_resource($hGzipProcess)) fail('unable to start zcat');
+            $aReadPipe = $ahGzipPipes[1];
+            fclose($ahGzipPipes[0]);
+        } else {
+            $oCmd->addParams('--file', $sFilename);
+            $aReadPipe = array('pipe', 'r');
+        }
+        $aDescriptors = array(
+                         0 => $aReadPipe,
+                         1 => array('pipe', 'w'),
+                         2 => array('file', '/dev/null', 'a')
+                        );
+        $ahPipes = null;
+
+        $hProcess = proc_open($oCmd->escapedCmd(), $aDescriptors, $ahPipes, null, $oCmd->aEnv);
+        if (!is_resource($hProcess)) fail('unable to start pgsql');
+        // TODO: error checking
+        while (!feof($ahPipes[1])) {
+            echo fread($ahPipes[1], 4096);
+        }
+        fclose($ahPipes[1]);
+        $iReturn = proc_close($hProcess);
+        if ($iReturn > 0) {
+            fail("pgsql returned with error code ($iReturn)");
+        }
+        if ($ahGzipPipes) {
+            fclose($ahGzipPipes[1]);
+            proc_close($hGzipProcess);
+        }
+    }
+
+    private function replaceSqlPatterns($sSql)
+    {
+        $sSql = str_replace('{www-user}', CONST_Database_Web_User, $sSql);
+
+        $aPatterns = array(
+                      '{ts:address-data}' => CONST_Tablespace_Address_Data,
+                      '{ts:address-index}' => CONST_Tablespace_Address_Index,
+                      '{ts:search-data}' => CONST_Tablespace_Search_Data,
+                      '{ts:search-index}' =>  CONST_Tablespace_Search_Index,
+                      '{ts:aux-data}' =>  CONST_Tablespace_Aux_Data,
+                      '{ts:aux-index}' =>  CONST_Tablespace_Aux_Index,
+        );
+
+        foreach ($aPatterns as $sPattern => $sTablespace) {
+            if ($sTablespace) {
+                $sSql = str_replace($sPattern, 'TABLESPACE "'.$sTablespace.'"', $sSql);
+            } else {
+                $sSql = str_replace($sPattern, '', $sSql);
+            }
+        }
+
+        return $sSql;
+    }
+
+    /**
+     * Drop table with the given name if it exists.
+     *
+     * @param string $sName Name of table to remove.
+     *
+     * @return null
+     *
+     * @pre connect() must have been called.
+     */
+    private function dropTable($sName)
+    {
+        if ($this->bVerbose) echo "Dropping table $sName\n";
+        $this->oDB->deleteTable($sName);
+    }
+
+    /**
+     * Check if the database is in reverse-only mode.
+     *
+     * @return True if there is no search_name table and infrastructure.
+     */
+    private function dbReverseOnly()
+    {
+        return !($this->oDB->tableExists('search_name'));
+    }
+}
diff --git a/lib/setup_functions.php b/lib/setup_functions.php
new file mode 100755 (executable)
index 0000000..43f30a0
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+function checkInFile($sOSMFile)
+{
+    if (!isset($sOSMFile)) {
+        fail('missing --osm-file for data import');
+    }
+
+    if (!file_exists($sOSMFile)) {
+        fail('the path supplied to --osm-file does not exist');
+    }
+
+    if (!is_readable($sOSMFile)) {
+        fail('osm-file "' . $aCMDResult['osm-file'] . '" not readable');
+    }
+}
+
+function checkModulePresence()
+{
+    // Try accessing the C module, so we know early if something is wrong.
+    // Raises Nominatim\DatabaseError on failure
+
+    $sModulePath = CONST_Database_Module_Path;
+    $sSQL = "CREATE FUNCTION nominatim_test_import_func(text) RETURNS text AS '";
+    $sSQL .= $sModulePath . "/nominatim.so', 'transliteration' LANGUAGE c IMMUTABLE STRICT";
+    $sSQL .= ';DROP FUNCTION nominatim_test_import_func(text);';
+
+    $oDB = new \Nominatim\DB();
+    $oDB->connect();
+    $oDB->exec($sSQL, null, 'Database server failed to load '.$sModulePath.'/nominatim.so module');
+}
index 032dcf4347a1046eb684a517af6cebb980aef176..0066e80e29adb13cce8320360c57eafddf7ba87e 100644 (file)
@@ -30,27 +30,14 @@ if (empty($aPlace)) {
 
     $aFilteredPlaces['properties']['geocoding']['label'] = $aPlace['langaddress'];
 
-    $aFilteredPlaces['properties']['geocoding']['name'] = $aPlace['placename'];
+    if ($aPlace['placename'] !== null) {
+        $aFilteredPlaces['properties']['geocoding']['name'] = $aPlace['placename'];
+    }
 
     if (isset($aPlace['address'])) {
-        $aFieldMappings = array(
-                           'house_number' => 'housenumber',
-                           'road' => 'street',
-                           'locality' => 'locality',
-                           'postcode' => 'postcode',
-                           'city' => 'city',
-                           'district' => 'district',
-                           'county' => 'county',
-                           'state' => 'state',
-                           'country' => 'country'
-                          );
-
-        $aAddressNames = $aPlace['address']->getAddressNames();
-        foreach ($aFieldMappings as $sFrom => $sTo) {
-            if (isset($aAddressNames[$sFrom])) {
-                $aFilteredPlaces['properties']['geocoding'][$sTo] = $aAddressNames[$sFrom];
-            }
-        }
+        $aPlace['address']->addGeocodeJsonAddressParts(
+            $aFilteredPlaces['properties']['geocoding']
+        );
 
         $aFilteredPlaces['properties']['geocoding']['admin']
             = $aPlace['address']->getAdminLevels();
index e022b6046a78d8dca7dc8898f5a75f975be61ca0..165b2a9d3493b8d18abc2477d968ea2c105184ee 100644 (file)
@@ -9,7 +9,7 @@
 <body id="reverse-page">
 
     <?php include(CONST_BasePath.'/lib/template/includes/html-top-navigation.php'); ?>
-
+    <div class="top-bar">
     <form class="form-inline" role="search" accept-charset="UTF-8" action="<?php echo CONST_Website_BaseURL; ?>reverse.php">
         <div class="form-group">
             <input name="format" type="hidden" value="html">
@@ -64,7 +64,7 @@
             <a href="<?php echo CONST_Website_BaseURL; ?>search.php">forward search</a>
         </div>
     </form>
-
+</div>
 
     <div id="content">
 
@@ -85,7 +85,7 @@
             else
                 echo ' <span class="type">('.ucwords(str_replace('_',' ',$aResult['type'])).')</span>';
             echo '<p>'.$aResult['lat'].','.$aResult['lon'].'</p>';
-            echo ' <a class="btn btn-default btn-xs details" href="details.php?place_id='.$aResult['place_id'].'">details</a>';
+            echo detailsPermaLink($aResult, 'details', 'class="btn btn-default btn-xs details"');
             echo '</div>';
         ?>
         </div>
diff --git a/lib/template/deletable-html.php b/lib/template/deletable-html.php
new file mode 100644 (file)
index 0000000..8cc53e8
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+    header("content-type: text/html; charset=UTF-8");
+    include(CONST_BasePath.'/lib/template/includes/html-header.php');
+?>
+    <title>Nominatim Deleted Data</title>    
+    <meta name="description" content="List of OSM data that has been deleted" lang="en-US" />
+</head>
+
+<body>
+<div class="container">
+    <h1>Deletable</h1>
+    <p>
+        <?php echo sizeof($aPolygons) ?> objects have been deleted in OSM but are still in the Nominatim database.
+        Also available in <a href="<?php echo CONST_Website_BaseURL; ?>deletable.php?format=json">JSON format</a>.
+    </p>
+
+    <table class="table table-striped table-hover">
+<?php
+
+if (!empty($aPolygons)) {
+    echo '<tr>';
+    foreach (array_keys($aPolygons[0]) as $sCol) {
+        echo '<th>'.$sCol.'</th>';
+    }
+    echo '</tr>';
+    foreach ($aPolygons as $aRow) {
+        echo '<tr>';
+        foreach ($aRow as $sCol => $sVal) {
+            switch ($sCol) {
+                case 'osm_id':
+                    echo '<td>'.osmLink($aRow).'</td>';
+                    break;
+                case 'place_id':
+                    echo '<td>'.detailsLink($aRow).'</td>';
+                    break;
+                default:
+                    echo '<td>'.($sVal?$sVal:'&nbsp;').'</td>';
+                    break;
+            }
+        }
+        echo '</tr>';
+    }
+}
+?>
+    </table>
+</div>
+</body>
+</html>
index 01583e5f789499a27a28dbdb4d9e3048c72b761e..43ec12668ec26a26e0748b24cdce344f1230866c 100644 (file)
     }
 
 
-    function format_distance($fDistance)
+    function format_distance($fDistance, $bInMeters = false)
     {
-        // $fDistance is in meters
-        if ($fDistance < 1)
-        {
-            return '0';
-        }
-        elseif ($fDistance < 1000)
-        {
-            return'<abbr class="distance" title="'.$fDistance.'">~'.(round($fDistance,0)).' m</abbr>';
-        }
-        else
-        {
-            return'<abbr class="distance" title="'.$fDistance.'">~'.(round($fDistance/1000,1)).' km</abbr>';
+        if ($bInMeters) {
+            // $fDistance is in meters
+            if ($fDistance < 1) {
+                return '0';
+            }
+            elseif ($fDistance < 1000) {
+                return '<abbr class="distance" title="'.$fDistance.' meters">~'.(round($fDistance,0)).' m</abbr>';
+            }
+            else {
+                return '<abbr class="distance" title="'.$fDistance.' meters">~'.(round($fDistance/1000,1)).' km</abbr>';
+            }
+        } else {
+            if ($fDistance == 0) {
+                return '0';
+            } else {
+                return '<abbr class="distance" title="spheric distance '.$fDistance.'">'.(round($fDistance,4)).'</abbr>';
+            }
         }
     }
 
     }
 
 
-    function _one_row($aAddressLine){
-        $bNotUsed = (isset($aAddressLine['isaddress']) && $aAddressLine['isaddress'] == 'f');
+    function _one_row($aAddressLine, $bDistanceInMeters = false){
+        $bNotUsed = isset($aAddressLine['isaddress']) && !$aAddressLine['isaddress'];
 
         echo '<tr class="' . ($bNotUsed?'notused':'') . '">'."\n";
-        echo '  <td class="name">'.(trim($aAddressLine['localname'])?$aAddressLine['localname']:'<span class="noname">No Name</span>')."</td>\n";
-        echo '  <td>' . $aAddressLine['class'].':'.$aAddressLine['type'] . "</td>\n";
+        echo '  <td class="name">'.(trim($aAddressLine['localname'])!==null?$aAddressLine['localname']:'<span class="noname">No Name</span>')."</td>\n";
+        echo '  <td>' . $aAddressLine['class'].':'.$aAddressLine['type'];
+        if ($aAddressLine['type'] == 'administrative'
+            && isset($aAddressLine['place_type']))
+        {
+            echo '('.$aAddressLine['place_type'].')';
+        }
+        echo "</td>\n";
         echo '  <td>' . osmLink($aAddressLine) . "</td>\n";
         echo '  <td>' . (isset($aAddressLine['rank_address']) ? $aAddressLine['rank_address'] : '') . "</td>\n";
         echo '  <td>' . ($aAddressLine['admin_level'] < 15 ? $aAddressLine['admin_level'] : '') . "</td>\n";
-        echo '  <td>' . format_distance($aAddressLine['distance'])."</td>\n";
-        echo '  <td>' . detailsLink($aAddressLine,'details &gt;') . "</td>\n";
+        echo '  <td>' . format_distance($aAddressLine['distance'], $bDistanceInMeters)."</td>\n";
+        echo '  <td>' . detailsPermaLink($aAddressLine,'details &gt;') . "</td>\n";
         echo "</tr>\n";
     }
 
             <div class="col-sm-10">
                 <h1>
                     <?php echo $aPointDetails['localname'] ?>
-                    <small><?php echo detailsPermaLink($aPointDetails, 'link to this page') ?></small>
                 </h1>
             </div>
             <div class="col-sm-2 text-right">
                     if ($aPointDetails['calculated_importance']) {
                         kv('Importance'    , $aPointDetails['calculated_importance'].($aPointDetails['importance']?'':' (estimated)') );
                     }
-                    kv('Coverage'        , ($aPointDetails['isarea']=='t'?'Polygon':'Point') );
+                    kv('Coverage'        , ($aPointDetails['isarea']?'Polygon':'Point') );
                     kv('Centre Point'    , $aPointDetails['lat'].','.$aPointDetails['lon'] );
                     kv('OSM'             , osmLink($aPointDetails) );
+                    kv('Place Id (<a href="https://nominatim.org/release-docs/develop/api/Output/#place_id-is-not-a-persistent-id">on this server</a>)'
+                                         , $aPointDetails['place_id'] );
                     if ($aPointDetails['wikipedia'])
                     {
                         kv('Wikipedia Calculated' , wikipediaLink($aPointDetails) );
     {
         headline('Linked Places');
         foreach ($aLinkedLines as $aAddressLine) {
-            _one_row($aAddressLine);
+            _one_row($aAddressLine, true);
         }
     }
 
             headline3($sGroupHeading);
 
             foreach ($aHierarchyLines as $aAddressLine) {
-                _one_row($aAddressLine);
+                _one_row($aAddressLine, true);
             }
         }
         if (count($aHierarchyLines) >= 500) {
diff --git a/lib/template/details-index-html.php b/lib/template/details-index-html.php
new file mode 100644 (file)
index 0000000..640a212
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+    header("content-type: text/html; charset=UTF-8");
+?>
+<?php include(CONST_BasePath.'/lib/template/includes/html-header.php'); ?>
+    <link href="css/common.css" rel="stylesheet" type="text/css" />
+    <link href="css/details.css" rel="stylesheet" type="text/css" />
+</head>
+
+
+<body id="details-index-page">
+    <div class="container">
+        <div class="row">
+            <div class="col-md-12">
+
+                <h1>Show details for place</h1>
+
+                <div class="search-form">
+                    <h4>Search by place id</h4>
+
+                    <form class="form-inline" action="details.php">
+                        <input type="edit" class="form-control input-sm" pattern="^[0-9]+$" name="place_id" placeholder="12345" />
+                        <input type="submit" class="btn btn-primary btn-sm" value="Show" />
+                    </form>
+                </div>
+
+                <div class="search-form">
+                    <h4>Search by OSM type and OSM id</h4>
+
+                    <form id="form-by-type-and-id" class="form-inline" action="details.php">
+                        <input type="edit" class="form-control input-sm" pattern="^[NWR][0-9]+$" placeholder="N123 or W123 or R123" />
+                        <input type="hidden" name="osmtype" />
+                        <input type="hidden" name="osmid" />
+                        <input type="submit" class="btn btn-primary btn-sm" value="Show" />
+                    </form>
+                </div>
+
+                <div class="search-form">
+                    <h4>Search by openstreetmap.org URL</h4>
+
+                    <form id="form-by-osm-url" class="form-inline" action="details.php">
+                        <input type="edit" class="form-control input-sm" pattern=".*openstreetmap.*" placeholder="https://www.openstreetmap.org/relation/123" />
+                        <input type="hidden" name="osmtype" />
+                        <input type="hidden" name="osmid" />
+                        <input type="submit" class="btn btn-primary btn-sm" value="Show" />
+                    </form>
+                </div>
+
+            </div>
+        </div>
+    </div>
+
+
+    <?php include(CONST_BasePath.'/lib/template/includes/html-footer.php'); ?>
+</body>
+</html>
index 06554aba68f2143c6a24b46ce9cdb39e9cfc3362..d5338a05a1a58e23b388d4c56028c308ce8feea9 100644 (file)
@@ -33,7 +33,7 @@ if ($aPointDetails['icon']) {
 $aPlaceDetails['rank_address'] = (int) $aPointDetails['rank_address'];
 $aPlaceDetails['rank_search'] = (int) $aPointDetails['rank_search'];
 
-$aPlaceDetails['isarea'] = ($aPointDetails['isarea'] == 't');
+$aPlaceDetails['isarea'] = $aPointDetails['isarea'];
 $aPlaceDetails['centroid'] = array(
                               'type' => 'Point',
                               'coordinates' => array( (float) $aPointDetails['lon'], (float) $aPointDetails['lat'] )
@@ -47,11 +47,13 @@ $funcMapAddressLine = function ($aFull) {
                 'place_id' => isset($aFull['place_id']) ? (int) $aFull['place_id'] : null,
                 'osm_id' => isset($aFull['osm_id']) ? (int) $aFull['osm_id'] : null,
                 'osm_type' => isset($aFull['osm_type']) ? $aFull['osm_type'] : null,
+                'place_type' => isset($aFull['place_type']) ? $aFull['place_type'] : null,
                 'class' => $aFull['class'],
                 'type' => $aFull['type'],
                 'admin_level' => isset($aFull['admin_level']) ? (int) $aFull['admin_level'] : null,
                 'rank_address' => $aFull['rank_address'] ? (int) $aFull['rank_address'] : null,
-                'distance' => (float) $aFull['distance']
+                'distance' => (float) $aFull['distance'],
+                'isaddress' => isset($aFull['isaddress']) ? (bool) $aFull['isaddress'] : null
                );
 
     return $aMapped;
diff --git a/lib/template/error-html.php b/lib/template/error-html.php
new file mode 100644 (file)
index 0000000..11a1846
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+    $title = 'Internal Server Error';
+    if ( $exception->getCode() == 400 ) {
+        $title = 'Bad Request';
+    }
+?>
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <style>
+        em { font-weight: bold; font-family: monospace; color: #e00404; background-color: #ffeaea; }
+    </style>
+</head>
+<body>
+    <h1><?php echo $title ?></h1>
+    
+    <?php if (get_class($exception) == 'Nominatim\DatabaseError') { ?>
+
+        <p>Nominatim has encountered an internal error while accessing the database.
+           This may happen because the database is broken or because of a bug in
+           the software.</p>
+
+    <?php } else { ?>
+
+        <p>Nominatim has encountered an error with your request.</p>
+
+    <?php } ?>
+
+
+    <h3>Details</h3>
+
+    <?php echo $exception->getMessage() ?>
+
+    <?php if (CONST_Debug) { ?>
+        <p>
+        Exception <em><?php echo get_class($exception) ?></em> thrown in <em><?php echo $exception->getFile() . '('. $exception->getLine() . ')' ?></em>.
+
+        <?php if (get_class($exception) == 'Nominatim\DatabaseError') { ?>
+
+            <h3>SQL Error</h3>
+            <em><?php echo $exception->getSqlError() ?></em>
+
+            <pre><?php echo $exception->getSqlDebugDump() ?></pre>
+
+        <?php } ?>
+
+        <h3>Stack trace</h3>
+        <pre><?php echo $exception->getTraceAsString() ?></pre>
+
+    <?php } ?>
+
+    <p>
+        If you feel this error is incorrect feel file an issue on
+        <a href="https://github.com/openstreetmap/Nominatim/issues">Github</a>.
+
+        Please include the error message above and the URL you used.
+    </p>
+</body>
+</html>
diff --git a/lib/template/error-json.php b/lib/template/error-json.php
new file mode 100644 (file)
index 0000000..67297dd
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+    $error = array(
+              'code' => $exception->getCode(),
+              'message' => $exception->getMessage()
+             );
+
+    if (CONST_Debug) {
+        $error['details'] = $exception->getFile() . '('. $exception->getLine() . ')';
+    }
+
+    echo javascript_renderData(array('error' => $error));
diff --git a/lib/template/error-xml.php b/lib/template/error-xml.php
new file mode 100644 (file)
index 0000000..a21ac19
--- /dev/null
@@ -0,0 +1,7 @@
+<error>
+    <code><?php echo $exception->getCode() ?></code>
+    <message><?php echo $exception->getMessage() ?></message>
+    <?php if (CONST_Debug) { ?>
+    <details><?php echo $exception->getFile() . '('. $exception->getLine() . ')' ?></details>
+    <?php } ?>
+</error>
\ No newline at end of file
index 942af095c65034b72a13ebda3f90f8fbac93267c..9a914bf5bb659f376461d796933ae201d4a2038d 100644 (file)
@@ -6,7 +6,6 @@
     <meta name="viewport" content="width=device-width, initial-scale=1">
 
     <base href="<?php echo CONST_Website_BaseURL;?>" />
-    <link href="nominatim.xml" rel="search" title="Nominatim Search" type="application/opensearchdescription+xml" />
     <link href="css/leaflet.css" rel="stylesheet" />
     <link href="css/Control.Minimap.min.css" rel="stylesheet" />
     <link href="css/bootstrap-theme.min.css" rel="stylesheet" />
index 41b638ab5898d1af218c2a8c6afd4ef165d46142..0047e59cc9b078e0a3fbe5afcec46da2bb42d5bc 100644 (file)
                     About &amp; Help <span class="caret"></span>
                 </button>
                 <ul class="dropdown-menu dropdown-menu-right">
-                    <li><a href="https://wiki.openstreetmap.org/wiki/Nominatim" target="_blank">Documentation</a></li>
-                    <li><a href="https://wiki.openstreetmap.org/wiki/Nominatim/FAQ" target="_blank">FAQ</a></li>
+                    <li><a href="https://nominatim.org/release-docs/develop/api/Overview/" target="_blank">API Reference</a></li>
+                    <li><a href="https://nominatim.org/release-docs/develop/api/Faq/" target="_blank">FAQ</a></li>
+                    <li><a href="https://help.openstreetmap.org/tags/nominatim/">OpenStreetMap Help</a></li>
+                    <li><a href="https://github.com/openstreetmap/Nominatim">Nominatim on Github</a></li>
                     <li role="separator" class="divider"></li>
                     <li><a href="#" class="" data-toggle="modal" data-target="#report-modal">Report problem with results</a></li>
                 </ul>
index c8b82f331ef31330d833bdcba18569c355631eb6..f891c7853b01c58fa7f9478ebc3a61f2815bac7b 100644 (file)
@@ -6,4 +6,4 @@ look up data by its geographic coordinate (reverse search). Each result comes wi
 link to a details page where you can inspect what data about the object is saved in 
 the database and investigate how the address of the object has been computed.</p>
 
-For more information visit the <a href="https://wiki.openstreetmap.org/wiki/Nominatim">Nominatim wiki page</a>.
+For more information visit the <a href="https://nominatim.org">Nominatim home page</a>.
index 05a47c8b28de1832b751f8539aceb4503a222bf7..c5dc1e7f8250340e4e4d3493e2bc38435c09f35f 100644 (file)
@@ -1,24 +1,42 @@
 <p>
-    Before reporting problems please read the <a target="_blank" href="https://wiki.openstreetmap.org/wiki/Nominatim">user documentation</a>
-    and
-    <a target="_blank" href="https://wiki.openstreetmap.org/wiki/Nominatim/FAQ">FAQ</a>.
+    Before reporting problems please read the <a target="_blank" href="https://nominatim.org/release-docs/develop/api/Overview">user documentation</a>.
+
+    <h4>Finding the expected result</h4>
+
+    First of all, please make sure that the result that you expect is
+    available in the OpenStreetMap data.
+
+    To find the OpenStreetMap data, do the following:
+
+    <ul>
+     <li>Go to <a href="https://openstreetmap.org">https://openstreetmap.org</a>.</li>
+     <li>Go to the area of the map where you expect the result
+         and zoom in until you see the object you are looking for.</li>
+     <li>Click on the question mark on the right side of the map,
+         then with the question cursor on the map where your object is located.</li>
+     <li>Find the object of interest in the list that appears on the left side.</li>
+     <li>Click on the object and note down the URL that the browser shows.</li>
+    </ul>
+
+    If you cannot find the data you are looking for, there is a good chance
+    that it has not been entered yet. You should <a href="https://www.openstreetmap.org/fixthemap">report or fix the problem in OpenStreetMap</a> directly.
+
+    <h4>Reporting bad searches</h4>
+
+    Problems may be reported at the <a target="_blank" href="https://github.com/openstreetmap/nominatim/issues">issue tracker on github</a>. Please read through
+    the open tickets first and check if your problem has not already been
+    reported.
+
+    When reporting a problem, include the following:
+
+    <ul>
+      <li>A full description of the problem, including the exact term you
+          were searching for.</li>
+      <li>The result you get.</li>
+      <li>The OpenStreetMap object you expect to find (see above).</li>
+    </ul>
+
+    For general questions about installing and searching in Nominatim, please
+    use <a href="https://help.openstreetmap.org/tags/nominatim/">Help OpenStreetMap</a>.
 
-    If your problem relates to the address of a particular search result please use the 'details' link 
-    to check how the address was generated before reporting a problem.
-</p>
-<p>
-    Use <a target="_blank" href="https://github.com/openstreetmap/nominatim/issues">Nominatim issues on github</a>
-    to report problems.
-<!-- You can search for existing bug reports
-    <a href="https://trac.openstreetmap.org/query?status=new&amp;status=assigned&amp;status=reopened&amp;component=nominatim&amp;order=priority">here</a>.</p>
- -->
-</p>
-<p>
-    Please ensure that you include a full description of the problem, including the search
-    query that you used, the problem with the result and, if the problem relates to missing data,
-    the osm type (node, way, relation) and id of the item that is missing.
-</p>
-<p>
-    Problems that contain enough detail are likely to get looked at before ones that require
-    significant research.
 </p>
diff --git a/lib/template/polygons-html.php b/lib/template/polygons-html.php
new file mode 100644 (file)
index 0000000..7d485d9
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+    header("content-type: text/html; charset=UTF-8");
+    include(CONST_BasePath.'/lib/template/includes/html-header.php');
+?>
+    <title>Nominatim Broken Polygon Data</title>    
+    <meta name="description" content="List of broken OSM polygon data by date" lang="en-US" />
+</head>
+
+<body>
+
+<div class="container">
+    <h1>Broken polygons</h1>
+
+    <p>
+        Total number of broken polygons: <?php echo $iTotalBroken ?>.
+        Also available in <a href="<?php echo CONST_Website_BaseURL; ?>polygons.php?format=json">JSON format</a>.
+    </p>
+
+    <table class="table table-striped table-hover">
+
+<?php
+if (!empty($aPolygons)) {
+
+    echo '<tr>';
+    //var_dump($aPolygons[0]);
+    foreach (array_keys($aPolygons[0]) as $sCol) {
+        echo '<th>'.$sCol.'</th>';
+    }
+    echo '<th>&nbsp;</th>';
+    echo '</tr>';
+    $aSeen = array();
+    foreach ($aPolygons as $aRow) {
+        if (isset($aSeen[$aRow['osm_type'].$aRow['osm_id']])) continue;
+        $aSeen[$aRow['osm_type'].$aRow['osm_id']] = 1;
+
+        echo '<tr>';
+        $sOSMType = formatOSMType($aRow['osm_type']);
+        foreach ($aRow as $sCol => $sVal) {
+            switch ($sCol) {
+                case 'errormessage':
+                    if (preg_match('/Self-intersection\\[([0-9.\\-]+) ([0-9.\\-]+)\\]/', $sVal, $aMatch)) {
+                        $aRow['lat'] = $aMatch[2];
+                        $aRow['lon'] = $aMatch[1];
+                        $sUrl = sprintf('https://www.openstreetmap.org/?lat=%f&lon=%f&zoom=18&layers=M&%s=%d',
+                                $aRow['lat'],
+                                $aRow['lon'],
+                                $sOSMType,
+                                $aRow['osm_id']);
+                        echo '<td><a href="'.$sUrl.'">'.($sVal?$sVal:'&nbsp;').'</a></td>';
+                    } else {
+                        echo '<td>'.($sVal?$sVal:'&nbsp;').'</td>';
+                    }
+                    break;
+                case 'osm_id':
+                    echo '<td>'.osmLink(array('osm_type' => $aRow['osm_type'], 'osm_id' => $aRow['osm_id'])).'</td>';
+                    break;
+                default:
+                    echo '<td>'.($sVal?$sVal:'&nbsp;').'</td>';
+                    break;
+            }
+        }
+        $sJosmUrl = 'http://localhost:8111/import?url=https://www.openstreetmap.org/api/0.6/'.$sOSMType.'/'.$aRow['osm_id'].'/full';
+        echo '<td><a href="'.$sJosmUrl.'" target="josm">josm</a></td>';
+        echo '</tr>';
+    }
+    echo '</table>';
+}
+?>
+</div>
+</body>
+</html>
\ No newline at end of file
index 40b27a72e9dc9b607f4de61756b9bc335c6ce7e3..c4bc29cb1df4c0d8160003a698c46340cc2020a2 100644 (file)
@@ -25,10 +25,6 @@ foreach ($aBatchResults as $aSearchResults) {
                                       $aPointDetails['aBoundingBox'][2],
                 $aPointDetails['aBoundingBox'][3]
                                      );
-
-            if (isset($aPointDetails['aPolyPoints']) && $bShowPolygons) {
-                $aPlace['polygonpoints'] = $aPointDetails['aPolyPoints'];
-            }
         }
 
         if (isset($aPointDetails['zoom'])) {
index 29bfe0bf58d4fae3be47896c26d64b00e6bfcf03..3e3a31c443c7948b58e6f8c5500fc366b7f34ad0 100644 (file)
@@ -20,27 +20,14 @@ foreach ($aSearchResults as $iResNum => $aPointDetails) {
 
     $aPlace['properties']['geocoding']['label'] = $aPointDetails['langaddress'];
 
-    $aPlace['properties']['geocoding']['name'] = $aPointDetails['placename'];
+    if ($aPointDetails['placename'] !== null) {
+        $aPlace['properties']['geocoding']['name'] = $aPointDetails['placename'];
+    }
 
     if (isset($aPointDetails['address'])) {
-        $aFieldMappings = array(
-                           'house_number' => 'housenumber',
-                           'road' => 'street',
-                           'locality' => 'locality',
-                           'postcode' => 'postcode',
-                           'city' => 'city',
-                           'district' => 'district',
-                           'county' => 'county',
-                           'state' => 'state',
-                           'country' => 'country'
-                          );
-
-        $aAddrNames = $aPointDetails['address']->getAddressNames();
-        foreach ($aFieldMappings as $sFrom => $sTo) {
-            if (isset($aAddrNames[$sFrom])) {
-                $aPlace['properties']['geocoding'][$sTo] = $aAddrNames[$sFrom];
-            }
-        }
+        $aPointDetails['address']->addGeocodeJsonAddressParts(
+            $aPlace['properties']['geocoding']
+        );
 
         $aPlace['properties']['geocoding']['admin']
             = $aPointDetails['address']->getAdminLevels();
index 53c6c88cfa88552134a4ffff5dbb2523cf936641..5090a6faaa755b2a23d49cf545c6d5c39b0c4ee6 100644 (file)
 
     <?php include(CONST_BasePath.'/lib/template/includes/html-top-navigation.php'); ?>
 
-    <form class="form-inline" role="search" accept-charset="UTF-8" action="<?php echo CONST_Website_BaseURL; ?>search.php">
-        <div class="form-group">
-            <input id="q" name="q" type="text" class="form-control input-sm" placeholder="Search" value="<?php echo htmlspecialchars($sQuery); ?>" >
+        <div class="top-bar" id="structured-query-selector">
+            <div class="search-type-link">
+                <a id="switch-to-reverse" href="<?php echo CONST_Website_BaseURL; ?>reverse.php?format=html">reverse search</a>
+            </div>
+        <?php
+        $bSimpleQuery = !empty($aMoreParams['q']);
+        $bStructuredQuery = !$bSimpleQuery
+                            && !(empty($aMoreParams['street'])
+                                 && empty($aMoreParams['city'])
+                                 && empty($aMoreParams['county'])
+                                 && empty($aMoreParams['state'])
+                                 && empty($aMoreParams['country'])
+                                 && empty($aMoreParams['postalcode']));
+        ?>
+        <div class="radio-inline">
+          <input type="radio" name="query-selector" id="simple" value="simple" <?php if ($bSimpleQuery) { echo 'checked="checked"'; } ?> >
+          <label for="simple">simple</label>
+        </div>
+        <div class="radio-inline">
+          <input type="radio" name="query-selector" id="structured" value="structured" <?php if ($bStructuredQuery) { echo 'checked="checked"'; } ?> >
+          <label for="structured">structured</label>
+        </div>
+
+    <form role="search" accept-charset="UTF-8" action="<?php echo CONST_Website_BaseURL; ?>search.php">
+        <div class="form-group-simple"
+        <?php
+        if ($bStructuredQuery) {
+            echo 'style="display:none;"';
+        }
+        ?>>
+            <input id="q" name="q" type="text" class="form-control input-sm" placeholder="Search" value="<?php echo htmlspecialchars($aMoreParams['q'] ?? ''); ?>" >
         </div>
+        <div class="form-group-structured"
+        <?php
+        if (!$bStructuredQuery) {
+            echo "style='display:none;'";
+        }
+        ?>>
+<div class="form-inline">
+            <input id="street" name="street" type="text" class="form-control input-sm" placeholder="House number/Street" value="<?php echo htmlspecialchars($aMoreParams['street'] ?? ''); ?>" >
+            <input id="city" name="city" type="text" class="form-control input-sm" placeholder="City" value="<?php echo htmlspecialchars($aMoreParams['city'] ?? ''); ?>" >
+            <input id="county" name="county" type="text" class="form-control input-sm" placeholder="County" value="<?php echo htmlspecialchars($aMoreParams['county'] ?? ''); ?>" >
+            <input id="state" name="state" type="text" class="form-control input-sm" placeholder="State" value="<?php echo htmlspecialchars($aMoreParams['state'] ?? ''); ?>" >
+            <input id="country" name="country" type="text" class="form-control input-sm" placeholder="Country" value="<?php echo htmlspecialchars($aMoreParams['country'] ?? ''); ?>" >
+            <input id="postalcode" name="postalcode" type="text" class="form-control input-sm" placeholder="Postal Code" value="<?php echo htmlspecialchars($aMoreParams['postalcode'] ?? ''); ?>" >
+        </div></div>
         <div class="form-group search-button-group">
             <button type="submit" class="btn btn-primary btn-sm">Search</button>
             <?php if (CONST_Search_AreaPolygons) { ?>
                 <input type="hidden" value="1" name="polygon_geojson" />
             <?php } ?>
-            <input type="hidden" name="viewbox" value="<?php if (isset($aMoreParams['viewbox'])) echo ($aMoreParams['viewbox']); ?>" />
+            <input type="hidden" name="viewbox" value="<?php echo htmlspecialchars($aMoreParams['viewbox'] ?? ''); ?>" />
             <div class="checkbox-inline">
-                <input type="checkbox" id="use_viewbox" <?php if (isset($aMoreParams['viewbox'])) echo "checked='checked'"; ?>>
+                <input type="checkbox" id="use_viewbox" <?php if (!empty($aMoreParams['viewbox'])) echo "checked='checked'"; ?>>
                 <label for="use_viewbox">apply viewbox</label>
             </div>
         </div>
-        <div class="search-type-link">
-            <a id="switch-to-reverse" href="<?php echo CONST_Website_BaseURL; ?>reverse.php?format=html">reverse search</a>
-        </div>
     </form>
-
+</div>
 
     <div id="content">
 
@@ -53,7 +92,7 @@
                     echo ' <span class="type">('.ucwords(str_replace('_',' ',$aResult['class'])).')</span>';
                 else
                     echo ' <span class="type">('.ucwords(str_replace('_',' ',$aResult['type'])).')</span>';
-                echo ' <a class="btn btn-default btn-xs details" href="details.php?place_id='.$aResult['place_id'].'">details</a>';
+                echo detailsPermaLink($aResult, 'details', 'class="btn btn-default btn-xs details"');
                 echo '</div>';
                 $i = $i+1;
             }
 
 
 
-
-
-
-
     <script type="text/javascript">
     <?php
 
index 6108aca4e005582d9446a75ca44737a0ab0ae5c3..4b896d08a6de136207a8e878ff8c2ac73f7e711d 100644 (file)
@@ -15,10 +15,6 @@ foreach ($aSearchResults as $iResNum => $aPointDetails) {
 
     if (isset($aPointDetails['aBoundingBox'])) {
         $aPlace['boundingbox'] = $aPointDetails['aBoundingBox'];
-
-        if (isset($aPointDetails['aPolyPoints'])) {
-            $aPlace['polygonpoints'] = $aPointDetails['aPolyPoints'];
-        }
     }
 
     if (isset($aPointDetails['zoom'])) {
index f67ba33bd2b7e56fa6cdfe2b8444dba502f8dd17..68d985f3cc3111fd6f7aece1cce916efb7bb3f73 100644 (file)
@@ -11,7 +11,6 @@ echo " timestamp='".date(DATE_RFC822)."'";
 echo " attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright'";
 echo " querystring='".htmlspecialchars($sQuery, ENT_QUOTES)."'";
 if (isset($aMoreParams['viewbox'])) echo " viewbox='".htmlspecialchars($aMoreParams['viewbox'], ENT_QUOTES)."'";
-echo " polygon='".(isset($aMoreParams['polygon'])?'true':'false')."'";
 if (isset($aMoreParams['exclude_place_ids'])) {
     echo " exclude_place_ids='".htmlspecialchars($aMoreParams['exclude_place_ids'])."'";
 }
@@ -31,12 +30,6 @@ foreach ($aSearchResults as $iResNum => $aResult) {
         echo ' boundingbox="';
         echo join(',', $aResult['aBoundingBox']);
         echo '"';
-
-        if (isset($aResult['aPolyPoints'])) {
-            echo ' polygonpoints=\'';
-            echo json_encode($aResult['aPolyPoints']);
-            echo '\'';
-        }
     }
 
     if (isset($aResult['asgeojson'])) {
index 318e56501db660f1a1a4568772f89e93f58aa464..03beacb264a2bb5b6d6b0040335e8c7d15c317f2 100644 (file)
@@ -1,4 +1,13 @@
 # just use the pgxs makefile
+find_program(PG_CONFIG pg_config)
+execute_process(COMMAND ${PG_CONFIG} --pgxs
+            OUTPUT_VARIABLE PGXS
+            OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+if (NOT EXISTS "${PGXS}")
+message(FATAL_ERROR "Postgresql server package not found.")
+endif()
+
 ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/dummy
         COMMAND PGXS=${PGXS} PG_CONFIG=${PG_CONFIG} MODSRCDIR=${CMAKE_CURRENT_SOURCE_DIR} $(MAKE) -f ${CMAKE_CURRENT_SOURCE_DIR}/Makefile
         COMMENT "Running external makefile ${PGXS}"
index 1ac110f38166b5fdc9e52c67ee8ce3251a69f698..15c34c751b2a8025784c9bf39d83e2dd57cd8dff 100644 (file)
@@ -1,2 +1,2 @@
 #define UTFASCII " \x00""\x01"" \x01""0\x01""1\x01""2\x01""3\x01""4\x01""5\x01""6\x01""7\x01""8\x01""9\x01""a\x01""b\x01""c\x01""d\x01""e\x01""f\x01""g\x01""h\x01""i\x01""j\x01""k\x01""l\x01""m\x01""n\x01""o\x01""p\x01""q\x01""r\x01""s\x01""t\x01""u\x01""v\x01""w\x01""x\x01""y\x01""z\x02""ps\x02""ss\x03""deg\x01""-\x02""14\x02""12\x02""34\x02""ae\x02""th\x02""ij\x02""ng\x02""oe\x02""hv\x02""oi\x02""yr\x02""sh\x02""zh\x02""ts\x02""dz\x02""lj\x02""nj\x02""ou\x02""db\x02""qp\x04""stop\x02""lz\x02""tc\x02""fn\x02""ls\x02""ww\x0a""extra-high\x04""high\x03""mid\x04""tone\x09""extra-low\x03""yin\x04""yang\x04""down\x02""up\x04""left\x05""right\x04""ring\x06""middle\x05""tilde\x06""raised\x05""begin\x03""end\x05""shelf\x05""below\x04""heta\x05""sampi\x0a""pamphylian\x02""ks\x02""ph\x02""kh\x05""koppa\x02""st\x02""sp\x02""ch\x02""ti\x03""sho\x03""san\x02""ie\x02""io\x02""dj\x02""gj\x02""yi\x03""tsh\x02""kj\x03""dzh\x04""shch\x04""hard\x02""iu\x02""ia\x02""gh\x02""ot\x04""1000\x06""100000\x07""1000000\x03""tts\x02""el\x02""en\x02""em\x08""palochka\x03""ghe\x02""ha\x02""de\x03""dje\x03""zje\x04""dzje\x03""lje\x03""nje\x03""sje\x03""tje\x02""ze\x03""lha\x03""rha\x03""yae\x02""qa\x02""we\x05""aleut\x02""rh\x02""ew\x04""alef\x04""ayin\x02""oy\x05""sanah\x05""safha\x05""misra\x0b""sallallahou\x06""alayhe\x0b""rahmatullah\x04""radi\x09""takhallus\x05""hamza\x03""teh\x02""dh\x03""ain\x05""keheh\x05""farsi\x02""an\x02""un\x02""in\x05""small\x03""dot\x03""beh\x03""qaf\x02""tt\x03""tth\x02""bh\x03""hah\x02""ny\x02""dy\x03""cch\x02""dd\x02""dt\x03""ddh\x02""rr\x02""hy\x02""yu\x03""yeh\x03""sad\x03""dal\x03""reh\x06""sindhi\x03""heh\x05""alaph\x02""yh\x07""persian\x07""sogdian\x04""seen\x03""feh\x04""meem\x04""noon\x03""lam\x03""waw\x03""kaf\x05""alifu\x02""hh\x04""ainu\x02""aa\x02""ee\x02""oo\x02""ey\x02""oa\x03""naa\x0a""dagbasinna\x02""ba\x02""pa\x02""ta\x02""ja\x03""cha\x02""da\x02""ra\x03""rra\x02""sa\x03""gba\x02""fa\x02""ka\x02""la\x02""na\x02""ma\x03""nya\x02""wa\x02""ya\x04""jona\x0b""candrabindu\x08""anusvara\x07""visarga\x02""ii\x02""uu\x06""candra\x02""ai\x02""au\x03""kha\x02""ga\x03""gha\x03""nga\x02""ca\x03""jha\x03""tta\x04""ttha\x03""dda\x04""ddha\x03""nna\x03""tha\x03""dha\x04""nnna\x03""pha\x03""bha\x03""lla\x04""llla\x02""va\x03""sha\x03""ssa\x05""nukta\x08""avagraha\x06""virama\x06""udatta\x08""anudatta\x04""khha\x04""ghha\x02""za\x05""dddha\x03""yya\x02""ll\x03""gga\x03""jja\x04""ddda\x03""bba\x06""khanda\x02""on\x02""jh\x02""nn\x03""nnn\x03""lll\x03""aum\x05""udaat\x03""khh\x03""ghh\x04""dddh\x02""yy\x06""yakash\x02""rs\x02""bb\x03""geo\x03""tsa\x03""dza\x05""tuumu\x0b""jihvamuliya\x0b""upadhmaniya\x06""chillu\x08""iruyanna\x06""eyanna\x0a""alpapraana\x07""yayanna\x07""rayanna\x07""dantaja\x09""muurdhaja\x0a""aela-pilla\x05""ketti\x04""diga\x0c""gaetta-pilla\x07""kombuva\x05""kombu\x0b""gayanukitta\x02""ko\x03""kho\x02""yo\x03""tho\x02""so\x07""phinthu\x0b""lakkhangyao\x03""mai\x08""nikhahit\x08""yamakkan\x07""fongman\x0a""angkhankhu\x06""khomut\x03""aae\x02""no\x03""nng\x03""jny\x03""nyj\x04""nndd\x02""nd\x02""mb\x02""lo\x02""om\x04""half\x02""am\x02""ue\x03""uue\x03""yar\x02""ao\x04""tsha\x04""dzha\x03""zha\x02""-a\x04""kssa\x0a""fixed-form\x03""kka\x04""rjes\x04""rnam\x03""sna\x03""lci\x04""mchu\x03""gru\x02""ei\x02""ay\x04""rdel\x02""hn\x02""hm\x04""nnya\x04""shan\x03""mon\x04""tall\x04""asat\x06""medial\x05""great\x03""ssh\x03""kss\x07""western\x07""eastern\x05""rumai\x03""rae\x04""char\x04""jhan\x03""hae\x02""he\x03""hie\x03""har\x03""hoe\x03""ban\x03""gan\x03""don\x03""vin\x03""zen\x03""tan\x03""kan\x03""las\x03""man\x03""nar\x03""par\x04""zhar\x03""tar\x04""phar\x04""khar\x04""ghan\x03""qar\x04""shin\x04""chin\x03""can\x03""jil\x03""cil\x03""xan\x02""fi\x02""yn\x05""elifi\x08""georgian\x03""nny\x06""filler\x02""eo\x03""yeo\x02""ye\x03""wae\x03""weo\x02""wi\x02""eu\x03""a-o\x03""a-u\x04""ya-o\x05""ya-yo\x04""eo-o\x04""eo-u\x05""eo-eu\x05""yeo-o\x05""yeo-u\x04""o-eo\x03""o-e\x04""o-ye\x03""o-o\x03""o-u\x05""yo-ya\x06""yo-yae\x06""yo-yeo\x04""yo-o\x04""yo-i\x03""u-a\x04""u-ae\x07""u-eo-eu\x04""u-ye\x03""u-u\x04""yu-a\x05""yu-eo\x04""yu-e\x06""yu-yeo\x05""yu-ye\x04""yu-u\x04""yu-i\x04""eu-u\x05""eu-eu\x04""yi-u\x03""i-a\x04""i-ya\x03""i-o\x03""i-u\x04""i-eu\x07""i-araea\x05""araea\x08""araea-eo\x02""xh\x0c""nieun-tikeut\x0a""nieun-sios\x0d""nieun-pansios\x0d""nieun-thieuth\x0d""tikeut-kiyeok\x0c""tikeut-rieul\x11""rieul-kiyeok-sios\x0b""rieul-nieun\x0c""rieul-tikeut\x12""rieul-tikeut-hieuh\x0b""hieuh-mieum\x0b""hieuh-pieup\x0b""yeorinhieuh\x02""gg\x03""laa\x02""jj\x02""nb\x02""dg\x02""rn\x02""mn\x02""bg\x02""bn\x03""sza\x02""bs\x03""bsg\x03""bst\x03""bsb\x03""bss\x03""bsj\x02""bj\x02""bc\x02""bt\x02""bp\x03""bbn\x02""sg\x02""sn\x02""sd\x02""sr\x02""sm\x02""sb\x03""sbg\x03""sss\x02""sj\x02""sc\x02""sk\x04""shee\x03""she\x04""shwa\x03""qoa\x03""qha\x03""qhu\x02""ck\x04""qhee\x03""qhe\x02""pb\x02""pn\x04""qhwi\x05""qhwaa\x05""qhwee\x04""qhwe\x04""u-eo\x03""u-i\x02""gs\x02""nh\x02""lg\x02""lm\x02""lb\x02""lt\x02""lp\x02""lh\x02""gl\x03""gsg\x02""ns\x02""nz\x02""nt\x02""tl\x03""lgs\x02""ln\x02""ld\x03""lth\x03""lmg\x03""lms\x03""lbs\x03""lbh\x03""rnp\x03""lss\x02""lk\x02""lq\x02""mg\x02""ml\x02""ms\x03""mss\x02""mz\x02""mc\x02""mh\x02""bl\x02""sl\x02""hl\x02""hb\x03""ddi\x04""ddaa\x04""ddee\x03""dde\x03""ddo\x04""ddwa\x02""hu\x02""hi\x03""haa\x03""hee\x02""ho\x03""jwa\x02""lu\x02""li\x03""lee\x02""le\x03""lwa\x03""hha\x03""hhu\x03""hhi\x04""hhaa\x04""hhee\x03""hhe\x03""hho\x04""hhwa\x02""mu\x02""mi\x03""maa\x03""mee\x02""me\x02""mo\x03""mwa\x03""szu\x03""szi\x04""szaa\x04""szee\x03""sze\x03""szo\x04""szwa\x02""ru\x02""ri\x03""raa\x03""ree\x02""re\x02""ro\x03""rwa\x02""su\x02""si\x03""saa\x03""see\x02""se\x03""swa\x03""shu\x03""shi\x04""shaa\x02""qu\x02""qi\x03""qaa\x03""qee\x02""qe\x02""qo\x04""tzoa\x03""qwa\x02""fu\x03""qwi\x04""qwaa\x04""qwee\x03""qwe\x02""fo\x03""fwa\x03""qhi\x04""qhaa\x03""qho\x03""pwa\x04""qhwa\x03""mya\x02""bu\x02""bi\x03""baa\x03""bee\x02""be\x02""bo\x03""bwa\x02""vu\x02""vi\x03""vaa\x03""vee\x02""ve\x02""vo\x03""vwa\x02""tu\x03""taa\x03""tee\x02""te\x02""to\x03""twa\x02""cu\x02""ci\x03""caa\x03""cee\x02""ce\x02""co\x03""cwa\x02""xa\x02""xu\x02""xi\x03""xaa\x03""xee\x02""xe\x02""xo\x03""bwe\x03""xwa\x03""fwi\x03""xwi\x04""xwaa\x04""xwee\x03""xwe\x04""pwee\x03""pwe\x02""nu\x02""ni\x03""nee\x02""ne\x03""nwa\x03""nyu\x03""nyi\x04""nyaa\x04""nyee\x03""nye\x03""nyo\x04""nywa\x02""ku\x02""ki\x03""kaa\x03""kee\x02""ke\x03""kwa\x03""kwi\x04""kwaa\x04""kwee\x03""kwe\x03""kxa\x03""kxu\x03""kxi\x04""kxaa\x04""kxee\x03""kxe\x03""kxo\x03""hna\x04""kxwa\x04""kxwi\x05""kxwaa\x05""kxwee\x04""kxwe\x03""qua\x03""que\x02""wu\x03""waa\x03""wee\x02""wo\x02""sv\x02""di\x02""zu\x02""zi\x03""zaa\x03""zee\x02""zo\x03""zwa\x03""zhu\x03""zhi\x04""zhaa\x04""zhee\x03""zhe\x03""zho\x04""zhwa\x03""yaa\x03""yee\x02""du\x03""daa\x03""dee\x02""do\x03""dwa\x03""ddu\x02""ju\x02""ji\x03""jaa\x03""jee\x02""je\x02""jo\x02""gu\x02""gi\x03""gaa\x03""gee\x02""ge\x02""go\x03""gwa\x03""gwi\x04""gwaa\x04""gwee\x03""gwe\x03""ggu\x03""ggi\x04""ggaa\x04""ggee\x03""gge\x03""ggo\x03""thu\x03""thi\x04""thaa\x04""thee\x03""the\x04""thwa\x03""chu\x03""chi\x04""chaa\x04""chee\x03""che\x03""cho\x04""chwa\x03""phu\x03""phi\x04""phaa\x04""phee\x03""phe\x03""pho\x04""phwa\x03""tsu\x03""tsi\x04""tsaa\x04""tsee\x03""tse\x03""tso\x04""tswa\x03""tza\x03""tzu\x03""tzi\x04""tzaa\x04""tzee\x03""tze\x03""tzo\x03""faa\x03""fee\x02""fe\x02""pu\x02""pi\x03""paa\x03""pee\x02""pe\x02""po\x03""rya\x03""fya\x02""gv\x02""lv\x03""nah\x02""nv\x03""qui\x03""quo\x03""quu\x03""quv\x02""dv\x03""dla\x03""tla\x03""tle\x03""tli\x03""tlo\x03""tlu\x03""tlv\x03""tsv\x02""wv\x02""yv\x03""aai\x03""wii\x03""woo\x04""paai\x03""pii\x03""poo\x03""pwi\x04""pwii\x03""pwo\x04""pwoo\x04""pwaa\x04""taai\x03""tii\x03""too\x03""twe\x03""twi\x04""twii\x03""two\x04""twoo\x04""twaa\x03""tte\x03""tti\x03""tto\x04""kaai\x03""kii\x03""koo\x04""kwii\x03""kwo\x04""kwoo\x02""kw\x03""keh\x03""kih\x03""koh\x03""kah\x04""caai\x03""cii\x03""coo\x03""cwe\x03""cwi\x04""cwii\x03""cwo\x04""cwoo\x04""cwaa\x04""maai\x03""mii\x03""moo\x03""mwe\x03""mwi\x04""mwii\x03""mwo\x04""mwoo\x04""mwaa\x04""naai\x03""nii\x03""noo\x03""nwe\x04""nwaa\x04""laai\x03""lii\x03""loo\x03""lwe\x03""lwi\x04""lwii\x03""lwo\x04""lwoo\x04""lwaa\x04""saai\x03""sii\x03""soo\x03""swe\x03""swi\x04""swii\x03""swo\x04""swoo\x04""swaa\x02""sw\x03""skw\x04""spwa\x04""stwa\x04""skwa\x04""scwa\x04""shii\x04""shoo\x04""shwe\x04""shwi\x05""shwii\x04""shwo\x05""shwoo\x05""shwaa\x04""yaai\x03""yii\x03""yoo\x03""ywe\x03""ywi\x04""ywii\x03""ywo\x04""ywoo\x03""ywa\x04""ywaa\x04""raai\x03""rii\x03""roo\x04""rwaa\x04""faai\x03""fii\x03""foo\x04""fwaa\x04""thii\x04""thoo\x05""thwaa\x04""tthe\x04""tthi\x04""ttho\x03""tye\x03""tyi\x03""tyo\x03""tya\x03""hii\x03""hoo\x02""hk\x04""qaai\x03""qii\x03""qoo\x04""tlhe\x04""tlhi\x04""tlho\x04""tlha\x05""ngaai\x03""ngi\x04""ngii\x03""ngo\x04""ngoo\x04""ngaa\x03""lhi\x04""lhii\x03""lho\x04""lhoo\x04""lhaa\x03""ghu\x03""gho\x04""ghee\x03""ghi\x03""hwu\x03""hwo\x03""hwe\x04""hwee\x03""hwi\x03""hwa\x03""ttu\x04""ttee\x03""khu\x03""khe\x04""khee\x03""khi\x03""kku\x03""kko\x03""kke\x04""kkee\x03""kki\x02""kk\x03""jju\x03""jjo\x03""jje\x04""jjee\x03""jji\x03""dlu\x03""dlo\x03""dle\x04""dlee\x03""dli\x03""lhu\x03""lhe\x04""lhee\x04""tlhu\x05""tlhee\x04""tlee\x03""dzu\x03""dzo\x03""dze\x04""dzee\x03""dzi\x04""ttsu\x04""ttso\x04""ttse\x05""ttsee\x04""ttsi\x04""ttsa\x03""qai\x04""ngai\x04""nngi\x05""nngii\x04""nngo\x05""nngoo\x04""nnga\x05""nngaa\x03""sso\x02""ac\x03""ear\x03""ior\x08""boundary\x03""ang\x03""zra\x04""todo\x04""sibe\x06""manchu\x02""uk\x03""uuv\x02""ry\x03""ryy\x02""ly\x03""lyy\x02""ua\x02""kr\x03""yan\x09""mukphreng\x09""kemphreng\x04""sa-i\x02""eh\x03""aue\x05""tone-\x03""kva\x03""xva\x05""vowel\x03""aay\x02""uy\x03""oay\x03""uey\x02""iy\x05""final\x03""lae\x04""laev\x04""ngka\x03""mpa\x03""nra\x04""nyca\x03""ulu\x05""cecek\x06""surang\x05""bisah\x05""akara\x05""ikara\x05""ukara\x05""ekara\x06""aikara\x05""okara\x07""rerekan\x06""tedung\x04""suku\x06""taling\x05""pepet\x04""khot\x04""tzir\x02""ef\x03""zal\x06""asyura\x08""panyecek\x09""panglayar\x09""pangwisad\x09""pamingkal\x08""panyakra\x07""panyiku\x08""panghulu\x07""panyuku\x0a""panaelaeng\x08""panolong\x07""pamepet\x0a""paneuleung\x07""pamaaeh\x03""sya\x03""kla\x03""gla\x03""pla\x03""fla\x03""bla\x03""mla\x03""hla\x07""nyin-do\x04""kang\x03""ran\x02""at\x02""ag\x02""al\x03""aak\x03""aaj\x03""aam\x03""aaw\x02""is\x02""ih\x03""iny\x02""ir\x02""uc\x02""ud\x03""unn\x02""ep\x03""edd\x03""err\x03""ott\x02""ob\x02""ov\x02""oh\x07""capital\x04""open\x08""sideways\x03""top\x06""bottom\x06""voiced\x06""turned\x05""alpha\x05""schwa\x03""eng\x04""beta\x05""greek\x05""delta\x05""gamma\x03""rho\x08""cyrillic\x07""insular\x04""iota\x07""upsilon\x03""esh\x03""ezh\x03""eth\x08""reversed\x07""dotless\x06""script\x06""barred\x05""theta\x09""flattened\x02""av\x02""zr\x02""jy\x02""cy\x0c""middle-welsh\x07""epsilon\x03""eta\x07""omicron\x05""omega\x03"" ha\x03"" ga\x03"" zi\x04"" pai\x05"" yong\x05"" bing\x03""tie\x02""et\x03"" xi\x06"" zheng\x06"" chong\x05"" ping\x05"" shan\x06""shapes\x05"" xian\x04"" qia\x05"" jiao\x04"" jue\x04"" hui\x03"" li\x03"" mo\x04"" jin\x05"" zhuo\x04"" shu\x03"" ji\x03"" lu\x03"" le\x04"" you\x04"" sui\x04"" lan\x05"" peng\x03"" bi\x04"" nen\x04"" xia\x04"" zao\x03"" ti\x04"" jie\x04"" nao\x04"" shi\x04"" hua\x05"" lian\x05"" jian\x05"" beng\x06"" jiang\x05"" xing\x04"" bie\x04"" zai\x05"" chou\x04"" sou\x05"" niao\x04"" die\x06"" huang\x04"" dun\x03"" yi\x04"" tuo\x05"" jing\x04"" dai\x04"" cha\x04"" fen\x02""pp\x04"" wan\x04"" sao\x04"" xiu\x04"" gao\x04"" xue\x05"" weng\x03""ecu\x02""cl\x02""cr\x02""ff\x03""mil\x03""pts\x02""dr\x03"" fu\x04"" kou\x04"" chu\x04"" zhe\x03""iii\x02""iv\x03""vii\x04""viii\x02""ix\x03""xii\x05"" tian\x04"" suo\x04"" she\x06"" zhuan\x05"" tang\x06"" zhuai\x04"" yao\x03"" tu\x03"" mi\x05"" zhen\x04"" xie\x04"" lei\x04"" gai\x05"" juan\x05""above\x04"" qiu\x05"" ding\x04"" que\x03""and\x03"" ao\x04"" mei\x03"" ge\x04""with\x03"" qu\x04"" hou\x03""azu\x04""buky\x04""vede\x07""glagoli\x05""dobro\x05""yestu\x07""zhivete\x05""dzelo\x06""zemlja\x04""izhe\x07""initial\x06""djervi\x04""kako\x07""ljudije\x07""myslite\x05""nashi\x03""onu\x06""pokoji\x05""ritsi\x05""slovo\x06""tvrido\x03""uku\x05""fritu\x04""heru\x03""otu\x04""shta\x06""chrivi\x04""yeru\x04""yeri\x04""yati\x07""spidery\x03""yus\x07""iotated\x03""big\x04""fita\x07""izhitsa\x07""shtapic\x0a""trokutasti\x08""latinate\x08""tailless\x04""alfa\x04""vida\x05""dalda\x03""eie\x03""sou\x04""zata\x04""hate\x06""thethe\x05""iauda\x04""kapa\x05""laula\x03""ksi\x04""sima\x03""tau\x03""psi\x03""oou\x09""dialect-p\x03""old\x0d""cryptogrammic\x07""crossed\x08""akhmimic\x08""l-shaped\x03""yab\x04""yabh\x03""yag\x05""yaghh\x06""berber\x03""yaj\x03""yad\x04""yadh\x04""yadd\x05""yaddh\x03""yey\x03""yaf\x03""yak\x06""tuareg\x05""yakhh\x03""yah\x04""yahh\x04""yakh\x03""yaq\x04""yazh\x07""ahaggar\x03""yal\x03""yam\x03""yap\x04""yarr\x04""yagh\x04""ayer\x03""yas\x04""yass\x04""yash\x03""yat\x04""yath\x04""yach\x04""yatt\x03""yav\x03""yaw\x03""yay\x03""yaz\x0a""tawellemet\x04""yazz\x0d""labialization\x03""loa\x03""moa\x03""roa\x03""soa\x04""shoa\x03""boa\x03""toa\x03""coa\x03""noa\x04""nyoa\x03""zoa\x03""doa\x04""ddoa\x03""joa\x04""thoa\x04""choa\x04""phoa\x03""poa\x04""ggwa\x04""ggwi\x05""ggwee\x04""ggwe\x03""ssu\x03""ssi\x04""ssaa\x04""ssee\x03""sse\x03""cca\x03""ccu\x03""cci\x04""ccaa\x04""ccee\x03""cce\x03""cco\x03""zza\x03""zzu\x03""zzi\x04""zzaa\x04""zzee\x03""zze\x03""zzo\x04""ccha\x04""cchu\x04""cchi\x05""cchaa\x05""cchee\x04""cche\x04""ccho\x03""qya\x03""qyu\x03""qyi\x04""qyaa\x04""qyee\x03""qye\x03""qyo\x03""kya\x03""kyu\x03""kyi\x04""kyaa\x04""kyee\x03""kye\x03""kyo\x03""xya\x03""xyu\x03""xyi\x04""xyaa\x04""xyee\x03""xye\x03""xyo\x03""gya\x03""gyu\x03""gyi\x04""gyaa\x04""gyee\x03""gye\x03""gyo\x02""er\x02""es\x05""shcha\x05""es-te\x05""djerv\x09""monograph\x08""iotified\x06""little\x04""full\x08""surround\x08""overlaid\x02""gn\x06""kiyeok\x0b""ssangkiyeok\x0b""kiyeok-sios\x05""nieun\x0b""nieun-cieuc\x0b""nieun-hieuh\x06""tikeut\x0b""ssangtikeut\x05""rieul\x0c""rieul-kiyeok\x0b""rieul-mieum\x0b""rieul-pieup\x0a""rieul-sios\x0d""rieul-thieuth\x0d""rieul-phieuph\x0b""rieul-hieuh\x05""mieum\x05""pieup\x0a""ssangpieup\x0a""pieup-sios\x04""sios\x09""ssangsios\x05""ieung\x05""cieuc\x0a""ssangcieuc\x07""chieuch\x07""khieukh\x07""thieuth\x07""phieuph\x05""hieuh\x0a""ssangnieun\x10""rieul-pieup-sios\x0d""rieul-pansios\x11""rieul-yeorinhieuh\x0b""mieum-pieup\x0a""mieum-sios\x0d""mieum-pansios\x0d""kapyeounmieum\x0c""pieup-kiyeok\x0c""pieup-tikeut\x11""pieup-sios-kiyeok\x11""pieup-sios-tikeut\x0b""pieup-cieuc\x0d""pieup-thieuth\x0d""kapyeounpieup\x12""kapyeounssangpieup\x0b""sios-kiyeok\x0a""sios-nieun\x0b""sios-tikeut\x0a""sios-pieup\x0a""sios-cieuc\x07""pansios\x0a""ssangieung\x08""yesieung\x0d""yesieung-sios\x10""yesieung-pansios\x0f""kapyeounphieuph\x0a""ssanghieuh\x06""araeae\x03""enn\x03""onn\x03""ann\x03""inn\x02""im\x03""ngg\x04""ainn\x04""aunn\x03""ong\x04""innn\x05""ojeon\x06""chamko\x05""jueui\x04"" kua\x03"" wu\x04"" yin\x03"" si\x03"" ye\x04"" nuo\x03"" xu\x06"" xiong\x04"" liu\x04"" lin\x06"" xiang\x04"" xin\x04"" pan\x03"" ma\x05"" qian\x06"" zhong\x02"" n\x06"" cheng\x05"" fang\x04"" zuo\x05"" zhou\x05"" dong\x03"" su\x06"" jiong\x05"" wang\x04"" zhu\x05"" long\x05"" ying\x05"" miao\x03"" yu\x04"" luo\x05"" chai\x04"" hun\x04"" rao\x04"" han\x04"" tai\x03"" ai\x04"" jun\x02"" l\x05"" xiao\x05"" tiao\x04"" zha\x03"" ku\x03"" er\x05"" nang\x03"" qi\x04"" chi\x03"" mu\x03"" se\x06"" qiong\x03"" sa\x03"" pu\x03"" ta\x03"" ou\x05"" mian\x04"" wen\x05"" diao\x04"" mie\x05"" quan\x04"" cai\x06"" liang\x03"" gu\x04"" mao\x04"" gua\x04"" man\x05"" chui\x05"" huan\x05"" gong\x04"" nan\x05"" dian\x04"" yan\x03"" ci\x05"" lang\x03"" he\x04"" tou\x05"" pian\x02"" e\x04"" qie\x04"" rui\x05"" chan\x04"" dan\x04"" duo\x04"" fei\x05"" bang\x03"" ba\x05"" kuai\x05"" shen\x03"" pi\x05"" yang\x04"" bei\x04"" che\x05"" suan\x05"" heng\x04"" gui\x04"" lou\x04"" sun\x04"" zou\x04"" zhi\x04"" jia\x03"" hu\x03"" la\x03"" ke\x04"" wei\x05"" zhao\x04"" kui\x04"" fan\x06"" zhang\x05"" song\x04"" nei\x05"" chen\x04"" guo\x03"" ng\x03"" fa\x04"" hao\x04"" pou\x05"" hong\x04"" tun\x03"" bo\x04"" nie\x04"" wai\x05"" shou\x05"" ling\x04"" lun\x05"" chun\x04"" rou\x03"" ze\x06"" sheng\x04"" bai\x04"" gou\x03"" na\x03"" cu\x04"" kuo\x04"" lao\x04"" huo\x04"" sai\x05"" rong\x03"" ju\x04"" pao\x04"" can\x05"" nian\x05"" xuan\x04"" qin\x03"" bu\x05"" zang\x05"" mang\x04"" dui\x04"" bao\x06"" chang\x04"" gun\x05"" liao\x03"" da\x05"" meng\x05"" qiao\x05"" rang\x04"" yun\x04"" tao\x04"" lai\x04"" ban\x05"" chuo\x03"" nu\x04"" ran\x04"" sha\x04"" dou\x03"" po\x05"" tong\x06"" qiang\x04"" xun\x05"" pang\x04"" cao\x03"" an\x04"" mai\x04"" yue\x05"" huai\x04"" zan\x04"" hai\x05"" luan\x05"" ning\x03"" ya\x05"" ming\x04"" zui\x04"" cui\x03"" de\x05"" bian\x04"" nou\x04"" tui\x05"" zhan\x04"" cen\x04"" min\x03"" zu\x03"" ni\x04"" cuo\x04"" pei\x05"" gang\x05"" yuan\x05"" biao\x04"" dao\x04"" jiu\x04"" run\x03"" wo\x05"" cuan\x04"" ren\x04"" kai\x04"" men\x07"" chuang\x05"" feng\x05"" zhai\x03"" di\x04"" ben\x05"" zong\x05"" ceng\x05"" hang\x04"" nin\x05"" kong\x04"" lie\x06"" kuang\x04"" san\x03"" te\x05"" shun\x03"" ce\x04"" ang\x03"" ru\x07"" shuang\x05"" guai\x03"" wa\x05"" shai\x05"" tuan\x05"" piao\x04"" kun\x04"" qun\x06"" chuai\x05"" shao\x05"" duan\x04"" gen\x06"" guang\x04"" cou\x05"" nuan\x05"" reng\x04"" mou\x04"" nai\x05"" guan\x04"" hen\x06"" chuan\x05"" kuan\x05"" qing\x04"" pin\x05"" kang\x03"" du\x05"" neng\x04"" tan\x05"" cang\x05"" chao\x05"" nong\x04"" kan\x04"" ken\x05"" ting\x04"" gan\x04"" niu\x05"" ruan\x05"" cong\x05"" zeng\x05"" shui\x05"" geng\x05"" shuo\x05"" zuan\x05"" zhui\x03"" en\x05"" leng\x04"" cun\x03"" ne\x04"" bin\x04"" ruo\x04"" kao\x05"" dang\x05"" teng\x03"" ri\x05"" deng\x03"" za\x06"" niang\x03"" ca\x05"" sang\x05"" keng\x06"" shuai\x04"" pie\x04"" tie\x06"" shuan\x05"" chua\x04"" zen\x06"" shang\x03"" pa\x04"" fou\x04"" diu\x03"" fo\x03"" ka\x04"" lia\x04"" zun\x05"" seng\x05"" zhun\x06"" zhuen\x05"" shua\x02"" a\x04"" pen\x02"" m\x04"" gem\x03"" yo\x03"" re\x04"" dia\x04""inch\x06""gallon\x04""giga\x06""guinea\x08""kilogram\x08""kilowatt\x07""gramton\x06""koruna\x08""shilling\x05""dozen\x04""desi\x06""dollar\x07""percent\x08""building\x05""farad\x05""franc\x07""hectare\x04""peso\x07""pfennig\x05""point\x03""hon\x05""micro\x04""mile\x04""mark\x06""micron\x05""rupee\x05""ruble\x03""rem\x08""roentgen\x05""meiji\x02""gb\x03""cal\x02""pf\x09""microgram\x02""hz\x03""khz\x02""mm\x03""ms2\x03""kpa\x03""gpa\x05""rads2\x02""mv\x02""nw\x02""cc\x02""cd\x02""gy\x03""mol\x07"" zhuang\x04"" zei\x02"" t\x05"" zhua\x04"" sen\x04"" hei\x04"" hal\x06"" ppwun\x04"" nay\x04"" yai\x06"" sasou\x04"" kes\x05"" saai\x05"" haai\x03"" so\x07"" akutsu\x05"" gake\x05"" gomi\x04"" ama\x04"" sho\x04"" ten\x04"" gei\x03"" ki\x04"" lue\x04"" miu\x05"" moku\x06"" tochi\x06"" kasei\x07"" kunugi\x06"" hazou\x08"" katsura\x05"" tamo\x0a"" shitamizu\x07"" shibui\x05"" tani\x05"" suei\x05"" diou\x08"" oozutsu\x0d"" tsumekanmuri\x04"" swu\x0c"" deshiguramu\x0b"" miriguramu\x0b"" hekutogura\x07"" tatamu\x04"" nue\x07"" utsubo\x02"" o\x04"" sik\x07"" sasara\x05"" yana\x03""bup\x05"" hata\x03""pap\x04""purx\x05"" kuji\x08"" shinshi\x04""nbap\x05"" kume\x04""nbyx\x09"" nukamiso\x03"" ro\x04""hmyx\x05""hmyrx\x07"" sukumo\x06"" kouji\x05"" kinu\x05"" wata\x04"" sok\x05"" kase\x06"" yingl\x07"" kasuri\x05"" nawa\x07"" odoshi\x05"" horo\x04"" sem\x05"" jung\x03"" un\x04""zzyr\x08"" kaakeru\x04""ssyt\x04""zhux\x09"" yashinau\x03""jyt\x03""qie\x04""njup\x04""nyuo\x08"" shikato\x03""xie\x0a"" tsuraneru\x03""een\x04""ween\x04""bhee\x04""mbee\x04""kpee\x05""mgbee\x04""gbee\x04""dhee\x05""dhhee\x04""ndee\x04""njee\x05""nggee\x03""hin\x03""win\x03""bhi\x03""mbi\x03""kpi\x04""mgbi\x03""gbi\x03""dhi\x04""dhhi\x03""ndi\x03""nji\x04""nggi\x04""ngan\x03""han\x03""wan\x03""mba\x04""kpan\x04""mgba\x04""dhha\x03""nda\x03""nja\x04""ngga\x03""oon\x04""woon\x04""bhoo\x03""boo\x04""mboo\x04""kpoo\x05""mgboo\x04""gboo\x03""voo\x04""dhoo\x05""dhhoo\x03""doo\x04""ndoo\x03""zoo\x04""zhoo\x03""joo\x04""njoo\x05""nggoo\x03""goo\x04""nyoo\x03""hun\x03""wun\x03""bhu\x03""mbu\x03""kpu\x04""mgbu\x03""gbu\x03""dhu\x04""dhhu\x03""ndu\x03""nju\x04""nggu\x04""ngon\x03""won\x03""bho\x03""mbo\x03""kpo\x04""mgbo\x03""gbo\x04""gbon\x03""dho\x04""dhho\x03""ndo\x03""njo\x04""nggo\x04""ngen\x03""hen\x03""wen\x03""bhe\x03""mbe\x03""kpe\x04""kpen\x04""mgbe\x03""gbe\x04""gben\x03""dhe\x04""dhhe\x03""nde\x04""ngge\x05""nggen\x03""gen\x0a""lengthener\x05""ndole\x06""zemlya\x05""broad\x07""neutral\x06""closed\x07""blended\x04""soft\x09""monocular\x09""binocular\x06""double\x0b""multiocular\x03""dwe\x04""dzwe\x04""zhwe\x04""dzze\x04""tswe\x04""tsse\x04""tche\x07""chinese\x06""dotted\x09""left-stem\x05""lower\x08""inverted\x06""stress\x0d""egyptological\x04""heng\x02""tz\x08""tresillo\x09""cuatrillo\x06""broken\x03""rum\x02""vy\x0a""visigothic\x05""thorn\x04""vend\x03""con\x02""us\x03""dum\x03""lum\x03""mum\x03""num\x03""tum\x02""um\x0a""circumflex\x05""colon\x06""equals\x08""saltillo\x08""dvisvara\x07""hasanta\x03""jho\x04""ddho\x03""rro\x09""alternate\x09""voiceless\x09""aspirated\x05""haaru\x03""hta\x04""shya\x04""nyja\x02""ea\x04""ngue\x04""chha\x04""nhue\x03""nha\x04""nhja\x03""nue\x03""ppa\x03""mue\x0b"" obiyaakasu\x04"" noy\x05"" tara\x07"" yadoru\x07"" hesaki\x04""gyon\x05"" sori\x07"" yofune\x05"" susa\x06"" usagi\x04"" nuc\x0b"" kutabireru\x05"" yaji\x07"" sonoko\x04"" hie\x04""nyan\x05"" hagi\x04"" ebi\x09"" kamakiri\x03""dab\x0a"" kamishimo\x05"" yuki\x04"" ena\x06"" hitoe\x08"" chihaya\x07"" tasuki\x08"" yasashi\x03""ren\x03""roe\x07"" segare\x06"" nerau\x07"" utsuke\x03""rim\x09"" shitsuke\x07"" yagate\x07"" suberu\x04"" sip\x03"" ip\x07"" totemo\x04"" kep\x05"" sako\x07"" appare\x06"" otoko\x0b"" sakenomoto\x09"" ishiyumi\x07"" habaki\x06"" irori\x06"" ngaak\x08"" kasugai\x06"" pyeng\x04""byun\x07"" kazari\x05"" yari\x05"" yuru\x07"" phwung\x04""song\x05"" tomo\x07"" kohaze\x03"" on\x07"" oroshi\x05"" shuu\x04"" eri\x07"" namazu\x05"" todo\x07"" kajika\x03""yon\x05"" bora\x05"" mate\x05"" gori\x05"" ugui\x06"" asari\x0a"" subashiri\x09"" kazunoko\x07"" shachi\x06"" dojou\x08"" sukesou\x08"" muroaji\x07"" haraka\x02"" z\x09"" hatahata\x04"" eso\x05"" kyou\x07"" shiira\x06"" mutsu\x04"" nio\x05"" yiao\x06"" shigi\x08"" chidori\x05"" toki\x08"" ikaruga\x07"" kakesu\x06"" isuka\x0c"" kikuitadaki\x08"" tsugumi\x04""jjog\x04""jjon\x04""jjol\x04""jjom\x04""jjob\x04""jjos\x05""jjong\x04""jjoc\x04""jjwa\x05""jjwag\x05""jjwal\x06""jjwass\x05""jjwae\x02""it\x02""ip\x03""iet\x03""iex\x03""iep\x02""ax\x02""ap\x03""uox\x02""uo\x03""uop\x02""ox\x02""op\x02""ex\x03""bit\x03""bix\x03""bip\x04""biet\x04""biex\x03""bie\x04""biep\x03""bat\x03""bax\x03""bap\x04""buox\x03""buo\x04""buop\x03""bot\x03""box\x03""bop\x03""bex\x03""bep\x03""but\x03""bux\x04""burx\x03""bur\x03""byt\x03""byx\x02""by\x03""byp\x04""byrx\x03""byr\x03""pit\x03""pix\x03""pip\x04""piex\x03""pie\x04""piep\x03""pat\x03""pax\x04""puox\x03""puo\x04""puop\x03""pot\x03""pox\x03""pop\x03""put\x03""pux\x03""pup\x03""pur\x03""pyt\x03""pyx\x02""py\x03""pyp\x04""pyrx\x03""pyr\x04""bbit\x04""bbix\x03""bbi\x04""bbip\x05""bbiet\x05""bbiex\x04""bbie\x05""bbiep\x04""bbat\x04""bbax\x04""bbap\x05""bbuox\x04""bbuo\x05""bbuop\x04""bbot\x04""bbox\x03""bbo\x04""bbop\x04""bbex\x03""bbe\x04""bbep\x04""bbut\x04""bbux\x03""bbu\x04""bbup\x05""bburx\x04""bbur\x04""bbyt\x04""bbyx\x03""bby\x04""bbyp\x04""nbit\x04""nbix\x03""nbi\x04""nbip\x05""nbiex\x04""nbie\x05""nbiep\x04""nbat\x04""nbax\x03""nba\x04""nbot\x04""nbox\x03""nbo\x04""nbop\x04""nbut\x04""nbux\x03""nbu\x04""nbup\x05""nburx\x04""nbur\x04""nbyt\x03""nby\x04""nbyp\x05""nbyrx\x04""nbyr\x04""hmit\x04""hmix\x03""hmi\x04""hmip\x05""hmiex\x04""hmie\x05""hmiep\x04""hmat\x04""hmax\x03""hma\x04""hmap\x05""hmuox\x04""hmuo\x05""hmuop\x04""hmot\x04""hmox\x03""hmo\x04""hmop\x04""hmut\x04""hmux\x03""hmu\x04""hmup\x05""hmurx\x04""hmur\x03""hmy\x04""hmyp\x04""hmyr\x03""mit\x03""mix\x03""mip\x04""miex\x03""mie\x04""miep\x03""mat\x03""max\x03""map\x04""muot\x04""muox\x03""muo\x04""muop\x03""mot\x03""mox\x03""mop\x03""mex\x03""mut\x03""mux\x03""mup\x04""murx\x03""mur\x03""myt\x03""myx\x02""my\x03""myp\x03""fit\x03""fix\x03""fip\x03""fat\x03""fax\x03""fap\x03""fox\x03""fop\x03""fut\x03""fux\x03""fup\x04""furx\x03""fur\x03""fyt\x03""fyx\x02""fy\x03""fyp\x03""vit\x03""vix\x03""vip\x04""viet\x04""viex\x03""vie\x04""viep\x03""vat\x03""vax\x03""vap\x03""vot\x03""vox\x03""vop\x03""vex\x03""vep\x03""vut\x03""vux\x03""vup\x04""vurx\x03""vur\x03""vyt\x03""vyx\x03""vyp\x04""vyrx\x03""vyr\x03""dit\x03""dix\x03""dip\x04""diex\x03""die\x04""diep\x03""dat\x03""dax\x03""dap\x04""duox\x03""duo\x03""dox\x03""dop\x03""dex\x03""dep\x03""dut\x03""dux\x03""dup\x04""durx\x03""dur\x03""tit\x03""tix\x03""tip\x04""tiex\x04""tiep\x03""tat\x03""tax\x03""tap\x04""tuot\x04""tuox\x03""tuo\x04""tuop\x03""tot\x03""tox\x03""tex\x03""tep\x03""tut\x03""tux\x03""tup\x04""turx\x03""tur\x04""ddit\x04""ddix\x04""ddip\x05""ddiex\x04""ddie\x05""ddiep\x04""ddat\x04""ddax\x04""ddap\x05""dduox\x04""dduo\x05""dduop\x04""ddot\x04""ddox\x04""ddop\x04""ddex\x04""ddep\x04""ddut\x04""ddux\x04""ddup\x05""ddurx\x04""ddur\x04""ndit\x04""ndix\x04""ndip\x05""ndiex\x04""ndie\x04""ndat\x04""ndax\x04""ndap\x04""ndot\x04""ndox\x04""ndop\x04""ndex\x04""ndep\x04""ndut\x04""ndux\x04""ndup\x05""ndurx\x04""ndur\x04""hnit\x04""hnix\x03""hni\x04""hnip\x05""hniet\x05""hniex\x04""hnie\x05""hniep\x04""hnat\x04""hnax\x04""hnap\x05""hnuox\x04""hnuo\x04""hnot\x04""hnox\x04""hnop\x04""hnex\x03""hne\x04""hnep\x04""hnut\x03""nit\x03""nix\x03""nip\x04""niex\x03""nie\x04""niep\x03""nax\x03""nap\x04""nuox\x03""nuo\x04""nuop\x03""not\x03""nox\x03""nop\x03""nex\x03""nep\x03""nut\x03""nux\x03""nup\x04""nurx\x03""nur\x04""hlit\x04""hlix\x03""hli\x04""hlip\x05""hliex\x04""hlie\x05""hliep\x04""hlat\x04""hlax\x04""hlap\x05""hluox\x04""hluo\x05""hluop\x04""hlox\x03""hlo\x04""hlop\x04""hlex\x03""hle\x04""hlep\x04""hlut\x04""hlux\x03""hlu\x04""hlup\x05""hlurx\x04""hlur\x04""hlyt\x04""hlyx\x03""hly\x04""hlyp\x05""hlyrx\x04""hlyr\x03""lit\x03""lix\x03""lip\x04""liet\x04""liex\x03""lie\x04""liep\x03""lat\x03""lax\x03""lap\x04""luot\x04""luox\x03""luo\x04""luop\x03""lot\x03""lox\x03""lop\x03""lex\x03""lep\x03""lut\x03""lux\x03""lup\x04""lurx\x03""lur\x03""lyt\x03""lyx\x03""lyp\x04""lyrx\x03""lyr\x03""git\x03""gix\x03""gip\x04""giet\x04""giex\x03""gie\x04""giep\x03""gat\x03""gax\x03""gap\x04""guot\x04""guox\x03""guo\x04""guop\x03""got\x03""gox\x03""gop\x03""get\x03""gex\x03""gep\x03""gut\x03""gux\x03""gup\x04""gurx\x03""gur\x03""kit\x03""kix\x03""kip\x04""kiex\x03""kie\x04""kiep\x03""kat\x03""kax\x03""kap\x04""kuox\x03""kuo\x04""kuop\x03""kot\x03""kox\x03""kop\x03""ket\x03""kex\x03""kep\x03""kut\x03""kux\x03""kup\x04""kurx\x03""kur\x04""ggit\x04""ggix\x05""ggiex\x04""ggie\x05""ggiep\x04""ggat\x04""ggax\x04""ggap\x05""gguot\x05""gguox\x04""gguo\x05""gguop\x04""ggot\x04""ggox\x04""ggop\x04""gget\x04""ggex\x04""ggep\x04""ggut\x04""ggux\x04""ggup\x05""ggurx\x04""ggur\x05""mgiex\x04""mgie\x04""mgat\x04""mgax\x03""mga\x04""mgap\x05""mguox\x04""mguo\x05""mguop\x04""mgot\x04""mgox\x03""mgo\x04""mgop\x04""mgex\x03""mge\x04""mgep\x04""mgut\x04""mgux\x03""mgu\x04""mgup\x05""mgurx\x04""mgur\x04""hxit\x04""hxix\x03""hxi\x04""hxip\x05""hxiet\x05""hxiex\x04""hxie\x05""hxiep\x04""hxat\x04""hxax\x03""hxa\x04""hxap\x05""hxuot\x05""hxuox\x04""hxuo\x05""hxuop\x04""hxot\x04""hxox\x03""hxo\x04""hxop\x04""hxex\x03""hxe\x04""hxep\x05""ngiex\x04""ngie\x05""ngiep\x04""ngat\x04""ngax\x04""ngap\x05""nguot\x05""nguox\x04""nguo\x04""ngot\x04""ngox\x04""ngop\x04""ngex\x03""nge\x04""ngep\x03""hit\x04""hiex\x03""hat\x03""hax\x03""hap\x04""huot\x04""huox\x03""huo\x04""huop\x03""hot\x03""hox\x03""hop\x03""hex\x03""hep\x03""wat\x03""wax\x03""wap\x04""wuox\x03""wuo\x04""wuop\x03""wox\x03""wop\x03""wex\x03""wep\x03""zit\x03""zix\x03""zip\x04""ziex\x03""zie\x04""ziep\x03""zat\x03""zax\x03""zap\x04""zuox\x03""zuo\x04""zuop\x03""zot\x03""zox\x03""zop\x03""zex\x03""zep\x03""zut\x03""zux\x03""zup\x04""zurx\x03""zur\x03""zyt\x03""zyx\x02""zy\x03""zyp\x04""zyrx\x03""zyr\x03""cit\x03""cix\x03""cip\x04""ciet\x04""ciex\x03""cie\x04""ciep\x03""cat\x03""cax\x03""cap\x04""cuox\x03""cuo\x04""cuop\x03""cot\x03""cox\x03""cop\x03""cex\x03""cep\x03""cut\x03""cux\x03""cup\x04""curx\x03""cur\x03""cyt\x03""cyx\x03""cyp\x04""cyrx\x03""cyr\x04""zzit\x04""zzix\x04""zzip\x05""zziet\x05""zziex\x04""zzie\x05""zziep\x04""zzat\x04""zzax\x04""zzap\x04""zzox\x04""zzop\x04""zzex\x04""zzep\x04""zzux\x04""zzup\x05""zzurx\x04""zzur\x04""zzyt\x04""zzyx\x03""zzy\x04""zzyp\x05""zzyrx\x04""nzit\x04""nzix\x03""nzi\x04""nzip\x05""nziex\x04""nzie\x05""nziep\x04""nzat\x04""nzax\x03""nza\x04""nzap\x05""nzuox\x04""nzuo\x04""nzox\x04""nzop\x04""nzex\x03""nze\x04""nzux\x03""nzu\x04""nzup\x05""nzurx\x04""nzur\x04""nzyt\x04""nzyx\x03""nzy\x04""nzyp\x05""nzyrx\x04""nzyr\x03""sit\x03""six\x03""sip\x04""siex\x03""sie\x04""siep\x03""sat\x03""sax\x03""sap\x04""suox\x03""suo\x04""suop\x03""sot\x03""sox\x03""sop\x03""sex\x03""sep\x03""sut\x03""sux\x03""sup\x04""surx\x03""sur\x03""syt\x03""syx\x02""sy\x03""syp\x04""syrx\x03""syr\x04""ssit\x04""ssix\x04""ssip\x05""ssiex\x04""ssie\x05""ssiep\x04""ssat\x04""ssax\x04""ssap\x04""ssot\x04""ssox\x04""ssop\x04""ssex\x04""ssep\x04""ssut\x04""ssux\x04""ssup\x04""ssyx\x03""ssy\x04""ssyp\x05""ssyrx\x04""ssyr\x04""zhat\x04""zhax\x04""zhap\x05""zhuox\x04""zhuo\x05""zhuop\x04""zhot\x04""zhox\x04""zhop\x04""zhet\x04""zhex\x04""zhep\x04""zhut\x04""zhup\x05""zhurx\x04""zhur\x04""zhyt\x04""zhyx\x03""zhy\x04""zhyp\x05""zhyrx\x04""zhyr\x04""chat\x04""chax\x04""chap\x05""chuot\x05""chuox\x04""chuo\x05""chuop\x04""chot\x04""chox\x04""chop\x04""chet\x04""chex\x04""chep\x04""chux\x04""chup\x05""churx\x04""chur\x04""chyt\x04""chyx\x03""chy\x04""chyp\x05""chyrx\x04""chyr\x04""rrax\x05""rruox\x04""rruo\x04""rrot\x04""rrox\x04""rrop\x04""rret\x04""rrex\x03""rre\x04""rrep\x04""rrut\x04""rrux\x03""rru\x04""rrup\x05""rrurx\x04""rrur\x04""rryt\x04""rryx\x03""rry\x04""rryp\x05""rryrx\x04""rryr\x04""nrat\x04""nrax\x04""nrap\x04""nrox\x03""nro\x04""nrop\x04""nret\x04""nrex\x03""nre\x04""nrep\x04""nrut\x04""nrux\x03""nru\x04""nrup\x05""nrurx\x04""nrur\x04""nryt\x04""nryx\x03""nry\x04""nryp\x05""nryrx\x04""nryr\x04""shat\x04""shax\x04""shap\x05""shuox\x04""shuo\x05""shuop\x04""shot\x04""shox\x04""shop\x04""shet\x04""shex\x04""shep\x04""shut\x04""shux\x04""shup\x05""shurx\x04""shur\x04""shyt\x04""shyx\x03""shy\x04""shyp\x05""shyrx\x04""shyr\x03""rat\x03""rax\x03""rap\x04""ruox\x03""ruo\x04""ruop\x03""rot\x03""rox\x03""rop\x03""rex\x03""rep\x03""rut\x03""rux\x03""rup\x04""rurx\x03""rur\x03""ryt\x03""ryx\x03""ryp\x04""ryrx\x03""ryr\x03""jit\x03""jix\x03""jip\x04""jiet\x04""jiex\x03""jie\x04""jiep\x04""juot\x04""juox\x03""juo\x04""juop\x03""jot\x03""jox\x03""jop\x03""jut\x03""jux\x03""jup\x04""jurx\x03""jur\x03""jyx\x03""jyp\x04""jyrx\x03""jyr\x03""qit\x03""qix\x03""qip\x04""qiet\x04""qiex\x04""qiep\x04""quot\x04""quox\x04""quop\x03""qot\x03""qox\x03""qop\x03""qut\x03""qux\x03""qup\x04""qurx\x03""qur\x03""qyt\x03""qyx\x02""qy\x03""qyp\x04""qyrx\x03""qyr\x04""jjit\x04""jjix\x04""jjip\x05""jjiet\x05""jjiex\x04""jjie\x05""jjiep\x05""jjuox\x04""jjuo\x05""jjuop\x04""jjot\x04""jjox\x04""jjop\x04""jjut\x04""jjux\x04""jjup\x05""jjurx\x04""jjur\x04""jjyt\x04""jjyx\x03""jjy\x04""jjyp\x04""njit\x04""njix\x04""njip\x05""njiet\x05""njiex\x04""njie\x05""njiep\x05""njuox\x04""njuo\x04""njot\x04""njox\x04""njop\x04""njux\x05""njurx\x04""njur\x04""njyt\x04""njyx\x03""njy\x04""njyp\x05""njyrx\x04""njyr\x04""nyit\x04""nyix\x04""nyip\x05""nyiet\x05""nyiex\x04""nyie\x05""nyiep\x05""nyuox\x05""nyuop\x04""nyot\x04""nyox\x04""nyop\x04""nyut\x04""nyux\x04""nyup\x03""xit\x03""xix\x03""xip\x04""xiet\x04""xiex\x04""xiep\x04""xuox\x03""xuo\x03""xot\x03""xox\x03""xop\x03""xyt\x03""xyx\x02""xy\x03""xyp\x04""xyrx\x03""xyr\x03""yit\x03""yix\x03""yip\x04""yiet\x04""yiex\x03""yie\x04""yiep\x04""yuot\x04""yuox\x03""yuo\x04""yuop\x03""yot\x03""yox\x03""yop\x03""yut\x03""yux\x03""yup\x04""yurx\x03""yur\x03""yyt\x03""yyx\x03""yyp\x04""yyrx\x03""yyr\x03""kug\x03""kun\x03""kul\x03""kum\x03""kub\x03""kus\x04""kung\x04""kweo\x05""kweon\x05""kweol\x06""kweong\x05""kweng\x04""kwig\x04""kwin\x04""kwil\x04""kwim\x04""kwib\x04""kwis\x05""kwing\x04""kyun\x04""kyul\x04""kyum\x03""keu\x04""keug\x04""keun\x04""keul\x04""keum\x04""keub\x05""keung\x03""kig\x03""kin\x03""kil\x03""kim\x03""kib\x03""kis\x04""king\x03""tag\x03""tal\x04""talg\x03""tam\x03""tab\x03""tas\x04""tass\x04""tang\x03""tae\x04""taeg\x04""taen\x04""tael\x04""taem\x04""taeb\x04""taes\x05""taess\x05""taeng\x05""tyang\x03""teo\x04""teog\x04""teon\x04""teol\x05""teolm\x04""teom\x04""teob\x04""teos\x05""teoss\x05""teong\x03""teg\x03""ten\x03""tel\x03""tem\x03""teb\x03""tes\x04""teng\x04""tyeo\x05""tyeon\x06""tyeoss\x04""tyen\x03""tog\x03""ton\x03""tol\x03""tom\x03""tob\x03""tos\x04""tong\x04""twan\x04""twae\x03""toe\x04""toen\x04""toes\x05""toeng\x03""tug\x03""tun\x03""tul\x03""tub\x03""tus\x04""tung\x04""tweo\x06""tweoss\x04""twig\x04""twin\x04""twil\x04""twim\x04""twib\x05""twing\x03""tyu\x04""tyun\x04""tyul\x04""tyum\x05""tyung\x03""teu\x04""teug\x04""teun\x04""teud\x04""teul\x05""teulm\x04""teum\x04""teub\x04""teus\x04""tyin\x04""tyil\x04""tyim\x04""tyib\x03""tig\x03""tin\x03""til\x03""tim\x03""tib\x03""tis\x04""ting\x03""pag\x04""pagg\x03""pan\x03""pal\x04""palm\x03""pam\x03""pab\x03""pas\x04""pass\x04""pang\x03""pae\x04""paeg\x04""paen\x04""pael\x04""paem\x04""paeb\x04""paes\x05""paess\x05""paeng\x03""pya\x04""pyag\x03""peo\x04""peog\x04""peon\x04""peol\x04""peom\x04""peob\x04""peos\x05""peoss\x05""peong\x03""peg\x03""pen\x03""pel\x03""pem\x03""peb\x03""pes\x04""peng\x04""pyeo\x05""pyeon\x05""pyeol\x05""pyeom\x05""pyeob\x06""pyeoss\x06""pyeong\x03""pye\x04""pyel\x04""pyeb\x04""pyes\x03""pog\x03""pon\x03""pol\x03""pom\x03""pob\x03""pos\x04""pong\x05""pwang\x03""poe\x04""poen\x03""pyo\x04""pyon\x04""pyol\x04""pyob\x04""pyos\x03""pug\x03""pun\x03""pud\x03""pul\x04""pulm\x03""pum\x03""pub\x03""pus\x04""pung\x04""pweo\x06""pweong\x04""pwin\x04""pwil\x04""pwim\x04""pwis\x03""pyu\x04""pyun\x04""pyul\x04""pyum\x04""pyus\x05""pyung\x03""peu\x04""peun\x04""peul\x04""peum\x04""peub\x04""peus\x03""pig\x03""pin\x03""pil\x03""pim\x03""pib\x03""pis\x04""ping\x03""hag\x03""hal\x04""halt\x03""ham\x03""hab\x03""has\x04""hang\x04""haeg\x04""haen\x04""hael\x04""haem\x04""haeb\x04""haes\x05""haess\x05""haeng\x03""hya\x05""hyang\x03""heo\x04""heog\x04""heon\x04""heol\x05""heolm\x04""heom\x04""heob\x04""heos\x05""heong\x03""heg\x03""hel\x03""hem\x03""heb\x03""hes\x04""hyeo\x05""hyeog\x05""hyeon\x05""hyeol\x05""hyeom\x05""hyeob\x05""hyeos\x06""hyeoss\x06""hyeong\x03""hye\x04""hyen\x04""hyel\x04""hyeb\x03""hog\x03""hol\x04""holt\x03""hom\x03""hob\x03""hos\x04""hong\x04""hwag\x04""hwan\x04""hwal\x04""hwas\x05""hwang\x04""hwae\x05""hwaeg\x05""hwaen\x05""hwaes\x06""hwaeng\x04""hoeg\x04""hoen\x04""hoel\x04""hoeb\x04""hoes\x05""hoeng\x03""hyo\x04""hyon\x04""hyol\x04""hyob\x04""hyos\x03""hug\x03""hul\x04""hult\x03""hum\x03""hus\x04""hung\x04""hweo\x05""hweon\x05""hweol\x05""hweom\x06""hweong\x04""hweg\x03""gag\x04""gagg\x04""gags\x04""ganj\x04""ganh\x03""gad\x03""gal\x04""galg\x04""galm\x04""galb\x04""gals\x04""galt\x04""galp\x04""galh\x03""gam\x03""gab\x04""gabs\x03""gas\x04""gass\x04""gang\x03""gaj\x03""gac\x03""gak\x03""gah\x03""gae\x04""gaeg\x05""gaegg\x05""gaegs\x04""gaen\x05""gaenj\x05""gaenh\x04""gaed\x04""gael\x05""gaelg\x05""gaelm\x05""gaelb\x05""gaels\x05""gaelt\x05""gaelp\x05""gaelh\x04""gaem\x04""gaeb\x05""gaebs\x04""gaes\x05""gaess\x05""gaeng\x04""gaej\x04""gaec\x04""gaek\x04""gaet\x04""gaep\x04""gaeh\x04""gyag\x05""gyagg\x05""gyags\x04""gyan\x05""gyanj\x05""gyanh\x04""gyad\x04""gyal\x05""gyalg\x05""gyalm\x05""gyalb\x05""gyals\x05""gyalt\x05""gyalp\x05""gyalh\x04""gyam\x04""gyab\x05""gyabs\x04""gyas\x05""gyass\x05""gyang\x04""gyaj\x04""gyac\x04""gyak\x04""gyat\x04""gyap\x04""gyah\x04""gyae\x05""gyaeg\x06""gyaegg\x06""gyaegs\x05""gyaen\x06""gyaenj\x06""gyaenh\x05""gyaed\x05""gyael\x06""gyaelg\x06""gyaelm\x06""gyaelb\x06""gyaels\x06""gyaelt\x06""gyaelp\x06""gyaelh\x05""gyaem\x05""gyaeb\x06""gyaebs\x05""gyaes\x06""gyaess\x06""gyaeng\x05""gyaej\x05""gyaec\x05""gyaek\x05""gyaet\x05""gyaep\x05""gyaeh\x04""geog\x05""geogg\x05""geogs\x04""geon\x05""geonj\x05""geonh\x04""geod\x04""geol\x05""geolg\x05""geolm\x05""geolb\x05""geols\x05""geolt\x05""geolp\x05""geolh\x04""geom\x04""geob\x05""geobs\x04""geos\x05""geoss\x05""geong\x04""geoj\x04""geoc\x04""geok\x04""geot\x04""geop\x04""geoh\x03""geg\x04""gegg\x04""gegs\x04""genj\x04""genh\x03""ged\x03""gel\x04""gelg\x04""gelm\x04""gelb\x04""gels\x04""gelt\x04""gelp\x04""gelh\x03""gem\x03""geb\x04""gebs\x03""ges\x04""gess\x04""geng\x03""gej\x03""gec\x03""gek\x03""geh\x04""gyeo\x05""gyeog\x06""gyeogg\x06""gyeogs\x05""gyeon\x06""gyeonj\x06""gyeonh\x05""gyeod\x05""gyeol\x06""gyeolg\x06""gyeolm\x06""gyeolb\x06""gyeols\x06""gyeolt\x06""gyeolp\x06""gyeolh\x05""gyeom\x05""gyeob\x06""gyeobs\x05""gyeos\x06""gyeoss\x06""gyeong\x05""gyeoj\x05""gyeoc\x05""gyeok\x05""gyeot\x05""gyeop\x05""gyeoh\x04""gyeg\x05""gyegg\x05""gyegs\x04""gyen\x05""gyenj\x05""gyenh\x04""gyed\x04""gyel\x05""gyelg\x05""gyelm\x05""gyelb\x05""gyels\x05""gyelt\x05""gyelp\x05""gyelh\x04""gyem\x04""gyeb\x05""gyebs\x04""gyes\x05""gyess\x05""gyeng\x04""gyej\x04""gyec\x04""gyek\x04""gyet\x04""gyep\x04""gyeh\x03""gog\x04""gogg\x04""gogs\x03""gon\x04""gonj\x04""gonh\x03""god\x03""gol\x04""golg\x04""golm\x04""golb\x04""gols\x04""golt\x04""golp\x04""golh\x03""gom\x03""gob\x04""gobs\x03""gos\x04""goss\x04""gong\x03""goj\x03""goc\x03""gok\x03""goh\x04""gwag\x05""gwagg\x05""gwags\x04""gwan\x05""gwanj\x05""gwanh\x04""gwad\x04""gwal\x05""gwalg\x05""gwalm\x05""gwalb\x05""gwals\x05""gwalt\x05""gwalp\x05""gwalh\x04""gwam\x04""gwab\x05""gwabs\x04""gwas\x05""gwass\x05""gwang\x04""gwaj\x04""gwac\x04""gwak\x04""gwat\x04""gwap\x04""gwah\x04""gwae\x05""gwaeg\x06""gwaegg\x06""gwaegs\x05""gwaen\x06""gwaenj\x06""gwaenh\x05""gwaed\x05""gwael\x06""gwaelg\x06""gwaelm\x06""gwaelb\x06""gwaels\x06""gwaelt\x06""gwaelp\x06""gwaelh\x05""gwaem\x05""gwaeb\x06""gwaebs\x05""gwaes\x06""gwaess\x06""gwaeng\x05""gwaej\x05""gwaec\x05""gwaek\x05""gwaet\x05""gwaep\x05""gwaeh\x03""goe\x04""goeg\x05""goegg\x05""goegs\x04""goen\x05""goenj\x05""goenh\x04""goed\x04""goel\x05""goelg\x05""goelm\x05""goelb\x05""goels\x05""goelt\x05""goelp\x05""goelh\x04""goem\x04""goeb\x05""goebs\x04""goes\x05""goess\x05""goeng\x04""goej\x04""goec\x04""goek\x04""goet\x04""goep\x04""goeh\x04""gyog\x05""gyogg\x05""gyogs\x05""gyonj\x05""gyonh\x04""gyod\x04""gyol\x05""gyolg\x05""gyolm\x05""gyolb\x05""gyols\x05""gyolt\x05""gyolp\x05""gyolh\x04""gyom\x04""gyob\x05""gyobs\x04""gyos\x05""gyoss\x05""gyong\x04""gyoj\x04""gyoc\x04""gyok\x04""gyot\x04""gyop\x04""gyoh\x03""gug\x04""gugg\x04""gugs\x03""gun\x04""gunj\x04""gunh\x03""gud\x03""gul\x04""gulg\x04""gulm\x04""gulb\x04""guls\x04""gult\x04""gulp\x04""gulh\x03""gum\x03""gub\x04""gubs\x03""gus\x04""guss\x04""gung\x03""guj\x03""guc\x03""guk\x03""guh\x04""gweo\x05""gweog\x06""gweogg\x06""gweogs\x05""gweon\x06""gweonj\x06""gweonh\x05""gweod\x05""gweol\x06""gweolg\x06""gweolm\x06""gweolb\x06""gweols\x06""gweolt\x06""gweolp\x06""gweolh\x05""gweom\x05""gweob\x06""gweobs\x05""gweos\x06""gweoss\x06""gweong\x05""gweoj\x05""gweoc\x05""gweok\x05""gweot\x05""gweop\x05""gweoh\x04""gweg\x05""gwegg\x05""gwegs\x04""gwen\x05""gwenj\x05""gwenh\x04""gwed\x04""gwel\x05""gwelg\x05""gwelm\x05""gwelb\x05""gwels\x05""gwelt\x05""gwelp\x05""gwelh\x04""gwem\x04""gweb\x05""gwebs\x04""gwes\x05""gwess\x05""gweng\x04""gwej\x04""gwec\x04""gwek\x04""gwet\x04""gwep\x04""gweh\x04""gwig\x05""gwigg\x05""gwigs\x04""gwin\x05""gwinj\x05""gwinh\x04""gwid\x04""gwil\x05""gwilg\x05""gwilm\x05""gwilb\x05""gwils\x05""gwilt\x05""gwilp\x05""gwilh\x04""gwim\x04""gwib\x05""gwibs\x04""gwis\x05""gwiss\x05""gwing\x04""gwij\x04""gwic\x04""gwik\x04""gwit\x04""gwip\x04""gwih\x04""gyug\x05""gyugg\x05""gyugs\x04""gyun\x05""gyunj\x05""gyunh\x04""gyud\x04""gyul\x05""gyulg\x05""gyulm\x05""gyulb\x05""gyuls\x05""gyult\x05""gyulp\x05""gyulh\x04""gyum\x04""gyub\x05""gyubs\x04""gyus\x05""gyuss\x05""gyung\x04""gyuj\x04""gyuc\x04""gyuk\x04""gyut\x04""gyup\x04""gyuh\x03""geu\x04""geug\x05""geugg\x05""geugs\x04""geun\x05""geunj\x05""geunh\x04""geud\x04""geul\x05""geulg\x05""geulm\x05""geulb\x05""geuls\x05""geult\x05""geulp\x05""geulh\x04""geum\x04""geub\x05""geubs\x04""geus\x04""geuj\x04""geuc\x04""geuk\x04""geut\x04""geup\x04""geuh\x04""gyig\x05""gyigg\x05""gyigs\x04""gyin\x05""gyinj\x05""gyinh\x04""gyid\x04""gyil\x05""gyilg\x05""gyilm\x05""gyilb\x05""gyils\x05""gyilt\x05""gyilp\x05""gyilh\x04""gyim\x04""gyib\x05""gyibs\x04""gyis\x05""gyiss\x05""gying\x04""gyij\x04""gyic\x04""gyik\x04""gyit\x04""gyip\x04""gyih\x03""gig\x04""gigg\x04""gigs\x03""gin\x04""ginj\x04""ginh\x03""gid\x03""gil\x04""gilg\x04""gilm\x04""gilb\x04""gils\x04""gilt\x04""gilp\x04""gilh\x03""gim\x03""gib\x04""gibs\x03""gis\x04""giss\x04""ging\x03""gij\x03""gic\x03""gik\x03""gih\x04""ggag\x05""ggagg\x05""ggags\x04""ggan\x05""gganj\x05""gganh\x04""ggad\x04""ggal\x05""ggalg\x05""ggalm\x05""ggalb\x05""ggals\x05""ggalt\x05""ggalp\x05""ggalh\x04""ggam\x04""ggab\x05""ggabs\x04""ggas\x05""ggass\x05""ggang\x04""ggaj\x04""ggac\x04""ggak\x04""ggah\x04""ggae\x05""ggaeg\x06""ggaegg\x06""ggaegs\x05""ggaen\x06""ggaenj\x06""ggaenh\x05""ggaed\x05""ggael\x06""ggaelg\x06""ggaelm\x06""ggaelb\x06""ggaels\x06""ggaelt\x06""ggaelp\x06""ggaelh\x05""ggaem\x05""ggaeb\x06""ggaebs\x05""ggaes\x06""ggaess\x06""ggaeng\x05""ggaej\x05""ggaec\x05""ggaek\x05""ggaet\x05""ggaep\x05""ggaeh\x04""ggya\x05""ggyag\x06""ggyagg\x06""ggyags\x05""ggyan\x06""ggyanj\x06""ggyanh\x05""ggyad\x05""ggyal\x06""ggyalg\x06""ggyalm\x06""ggyalb\x06""ggyals\x06""ggyalt\x06""ggyalp\x06""ggyalh\x05""ggyam\x05""ggyab\x06""ggyabs\x05""ggyas\x06""ggyass\x06""ggyang\x05""ggyaj\x05""ggyac\x05""ggyak\x05""ggyat\x05""ggyap\x05""ggyah\x05""ggyae\x06""ggyaeg\x07""ggyaegg\x07""ggyaegs\x06""ggyaen\x07""ggyaenj\x07""ggyaenh\x06""ggyaed\x06""ggyael\x07""ggyaelg\x07""ggyaelm\x07""ggyaelb\x07""ggyaels\x07""ggyaelt\x07""ggyaelp\x07""ggyaelh\x06""ggyaem\x06""ggyaeb\x07""ggyaebs\x06""ggyaes\x07""ggyaess\x07""ggyaeng\x06""ggyaej\x06""ggyaec\x06""ggyaek\x06""ggyaet\x06""ggyaep\x06""ggyaeh\x04""ggeo\x05""ggeog\x06""ggeogg\x06""ggeogs\x05""ggeon\x06""ggeonj\x06""ggeonh\x05""ggeod\x05""ggeol\x06""ggeolg\x06""ggeolm\x06""ggeolb\x06""ggeols\x06""ggeolt\x06""ggeolp\x06""ggeolh\x05""ggeom\x05""ggeob\x06""ggeobs\x05""ggeos\x06""ggeoss\x06""ggeong\x05""ggeoj\x05""ggeoc\x05""ggeok\x05""ggeot\x05""ggeop\x05""ggeoh\x04""ggeg\x05""ggegg\x05""ggegs\x04""ggen\x05""ggenj\x05""ggenh\x04""gged\x04""ggel\x05""ggelg\x05""ggelm\x05""ggelb\x05""ggels\x05""ggelt\x05""ggelp\x05""ggelh\x04""ggem\x04""ggeb\x05""ggebs\x04""gges\x05""ggess\x05""ggeng\x04""ggej\x04""ggec\x04""ggek\x04""ggeh\x05""ggyeo\x06""ggyeog\x07""ggyeogg\x07""ggyeogs\x06""ggyeon\x07""ggyeonj\x07""ggyeonh\x06""ggyeod\x06""ggyeol\x07""ggyeolg\x07""ggyeolm\x07""ggyeolb\x07""ggyeols\x07""ggyeolt\x07""ggyeolp\x07""ggyeolh\x06""ggyeom\x06""ggyeob\x07""ggyeobs\x06""ggyeos\x07""ggyeoss\x07""ggyeong\x06""ggyeoj\x06""ggyeoc\x06""ggyeok\x06""ggyeot\x06""ggyeop\x06""ggyeoh\x04""ggye\x05""ggyeg\x06""ggyegg\x06""ggyegs\x05""ggyen\x06""ggyenj\x06""ggyenh\x05""ggyed\x05""ggyel\x06""ggyelg\x06""ggyelm\x06""ggyelb\x06""ggyels\x06""ggyelt\x06""ggyelp\x06""ggyelh\x05""ggyem\x05""ggyeb\x06""ggyebs\x05""ggyes\x06""ggyess\x06""ggyeng\x05""ggyej\x05""ggyec\x05""ggyek\x05""ggyet\x05""ggyep\x05""ggyeh\x04""ggog\x05""ggogg\x05""ggogs\x04""ggon\x05""ggonj\x05""ggonh\x04""ggod\x04""ggol\x05""ggolg\x05""ggolm\x05""ggolb\x05""ggols\x05""ggolt\x05""ggolp\x05""ggolh\x04""ggom\x04""ggob\x05""ggobs\x04""ggos\x05""ggoss\x05""ggong\x04""ggoj\x04""ggoc\x04""ggok\x04""ggoh\x05""ggwag\x06""ggwagg\x06""ggwags\x05""ggwan\x06""ggwanj\x06""ggwanh\x05""ggwad\x05""ggwal\x06""ggwalg\x06""ggwalm\x06""ggwalb\x06""ggwals\x06""ggwalt\x06""ggwalp\x06""ggwalh\x05""ggwam\x05""ggwab\x06""ggwabs\x05""ggwas\x06""ggwass\x06""ggwang\x05""ggwaj\x05""ggwac\x05""ggwak\x05""ggwat\x05""ggwap\x05""ggwah\x05""ggwae\x06""ggwaeg\x07""ggwaegg\x07""ggwaegs\x06""ggwaen\x07""ggwaenj\x07""ggwaenh\x06""ggwaed\x06""ggwael\x07""ggwaelg\x07""ggwaelm\x07""ggwaelb\x07""ggwaels\x07""ggwaelt\x07""ggwaelp\x07""ggwaelh\x06""ggwaem\x06""ggwaeb\x07""ggwaebs\x06""ggwaes\x07""ggwaess\x07""ggwaeng\x06""ggwaej\x06""ggwaec\x06""ggwaek\x06""ggwaet\x06""ggwaep\x06""ggwaeh\x04""ggoe\x05""ggoeg\x06""ggoegg\x06""ggoegs\x05""ggoen\x06""ggoenj\x06""ggoenh\x05""ggoed\x05""ggoel\x06""ggoelg\x06""ggoelm\x06""ggoelb\x06""ggoels\x06""ggoelt\x06""ggoelp\x06""ggoelh\x05""ggoem\x05""ggoeb\x06""ggoebs\x05""ggoes\x06""ggoess\x06""ggoeng\x05""ggoej\x05""ggoec\x05""ggoek\x05""ggoet\x05""ggoep\x05""ggoeh\x04""ggyo\x05""ggyog\x06""ggyogg\x06""ggyogs\x05""ggyon\x06""ggyonj\x06""ggyonh\x05""ggyod\x05""ggyol\x06""ggyolg\x06""ggyolm\x06""ggyolb\x06""ggyols\x06""ggyolt\x06""ggyolp\x06""ggyolh\x05""ggyom\x05""ggyob\x06""ggyobs\x05""ggyos\x06""ggyoss\x06""ggyong\x05""ggyoj\x05""ggyoc\x05""ggyok\x05""ggyot\x05""ggyop\x05""ggyoh\x04""ggug\x05""ggugg\x05""ggugs\x04""ggun\x05""ggunj\x05""ggunh\x04""ggud\x04""ggul\x05""ggulg\x05""ggulm\x05""ggulb\x05""gguls\x05""ggult\x05""ggulp\x05""ggulh\x04""ggum\x04""ggub\x05""ggubs\x04""ggus\x05""gguss\x05""ggung\x04""gguj\x04""gguc\x04""gguk\x04""gguh\x05""ggweo\x06""ggweog\x07""ggweogg\x07""ggweogs\x06""ggweon\x07""ggweonj\x07""ggweonh\x06""ggweod\x06""ggweol\x07""ggweolg\x07""ggweolm\x07""ggweolb\x07""ggweols\x07""ggweolt\x07""ggweolp\x07""ggweolh\x06""ggweom\x06""ggweob\x07""ggweobs\x06""ggweos\x07""ggweoss\x07""ggweong\x06""ggweoj\x06""ggweoc\x06""ggweok\x06""ggweot\x06""ggweop\x06""ggweoh\x05""ggweg\x06""ggwegg\x06""ggwegs\x05""ggwen\x06""ggwenj\x06""ggwenh\x05""ggwed\x05""ggwel\x06""ggwelg\x06""ggwelm\x06""ggwelb\x06""ggwels\x06""ggwelt\x06""ggwelp\x06""ggwelh\x05""ggwem\x05""ggweb\x06""ggwebs\x05""ggwes\x06""ggwess\x06""ggweng\x05""ggwej\x05""ggwec\x05""ggwek\x05""ggwet\x05""ggwep\x05""ggweh\x05""ggwig\x06""ggwigg\x06""ggwigs\x05""ggwin\x06""ggwinj\x06""ggwinh\x05""ggwid\x05""ggwil\x06""ggwilg\x06""ggwilm\x06""ggwilb\x06""ggwils\x06""ggwilt\x06""ggwilp\x06""ggwilh\x05""ggwim\x05""ggwib\x06""ggwibs\x05""ggwis\x06""ggwiss\x06""ggwing\x05""ggwij\x05""ggwic\x05""ggwik\x05""ggwit\x05""ggwip\x05""ggwih\x04""ggyu\x05""ggyug\x06""ggyugg\x06""ggyugs\x05""ggyun\x06""ggyunj\x06""ggyunh\x05""ggyud\x05""ggyul\x06""ggyulg\x06""ggyulm\x06""ggyulb\x06""ggyuls\x06""ggyult\x06""ggyulp\x06""ggyulh\x05""ggyum\x05""ggyub\x06""ggyubs\x05""ggyus\x06""ggyuss\x06""ggyung\x05""ggyuj\x05""ggyuc\x05""ggyuk\x05""ggyut\x05""ggyup\x05""ggyuh\x04""ggeu\x05""ggeug\x06""ggeugg\x06""ggeugs\x05""ggeun\x06""ggeunj\x06""ggeunh\x05""ggeud\x05""ggeul\x06""ggeulg\x06""ggeulm\x06""ggeulb\x06""ggeuls\x06""ggeult\x06""ggeulp\x06""ggeulh\x05""ggeum\x05""ggeub\x06""ggeubs\x05""ggeus\x06""ggeuss\x06""ggeung\x05""ggeuj\x05""ggeuc\x05""ggeuk\x05""ggeut\x05""ggeup\x05""ggeuh\x04""ggyi\x05""ggyig\x06""ggyigg\x06""ggyigs\x05""ggyin\x06""ggyinj\x06""ggyinh\x05""ggyid\x05""ggyil\x06""ggyilg\x06""ggyilm\x06""ggyilb\x06""ggyils\x06""ggyilt\x06""ggyilp\x06""ggyilh\x05""ggyim\x05""ggyib\x06""ggyibs\x05""ggyis\x06""ggyiss\x06""ggying\x05""ggyij\x05""ggyic\x05""ggyik\x05""ggyit\x05""ggyip\x05""ggyih\x04""ggig\x05""ggigg\x05""ggigs\x04""ggin\x05""gginj\x05""gginh\x04""ggid\x04""ggil\x05""ggilg\x05""ggilm\x05""ggilb\x05""ggils\x05""ggilt\x05""ggilp\x05""ggilh\x04""ggim\x04""ggib\x05""ggibs\x04""ggis\x05""ggiss\x05""gging\x04""ggij\x04""ggic\x04""ggik\x04""ggip\x04""ggih\x03""nag\x04""nagg\x04""nags\x03""nan\x04""nanj\x04""nanh\x03""nad\x03""nal\x04""nalg\x04""nalm\x04""nalb\x04""nals\x04""nalt\x04""nalp\x04""nalh\x03""nam\x03""nab\x04""nabs\x03""nas\x04""nass\x04""nang\x03""naj\x03""nac\x03""nak\x03""nat\x03""nae\x04""naeg\x05""naegg\x05""naegs\x04""naen\x05""naenj\x05""naenh\x04""naed\x04""nael\x05""naelg\x05""naelm\x05""naelb\x05""naels\x05""naelt\x05""naelp\x05""naelh\x04""naem\x04""naeb\x05""naebs\x04""naes\x05""naess\x05""naeng\x04""naej\x04""naec\x04""naek\x04""naet\x04""naep\x04""naeh\x04""nyag\x05""nyagg\x05""nyags\x05""nyanj\x05""nyanh\x04""nyad\x04""nyal\x05""nyalg\x05""nyalm\x05""nyalb\x05""nyals\x05""nyalt\x05""nyalp\x05""nyalh\x04""nyam\x04""nyab\x05""nyabs\x04""nyas\x05""nyass\x05""nyang\x04""nyaj\x04""nyac\x04""nyak\x04""nyat\x04""nyap\x04""nyah\x04""nyae\x05""nyaeg\x06""nyaegg\x06""nyaegs\x05""nyaen\x06""nyaenj\x06""nyaenh\x05""nyaed\x05""nyael\x06""nyaelg\x06""nyaelm\x06""nyaelb\x06""nyaels\x06""nyaelt\x06""nyaelp\x06""nyaelh\x05""nyaem\x05""nyaeb\x06""nyaebs\x05""nyaes\x06""nyaess\x06""nyaeng\x05""nyaej\x05""nyaec\x05""nyaek\x05""nyaet\x05""nyaep\x05""nyaeh\x03""neo\x04""neog\x05""neogg\x05""neogs\x04""neon\x05""neonj\x05""neonh\x04""neod\x04""neol\x05""neolg\x05""neolm\x05""neolb\x05""neols\x05""neolt\x05""neolp\x05""neolh\x04""neom\x04""neob\x05""neobs\x04""neos\x05""neoss\x05""neong\x04""neoj\x04""neoc\x04""neok\x04""neot\x04""neop\x04""neoh\x03""neg\x04""negg\x04""negs\x03""nen\x04""nenj\x04""nenh\x03""ned\x03""nel\x04""nelg\x04""nelm\x04""nelb\x04""nels\x04""nelt\x04""nelp\x04""nelh\x03""nem\x03""neb\x04""nebs\x03""nes\x04""ness\x04""neng\x03""nej\x03""nec\x03""nek\x03""net\x03""neh\x04""nyeo\x05""nyeog\x06""nyeogg\x06""nyeogs\x05""nyeon\x06""nyeonj\x06""nyeonh\x05""nyeod\x05""nyeol\x06""nyeolg\x06""nyeolm\x06""nyeolb\x06""nyeols\x06""nyeolt\x06""nyeolp\x06""nyeolh\x05""nyeom\x05""nyeob\x06""nyeobs\x05""nyeos\x06""nyeoss\x06""nyeong\x05""nyeoj\x05""nyeoc\x05""nyeok\x05""nyeot\x05""nyeop\x05""nyeoh\x04""nyeg\x05""nyegg\x05""nyegs\x04""nyen\x05""nyenj\x05""nyenh\x04""nyed\x04""nyel\x05""nyelg\x05""nyelm\x05""nyelb\x05""nyels\x05""nyelt\x05""nyelp\x05""nyelh\x04""nyem\x04""nyeb\x05""nyebs\x04""nyes\x05""nyess\x05""nyeng\x04""nyej\x04""nyec\x04""nyek\x04""nyet\x04""nyep\x04""nyeh\x03""nog\x04""nogg\x04""nogs\x03""non\x04""nonj\x04""nonh\x03""nod\x03""nol\x04""nolg\x04""nolm\x04""nolb\x04""nols\x04""nolt\x04""nolp\x04""nolh\x03""nom\x03""nob\x04""nobs\x03""nos\x04""noss\x04""nong\x03""noj\x03""noc\x03""nok\x03""noh\x04""nwag\x05""nwagg\x05""nwags\x04""nwan\x05""nwanj\x05""nwanh\x04""nwad\x04""nwal\x05""nwalg\x05""nwalm\x05""nwalb\x05""nwals\x05""nwalt\x05""nwalp\x05""nwalh\x04""nwam\x04""nwab\x05""nwabs\x04""nwas\x05""nwass\x05""nwang\x04""nwaj\x04""nwac\x04""nwak\x04""nwat\x04""nwap\x04""nwah\x04""nwae\x05""nwaeg\x06""nwaegg\x06""nwaegs\x05""nwaen\x06""nwaenj\x06""nwaenh\x05""nwaed\x05""nwael\x06""nwaelg\x06""nwaelm\x06""nwaelb\x06""nwaels\x06""nwaelt\x06""nwaelp\x06""nwaelh\x05""nwaem\x05""nwaeb\x06""nwaebs\x05""nwaes\x06""nwaess\x06""nwaeng\x05""nwaej\x05""nwaec\x05""nwaek\x05""nwaet\x05""nwaep\x05""nwaeh\x03""noe\x04""noeg\x05""noegg\x05""noegs\x04""noen\x05""noenj\x05""noenh\x04""noed\x04""noel\x05""noelg\x05""noelm\x05""noelb\x05""noels\x05""noelt\x05""noelp\x05""noelh\x04""noem\x04""noeb\x05""noebs\x04""noes\x05""noess\x05""noeng\x04""noej\x04""noec\x04""noek\x04""noet\x04""noep\x04""noeh\x04""nyog\x05""nyogg\x05""nyogs\x04""nyon\x05""nyonj\x05""nyonh\x04""nyod\x04""nyol\x05""nyolg\x05""nyolm\x05""nyolb\x05""nyols\x05""nyolt\x05""nyolp\x05""nyolh\x04""nyom\x04""nyob\x05""nyobs\x04""nyos\x05""nyoss\x05""nyong\x04""nyoj\x04""nyoc\x04""nyok\x04""nyoh\x03""nug\x04""nugg\x04""nugs\x03""nun\x04""nunj\x04""nunh\x03""nud\x03""nul\x04""nulg\x04""nulm\x04""nulb\x04""nuls\x04""nult\x04""nulp\x04""nulh\x03""nub\x04""nubs\x03""nus\x04""nuss\x04""nung\x03""nuj\x03""nuc\x03""nuk\x03""nuh\x04""nweo\x05""nweog\x06""nweogg\x06""nweogs\x05""nweon\x06""nweonj\x06""nweonh\x05""nweod\x05""nweol\x06""nweolg\x06""nweolm\x06""nweolb\x06""nweols\x06""nweolt\x06""nweolp\x06""nweolh\x05""nweom\x05""nweob\x06""nweobs\x05""nweos\x06""nweoss\x06""nweong\x05""nweoj\x05""nweoc\x05""nweok\x05""nweot\x05""nweop\x05""nweoh\x04""nweg\x05""nwegg\x05""nwegs\x04""nwen\x05""nwenj\x05""nwenh\x04""nwed\x04""nwel\x05""nwelg\x05""nwelm\x05""nwelb\x05""nwels\x05""nwelt\x05""nwelp\x05""nwelh\x04""nwem\x04""nweb\x05""nwebs\x04""nwes\x05""nwess\x05""nweng\x04""nwej\x04""nwec\x04""nwek\x04""nwet\x04""nwep\x04""nweh\x03""nwi\x04""nwig\x05""nwigg\x05""nwigs\x04""nwin\x05""nwinj\x05""nwinh\x04""nwid\x04""nwil\x05""nwilg\x05""nwilm\x05""nwilb\x05""nwils\x05""nwilt\x05""nwilp\x05""nwilh\x04""nwim\x04""nwib\x05""nwibs\x04""nwis\x05""nwiss\x05""nwing\x04""nwij\x04""nwic\x04""nwik\x04""nwit\x04""nwip\x04""nwih\x04""nyug\x05""nyugg\x05""nyugs\x04""nyun\x05""nyunj\x05""nyunh\x04""nyud\x04""nyul\x05""nyulg\x05""nyulm\x05""nyulb\x05""nyuls\x05""nyult\x05""nyulp\x05""nyulh\x04""nyum\x04""nyub\x05""nyubs\x04""nyus\x05""nyuss\x05""nyung\x04""nyuj\x04""nyuc\x04""nyuk\x04""nyuh\x03""neu\x04""neug\x05""neugg\x05""neugs\x04""neun\x05""neunj\x05""neunh\x04""neud\x04""neul\x05""neulg\x05""neulm\x05""neulb\x05""neuls\x05""neult\x05""neulp\x05""neulh\x04""neum\x04""neub\x05""neubs\x04""neus\x05""neuss\x05""neung\x04""neuj\x04""neuc\x04""neuk\x04""neut\x04""neup\x04""neuh\x04""nyig\x05""nyigg\x05""nyigs\x04""nyin\x05""nyinj\x05""nyinh\x04""nyid\x04""nyil\x05""nyilg\x05""nyilm\x05""nyilb\x05""nyils\x05""nyilt\x05""nyilp\x05""nyilh\x04""nyim\x04""nyib\x05""nyibs\x04""nyis\x05""nyiss\x05""nying\x04""nyij\x04""nyic\x04""nyik\x04""nyih\x03""nig\x04""nigg\x04""nigs\x03""nin\x04""ninj\x04""ninh\x03""nid\x03""nil\x04""nilg\x04""nilm\x04""nilb\x04""nils\x04""nilt\x04""nilp\x04""nilh\x03""nim\x03""nib\x04""nibs\x03""nis\x04""niss\x04""ning\x03""nij\x03""nic\x03""nik\x03""nih\x03""dag\x04""dagg\x04""dags\x03""dan\x04""danj\x04""danh\x03""dad\x04""dalg\x04""dalm\x04""dalb\x04""dals\x04""dalt\x04""dalp\x04""dalh\x03""dam\x04""dabs\x03""das\x04""dass\x04""dang\x03""daj\x03""dac\x03""dak\x03""dah\x03""dae\x04""daeg\x05""daegg\x05""daegs\x04""daen\x05""daenj\x05""daenh\x04""daed\x04""dael\x05""daelg\x05""daelm\x05""daelb\x05""daels\x05""daelt\x05""daelp\x05""daelh\x04""daem\x04""daeb\x05""daebs\x04""daes\x05""daess\x05""daeng\x04""daej\x04""daec\x04""daek\x04""daet\x04""daep\x04""daeh\x03""dya\x04""dyag\x05""dyagg\x05""dyags\x04""dyan\x05""dyanj\x05""dyanh\x04""dyad\x04""dyal\x05""dyalg\x05""dyalm\x05""dyalb\x05""dyals\x05""dyalt\x05""dyalp\x05""dyalh\x04""dyam\x04""dyab\x05""dyabs\x04""dyas\x05""dyass\x05""dyang\x04""dyaj\x04""dyac\x04""dyak\x04""dyat\x04""dyap\x04""dyah\x04""dyae\x05""dyaeg\x06""dyaegg\x06""dyaegs\x05""dyaen\x06""dyaenj\x06""dyaenh\x05""dyaed\x05""dyael\x06""dyaelg\x06""dyaelm\x06""dyaelb\x06""dyaels\x06""dyaelt\x06""dyaelp\x06""dyaelh\x05""dyaem\x05""dyaeb\x06""dyaebs\x05""dyaes\x06""dyaess\x06""dyaeng\x05""dyaej\x05""dyaec\x05""dyaek\x05""dyaet\x05""dyaep\x05""dyaeh\x03""deo\x04""deog\x05""deogg\x05""deogs\x04""deon\x05""deonj\x05""deonh\x04""deod\x04""deol\x05""deolg\x05""deolm\x05""deolb\x05""deols\x05""deolt\x05""deolp\x05""deolh\x04""deom\x04""deob\x05""deobs\x04""deos\x05""deoss\x05""deong\x04""deoj\x04""deoc\x04""deok\x04""deot\x04""deop\x04""deoh\x04""degg\x04""degs\x03""den\x04""denj\x04""denh\x03""ded\x03""del\x04""delg\x04""delm\x04""delb\x04""dels\x04""delt\x04""delp\x04""delh\x03""dem\x03""deb\x04""debs\x03""des\x04""dess\x04""deng\x03""dej\x03""dec\x03""dek\x03""det\x03""deh\x04""dyeo\x05""dyeog\x06""dyeogg\x06""dyeogs\x05""dyeon\x06""dyeonj\x06""dyeonh\x05""dyeod\x05""dyeol\x06""dyeolg\x06""dyeolm\x06""dyeolb\x06""dyeols\x06""dyeolt\x06""dyeolp\x06""dyeolh\x05""dyeom\x05""dyeob\x06""dyeobs\x05""dyeos\x06""dyeoss\x06""dyeong\x05""dyeoj\x05""dyeoc\x05""dyeok\x05""dyeot\x05""dyeop\x05""dyeoh\x03""dye\x04""dyeg\x05""dyegg\x05""dyegs\x04""dyen\x05""dyenj\x05""dyenh\x04""dyed\x04""dyel\x05""dyelg\x05""dyelm\x05""dyelb\x05""dyels\x05""dyelt\x05""dyelp\x05""dyelh\x04""dyem\x04""dyeb\x05""dyebs\x04""dyes\x05""dyess\x05""dyeng\x04""dyej\x04""dyec\x04""dyek\x04""dyet\x04""dyep\x04""dyeh\x03""dog\x04""dogg\x04""dogs\x04""donj\x04""donh\x03""dod\x03""dol\x04""dolg\x04""dolm\x04""dolb\x04""dols\x04""dolt\x04""dolp\x04""dolh\x03""dom\x03""dob\x04""dobs\x03""dos\x04""doss\x04""dong\x03""doj\x03""doc\x03""dok\x03""doh\x04""dwag\x05""dwagg\x05""dwags\x04""dwan\x05""dwanj\x05""dwanh\x04""dwad\x04""dwal\x05""dwalg\x05""dwalm\x05""dwalb\x05""dwals\x05""dwalt\x05""dwalp\x05""dwalh\x04""dwam\x04""dwab\x05""dwabs\x04""dwas\x05""dwass\x05""dwang\x04""dwaj\x04""dwac\x04""dwak\x04""dwat\x04""dwap\x04""dwah\x04""dwae\x05""dwaeg\x06""dwaegg\x06""dwaegs"
-#define UTFASCIILOOKUP {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,1,2,2,1,1,2,2,2,2,4,6,8,10,12,14,16,18,20,22,2,2,1,1,1,1,1,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,1,2,1,1,1,1,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,28,76,1,72,1,79,1,28,24,1,1,2,58,2,82,86,8,10,1,64,54,1,2,6,52,1,88,91,94,1,24,24,24,24,24,24,97,28,32,32,32,32,40,40,40,40,30,50,52,52,52,52,52,70,52,64,64,64,64,64,100,79,24,24,24,24,24,24,97,28,32,32,32,32,40,40,40,40,30,50,52,52,52,52,52,2,52,64,64,64,64,72,100,72,24,24,24,24,24,24,28,28,28,28,28,28,28,28,30,30,30,30,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,38,38,38,38,40,40,40,40,40,40,40,40,40,40,103,103,42,42,44,44,44,46,46,46,46,46,46,46,46,46,46,50,50,50,50,50,50,50,106,106,52,52,52,52,52,52,109,109,58,58,58,58,58,58,60,60,60,60,60,60,60,60,62,62,62,62,62,62,64,64,64,64,64,64,64,64,64,64,64,64,68,68,72,72,72,74,74,74,74,74,74,60,26,26,26,26,16,16,52,28,28,30,30,30,30,30,10,1,32,34,34,36,36,112,40,40,44,44,46,46,68,50,50,52,52,52,115,115,54,54,118,8,8,121,121,62,62,62,62,64,64,72,66,72,72,74,74,124,124,124,124,8,14,14,127,68,1,1,1,1,130,130,130,133,133,133,136,136,136,24,24,40,40,52,52,64,64,64,64,64,64,64,64,64,64,1,24,24,24,24,97,97,36,36,36,36,44,44,52,52,52,52,124,124,42,130,30,130,36,36,112,68,50,50,24,24,97,97,52,52,24,24,24,24,32,32,32,32,40,40,40,40,52,52,52,52,58,58,58,58,64,64,64,64,60,60,62,62,72,72,38,38,50,30,139,139,74,74,24,24,32,32,52,52,52,52,52,52,52,52,72,72,46,50,62,42,142,145,24,28,28,46,62,60,74,148,148,26,64,66,32,32,42,42,56,56,58,58,72,72,24,24,24,26,52,28,30,30,32,1,1,32,32,32,32,42,36,36,36,36,64,72,38,38,40,40,40,46,46,46,153,68,68,48,50,50,50,52,109,52,34,58,58,58,58,58,58,58,58,58,60,60,42,60,60,62,62,64,64,66,1,68,72,72,74,74,74,74,1,1,1,28,1,26,32,36,38,42,44,46,56,1,1,130,130,130,127,127,156,159,162,153,165,1,38,38,44,38,42,58,58,58,58,68,72,1,1,1,1,1,1,1,1,1,1,1,1,66,1,66,1,2,2,2,2,1,2,2,2,2,1,1,1,66,1,2,66,2,1,2,1,1,58,70,36,46,60,70,1,168,179,184,188,193,203,207,66,1,1,212,217,220,225,231,236,236,236,243,249,256,262,256,262,266,266,220,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,272,272,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,272,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,24,32,40,52,64,28,30,38,48,58,62,66,70,278,278,283,283,1,2,289,289,0,0,1,0,0,0,1,0,0,0,0,0,1,1,24,2,32,32,40,0,52,0,64,52,40,24,26,36,30,32,74,32,100,40,44,46,48,50,300,52,54,58,0,60,62,64,303,306,76,52,40,64,24,32,32,40,64,24,26,36,30,32,74,32,100,40,44,46,48,50,70,52,54,58,60,60,62,64,303,306,76,52,40,64,52,64,52,0,26,100,64,64,64,303,54,2,309,309,315,315,68,68,56,56,318,318,121,121,34,34,306,306,38,38,36,36,321,321,324,324,44,58,28,42,0,0,0,327,327,0,331,331,0,0,0,0,335,338,341,344,335,130,40,347,42,133,136,350,354,40,64,357,24,26,66,36,30,335,124,74,40,40,44,46,48,50,52,54,58,60,62,64,34,306,127,321,121,361,366,72,1,32,371,374,24,26,66,36,30,335,124,74,40,40,44,46,48,50,52,54,58,60,62,64,34,306,127,321,121,361,366,72,1,32,371,374,335,338,341,344,335,130,40,347,42,133,136,350,354,40,64,357,52,52,32,32,335,335,32,32,335,335,52,52,338,338,300,300,76,76,34,34,72,72,72,72,64,64,52,52,52,52,380,380,56,56,383,1,1,1,1,0,388,395,40,40,1,1,58,58,36,36,36,36,36,36,124,124,74,74,44,44,44,44,44,44,44,44,50,50,106,106,54,54,306,306,60,60,62,62,64,64,64,64,306,306,403,403,321,321,321,321,38,38,321,321,321,321,1,124,124,44,44,407,407,50,50,410,410,321,321,413,413,416,24,24,24,24,97,97,335,335,1,1,1,1,124,124,74,74,130,130,40,40,40,40,52,52,52,52,52,52,32,32,64,64,64,64,64,64,321,321,425,425,72,72,425,425,429,429,429,429,432,432,435,435,439,439,443,443,448,448,452,452,456,456,460,460,464,464,407,407,467,467,471,471,475,475,479,479,482,482,485,485,407,407,410,410,0,0,0,0,0,0,0,0,0,0,0,0,0,24,26,36,30,32,74,32,32,62,124,40,46,306,127,44,38,130,377,321,48,72,50,121,52,321,54,42,491,60,66,62,58,127,68,54,44,52,34,0,0,220,0,0,0,0,0,0,0,24,26,36,30,32,74,32,32,62,124,40,46,306,127,44,38,130,377,321,48,72,50,121,52,321,54,42,491,60,66,62,58,127,68,54,44,52,34,494,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,24,52,40,32,32,24,24,52,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,497,26,36,30,38,66,74,306,62,72,44,44,46,48,48,50,50,60,502,54,54,127,127,56,58,121,62,0,0,0,0,0,66,507,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,510,0,516,0,0,0,0,0,0,0,0,0,0,0,522,528,540,547,559,564,0,497,0,0,0,0,0,0,0,0,0,0,574,24,497,68,497,72,497,26,580,62,100,42,38,306,30,584,58,74,60,121,60,30,62,74,587,36,591,591,597,597,597,0,34,56,44,46,48,50,38,68,497,72,603,606,609,24,64,40,68,0,0,0,0,0,0,0,0,66,612,618,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,622,626,497,497,497,497,179,179,179,64,179,630,633,26,62,62,54,100,637,640,38,644,647,38,321,650,654,30,30,657,584,660,30,30,30,664,58,58,58,58,58,58,42,58,60,60,60,60,60,62,377,34,34,34,66,34,303,56,56,306,44,44,44,106,44,36,36,50,36,36,36,46,46,46,46,50,50,50,50,50,38,321,667,38,38,580,68,109,109,64,670,670,68,66,72,72,72,68,32,673,72,72,0,97,677,626,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,681,685,0,6,8,10,12,14,16,18,20,22,121,30,377,689,689,696,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,700,700,26,36,36,30,30,38,68,74,38,62,62,72,706,44,46,48,50,60,60,32,54,54,60,56,58,121,62,709,709,709,24,24,24,24,24,24,32,32,32,32,40,40,64,64,64,52,0,0,0,0,0,70,56,0,0,0,0,0,0,717,717,717,622,622,622,622,622,622,622,640,640,681,681,685,725,587,587,587,730,730,591,591,591,734,734,739,739,739,744,685,685,725,640,640,725,685,640,497,497,597,597,597,748,748,673,673,640,725,725,752,38,121,50,58,26,46,44,756,66,48,34,584,100,46,36,644,60,30,74,62,72,54,42,321,630,762,306,100,74,121,60,30,62,74,765,377,56,68,24,770,40,773,64,776,32,779,52,782,0,785,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,24,773,40,32,64,776,52,789,50,800,803,806,809,812,816,819,822,826,829,833,836,839,842,845,848,842,429,852,855,848,858,858,858,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,863,875,884,24,24,770,40,892,64,895,58,46,898,32,32,905,898,52,52,908,836,911,915,918,922,926,812,809,929,848,933,937,942,946,951,806,955,816,959,842,963,803,968,800,972,845,855,819,822,839,976,980,985,988,992,826,429,0,0,996,1002,770,40,892,64,895,58,664,898,32,32,905,898,52,52,908,1011,0,0,0,1018,1025,0,0,0,0,0,479,1034,1039,1044,1047,471,833,1053,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,179,898,0,0,0,0,0,0,0,0,1060,1064,148,1068,1073,0,863,875,884,0,24,770,40,892,64,895,58,46,0,0,32,905,0,0,52,908,836,911,915,918,922,926,812,809,929,848,933,937,942,946,951,806,955,816,959,842,0,803,968,800,972,845,855,819,0,839,0,0,0,988,992,826,429,0,0,996,1002,770,40,892,64,895,58,664,0,0,32,905,0,0,52,908,1011,1077,0,0,0,0,0,0,0,0,0,0,0,0,0,822,471,0,1053,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,819,819,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,46,410,32,32,905,1084,52,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,1093,54,303,26,637,48,72,58,664,46,46,1097,66,121,79,60,38,0,0,996,0,770,40,892,64,895,58,664,410,32,32,905,1084,52,52,908,1011,0,0,1101,1105,0,0,0,0,0,0,56,1111,1115,74,1119,491,34,1124,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,1127,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,664,0,0,32,905,0,0,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,637,48,72,58,0,46,976,0,985,121,79,60,38,0,0,996,1002,770,40,892,64,895,58,664,898,0,32,905,898,0,52,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,491,0,1124,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,58,58,1134,1134,0,0,0,0,0,0,0,0,0,0,0,0,0,863,50,884,0,24,770,40,892,64,895,58,46,0,0,773,905,0,0,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,1137,48,72,58,0,46,1057,0,66,121,992,60,38,0,0,996,1002,770,40,892,64,895,58,664,0,0,773,905,0,0,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,1111,1115,74,664,471,34,1053,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,50,38,0,0,1140,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,0,410,32,32,905,1084,52,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,963,54,303,26,637,48,855,58,822,46,1057,980,66,121,79,60,38,0,0,0,0,770,40,892,64,895,58,664,410,32,32,905,1084,52,52,908,1011,0,0,1101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,46,0,32,32,905,0,52,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,637,48,72,58,822,46,1057,0,985,121,79,60,38,0,0,0,1002,770,40,892,64,895,58,664,0,32,32,905,0,52,52,908,1011,0,0,0,0,0,0,0,0,0,0,1144,1148,0,0,664,491,0,1124,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,6,8,10,6,8,10,1152,0,0,50,38,0,24,770,40,892,64,895,58,46,0,32,773,905,0,52,776,908,44,911,915,918,106,28,812,42,929,644,630,937,942,946,1090,62,955,816,959,50,1093,54,968,800,972,48,72,58,664,46,1057,1097,66,988,79,60,38,0,0,996,1002,770,40,892,64,895,58,664,0,32,773,905,0,52,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,833,0,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,1158,1170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,46,0,32,773,905,0,52,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,637,48,72,58,664,46,1057,980,66,121,79,60,38,0,0,0,1002,770,40,892,64,895,58,664,0,32,773,905,0,52,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,1182,1182,1182,1182,1182,1182,0,0,50,38,0,24,770,40,892,64,895,58,46,1189,32,773,905,1198,52,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,1205,54,303,26,637,48,72,58,664,46,1057,1205,66,121,79,60,38,1216,1224,0,1232,770,40,892,64,895,58,664,1240,32,773,905,0,52,776,908,0,0,1250,1261,1267,1261,1267,1261,0,1267,0,1272,1285,1267,1293,1285,1285,1097,1299,664,1057,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1267,1267,0,0,0,0,0,0,0,0,0,0,0,0,0,1311,50,38,1314,24,770,40,892,64,895,58,46,1318,32,773,905,1321,52,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,1325,54,303,26,637,48,72,58,664,46,1057,1097,66,121,79,60,38,1328,0,0,0,770,40,892,64,895,58,905,1336,32,773,905,1348,52,776,908,1352,1361,1370,0,6,8,10,12,14,16,18,20,22,1378,1389,0,0,0,0,664,1057,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1311,50,38,1314,24,770,97,1396,40,892,64,895,58,664,46,1057,32,773,905,52,776,908,1321,0,1400,44,306,36,377,106,1403,28,321,42,1087,644,1407,1411,630,633,654,660,1090,1415,62,100,30,584,50,770,1420,54,303,26,637,48,1423,72,58,1426,46,0,0,66,121,79,60,38,1057,34,0,0,0,0,0,0,0,0,770,97,1396,40,892,64,14,895,18,58,32,773,905,52,776,908,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,1057,0,0,0,0,0,0,0,0,0,0,0,0,1429,44,306,306,306,306,306,106,650,321,321,321,321,72,30,62,100,100,100,50,30,62,100,100,100,50,26,54,303,34,303,34,303,48,72,58,58,46,46,68,60,60,60,38,46,1432,38,1432,24,24,770,1437,40,892,1440,1443,64,895,0,0,0,0,1447,637,32,97,52,905,905,1451,812,809,0,848,933,937,942,48,951,806,955,816,959,842,803,968,800,972,845,1144,1454,1148,1459,852,1464,1044,1468,855,819,839,988,992,826,429,24,1471,1476,1487,822,0,0,0,0,770,40,892,64,895,58,664,46,1057,32,773,52,776,1491,1496,40,44,306,1501,306,0,1505,106,321,1509,60,1514,0,644,0,0,836,911,915,918,30,38,100,100,0,50,26,54,303,34,303,34,955,48,72,58,803,46,800,68,845,1144,60,38,1459,852,1464,1044,24,855,770,1437,40,892,72,1124,64,895,1476,52,46,644,0,0,32,1518,52,1521,905,0,0,0,0,0,0,0,0,48,1524,1524,0,0,0,0,0,0,0,0,0,0,0,0,1529,1532,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1101,911,915,918,922,926,812,809,929,848,1535,933,937,942,946,951,806,955,816,959,842,803,968,800,972,845,855,819,839,852,826,429,976,24,1540,40,892,64,895,32,1545,52,908,1549,770,40,892,64,895,32,905,1545,1545,32,875,618,884,1011,1554,1559,1559,1559,1559,1566,44,306,36,377,106,28,321,42,20,644,630,633,654,660,1090,62,100,30,584,50,54,303,26,637,48,127,350,130,357,68,124,74,1545,72,58,46,121,1572,60,38,24,1576,58,1580,1580,1580,1588,1588,1588,770,40,892,64,895,58,664,46,1057,32,773,52,776,48,38,40,892,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1596,1596,44,306,36,377,106,28,321,42,20,644,630,633,654,660,1090,62,100,30,584,50,54,303,26,637,48,127,350,130,357,68,124,74,1602,72,58,46,121,79,60,38,24,1576,68,72,58,1606,70,1611,1616,1620,1623,482,1627,1631,0,0,0,0,0,0,0,0,0,0,603,1635,1639,1643,410,1647,1651,1655,609,1659,1663,1667,1671,1084,1675,1679,1602,331,1684,606,1688,1693,1698,1703,1707,1712,1717,1721,1725,1606,1729,1611,1616,1620,1623,482,1627,1631,1733,1736,1739,1639,587,0,1745,0,0,0,44,306,36,377,106,28,321,42,1087,644,1754,630,633,654,660,1090,630,100,30,584,50,54,303,26,637,48,72,58,46,68,60,38,1057,24,0,40,892,64,895,32,0,52,908,0,770,40,892,64,895,32,905,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,58,46,32,121,79,58,664,46,1057,58,664,46,1057,0,0,0,0,0,0,1758,24,97,855,475,1765,32,1768,1772,52,852,1775,109,1318,64,1779,482,1783,670,1786,347,40,1789,1793,1797,1802,1808,1813,1818,1824,1830,1836,1841,1845,1850,1854,1858,1864,1871,1878,1883,1888,1892,1897,1905,1910,1914,1919,1925,1930,1937,1943,1948,1953,1958,1964,1969,1973,1978,1982,1986,1991,1999,2005,24,26,36,30,32,66,74,62,40,44,46,48,50,52,54,124,58,60,62,64,54,44,36,56,121,321,28,74,28,321,70,42,38,32,72,68,2014,109,2017,2030,2041,2055,2069,2083,2096,2114,2126,2139,24,26,36,30,32,66,74,62,40,44,46,48,50,52,54,124,58,60,62,64,54,44,36,56,121,321,28,74,28,321,70,42,38,32,72,68,2014,109,34,2158,2170,2182,0,0,0,0,0,0,36,2194,50,30,654,58,48,26,1137,60,79,2197,42,2201,28,44,62,54,38,106,1090,1420,2204,2207,2210,664,491,2210,1423,2213,2216,2219,2222,2226,2229,2233,2237,2241,2245,2249,2252,2255,2258,2219,2261,2265,2268,2271,2274,2277,2280,2283,2287,60,2291,2294,2297,315,318,121,2300,2305,327,2309,74,36,30,48,26,60,74,2314,42,28,62,54,50,42,0,0,2318,2322,2326,321,2329,2334,2338,2341,762,56,2344,2349,2355,2361,0,0,800,24,97,855,475,1765,32,1768,1772,52,852,1775,109,1318,64,1779,482,1783,670,1786,347,40,1789,1793,1797,1802,1808,1813,1818,1824,1830,1836,1841,1845,1850,1854,1858,1864,1871,1878,1883,1888,1892,1897,1905,1910,1914,1919,1925,1930,1937,1943,1948,1953,1958,1964,1969,1973,1978,1982,1986,1982,64,2366,1910,2371,895,770,773,32,52,852,36,2194,2375,50,136,2378,30,46,2381,2384,2387,162,2390,2393,2396,48,26,2226,60,79,106,42,28,44,62,54,38,2399,2402,106,1420,2406,2409,2412,2207,2415,2418,2422,2425,2428,1057,2432,2436,2440,2444,2448,2452,153,2456,2459,2462,2465,1423,2468,2471,2475,2478,2481,2213,2484,2258,303,2341,2265,2271,2487,2280,74,36,79,1318,306,50,2406,2409,2338,2341,1529,2490,1532,2493,56,2496,2500,2505,2510,2514,2518,429,2523,2526,2529,2533,1620,2537,2540,839,2544,2547,2197,2550,2554,1426,2557,2561,2565,2569,2573,2578,2583,2587,2591,845,2596,2599,2602,2606,2610,2613,2616,2222,2620,2624,2628,2633,2638,2642,2646,819,2651,2654,2657,2661,2665,2668,2671,826,2675,2678,2681,2685,2689,1325,2692,988,2696,2700,2704,2300,2305,327,2309,479,2709,2712,2715,2719,2723,2726,2729,2734,2738,2741,2745,2750,2755,2759,2762,2318,2322,2766,2770,2329,2334,2775,2779,2783,2788,2344,2349,2355,2361,0,0,800,2792,2795,2798,2802,2806,2809,2812,985,2816,2819,2822,2826,2830,2833,2836,806,2840,324,2843,2847,2851,2854,2857,926,2861,2864,2867,2871,2875,2878,2881,2885,2888,2891,2894,2898,2902,2905,2908,2912,2916,2920,2924,2929,2934,2938,2943,842,2947,2950,785,2953,2957,1400,2960,848,2964,2968,2972,2977,2982,2986,2990,24,32,40,52,64,66,915,836,836,2995,2998,3001,3005,3009,1311,2526,3012,2523,3016,3020,3025,3030,1426,2544,3034,3038,3042,3046,3051,3056,3060,3064,3068,2957,3073,3078,3084,3090,3095,3099,852,3103,1783,3106,3110,482,3114,2678,1325,2675,3117,816,806,432,2851,3120,1044,3123,3126,3129,3133,464,3137,3140,1464,3144,3148,3152,3157,3162,3166,3170,855,670,347,3175,3179,1772,1318,855,816,3183,3120,3186,3190,432,3194,3197,942,3201,2496,2500,2505,2510,2514,2518,809,3205,3208,3211,3215,3219,3222,2540,915,3225,3228,3231,3235,3239,3242,0,3245,0,3249,3253,3258,3263,0,0,1060,3267,3271,3275,3280,3285,3289,0,955,3293,3297,3301,3306,3311,1321,3315,812,3320,3324,3328,3333,3338,3342,3346,968,3351,3355,3359,3364,3369,3373,3377,1144,3382,3386,3390,3395,3400,3404,3408,3413,3417,3421,3425,3430,3435,3439,0,833,2738,1733,3443,3447,3451,2759,2762,803,3454,3457,3460,3464,3468,3471,2779,3474,2788,3478,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,32,40,52,64,66,915,836,3239,3228,3242,3225,3482,429,1620,2526,2537,2523,112,839,2554,2547,1426,2544,3485,845,2610,2599,2613,2596,842,3064,3488,2957,2950,1400,2947,3492,3095,3099,3495,3499,3503,3507,826,60,2689,2678,1325,2675,3117,816,806,432,2851,3120,324,3194,3183,3511,3514,3518,3522,3526,3530,3534,3538,1144,3400,3386,3404,3382,3542,852,482,1783,3114,3103,3546,855,1772,347,1318,670,3549,0,0,0,0,0,0,0,0,0,0,0,0,32,3552,40,892,52,776,776,773,40,24,770,482,482,1783,1783,3556,3556,3114,3114,3560,3560,3560,852,852,3106,3106,3106,905,68,0,62,44,121,60,50,68,50,0,68,28,0,46,410,609,1084,603,3468,3564,3457,3569,3471,3573,3573,2533,2526,803,3460,2943,2943,3577,3577,3581,3581,3586,3586,3590,3590,2779,2779,3595,3595,3595,54,54,38,2851,3600,324,3605,2854,3609,3609,3190,3120,806,2843,3613,3613,3617,3617,3621,3621,3626,3626,3630,3630,2857,2857,3635,3635,3635,62,3640,3644,3648,933,3009,3652,2998,3657,1311,3661,3661,836,3001,3030,3030,3016,3016,3665,3665,3670,3670,3674,3674,3012,3012,3020,3020,3020,44,3679,3682,3686,3690,3694,2875,3698,2864,3703,2878,3707,3707,926,2867,3711,3711,3715,3715,3719,3719,3724,3724,3728,3728,2881,2881,3733,3733,3733,28,100,2610,3738,2599,3743,2613,3747,3747,845,2602,3751,3751,3755,3755,3759,3759,3764,3764,3768,3768,2616,2616,3773,3773,3773,48,48,2481,48,48,2957,3778,2950,3783,1400,3787,3787,842,785,3791,3791,2960,2960,3795,3795,3795,50,106,2378,2554,3800,2547,3805,1426,3809,3809,839,2197,3813,3813,3817,3817,3821,3821,3826,3826,3830,3830,2557,2557,3835,3835,46,46,46,2689,3840,2678,3845,1325,3849,3849,826,2681,3853,3853,3857,3857,3861,3861,3866,3866,3870,3870,2692,2692,3875,3875,3875,60,60,3880,60,2297,3883,3880,3887,3892,3897,3902,2305,2700,3907,327,3912,988,2704,3917,3917,3922,3922,3927,3927,3933,3933,3938,3938,2309,2309,3944,3944,121,1772,3950,347,3955,1318,3959,3959,855,3175,3963,3963,3967,3967,3971,3971,3976,3976,3980,3980,3985,3985,3989,3989,3989,72,72,72,347,2665,2665,2554,3994,2654,3999,2668,4003,1426,819,2657,839,4007,4007,58,58,58,3451,4012,1733,4017,2759,4021,833,3443,4025,4025,34,3311,3311,3297,3297,4030,4030,1321,4035,955,3301,4040,4040,100,4046,4051,4056,937,633,4061,4065,4069,4073,1620,2526,4077,2537,4081,429,2529,38,38,4085,4088,2712,4093,2726,4097,479,2715,56,4101,4106,4111,4116,2665,2654,2668,819,4121,4127,4131,4136,4140,922,4145,106,1403,2305,2700,327,988,3311,3297,1321,955,100,4150,4154,4159,4163,467,4168,2396,3311,3297,4030,1321,4035,955,3301,100,26,32,40,52,24,482,1783,3114,852,2957,2950,1400,842,3009,2998,1311,836,1620,2526,2537,429,4173,4177,425,4181,4186,918,2651,2668,2665,2661,2654,819,3103,3114,482,3110,1783,852,4190,4194,4198,4202,4207,4211,3293,1321,3311,3306,3297,955,4215,3648,3640,4219,3644,933,3454,3471,3468,3464,3457,803,54,3225,3242,3239,3235,3228,915,4224,1314,4228,4232,4237,911,4241,4245,4249,4253,4258,1487,4262,2947,1400,2957,2953,2950,842,2596,2613,2610,2606,2599,845,670,1318,1772,3179,347,855,3205,3205,3222,3219,3215,3208,3208,809,4265,4269,4273,4277,4282,1064,2544,1426,2554,2550,2547,839,4286,4290,4294,4298,4303,3514,4307,4159,4311,4315,4150,467,4320,4111,4101,4325,4106,4116,3534,3530,3522,4331,3526,3518,3123,3137,464,3133,3126,1044,74,74,4336,4340,4344,4348,4353,1148,2675,1325,2689,2685,2678,826,2696,327,2305,2300,2700,988,121,3382,3404,3400,3395,3386,1144,3320,3342,3338,3333,3324,812,4357,4362,4367,4372,4378,4383,70,839,4388,4392,4397,4402,4408,4413,4419,4424,0,0,0,0,0,0,0,0,0,836,26,46,34,60,50,38,30,62,28,56,48,36,106,74,58,24,52,64,32,40,321,100,303,54,70,54,1426,2833,988,4430,826,34,66,64,118,72,68,100,100,24,52,4434,97,52,52,52,109,1084,58,44,28,44,36,106,36,36,68,38,38,38,38,50,50,50,40,32,42,36,97,24,1765,54,74,60,60,60,28,74,62,62,30,26,26,54,54,32,48,48,48,46,46,106,106,30,52,4437,4441,2709,2709,2709,60,118,118,118,56,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4445,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,24,32,40,52,64,109,1440,773,842,4454,800,803,479,915,845,839,826,988,806,816,812,809,855,819,852,833,836,911,1144,1044,2529,4458,467,3148,3324,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4472,4472,4472,4472,4472,0,0,0,0,0,0,0,0,44,306,36,377,106,28,321,42,1087,644,62,633,30,660,1090,62,100,30,584,50,54,303,26,637,48,72,58,46,66,121,79,60,38,46,56,24,770,40,892,64,4479,895,4482,4486,4489,4493,4496,32,905,776,776,908,24,770,770,40,892,72,1124,64,895,4500,109,855,335,32,97,905,776,908,48,38,24,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,911,915,918,922,926,812,809,929,4506,806,955,816,959,842,803,968,800,972,845,855,819,839,852,988,992,826,429,0,0,0,24,40,64,773,905,776,908,32,52,855,819,852,0,0,0,0,836,922,875,806,842,803,845,819,839,4510,4520,4530,0,0,0,0,3809,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,836,2885,922,1144,826,855,806,955,839,803,968,845,833,985,429,479,911,1454,842,24,40,773,4535,64,776,52,1440,32,4538,905,0,0,4542,4542,4542,4542,4542,0,0,0,0,0,0,0,0,0,0,0,179,479,179,179,179,836,2885,922,179,179,179,1144,826,855,179,179,179,806,955,842,179,179,179,803,968,845,179,179,179,833,985,839,179,179,179,429,816,800,179,179,4548,4552,0,0,0,0,0,0,4556,770,892,64,895,32,97,52,782,1440,1521,4562,4566,507,4569,4573,4577,4580,4580,4580,4580,4580,4580,4580,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,4586,4590,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,915,922,4595,803,800,845,4600,806,816,842,4604,926,809,848,4608,855,819,839,985,826,24,429,40,64,32,52,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4613,4613,4617,4623,4630,4636,4636,4642,4642,4648,4648,819,819,839,839,4654,4660,4667,4667,836,836,915,915,922,926,926,809,809,848,806,806,816,816,842,806,806,816,816,842,803,803,800,800,845,855,819,839,852,826,826,826,429,4673,4681,4613,4613,4688,4688,819,819,839,839,4693,4693,4693,4693,4700,4700,0,752,4706,4711,4716,2830,4719,4723,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4730,4739,4749,24,40,64,97,52,32,1786,836,479,915,922,926,809,1044,848,806,816,842,803,833,985,800,845,855,819,839,852,826,2885,429,4759,4769,4778,4786,4795,4803,4814,4823,4831,4842,0,0,0,911,4850,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,4854,911,915,4858,922,926,812,809,848,806,955,816,842,803,4862,968,833,4866,800,4870,845,4874,1144,1454,1148,855,819,839,429,4878,985,826,988,852,24,855,819,770,40,52,776,64,895,32,44,48,46,50,54,58,62,4882,4890,4895,996,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,933,937,942,0,6,8,10,12,14,16,18,20,22,839,4899,4902,4454,4905,2197,4908,4912,4916,4920,2547,4924,4927,4930,4934,2544,4937,4940,4943,4566,2554,4947,4950,410,4954,1426,4958,4962,4965,4968,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4971,4971,97,4971,4971,4971,4971,4971,4979,40,4971,4971,4971,4971,4971,4971,4971,4984,4984,4984,109,4971,4993,4997,4971,4971,4971,4971,4971,4984,4984,4984,4971,4971,4971,4971,5004,587,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,24,5011,5018,5011,26,30,32,5024,4979,5011,36,5011,44,48,5030,52,4979,4993,4997,54,62,64,4984,5011,66,587,5034,5039,5045,5039,3324,40,58,64,66,5034,5051,5057,3355,3324,1440,26,30,34,48,50,54,58,58,60,62,74,36,5061,5070,100,40,5078,54,64,5083,26,30,34,36,44,46,48,50,54,58,60,5091,66,70,74,24,5018,30,32,32,4979,5024,40,52,5091,64,5095,5011,28,28,5099,5103,34,5112,5120,5011,40,5078,4971,4971,42,46,46,4971,48,5011,50,50,4971,5127,3355,60,5091,62,64,5083,4971,66,5011,74,74,74,5095,5134,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,5140,97,1451,5150,28,5070,5099,36,4971,44,46,4971,4971,50,4971,4971,58,60,60,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,26,28,28,30,30,30,30,30,30,30,30,30,30,32,32,32,32,32,32,32,32,32,32,34,34,24,32,40,52,64,52,64,773,50,106,26,54,56,36,48,46,60,121,62,30,321,42,72,58,68,34,44,911,127,74,38,5153,2396,124,321,48,32,40,52,64,52,64,106,26,54,56,36,48,62,30,321,42,127,72,68,44,36,38,5156,644,130,32,40,4577,64,64,106,44,36,38,54,121,62,30,42,34,36,38,127,74,58,321,124,40,44,58,34,124,64,64,64,64,66,66,66,66,68,38,70,68,48,68,68,24,40,44,106,28,630,633,654,1090,62,30,54,303,79,124,74,24,62,124,377,106,28,1087,933,660,62,584,79,5159,124,74,64,72,637,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,64,64,64,64,64,64,64,64,64,64,64,64,64,64,72,72,72,72,72,72,72,72,5162,5162,5162,5162,72,72,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5175,5175,5175,5175,5175,5175,0,0,5175,5175,5175,5175,5175,5175,0,0,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5187,5187,5187,5187,5187,5187,0,0,5187,5187,5187,5187,5187,5187,0,0,5083,5083,5083,5083,5083,5083,5083,5083,0,5083,0,5083,0,5083,0,5083,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5018,5018,5175,5175,5183,5183,5078,5078,5187,5187,5083,5083,5195,5195,0,0,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5018,5018,5018,5018,5018,0,5018,5018,5018,5018,5018,5018,5018,0,0,0,0,0,5183,5183,5183,0,5183,5183,5175,5175,5183,5183,5183,0,0,0,5078,5078,5078,5078,0,0,5078,5078,5078,5078,5078,5078,0,0,0,0,5083,5083,5083,5083,5057,5057,5083,5083,5083,5083,5083,5083,5057,0,0,0,0,0,5195,5195,5195,0,5195,5195,5187,5187,5195,5195,5195,0,0,0,5201,0,2,2,2,2,5205,2,2,5209,5213,2,2,2,2,2,2,2,2,2,2,0,0,0,5218,1,1,1,1,1,1,1,1,1,1,1,0,0,0,2,0,0,5224,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,5230,0,0,2,0,0,0,0,0,0,5234,0,1,1,0,0,5237,0,0,5241,0,0,0,0,0,0,5248,0,0,0,5255,2,2,0,0,0,0,0,0,0,0,0,0,5261,0,0,5267,5267,5274,40,0,5280,0,0,0,0,0,0,0,5285,0,0,0,50,0,0,0,0,0,0,0,0,0,0,5291,0,0,0,0,0,24,32,52,70,5024,0,0,0,0,0,0,0,0,0,5296,0,0,0,0,0,0,0,0,5301,0,0,0,0,0,0,0,0,0,5305,0,5309,0,0,0,5314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5320,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5325,0,0,0,0,0,0,0,0,0,0,0,0,0,5329,0,0,0,0,0,0,0,0,0,0,4971,5333,0,0,0,4971,0,0,0,0,2,0,0,0,0,0,4971,0,0,0,0,5337,2,0,0,0,0,0,4971,5078,0,0,0,4971,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5342,0,0,5347,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5352,0,0,0,0,0,0,0,0,0,0,5358,0,0,0,0,0,0,0,0,0,0,5325,0,0,0,0,0,0,0,5362,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5367,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5372,0,0,0,0,0,0,0,0,0,5320,0,0,0,0,5377,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5381,0,0,0,0,0,0,0,5386,0,0,0,0,0,0,0,0,0,5391,0,0,0,0,0,0,0,0,0,5396,5401,5401,0,0,0,5407,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5413,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5426,5386,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5432,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5248,0,0,5437,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5442,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5448,0,0,0,0,0,0,0,0,0,0,0,0,0,5453,5459,0,0,0,0,0,0,0,5453,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5471,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5476,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5325,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,26,28,28,30,30,30,30,30,30,30,30,30,30,32,32,32,32,32,32,32,32,32,32,34,34,36,36,38,38,38,38,38,38,38,38,38,38,40,40,40,40,44,44,44,44,44,44,46,46,46,46,46,46,46,46,48,48,48,48,48,48,50,50,50,50,50,50,50,50,52,52,52,52,52,52,52,52,54,54,54,54,58,58,58,58,58,58,58,58,60,60,60,60,60,60,60,60,60,60,62,62,62,62,62,62,62,62,64,64,64,64,64,64,64,64,64,64,66,66,66,66,68,68,68,68,68,68,68,68,68,68,70,70,70,70,72,72,74,74,74,74,74,74,38,62,68,72,24,60,24,26,28,30,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,64,64,64,64,64,64,64,64,64,64,64,64,64,64,72,72,72,72,72,72,72,72,16,18,20,22,0,0,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,0,0,32,32,32,32,32,32,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,52,52,52,52,52,52,5386,0,52,52,52,52,52,52,2,5480,64,64,64,64,64,64,64,64,0,64,0,64,0,64,0,64,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,24,24,32,32,32,32,40,40,52,52,64,64,52,52,0,0,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,24,24,24,24,24,0,24,24,24,24,24,24,24,0,40,0,0,0,32,32,32,0,32,32,32,32,32,32,32,0,0,0,40,40,40,40,0,0,40,40,40,40,40,40,0,0,0,0,64,64,64,64,58,58,64,64,64,64,64,64,58,0,0,0,0,0,52,52,52,0,52,52,52,52,52,52,52,0,0,0,5485,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5491,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,5496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5501,0,0,0,0,0,0,0,0,0,0,5506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5509,0,5255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5514,0,0,0,5519,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5524,0,0,0,0,0,5529,0,0,0,0,0,5534,0,0,0,5540,5544,5547,5550,46,5553,50,5557,1134,68,2406,30,1786,44,62,5561,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5564,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5568,0,5573,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5578,0,0,0,0,5564,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,1,1,0,40,892,5583,5587,66,2819,5590,5594,5599,70,2891,5602,46,28,30,48,40,892,5583,5587,66,2819,5590,5594,5599,70,2891,5602,46,28,30,48,6,30,10,12,14,16,18,20,22,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,66,0,0,0,0,0,5606,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5612,0,0,0,0,5617,0,0,0,0,0,0,0,0,0,5622,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5629,0,0,0,0,5291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5635,0,0,0,5629,0,0,0,0,5642,0,0,0,0,0,0,0,0,0,0,0,0,0,5647,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5651,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5325,5655,0,0,0,0,0,0,0,0,5285,0,0,0,5367,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5661,5661,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5666,0,0,0,0,5671,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,5676,5682,0,0,0,0,5688,0,0,0,0,0,0,0,0,0,0,5693,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5699,0,0,0,0,0,0,5291,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5476,5704,5704,0,0,0,0,0,0,0,0,0,0,0,5708,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5712,0,0,5717,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5721,5721,5721,5721,5721,5721,5721,5721,5721,5721,5721,609,609,0,5721,5721,0,0,609,609,5721,5726,0,609,609,609,0,5464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5693,0,0,0,0,0,0,0,0,5730,0,0,2,2,0,0,0,0,0,0,0,0,5721,0,0,0,0,0,0,0,0,0,0,5682,5682,5682,0,0,0,5721,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5721,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,272,272,272,272,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,5682,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5735,5739,5744,5749,5757,5763,5769,5777,5783,5790,5795,40,5803,5810,5815,5823,5831,5837,5841,5848,5854,5860,5867,5871,5877,5882,3468,5886,3386,5891,988,5898,5903,5908,5913,670,5921,5921,1318,5925,5933,5925,5937,5942,5950,5958,5969,0,5735,5739,5744,5749,5757,5763,5769,5777,5783,5790,5795,40,5803,5810,5815,5823,5831,5837,5841,5848,5854,5860,5867,5871,5877,5882,3468,5886,3386,5891,988,5898,5903,5908,5913,670,5921,5921,1318,5925,5933,5925,5937,5942,5950,5958,5969,0,46,46,46,54,58,24,62,38,38,44,44,74,74,5018,48,24,0,66,68,68,66,1432,1432,5978,32,58,52,4971,42,4971,0,0,5987,5987,5992,5992,5051,5051,5997,5997,6003,6003,6007,6007,6011,6011,6016,6016,6021,6021,6028,6028,6034,6034,6039,6039,2599,2599,2950,2950,6045,6045,52,52,3457,3457,2668,2668,6049,6049,6054,6054,4500,4500,1733,1733,4237,4237,6058,6058,6062,6062,6066,6066,6076,6076,6080,6080,6066,6066,6066,6066,6080,6080,6076,6076,283,283,6094,6094,6076,6076,6076,6076,6102,6102,6066,6066,6076,6076,6076,6076,6111,6111,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,603,1635,1639,1643,410,1647,1651,1655,609,1659,1663,1667,1671,1084,1675,1679,1602,331,1684,606,1688,1693,1698,1703,1707,1712,1717,1721,1725,1606,1729,1611,1616,1620,1623,482,1627,1631,0,0,0,0,0,0,0,0,0,0,855,6120,6124,6129,6133,6139,6146,6150,6154,6159,6164,6170,6174,6178,6182,6189,6195,6139,6182,6199,3175,6204,6182,6209,6182,347,6213,6218,6182,6226,6230,4506,6182,6182,6234,670,1447,6238,6243,6182,6248,6253,6257,6262,6267,6271,6276,6281,6286,6290,6294,6298,6302,6313,0,0,0,0,0,0,0,0,0,6318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6332,6336,6340,6344,6348,6353,6357,6361,6365,6369,782,6374,6378,6382,6387,6391,6396,6401,6406,6410,6415,6420,6426,0,0,0,0,0,0,0,0,0,992,6431,6435,6439,6444,6449,4430,0,6453,6457,6461,6465,6470,6475,6479,0,6483,6487,6491,6495,6500,6505,6509,0,6513,6518,6523,6528,6534,6540,6545,0,6550,6554,6558,6562,6567,6572,6576,0,6580,6584,6588,6592,6597,6602,6606,0,6610,6614,6618,6622,6627,6632,6636,0,6640,6644,6648,6652,6657,6662,6666,0,2806,2830,425,432,3162,464,836,407,413,410,52,3468,6670,6673,2851,429,3400,3338,988,6676,5937,6682,24,335,6688,6694,6267,670,6704,6713,5933,6704,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,5682,220,5682,6720,6725,6725,6725,6725,6725,6725,6734,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,24,24,40,40,64,64,32,32,52,52,836,915,2998,3228,2995,3225,3009,3239,1311,3242,826,1044,2678,3126,2675,3123,2689,464,1325,3137,806,816,324,3120,2840,2840,3183,2851,432,2854,3194,842,2950,2947,2957,1400,429,800,803,2526,70,3457,2523,2792,3454,1620,2806,3468,2537,2809,3471,845,2599,2596,2610,2613,855,855,670,670,1318,1318,819,2654,2651,2665,2668,852,852,1783,482,3114,50,2816,836,3009,0,0,0,0,0,0,0,0,0,2,24,24,40,40,64,64,32,32,52,52,836,915,2998,3228,2995,3225,3009,3239,1311,3242,826,1044,2678,3126,2675,3123,2689,66,66,66,66,816,324,3120,2840,2840,3183,2851,432,2854,3194,842,2950,2947,2957,1400,429,800,803,2526,2795,3457,2523,2792,3454,1620,2806,3468,2537,2809,3471,845,2599,2596,2610,2613,855,855,670,670,1318,1318,819,2654,2651,2665,2668,852,52,1783,482,3114,50,2816,836,3009,985,2819,2830,2833,0,0,0,0,0,0,0,0,0,0,26,54,48,34,30,62,50,46,36,44,38,42,56,70,124,321,121,58,74,28,60,24,52,32,4535,905,1518,908,139,603,410,4454,5030,6670,40,64,371,66,106,6743,4927,0,0,0,6746,6753,6765,6777,6783,6795,6807,6814,6826,6832,6845,6857,6869,6880,6894,6908,6920,6926,6932,6943,6954,6959,6969,6975,6981,6992,7000,7008,7016,7024,24,97,855,475,1765,32,1768,1772,52,852,1775,109,1318,64,1779,482,1783,670,1786,347,40,0,7030,2017,2030,2041,2096,2126,7041,7058,7072,7090,7102,7113,7127,7141,7154,7167,7185,7203,7215,7229,7243,7262,7274,7285,7297,7308,7319,7327,7338,7347,7361,7378,7394,2182,1858,1864,1883,1930,1937,1948,1999,7405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2792,3126,3208,3225,773,7412,776,7416,4934,7420,7424,4943,7428,7431,7435,7440,1437,1429,7445,7449,54,62,44,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2995,2678,2675,2854,2947,429,2526,2523,1620,2537,2596,819,2654,2651,2665,2668,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7454,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7460,7467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,26,0,44,0,46,0,28,40,34,0,48,60,54,0,32,0,38,0,52,0,58,0,30,42,36,0,50,62,56,0,0,0,0,0,64,0,66,0,0,0,0,0,70,0,0,0,0,0,0,0,74,0,0,0,0,68,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5688,5606,0,0,7473,7478,7482,0,0,0,0,0,7487,0,0,0,0,0,0,0,0,0,7491,0,0,0,0,0,5442,0,0,0,0,7495,0,0,5688,0,0,0,7500,5426,0,7504,7511,7516,7521,5218,7528,5655,5491,7478,7533,0,0,7538,7542,5476,7548,7555,7558,0,0,0,0,5314,7565,5708,7478,7571,0,7576,7582,7588,5476,7592,7599,5666,5386,7605,0,0,0,0,7500,0,0,0,5381,5459,7495,7588,5476,7610,7616,5413,0,0,0,5347,7622,5476,5301,5325,7628,7632,7637,0,0,0,7643,7500,5296,7648,0,7576,0,7653,5237,7658,7663,5296,7667,7538,7672,5629,7675,7681,7687,7628,7692,7696,7700,7706,7710,7715,7653,5629,7719,0,7723,5666,7730,0,0,5296,7734,7738,5320,0,7742,7658,0,7746,7752,7757,7628,7763,7667,5453,5661,5337,0,0,5617,0,5666,5301,0,7632,0,5325,0,0,0,0,7768,0,7774,7779,7786,7790,0,7795,5342,0,0,7790,7800,0,5391,5301,0,7599,5568,7805,5655,0,0,0,5224,7811,7582,7817,0,0,5401,7592,5329,5426,0,7823,5661,0,5358,5381,7588,0,0,0,5337,5426,7706,0,7828,5564,7632,5280,5381,0,0,7834,7839,0,7843,0,0,7849,0,5301,5396,7853,7858,0,7667,7864,7867,5476,5291,7872,5407,0,7710,5248,7710,0,7672,0,7516,5291,7588,7675,7877,0,0,7605,7883,5407,7576,7888,5661,5301,0,7710,5237,5407,0,5325,0,7893,5573,7898,5568,0,7904,7779,7908,0,7849,0,5291,5666,7914,7920,7924,7672,7930,7864,5329,0,0,7935,7495,7940,7946,7628,0,7952,5476,5274,7817,7957,0,5333,5391,0,7962,5642,5381,7967,0,5699,7482,0,7972,7977,7982,7986,5730,7990,0,5485,7663,0,7864,5573,5661,5573,7994,0,0,7811,7588,5337,0,7667,7999,7500,5391,0,0,8005,0,7849,5671,7834,5688,5476,5396,0,8010,8015,7883,7565,8022,5708,5564,8028,7849,5337,5396,0,8033,8039,8044,5396,5301,8048,8052,8057,0,7487,0,0,5333,7516,5476,5730,0,7500,5726,7696,0,0,0,0,0,0,0,8028,7994,5661,5377,8062,8068,8073,8077,7482,0,0,0,0,0,0,8082,8087,7904,7491,5325,7853,7653,7592,7582,7752,5329,5448,8039,8093,0,5606,8099,0,0,0,0,0,0,0,7491,5391,5529,5501,8104,8110,7888,8115,7864,5661,0,7864,8119,7752,7800,7982,5717,5367,7800,5358,5325,5730,7972,0,0,0,0,8126,7663,0,0,8131,7883,8126,8073,8136,5301,7675,5519,0,0,0,0,0,7582,5377,8140,8144,8149,7972,7663,5237,0,7867,0,0,0,0,5573,5325,8154,7738,7834,7500,0,8159,0,0,0,0,7491,7521,0,5367,7571,5476,7839,0,0,5274,7658,8164,5476,7972,5476,5274,8170,5325,7653,0,8174,5301,0,5347,8179,7653,7834,0,0,7834,7653,0,7710,8184,8154,0,5358,5367,5534,8190,0,5337,8196,7500,8028,5358,8052,5485,5708,5708,0,0,0,0,8170,0,7571,8201,5381,7663,8205,7839,8048,0,0,0,0,8077,7511,8211,8217,0,5358,8222,0,5573,7653,5606,8227,0,0,0,0,5564,7888,7628,7491,8005,7653,7908,0,7908,0,7610,0,8201,7710,5661,8077,7843,5476,0,7800,8015,5367,8234,0,0,5325,8239,7491,5325,7482,0,8245,5476,5661,8052,5218,7653,7877,7658,5629,7972,8222,8249,7952,7877,5666,0,5237,0,0,8255,8261,8267,0,7610,5564,0,0,7786,0,0,5396,8039,0,5524,8272,0,5261,8277,8077,5564,5524,7867,8282,0,0,5237,7500,8005,8249,8287,0,5325,8293,7675,5476,7628,5476,7834,0,8297,8052,8302,0,5337,0,7528,5358,0,7828,0,8201,0,7487,7696,0,7790,8267,0,0,8255,0,8174,0,0,7495,5381,0,7696,7888,0,0,0,7888,0,0,7867,0,7742,5448,8179,8307,0,5352,5476,0,7571,8312,7867,8316,7528,5337,7930,7610,0,0,0,0,0,0,7738,5347,7800,8322,7576,7834,0,5329,0,5514,7746,0,7872,8048,5496,5386,0,5442,0,5320,7858,0,8005,8302,0,5274,7972,0,0,0,5401,8329,7500,5651,5296,7715,0,8334,5476,8131,5629,7706,8267,5320,5564,5476,8245,0,5401,8340,8179,8170,5329,7588,5362,5708,8345,7542,0,0,0,0,8297,7914,8349,7653,8354,7696,5708,5274,7538,0,0,5347,0,8354,7582,5534,8359,8249,5453,5509,5651,8077,5726,8365,5401,7972,5209,8370,7500,8052,8329,7972,8010,8104,8131,0,8104,8375,7605,8087,8239,5381,5661,5693,5381,8164,8211,0,5717,5642,8381,5476,7843,5218,7482,0,7588,0,7516,8387,7790,8391,8397,7628,7491,8131,5651,7667,7752,0,0,7828,7610,0,5426,8402,8255,7746,8249,8196,0,5509,8407,7663,0,8411,8417,5401,5309,0,7805,7571,8073,0,5642,8422,5325,0,8039,5325,7994,0,0,7500,8184,8267,0,7904,5578,8170,7994,5237,7706,5476,5661,7839,5688,8068,5453,7706,5325,0,0,0,7828,8149,8427,0,0,7482,8433,5325,5296,5437,5347,5386,8170,8196,5491,0,5381,7500,0,5218,8307,7710,0,8438,5464,5342,7990,8443,8052,7558,5529,8447,7710,5401,8345,7710,0,7521,7924,5396,8451,5688,8149,5564,8217,8211,7843,5480,7653,8211,8073,0,7706,7653,0,7610,0,7681,8149,7706,8365,5651,8456,8427,7521,8461,0,7706,0,5329,0,8267,7864,7768,8438,7994,7768,5320,8438,0,0,8391,5642,5291,5301,7908,8461,8467,8245,0,8149,7957,7542,5708,8473,0,8211,8479,0,5708,0,5237,5564,0,8484,8489,8316,5726,7864,0,5325,5325,5396,5285,8397,8473,8249,8126,7994,5325,5708,7628,8052,8217,8494,8447,8498,0,5301,5329,5453,5396,8277,0,7672,0,5651,7628,0,8170,0,0,8427,0,5476,0,5325,5358,0,8504,0,8010,5717,7692,5381,7622,0,0,8316,0,7839,5358,8509,5301,0,7962,7495,0,5325,8514,5274,5280,7864,7790,0,0,7853,0,8255,0,0,7478,0,8519,5377,5401,5358,0,8211,5529,8527,5666,0,5241,5573,7800,7610,0,7482,0,5241,7542,8375,8077,5476,0,5325,5325,8533,7628,8484,7811,8539,0,8093,5325,8543,7687,7839,7883,8239,5476,7999,5274,7710,7839,7710,7834,7843,8307,7610,7877,0,8422,5496,7663,7710,0,7616,5496,7853,0,8422,5496,5642,8548,0,0,8255,5401,8196,5329,7834,0,0,5476,7877,7592,5419,0,5485,0,7582,0,5676,7653,8539,0,0,8062,0,7710,8438,5358,0,8329,5329,0,5617,5358,0,5358,0,5274,7994,5432,7696,5676,0,5655,7930,5476,7628,5726,8365,5651,8447,7487,0,0,0,5261,7658,7715,5485,8411,8164,8554,8179,0,0,0,0,0,8539,8316,7738,5426,0,7888,5237,8316,0,5377,5261,5407,7972,0,7482,0,0,7811,7548,7706,0,0,5661,5661,8115,7994,0,0,7738,8427,8381,0,0,0,5476,8504,5320,5496,5314,0,7746,5325,7565,8456,7663,8010,5708,8196,5280,7675,0,0,8255,0,8316,0,5337,0,8543,5564,5573,7605,0,5573,0,8560,8566,5291,0,5496,8571,8577,5301,7500,0,7628,8370,5301,5730,7817,7990,8467,8407,5296,0,8582,7592,8365,5564,7867,7930,5237,7839,8334,0,5237,5688,5464,0,0,5442,8589,0,8407,8407,8594,8514,8093,8087,7828,8179,5459,7935,5352,0,8170,5325,8277,5606,8467,0,7774,7706,7628,5401,0,0,0,0,7628,5325,7994,5651,8402,5661,7500,5237,5688,5296,0,7628,7867,8598,7805,7888,7957,0,8334,7658,7576,7482,0,7893,7914,8467,5476,7643,7719,7491,8438,5501,7849,0,7482,8604,8447,5708,8527,5401,8227,7877,7538,8539,0,5329,0,5476,5396,0,8422,7864,5396,7962,8447,5401,5301,5274,7834,7610,8514,5407,0,0,8411,7628,8154,7622,5442,8370,0,5333,5381,7994,5476,7811,7849,8179,5347,7482,5661,0,7632,8093,7542,8154,0,8494,0,0,5717,0,5459,5218,5325,8608,8613,5237,8617,7500,5476,7982,5325,5726,5606,0,7542,7715,0,7790,7482,5671,7904,5274,7790,7565,8387,0,8022,7994,5529,0,8625,8484,7864,5209,8402,5358,8631,0,8577,0,0,7908,0,8370,0,7605,5248,5274,8190,0,5688,8456,7952,7696,7817,7723,0,8149,5301,8033,8589,8073,8494,8057,0,7888,0,8594,7738,7972,8473,7786,0,0,5224,7972,7582,7558,7999,8028,7516,8312,5325,8438,7994,7935,8131,0,8613,0,8201,0,8005,8149,7653,7616,7972,5381,5426,5661,8329,5261,7542,5661,7588,8370,5651,7643,0,0,5296,8136,8022,8543,7511,5381,5464,5347,0,7982,8307,8154,5717,5642,8604,7952,5407,5407,5442,5309,7538,5296,8514,8179,7672,7920,7924,8170,8170,5699,0,0,8635,0,8484,5396,5274,5661,0,7588,7893,8604,7491,0,0,0,8196,5296,8068,0,8322,5237,5476,0,8249,8641,5347,8052,7839,8533,8647,7632,5651,0,0,0,5661,8073,5296,7706,5661,0,0,8073,7542,8282,5285,5291,8653,8022,8170,7864,8077,0,5459,5459,0,7952,0,7706,7805,0,7628,8196,0,7990,5564,0,8539,5274,7952,7849,8658,7653,8316,8073,5261,5358,5329,7491,8447,8663,8589,7757,5329,7853,5401,7990,8589,5655,8663,5401,7790,0,7542,7990,8670,8255,5358,0,7482,0,5261,7588,7730,7872,5314,5329,8093,5496,0,7811,0,0,7977,8282,7982,8307,0,7957,0,5676,7990,5612,5717,5578,5693,8676,7605,7834,8334,5496,0,0,0,0,5476,0,0,5337,8234,5642,5642,5391,7817,7706,8682,0,0,5730,5651,5564,7982,8687,7883,0,0,7834,0,0,5726,0,8227,8391,0,8222,0,0,0,5274,0,0,0,7790,7843,7823,8456,8033,0,0,8694,0,7867,5491,0,8653,5459,5329,0,0,0,0,7628,7658,7877,7800,7746,7811,0,8699,7811,5730,5485,8073,5274,5301,5309,0,8211,8647,8052,7924,0,5274,7588,7994,7935,0,5309,8554,7849,0,8635,8093,0,8217,0,7734,8354,8073,0,5296,5459,7834,8170,5285,7908,8577,7628,5377,0,7478,8062,7675,8052,0,0,0,0,5464,5564,0,0,5471,0,8705,5285,0,7528,0,0,8467,5291,5396,0,7898,8711,0,0,7994,0,5712,7487,8411,5329,0,0,0,7849,5617,7672,5213,8164,5688,8577,7817,5274,5237,0,0,5453,0,0,0,5661,5666,0,8498,5314,7893,7571,5459,5325,7849,5325,0,0,0,0,0,5647,5274,7834,5629,7738,8539,5291,8608,7653,5642,8170,7872,7898,0,8077,5606,8716,0,0,5337,7746,0,0,8716,5426,7706,0,8682,8316,7696,7977,8196,7790,7864,5301,7710,0,7849,5381,5325,0,8721,5730,5671,0,5501,7719,0,5325,0,7723,7849,0,5274,5381,5396,5358,0,0,5655,0,0,5391,0,8022,7972,8543,0,0,0,7843,5358,5274,7898,5491,0,0,7920,7877,5358,7588,8154,8727,7616,8732,5419,5362,7786,7565,0,0,7738,8402,0,8407,8297,8739,7935,8245,7982,8402,5329,5676,5329,7542,8174,5655,0,5301,8340,7706,0,0,5377,8093,5726,5401,5329,5320,7817,5578,8473,5309,8745,0,0,8548,7734,5309,8473,5407,8234,0,0,0,8577,5301,7632,7914,7746,5407,8539,7930,0,5401,0,8329,8751,5699,7610,8397,0,5291,0,5617,0,5661,0,5347,8140,5476,7495,5301,8354,0,5476,0,5325,8756,5661,0,5209,7990,5296,5726,0,0,0,8631,0,8329,0,7914,5568,7867,8302,7500,8387,8312,8443,5337,5209,5401,5309,5367,5476,7867,5651,5285,0,7710,5391,0,7482,5305,5476,0,7719,5309,7491,0,5699,7935,8375,0,5241,0,0,0,0,0,0,8402,0,8345,5519,8179,8732,7687,0,5325,8073,0,0,7843,8422,0,8093,7864,8494,5401,8762,8514,5347,7994,8676,7908,7663,5437,5296,5476,5305,5209,8543,5413,0,5358,5301,5329,7632,0,7883,0,5699,8033,0,7558,8484,5568,5325,8093,0,8670,8509,7872,8287,8766,0,7957,8222,0,0,8222,8164,0,5666,0,0,5726,0,0,7972,8772,8164,8443,7616,7790,8716,8411,0,0,5629,7653,5372,8164,0,0,7734,0,8772,0,8297,8381,8577,5459,5459,7548,0,7672,7883,0,7952,5325,8447,5476,8184,7628,7599,8039,8115,7834,8402,5274,5285,5320,5564,8456,0,0,0,0,8201,8411,7710,7730,5476,8411,0,8217,5347,0,7637,0,8190,7628,7628,0,0,0,0,7738,0,0,0,0,8170,5661,5237,5407,0,7533,7738,8190,5274,5453,0,0,0,0,0,5651,5325,8131,7752,0,7599,5337,8115,5358,5651,0,5661,8010,5476,0,5666,7616,0,5309,5617,7482,5325,0,7588,0,0,0,7599,7746,7588,5476,5437,7719,5325,7632,0,7790,7687,5342,7972,8411,5301,0,0,0,0,0,0,0,8255,8721,0,5655,0,8077,7667,5661,5642,5661,0,8766,0,0,7610,8033,5651,5699,0,8136,0,0,0,7588,5661,8073,5693,8498,0,8519,7935,7653,7883,8052,0,0,0,7914,5651,7877,8514,7653,8402,5291,7849,7893,5391,7935,7914,7555,5564,7800,0,0,0,0,5476,5442,0,0,8222,5666,7990,7828,5358,5342,5717,5358,5476,5274,8447,7616,7605,8104,8527,7500,8647,7478,8239,8777,7967,0,8411,5642,7811,5213,5448,0,8217,5485,5237,0,8039,0,0,7834,5529,5573,7946,7616,0,0,0,5401,5274,7811,0,0,5401,5261,8777,7930,5407,5320,8010,7828,0,7904,7628,0,0,7700,5666,5476,5491,0,7877,8783,0,5309,5362,0,0,0,8239,5712,8484,0,7511,7653,0,5218,5309,7710,8504,8789,0,0,8062,5606,0,0,0,0,8073,7723,0,5320,8402,5296,8783,8307,8625,7864,7994,5501,8772,0,8099,7849,5218,5296,0,7628,8548,7834,5688,7999,7592,7658,0,0,0,0,0,0,8422,7516,7592,7687,0,7849,0,7500,0,0,0,8402,8745,5305,0,0,5413,5301,0,0,7834,5717,5305,7930,5676,5459,8670,0,7478,7834,0,5291,0,7658,7653,0,7828,5325,5381,0,0,0,5661,7986,8010,8154,5237,8077,5651,8297,8498,7482,5651,0,5291,0,8316,5509,0,5301,8670,8571,8795,8282,0,7681,0,7930,7491,7858,7877,7982,8800,0,8345,8104,7542,7930,0,5501,0,5480,5480,7571,8093,0,7952,0,5391,5730,8577,0,7487,0,7930,8504,8762,8073,7779,7839,5358,5325,8548,0,7849,5301,8467,8354,0,7877,8539,5666,5309,5248,7487,7734,5476,0,0,7811,8272,8613,7616,7616,7648,7482,5391,7482,5291,8068,8190,0,0,7867,7605,0,0,5337,0,0,5237,5391,5476,5305,0,0,7982,7675,7478,0,5485,8805,5391,8447,0,7738,0,5573,7877,8647,7757,5386,5386,8811,8131,7628,5730,0,0,0,7982,7924,0,5274,0,8164,7957,7999,8179,8239,8647,8370,8010,7653,7883,8427,0,7738,7605,8282,5407,7628,5314,5337,5301,0,0,0,7877,5401,0,0,8484,7734,5688,7817,5209,7628,0,0,8705,8816,5712,0,8484,0,7500,5255,8411,7790,0,0,0,0,5476,5337,0,5255,0,8222,5296,0,0,0,8201,8211,7986,5647,7478,5301,8093,0,5325,7667,0,7888,5291,5491,7930,0,0,0,0,0,7986,8411,5342,5647,5459,0,0,0,0,0,7888,0,0,5342,5358,5647,7719,8179,5647,7746,0,7672,0,0,8427,5358,5325,8433,0,5301,0,0,5342,0,5320,0,0,7864,0,0,0,0,7723,7632,7482,8068,7786,7628,5666,7930,8028,7858,5401,5688,5401,0,0,5301,5693,8631,7576,0,5426,8608,8010,5352,8126,5480,0,7864,8126,7706,5573,7817,8316,7653,7558,7977,7811,5426,7828,8349,7582,7864,8821,8577,8119,7742,8539,7628,8732,8164,0,5629,8827,8647,8617,5329,8316,5241,5301,7730,0,0,0,0,8625,5476,7653,5661,7632,7511,0,7883,0,0,8772,0,0,0,5337,7823,0,8461,7667,7710,5568,5509,5301,7511,8577,5367,0,8345,7628,8170,8110,8329,0,8451,8179,8833,5218,5564,8821,0,5237,5320,5285,5285,7653,8015,0,0,8839,8033,8010,5325,0,0,7786,7478,0,7867,5320,0,5480,8762,7487,8297,7715,5564,8093,5325,5519,8190,8716,0,5381,5301,8245,5325,0,7672,7914,5301,7843,8845,7482,0,8196,7867,7935,5337,8201,5464,5699,8277,0,0,7500,7898,7990,7706,0,8119,0,0,7576,5464,8422,7982,7930,0,0,0,5325,7786,0,5524,7637,7538,7605,8422,8422,5401,7843,0,0,0,5491,7663,5274,0,5237,0,8422,8179,5514,0,5381,5501,8658,0,5642,8479,7977,5666,7834,5329,8422,7616,7920,7632,5301,5432,0,7790,8126,0,0,5642,7849,8104,7982,8381,5442,5301,5629,7811,5358,0,7935,7924,8245,5708,5529,0,0,0,8297,0,5372,5509,7738,8222,0,7834,0,7605,8387,8010,5337,0,8422,8249,5617,5309,7786,7706,8255,5285,7834,0,8795,7746,5274,8589,8136,0,7811,8816,7558,0,5291,5237,7706,8608,5712,7786,0,0,8010,5726,7877,8598,5358,7790,8851,7786,8062,7811,7632,8560,7977,7768,0,8211,8201,7786,0,7715,7663,7616,8598,7843,5381,8539,7977,0,8751,8504,7834,8762,8539,0,7843,5274,0,5426,7930,8345,5651,7706,7706,8494,5617,7628,7977,7558,5642,7616,7924,5325,5381,7653,8438,7957,8509,5642,7834,7962,7952,5464,7616,8119,5496,5401,0,8190,8732,7935,8447,5726,7622,8154,7628,7823,7982,8554,0,7542,5617,5419,5708,8349,8211,8427,8411,5285,5291,8789,5358,5391,5301,5305,8577,7763,5305,5237,7877,5726,5285,8154,0,7500,7700,8316,5730,7628,0,0,8073,8857,0,8287,0,5381,0,5426,5296,5391,0,0,0,5642,7628,7898,5381,5578,0,5617,8539,7582,7839,5564,8438,5655,5655,0,7834,7757,8062,7817,0,7672,8625,7986,8402,8048,8451,7834,0,5381,0,8039,5612,5509,5241,8077,7757,8277,7738,8402,0,8234,0,0,0,0,7746,0,8438,8170,7628,0,7999,8115,0,0,7533,7849,8131,8062,8149,7478,8287,0,5329,8140,5401,0,8255,5320,0,0,8433,0,5296,7588,8519,0,7610,0,5386,8772,7883,7994,8811,8245,5301,0,5274,7533,7986,0,5453,8359,7616,5274,5347,5305,7904,0,5564,5358,0,8154,5476,7511,0,0,5676,8154,7558,8307,7864,0,7834,8863,8762,7706,7628,7768,8154,8077,7946,8170,5617,0,0,5352,8391,8340,7957,5301,8104,0,8402,5261,0,7706,0,8277,8093,8239,8705,7628,5386,8287,7706,5476,8184,0,5407,8387,0,7805,0,0,0,5358,7883,8312,8184,7972,8783,5606,5606,8110,5476,8577,8345,7849,7723,5301,0,5209,7588,8467,8387,8762,5509,0,7582,5337,5296,5407,7872,8211,8170,0,0,8345,5342,8277,7643,8322,0,7888,0,8136,8179,5377,7500,8484,5464,7706,5381,7790,7834,0,7972,8422,0,7663,8334,8777,5629,8869,7643,7706,5573,5612,5314,8417,5647,8443,7957,7622,5301,7800,7786,8433,5396,5712,0,5401,8479,5261,7839,0,0,7972,7904,8402,5688,0,7610,0,7893,8039,7558,8484,7864,0,5291,8062,5285,8498,5642,8316,5496,5337,5320,5642,5717,7811,7843,5291,8033,0,0,7914,0,8391,8391,0,8519,8267,0,5309,8287,0,8772,0,7723,0,7558,0,7628,7558,8316,0,8255,0,8170,5347,5476,8164,0,0,7487,0,8048,0,8249,7952,0,0,8370,8255,8287,5699,8217,5301,7904,5381,0,7632,0,8267,0,7982,7482,0,7972,5401,0,8811,5407,7576,7605,7692,8136,8217,8115,7924,7605,7817,5476,0,0,8519,8149,8504,8164,0,8136,8604,0,0,5476,5291,5358,7558,7667,5442,5296,7710,7972,7834,0,0,8099,5224,7999,7653,7628,5491,7999,7893,8302,8093,7738,0,8211,7491,8222,8005,7795,7823,5717,0,7710,0,5612,7839,7576,7658,7908,8196,0,8762,8604,7811,0,8159,5241,7542,0,0,7994,0,0,5237,8136,7734,8359,8170,0,0,0,7533,7738,7542,0,8164,7632,7982,5448,0,7734,7763,0,8851,8349,5320,8093,5666,5419,8873,7972,7757,0,8589,7982,8010,5712,5342,5407,5629,5661,0,5305,8010,5666,0,8554,8093,0,8827,8267,8249,7628,7972,7706,7883,8154,7994,8772,7719,5661,5448,8022,0,7511,5476,0,5666,5301,7893,8577,7516,5274,5642,0,5432,5274,8261,5622,0,7883,8411,8093,8062,7706,8239,8282,5651,7982,7982,0,8604,8456,7723,8391,8484,8201,5712,8589,5712,0,0,5301,7768,0,8869,7521,0,5391,0,0,5347,5464,8484,7834,0,7730,8641,5661,5578,8514,5237,7800,0,5464,8772,7675,8387,5358,7632,8010,5301,8402,5496,5442,8539,8582,5573,0,7877,5651,7542,5688,5655,0,0,0,7786,7834,7710,8625,7715,8073,7473,8845,5642,7790,7599,0,0,0,8613,5291,0,8438,5419,0,8427,7571,8354,5224,0,7576,5358,8504,7628,0,8287,7696,5476,5651,8745,0,7599,5325,8201,0,5432,8010,5642,5301,8010,5726,5564,7696,0,0,0,8154,5309,7706,8170,8277,7935,7930,8816,5476,7500,7511,8329,5564,0,8566,8805,5413,7687,0,0,0,7742,8851,8845,5629,7952,5296,7738,0,5642,0,7706,7653,7672,5651,5651,0,5329,8010,7742,5651,5381,5564,5651,5464,7588,5642,8077,5309,5401,5358,8745,5377,8093,8857,7972,7482,8479,5442,7774,5651,7834,5347,5248,0,0,8721,5617,7632,0,0,7632,7605,0,5442,5676,7592,7696,5476,7872,7774,8504,5564,5347,5342,7628,5642,7828,8093,7605,7738,5255,7542,5291,7805,8201,7786,8879,0,7653,7653,8711,7982,8062,8539,5564,8190,5651,5712,7843,7786,7999,7738,7628,8548,5301,8239,7478,5666,5325,5666,5301,0,8073,8608,8005,5480,0,0,7999,7952,0,7500,8716,8287,7888,0,7582,7952,8073,0,7811,8190,8179,5301,8422,5464,5529,7982,8222,8297,7681,5564,8239,0,5476,5320,8312,7849,8140,0,8136,8345,8783,5329,8427,7738,0,0,0,8255,7588,0,8721,0,0,5573,0,7696,7696,8699,7706,7487,5573,0,7834,7898,8345,0,8884,8519,7904,0,5377,7653,7571,7904,5578,8631,8119,5358,7696,7605,7478,7752,7972,7576,5329,7752,8234,5688,7986,5437,5448,7746,7972,7706,8340,8647,5401,0,7610,7588,7706,8467,8527,0,5291,8539,7858,8721,8816,8504,5655,5671,7920,8772,8783,8104,0,8104,5305,5432,7706,5391,5358,5291,7487,0,5396,8136,5296,0,7696,0,8711,0,5237,7972,8504,8170,5459,5578,8670,8249,5358,7653,7628,5274,0,8766,8179,8201,0,7706,5325,5453,5329,7592,7653,5476,7774,8104,7972,5209,8245,0,5606,7576,0,8104,0,5578,0,8110,8888,5325,5476,8762,5291,5717,5325,0,0,5612,8893,7521,5464,7706,7605,8451,7710,5534,0,8898,7786,8509,8010,0,8340,7972,7877,5666,0,0,5578,7628,7952,5464,5309,0,8039,5514,8772,0,5237,7800,7888,5708,7920,7478,7663,8249,7920,8249,7924,7972,8073,7616,7994,5386,5347,7834,7877,7768,5655,7734,0,7658,7893,5320,0,8903,5496,8297,5606,7710,7738,7977,8598,5464,8239,0,0,0,5309,7864,0,5564,7888,0,7864,0,5642,8539,0,8539,8201,7800,7935,8099,7706,7715,8179,0,0,0,0,5337,0,8245,0,7588,5564,5325,5419,8340,8073,8909,7935,5564,8201,7478,0,7924,8391,8334,8211,0,8249,8340,7681,8509,8126,7675,7528,7706,0,0,8670,7946,8816,7675,8033,0,8010,7482,8608,8297,8915,8048,8010,5726,5391,7849,8411,5491,5305,8919,0,0,0,0,5496,7888,5337,8052,0,0,5274,5666,5309,7706,0,5712,0,0,0,0,7834,5476,7482,7706,5578,5237,5476,7491,7864,0,7972,7653,8287,0,8104,5224,7908,5442,0,5480,7723,0,8484,0,8140,5564,0,8249,5301,8577,7738,0,7786,7779,0,7986,7828,7839,0,0,0,5325,0,5496,7790,8762,0,7637,7872,8727,8821,0,8277,5426,0,5476,5712,0,7849,5325,0,7653,0,5301,5209,8443,5642,0,5301,7706,8811,5301,0,0,0,0,7588,5442,0,5661,7930,7500,5485,7734,8093,7521,7571,7757,8104,8745,7823,0,7672,7710,8670,7628,5396,5301,0,0,0,5301,0,0,8217,0,5476,8381,0,7982,5564,0,7558,7823,8604,0,5377,8196,8473,5342,7994,0,7719,7663,7864,5381,8739,7893,0,7482,0,5514,8307,5296,5661,8115,8772,8227,7972,5476,5564,7864,0,7667,0,5496,5274,7800,0,5358,8093,5381,8005,7977,0,0,7843,0,7893,5329,7687,7849,0,8447,7616,7675,8909,8149,8115,8005,0,7542,8170,8647,8282,8307,7516,5651,5314,5661,7982,5651,0,8925,8827,5717,7823,7605,7834,7653,0,5476,8375,8354,8297,8093,8929,7628,7555,0,5476,7555,8196,7542,5367,5573,5309,5651,0,8136,7653,8443,5367,7834,5647,0,0,5612,7482,5248,7576,8211,8467,7555,7622,5514,5509,5301,0,8136,5391,5358,7839,7898,0,5676,7521,7952,5213,0,8329,7687,5642,0,0,0,7864,7924,7681,5337,5291,5301,0,5301,0,5325,7982,8427,5564,8227,8721,8170,8249,0,7558,8711,0,5301,0,0,0,5476,5224,0,5730,5509,7710,0,5717,7653,8073,0,7511,8179,8179,5476,8190,7834,5612,5524,5218,0,0,0,7628,0,5578,7538,0,0,8617,5309,8721,7734,7516,0,8805,0,7986,5476,0,7839,7834,5381,0,7994,5274,8381,5564,5717,0,5305,5564,8716,5274,7752,5301,8179,7763,0,8447,7637,0,7500,7555,8349,0,8795,0,8560,0,0,7628,7994,7605,0,0,5476,0,0,5564,5358,7605,5209,5320,5367,8447,0,5285,8190,0,8417,8164,5459,7730,0,0,7628,0,0,0,5329,7653,0,5476,8397,8427,7588,5509,8447,8721,5291,5413,8179,0,7888,7706,5642,7952,8699,5730,8329,5661,0,5296,0,5661,8073,7990,0,7500,8126,0,5573,0,5377,5573,7710,5453,8721,8527,5661,0,7888,5291,5296,8833,7730,7888,8093,8249,0,8039,8249,7610,0,7616,0,8721,8140,5301,8762,0,7864,0,0,0,8407,8407,5419,5401,0,8670,5237,0,7994,0,0,7849,5337,5329,8277,7742,8119,5676,7706,0,8267,0,7706,0,8873,5325,8349,8519,8184,0,5301,8093,0,8033,0,5274,7982,0,8443,5491,5491,7643,0,7935,5377,0,7495,7972,7511,7893,5285,0,5708,7516,0,8705,8272,7920,7528,5261,5661,8631,8272,0,5237,5661,7920,5642,5642,7555,8052,8566,7482,8010,7823,7710,7599,8467,5367,7576,8467,5391,5651,0,5717,8174,7893,7982,8447,7839,5651,8411,0,8136,7628,7864,7972,8566,7500,7672,5296,8329,5386,7653,7977,8307,5396,0,0,8140,5237,8022,5651,7528,7478,7723,5241,5442,5426,8484,8170,7643,5377,7800,5407,7706,8087,5666,5509,7935,8179,5381,5337,5296,7687,7588,5717,5386,5237,0,0,7710,7994,5305,8234,0,0,5372,5296,8375,8239,8149,0,0,5280,5708,8077,5342,8349,8772,7528,5485,8345,7738,7877,7994,8641,5325,8033,7935,7500,5274,7528,0,0,0,5386,0,7834,5688,8062,8022,7667,8239,8170,0,7800,8577,0,5573,7710,7521,0,5712,5320,8604,7710,7786,7628,0,0,8239,8149,5320,5578,0,0,0,0,7864,0,8302,8548,5291,7667,0,7957,7994,0,7605,7986,0,5578,7999,0,5476,0,8447,0,0,5476,8052,8387,7811,7800,7800,5726,8149,8052,0,8514,5274,5655,5320,7571,7605,8131,8190,5476,5377,0,5309,8179,0,8201,7779,7972,5325,5509,8721,0,8745,7663,5564,7952,8131,5274,8821,7972,8473,5476,5612,5459,7952,8119,8329,8033,5617,8745,0,0,8104,8062,7582,7558,7994,5459,5320,0,5325,8925,7706,0,5564,5708,5564,8312,0,8772,7687,7935,5726,5337,7849,5730,7952,7864,5419,8267,7853,5688,0,5564,7571,7982,0,8073,0,5291,8539,5291,5564,5464,0,5218,7805,5612,7710,0,0,0,7800,8936,7706,5407,5358,0,7972,7605,5726,8427,5325,7828,0,5301,5301,7986,7768,0,5564,5496,5629,5391,8560,7867,7706,8073,8136,7853,5573,8140,8354,8539,8033,5573,5358,8211,7904,5606,8438,8577,8527,0,5688,7681,5564,8144,5407,0,0,0,5655,5688,8451,7710,8005,8577,7898,8762,7478,0,5291,5329,8227,0,5573,7779,5606,8653,8227,5291,5647,5396,7893,5358,0,5280,8494,5325,5726,8005,7982,8140,5342,0,0,5688,7920,7930,8631,5285,8164,0,8140,5459,7710,8451,8249,8190,7888,5432,5578,5573,7877,7952,8676,7967,8919,8277,8909,8354,7768,5320,8093,0,8196,5564,5617,7681,0,7663,0,7723,7757,8370,5261,8082,8427,7610,8484,5301,0,8438,8164,8354,5291,8756,8010,7706,8062,5564,5329,8062,5480,8438,5606,5676,7706,5241,5485,7817,5606,7843,7790,7482,5329,8267,8170,7920,0,5661,8411,0,0,8164,8940,7478,5496,7786,7877,5352,7800,0,0,8617,8946,5622,7877,0,8519,5342,7930,8509,0,7972,7994,8438,8093,0,8028,8093,7706,8354,0,5476,5237,8033,0,8164,8033,8789,5337,5325,8073,7565,0,0,8140,8539,0,7628,5717,7500,7672,7849,0,8126,7817,7592,0,8387,8293,5337,8022,5661,8777,5642,5320,7834,8952,8239,0,7628,8073,5342,0,7834,5666,7516,7658,8762,8354,5325,0,8267,0,0,0,8170,0,8033,0,7521,5274,0,7952,7628,5666,0,5647,8033,5426,5688,8560,0,8903,7774,8539,7834,0,0,0,7877,0,5301,5612,7538,7538,0,5629,8456,7957,0,8451,5647,7864,8179,5381,5377,5325,8903,5285,5358,5666,5476,8104,8104,8312,5301,5437,7658,8312,5606,8170,7500,8010,0,7500,7696,8154,0,8297,8048,0,0,7779,5377,5651,0,0,8433,5712,7482,7746,5647,8005,0,0,5651,8164,8039,0,5651,8170,7920,5309,7599,5325,8249,5407,5529,8222,8811,7877,5301,5301,5688,5471,7616,8267,8033,5325,8297,0,7672,0,7952,8354,5296,7920,5496,7888,7877,0,8739,5617,5426,5534,5391,7710,7491,7653,7893,7491,7834,8857,0,7482,7888,5274,0,0,7867,7877,7653,8249,8354,8140,7542,5309,5261,7715,0,0,0,5241,7972,8104,7628,8711,5509,5442,0,7588,8959,5606,8739,8140,5342,0,5381,5407,5708,5285,7491,0,7491,7610,5372,8222,5401,0,7811,7672,7994,5274,8964,8073,5241,7605,7904,8249,5661,0,0,0,7675,5301,7687,5651,0,7491,0,0,0,5661,0,0,0,5261,0,0,5261,5291,5325,7565,0,5453,5708,5573,7478,8721,5661,8805,5661,8903,0,8772,0,5367,7500,5358,7487,8154,5241,7478,0,8489,8663,5391,7811,8144,5564,8663,5274,8196,7867,5347,0,8387,0,5699,0,8104,7972,0,8005,7542,8560,5476,8447,5241,8663,0,5391,0,7839,5291,7500,8267,0,0,5573,8479,7828,5717,5377,8062,8447,0,5301,0,5274,0,5237,8190,0,0,0,8277,0,7715,7558,5407,5358,7706,8093,8052,7898,5629,8539,5564,5274,8969,0,0,0,7734,5296,7994,5476,7491,0,7935,8052,0,0,5274,7877,7643,0,7653,7839,0,7706,8005,8110,0,0,7504,0,7982,8402,0,5699,8539,7935,0,0,7834,8239,5358,0,0,0,0,7555,8222,7616,8062,7839,5280,5377,7628,5666,8222,0,5325,5564,5274,8433,0,7719,0,0,7628,0,7663,7653,7883,5717,8539,7982,8334,0,0,8093,8349,8349,5401,0,5529,5655,8312,5564,8417,5237,8217,7883,8267,5274,7482,0,8217,5413,7982,7893,7893,7542,7930,0,0,5391,5606,8427,5407,0,5296,5564,5509,5305,8255,8239,0,7763,5717,8062,7628,7706,7888,8608,0,7904,8539,8190,8539,5358,7576,8174,8184,5476,0,7977,8245,7888,5237,7883,7681,5661,8227,8467,8721,7779,5413,0,5329,5325,8190,5320,0,5320,7982,8267,7877,0,8164,7864,0,7904,8527,0,5578,5501,8721,8201,5717,0,5464,8762,5377,8073,7542,7986,7610,7994,8427,5347,0,8136,5358,5480,5285,0,8201,8170,8312,5367,7994,5564,7849,8010,7877,7982,8925,0,0,0,0,0,8010,5459,8062,7710,8222,7482,0,0,8073,8821,5442,7616,0,5671,0,8267,5655,8387,0,5730,8438,8456,5717,8411,0,8052,5651,8119,8682,5358,7888,8104,8976,8589,7558,8297,8982,7790,8073,8422,7920,5564,0,0,7516,0,8514,7478,7706,7972,8033,5367,7849,8940,0,5730,0,5564,7648,7643,8456,7542,0,5237,8391,8005,5717,0,5708,8589,8617,7957,5655,5296,8179,0,7516,8136,7653,8762,5309,7746,8010,7864,5386,8062,8062,5529,5529,0,5358,0,5337,5476,5529,7730,7628,5301,5301,8467,8217,8052,7867,8873,0,0,8039,8201,7994,7994,0,8345,7500,8987,7946,7924,0,5642,0,5358,0,7946,8272,7511,0,7605,0,7706,8783,5476,8307,8467,8140,0,8073,8179,7924,0,5476,8184,8670,8543,0,8282,5305,7663,8869,5617,0,7972,7924,5407,8467,8217,5377,7994,8329,7972,5476,8504,5391,7982,8884,5476,5407,5342,7616,8222,7982,7982,5661,0,7924,5401,0,8869,0,5407,7605,7616,7834,5309,8519,7883,0,7908,5476,7491,5407,8869,8381,7839,7542,5529,8073,5651,8839,5651,7779,7706,7706,8087,5358,8073,5413,5432,8447,7994,7811,8010,7706,7511,5564,8608,8608,0,7706,8658,5480,5476,8073,7858,8073,0,8190,0,0,7628,7710,5329,5476,5301,0,5453,5237,7478,0,5666,0,7999,8397,8287,0,8345,7696,7628,8873,5564,8302,7811,5573,5448,0,5358,5459,0,8539,5301,0,7653,5437,7786,7558,7957,5305,5651,8349,5708,7883,7605,5464,8010,8919,8316,0,8762,7982,7994,5325,7710,7516,0,8334,5407,8077,7632,5325,0,0,8077,5476,0,5509,8387,5280,8073,0,8093,8811,8154,8370,0,7946,8005,8433,0,7843,5358,7811,8312,7742,5407,5377,5342,0,8217,5708,5407,5305,7952,7908,8345,7538,8745,5501,0,8898,8052,7888,0,8716,0,5381,5564,8994,0,8227,8077,7800,0,7839,0,8144,0,8539,5564,7681,8443,8494,7893,7774,5352,5391,0,8110,7706,5496,7533,8073,7800,8548,7839,7952,5325,5347,0,8249,7746,7533,5329,8498,0,7511,5476,7752,5301,5301,8833,7605,7643,7914,7710,5426,7599,0,8154,7920,0,5712,7935,5712,8783,8170,8417,0,8447,8613,8093,8387,0,7706,0,0,7898,0,8115,5381,7628,7528,7930,7904,5480,0,8255,5337,8539,5381,5305,8119,5261,7706,5261,5651,7883,5476,8845,8845,7853,0,5529,5476,8805,7681,8711,7511,0,5301,0,5329,7500,8451,7904,7511,8170,8427,8170,0,8443,5274,7972,0,0,7972,0,0,7986,0,8845,7864,7715,7548,8539,7834,0,8845,0,7843,7628,0,8136,8370,5396,8427,0,7957,7877,5459,7994,8190,5372,8438,0,0,0,0,0,5480,8433,8739,8909,8028,8149,5329,5476,5661,7834,8745,7734,5442,5274,8721,5381,8277,8249,7491,0,5301,7482,0,0,8909,7628,0,0,5496,8762,8062,0,5237,0,7706,0,8467,5325,8267,7565,0,8560,5655,7982,0,0,5381,8456,8811,8190,0,8479,8255,7839,5459,7904,7681,5509,7839,7972,8126,7478,8222,7883,7904,8316,0,0,8484,7952,7839,5337,8467,8149,8484,8998,8028,7864,7864,5426,7849,7834,5647,8201,5413,5568,7805,0,7706,8467,0,0,0,5730,5464,0,5676,8005,7864,5325,5305,5248,8222,7478,5655,7500,8245,7710,0,8827,7538,5568,7834,8179,0,7849,0,5347,8316,7628,8560,5386,5301,5501,7734,8093,5708,8190,5476,8190,8249,0,5666,7834,8222,5459,8093,5391,5285,8577,5485,8170,5377,7920,8461,5285,8359,8201,8539,7811,5642,5301,5651,0,0,0,8504,0,0,8647,5329,8093,5476,7774,5261,0,5320,5480,5305,7849,8964,5224,5352,7643,0,8039,8201,5301,7877,8126,8451,8249,5612,8322,7972,8582,5358,5708,8249,5274,0,7853,0,7994,0,0,0,8149,7877,8447,8447,5301,7582,8170,5407,5564,8302,7687,8272,5407,8789,8387,5485,8811,8539,5407,5712,8245,5407,5617,5661,5437,8211,5301,8234,7628,7738,5578,7924,8641,0,7849,7757,7994,8267,7687,5726,0,0,0,8805,7786,0,8936,5564,8964,7738,7738,5314,7653,5255,7849,0,7576,8073,7511,7555,0,8174,8539,8302,5377,7908,5377,7706,5325,7710,8994,5309,7990,5301,8170,5726,7986,7786,5280,7706,5274,5407,5391,5274,7663,5396,8170,8115,5642,0,5325,5496,8795,0,0,7834,0,0,8316,7823,8354,0,7710,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5476,5693,8898,7706,8987,5367,0,5305,8015,8589,8987,5367,5325,8201,7628,7746,5671,5442,5442,5622,7867,7920,5391,5391,5688,5224,7491,8827,7582,7487,7558,9003,5688,7779,9003,5337,7779,7834,5224,8940,8234,8484,5717,8387,8322,7548,5325,5381,8527,8721,8732,7877,7516,5314,7605,0,5509,7883,7994,7605,5485,5301,8170,8959,5564,5476,5476,8716,0,8484,8484,5578,5642,5476,0,7972,7478,7687,7982,8048,5333,7548,5255,8334,8255,7982,8625,7558,7558,5476,7482,0,7763,8484,7706,7491,5237,7521,5671,8484,0,0,5320,0,5391,5325,7700,7977,0,5391,0,0,8349,8375,0,8613,5529,7834,5564,8302,8136,8811,0,0,0,0,8811,7710,7952,8811,8375,7516,5476,5291,5333,0,7628,5241,5391,5391,7696,5573,7628,7628,7628,8267,7982,7706,7478,5485,7487,5342,8682,8682,8387,5661,8387,7706,8387,5325,7853,7599,8756,7738,5285,8370,5476,7877,7946,7715,0,7521,5485,8805,7779,7521,5485,7491,8196,8073,5337,5661,7883,5401,7888,7994,8504,8504,5325,0,7599,5476,5391,8504,5333,5693,8115,5309,7734,5442,7904,8015,5309,5381,5224,8705,8827,9008,8589,8099,0,8777,5209,5391,7738,8015,5564,5274,5274,5480,8062,8316,8504,7542,8811,5476,8539,5491,8093,5476,8783,8227,7730,8987,5476,7715,8514,8504,7977,8783,7924,7542,7548,7920,5509,7478,5407,5381,5642,8527,8777,8504,7599,5501,8539,7565,7548,7706,8456,7628,7757,5471,7752,5476,7528,8756,5476,5325,7663,7478,5325,5564,8048,5519,5309,7930,7883,5564,5629,7548,5337,8154,5296,7628,8402,8732,8589,7994,8732,7935,8387,5274,8987,8227,8099,8777,8329,7528,7994,7605,7710,8190,8293,8073,7786,8447,8447,5661,8282,7500,8093,7576,7914,5726,7487,5413,7487,7977,7920,5476,7487,7663,5241,7828,7653,8349,7883,7605,8201,5726,5358,8670,7839,7994,8539,7605,7571,5337,7924,5377,8427,7849,5358,5480,5617,7628,5476,9008,7571,5568,8381,8316,8447,8190,5726,5218,8631,7542,0,9012,0,8456,8359,7849,8149,7521,5717,7924,8126,8048,8391,7977,7696,5224,5325,8727,8154,7952,7768,7681,5285,7839,5476,5391,5426,7914,5480,8795,7972,5671,8277,5476,7710,7473,8687,5301,7482,5391,5651,7605,7500,5337,8345,5329,8711,7696,8099,8316,5496,7710,8329,7817,7576,5476,8613,5407,5367,7977,5437,5329,0,5285,5655,8604,8255,7908,7637,8381,8789,5309,7478,5730,7592,7558,5655,7571,5442,8196,5329,8170,5320,8805,7914,5480,8073,7823,8052,8411,8422,7628,5237,8140,7864,5688,7500,8582,7692,7478,7667,5476,5564,7843,8443,8255,5301,5218,7643,5485,5274,8589,5213,7588,5564,5237,5301,5564,5255,8222,7628,7487,5367,7528,5519,7628,5377,7935,5442,0,7834,9016,5301,8277,7487,5407,5519,5564,7849,8170,7675,5213,5407,8473,5573,7893,8527,8387,8345,7930,7628,7528,5358,5407,8227,7710,5224,8365,5642,8402,9016,5509,8277,8777,8548,5717,8721,7930,5606,5320,5320,8514,8479,8772,5291,7805,5426,5352,5629,5730,5476,7706,5377,8811,5485,5381,5342,8227,5381,7565,7972,8571,5676,8548,8170,7542,8447,8099,5314,7994,7632,8022,8873,7643,7582,5209,8543,7478,8170,8716,7774,5407,8533,7491,7972,8302,8745,0,7616,7558,5407,7834,8699,7548,8104,7977,5381,7994,7628,5224,8893,5377,7994,7858,7834,8527,5629,8494,7864,5661,7935,8119,8795,8539,7571,5496,8805,7930,7491,5464,5642,8427,5442,7834,5337,5407,7500,7687,7839,5564,5358,7972,8548,7746,5325,5476,5661,8329,7487,8676,8604,5655,7742,7853,7853,7930,8925,5329,5381,7994,5501,8227,7952,5448,7972,7588,5367,5564,8467,8164,5301,8613,8267,8131,7538,7898,7828,5629,8052,5381,5237,5261,7542,5291,8777,5573,8589,7930,7675,5218,5642,8772,5612,7924,8048,5224,7977,5491,5437,5629,0,8888,5573,7495,8179,5666,8402,5218,5372,8548,5352,8022,5708,8732,7628,8533,8694,8987,8322,5485,7710,8302,7653,8015,8745,7834,8539,5237,5329,7930,8647,5309,5401,5329,7800,7542,5274,8772,7616,7582,5622,7521,5261,8255,7592,8422,9021,7734,5237,8149,8227,8687,8239,7706,8919,7877,7994,5325,8010,5296,8732,5407,7883,5285,8484,9026,5501,5274,5291,7864,5285,5407,8316,7516,8073,7786,0,7588,5274,5419,8438,7491,5309,7977,8255,7920,8527,7576,7663,8159,5476,7667,8789,7877,5476,8903,5485,8190,7908,5407,5573,7883,5285,8302,5437,0,8888,8345,8613,7658,5442,7637,5347,8447,5309,7542,8249,7478,8381,7723,8447,8227,8577,5666,5329,8582,8222,8762,8473,8365,7972,7487,5337,8052,8033,8033,5301,8909,7994,7610,5573,7877,8261,5320,5296,5301,7632,8365,7495,5629,7834,5666,7700,7696,7478,8267,8365,8467,7504,5248,7999,7504,5274,8687,8217,7990,8217,7746,5647,8227,7696,8217,7696,7528,5647,7487,7834,7834,5391,5391,8903,7542,8307,5501,7790,7914,8307,8126,5485,5301,5464,8613,7599,8028,7768,7779,7628,7904,7817,7511,5237,0,5347,7817,5606,8721,5426,5224,7706,8170,7828,5209,0,7924,5407,8087,5325,5476,5325,7877,7592,0,8297,8028,8467,7790,8461,8297,8604,7592,8604,5437,7795,7592,7790,7576,8711,8131,7500,7746,5651,8164,7482,5661,8795,7667,8789,5476,5651,5391,8721,8249,7548,8170,8467,8391,5568,0,5564,5661,5651,5224,7582,7658,8461,8527,5224,7982,5248,5291,7982,8582,7491,8873,7533,5564,8438,7582,5274,8577,5367,5407,5485,5320,5712,5647,7706,7786,9032,8022,5485,7779,8745,7757,8093,7582,8811,5407,7482,8694,5476,5301,8777,8391,9038,8402,7487,7888,5309,7516,7516,8381,5237,8762,5325,8010,8010,8010,8527,8170,5573,0,8527,0,0,5564,8527,5255,8527,8509,5464,8509,8811,8919,5255,5726,7504,7908,5647,5708,5573,5325,8903,7653,7653,5372,8479,7757,8479,8504,8504,8519,5501,7867,5476,5325,8795,7542,8879,5573,7752,5325,7883,5426,5396,5509,5291,5301,8354,8577,7511,8115,8461,8519,5564,5573,5726,8170,5261,8438,8093,7548,7533,5432,5381,5381,8222,5301,5261,5432,7877,5485,7795,8682,8479,8519,8005,7692,7888,7696,7972,9045,7768,5496,7839,7990,5381,7952,7839,7952,8509,7888,5325,5377,5485,7957,8682,8115,8467,8451,5529,7990,7986,7542,5496,8519,7795,5407,8451,5301,5377,7893,8057,7877,7706,8519,5209,8461,5509,8073,5325,7888,8745,7834,5314,5407,5325,8073,7834,8170,8154,8119,5407,7888,8676,7478,7795,5564,8119,5407,5717,7687,8509,8519,5676,7877,8641,5329,5301,8998,5261,8647,5568,5285,7795,8255,5291,5396,7687,5314,5401,8170,7920,7511,7952,5285,7952,5407,5407,5629,8154,5325,5407,5476,5407,7972,7877,8498,5305,5301,7605,5301,8387,7768,8282,7817,7977,7478,8349,8577,5309,8946,5661,7972,7582,7605,8293,5381,5726,8670,5476,7605,7622,5301,5485,8149,8149,5676,5568,7924,8631,7675,8711,8582,5381,8577,7849,5391,7990,5485,8052,8073,8438,7710,7843,5218,5218,7746,7990,8329,5676,8745,5329,8057,8249,8277,5333,8509,7746,7582,7500,7500,8795,7478,5476,8329,5534,8119,8149,7715,5329,8647,5391,5325,8196,8322,5285,7768,7924,5476,5291,8010,5676,8316,8170,7883,5661,8349,8329,8329,5329,5301,7935,8261,7768,8222,8670,8267,8484,8222,8131,7478,8267,0,0,5671,5671,8222,8827,0,7504,5352,8170,8272,5717,7734,8345,8174,5564,7817,8245,8484,7723,5358,5396,7930,5386,7710,7565,8484,5476,8925,5419,8756,5419,8582,7982,5367,5726,8411,7952,7867,8205,8582,7893,7982,7853,7952,7952,5296,7883,7952,5401,5401,7940,8762,8484,5726,5237,7920,5726,5476,5280,7834,8411,8447,5726,5391,7528,7542,8184,7730,8443,8119,7478,5296,8282,5391,5237,5509,5396,5661,5509,7930,8443,5314,5661,7883,8349,7823,7883,5325,8073,8952,8201,8582,8411,8201,8427,5280,5329,5337,5329,5237,7795,8494,5661,5381,5381,7994,8608,7723,7972,7790,7482,7994,8670,5325,5699,8375,5391,5676,5661,7500,5309,5699,7478,5325,7864,8745,5237,0,7653,8427,7864,8805,5301,5578,7653,5301,8387,8387,7834,5617,7972,7687,8334,0,7849,8387,7972,8604,8334,5377,5301,5617,5730,8805,8397,8451,7893,8467,8604,8467,7521,7834,5301,5291,8302,7828,5573,8484,8196,5708,7952,7834,7487,5301,8227,5347,5301,7834,7834,8467,7487,7817,7516,5688,5726,5726,0,5666,8762,5274,5622,8589,8179,8179,8179,8179,7663,5491,5337,5496,5325,5337,8617,8010,8087,8625,7904,8048,8893,5391,5320,5314,5726,8087,8411,7500,7977,7533,5448,5524,7994,5448,5459,7872,8827,5568,7786,8170,8093,7795,8272,5568,7972,5285,7999,7904,5693,7990,7658,7710,5391,5337,5688,8312,5661,8052,7487,8772,7710,5333,7757,5325,0,8062,7763,7500,8211,7710,5717,8190,5642,5209,7849,5325,7757,8879,8316,8391,5730,5301,5647,7521,7687,5367,7491,5329,9051,7538,7742,5529,5476,7667,5442,7516,8068,7482,7893,5358,8196,8196,5381,8201,8998,7904,5471,5501,7864,7653,8805,8560,8598,7706,8062,7972,7914,7478,7478,8783,8884,5529,5237,7805,8307,7752,5730,7742,7478,5524,8387,7667,5329,7864,40,5712,7663,7706,7558,7478,5524,5564,915,2998,7710,8119,8884,8068,5564,5476,5491,7742,5301,8126,8467,7908,3123,8322,7478,1325,3137,7768,9054,7752,8447,9059,8093,8297,5337,8539,7576,3194,7576,8964,5237,2957,1400,5255,5209,7786,5209,7994,7500,7849,5386,5367,8456,2806,7675,7914,7982,8391,8245,5726,8170,9062,8925,855,7888,670,8174,5358,5564,819,2654,7687,7849,8370,8484,5218,5564,5699,7576,50,9012,7786,9012,7571,8201,7610,7582,8381,0,7487,5274,8154,7706,7696,7864,8687,7687,5237,5476,8577,5209,7763,5651,7972,5642,5325,7576,5717,8952,8365,7675,7990,5296,826,8359,8272,5274,2675,8190,5519,8082,7834,8149,5476,7663,8751,7914,8316,8062,7504,7710,8631,5201,5437,842,2950,5213,7521,7663,8727,8582,8387,8245,7675,5358,8354,2792,5396,1620,7908,7888,2537,5325,8789,8711,9067,8052,8467,7610,855,8211,5717,7864,7710,8670,5301,8136,8443,2665,7692,7675,852,1783,8073,5578,7687,2816,836,3009,5333,5342,2830,8201,7653,7946,8845,8851,5717,5337,7834,7786,7786,8126,7653,5612,8104,5476,7663,7977,5647,5274,36,5301,5237,5629,7571,5688,124,7478,121,8387,8307,28,60,8196,7538,32,4535,905,1518,8149,139,5612,5372,7811,5030,8302,5325,64,371,8527,106,7982,7706,8087,7994,9045,8227,7696,5301,8322,8345,5381,9067,8184,7628,2381,8277,8302,162,5480,7982,7663,7576,26,8800,5314,5314,8987,8539,7946,5347,9051,7675,7521,8068,7478,7752,8402,8302,7982,7706,32,8272,7883,7883,852,1775,109,1318,8287,7849,8387,7706,670,8456,7779,5274,7920,8302,7986,8115,2409,2418,8994,2440,7719,5622,8077,2468,2475,2213,2216,7768,2229,8073,5693,7843,7675,2261,2265,7710,5377,8345,8484,7883,7990,5218,7994,7823,5261,762,56,7986,5381,5730,7653,5459,7576,7637,8082,9071,7628,7482,8365,5642,8494,7746,7982,8267,8732,5296,7811,7811,5237,7849,5325,8005,2792,7994,8302,7500,5464,8762,8077,8190,7779,7628,8940,7710,8255,7834,7883,7440,8179,5301,9067,7687,54,7622,7616,9054,0,8005,5237,7628,5381,7957,7692,5514,8154,5377,5642,7849,9051,5519,8322,7719,5218,7588,8062,5661,5476,5612,7538,5496,8370,7990,7738,8940,5606,8613,5448,8631,5325,8334,7478,5274,5391,5717,5209,5381,7632,5534,8631,7487,7710,8052,5612,7977,8370,5612,8196,8077,7849,0,8159,8044,5717,8136,9075,7663,0,8316,5358,5708,5708,5401,8402,5578,5305,5448,5448,8772,8539,7706,5285,5248,5285,8509,8772,8589,8340,7977,7663,7675,8647,7957,5205,7786,7675,7982,5296,8039,7742,5274,8115,8227,7500,8312,8407,7538,7538,7982,5666,8762,5205,5629,7491,5413,7616,0,5285,5651,7675,5396,8349,8297,7571,5352,8149,7675,5325,7605,8783,8005,8397,7675,7487,8052,5564,8239,8255,5237,5519,8772,8772,5305,8329,7864,9021,8010,7710,5296,8365,8519,8140,7883,7628,8068,7558,5285,7491,5237,7706,8052,5401,7500,8919,5296,7482,7734,5291,8196,8329,8077,5329,7487,7834,7616,8245,7883,7628,7576,5309,8789,8354,5296,7706,7864,5372,5476,5391,5285,8467,7663,5218,5291,7908,7628,9054,8479,5717,7528,5471,8903,0,8159,7920,7920,7482,8397,8381,8539,5347,7738,8154,8613,8052,5367,8387,7888,5237,5442,5325,5309,8052,5377,8227,0,0,8936,5377,5329,5296,8073,5337,8077,7482,7982,5305,5464,5578,5301,7511,0,7700,7675,5305,7834,5301,5329,7610,5564,7883,8033,8751,7920,7521,8154,5305,5237,7888,7692,7834,7877,7616,8261,7828,7986,7738,7675,5285,8287,7811,8154,5622,8077,7675,8936,5301,7877,7637,5301,5476,7632,7700,8365,7588,5237,0,5407,24,7605,64,8077,7700,836,2998,7994,5296,1311,5688,7487,2675,5407,5296,7528,7482,7823,8641,8641,5471,8756,2947,7592,1400,429,8827,7982,1620,8467,5337,2599,8653,8827,7994,5647,7994,8099,819,8658,2651,8093,7786,852,1783,8039,5647,5337,8039,7482,7643,7734,7628,9080,8467,8099,7768,7628,8745,8039,8732,7994,9085,7768,9092,9097,8467,8467,7864,9104,5647,9113,8641,9122,5296,5476,8467,9130,8375,5647,8387,9137,8805,8119,9146,9152,9157,8387,5437,7994,5717,9164,7478,7952,7920,5476,8539,9172,9181,5655,5314,9187,9193,9201,9206,8582,8227,7706,5034,9214,5325,9220,7972,7972,8282,9224,9230,8196,9235,7667,9240,8068,7565,5501,8543,8772,8795,7920,7571,8946,5358,9247,9253,9259,9263,7908,8539,5485,5407,8772,5301,7904,7478,5501,8863,8312,7533,5629,8653,5726,8772,7972,5480,8811,5255,7828,7795,8447,7658,7920,7592,7924,9008,5708,7511,5688,7715,7990,8131,5529,7904,7710,7935,8093,9272,5564,7982,842,7805,7986,7610,7610,5329,9278,9281,8174,9285,5426,7582,9288,2462,5329,9298,9301,5666,5671,7482,5730,2465,7999,5564,8687,5642,7888,9305,7952,5496,7924,7482,8048,8131,8467,5459,5661,8800,7592,9308,7864,9312,7828,9316,7478,7473,9320,76,2406,8509,2468,5386,8345,5426,9326,7811,7898,8456,9329,5476,7482,3679,7500,7805,8433,8845,7663,9332,9335,5699,5218,142,9338,429,8349,7843,4262,7558,7834,5309,2422,5666,8577,8201,7558,9341,303,5391,8329,8039,2274,7491,8184,8539,7628,8201,8387,5676,5342,7920,7558,5509,8170,8099,5241,8571,5248,7582,5491,8772,8345,7774,5320,5413,8795,7972,7888,5476,7972,5476,8456,5325,9032,7706,5514,8170,8447,7692,7990,5629,8653,8447,5407,8217,5309,8461,7628,7864,5352,7786,5647,8873,0,8387,7542,0,8345,0,7888,5386,5647,7558,7482,7643,5358,5401,8039,5459,5622,5730,8222,8222,7628,8539,7790,5381,8821,7864,8845,8795,8548,7628,5464,7864,5642,7834,8222,5325,5712,8227,8762,5480,7482,8527,7548,5381,5655,8527,8461,8732,5407,0,0,7521,5464,8873,8676,0,8190,5325,5325,7908,7616,7738,7558,5218,8509,7588,7588,5391,5651,7738,5534,7558,5647,5629,5699,7548,5301,5352,7898,8159,8205,8217,5606,7478,7558,8329,5717,5655,7663,7817,7834,8795,5606,8467,7752,5661,7511,0,7843,8227,5352,5413,8033,8140,5329,7742,7542,5712,5305,5622,8617,5320,7957,7710,7800,8473,5485,7706,5320,8539,8015,8795,5218,7828,8033,7972,5237,8039,8322,5309,8539,8987,7715,8402,7834,7738,8833,7706,8322,7779,0,8863,8255,8833,7500,5261,5261,7904,7734,7908,7582,8010,5699,5305,5471,5471,5471,8539,8119,7888,7888,8772,8919,7478,5501,5464,8772,8245,7491,0,0,7628,8322,5325,8255,8800,5476,7920,5358,7828,5419,7491,5218,8073,8772,5347,8170,8359,8903,8261,7542,8329,5347,5237,7849,7663,8387,8479,8052,8821,0,5666,8582,5329,7834,8772,7994,8359,7610,7610,7872,5301,7516,8261,0,8329,7834,5666,7904,0,5391,8504,0,9345,9345,8119,5476,8349,7990,7605,9345,7982,7982,8653,5476,7982,7500,8653,8087,8211,9021,8087,5476,7972,7786,5573,5419,8527,7930,0,8411,5342,8658,8093,5564,7571,5367,7504,0,5386,5367,8005,5237,8082,8467,7790,7588,7888,7888,7491,8745,0,8131,8131,7706,8249,8249,7482,8154,8033,8245,8115,5606,7658,5564,8625,5642,7924,8560,5524,5391,8543,7658,7853,7834,5358,5476,7473,7977,7888,0,8582,8267,7977,8994,8869,5401,7811,8539,7834,8174,7768,7706,8716,8527,5661,5501,7828,0,8005,7967,7811,7706,8509,7687,8543,5476,5419,8272,8205,8543,5237,7521,7893,7757,8329,8946,7828,5708,5617,5534,7533,5708,7478,5708,5419,5401,7888,8267,5419,5391,5501,8154,5358,5401,7888,8293,8293,5693,8716,7542,5407,7738,8484,7823,5496,8052,5274,8010,5325,8851,8613,7893,7599,8062,9345,5564,7538,7883,8504,5564,5485,7834,5661,7752,7548,8994,8762,5325,8946,7548,5642,5309,8267,7622,8456,0,8354,9345,8816,7834,8136,7528,5501,5358,7628,5480,8527,8467,7565,7478,7628,7952,8762,7904,8447,7576,5314,7999,8245,8716,8467,7853,8190,7972,7864,5712,5305,7706,5358,7914,7867,7864,7849,7500,8048,5241,8438,8282,7715,5564,8093,5209,5209,5391,8297,5261,7924,7800,5381,7786,7487,5426,7994,5209,8170,5261,8751,8504,5642,8316,5419,5320,5325,5671,8987,8144,5676,5285,8131,7715,5407,5407,5476,8184,7972,5325,5325,5274,7946,8687,7667,7473,7834,8391,8577,8456,7834,5337,7834,5496,7914,7482,7710,7952,7768,5209,8022,7994,8062,8631,7957,8387,7648,5285,8375,5255,5274,8670,5301,7558,7675,8211,0,5612,7478,7994,7990,8277,8287,5693,8929,5426,7823,7628,7495,8456,8028,5676,7914,7972,7653,8539,9345,7864,8751,8422,7653,7746,7478,7834,7478,5237,7834,7628,7487,7628,8631,0,5274,8170,5726,8839,7706,5274,8863,7582,8227,5329,7663,7864,7864,7957,7746,8827,8057,8170,8312,7774,5693,5509,8473,7675,5320,7706,5296,5564,7864,8494,8772,7893,0,5381,5606,8447,7768,5485,7643,5485,7542,7828,5426,7982,8631,8277,5358,7482,5442,8287,5564,5485,8099,7834,5347,8653,7482,8387,0,5301,7828,5274,0,5396,7616,7877,7914,8805,8903,5642,7478,7823,8893,7977,7853,7500,7628,7994,5377,8110,5712,7883,8821,8196,0,7478,7542,8104,7790,5564,5381,8676,5237,7548,5712,5464,7746,8345,7616,8190,0,7994,5712,8467,5655,5688,5377,5661,5480,5401,7790,8297,7487,7858,7994,8631,8484,7982,5708,0,0,7500,7853,7952,7967,5642,7920,5237,8467,7616,8164,8613,7710,7511,5712,7533,5708,7538,8131,8005,8196,7977,5514,5655,8467,5496,5218,8391,7616,5325,7588,5453,5274,8272,8334,7843,5386,8222,7663,7920,8751,5476,8647,7628,5666,8190,7800,5476,8015,8756,5218,8447,5301,8539,7952,7834,5309,5622,8227,8604,7653,5362,8149,5305,5578,7982,7982,5708,5362,8322,0,8959,7786,7478,5285,5480,8427,7790,5274,5274,5305,8239,5401,5396,7952,8919,7972,7500,0,5396,5237,5296,7648,5237,7834,7877,5285,5712,8010,8010,5274,5476,7994,5285,5564,5391,5358,5261,5342,8322,5401,7811,0,5453,7582,5476,8179,7663,8929,8766,7538,7681,5442,5309,7839,7628,8751,0,7500,8716,7834,7658,7616,8179,5453,0,7616,7746,0,7538,7914,5426,8447,8762,7511,8467,5347,7834,8617,8093,5285,8929,5347,5274,7616,8617,8952,7768,5651,5301,8375,7834,7605,5347,5209,5381,5291,5291,8571,8267,5209,5209,8879,7962,5564,7930,5209,7675,7528,8249,7487,7658,8222,5325,7786,8293,5529,0,5622,8370,8375,7962,8359,7763,8827,7542,5320,7877,8387,5209,8447,5564,5209,5301,5529,8073,8613,8277,8077,8077,7616,8375,7746,7605,8164,7738,7952,8533,7723,7628,8087,8345,5647,8022,5509,8110,5642,8062,5476,5485,9032,5651,7605,8903,8062,8548,8721,7576,5693,5509,5476,8222,5391,5391,5248,7914,7990,8190,5391,5337,7811,5476,7681,5391,5274,7817,7558,8658,7817,7675,5437,7687,8222,8370,7834,7675,7977,7914,8033,8164,5464,5651,5568,8739,8888,7588,7774,8365,5325,8467,5325,7482,5651,5568,8745,5699,5655,5407,5564,8381,5224,7811,5712,8196,7653,7628,5391,8381,8196,8381,7972,7628,8222,8739,8381,8196,5305,5496,8170,7795,8196,7982,7478,8239,5391,7605,8533,7914,7994,5661,8739,5296,8239,7667,7811,5476,5476,8222,8196,5248,8222,8527,8879,8217,7487,8329,8479,7672,8217,8087,8312,8527,5622,5564,5617,7990,5419,5419,5622,7994,9021,8329,5320,8217,8479,7675,5325,8670,7696,7696,7696,5205,5407,5320,8033,8987,8987,0,5205,8227,8239,5274,5274,0,7599,7599,5337,8239,8239,5642,8211,7599,7599,7599,5205,5642,7888,8005,7548,8484,8811,7786,8811,8422,8811,8811,5391,7482,7710,8898,8447,5309,7994,5453,8170,7920,8554,5237,5358,8170,5381,5606,5726,5377,5381,7478,7757,5391,5391,5255,5325,5661,8033,5237,8447,8427,5237,0,7800,7864,7957,5255,5377,7893,5320,5661,5647,5329,5329,5237,8554,5329,8170,5661,8170,5291,8239,5291,5320,5237,7935,8068,8447,5261,0,5274,5301,5529,0,0,7610,5476,7706,8504,7478,7653,7914,7628,5573,5342,7706,0,8354,8282,5642,8608,8387,7478,5381,7864,5325,7542,5501,8467,7706,8433,7542,7706,5496,5381,5726,8461,5274,5708,5347,8479,7904,7571,7571,7924,8170,8461,7990,8131,5529,7930,5301,7681,8170,7834,5564,5519,7977,8093,5480,8456,5337,5491,8582,8354,5726,7982,8312,8438,8345,7681,8093,7710,0,7582,0,8005,5519,7790,8316,5529,5476,0,7849,7990,7632,7864,5564,8329,5459,5329,8345,7696,5671,7768,8316,5476,7715,5391,8345,7994,7982,7972,5651,5301,5325,8316,7994,5337,0,5367,5301,5642,5285,5241,8375,5285,7864,7864,7628,7491,8201,8255,8658,8527,8527,5386,5301,5337,5274,8062,8479,7914,7558,5647,8845,7667,8052,5367,7482,7628,7843,8795,8149,8277,5274,5699,8571,5248,5248,7738,0,5396,8170,8277,7706,8438,8653,8653,8443,7786,8402,8387,8387,8461,8099,8099,8873,5291,7888,5241,8039,7482,7582,7653,5241,7994,5642,7920,7834,8022,5381,5413,8443,5291,7582,8427,7786,7482,0,8115,5464,7628,7994,7924,8527,5688,5471,5377,5476,7972,5391,5437,5642,7864,7605,8795,5329,7834,5712,8811,5325,5325,7811,8805,8119,5712,7542,7478,7628,8548,5347,5291,7834,7834,7994,8548,5496,5342,8164,0,8196,7628,0,7957,5647,8217,5237,5534,8777,8903,8062,5381,7663,7511,7478,8022,8255,5209,7994,5413,7828,8451,7542,5218,8077,8451,5325,0,0,8022,8548,5419,8239,0,7877,5459,8433,5693,5647,7957,8015,8427,8427,5708,8340,5726,8322,8397,8397,8479,8479,5237,7628,8073,7610,7521,8554,8073,8196,5285,7834,8149,8427,7516,8239,8239,5309,8919,7888,9021,5285,7952,5642,8255,5642,5291,8427,5476,5529,5386,7491,7491,5476,7864,5274,5325,5661,7990,5237,8539,5708,8397,0,8447,8164,8479,8093,8925,7628,8354,7482,0,5381,5301,5342,7610,7610,7828,7616,5237,8170,7877,7616,8005,7834,7994,5386,7768,8783,8498,8375,7828,7828,0,7834,7834,7834,5386,7834,8732,7952,8732,7576,5464,5485,8329,8783,8783,8577,7817,7571,8255,8170,7817,0,7478,0,0,7637,5688,5688,5325,5476,7487,7904,7972,7999,7521,5476,5309,8329,5676,0,8329,5309,5564,8925,5358,5391,8201,5693,8952,8010,8077,5391,5501,8994,7972,5237,7982,7883,7994,8015,5629,5491,7538,8456,8994,8964,5564,5401,7972,7576,8073,7972,8539,5305,5476,5476,5255,5280,5676,8613,8952,5491,5241,8839,8255,5655,5391,8658,5237,7898,5491,7952,5442,5255,8015,8302,5509,5491,7994,8227,8302,7706,8115,8039,7790,8762,5730,5241,7500,5651,7994,8494,5564,5476,7898,5255,0,7817,7533,5464,8479,5651,7977,8909,5296,7548,5261,7800,7715,8473,8039,8115,7715,7898,8015,7592,7877,5564,7972,7982,8010,8519,5358,0,0,5651,8255,7877,5501,8249,7898,5442,7763,5573,5381,5274,5347,8811,5255,8184,7542,5224,5224,5426,8811,5642,7811,5337,5337,5325,7834,7920,8805,8115,8687,9345,5305,8745,5358,8196,5471,8519,7952,8387,8126,5381,7500,5329,7478,0,7692,7616,8539,8174,7828,8387,7622,8845,7839,5564,8316,8334,7893,7521,5476,7972,7681,7972,5519,8762,7571,7675,5647,7952,7692,8334,8805,5337,8201,5693,7558,8277,7930,5325,8345,5320,8756,5218,5480,8022,5320,8745,7628,7628,7622,5448,8604,7521,7893,8484,7849,5296,7511,8302,5401,7843,5448,5407,8057,8745,8484,8484,8196,5708,8144,7957,7482,8239,5491,5329,5476,5573,7877,5647,7487,7528,7622,8227,7478,7893,8687,0,7908,5358,8322,5661,7516,7516,8239,5329,0,7616,5274,8805,5218,5301,8805,7482,8329,7834,8805,8539,8312,5407,5296,8716,5296,7817,8184,8509,8411,5476,7706,8789,5501,8170,7834,5476,8205,5358,5476,5476,7696,8589,5391,7696,5391,5391,7817,7757,7482,7982,5564,8062,7478,8422,7710,5419,7904,7914,8539,8015,5291,8272,5564,8539,5651,5274,7982,8783,8293,5485,5655,5476,5651,7768,5509,8670,8893,8190,5485,5471,8015,5419,8322,5352,7883,8322,5358,5358,5617,7883,5407,8131,0,8048,5358,5568,0,5432,7675,7883,8144,8322,8062,5651,8144,5509,5291,5325,5325,7952,8903,5329,5329,8641,5296,7972,5296,5296,5476,5476,5476,5476,8154,8154,5261,5426,7752,8316,7834,7834,7628,7710,7774,8473,7757,8888,5352,5218,8647,8015,7616,7710,7710,5314,5480,5325,8334,7548,5476,7599,7935,5358,7710,8093,5564,7599,5241,8140,7599,5485,5491,5237,8329,8727,7924,8359,5329,5730,8631,7558,7972,7500,5485,5647,8827,0,8277,8827,8407,5213,5237,0,7706,8227,7972,8827,7576,8277,7628,5661,5381,5407,7710,7977,8411,5464,5564,8329,7994,8334,5642,7994,5237,5241,8647,7710,8407,5241,5241,5432,8407,5248,7935,5285,7994,5285,5296,5712,7610,7521,8222,5726,7528,5320,5358,5476,5333,8504,8479,5693,5671,5325,8504,8504,7877,8772,8594,8594,8811,7706,5391,8879,7972,7599,8211,5237,8010,7616,5606,8438,8438,7548,5248,7478,5325,7478,5237,7491,5337,5509,8827,7548,7908,7628,8411,7972,7706,8402,8033,7658,8068,7542,8184,7643,7504,8816,7599,5274,7528,8756,7982,8509,5501,8359,7658,8022,7478,7742,8227,8519,8170,5476,8222,8783,8438,8456,7571,8982,7924,5568,8282,8293,5386,5241,8994,8201,8964,7786,7982,8170,8245,5401,7487,5442,8539,5491,5476,5647,5337,5564,5325,5352,5426,8467,8447,8625,5564,5237,5358,5337,7867,8190,8827,5224,5464,7500,5573,7920,5237,5237,8772,0,8548,8217,0,0,5476,7710,8504,8329,5391,5237,8149,7946,8582,7715,7972,5661,5401,7681,5464,5459,8052,8571,7952,7946,5237,7675,5320,0,7473,5688,7924,5296,5296,7710,7977,5476,7504,8625,7516,5296,5209,7500,7710,7521,8293,8727,8869,7990,8316,5606,7817,7768,5237,5280,8354,5352,8800,8407,5296,7864,0,8316,7834,8509,8604,5386,8267,8211,5218,5218,8467,7920,8653,8255,8354,7628,7628,5381,5237,5578,7516,5377,7653,8052,7867,5377,8201,5476,7542,5296,5237,7930,7800,5476,7946,8022,7768,7558,5296,7478,7478,5337,5301,7779,7811,8827,5476,8354,5301,8566,5386,7864,5699,8190,7542,7478,8438,8827,7893,7930,7888,8402,8227,8514,5301,5325,8721,8721,5426,8479,7706,8571,5606,8099,5237,8795,8653,8447,8745,5442,5471,8039,7877,7779,5509,8467,5309,5325,7516,7628,8154,7849,7768,8772,5377,5377,8077,7599,8287,8201,7643,5237,5629,7528,7994,5296,7864,7872,8548,5407,5218,7828,8170,8179,7558,8407,7930,7867,8179,7883,8721,7888,5386,8267,7521,8863,5459,5464,8104,7723,9071,5426,8604,8411,7643,8548,5377,8255,5442,7930,8190,7994,5717,7542,7994,7628,7628,5358,8190,7811,8438,5358,5476,7746,5218,8509,8903,7482,7864,8033,8711,7990,7990,7628,7663,7867,7834,7495,8811,8267,8548,8159,8873,5501,0,8005,8005,5699,7817,8267,7588,7588,7706,5642,8022,5464,5325,7786,8170,8519,8447,5661,8509,5241,5218,8340,7962,7914,8073,8509,8467,5661,7643,5218,7924,5301,5514,8272,7482,7839,7500,7542,7658,5464,8267,7914,8391,0,5617,8827,8647,5305,7715,8039,7710,8179,8179,8179,8402,8438,8594,8015,8316,5708,8617,7800,8721,5699,5372,8484,5296,8509,5401,7742,8022,5309,7482,5329,8987,7994,8641,7800,7542,5617,5218,8745,8756,8539,7972,7957,5676,7706,7706,7628,5255,8239,8827,5337,5248,7972,8316,7558,7706,5726,5352,7930,5432,8104,5285,8833,7710,5401,5255,8005,5296,8255,7558,7482,7482,5237,5237,7883,8772,7888,8217,8217,7588,5291,8604,7675,8010,5501,8149,8149,5248,7653,7706,5274,8438,5485,8239,7478,8179,5291,8140,5274,8772,8119,7920,5476,5573,5274,5386,7883,8772,5485,8022,7653,5285,8082,7811,7582,8196,8196,5726,8340,8800,5661,7616,5708,7790,5476,7516,7719,7667,8359,8514,5347,7663,7516,7834,7795,5367,7710,7628,7482,5491,8249,7663,8249,8217,7706,5305,5347,8514,5442,7972,7495,7495,7834,7924,8073,7972,8582,8582,5337,5564,7511,7763,7558,0,7877,8249,5347,8359,8190,8261,7877,5325,8170,7811,5617,5476,5401,7823,5651,5629,5291,8461,8461,8461,5717,8354,7478,5407,7500,5320,8164,5237,7558,8494,5381,5717,5407,8322,8154,8322,8427,7582,7706,7977,5459,9353,7977,5325,5391,8795,5325,8005,5671,8919,8427,8519,5717,5407,5381,7628,5407,7834,5329,5237,8427,5237,5237,8287,5491,5726,7982,7982,7982,7864,5391,5301,7790,7982,5301,7565,5612,8411,7828,7592,8987,5476,5476,5261,7982,7893,7834,8087,9358,7774,7687,5688,5333,8201,7904,8245,8705,5564,0,5437,5480,8015,7757,8756,7628,7692,7653,7914,5496,5476,7786,5568,7478,5480,7542,7972,8504,8144,8514,5514,7924,8816,8282,7935,7648,5237,7542,8282,7977,7628,5564,5708,5237,7920,7972,5209,7864,5471,7999,7558,5325,7834,8582,8411,8783,8170,7752,7982,8354,5291,7904,8196,5655,5241,8267,5509,8293,5476,5320,9361,8057,7853,8307,8756,5578,8057,5564,8174,7904,5708,8115,8641,5568,8099,8322,0,7982,8222,5224,7972,5352,8772,7734,7920,7658,5642,5655,7687,7924,8222,7849,8447,5476,8539,7710,7920,8925,5305,5712,7914,8387,5442,5726,8438,5573,7977,5564,8427,7605,7883,7637,7715,8184,7986,5564,8174,8282,5213,8093,8136,8625,7542,8170,5480,7904,5480,5480,5708,8170,5314,7533,7999,8126,8126,8539,8447,8170,8144,7610,5407,0,5218,5347,8381,8073,8115,7542,8727,7795,5391,5381,5241,8566,7817,7817,7768,8969,8879,8365,8898,7710,5661,8604,5296,8751,5635,5391,8136,8073,7710,7795,7972,8144,7888,7888,7972,7867,8345,8789,5655,5717,5285,7692,7582,8613,7681,8577,7687,5329,5459,8631,5291,0,8170,7972,8375,8387,9361,7738,5661,5386,8903,5285,5241,5325,5296,8329,0,7663,5480,7495,8451,8073,8845,5377,5655,7558,5612,5612,8946,5712,7610,8170,5352,5407,5476,8805,5261,7495,5509,5661,5496,8527,5285,7478,7667,8484,8316,8653,8154,5647,5314,8057,5333,7904,7653,8670,8077,5676,8115,8022,7491,5291,8201,7811,8201,9021,5476,8533,7672,5448,5480,8149,7962,7898,5407,7811,8479,0,5509,8196,5352,5617,8577,8438,8514,5564,8126,8170,8479,8494,7663,5676,8354,8548,8033,7805,5381,5647,8543,8136,8184,7495,8443,8494,5237,5274,7558,7828,5514,8099,8745,8461,7888,8087,7757,8057,8539,8015,8234,5325,8272,5280,7706,5213,5320,7542,8093,5476,8387,5291,5241,7779,7795,5476,8154,5261,5241,5329,7774,8772,7935,5224,5381,5377,8571,8422,7834,8451,7967,8170,5606,7542,8800,8126,8087,5381,5329,8039,0,0,7972,7883,0,5274,5514,8721,5352,8467,7495,5407,5655,8484,5407,7628,7834,8005,7823,8062,8110,7920,7994,8159,7967,8190,7622,5377,8077,5496,5391,8548,5655,5476,8598,7946,8411,7924,7811,7834,8857,8345,7500,8387,8494,7990,8663,5325,5377,7986,7986,7558,8509,8484,8484,5647,5381,5296,8845,5248,8851,5617,5661,8467,7542,7491,5496,7687,7930,5642,0,0,5347,7752,8196,7877,5717,7957,8548,8845,5285,8131,8196,5218,5699,5442,7710,8427,7962,7962,8073,5573,8164,5413,8451,5514,7990,5642,8479,7972,8293,5661,5407,5448,5688,5524,5274,8851,8940,5309,7763,7864,7805,7495,5261,7738,5381,5629,7533,8282,8245,5301,8272,7982,7972,8631,5367,7542,7752,8322,5606,5655,7864,5237,7495,7768,5496,7687,5717,7478,8869,5617,8756,5617,5320,8126,5642,8888,5448,8772,7730,7877,5612,8239,5248,8519,8039,5224,8527,8952,8539,7706,0,8533,5401,5629,7710,8721,5329,7632,7957,8548,5671,7982,7687,8519,5629,5396,8402,8716,5305,5419,7952,7616,7972,5708,7972,8077,7800,5261,5568,5320,5612,8641,5285,5305,5305,5578,5274,8946,8647,5419,7482,8131,7542,5329,5325,7616,5291,8959,8959,8149,5471,5274,8821,8005,8365,5476,8329,7558,7558,7730,5386,7946,7487,7542,5464,8245,9021,8184,7516,5241,5296,9345,5285,5325,8340,7883,7883,7935,8073,7935,5291,7675,8239,8543,5564,8255,8073,8451,5314,5622,5480,7734,8196,5471,8184,0,5661,5329,5285,8498,7738,7653,8255,9361,5407,8811,5218,5666,8144,5329,5261,5314,8115,7734,8287,5325,8903,5612,8340,8745,5485,7811,5381,8196,7908,7883,5237,5717,7920,8073,5708,8170,7491,0,0,5448,5651,5325,7658,5314,8479,5426,5347,8936,8170,7491,8613,7491,7491,8447,7982,5325,8888,8381,5717,7972,5381,8144,5305,5407,5661,8577,8772,8126,5448,5329,5329,7648,7972,7533,7924,5666,7730,5320,8365,8184,5274,7667,8154,5301,7986,7653,7616,5329,7610,7542,7542,8365,7542,5347,8589,7616,5712,8261,7877,0,8498,5237,5617,7632,7667,5651,5301,8365,5329,8772,8857,5301,7828,8631,8903,5285,5291,5347,5301,7700,7972,7952,7952,7706,7528,7734,5342,8087,8898,5337,5671,5476,7817,8811,8282,7565,5241,8073,7828,5568,8438,7478,7786,7849,8604,7675,5651,5573,5717,8539,7500,5285,8438,8033,8484,5655,7888,7628,7710,5708,8126,7500,5285,7888,5401,8077,5358,8227,7828,7888,5476,8811,8589,7990,7834,5471,7706,8307,7675,7888,5285,5485,7924,5367,8438,5320,7663,8255,7663,5241,8539,5655,5564,5320,8239,5726,7504,5237,5285,0,5285,5314,5476,5401,5358,5301,7675,7675,7752,5529,7706,7706,8533,8888,5291,8533,0,7893,8282,8282,5347,7628,5347,7994,8307,8119,8239,7977,7982,5661,7977,7628,5655,5285,8494,7853,5573,5309,7710,7482,5564,8322,8427,5726,5314,8427,8676,5314,7487,7528,5314,5314,8196,7516,5314,5573,8676,7605,7565,5661,8560,7628,5391,8456,5337,0,8334,7706,8427,7790,5329,8456,7920,7511,5564,7565,8190,5485,5485,8447,8443,7999,5476,7511,8670,5407,0,5476,7706,7972,8010,8647,8010,8427,8625,5342,7628,7478,5325,5325,5325,8154,8915,7883,8484,7972,5372,5661,7681,8329,7500,7500,7500,8811,7653,7658,8539,7500,7877,5391,8582,7924,5391,7599,8438,8438,8068,8104,7478,8267,7930,8608,8115,8282,5381,8653,8119,7982,7565,8052,7952,8227,8190,8391,7643,5501,8196,7982,5476,5237,7528,7834,8115,7565,8772,7914,8170,7924,8365,5224,5426,7616,8190,8456,5655,8093,8104,8052,5712,7571,5305,8411,7500,7643,7999,8548,5391,5391,7628,7893,5459,7790,8447,8227,7752,7582,7663,5224,8608,7576,7610,5274,8582,7681,8783,5391,5464,5464,8190,8005,7500,5285,5309,7972,5309,8987,8316,8062,7834,5671,7521,8635,7675,7491,8267,5296,7653,7653,7667,5509,5274,8653,7576,5237,7558,8119,8201,5578,5578,7478,7653,5296,8052,8033,5509,5606,5314,8397,7576,7734,5485,5237,5261,5476,5237,8745,7706,5485,7952,5655,5476,7972,8345,5509,7516,7779,8227,7599,7675,8365,0,8190,8190,5476,5367,8267,5296,5564,8438,8005,7849,7616,8762,7994,5320,8745,7790,7823,5407,8699,8345,7924,8104,5642,5612,5309,8391,5285,8509,5524,5534,8227,7706,8052,7834,5301,7663,5325,7952,8514,8365,5661,8052,7715,5305,8827,8447,8015,5296,8222,7653,8190,8732,8239,5274,7883,5485,8959,7516,8068,5237,5476,5325,5464,7658,7491,7491,5301,8772,8316,7675,7893,8196,7999,8052,5476,7521,5426,9367,5285,8222,5485,7834,7663,7491,8613,5320,8249,8329,5642,7734,5301,8033,8582,5459,0,7834,8154,5329,5237,8164,7610,7700,7632,8375,8635,5629,7834,5573,8354,8354,5726,5476,8845,7491,7982,7849,5320,8340,8340,0,7800,8554,8554,5377,8397,8179,7500,5296,7482,7867,5501,7920,8354,5337,8821,5352,8282,5564,8093,7893,5726,0,8293,7681,8851,5655,7843,7843,5676,8391,5464,7599,8068,7999,5325,7706,7616,8548,7599,8316,7843,0,8249,7610,7715,8919,7994,5305,8543,7687,7605,7605,0,7605,8504,7904,8312,7888,7888,8479,5301,5688,5325,8484,5358,5519,8805,7839,8302,0,8925,7768,7542,7628,8811,7478,5496,5261,8329,8010,7478,5209,5301,5426,7774,8879,8504,8670,5480,8539,8015,8211,7710,5476,7786,7817,8762,5476,7706,5320,8461,7681,0,0,0,8277,0,8211,7924,7538,7622,7487,8467,8560,7893,7930,5381,7582,5524,5642,5274,5573,8658,8994,5320,5396,7528,5442,7605,5442,8022,8282,8022,5325,8354,5309,8131,5325,7790,7920,5358,7599,8608,7565,5501,5476,5564,7823,5237,7982,8387,8307,8329,5655,5642,7516,7872,7864,5712,7999,8039,7972,8827,8267,0,8307,5320,5372,0,5301,0,5407,7558,0,8322,8527,7823,7675,5274,7692,5255,5476,5237,7972,8625,7675,7977,7977,8131,5564,5305,5476,7491,7491,5391,8077,5358,7888,5476,8093,5224,8447,7986,7849,7533,8010,7548,5491,7839,7924,5564,8073,8711,8811,7706,8297,8110,7790,7999,8022,5578,5367,5337,7914,8170,5480,7571,7823,8381,5218,8539,7972,7687,5496,7883,7786,0,8484,5708,5564,5407,8073,7888,7990,8716,7605,5358,7511,7637,7687,7487,7605,8456,5391,8625,5496,5642,5291,8484,5391,7972,7511,5712,0,8164,7687,0,8473,8427,5381,7610,7582,5329,0,5301,5347,5218,5320,8329,8969,7706,5655,7706,5301,5476,7521,5655,5301,7588,7795,8795,5224,8504,7675,8073,8504,5224,5209,5442,5476,5381,7500,7605,5407,8397,7696,7696,5337,8048,7817,8898,8149,8427,5301,0,7924,7849,8682,7972,7710,5717,5437,8375,5564,5381,8560,7952,8272,8687,7994,8582,8613,8345,8345,5676,5476,5314,7692,7972,7723,8316,8940,8940,7811,5381,8484,5529,7888,8863,7628,8365,0,7616,0,0,8427,8387,5386,5655,8903,7706,8255,5396,7908,5419,9345,8329,5612,8302,5655,7930,8805,7795,5485,8073,8543,5564,7872,8316,5291,5237,7843,7511,8527,7706,7752,7667,8811,8140,7779,5688,8805,5337,5712,7898,7610,5352,9345,8539,8190,5647,5372,5708,7786,5358,8539,7653,5209,7972,8504,7930,8845,5407,7811,5509,7495,7977,7681,5325,7675,5329,7811,8670,8433,5501,8022,8249,7478,5301,5301,8307,8433,7616,5612,8170,5377,5381,8653,5314,5320,7877,8010,7994,5485,5301,5224,0,0,8272,7972,8277,5401,5407,5314,8093,5301,7706,5224,9032,8827,7542,7746,7706,7706,7774,8234,7877,8594,7893,5213,7898,8057,7643,8548,7558,5372,5325,5301,5352,7628,7628,7786,7643,7582,5629,8461,7599,8539,5237,8010,7558,8427,7706,8467,7834,7628,7768,5476,9367,8504,7805,8873,7706,5314,5564,7990,8277,7967,7967,5314,8721,5501,5501,8033,7723,8077,5509,8039,5329,8052,5381,5476,5442,8170,8170,7558,7571,7779,8322,7972,8863,8387,8170,7930,5285,5314,5209,8888,5352,5693,5573,0,0,0,5407,7952,5237,8762,7542,0,0,0,7632,7972,0,0,0,0,5352,8427,0,5480,9367,7888,7491,8998,7994,7994,8676,7977,8548,5407,5476,7914,5237,7834,7834,8732,8427,8104,7628,7849,7687,8494,7858,5358,5642,8154,7500,8893,7924,7986,7834,8543,7643,8005,5381,8005,7487,8527,5661,5480,7972,5407,7715,7790,5573,7982,7982,5401,8873,8805,7823,7628,5337,5712,8022,8190,8190,7616,5655,7858,7491,5325,5381,7491,5573,8598,7628,8694,7994,5712,8539,5325,5381,8509,5688,7616,8110,7946,7957,5333,0,0,8751,0,5671,8772,5347,8267,7628,8033,5329,8170,0,0,0,5661,7977,5476,8427,5564,8716,5651,7843,8164,7786,5407,8170,7738,5642,5655,7898,8302,8467,5209,8391,7588,7977,5642,5381,5464,8811,7893,7687,7542,7538,7962,8467,5661,8164,5391,7972,8402,8267,8805,7511,8164,5629,5699,8533,7487,8119,7738,7990,5237,7786,7706,8898,5524,7962,7533,8272,5717,8329,7828,8417,5325,8851,8131,7805,8322,5496,7542,8359,5712,7500,8461,5524,5314,5480,0,7924,7828,7977,5407,8397,0,0,8888,7605,0,5237,7706,5401,5296,5218,7542,8039,5671,5671,8641,5396,8140,9367,8402,5413,5337,7982,5419,7982,7811,8005,5476,8077,5524,8756,7952,7952,8340,7800,5309,8539,9345,5333,7843,8033,8827,5301,5519,8745,8617,8010,8316,8721,5325,5612,5666,5329,7779,5651,7957,8783,7588,7990,5320,5629,8473,5329,8484,5320,7687,5320,8015,8514,5305,5453,7924,7681,5352,7605,8302,5237,7768,7946,5407,8827,0,0,8322,0,7616,7696,7528,7972,8255,8397,8827,7734,5320,5396,8005,5655,9021,8354,8427,5237,8329,7828,8048,8811,5305,7478,8255,5386,7516,7511,8255,5274,8489,8010,8427,5480,8149,8267,8598,8422,7558,5629,8249,8170,7558,7588,5291,5291,8772,5296,5325,7495,7521,5480,8381,7872,7605,8519,8833,5501,7723,8297,7946,8433,7786,7511,8149,5524,5573,0,0,0,0,5325,8307,0,5329,0,0,8467,7738,5320,5419,8772,7516,8789,7482,5237,5342,5261,8397,8190,7558,8811,8170,8397,5476,8196,7734,7834,5666,8527,5296,8903,5325,5342,8073,5358,5693,5573,9361,7908,5325,5381,7977,8745,5578,5407,8322,8479,5476,8473,8022,5617,7516,0,5496,8249,7482,8272,7658,7746,7706,0,8888,8154,5325,7542,5651,8381,5476,5524,5407,7482,7696,8745,7834,7706,5651,7999,7952,8104,5325,8005,8312,8919,5573,0,7746,5337,7972,8687,7542,5666,5666,7730,5329,5301,8498,7672,7763,5296,7742,5329,5381,5524,8762,8467,5301,7893,5314,5448,5401,0,5573,0,7605,5329,7834,5301,7605,8033,5381,7864,7588,8359,8077,7628,7610,8277,0,5274,0,8170,7675,8093,7616,5407,7482,5337,7616,7521,8789,8073,7877,5347,8170,8617,5617,7994,8827,7768,5726,0,0,7628,7632,5301,8365,8375,8903,5291,0,5347,5347,7605,5666,5301,7904,7700,7628,8093,0,7542,7839,7811,7528,7628,7628,7542,7742,7500,8783,5573,7710,8509,5476,5291,5237,7500,5367,7628,7908,7843,8739,8851,5237,7663,5476,7706,7982,7710,8196,8739,8795,8739,8795,8732,8302,0,7482,7528,5661,7628,7542,7675,5476,5717,7478,8772,5309,7742,7982,5377,7811,7500,9054,5237,7675,7500,5237,0,5401,5573,5476,8795,7628,8287,7811,7972,5241,7839,8201,7478,7706,8201,8201,8082,8170,7542,7710,7719,7710,7719,7548,5342,5342,5301,8451,7628,5301,7952,5491,5491,7487,5407,5578,5305,5305,5642,5305,8140,7924,5606,8119,5491,8987,7500,8329,5320,8179,5291,8647,5280,5688,7588,8745,8267,5401,5476,8998,7972,7491,8179,7643,7883,5325,7491,0,8267,7752,5442,8888,5377,5309,8987,7482,7757,8140,5296,8498,5476,7883,8762,5419,5401,8888,8762,0,5407,5320,7742,8676,7605,7482,8745,5476,8302,5699,7990,5642,7667,7828,5296,5296,7786,5699,5325,5476,7742,5296,8676,5476,7675,7478,8721,7715,5712,5712,7663,7571,8762,7628,5358,5358,5358,7920,7920,5358,7877,7790,0,0,7734,0,7977,8427,8159,7715,5480,8329,7696,8164,5274,8170,7715,8052,5688,8307,0,8772,8456,8170,7888,8402,5358,8589,0,7790,5342,7628,7628,5480,7849,5407,7738,8589,5329,7715,5301,8316,8164,8227,7734,7632,8427,5514,8427,8249,7632,5726,5459,5391,8539,8438,5291,8211,7706,8959,8716,7706,8479,5274,8732,5501,8915,8028,0,5564,7914,7582,8745,7706,7482,5237,8370,7924,8345,8387,7990,8745,8387,7582,7883,5329,8745,7924,8267,8267,8839,8589,5241,5224,5218,8903,0,5333,8447,8068,8010,7952,8805,7972,5688,8888,8115,7746,8498,5296,7757,5476,5496,5314,8732,5509,8010,5491,5237,5480,8211,5688,7706,5261,5213,7653,7542,7478,7478,8329,7487,8613,7817,5419,7710,7478,0,0,5629,7972,7710,7542,5651,7628,7599,8745,5485,7872,7667,8062,7658,7768,5325,8411,8411,8811,7752,7548,7565,7504,5291,8560,0,7706,5501,7500,7500,8196,5476,8494,8267,8467,8560,7834,8033,8033,7883,5337,5471,7982,8154,7867,7715,8110,5712,7738,7746,7478,5248,5606,5358,8302,7972,8456,7533,8863,8925,8131,7511,5712,8115,8527,7742,5301,8099,8777,8527,7994,7982,5305,5712,5320,8170,8365,5480,5480,5480,7849,5301,5651,5476,8048,7893,5337,5606,7972,7999,7786,8427,7834,7487,8582,7592,8170,5661,5688,5476,7977,7548,7768,8073,5296,5651,8543,5314,5573,5333,5337,7786,8062,8811,8048,7790,7487,7982,5255,7839,8010,7710,7588,8381,7558,8093,8174,8073,7706,7487,8447,8170,8354,7605,8119,5666,8190,5529,5564,7533,8438,7658,7924,5325,5218,8721,5413,5529,7610,5329,0,8073,5661,8312,8115,5485,7482,7576,5325,5476,5296,5296,8397,7558,7482,7994,5730,5407,7924,8577,7487,5325,7696,5426,5564,7730,5612,7972,7482,7478,5237,8898,7605,5419,7632,0,8345,7582,5476,8711,5666,5476,5651,7768,5309,5305,7994,7675,5661,8062,7500,8851,8582,8272,7867,8170,7696,7576,8613,5255,8329,7504,7972,8687,7811,8391,8154,8631,5280,5213,7478,5726,7511,5476,7977,5485,7542,5419,5285,7558,5391,5314,8604,0,7908,5325,7511,7877,7643,7982,8789,8329,5309,8577,5688,7994,5578,7667,7653,7898,8211,5314,5337,5237,8073,8307,5509,8062,5476,7734,7616,5347,8052,7843,7653,5301,8845,5564,7478,5401,8104,8527,5476,7628,8316,8149,8370,5309,7977,5248,5534,5712,5342,7558,8456,5274,7914,5647,8653,8751,8077,7653,5485,7675,5617,8184,5647,5218,7675,5274,8805,7864,7588,8068,5676,8433,5377,5301,8839,7487,5666,8839,8272,8762,8149,8277,5401,7994,8494,8267,7811,8539,0,8489,5407,8015,7719,5564,8721,5426,8087,8969,8387,8287,8015,7491,8571,8494,7653,5480,7582,7849,8494,8170,8811,7779,7643,7738,5314,7828,7867,8407,5676,5209,5237,5642,7706,7786,8039,7653,7516,5629,7576,5352,8052,8227,5320,7706,7565,7710,5329,5386,8170,8272,8827,5666,7972,5352,7893,8022,5606,7920,7883,7628,8447,7628,5329,8811,5651,5485,8093,8099,7482,8402,5726,8359,7628,8184,7914,8647,8104,8631,8467,8277,7643,8745,7834,7542,5606,7622,7972,7482,5651,8543,8467,7752,9071,7893,8745,8467,7990,5325,5617,8467,0,5329,5209,8762,0,5407,8438,7920,0,7628,8467,7914,7914,8110,7811,7605,5407,8699,7628,5688,8805,5726,8762,8527,7687,8073,8494,8494,8539,7994,7752,8613,5661,8604,7994,5717,8461,7834,8062,8190,5651,7990,7790,7616,7834,5337,8062,7622,5426,5712,5437,7643,8716,8005,5391,7864,5213,5712,5401,7706,7706,5712,5606,8694,7994,8179,8641,7746,5296,5305,7500,5325,9054,5407,5407,7982,8527,7521,5476,7482,8427,5391,5381,7558,5464,8772,7628,5358,8438,5391,5647,8119,5218,5726,7548,0,8484,5285,0,7482,5629,7610,8154,8467,7823,8282,5337,7768,7805,7779,7877,7834,8104,8077,5209,5509,5391,7800,7616,0,8005,0,5407,7500,7672,7952,5671,0,0,8312,5309,7952,5629,8467,5612,8467,5401,5642,8249,9032,8119,7990,7658,8245,8631,7511,8131,5514,8391,7687,5391,5476,8099,7538,7734,7994,5301,7774,7478,5237,7752,8322,8115,5391,7588,5476,5655,5448,8267,5519,7482,8164,7643,7588,7588,8447,7738,5391,8613,7994,7533,5573,5573,8334,5534,8777,7763,7849,7828,8052,5464,5237,5209,8539,7972,7616,5564,5381,5396,5717,5209,8272,8909,5342,5358,5285,5296,8234,7482,5524,7610,7972,7834,5617,7800,7616,8104,5329,5347,8375,0,8888,8772,7628,5448,7982,5358,8473,7972,5419,5568,7914,8987,8539,5651,5708,5329,7982,7982,5337,7877,8010,5218,8234,7800,8745,7628,8647,5325,8387,5285,7706,5237,5325,5329,5329,7610,5309,8039,8827,7957,7972,5671,8322,5301,7834,8340,5285,8827,8658,8641,7742,8909,7491,5237,5651,5629,5305,8987,7653,5401,5347,8631,5301,7542,8527,8190,5476,7800,5209,8211,8756,5666,5352,5320,8015,8015,5248,7500,7811,8144,5407,7834,8519,8239,8402,5377,7924,5419,8827,7616,8062,8329,5320,8721,7616,7675,0,0,7500,5401,7972,7994,7920,5291,5285,8312,8903,5296,5381,7478,8994,5325,7533,7952,7675,7542,7542,5237,5329,5237,8190,5471,5464,8438,8489,7588,8239,5655,7548,5476,8539,5509,7883,8772,8783,8329,8005,0,8670,5647,7605,8589,9372,5358,5261,7877,7877,5320,8316,7734,7516,7994,7719,7719,7558,7592,7558,5396,5285,8149,7935,8811,8879,7946,7487,5320,5352,7653,8267,7511,8062,5564,8052,7849,5274,5407,5261,5237,0,0,5347,0,7628,7516,8438,5372,8903,5509,8115,5661,7628,5301,5391,5529,8093,7800,5209,5218,7908,8179,5401,7828,7491,5708,7811,5655,7877,7800,7883,7883,5476,5342,7920,8170,7738,8196,5325,5314,5401,8789,8039,5309,5501,7719,5325,5342,5296,5573,7738,8022,5693,0,7605,8277,8888,5401,5651,5391,5320,5651,8381,7616,7616,8249,5309,7706,7920,5325,8052,8613,8397,8494,8272,7482,7482,8217,7839,8154,5485,5347,7667,7663,7734,5314,7994,8888,7786,7542,5426,0,8144,7893,0,0,5407,7994,7632,8365,5329,5301,5337,7924,5329,7487,5381,7616,8762,7599,5296,5661,7533,7914,8473,7877,5305,7511,5407,7734,7719,7558,7786,8888,8154,5274,5329,8196,7653,7616,5218,5301,5485,7675,7616,5342,7994,5661,8359,8052,7605,7610,8277,8217,8010,7982,8277,0,0,7616,5651,5325,5401,5407,7616,5501,7516,5476,5407,8354,7877,5491,8261,5407,5347,8010,8617,8467,5314,8527,5617,5666,5347,8827,5726,5218,7542,8048,8721,5699,7834,8052,0,7730,8365,8375,7834,5301,5651,5261,8772,8903,5285,7877,0,8052,7904,7605,5347,5347,7700,5509,8375,8329,5274,7834,8811,7834,7628,8154,7487,7763,8687,8919,5296,7675,7675,0,8062,8093,5372,5622,8484,7687,5661,7710,5314,5437,5437,8179,7924,7706,7548,5501,8816,7592,7752,8312,5476,5329,7805,7920,8509,7533,7834,8509,8334,7715,8783,8239,7952,8756,8068,8687,7528,7972,8687,8687,7994,8322,0,8245,5367,5241,7605,7990,7999,5564,7904,7888,7888,8093,5314,8190,8170,8772,8174,7592,8174,7658,7658,5224,7924,8316,7653,7605,7687,7828,7994,5391,5401,7710,5464,0,7982,8851,5347,5485,5285,7500,5426,7768,8577,7811,7924,7675,5519,5274,7482,7478,7576,5642,5391,7994,8316,5529,5437,8509,8062,7632,5367,7605,8190,5241,8312,7834,5296,8687,5578,5296,8898,0,8010,8670,7491,5296,0,5629,5309,9071,0,5237,5564,7592,7935,7734,5485,5314,8805,5509,8370,5352,7843,5261,7982,8527,7710,8164,7982,0,5320,7849,8329,7692,5291,7675,5237,7834,7653,9345,7667,8539,5661,5325,7478,0,0,7653,7834,7811,8514,8170,5442,7930,5501,7516,8653,7643,8068,5237,8402,7478,8062,8170,5564,8494,5285,8827,8527,5255,7723,8893,5237,7723,7528,5314,7834,7834,5476,5291,7628,8461,8297,7920,7786,0,8119,8227,8670,0,0,0,0,8033,7849,8005,7548,8676,5367,5296,8527,5401,8190,5426,5464,5285,5407,5358,7616,7605,7994,8641,5606,5237,8699,8699,7877,7834,7592,7592,7628,5712,8302,7994,7491,7528,7723,8110,5712,7811,7500,7999,7994,8010,5688,5342,7924,8577,7605,0,5524,7795,8222,7982,8267,5367,0,0,8411,8131,8422,5629,8783,5261,8869,8073,5464,5661,5237,7478,5237,8267,7849,7849,5237,8267,7504,8716,5261,0,5642,8329,5651,5401,7616,7478,8164,0,0,8322,7511,5237,5358,8473,8548,5329,5407,8087,5476,7957,8527,5342,5476,8316,5291,8548,8267,7982,5476,7972,5708,7994,8239,7653,7742,9071,7592,7800,0,8987,8498,8833,5407,5237,5237,5237,5476,7675,7710,5464,7877,7491,7542,8297,7834,5274,8255,9021,8919,5471,7914,5285,5501,7487,8239,7628,7516,8316,8670,5501,8010,7834,8329,5347,5712,5629,5476,5485,8514,0,0,7616,7628,5476,5529,5347,7658,5372,8179,5342,5237,5699,8827,5401,5296,7605,5661,8093,7994,5476,5661,7999,5296,0,0,5347,8613,5274,8898,8329,5309,5442,5442,5642,7849,5347,8473,8164,8987,5305,8222,8893,8015,8589,5708,5367,8582,8851,7628,7746,5329,5442,5442,7834,5237,7920,5391,5391,5688,8261,8354,5347,7582,5291,8316,8721,5688,7779,5651,5629,7779,7834,5224,8093,8498,7628,9361,8387,8994,5241,5325,5381,8467,7663,7994,7877,7516,5291,5564,7491,7904,5459,7491,5642,8443,8617,7696,8322,8519,5717,8205,8716,8322,8484,8322,7858,8282,7533,8670,5407,5213,8762,7982,7853,5333,7548,5459,7898,8255,7982,5337,7558,8762,8387,7558,8816,7763,8751,8484,8711,5480,7715,8149,8504,9377,7565,7790,7715,5391,7478,7834,7977,7930,5391,5407,7786,5337,8375,8119,7715,8539,7542,7768,7768,5209,8594,5237,8211,8946,7542,7478,7786,5237,5301,5301,7516,5325,8461,7972,8543,7768,8489,8762,8170,7977,5407,8527,7858,7990,8170,8898,5573,7478,7930,7632,5381,7538,8682,7994,5301,8387,8316,8387,5419,7853,5301,8762,8577,7920,8647,8222,5237,5442,7994,8005,7521,7768,8010,7904,8010,5688,7491,7774,8073,8345,5381,9345,8687,7538,5337,8756,8504,5325,8387,7599,7811,9345,8267,8582,8816,8539,8745,7548,5442,7930,7920,8170,8447,8119,8174,5367,9008,7982,8093,7893,8777,8447,5391,5337,8131,8354,8170,7883,8312,7786,8316,8381,7811,8727,5285,7849,7999,5325,5476,5261,8227,8164,8087,8316,8149,8762,5367,5391,5396,5241,7628,7962,7628,5358,7478,5237,5676,5301,5367,7482,7940,7843,7930,7972,7834,8302,5301,8456,5274,7757,5471,7752,5642,7904,8756,8447,8473,7482,7478,5237,5407,8048,8653,7834,8039,7883,5651,8227,5476,7972,5241,5296,8249,7774,8140,5617,7994,8732,7632,7982,8548,8987,7994,8527,8494,8329,5426,7605,7790,7994,8467,5274,8641,8387,5386,5661,7977,5730,8411,5337,5337,5712,7687,5642,7962,8073,7977,5396,8467,5448,7663,8467,5491,7628,5391,7883,7605,8201,5655,8519,8670,7800,5485,5419,7715,8015,7877,5708,5377,8427,7849,5358,5291,5358,5358,5464,7734,7571,7628,8316,5642,8239,8851,7675,5218,8631,5237,5717,5676,8762,5296,7908,5274,5661,7738,5274,8329,8381,8048,8154,8417,7696,8577,5386,8687,8087,7952,7738,5274,5651,8261,7811,5386,7632,5274,7706,5291,8190,7622,5209,5329,5329,7628,7588,7599,7482,5391,5693,7605,7500,5325,8062,8539,7768,8811,8484,7628,5496,7710,8329,7538,7576,7478,8613,7752,5381,8387,5501,5329,5413,8354,5291,8604,5291,5509,7637,5712,7883,7920,7994,7811,5274,7558,8093,5491,5476,8345,5255,7828,5564,8190,5237,8073,7839,7823,7977,8670,8312,7628,7990,8297,7864,7914,5476,8443,7977,8438,5261,7511,5358,5655,5655,5291,8048,7610,5309,5285,5407,8589,8687,5274,7576,7817,7834,5519,7924,7500,7632,7487,7605,7528,5519,8329,5377,7696,5442,5642,5367,7946,7952,5248,7500,8282,8456,5564,7849,8170,7643,5213,7864,7558,5377,7893,7478,8387,7667,7930,7930,8805,5274,8287,7653,8190,5224,5688,7768,7843,5301,5519,5564,7511,7491,5237,8093,5301,5606,5401,5612,8514,8479,8772,5291,7805,8427,5352,5629,5730,8170,8033,5377,7752,5485,5381,7828,5573,5314,8456,7558,7982,7706,8548,8653,8227,7706,5413,5509,5329,8827,8721,7834,7757,7930,7516,8196,7920,8994,8716,7774,5407,8048,7491,7723,8302,8745,7643,7628,7790,5712,7834,8190,7548,5426,7977,5381,7994,5655,7994,8893,7811,5381,8732,5407,5622,7924,8494,7768,5367,7935,8467,8795,5386,7982,7616,7628,7930,7872,7719,7511,8427,8164,5612,5642,5407,7500,5309,7839,7616,7538,7972,8548,5629,5301,7843,7952,5655,8322,8451,8604,7999,5642,7663,7853,5647,8925,5329,5622,8827,5309,5476,8402,8827,7972,5301,5367,5612,5688,8190,5708,5401,7800,8015,7538,7898,7616,5629,5329,5381,8919,5261,8833,8329,8777,8903,7516,7930,7723,5218,5464,8772,7734,5485,8010,5309,7511,5325,5437,5485,7663,5358,8179,5726,5372,8903,8402,8234,5372,5296,7811,7719,5342,8732,7628,7628,5309,5329,8888,5485,7752,8397,7653,5237,5325,8190,8821,8154,5671,5666,8647,5301,5401,5329,7800,7542,7723,5578,7616,7582,5622,7610,5261,8255,8365,8422,7616,5651,7521,5237,8721,8479,8365,7811,7795,8073,5459,8222,7982,7972,8647,8282,8261,5301,8631,9026,5419,7542,5291,7864,7565,5407,5534,7742,8073,7786,0,7588,8093,5476,5255,7839,5309,7977,8255,7710,8527,8903,8249,8057,8863,7667,8411,7576,5655,8903,5485,7616,7706,5407,5573,8539,7742,8249,5622,5352,7516,8833,7478,7920,7883,5534,7616,7834,8811,5491,7914,7478,5606,7653,8227,8119,8577,8119,7877,7877,8222,8119,7588,8365,5218,8952,5329,5564,5218,5413,8527,8381,5606,5337,7977,7914,8261,7828,5296,7823,7828,5255,8805,5396,8805,7768,5209,8249,5358,8267,8365,8467,7511,8227,7715,8267,8010,5564,8845,5606,5381,5381,7768,7994,7696,5606,7696,7528,7533,7487,7834,7834,5391,7511,8543,5655,5573,7715,7790,8604,8307,8126,5358,8245,7972,5329,7706,5329,7768,7779,8010,5396,7628,7628,5237,7667,5476,7817,7628,5459,5442,5224,8903,8287,5325,5509,9382,7924,5407,8641,5666,5325,5496,7877,7592,8641,7516,8028,5419,5442,8461,5459,5459,7920,8077,5437,5320,5320,7972,5476,8519,8131,5693,5358,5381,8239,7817,5717,8484,7667,8789,5261,5651,8293,5301,7924,8033,5337,7904,5381,5568,7972,5564,5661,5358,5476,5301,7658,8519,8527,7605,8174,7920,8811,7990,7839,5661,8873,7883,5655,8048,7972,8909,8170,5325,7893,5726,7828,7977,5274,5496,5224,9032,5241,5218,5485,7768,5248,8316,5476,8509,7994,5296,7888,7924,5301,7972,8727,8387,5712,8307,5485,7675,8316,7516,8211,7920,7675,7940,7734,5301,7972,8451,8170,7478,8302,8149,8087,7811,5274,8527,5352,8527,8721,8772,7893,7538,7516,7710,5325,7828,8345,7710,5358,7930,8438,7786,8217,7864,7994,7628,8402,8479,7605,8504,7883,5501,7867,5325,7628,5730,8527,7986,7924,7752,5647,7628,7795,5396,7811,7692,7977,7482,5476,5329,5514,5291,7710,5237,8721,5476,7752,5325,8519,8282,5666,7511,7637,8087,8293,7828,8245,8959,8772,7877,8473,7795,8140,7632,5476,8548,5442,8015,8533,7972,9045,5699,5496,7957,5329,5305,5309,7482,7616,5464,7888,8239,7610,5485,7957,8149,5274,7893,7883,5529,7990,7834,8282,5496,8519,8625,5407,7628,7994,5476,7893,7920,5666,5301,5320,7883,8461,7828,8073,8277,8959,5325,7710,7924,5274,5381,5241,7834,5301,8154,8277,5407,7828,5274,7616,7482,5726,5218,8772,7828,7687,8509,8375,8073,7877,7952,8312,8048,8919,8048,8126,8126,7867,5358,5372,5372,7790,8407,5314,5381,5464,7952,7839,8093,5524,7952,5407,5285,5352,5524,7663,7864,8052,5407,5358,5509,8498,5305,5237,7663,7592,8052,5464,8052,7817,7977,7478,8349,8577,8312,8946,5285,7972,7582,7605,5301,8647,5726,5285,7920,8811,8174,7576,7667,8149,8879,5699,5568,7786,7667,7667,7576,7687,5381,8427,8762,8438,7990,5485,7628,7930,7999,7548,9054,5218,7616,7849,5476,8329,5676,7849,8608,8427,7834,5407,7849,7628,8005,7582,5671,8479,7533,7478,5688,8119,8479,5329,8427,8249,5329,5309,5391,5407,7533,8721,8345,5329,7924,7576,8903,8010,7786,5301,7715,7558,8811,7500,8211,8211,7972,7706,7935,5606,7521,5471,7528,5237,7533,8222,5471,7478,8267,8119,9389,8267,7746,7533,8827,7622,7883,5712,7790,8795,5274,7742,8345,8174,5241,5642,7914,8154,7723,5655,5396,7930,5386,7710,8119,5712,5476,7605,5655,5655,7746,8582,8467,5459,5476,5209,5209,8783,7687,8190,7893,7982,7853,5342,7952,5651,7883,5476,7696,8391,8190,7710,8582,5676,8711,5655,7681,7924,7834,5305,7548,8447,7999,5241,7528,7667,8670,7653,7811,8539,7478,5296,5676,7864,5509,5274,5237,8653,8277,5407,5261,5314,7643,5509,8093,7823,7883,8577,9394,5485,5241,8582,8277,5342,5676,8839,5342,8762,5329,5358,7715,7643,8447,5329,5476,5381,7774,7576,7628,7643,7482,7994,8670,5325,5699,8375,5391,5676,5661,8762,5309,5699,5377,8005,5524,7872,8711,7500,8048,7752,7622,5442,5301,5651,5534,5568,8387,8033,7990,5448,5367,7723,8334,8391,7800,8387,7972,8015,8334,7757,5301,5305,8598,8827,7957,7710,7800,8647,7558,5325,8249,7834,5301,8959,8302,8255,7734,7605,8919,7914,8598,8239,7487,5301,8795,7491,7500,8316,8711,7516,8005,5274,7516,7663,5296,8427,5407,7786,8762,5726,5622,8589,5514,8179,8329,8179,7663,8249,5337,8888,7746,5337,8582,5291,8190,7746,8154,8048,8893,7610,8721,7800,5726,5573,5629,8795,7605,7790,5309,5524,7628,5448,8604,7872,5391,5476,7786,7972,8093,7914,7616,8170,7972,5285,8451,8676,7663,5285,8833,8154,8126,5391,5688,8312,5325,5209,8811,7478,5480,7692,8322,5237,8010,8582,8903,7538,8302,7883,5717,5301,5564,5209,7849,8154,7757,8879,7706,8795,5381,5501,7864,8387,7920,5578,7834,5342,5622,7935,5471,5529,7834,7667,8527,8048,8068,7687,5726,7628,7632,5480,5381,8539,8533,5655,7663,7893,7715,7605,5301,8411,8293,5255,5352,8093,8174,5333,8312,8073,8884,7914,8925,7495,5301,7610,8316,7742,5301,5524,5573,7667,5329,7605,5717,8154,7663,5386,7977,5329,7994,5564,7632,8800,5426,8119,8316,8068,5237,5476,5491,8851,5367,8255,8467,7908,8255,8322,8946,7675,5699,7768,7843,7752,7628,9059,5367,8211,5337,8539,7935,7935,7864,7511,7616,8211,5699,7834,8302,8653,7628,7994,7500,7849,5386,5407,8456,8022,7675,8946,5352,8391,8863,8571,8554,7706,8925,8745,7516,7667,8073,5693,5564,7757,7849,7687,5329,7663,5342,5699,5564,7930,7576,8217,7478,7706,8099,5509,7828,8461,8456,7706,8033,7487,7834,5459,5693,8762,5480,5381,7616,8411,5476,5358,7994,8851,5655,8676,5367,8903,7576,5386,5352,5407,8539,8772,5496,7473,8359,8272,5274,8190,5699,5699,7538,7834,8184,5476,7663,7839,7914,7487,5629,7898,5396,8631,7994,8940,5666,8451,5655,5367,7706,5401,7533,7994,8245,7675,5578,7990,7986,5396,9399,8234,5622,7877,5325,5708,5352,5329,5329,8795,8322,8033,8211,5666,7864,7706,5305,7706,8402,8443,8745,8287,7675,5325,8149,8073,5726,8833,8919,7904,7763,7516,5342,7828,5464,7533,8925,8255,8539,5301,5337,5285,7786,7786,8255,5471,5612,7628,5476,7849,7977,5647,5666,7811,5573,5237,5699,8903,5476,5419,7920,5372,8387,8751,7706,7663,8196,5407,7628,8821,8249,9406,8149,7779,5612,7763,8936,5274,8582,5666,5666,7972,5301,5301,8010,5699,8087,7616,9045,7610,7696,5301,8073,8617,5381,9067,8365,7834,5391,5391,5301,8705,5617,8354,7487,7706,7738,8800,5661,5274,5274,7972,7706,7972,5413,8217,7548,8068,7478,5391,5337,7972,7681,5564,5564,5651,8443,7972,7491,5209,7571,5726,7982,7605,7914,5342,7839,7637,5651,5329,7628,7521,7986,7681,8647,7605,7952,5367,7719,5325,8077,5655,5524,7834,5309,8033,5671,8073,5693,8479,8154,8272,7706,7710,8721,8397,8484,5329,5224,5309,8479,7823,5329,5261,5578,7986,5296,5730,5237,7482,7576,8154,5655,5564,8467,7482,5274,7924,5377,5476,5712,7487,8539,5296,5314,5655,5218,5325,5325,8005,7487,7538,7738,7500,8190,8762,7628,5237,5325,7628,7877,8772,7908,5342,5301,9054,8447,8479,5301,8261,8354,7622,8365,5666,8110,7628,7628,7710,5381,8196,7849,5647,5519,7487,5642,5647,9051,5496,8811,7719,5274,5224,8062,5688,5476,5248,5501,8052,8370,7990,7622,8940,5606,5358,7972,8631,5651,8334,7478,5274,8447,5301,5337,8443,7920,7904,8631,5305,7558,8052,8196,7924,8370,7972,7972,5320,8170,5209,8154,5325,7558,8136,9075,7663,7849,8316,5209,7972,5381,5401,8762,5476,5305,5296,5448,8772,5237,7706,7843,5564,8115,8839,5329,8589,8811,7977,5377,7558,5647,8670,8839,7786,8099,5329,7786,7571,8504,9032,8115,8126,5325,7972,7972,8653,8873,7982,7990,5224,5442,5629,7628,7588,7616,9411,5476,5651,8411,5396,8349,5358,7571,5352,7548,8548,7500,7558,8479,7752,8397,7675,7487,5325,5564,5655,8255,8479,7977,5325,5524,5524,7786,7864,5342,8010,5325,5296,7715,5261,8514,7972,5325,5329,7588,5325,7616,7752,5688,7719,5401,7500,5464,5296,5325,5342,7675,8196,5285,5314,8316,7487,7834,5342,8789,7719,5296,8261,5309,8789,8354,5325,8422,7752,5372,8154,7817,5329,8473,7663,8261,5314,7908,7628,5529,8631,8484,7723,5237,7723,8571,7628,7920,5485,5642,8732,9032,5647,5347,7867,8533,5642,8411,8222,5642,5224,8631,7605,5285,8255,8052,7478,7952,5642,7972,8519,5642,7681,5285,8519,7592,7675,7482,7982,8498,8494,7883,7692,7990,9417,7500,7588,5305,8005,8307,5329,7482,8494,8631,8387,7628,8170,7723,5642,5642,7681,8783,7628,5606,7757,8170,8239,5237,7986,8005,7675,5285,8287,8739,7610,7558,8402,7675,5372,8498,8255,7637,8307,5372,7632,7867,5301,7588,5391,9423,7542,8925,8062,7706,7542,7700,5391,5320,7994,8170,8427,7605,7487,7610,5224,5485,5485,8015,5476,7487,7667,8062,8316,8022,7592,7858,8267,5320,5485,5296,5381,5255,8676,8670,8827,7994,5647,7994,8099,5485,8795,5485,7605,7605,5333,7658,7628,5647,8811,8211,7605,7643,8762,5325,7675,7904,8099,5325,5655,7999,7962,8732,7994,8467,7982,8461,7675,8433,7920,5358,5407,5647,5647,5261,8119,5367,8539,8467,8136,7710,5647,5301,5647,8438,8222,7681,7487,5564,8387,8543,7994,8245,5209,8539,8093,8115,8293,5564,8131,8010,7977,5717,8010,5391,9427,8312,8582,5407,7723,7610,5305,8411,7977,7952,7972,8282,8329,5642,5274,5358,7723,7795,8919,5285,5309,7768,7962,8613,8048,8582,7605,8316,5426,8245,5485,8604,7908,5568,5485,5358,8635,5301,5241,7478,5501,8267,5647,8994,5301,7843,8170,8721,5407,5480,8316,5255,7828,7558,7940,5391,7920,7571,7675,8670,8805,8604,7834,5524,7908,8811,5442,7904,8461,7935,8093,7542,5564,5407,7972,8277,7986,5358,5358,5358,5717,7710,8174,7628,5407,7999,7786,7710,5241,5485,8302,7576,5671,8073,5325,7516,7940,7667,5564,7687,7786,8571,7542,5496,7667,7805,8721,8467,8467,8170,5661,8115,7867,5480,7632,7883,7675,8893,5407,7473,8411,8272,7521,8509,9435,5655,8119,5426,5391,7605,8354,8456,7904,5476,7482,7675,7500,5381,5464,8845,7663,8010,7565,5622,7858,8329,7605,8062,7867,5730,8190,7622,7542,5309,8005,5666,7957,8267,7849,9441,8201,5442,5524,7893,8893,5241,8131,8077,7542,7675,8498,7817,8334,8762,5301,5358,5314,5573,8635,7710,7605,7582,7610,5347,8345,8201,5301,5296,5358,8539,7888,7834,5352,9367,5622,5325,8647,8307,7628,7763,5622,8115,5237,8039,5476,8447,7877,5568,8140,8461,5442,5325,7952,7588,7957,7687,5329,8184,5612,8498,8345,5612,7888,8676,5647,7558,8073,7643,5358,8903,8239,7883,7828,5564,5407,8438,8005,8539,8255,8919,5464,7962,8149,8365,7675,8762,5391,7864,5642,5213,8222,5325,8811,8227,8762,5480,7834,8073,8903,5381,7990,7610,7542,5401,8073,7576,8277,7521,5347,8873,7628,8354,8052,5655,7658,5377,7616,5442,5325,5218,8509,8909,7588,5391,8010,5448,5534,7558,5314,8909,5329,5329,5407,5480,7898,8159,8277,7610,5606,7478,5347,7542,8354,7548,5726,7817,8411,8676,8857,5301,7752,7632,7616,9447,7843,7500,5651,8539,8010,8140,5329,7914,8293,5661,5666,5274,5209,8447,8879,7710,7542,8473,5358,8282,7478,8539,8015,8110,5501,5358,8402,7972,5301,8039,8322,5309,7904,5301,7715,8170,8312,5305,8140,8184,8322,7779,7588,7681,5301,7706,7588,5261,8316,5209,8604,8354,7576,8010,9345,8126,5471,5501,5471,8539,8119,7779,5274,8772,7779,8179,8845,5301,8354,8245,7491,9452,8402,8126,8015,7516,8548,5485,8039,7920,8589,8589,5419,7491,8110,8073,5730,7500,8170,7982,5407,8365,7839,5301,5347,5564,8447,7930,8387,5519,5524,5629,5688,5666,8340,5329,7834,5651,8589,5501,5372,8756,7872,5305,7516,8261,9457,8329,7779,5419,7904,8073,5391,8504,8548,5274,7495,8641,8077,5301,7990,8539,9345,7681,5347,5651,5476,8484,5237,8653,5241,8484,9021,5325,5496,7576,8329,8354,8062,7628,7849,5509,8504,7752,7752,5688,8136,5209,7853,8816,8998,5381,5320,8104,7920,7482,8302,8062,7972,5325,5501,8267,8504,7883,5309,7588,7565,5612,8249,7482,8154,8033,5309,5564,7972,7658,5209,5442,5642,7687,5666,5237,5564,5661,7914,7853,7605,5726,5476,7605,8670,8811,7924,5564,5480,5655,5491,5314,5391,7548,5274,8443,7592,8282,8170,8716,8527,8397,5501,5485,8504,7946,5661,5381,7605,5442,7795,8126,5291,8582,8272,7839,8543,5237,8272,5661,7757,5285,7768,7828,7632,8190,5224,7533,5708,9462,8316,8164,7681,7482,5666,5419,7768,7500,5329,5459,8316,7487,5419,8293,5296,5291,7972,5407,5676,7710,7746,5655,5329,5274,5688,5320,7898,8613,7675,5509,8196,8845,5564,5377,5519,8504,5564,5237,5564,8805,5342,7548,8653,5564,5485,7982,7548,7834,5309,8267,5325,8456,5391,8548,7516,7888,5301,5329,7779,5442,7768,7628,5480,7706,9032,7565,5509,7542,5274,8087,7994,7706,8272,5509,8461,7599,8716,8863,7774,8190,8402,8099,7511,7706,8427,7930,8287,8093,7746,7706,7867,8772,5241,8234,7967,5476,5209,8093,7779,5309,7893,7872,5261,7628,8548,5381,5329,7500,5426,7994,5209,8170,7521,5407,7990,5274,8821,7746,7706,8676,7548,8539,8438,5676,8467,5661,7715,7487,5688,8411,7811,8845,5325,7746,5274,5564,7994,7628,8131,7622,5661,5401,8456,8411,8267,7834,5377,7795,7972,7710,7952,7768,5209,8022,8467,8062,7500,7957,8387,7648,5285,7616,5309,5476,8863,8447,7898,7786,7533,7576,5407,8451,7768,8617,8267,5367,8952,8929,5426,8272,5564,8267,5655,5524,8613,7982,5437,8909,5274,7588,5655,8548,8422,7653,7774,5358,8527,7478,5301,5612,7482,5237,8548,5666,5622,7542,7800,7972,5329,5305,8647,5401,5651,8190,8548,5325,5261,5342,8010,8952,5413,5476,5514,8711,7576,8322,7643,8473,5237,5320,5519,5296,5564,5296,8255,8833,7571,7972,5261,8589,7516,7628,8010,8239,5485,9021,5407,7648,7877,7872,5519,5296,5396,5442,8287,8322,5485,8245,8119,5296,5237,7482,5407,8170,7811,5372,5274,5381,5285,8073,7877,5476,5386,5342,5476,8635,7500,5325,8888,7542,5347,7734,8329,8857,7706,5712,7883,5305,5666,5661,8857,8582,5337,7500,5666,5274,7877,5237,5329,7877,7616,7774,7521,5274,8397,8857,7632,5237,8479,5347,5688,5377,7487,8484,7628,8062,7576,5274,7849,8354,5325,5509,8582,5325,8504,7994,8267,7853,8104,7920,8302,8461,8136,8467,8548,8099,5501,7972,7752,7565,7533,5708,8816,5320,5274,8811,5661,5564,5401,8443,7914,5237,7972,7548,7576,8282,5564,5314,8670,5476,5485,5491,7898,8164,5381,7692,7648,8647,7946,5296,9462,8190,5419,7632,5291,5285,8316,8845,7675,5676,5519,5309,5342,8272,5325,5377,5325,7500,8093,5578,7500,7706,7893,8287,8015,8234,8119,7994,7746,8087,5413,5442,7790,7511,7768,8548,8427,5509,5329,8863,5209,7990,7521,5407,7746,5347,5377,7622,7706,7834,5296,7487,7888,8676,8411,5274,8131,8863,7811,8539,5329,8411,8438,8467,5309,5564,8613,5655,8527,7582,5524,7877,5301,5476,5407,8888,8647,7800,5666,7616,5612,8711,5514,5661,8239,5261,8833,5419,7542,5372,7811,5285,8857,8998,7538,8461,8998,5699,8762,7511,8073,5255,5730,8617,8093,7616,7616,8745,5367,7616,8617,8772,7768,7706,5534,7616,5666,8772,5329,8721,7599,5291,5291,7599,7653,5209,7632,5564,7962,8048,7786,7605,8170,7790,7786,8438,8461,7904,7795,7786,5676,5564,7516,7834,7999,8397,7795,5314,7628,7972,7542,8048,7823,5320,7487,7920,7538,7511,7904,8048,5301,8783,7994,5358,5325,8833,8316,7746,5325,5676,5651,7952,7632,7920,5325,5325,8375,7924,7763,8322,7738,5712,8062,5476,5337,5501,5651,5524,7924,7786,8548,8721,7576,8093,5476,7605,8539,5519,7542,5476,5274,8164,8658,8658,7542,7811,8397,5274,5476,5274,7817,5274,7628,8845,5381,5629,8467,5237,8010,7834,5501,5261,5401,5666,8845,8417,8322,7877,7628,7817,5476,5248,5534,5501,8062,5325,7710,8402,5564,8745,9054,5476,7986,5476,7920,8093,7511,7972,5726,5237,7628,7521,5237,8196,7706,8255,7628,8222,7675,7719,8196,5419,8539,8402,7893,8272,8302,7478,7605,5407,7605,5391,7858,8548,5509,5296,5730,7849,7849,7653,5708,8647,5476,5401,5726,8222,7516,9054,8255,7487,8010,5476,5296,8190,8479,5642,8149,5622,8898,7790,5578,7706,8131,5622,7994,9021,5459,7696,9045,8821,7696,8716,5622,5666,7696,5209,8845,8783,8052,8267,8994,8987,7710,7487,8227,7977,8170,7849,5573,8149,7599,5325,5629,7742,7957,8417,8131,8334,7599,7957,5642,7888,8005,5337,5305,8811,7696,5578,8805,7491,8245,8022,8196,7710,7710,8447,7883,8062,8845,8170,7920,8077,7883,5358,8170,8093,5241,5337,5377,8239,7610,7972,8381,5391,7696,8387,5459,7795,5237,5401,8427,8119,8577,8751,7864,8170,5255,8539,8039,7752,7500,5647,8827,5329,5237,8805,5329,8170,8005,8170,8005,8827,5291,5534,5237,7935,5401,8827,5708,8119,8022,8805,8005,8077,7972,7883,8381,7706,8504,7478,8805,7610,7628,7628,5342,7487,7588,5476,7588,7487,7999,8387,8110,5476,5333,5325,7542,5501,8340,5717,8433,7811,5464,5496,8504,7675,8461,7576,8467,8762,8461,8164,8811,7571,8494,8227,7786,7972,7653,5564,7893,5301,7681,8170,5407,7565,9032,5337,8136,8560,8800,5337,7817,7628,8354,5642,5309,8312,7542,5237,7681,7893,7710,5485,7658,7914,7548,8015,5661,7914,7994,7576,5459,7883,7893,7904,8073,5726,8329,7930,7795,7658,5209,7692,7972,8316,5476,5209,5564,8334,5655,5274,7571,8456,7977,8119,7972,8222,5337,5726,7982,5301,5476,7482,7500,7924,7610,7582,9012,5329,5485,8293,7834,8658,7473,5476,8687,5671,5717,7582,7972,7675,7914,7504,7696,7864,5426,7858,8766,5209,7628,7558,7681,7972,8277,5274,5661,8402,5661,5305,8349,5325,5396,8170,7908,7730,8205,7706,5386,5651,8789,8375,5509,8073,8461,8721,5688,5285,5485,7888,7946,8451,8577,7582,8805,5712,8104,7914,5661,7834,8397,5381,5519,8443,5480,8174,7558,7786,5564,8307,5480,5453,7628,7994,7924,7795,5688,5401,8015,8402,7972,5391,7576,7920,7864,7605,8795,5329,8005,7805,8811,5606,8028,5485,8805,7986,5476,8345,8504,7914,8287,5564,5564,8170,7893,8322,5509,5496,5342,8164,8548,5693,7478,5712,7957,5622,7972,8694,7795,7742,8903,8345,5426,5386,7628,7478,7823,8255,7548,7994,7864,8159,5647,5642,5407,7994,5285,7628,7977,8676,5358,8227,5564,5274,8447,7746,8631,8909,8422,7898,7957,5329,8631,8427,5708,7588,8863,5717,5476,8073,8239,5325,7920,7628,5524,7610,8888,8554,8227,8196,8039,7834,8663,8647,5419,5564,5629,5305,5237,5622,5329,5285,7952,5329,7972,5642,5291,5401,8316,5352,8447,7687,8239,8402,7864,7675,5325,8010,7972,5285,5261,7478,8402,8489,7521,5342,5501,7616,8772,9361,7883,7908,8789,8068,5401,5358,5218,5291,5573,5476,5676,7986,5401,5514,8005,7786,7706,5386,8888,8329,8613,8154,8205,7828,8473,7834,8739,7986,7834,5329,8154,7952,7632,5726,8205,8375,8447,8205,8033,8577,8494,8687,8205,7516,8687,5209,7478,8077,5442,5325,5688,5688,5325,8077,7972,7972,7972,7999,5459,7972,5519,7658,5655,8484,8329,7628,5496,5642,7628,5248,8201,5237,8484,7628,7628,5426,8170,8484,7528,5617,5617,7883,7994,5391,8772,5320,7538,5606,7883,7734,7734,8721,7972,7576,8732,8598,5367,7478,7576,8479,8461,5261,5476,8613,8994,5491,5241,8282,8732,8560,7565,8282,5699,7898,7548,5407,8777,8093,7605,8115,7888,8073,5274,5717,8732,7977,5329,8062,8334,5237,5730,5564,7500,8527,7994,8670,7628,5476,8805,5255,7994,7817,8249,5464,8479,5464,8087,8548,8411,7790,5459,7800,7898,5496,5476,5514,8777,8340,7957,5491,7877,5642,8316,7982,8903,8772,5329,5476,5381,5407,8255,8249,7706,5329,5329,7877,8617,8682,7779,5407,5407,7719,7834,5564,5255,7834,7834,8340,8340,5476,7811,8805,5688,7663,8716,7681,8805,5381,5352,5509,5476,8745,5358,7763,5471,7542,7628,8387,8851,7723,5647,5367,7706,8211,5209,5296,8539,8174,7521,5358,5564,8068,7994,7478,7972,7706,5261,7752,7542,8504,8998,5568,5381,5329,7500,5325,8196,7706,8467,5501,7904,7872,7528,5325,5396,8277,7565,7478,5291,8131,7972,8267,8196,5708,5573,7790,8387,7893,7622,8560,8827,7482,5337,8411,5476,5296,7994,5301,5401,7864,5274,8227,8777,8249,7588,8484,8467,8297,8093,7658,7681,8539,7622,7723,5301,5573,7990,7715,7487,8222,8131,8438,5476,7893,8170,7920,8893,7692,7605,8447,7516,5224,5261,5688,5642,7616,8543,8062,7616,7687,7582,8170,5459,8077,8811,8539,5255,5712,5564,8716,5296,5358,8184,5564,5314,7790,8010,7867,7790,7790,7904,5209,5305,5358,5476,7710,5325,5485,7610,7696,5453,5391,7817,7616,7723,5717,8391,5301,8164,7482,8682,7542,7904,8033,8539,5519,5291,8577,7478,5325,8005,8604,5248,7839,8131,8687,8211,7710,5285,7768,5564,8670,7605,5209,5419,5296,7482,5496,8048,8164,8613,5248,8211,8316,5617,7883,7605,8329,7811,7473,7768,5671,8245,5485,5426,7768,8340,5485,7696,8345,8087,7710,8504,5407,5377,5464,5255,5301,5329,8149,5296,9345,5296,7977,7648,5358,5476,8255,5296,7706,8903,5426,8164,7643,7616,7632,7616,8329,5309,7962,7482,8349,8062,7576,5642,8015,7616,7710,8307,5564,8504,7482,7849,5358,5476,8267,8539,5647,5342,5342,7558,7599,7478,8140,5237,5485,5301,5564,7605,5305,5301,9345,5325,7888,5688,8302,5612,8033,5485,8170,5712,8249,5426,5485,7935,7528,7667,7834,8805,7757,8451,5509,7653,5337,7628,7977,7599,5337,8816,8670,5274,7843,5564,7864,5305,8334,5642,7823,7715,8795,8277,5401,5391,8494,5241,5401,8154,5337,7616,7616,7994,8104,8211,5712,7839,5509,5485,8539,5726,7582,5407,7967,7786,7986,5329,8170,7994,7667,8504,8653,7849,8772,5209,8594,8039,5564,8099,8227,5442,8022,7805,5237,8514,7774,7904,5301,5647,8073,7653,8222,8196,5676,5237,7491,8539,5381,7734,8903,5309,7999,8411,8845,5396,7786,8093,7893,5309,8345,7599,5413,7576,7834,8170,5407,7516,8772,5320,5606,8479,8359,7706,8022,8402,8272,8227,7930,8227,5476,7893,8277,7706,8249,5255,7994,7883,8302,7811,7834,5476,5241,8994,8201,8964,8716,7982,8170,8484,8964,7632,5442,8539,8249,5476,5647,5337,7616,7616,7616,7675,7730,5688,7990,7521,5509,7628,5337,5564,5401,8190,8467,7823,8115,8494,8104,7675,7628,7858,7790,8345,7864,7632,9467,8154,7795,8504,7746,7571,7571,8170,8222,8110,7715,5661,5661,5726,5407,5564,5329,8052,9054,8527,8062,5237,5730,5320,5647,7605,5688,7521,7914,5717,5381,5485,5651,5464,7914,7734,5671,7582,7500,7542,7994,8073,7994,8994,7990,7982,8205,7977,8676,5642,7667,8827,5352,7994,5274,8005,8805,7643,5237,5391,7706,8604,5386,5642,8467,5218,5218,8467,8539,8653,8721,8354,5529,7877,8509,8005,5578,5419,7957,7994,5213,7867,5448,7482,5476,7542,5391,5237,7930,7843,8293,8249,7849,5699,7940,8467,5301,8170,5237,8334,5573,7811,5647,5476,8354,5655,7542,8443,8312,8451,8467,5573,7628,7908,7533,7734,7734,7888,8851,8227,5501,5301,5241,5407,5325,8893,8777,8869,8571,8052,7962,5655,8391,8653,7500,7511,5237,7786,8039,8164,5534,5671,8451,5391,5629,7632,8613,5612,5274,7930,5642,5377,5358,8548,7599,8287,5519,8604,5237,5347,7528,5325,5301,7864,7872,7628,5407,7616,5305,7757,7681,7790,8316,7605,5352,8179,5401,8827,5237,5255,5688,5309,8104,5459,7994,8422,7723,7628,5476,5325,8239,5358,5329,7588,8201,5442,7632,8190,7994,5717,8093,5325,8647,8234,7653,8539,7588,5329,5617,8987,7746,7763,8329,7800,8073,8539,8451,5578,9367,8190,7994,7663,5708,5651,7957,8140,7548,7774,8159,5419,5651,8827,5453,5296,7667,7482,5407,7834,5320,7482,8005,8033,7982,8302,7786,8170,8519,8205,5661,8322,8307,5401,7516,5568,7663,5358,5301,8467,5325,8329,5218,8010,8249,7742,7877,7828,8329,5285,7872,7872,5464,7628,8255,8391,5396,5407,8827,8267,8222,5337,5726,5329,7648,5296,7864,8909,8438,5291,8397,8316,8613,5501,8005,8598,7872,8387,7500,5564,5291,8903,7478,8316,7487,7675,5237,8987,7994,8641,7706,7542,8267,7962,8093,7628,5367,5218,5325,8062,7487,7706,5666,5255,8267,7628,5237,8052,8073,8052,7663,7994,5296,7994,5325,7839,7521,8375,7763,5476,8873,5419,8005,5296,8322,5401,7990,8467,8245,5377,5629,5661,5358,8427,7962,5401,8010,5693,5381,7786,5661,8149,5407,8898,8062,7730,7528,8329,5642,8239,5448,5320,8329,8217,5274,7994,8766,5442,8349,8613,8647,7658,7706,8772,5485,5655,7696,8447,7616,5524,8827,7675,7706,8048,5407,7500,8005,5381,5708,7757,5476,5347,5309,8777,7622,7723,7867,5274,7516,7742,7795,7588,5329,5476,7500,5491,5301,5476,7986,5666,7706,8539,7972,7930,8909,5642,5305,7495,8647,8010,5448,8772,8422,7723,5337,7994,7511,5296,7558,5524,7877,8249,5301,5320,5573,7663,7516,5372,8170,8033,8277,8154,5480,7478,7872,5629,7706,7946,5329,7588,5717,8211,8267,8751,7628,5320,8164,5237,7558,5305,5381,7588,5407,8322,8077,8073,8261,5476,5274,7628,8170,9353,5401,7482,8322,7616,7610,8316,7994,8354,8093,5726,5717,8010,5651,7628,8005,5347,5325,8903,8427,5666,5666,5396,8527,7972,7994,7982,8427,8359,5301,5325,5651,7982,8359,7632,5325,8411,7828,5407,8987,5476,5666,7768,7675,7893,7834,8514,5432,7982,7982,5329,8293,5329,7487,7675,7542,5573,7982,5437,5480,5564,7500,7500,5329,7692,7628,8052,5496,8170,8039,8222,7834,8427,7542,8005,8282,5237,5320,5248,5688,7757,5325,5688,7558,5391,7542,8539,5578,7628,5564,8811,5237,8062,5296,8249,5717,5342,5367,7637,5391,5476,7538,8411,8783,7864,8994,7710,8354,5291,7752,7872,7898,5358,8354,5509,7667,7706,5320,7482,7706,5606,8467,5291,5296,8196,7706,8174,8387,7839,7715,8641,5568,5501,8560,7817,5372,5564,5224,5381,5564,7710,8307,8647,5274,5642,5655,5688,5337,7687,7849,7710,5337,7849,7653,8170,5301,5564,8297,7687,8131,7920,8073,5274,7605,7757,5432,5224,7786,8297,5726,5617,8964,8093,7786,7883,7786,7616,5301,7558,5726,8711,8170,7839,5296,5480,8211,5564,7924,8631,8577,7605,5476,5274,8144,5285,8170,8144,5255,5325,5201,5218,5476,8381,5305,7723,7867,7952,7817,7972,7800,5241,7972,7977,7648,7487,7706,5426,8577,5688,8670,5218,7977,8839,8751,5635,7864,8136,5320,8190,8527,7914,5655,5564,5274,5578,7478,5564,5301,7843,5358,5573,8467,7582,8613,7883,7834,8805,5329,8839,8631,7795,7972,8022,7893,8170,5651,9361,7706,5661,7667,7687,8249,8322,7487,5237,8099,5301,5459,7681,8272,8451,8811,7653,7628,5655,7893,7920,7994,5471,5476,8467,8170,7768,7542,5476,8447,8745,7994,5509,8039,5509,7582,7864,8282,8539,8484,8316,7924,7616,8039,7877,8057,7986,7990,5325,7849,8805,8349,7500,7746,7628,5381,5391,8190,5464,7834,8411,8110,7994,5564,8467,5712,7994,5564,8821,5661,5337,5688,7790,5367,7616,5391,5248,5629,7605,8548,5377,5564,8467,5296,7663,5676,8762,7982,5688,5459,5301,7795,8267,8170,7823,7957,8658,8164,7616,5274,7558,7843,8334,7487,5237,8461,5237,8467,5534,8057,5448,8015,8164,5325,5325,7478,5688,7653,8196,5476,8093,5396,5629,5476,5241,8716,7849,7982,5296,7538,8391,9471,7774,7616,8909,7628,5381,5377,8571,7800,7834,8987,5578,8340,7710,8539,5708,5329,8087,7972,5629,8033,8647,5726,7920,7628,5407,7632,7957,8196,7548,7482,5419,8952,5655,5285,5509,7972,5578,7538,7538,8039,7511,7790,5237,8827,7967,8190,7622,5377,8015,8211,7521,5305,5655,5476,5688,8594,7972,7924,5352,5285,5726,5432,8239,7533,7952,5237,5325,5622,5464,7893,8149,5291,8509,5296,7482,7877,5285,5261,7648,5248,8851,5248,8329,7487,7542,7558,8903,7687,5661,5261,5476,5485,5347,7877,7706,7839,7521,5617,7632,8845,7616,7637,8196,8115,8190,5401,7605,8115,5661,8211,5661,7706,8164,5413,8249,8052,8821,8154,5314,7972,8888,5661,7763,8010,5666,5524,7986,5651,5301,8104,5301,5688,8077,5329,8762,7675,7605,7610,5301,7610,8245,7491,5413,8987,7786,5676,7616,7542,5237,8179,5726,7768,8762,5237,7800,5291,5381,7605,7687,5661,5464,8816,8456,8293,7528,7548,5642,7696,5448,7763,5237,5426,7834,8795,5248,8519,8039,8190,5320,5274,8316,7610,5381,8533,8387,7982,7994,8721,5248,7994,7957,8548,7946,5726,5476,5476,8201,5396,7628,8473,5496,5476,5261,8033,5564,8234,5501,8952,5381,8136,5568,7883,8915,7548,7548,5305,7706,5578,5274,7972,8504,8196,5309,7667,8467,5712,7637,5708,5453,8959,8959,7977,5480,5274,5491,8222,8174,5642,8329,7558,8670,8772,8170,7946,5320,5519,5655,5476,8994,8073,8539,8631,5296,8234,7972,5325,8297,7533,7883,7790,8073,7935,5568,5274,8239,5726,7930,8234,5237,8451,5314,5622,5564,5476,8196,7692,8504,5419,7977,8879,5305,5381,7738,7632,8613,7605,7952,7482,7774,8577,8144,5329,9345,8903,8115,7734,8800,5453,5320,7977,8653,7558,5301,5676,5381,8057,7908,5476,7628,5655,7511,5688,8658,5325,5476,8201,9345,8839,8302,5325,5301,5401,5401,7692,5407,8936,7877,5358,8613,7491,8467,8093,7982,8227,5442,7888,8473,7779,8227,8456,5305,7893,8467,7632,8039,7834,8762,5237,7972,8170,7972,7533,7972,7795,7730,5320,5377,5377,5564,7667,5661,8411,5459,8653,7616,5519,7610,7849,8467,8222,8222,5564,7628,8641,7834,5296,7930,5573,5329,5237,5617,8267,8245,5651,8245,8359,8164,8772,8613,8716,7592,8631,8282,8068,7710,8940,5453,7616,5381,7542,8359,7692,5401,8222,5301,5578,5391,5329,5671,5476,5661,5274,7994,8473,5241,8073,5419,9367,8222,7521,7786,7734,8604,7675,5407,5573,5325,7883,8925,5285,8073,7521,7528,5432,7648,7628,7710,5708,7888,7952,8340,5342,8789,7877,5401,5358,5309,8903,5320,8772,5358,5347,7834,8613,7706,8307,5320,8631,5391,8126,5661,8073,8033,5320,7610,5237,5274,5347,8539,5491,5564,5320,5391,5407,7533,5476,5285,8387,5237,5314,5642,8527,8772,5301,8473,5564,7904,7849,7706,5325,5407,8888,5291,8533,7952,7893,8282,8282,5651,7628,7763,5391,7487,8427,8239,5291,5651,7681,5401,5642,7972,5285,5237,5261,7994,5237,7710,7628,5347,8322,8762,8196,5314,5325,8391,7616,8131,7528,5314,5309,8721,7516,5314,7632,5726,7605,7994,5291,8560,7628,5347,7914,8539,8721,5407,8721,8427,7952,5651,5391,8427,5347,5291,5325,5237,8539,5485,7628,8131,5309,5726,5285,8484,5309,8140,5291,7706,7972,5325,7786,7883,8397,8539,8987,5396,7768,5717,7710,5381,7952,7817,8062,5381,7643,5688,5661,7588,8447,5325,7500,7972,7687,5358,5426,7982,8987,7877,7972,5529,5573,5391,5476,5329,5291,8068,7834,5237,7834,7930,5693,5564,5688,5381,8653,8062,5325,7565,8329,7952,8062,8190,8272,7500,5381,5476,8504,8329,5237,5261,7706,5480,5325,8772,7914,7864,7924,8387,5642,8022,7616,8190,7528,5291,8093,8884,8052,5337,7571,5305,7565,7500,8783,5617,8548,5391,8068,7500,7893,5476,7588,8447,7849,7752,7582,7500,5655,7605,5241,7610,5209,5209,8427,7786,5391,5464,5459,8093,8539,7500,5301,5309,7533,5309,8811,5476,8170,5708,7687,5480,5476,7675,7999,5255,5358,7504,5726,7904,5509,8443,8653,7576,7839,7558,5218,7500,8329,5476,7478,7653,5391,8052,5285,5391,5606,5496,8131,7952,7768,5485,5381,5396,5671,7521,7994,7914,5442,8316,5655,8427,8391,7864,5296,7516,7779,7795,7599,5413,7681,7710,5666,7605,8582,7473,8267,7628,8909,5325,7972,8504,7616,7843,7994,8582,7864,5391,7823,7883,8073,8345,5337,7946,8255,5612,5309,8391,7628,8509,7558,5381,8227,7478,7478,5524,8022,7734,5296,7952,8851,5655,8851,8762,7715,5305,8839,8447,7990,5296,8222,7653,5342,8732,8190,7893,7710,7738,5476,8136,7482,7757,7920,5325,7877,8033,9032,5325,7706,8772,8863,7994,7893,8745,5407,5241,5476,7967,5426,5314,7779,5407,7605,8052,8099,7914,8473,8359,7858,7628,5459,7500,7858,5391,8190,5391,7643,7834,7864,5329,8539,5661,5564,7700,7632,5407,8635,7628,5209,8732,5237,5296,7482,8345,5274,7823,8033,8527,7605,8340,7834,7946,8190,8554,7495,7706,8711,7491,7994,5296,8909,7967,5261,5407,8073,5337,5464,8154,5717,7616,5651,7675,5651,5237,8322,8033,8293,5377,7588,7898,7710,7542,5391,5419,8467,5661,5529,7706,5642,5642,7599,7628,8473,8827,8745,5301,5305,8919,8987,5578,9476,7687,8115,5381,5401,7957,8504,7742,8312,5237,5314,5708,5301,5309,5578,5476,7982,5419,7800,7839,7653,5396,7877,7768,7542,7719,5237,5617,8217,5241,5386,5347,7864,5209,5291,5325,9021,5285,8073,5296,5622,7715,8982,7687,5391,8255,8772,8982,7734,8119,7706,5372,8772,7681,9481,7542,9487,5285,5485,5401,8417,7538,7663,8427,7920,5296,7893,5476,5476,5261,8261,5642,7542,5573,8658,7982,7576,8052,7491,7616,7605,7628,5407,5296,8762,5325,8190,8365,5666,7914,7994,7920,5301,7599,8411,5578,7834,5476,5442,7823,5442,7982,7877,8261,7482,5347,8033,7516,5578,7811,8365,7999,8903,7972,7834,8762,7834,5325,5693,5564,8504,5325,5381,8062,8272,8261,5261,7706,7823,8329,5476,8329,5325,5476,5419,5296,7742,8170,8387,8884,7500,7864,8099,5476,8022,8527,5617,7565,5291,5241,7786,7849,5255,8443,5391,7849,7687,7588,5655,8539,7967,7839,5726,7999,8711,5476,5476,8582,5666,5391,7795,5391,5381,5296,7558,7605,7914,5396,7883,8131,7768,7952,8329,5476,5241,5671,7521,5496,7643,7500,5708,5381,7478,7628,8255,7478,5524,5337,5296,8582,8851,8022,7663,8745,7605,7967,7495,8762,5314,7893,7990,7994,7628,8839,7914,7757,7877,7779,9032,5342,8772,5381,5476,8711,8033,5459,5464,5407,5661,8293,7491,7994,7864,7628,8190,7877,5209,8345,7834,8539,5651,7858,8795,5305,8903,7588,5661,5642,7898,5391,7542,5651,5309,7800,5578,5407,9476,8772,8982,8255,5347,7734,5291,7834,7542,8427,8033,7786,7849,8062,5367,5291,8062,7653,8062,5237,5381,8154,8239,7653,8687,7610,8307,5419,7706,5391,5301,8919,5509,5358,5320,5274,8527,8940,8940,7811,7834,5391,5573,5296,8863,7628,8068,9494,5407,7904,5730,7864,8387,7521,7811,8903,8800,5671,5726,7908,5237,8888,8052,7628,7605,7977,7930,5237,8073,7752,7811,8888,5564,8548,5501,5476,7972,8222,7637,7653,7920,8136,7667,8811,8136,5337,7757,8805,7487,5519,7811,7610,5352,7849,5305,8190,7790,5301,8447,5358,7628,7977,8641,7790,7920,5237,7930,8170,5305,5573,8772,7495,5291,7930,5655,7675,5564,7774,7817,8594,5476,8560,8249,8751,8154,8010,8772,8721,8115,7972,7696,7605,5391,8653,5209,7696,7952,7858,8411,8349,5491,8119,8582,7893,8964,5476,7710,7790,7849,5358,5329,8504,5296,5671,9032,5209,7977,7746,9353,7706,5671,8205,5407,7616,7893,5655,5617,8888,7643,5688,7558,8732,5325,7576,8277,8365,7487,8033,8987,5606,8456,8845,5274,8349,5407,5342,5564,8772,8827,8467,7972,7628,8015,8762,5309,8504,8598,8267,7706,5437,8277,8527,8277,7967,8119,7663,5622,5564,8131,8159,8115,8077,7994,8039,8033,8052,7972,8863,8473,8267,8833,8772,8365,7834,8322,5261,8863,7616,5309,7930,5285,8205,5358,8762,5320,7834,5573,8190,9501,8811,5407,7930,5655,5564,7542,7817,7774,8115,5274,8126,8015,8154,7972,8010,8772,8751,8411,8131,7605,8721,7696,5407,5358,5391,8964,7952,8582,5491,7790,7893,7849,5476,9353,7972,7977,5296,5209,8504,5329,8205,5209,5671,5309,5688,5655,8277,5617,5564,8762,5325,5320,8987,7487,8005,7487,8845,8456,8772,8277,5407,8863,5564,5622,8159,8115,7834,8365,8805,8833,5261,7616,8811,7710,8190,5617,7823,7504,5237,7491,7849,7558,5578,5367,5629,7967,7967,5301,8484,5564,7999,8811,7706,5261,7723,8110,5274,7957,5291,9509,9516,7839,8033,5671,8772,8170,8783,7628,8033,5329,7605,8354,5726,5381,7710,5573,7795,5529,7839,7681,7888,8577,8811,5612,5407,8170,7999,5642,7482,8170,8302,8467,5629,8287,8402,7977,5726,5381,5688,8811,5377,5726,7542,5464,8255,8255,5642,5372,5377,7972,8365,8365,8443,8994,8222,7692,7990,5471,5291,5564,7738,5407,5237,7972,7730,8898,8994,7706,8354,8322,5480,7658,5476,8184,5325,8851,7904,5459,7692,5480,7977,7839,8174,7500,7605,5524,5459,7972,5564,7533,8170,5261,8073,8447,8170,5301,8682,5476,5325,5491,5274,5285,5296,7605,5622,7473,5635,7952,7723,8005,8140,7710,5329,5413,7972,7977,7681,7774,5407,8005,8255,5358,5274,7888,5325,8170,5325,5320,5647,5573,9345,8077,7675,8073,7710,8658,8711,5320,7843,5218,8316,5442,8255,5612,7738,5407,7706,8494,7994,5314,5381,5325,8077,8170,8170,8099,5329,8873,8359,8170,7710,5509,7768,5377,8073,8443,7867,5325,8140,5237,7774,8548,5352,7972,5241,7828,7972,7628,7888,7696,8104,5218,7548,8539,8827,8033,8663,5407,8005,5629,8170,5564,8443,5459,7858,8110,8048,5377,5496,7478,5407,8479,8451,5237,7738,8322,8427,7828,8427,5325,8077,7800,7511,8427,5358,5248,5329,8170,8140,5629,5491,5612,5237,8005,5325,7972,8322,8539,7800,8548,5401,5413,5372,5501,5432,8422,7946,8919,8554,7511,8010,5573,5573,5471,8073,8140,8589,5291,8307,7516,5329,8255,8255,7734,7738,5320,8498,8772,5372,7738,7482,5358,7605,8170,5573,8255,5471,5442,5325,7478,8354,8184,7516,8577,7972,5301,7972,7877,5573,8676,7994,7610,7516,5274,9361,8857,5347,5661,8261,5661,8077,5407,5726,5381,8498,8857,8022,8005,5291,7516,7914,7817,7482,8272,5726,5377,7888,7888,8888,8154,5325,7542,5651,8381,5476,5629,5407,7482,7834,8745,7834,5726,5651,8149,7952,8104,5325,5377,8312,8919,7628,7935,8387,7952,7667,7994,8354,5666,8539,8190,8010,8504,8498,5329,5320,8068,7742,5329,7864,8136,7706,7790,8821,8504,8010,5622,8062,9525,5726,5464,8539,8093,5491,5301,5655,8010,5381,8608,5352,8359,7786,7628,7610,7605,8164,7864,7904,7576,7972,5642,7990,5476,8745,5391,5255,7696,7723,8170,5285,5347,5329,8509,7768,7576,5437,7972,5617,7779,7628,8670,7632,7811,8267,5578,5509,5564,8745,7576,8447,8093,5578,8427,7779,5209,5296,7599,8287,8039,7839,7811,5352,7542,8234,8184,7742,7500,7930,8099,7710,7779,5476,8110,5325,7500,5367,8732,8694,8658,5717,5337,8062,5320,5564,7706,5564,7710,8196,8427,7628,7752,8795,7786,5655,5367,8467,5329,8484,8783,5622,7675,7643,5717,7935,5285,8427,7734,8149,5501,8010,7516,5717,7719,8795,7811,5476,5325,8217,7696,7628,5274,8062,5666,8456,5301,5301,5329,8201,7935,8387,7952,8190,8082,8504,5622,7864,8099,8821,8062,7692,7990,5329,7576,7972,5476,7982,5655,5301,5642,8745,5391,5437,7972,5285,5642,7768,5329,5285,5578,5564,7779,8184,7930,5296,8234,7599,5291,8287,5209,8694,5564,5325,8267,5320,8456,8467,5367,8427,5329,7935,7516,7528,7786,5655,7839,7920,5442,8888,5377,7986,8987,7482,8282,8411,8411,8411,5476,8411,8762,7839,8411,8411,8033,8613,8789,5320,5655,8676,8287,7482,8745,8411,8411,5699,7990,8239,8245,7877,5296,7542,7628,5699,7706,8329,5476,8039,8349,7706,7675,7599,8721,9032,7616,5712,8267,5309,8560,8387,8010,7478,8245,7864,7811,5578,7877,5309,8467,7994,5401,7710,7935,8447,7681,7972,5476,7592,7977,8164,5491,7696,8539,8312,5688,5459,8115,8272,5320,8170,7888,5485,5296,8316,5337,5651,5413,5325,8716,5476,5381,8863,8577,8329,8422,8022,7795,8272,8334,5730,8447,7632,8427,8190,8329,8201,5337,7675,5688,7853,7605,5688,8539,8539,5647,5485,5377,8307,8479,5578,8316,8687,7478,5391,7558,7588,5372,8658,8527,5401,5612,5237,5301,7924,8345,8387,7990,8745,8387,7811,5491,5329,8745,7576,5309,8267,8287,8005,7994,5224,5476,8245,9531,7632,5358,7495,7628,8903,8805,5471,5342,8888,8732,7710,8498,7628,7757,5655,5337,8267,8732,8411,8039,7864,5367,5464,5688,8479,8245,7994,5213,5476,8131,5642,7478,7511,8329,7738,8539,5419,8467,7588,7738,7542,5629,5642,7710,8015,5708,5391,7599,7710,5485,5372,5578,5471,8539,7768,7710,8451,7516,9021,7648,7542,8190,7628,5476,7478,8239,8170,5391,5358,5642,8349,5661,5342,7811,8427,8909,7696,7622,8411,8411,7986,5471,8467,8154,7632,5301,5476,5712,8919,7706,5218,5248,7653,7628,8211,7972,7723,7533,8582,5564,8756,8888,7565,5426,8136,7742,7914,7898,8467,8879,7994,5661,5305,7478,5320,5337,7653,7658,5688,5358,8456,5224,8670,7930,8048,8539,7967,7491,7516,7999,7952,7605,5391,7487,7628,7592,5717,5237,7972,5476,8329,5730,7768,5285,5237,5651,8543,7843,7977,7908,5241,7786,8267,7834,7558,8307,7710,5329,5564,7478,5564,5524,8052,8381,7977,8845,7667,7616,8073,5237,7930,5301,8267,8201,7675,7706,7920,8745,8039,7533,8772,7967,5255,8277,8447,8033,5337,5529,7521,7883,8170,5218,8255,5476,8762,7834,5712,8893,7930,7864,7628,5676,7628,8267,5730,8005,7521,5407,5448,8577,8391,5237,8613,5573,5209,7967,5612,7478,7482,8267,8052,5218,5358,5305,8783,5564,8239,7482,5622,7982,8255,7834,8015,8010,5309,7500,8919,5358,7528,5358,8554,7994,5241,7790,5261,7516,8312,7883,8249,7491,8340,7908,7972,8249,7967,8582,5401,8631,5280,5337,7706,7834,7877,5476,8093,7811,5237,8527,8365,5301,5337,5693,5688,5314,8456,7576,5476,8560,7643,8484,7834,8397,7790,7883,7500,7853,5578,5501,7653,7898,8267,7658,5606,5280,5480,7571,7653,7786,7588,7734,7616,5437,8391,7632,7653,5442,8845,8316,7972,5274,5419,7558,7482,5647,7675,5712,7692,7940,5666,7734,5534,5712,7834,5237,8929,7994,5329,5347,7834,8272,8456,8427,8104,7675,8397,8287,8140,8653,5377,5274,8762,7982,7500,5426,8772,8433,5377,5301,8312,7487,5448,5651,7768,5442,8451,8267,5218,8608,7687,8370,5629,5419,8647,8489,7628,5301,7719,8149,5476,5419,7734,5285,5237,8772,8312,8789,5476,5301,8170,5480,5476,8929,8613,8329,8811,7834,8093,5651,5314,8929,7528,5285,5237,5209,7834,8411,7774,5391,5337,5391,5391,5301,7548,7491,7779,5301,5309,7706,5688,5476,7757,8479,7999,5693,8312,5688,7849,5564,5655,8022,7904,7920,5564,8716,7757,5261,5329,5568,8732,5209,8010,7628,5396,7653,7817,7706,7628,8184,8539,8647,5237,5476,7637,5391,5647,5237,8293,7542,5606,5407,7920,7482,7482,7904,7565,8033,5426,7853,8354,7834,5564,5325,8136,7528,9542,5291,5471,8131,7482,7542,8282,5325,9550,8783,8816,5501,8267,8110,8196,7920,5407,8062,7628,7667,8805,5726,8762,8527,5671,8915,8154,7658,8756,7994,7752,8613,5661,7888,5209,8447,8461,5391,8438,7786,7864,8093,7790,5476,7786,7904,7920,7628,5426,5712,8201,5337,7828,7977,5391,7864,5213,8964,8170,8427,7706,5617,8190,7999,8222,7849,5358,8119,5573,5391,8073,7605,7710,8925,5407,8316,7542,7521,5476,7511,7542,5391,5381,8354,5464,7924,8282,8073,5381,8131,5320,5241,7715,5726,7548,9556,8484,7715,7883,7482,5476,7487,8582,9012,7823,5407,5337,5426,7805,5285,7710,7696,5717,5224,5391,8711,7977,7482,7616,7576,5248,8987,8316,5305,5666,5325,5671,7500,8504,9021,7972,7723,5629,8467,5274,8467,7768,7920,8964,7605,5730,8391,7473,5642,5274,5274,5519,5514,8391,8149,5325,7920,8613,5651,5476,7482,8687,8345,9562,5337,7719,8898,7542,8375,7588,5476,5655,7653,7872,5391,8946,5688,7675,7588,5519,8447,5377,8451,8613,7994,7533,8307,5329,5712,7843,5509,7528,8267,7930,7478,7588,7628,7877,8805,8073,7653,7977,8062,8498,8527,7877,8272,7972,5342,8190,7478,7478,8234,7482,5524,5329,5426,7542,7914,7653,7616,8104,5573,5347,8170,5274,8964,8211,7734,5448,7982,7872,7558,5524,5301,8594,7914,7605,8539,5651,5708,8397,8170,8227,8467,5407,8461,5218,8272,8227,8099,7473,8093,5325,5329,5285,8322,5237,5676,8438,5329,5352,8345,7920,5274,8387,8863,5671,9051,8571,7738,8653,8762,8827,7805,5209,5241,8543,7491,8827,8658,8772,5693,7706,7542,5314,7706,7628,5309,8721,7790,8227,5606,5237,5401,8272,7786,8451,5352,5320,5329,8249,5329,5396,8473,8144,8277,8800,8519,8239,8716,5377,8365,5419,8827,7616,8062,8329,7779,8721,8514,8509,7616,8539,5401,8039,5274,8762,5647,7994,8827,5564,8110,5296,7864,8110,8033,5377,7687,8062,7924,8676,5367,5237,8946,5237,5464,7994,5464,7999,5496,7867,8239,8062,7548,5476,8711,5509,8255,5730,7853,8329,7811,7491,8670,5647,7605,5407,8022,8005,5261,8190,7888,5381,5655,7734,7548,7994,5519,7719,5712,5213,7558,5396,5285,8149,8287,7738,7898,7946,5401,5612,5237,7511,8267,7491,8417,5564,8164,5629,5612,8322,5717,8851,7805,8073,5347,7730,5358,8940,8438,5209,7478,7616,5464,7681,7511,8509,7962,8302,5448,7800,8052,5655,5655,7632,5476,8467,5629,8077,5237,7977,7877,7538,7883,7883,5476,5342,7920,8170,7738,8196,5329,5314,7742,8443,8641,5309,5501,8190,5401,5342,5708,5573,5305,7632,5358,7994,7511,8539,8255,5401,5476,5329,5708,8946,8322,8402,7706,8249,5629,7800,5218,7877,8052,5485,8473,5320,7957,5519,8827,7610,8365,8154,5485,5347,5367,7663,8756,5314,7994,8888,7786,7542,5426,5396,5325,7734,5296,8322,8312,7516,5612,5519,8589,7558,8005,7924,5329,5386,5381,7616,5342,8010,5296,7768,7924,5629,7521,5291,5285,9021,8239,5381,8149,8217,8772,8365,5325,5274,7548,8919,8387,7616,5218,5301,5485,7675,7734,8964,7994,5661,8359,8052,7605,7610,7893,5342,5329,5676,5296,7628,5401,7616,8255,7542,5314,5666,7616,8964,7811,7491,7888,8039,8903,8170,5501,8245,7930,5476,7663,8548,5314,8527,7605,7946,8863,5325,8077,7738,8154,8745,8888,5699,7834,8381,7500,5407,5407,8375,7834,7972,5651,5301,8772,8903,8857,8582,8987,5352,7986,7605,8851,5347,5329,8473,8222,8329,5274,7834,7610,7864,5329,7528,7487,5347,8073,5407,5642,7877,7521,5407,5237,8721,8777,8077,5666,7687,5661,7710,7632,8857,8375,5372,8077,5291,5629,5320,8816,5309,5688,5476,5655,5693,7999,8312,7757,5647,7542,8732,5261,7715,8010,7757,8514,8293,8068,7637,7528,5671,8201,7658,8170,5471,8783,7548,8136,7930,8461,8282,7542,5642,8196,7667,7478,8131,8756,7565,8154,7853,8816,7904,7628,7542,5241,7542,7786,8073,7864,8312,8201,7904,8354,8857,7715,7883,7977,7828,5337,8964,8073,8093,8851,7542,7511,7768,5391,8190,5617,5358,8447,7920,7888,7478,8898,8149,7696,7994,8316,5337,7558,7977,7491,5386,5367,8903,8316,5329,7757,7482,8509,7687,7605,5274,8805,9003,8010,5396,7768,8302,7977,5642,5717,8391,5241,7719,5285,5476,7877,5248,5629,8345,7482,8613,7605,8149,7734,5261,8277,8594,5401,8946,7675,5612,5301,5241,5573,8039,5524,8964,5519,8451,5329,8527,7528,7511,8509,5407,7872,5377,7843,7542,8170,9051,8322,7888,5606,8451,7790,8543,8653,8407,7473,8653,8402,5237,7786,7632,7805,8863,5309,8827,5274,5676,8154,8057,8772,5693,5407,8170,8249,5209,7867,5291,8509,8322,8022,7864,5496,8255,7548,8676,5448,5464,7811,7663,8762,5712,7957,8005,7893,5712,5305,5655,8527,5717,8077,5426,5676,8077,8136,7511,8052,7898,5476,7977,8888,5237,8473,5629,7800,7632,7592,5218,5485,8539,8443,8190,7491,8772,5291,8239,7734,5329,8217,5347,7734,8498,8322,8919,8154,5666,7605,5314,5401,5476,5496,8473,8267,5367,7521,8227,8411,8131,5708,5459,5726,8239,7555,8227,8514,5661,8969,5261,5237,8267,7834,5358,7653,5358,7504,8509,8756,5413,8062,8489,8589,5274,5274,5407,8438,9568,0,8322,7687,5386,5358,5352,5367,5329,8411,5358,8489,7849,8721,5717,5717,8048,5291,8062,7952,8438,5476,8653,7843,5329,8805,7653,8170,8354,8354,7800,5726,7516,8227,8635,5407,7834,8438,7834,7864,7643,7628,7752,7521,7491,7542,5726,7834,7752,8282,8345,7994,7482,8144,5699,5347,8762,8239,7628,5606,8077,7738,8509,7849,5699,8519,5347,8307,5629,8005,5629,8721,8647,8795,5237,5296,7877,7920,8903,7811,7738,8179,5342,8514,8969,5261,7834,5296,5358,7752,8519,8489,7994,5274,8062,5407,8438,8756,8514,7687,5386,7952,7752,7738,8438,5329,5642,8048,5717,7849,8653,8484,8354,7843,8893,7628,7834,8227,5237,7752,7643,7834,7864,7877,5347,5726,7834,8144,5699,5717,5606,7738,5699,8795,5347,5564,5564,5333,8217,7528,7542,7478,5476,5480,7605,7924,8093,7864,7628,8282,9577,8946,8267,8821,7972,7920,5485,7565,7924,7482,5655,5381,7491,7904,5726,8539,8443,7571,7828,7696,9051,5480,5717,8312,5224,5564,5325,5329,7610,8033,5426,7888,7957,5305,5419,5320,7888,5274,7696,5459,7628,5671,5261,5337,8255,5426,8387,7558,5358,5367,5261,8119,7972,5480,8307,8467,5655,5573,5274,7790,8077,8267,5274,8456,8456,7967,5476,5407,8099,7482,8170,7805,8033,7920,8093,8272,5274,5329,8594,5274,8211,7605,7924,8705,7786,5248,5301,5301,7628,5377,7628,7610,7994,7994,8077,8217,5342,7977,5464,5381,5342,7482,5671,7834,5296,5717,8267,7632,7994,7663,5237,7994,5325,8015,8316,5708,5419,7482,5301,7648,7516,8422,8647,8222,5342,5342,7628,5274,5442,8447,8010,5325,8010,5237,7482,7864,5296,7610,5381,5301,5301,5301,8863,8756,7972,9032,7667,7823,5476,5699,7834,7542,8387,7504,8387,5325,7786,7811,7972,8131,7667,7839,5218,8170,5573,7982,8925,7632,7628,5442,7757,5342,7653,8154,8617,8721,5573,8925,5218,5325,5237,5442,7511,5301,7823,5325,8925,5261,7738,7628,7628,5529,8136,8762,5367,5391,7752,5501,8334,8267,5301,5358,8608,8093,5666,8345,8222,8249,7828,7843,5426,7478,7999,7500,5325,7715,5274,7675,7687,8805,5655,8456,5712,8093,7706,7482,8154,8302,7893,5534,8427,7482,8447,8548,5651,7516,5476,7582,7616,8387,8249,8617,8093,5367,8062,7482,7632,8349,8267,7511,8249,8888,7478,7994,8154,7482,5237,5476,7663,7883,8919,5274,5386,5329,7977,5730,5325,5337,5337,7904,7920,7994,7962,8073,5325,8349,8249,5448,7538,5301,8154,7663,5391,5491,7610,8093,7663,8519,5301,7800,5485,5419,7715,8015,7877,8745,5485,8052,8402,5485,5291,8745,5485,5485,7828,5485,7628,7893,5642,8898,5651,7746,9591,8174,7491,5606,5676,7491,5717,5693,5496,5407,8504,8539,8329,7478,8504,8196,5309,5529,8577,7904,7482,7730,8136,5305,8443,8245,8282,5476,5642,8272,5480,7977,8062,8174,7924,5209,5329,7977,7628,5325,5661,5688,8345,8727,7817,7904,8245,8255,8539,5509,8811,8484,7681,8255,8190,8571,7538,7738,8015,5224,7752,8170,7986,5661,8110,7898,5476,5688,8267,7849,5509,7715,8170,5407,8411,8539,5407,5274,8322,8131,7738,7930,8345,7533,5717,5564,8144,5237,7957,7839,8131,7977,5325,8312,5419,7990,8245,8154,5274,7542,8762,8631,5407,5261,7994,8504,5564,5712,5676,5717,7610,5309,7653,8227,5301,8110,8329,5617,7994,7834,5519,8272,8131,8267,7588,7605,7994,8800,8762,8222,8762,7994,8504,5367,7653,7994,8267,8272,8484,8484,5274,5661,5274,5325,7482,7864,8267,8670,7478,5352,7946,7616,8267,7930,7482,7482,7521,7982,7491,5693,8745,7533,7521,8598,7653,7500,7511,7500,5237,8022,8005,7706,8560,7628,5509,8282,5471,7828,8751,7533,8312,8093,7628,5485,5666,7849,8255,7864,7994,7994,5381,5314,8456,5476,7982,8370,8217,7858,5255,7706,5564,7977,7853,8827,8005,7977,7757,5606,7516,7616,7667,8994,7653,5485,8422,8048,8751,8277,8422,5381,7643,7628,5693,5712,7834,7653,5407,7990,5491,7592,8196,5476,8159,5377,7864,7864,7834,7643,8795,5218,5622,7834,5274,8676,5476,8467,8940,7982,7828,5419,7692,5666,8239,8647,5391,7800,7706,7648,8052,7478,7786,5309,7542,5296,8427,7511,5629,5301,5274,8751,5329,5347,8077,7768,7491,5693,8745,7653,7521,8598,7500,7500,5509,7786,5471,7706,8282,8022,8560,7628,5329,8093,8312,5485,5381,7977,8015,7653,7616,7616,8370,5476,8751,8919,8422,7653,8329,7616,7990,5377,8239,7864,5622,7834,7864,8077,7800,7828,8940,8052,5325,8427,8613,8751,7768,8527,8473,5372,8903,5367,8427,8473,7730,7811,7658,8577,7795,8190,7628,8170,5329,7487,8087,7924,5642,5448,8509,5514,8010,7511,5237,8239,8647,8647,5301,8473,8110,5301,8239,7723,7719,8527,5342,8527,7610,5329,8473,7730,8170,7616,5448,7521,5237,8647,8473,8473,7893,8010,8073,7893,5391,7982,7972,5325,5693,8261,5480,8631,7962,7521,8068,8504,7628,7565,7710,7482,8010,9596,9609,7482,7982,5476,5476,5358,7839,9621,7511,7839,7710,7487,8222,5391,8057,8370,5255,5606,5285,5655,5224,7839,8316,7839,7521,7924,8539,7696,7834,5622,5352,8179,8073,8028,7864,8201,7667,8307,7588,7628,5491,5642,7643,5606,5391,5407,8863,5224,5274,7877,7877,8772,7893,7588,7994,8721,7864,8699,7643,7982,5464,8964,5296,5407,5730,7849,5426,7687,7994,5564,7823,7828,5255,8073,5396,5237,8005,7511,5448,5358,7491,8267,5305,7511,7800,7715,7628,5519,5309,8845,8005,5622,5381,7710,7994,5476,5325,7648,7558,5218,8272,5296,7521,8427,5501,8543,8249,7834,7715,7877,7521,8433,8857,5358,5391,7972,5325,7706,5426,8068,5237,8504,7628,7710,8010,7482,5407,5391,8222,7487,5459,5476,7696,7648,7521,5325,5509,5285,8119,5224,8073,5666,7864,7628,8028,9633,8641,7643,5274,8721,5496,8005,5459,5448,7877,8077,5305,5320,7511,5519,5309,7800,8589,5622,7700,8087,8005,8039,7521,8484,7576,8447,5358,8073,9641,5301,7893,8033,8345,7904,5564,5274,7752,7528,8402,5358,5426,7538,7628,8527,7653,8539,5480,5480,7710,8329,7605,5661,7706,7883,8915,7730,7482,7752,7972,5325,7893,5726,8073,8222,7908,5480,5476,5726,5241,5726,7592,7768,7999,8467,5352,7576,8170,7605,8293,8170,7920,8205,7977,8093,5655,7658,5564,7675,5391,5358,5480,7920,7487,7940,7734,7858,8272,7972,8164,7478,7582,8149,7768,7914,5274,7696,8370,8073,8721,7482,7632,7538,7516,5661,5325,8170,8022,8196,8211,7779,7653,5647,8190,8422,7667,7628,7558,7528,7663,5329,8863,7576,5617,5325,8653,8272,8277,7986,7990,7706,7706,7628,7893,5514,7834,5381,5642,7478,5476,5329,7858,7542,7893,5464,5407,8154,7752,5377,8519,5367,8548,8005,8110,8087,7795,5480,8005,5448,7542,7558,7972,7511,8140,8909,5237,8340,5442,7834,8467,7967,5514,5261,5301,7972,5329,5305,5237,7632,8015,5305,5708,8179,8647,8827,5726,5358,5274,7628,7500,5396,7849,7588,7675,7516,7877,5471,8789,5480,8833,8772,5285,8964,7834,5301,8427,5485,5476,7828,7516,8888,7967,7834,7710,5329,5274,7521,5325,8617,8170,5237,7811,5301,8473,7538,7628,5480,8329,7710,5726,7828,8073,5329,8205,5391,7487,5564,8170,7967,7605,5480,8293,7977,5476,7658,7675,7538,7790,5285,5396,7632,8370,7858,7839,5301,7558,7834,5325,5285,7667,7706,7706,7990,8863,7653,5358,8179,7858,7972,5237,5514,7478,5708,7511,7542,5261,8647,7632,8827,7877,7967,5325,5285,7521,7786,5464,5301,7994,7849,8811,7920,8608,7853,5661,7667,5358,7710,5699,8539,7692,8370,8255,8131,7473,5717,8427,8845,7858,5358,7990,9012,7930,5342,7957,8073,7675,7616,7849,7839,8739,8888,5305,8608,7957,5386,8762,8205,5342,5377,8888,8739,8479,5524,5564,5688,8119,8255,5329,5372,8473,5301,8653,5377,7565,7533,8721,7790,7883,5320,7576,8048,7681,5352,5209,8048,8297,8811,8174,7920,7790,5564,7706,8164,5726,7521,5519,7795,5325,5352,9361,8670,8438,8391,5301,5391,8548,5377,5352,8022,7622,7768,5712,8598,5407,7888,7982,7986,8484,7706,5401,5655,8888,8245,5305,8589,7800,7800,9026,7500,5712,5305,7605,8789,7811,7908,8539,8888,8577,8261,8307,5209,5386,8062,5237,8307,7653,7610,5342,8484,8227,5459,7628,5301,5676,8190,7542,8582,8548,8711,5655,8987,7628,7952,5305,5325,7706,7999,8005,7643,7904,8312,5712,7500,7834,7675,7779,7628,8422,7706,7599,7779,7994,8277,7710,8647,5606,5305,5325,7500,5391,7834,8427,7628,8479,5241,5301,8277,7817,5480,7757,5342,8762,7864,5358,8302,8560,8068,5329,5476,5381,8010,7576,7628,5329,7752,7982,5426,5237,7565,5501,8136,5337,5712,8762,7849,5367,5726,7653,7920,7872,5480,7500,5688,5255,7622,5358,5325,7994,8170,5568,8903,8033,7990,5448,8184,7723,7658,8222,5564,7687,8115,7786,5476,7757,7742,5305,5381,5320,7957,7710,7696,8345,7994,7681,7605,7482,8577,7632,8316,8255,7706,7605,7994,5285,8598,7952,5274,5717,8795,7491,7500,8316,8711,7888,7667,5274,7800,7675,5296,8427,5407,7628,7999,5578,8234,8845,5514,7478,5688,5642,5564,5509,5337,5301,8302,5301,8582,5291,8190,7746,8154,5329,5218,8447,5209,7706,8745,7521,5629,8104,5325,7757,7867,7516,7576,8851,8277,7893,8447,5476,8653,5329,8484,8227,5485,8170,8093,7967,5301,8676,7663,5285,8184,8154,8126,5391,5693,7914,5325,5391,5730,7478,5480,7692,8322,5325,8010,8582,8903,7538,8302,7883,7994,7628,8658,8110,5459,5464,5401,7834,5688,5688,5407,5501,7864,8387,5564,8159,5407,5367,5622,7982,5471,7533,7834,7752,5407,8052,5305,7687,5726,7511,7632,5391,5391,7482,8533,5655,7738,5642,7715,8164,7542,7706,7752,8893,5352,5401,5708,5333,5296,8073,5325,7681,8925,5407,5514,7800,5237,5688,8473,5325,5325,7605,7768,7605,5622,8154,8015,8756,5529,5432,5291,5726,7521,8073,5285,7834,7588,5352,9021,5261,5261,8010,5291,7516,8329,7622,5237,0,8946,7675,8721,5730,7908,8062,5514,8427,5367,8211,8119,5301,8227,7935,7864,7511,7616,5325,7500,7834,8302,5301,7628,5301,7763,5655,7521,7864,5329,8721,5301,8946,7628,7834,8863,5337,8554,5329,7565,8745,7516,8073,5255,8184,5329,7757,5407,5564,5329,8222,5730,5699,7658,7952,5381,8217,7994,7696,8099,5509,7828,8461,5325,5285,5274,8821,7521,8329,8845,5301,5401,5407,5301,5391,7681,8234,8302,5509,5655,5325,5367,8745,8093,5386,7967,7893,8653,8227,7786,8447,8184,7757,5485,8190,5391,5209,5501,5459,8184,7588,7864,7839,7511,8159,7864,5688,5564,5464,7994,8940,8411,5514,5708,7706,7738,7482,5642,7994,8267,5333,8473,5529,5432,7800,8438,5218,5622,7877,5291,5261,7516,9021,5329,8795,5301,8033,7482,5453,5476,5564,5305,8484,8201,7834,5564,7757,5325,5325,5261,8811,5391,8527,8391,8222,8467,7972,5693,8196,5564,5501,7752,5407,8539,7628,8998,5285,5291,5291,7920,7811,5655,8222,7834,8387,8154,8533,5666,7990,7742,5325,7977,8903,8093,5419,5564,5480,7628,5301,8411,7972,8509,8467,7628,5726,7675,7972,7883,8170,5337,7786,8936,7628,7924,5666,8387,8964,7628,5301,7616,8863,7478,7696,7795,7663,7610,7834,8073,8617,5325,8577,7605,7834,5391,8062,5301,8613,8711,5717,8504,5285,5519,7576,7972,7632,5274,7972,7706,7972,7977,5325,7628,7811,5476,8201,7478,5676,7628,8073,8329,5651,5358,5237,7667,8170,5647,5485,5377,7864,7864,8582,7982,7478,5651,5329,7628,7521,7478,5255,5320,5564,8345,7999,5352,5325,5524,7930,7757,5329,5699,5407,8170,5647,8539,8467,7706,5301,7491,8863,8721,8863,8093,8119,7706,5485,5476,7972,5485,5209,8277,7582,7706,8104,8845,8170,5726,8154,5655,5325,5320,7478,7710,7924,8110,5476,5688,5377,7982,5377,7864,5381,7790,5564,8104,5647,7834,7849,8467,7858,8267,7706,7982,7616,5471,7715,8170,8772,8777,7565,5301,7616,8447,8190,5534,5391,7849,5573,5629,5367,8893,7511,5325,7786,5407,8196,7653,5209,5519,8447,5642,7834,5325,5301,5606,5568,5377,5224,8447,5647,7538,5285,5524,5606,8033,5301,5622,5578,8845,5642,5476,7742,7710,7972,8239,8164,7957,5358,8617,5314,7920,7478,5291,7482,7768,7487,5285,7924,5396,5358,7972,7588,5464,8010,5285,8239,7834,8316,8484,5274,5274,5647,8349,9021,7628,7616,5329,8641,7605,5529,5476,7920,5320,7632,7706,5476,5325,5578,7628,8427,8811,7924,5377,8381,5647,5651,8839,8249,8539,8354,7628,5666,8222,5329,7898,7610,5325,8354,7616,8721,8873,5301,8375,5453,8484,5325,8467,8391,9471,7742,8387,5237,8222,5655,7786,7582,5329,8387,7548,7924,7500,7972,5726,8467,5401,5480,7487,7972,7696,7795,5519,8479,7977,5717,8375,8062,7786,8073,5301,5676,7982,7864,7628,5274,5377,7478,5699,7622,8345,5325,7930,5352,5688,8104,8845,5476,5464,7982,5325,7864,7786,7734,5209,5712,7715,8159,5642,5342,8789,7719,5296,5407,7849,7628,7616,5578,8239,8239,5285,8484,7628,5329,8473,8427,7616,8154,5301,8721,5529,5329,8484,7723,5407,5274,8451,7628,5407,7834,8451,5329,5337,8140,5325,8473,8533,5642,7605,7667,7605,5407,5651,5651,7478,7511,8033,7478,7952,8447,7706,5329,8484,7667,5285,5301,7592,7834,7977,5651,5301,5617,7883,7516,5485,5325,7500,7588,8140,8349,8349,5717,7482,5564,7746,8387,7628,8174,5726,5642,8711,7681,8783,7628,5726,7746,8170,8527,5564,5726,7746,7538,5305,5305,5296,7610,7967,8402,5501,5464,5464,8255,7723,8307,7853,7946,7867,5301,7946,5320,5301,8184,7710,9372,9372,5476,7542,7883,5237,7622,5305,5305,7542,5491,5573,5337,7828,5476,5367,5476,5726,7667,7834,5485,7628,5301,8903,8762,8179,7482,5726,7834,8772,8345,5655,5622,8179,5476,5712,7883,7834,8762,5485,7972,5501,5564,5564,8438,8438,8467,8140,5726,9646,8762,5325,7675,8211,5708,5432,5480,5358,8467,8387,5480,5693,5651,8716,7675,5209,7786,5358,7582,5501,8272,8467,7920,8227,5524,7706,8136,5629,7786,5320,5320,5501,7893,7752,7904,5564,8604,8316,5726,8119,5391,5337,5391,8805,7478,8184,5485,7643,8170,7834,5647,5377,5237,5274,7834,5407,5358,7610,5688,7653,7632,7478,5730,5237,5717,7687,5274,5534,7687,8789,7700,7706,8533,5325,5209,5325,5325,7706,5325,7710,5325,8033,7849,8387,8800,5661,8174,5358,5391,5209,7710,8184,8170,7681,8093,8093,5573,7768,5661,8800,8077,7653,8316,8287,8653,7628,7940,5476,8447,8451,7967,5726,8805,5274,7742,7864,8494,5476,8287,7967,7828,8267,9654,8387,7710,8033,7734,8277,8170,8093,8174,7681,5209,8800,7628,8287,5726,8494,7610,7710,5241,8334,7834,7610,5329,7817,8795,7516,7940,7738,7610,7817,8795,7952,5688,7768,7952,8354,8721,7849,8604,5661,8073,8115,7867,5480,7632,7883,7675,8893,5407,8190,8411,7962,7521,5274,5255,5655,8119,7982,5391,7605,8354,8104,5329,7478,7582,7675,5325,5381,5464,5426,5712,8010,7805,5622,7858,8527,7605,8062,7867,5730,5688,7622,7542,0,8005,9657,7957,8267,7849,5629,8354,5442,5524,7893,8893,5241,8131,8077,7542,7675,8498,7817,8334,8762,5301,5358,5314,5573,8635,7710,7605,8322,7610,5347,5407,8201,5301,5296,5358,8539,8827,7834,5352,9367,5622,5213,8647,8307,7628,7763,5622,8115,5237,8039,5476,7982,7877,5568,8140,5255,5442,5325,7952,7588,7957,7687,5329,8184,5612,8498,9662,5612,5333,8676,9670,7675,8073,5651,7487,8903,8239,7883,7828,5564,5407,8438,8005,5491,8255,8919,5464,7962,8149,8365,7675,8762,5391,8365,9676,5213,9680,5213,8811,8170,8762,5329,7834,8073,8903,8159,7990,7610,7542,5401,8073,7576,8277,9686,5347,8005,7628,8354,8052,5655,7658,5377,5651,5442,5325,9690,9680,8909,5622,7576,8010,5448,7576,9695,5314,8909,5329,5329,5407,5480,7616,7628,8277,7610,9701,5401,5347,7542,8354,7548,5726,5401,8411,8676,8857,5301,7487,7632,7616,8354,5314,7500,5651,8539,8010,7914,5578,7914,8293,5661,5666,5274,5209,8447,8879,9710,7542,9715,5358,8282,7478,8302,8756,8110,5501,5358,8402,9721,5301,7710,9726,9736,7904,5301,8811,8170,8312,5305,8140,8184,7576,5301,7588,7681,5301,7706,7588,8062,8316,5209,8604,8354,7576,7516,9345,8126,9740,5501,5325,9745,9751,7779,5274,5564,7779,8179,8845,5301,8354,5329,8170,7706,8402,8126,8015,7516,8548,5485,8039,9759,8589,8589,5629,8411,8110,7746,5730,7500,8548,7982,5407,8365,7839,5301,5661,5564,8447,7930,7786,5519,5524,5629,5688,9751,8340,9345,5629,5651,8589,5501,5372,8756,5419,5305,8589,8589,7495,5237,7779,5419,7908,8073,7811,985,8548,5274,7495,8641,8077,5301,7571,8539,8077,7681,5347,5651,5285,8484,5237,7817,5241,8484,5337,5325,5496,7576,8329,8354,8062,7628,7849,5509,8504,7752,7752,5688,8136,5209,7853,8816,8998,5381,5320,8104,7920,7482,8302,8062,7972,5325,5501,8267,8504,7883,5309,7588,7565,5612,8402,8484,7687,9766,5309,5564,7972,7839,5209,5442,8062,7687,5666,5237,5564,5661,7914,7930,7605,5726,8093,7605,8670,8811,7924,5564,5480,5655,5491,5314,5391,7548,5274,8443,7592,8282,8170,5305,5320,8397,9772,5485,8504,7946,5661,5381,7605,5442,7795,8126,5291,8582,7982,7839,8845,8845,8272,5661,7692,5285,7768,5671,7632,8190,5224,5274,5564,9462,8316,8164,7681,7482,5666,5661,7768,7500,8099,5459,8316,7487,5419,7521,5296,5291,7972,5407,5676,7710,7746,5655,5329,7558,5688,5320,7898,8316,7675,5509,8196,8845,5519,5377,5519,5661,8062,5237,5564,8805,5342,8217,8653,5564,5485,7982,7972,7834,7592,8527,5325,9778,9783,8548,7516,7888,5301,5329,7779,5442,7768,8670,7706,7706,9032,7706,5509,7542,5274,8087,7994,7706,8272,5509,8461,7599,5413,8863,7774,8039,8402,8099,7511,7706,8427,7930,8287,8093,7746,7706,7867,8772,8548,8234,7967,5476,5209,5426,7779,5309,7893,7872,8438,7628,8548,8010,5329,7500,9789,8015,9796,7500,7521,5407,7990,5274,8821,7746,7706,8676,7548,8539,8438,7622,8467,5661,8222,7487,5688,8411,7811,8845,8827,7746,7994,5564,7994,7628,8131,7622,5661,5401,8548,8411,8267,7482,5377,7795,7972,8267,7558,7877,5491,5367,8467,8548,7500,9804,9810,8845,9367,7616,5309,5476,8863,8447,7898,7786,7533,7576,5407,8451,7768,8617,8267,5367,8952,5237,8164,8272,5564,8267,5655,5524,8613,7982,5437,8909,5274,7588,5655,8548,8272,9818,7774,5358,8527,8140,5301,5612,7482,5237,8548,5666,5622,7542,7800,7972,5329,5305,8647,5401,5651,8190,8548,5325,5261,5342,8010,8952,5413,5476,5514,8711,7576,8322,7643,9824,5237,9829,5519,8297,8190,5296,8255,8833,7571,7972,5261,8589,7516,7628,8010,8239,8287,9021,5407,7648,7877,7872,5519,5296,5396,8857,5237,8322,9835,8245,8119,5296,5237,7719,5407,5419,7811,5372,8827,5381,5285,8073,7877,5476,5386,5342,5476,8635,7500,5325,8888,7542,5347,7734,8329,8857,7706,5352,5301,5305,5666,5661,8857,8582,5337,7500,5666,5274,7877,5568,5329,7877,7616,7774,7521,5274,8397,8857,7632,5237,8479,5347,5666,5401,7487,8484,7628,8062,7576,5274,7849,8354,5325,5509,8582,5325,8504,7994,8267,8062,8104,7920,8302,8461,8136,8504,8548,8099,5501,7972,7752,7565,7605,7482,8816,5320,5274,8811,5661,5564,5401,8443,7914,5237,7972,7548,7576,8282,5564,5314,8670,5476,5485,5491,7898,8164,5381,7692,7648,5459,7946,5296,9462,8190,5419,7632,5291,5285,8316,8845,7675,5676,5519,5237,5342,8272,5325,5377,5325,7500,8093,9839,7500,7706,7893,8287,8015,8234,8119,7994,7746,8087,5413,5442,8272,7511,7768,8548,8427,5509,5329,8863,5209,7990,7521,5407,7746,5347,5377,7622,7706,8267,5296,7487,7888,8676,8411,5274,8131,8863,7811,8539,5329,8411,8438,8467,5309,5564,8613,5655,8527,8952,5524,7877,5301,5476,5407,8888,8647,7800,5666,7616,5612,8711,5514,5661,8239,5261,8833,5419,7542,5372,7811,5285,8857,8998,5661,8461,8998,5699,8998,9844,8073,5255,5730,9853,8461,7616,7616,8745,5367,8721,9021,8772,8227,7706,5534,7616,5666,8772,5329,8721,7599,7599,8461,7599,7653,9858,7632,5564,5651,8048,7786,7605,8170,7790,7786,8438,8461,7904,7795,5377,5676,5564,7516,7834,7999,8397,7795,5314,7628,7972,8345,8048,7823,5320,7487,7920,7538,7511,7904,8048,5301,8783,7994,5358,5325,8833,8316,7511,5325,5676,5651,7999,7632,7920,5325,5325,8375,7924,7763,8322,7738,5712,7924,5337,5337,5501,7904,5524,7924,7786,8322,8205,5524,8093,5476,7605,8539,5519,7542,5476,5274,8164,8658,8658,7542,7811,8397,5274,5476,9863,8322,5274,7628,8845,5381,5629,8467,5237,8010,5261,5501,5261,5401,5666,8845,8417,8322,7877,7628,7817,5476,5248,5534,5501,8062,7710,7710,8402,5564,5367,9054,5476,7986,5476,7920,8093,7511,7972,5726,5237,5661,7521,5237,5237,7706,8255,5296,5296,7675,7719,8062,5419,8539,8402,7893,8272,8302,7710,7605,5407,8190,5391,7858,8548,5509,5296,5730,7849,7849,7653,5708,8647,5476,5401,5726,9873,7516,9054,8255,5708,8010,5476,5296,8190,8479,5642,8149,9877,8898,7790,5578,7706,8131,8131,8131,5459,5459,7696,9045,8821,7696,8716,5622,5666,8805,5209,8845,8783,8052,8267,8994,7920,7710,7487,5573,7977,8170,7849,5573,8149,8099,5325,5629,7742,7957,8417,8131,8334,8115,7957,5325,8149,8154,5337,5305,8359,7696,5578,8805,7491,8245,8022,8196,8267,7710,7883,7883,8062,8845,7972,9881,8077,7883,5655,7935,8093,5241,5337,8631,8239,7610,7972,8381,7681,7696,8387,5459,7795,9886,5401,8052,8119,8577,8751,5485,8170,5358,8539,8039,7752,7500,5255,8827,9891,9900,8805,7628,8827,8005,9904,8005,8827,5401,5534,8005,5401,5401,8827,5708,8119,8022,8805,8005,8077,7972,7883,8381,7867,5325,8805,8805,7610,7628,7628,7999,7487,7588,5476,7588,7487,7999,7999,8110,5476,5333,5325,5688,8800,8340,5717,8539,7811,5464,5476,8504,7675,8613,7576,8467,8762,8461,8164,8811,5496,8494,8227,7786,7972,7653,5564,7893,5501,8456,8334,5407,7565,9032,5337,8136,8560,8800,8297,7817,7628,7752,5642,5309,7920,7542,5237,5237,7893,8800,5485,7658,7914,7548,8015,5661,7914,7994,7576,5459,7883,7893,7904,8073,5726,5606,7930,7795,7658,5209,7692,7972,8447,5255,5209,5564,8334,5655,5274,7571,8456,7977,8119,7972,8222,7715,5726,7982,7990,5476,7482,7500,7924,7610,7582,9012,5329,5485,8293,7834,8334,7473,5476,8687,5671,5717,7582,7972,7675,7504,7504,7696,7864,5426,7858,8766,5209,7952,773,9915,2533,3110,9919,3464,9924,2802,9929,9934,9939,9945,3447,2826,2847,3306,9950,9955,2550,2661,3190,9961,2685,2300,3133,3157,2871,3215,9966,3179,3005,9971,3235,2606,2953,2977,40,609,2526,9977,1783,9981,3457,9985,2795,9989,9993,9997,10002,1733,2819,324,3297,10006,10010,2547,2654,3120,10015,2678,2700,3126,3148,2864,3208,10019,347,2998,10023,3228,2599,2950,2968,24,603,10028,429,10033,852,10037,803,972,800,10041,9312,10045,10050,829,833,985,806,955,959,10055,839,819,816,10060,826,988,1044,1464,926,809,10064,855,836,1659,10068,915,845,842,848,776,10073,4081,3560,10077,3573,10082,10087,10091,10096,10101,10107,4021,10112,3609,4035,10116,10121,3809,4003,10127,10131,3849,3912,10136,10140,3707,10145,10149,3959,3661,10154,10160,3747,3787,10164,64,606,2523,10169,3103,10173,3454,10177,2792,10181,10185,10189,10194,2738,2816,2840,3293,10198,10202,2544,2651,3183,10207,2675,2696,3123,3144,2861,3205,10211,670,2995,10215,3225,2596,2947,2964,52,1084,10220,2537,9220,3114,10225,3471,10229,2809,10233,10237,10241,10246,10250,2759,2833,2854,1321,10255,10259,1426,2668,3194,10264,1325,327,3137,3166,2878,3222,10268,1318,1311,10272,3242,2613,1400,2986,32,410,10277,1620,10282,482,10286,3468,10290,2806,10294,10298,10302,10307,10312,10316,3451,2830,2851,3311,10321,10325,2554,2665,432,10330,2689,2305,464,3162,2875,3219,452,1772,3009,10334,10339,3239,10345,2610,2957,2982,106,10349,0,0,0,10360,10360,10360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,10360,10360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10366,10366,5777,5777,4344,4344,5078,5078,6688,6688,6694,6694,10373,10373,10379,10379,5898,5898,6704,6704,670,670,6704,6704,10387,10387,10394,10394,6704,6704,1736,1736,0,0,10402,10402,10402,10402,10402,10402,10407,10407,10417,10417,10427,10427,10434,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10446,10446,10450,10450,10455,10455,6540,6540,10460,10460,2851,2851,3613,3613,10465,10465,10470,10470,10475,10475,4198,4198,3917,3917,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10480,10480,10480,10480,10480,10480,10480,10480,168,179,184,10488,193,168,179,184,10488,193,168,179,184,10495,193,618,618,618,10505,249,249,249,249,10511,10520,10520,10527,10527,10527,10527,10541,10541,10546,10546,10549,10549,10558,10558,10558,10558,4971,4971,770,770,1451,1451,908,908,5150,5150,5150,5150,1521,1521,28,28,44,44,44,44,44,44,10568,10568,46,46,52,52,52,52,776,776,54,54,54,54,54,54,56,56,56,56,58,58,10575,10575,66,66,10579,10579,10582,10582,10593,10593,10593,10593,10599,10599,5234,5234,4924,4924,10604,10604,10608,10611,10615,10619,10623,10575,4971,10627,10631,5070,5070,5070,5070,5070,5070,5070,46,46,5070,5070,5070,5070,5070,5070,10634,10645,10651,10658,10658,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,54,48,40,48,24,40,10667,64,32,52,10676,1311,1314,3242,4177,875,2878,3342,3222,10684,3648,4056,2514,10688,2854,1321,3194,10255,1400,3471,3373,2809,10229,2613,2668,1426,10693,1325,2537,24,40,64,32,776,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,911,915,922,926,812,809,848,806,955,816,842,803,968,800,845,1144,1454,1148,852,1464,1044,24,855,819,839,988,826,429,24,40,64,32,52,479,2885,833,1060,773,852,855,933,937,942,951,10697,10707,5004,10717,819,819,863,0,0,0,0,0,0,0,0,0,0,0,0,875,884,24,770,40,892,64,895,58,664,46,1057,32,773,905,52,776,908,836,911,915,918,922,926,812,809,929,848,933,937,942,946,951,806,955,816,959,842,803,968,800,972,845,855,819,839,985,988,992,826,429,976,10727,770,40,892,64,895,58,664,46,1057,32,773,905,52,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,836,911,915,922,826,988,1044,848,806,10733,842,803,968,845,816,800,819,855,839,852,955,429,985,926,24,109,40,776,0,0,0,0,0,0,0,0,3715,10737,836,915,922,806,816,842,803,800,845,926,809,848,826,819,839,855,852,429,10041,10068,10060,10742,24,40,64,32,905,52,908,1786,10747,106,50,58,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,40,64,32,905,52,836,911,915,918,10750,922,812,10755,809,929,10760,10765,10769,806,955,816,959,10774,842,942,803,10778,968,800,972,10782,845,1073,855,819,839,985,992,826,429,770,40,892,1518,64,109,52,905,908,1440,855,819,839,852,0,0,0,0,0,0,0,0,0,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7558,7681,7972,8402,5712,5661,8402,5661,5305,8349,5325,10786,0,7908,7730,8205,7706,5386,5651,8789,8375,5509,8073,7752,8721,5688,5285,5485,8110,7946,8451,8577,5261,8805,5712,8104,7914,5661,8407,8397,8140,5519,7528,5480,8174,7558,8028,5564,8307,5480,5453,10798,7920,7786,7795,5301,5401,8015,8402,5381,7779,7576,7920,8473,8099,7858,8039,8005,7805,7883,5606,8028,5485,5381,7986,5476,8345,8504,7914,8287,5564,5564,8170,7893,8322,5509,7582,7920,8039,8548,5693,7478,5712,8821,5622,7972,8694,7795,7742,8539,8345,5426,5386,7628,8732,7823,8267,7548,8110,7864,8159,5647,5642,5407,7994,5285,7628,7977,8676,5358,8227,5564,5274,8447,7746,8631,8909,8422,7898,7542,5329,8631,5448,5629,7588,8863,5717,5476,8073,8239,5325,7920,5661,5524,5329,8888,7742,8227,5329,8039,8334,8663,8647,5419,5564,5629,5305,5237,5622,5329,5285,7616,5329,7972,10803,8104,5401,8316,5352,8447,7687,8239,8402,7952,7675,8909,8010,7972,5285,5261,7478,8402,8489,7521,5342,5501,7616,8772,9361,7883,7908,8789,8068,5401,5358,5218,5291,5573,5476,5676,7986,5401,5514,8068,7786,7706,8402,8888,8329,8613,8154,8205,5274,8473,5426,8739,7986,7834,5329,8154,8205,7632,5726,8205,8375,8447,8205,8033,7542,8494,8687,8205,7516,8687,5209,5285,8077,5442,5325,5524,5442,7746,8077,7972,7972,5717,5407,5459,7972,5519,7658,5655,8484,5274,7628,5496,5642,7628,5248,5237,5237,8484,7628,7628,5426,8170,8484,7528,5617,5617,10809,8484,5391,8772,5320,5391,5606,7883,7734,7734,8721,5396,8772,8732,8598,5367,7478,7576,8479,8461,5261,5476,0,8994,7658,8010,8282,8732,8560,7565,8282,5699,10817,7548,5407,8777,8093,7605,8115,7888,8073,5274,5717,8732,7977,5329,8062,8334,5237,0,5564,5372,8527,5301,8670,7628,7843,8805,0,7994,8073,8249,8184,8170,5464,8087,8548,8411,7790,5459,10825,7898,5496,5476,5514,8777,8340,7957,5491,10830,5642,8316,10836,8903,8772,5329,5476,5381,5407,8154,8249,7706,5329,5329,7877,8617,8682,7779,5407,5407,7719,7834,5564,5255,7834,7834,8340,8340,5476,5333,8805,5688,7663,8716,7681,5285,5381,5352,5509,5476,7637,7746,7763,8811,7542,7628,7628,8851,7723,5647,5367,7706,8211,5209,5296,5342,7972,7521,5358,5564,8068,7994,7478,7972,7706,5261,7752,7542,8504,8998,5568,5381,5329,7500,5325,8196,7706,8467,5501,7904,7872,7528,5325,5396,5396,7565,7478,5291,8131,7972,8267,8196,5708,5573,7790,8387,7893,8705,8560,8827,7482,5337,8411,5476,10844,7994,5301,7920,7864,5274,8227,8777,8249,7588,5476,8467,8297,8093,7658,7681,8539,7622,7723,5301,5218,7990,7715,8456,8222,8131,8438,5476,5476,8170,7920,8893,7692,7605,8447,8073,5224,5261,5688,5642,5274,8543,8062,7616,7687,7582,8170,5459,8077,8811,7982,5255,5712,5564,8119,7786,5358,7994,5564,5314,7790,8010,7867,7790,7790,7904,5209,5305,5209,8539,7710,5325,5485,7610,0,5453,0,5529,7616,7723,5717,8391,5301,8164,7482,8682,7542,7637,8033,7628,5519,5209,8577,7478,5325,8005,8604,5248,7839,8131,8687,8211,7710,5285,5285,5564,7628,7605,5209,5419,5296,7482,5496,8048,8164,8613,5248,8211,8316,7548,0,7605,8329,7811,7473,7768,5671,8245,5485,5426,7768,8340,5485,7696,8345,8087,7710,8504,5407,5377,5464,5255,5301,5309,8149,5320,9345,8245,7977,7648,5358,8115,8255,5296,7706,8903,0,8164,7643,7616,7632,7616,8329,5309,7962,7482,8349,8062,7576,5642,8762,7994,5573,8307,5564,8504,7482,7849,5358,8201,8267,8539,5647,5342,5342,7558,8033,7478,5432,5237,8845,5301,5564,7605,5305,5301,9345,5325,7888,5688,8302,5612,8033,8527,8170,5712,8249,5426,5485,7935,7528,7667,7834,8805,7757,8451,5509,7653,5337,8451,7977,7599,5337,8816,8670,5274,7843,5564,7864,5305,7752,5381,7823,7715,8795,8277,5401,5391,8494,10850,5401,8154,5337,7616,7616,10857,8104,8211,8211,7839,5509,5485,8539,5726,7582,5407,7967,7786,7986,5329,8170,7994,7667,8077,8653,7849,7734,5209,5524,8039,5564,8099,8227,5442,8022,7805,8427,8514,7774,7904,5301,5647,8073,7653,8222,8196,5676,5237,8196,8539,5381,7734,8903,5309,7999,7658,8845,5396,7786,8093,7893,5309,8345,7599,5413,7576,7834,8170,5407,7516,8772,5320,5606,8479,7982,7706,7849,8402,8272,8104,7930,8227,7811,7893,8277,7706,8249,5255,7994,7883,8302,7811,7834,5476,7681,7706,5509,8604,8716,10862,5480,8484,8964,7632,0,0,8249,0,10874,0,7616,7616,7616,7675,7730,5688,7990,7521,5509,7628,7628,5564,5401,8190,8467,7823,8115,8494,8104,7675,7628,7858,7790,8345,7864,7632,7616,8154,7795,5419,7746,7571,7571,8170,8222,8110,5237,5661,8345,5726,5407,5564,5329,5485,9054,8527,8062,8062,5730,7834,5647,7605,5209,7521,7914,5717,5381,5485,5651,5464,7914,7734,5671,7582,7576,7542,7994,8073,7994,8994,5325,7982,8205,7977,8676,5642,7667,8827,7768,7994,5274,8005,8805,7643,5237,5391,7706,5347,8548,5642,8467,5712,8267,5320,8539,5622,8721,9751,5529,7877,8509,8005,0,5419,7957,7994,5213,0,5448,7482,5391,8104,5391,8267,5655,7843,8293,8249,7849,5699,7940,8467,5301,8170,5237,8334,5573,7500,5647,7511,8494,5655,7542,8443,8312,8451,8467,5573,7628,7908,7533,7734,7734,8136,8851,5237,5501,8267,5241,5407,5325,8893,8777,8869,5651,8052,7962,5655,8391,5448,7500,7511,5237,7786,7843,8164,5534,5671,8451,5391,5629,7632,8613,5612,5274,7930,5642,7952,5358,8548,8234,8925,5519,8604,8370,5347,0,5325,5301,8179,7843,7628,0,7616,5305,7757,7681,7790,8316,7605,5352,8345,5401,8827,5237,5255,5688,5309,8104,5381,7994,8422,8340,7628,5476,5325,8239,5358,5329,7588,8201,8015,7632,5419,7800,7834,8093,5325,8647,8234,7653,8539,7588,5329,5617,8987,8539,7763,8329,7800,8073,8539,8451,5578,9367,8190,7994,7982,5708,5651,7957,8140,7548,7774,8312,5419,5651,8827,5453,5296,7667,7482,5407,7834,5320,7482,8005,8033,7982,8302,5568,7542,7538,8205,10880,8322,8307,5401,7516,5568,7663,5358,5301,7994,5325,8329,8119,8010,8249,7742,7877,7828,8329,5285,7872,7872,5666,7628,8255,5573,5396,5407,8349,8267,8222,5337,5726,5329,7648,5296,7864,8909,7893,5291,8397,8048,8613,5501,8005,8598,7872,8387,7500,5564,5291,8903,7478,8316,7487,7675,5237,7610,8267,0,7706,5407,8267,7962,8093,7628,5367,5218,5325,8062,7487,8789,5666,8190,8267,7628,5237,8052,8073,8052,7663,7994,5296,7994,5325,7839,7521,8375,7763,5476,8873,5419,8179,7914,8322,5401,7990,8467,8245,5377,5629,5661,5358,8427,7962,5401,8010,5693,5381,7786,5661,5320,5407,8898,8062,7730,7528,8329,5642,10888,5448,5320,8329,8217,8751,7994,8766,5442,8349,8613,8647,7658,7706,5372,8033,5655,7696,8447,7616,5524,8827,7675,7706,8048,5407,7500,8005,5381,8411,7757,5651,5347,5309,8777,7622,7723,7867,5274,10893,7742,5274,7588,5329,5476,7500,5661,5301,5476,7986,5666,7675,8539,7972,7930,8909,5642,5305,7811,8647,8010,5448,8772,8422,7723,8255,7994,7511,5296,0,5524,8267,0,5301,5320,5573,7663,7516,5372,8190,8033,8277,8154,5480,7478,7872,7872,7706,7946,5329,7588,8422,8211,8267,8751,7628,8329,5325,7592,5274,5305,10898,7588,7592,0,8077,8073,8261,5476,5274,7628,8170,5401,5401,7482,8322,7616,7610,8316,7994,8354,8093,5726,5642,8010,5651,5347,8005,5347,5325,8903,9516,5666,5666,5396,8527,7972,7994,8005,8427,8359,5301,5325,5651,5666,8359,7632,5325,8005,5329,5407,8589,0,5666,7768,7675,5476,8375,8514,5432,7982,7982,5329,9641,5329,7487,7675,7542,5573,7982,7500,8451,5564,7500,7500,5329,7982,7628,8052,5285,8170,8039,8222,7834,8427,8427,8005,8282,5237,5320,5248,5688,7757,5325,5688,7558,5391,0,8539,5578,5617,7628,8811,5209,8062,5296,8249,5717,5342,5367,7637,5391,5476,7538,7521,7565,7864,8994,7710,7542,7752,7752,7872,7898,5358,8354,8354,7667,7706,8297,7482,7706,5606,8467,5291,5296,8196,7706,7548,8387,7839,7715,7599,5501,5501,8560,7817,5372,5564,8297,5381,5564,7710,8307,8647,5274,8447,8594,5688,5337,7687,5255,7710,5337,7849,7653,8170,5301,5564,8297,7687,8131,7920,8073,5274,7605,7757,5432,5224,7786,8297,5726,5617,8964,8093,7786,7883,7786,7616,5301,7558,5726,8711,5717,7839,5296,5296,8211,5564,7924,8631,8577,7605,5476,5274,8144,5285,5301,5476,5255,5325,5201,5617,5476,7599,5305,7723,7867,7952,7817,7972,7800,10904,7972,7977,7648,7487,7706,5426,8577,5688,8670,5218,7977,8839,7935,8126,7864,7653,5320,8190,8527,7914,5655,5564,5274,5578,7478,5564,5301,7843,5358,5573,8467,5337,5381,7883,7834,8805,7828,8839,5296,7795,7972,8022,7893,8170,5651,7706,7706,7628,7667,7687,8249,8322,7487,5237,8099,5301,5459,7681,8272,8653,8811,7653,7628,7898,7893,7920,7994,5471,5476,8467,7588,7768,7542,7872,8447,8745,7994,7779,8039,5509,7582,7864,8282,8539,7599,8179,7924,7616,8039,7877,0,7986,7990,5325,7849,8805,8349,7500,7746,7628,5381,5391,8190,5464,7834,8411,8110,7994,5564,8467,5712,7994,5564,8821,5661,5337,5688,7790,5367,7616,5391,5248,5629,7605,8548,5377,5564,8467,5296,8249,7986,8762,7982,5688,5459,5301,7795,8267,8170,7823,7957,8658,8164,7616,5419,0,7843,8334,7487,5237,7839,5237,8467,5534,5401,5448,8282,8164,8164,5325,7478,5688,7653,8196,5476,5358,5396,5629,5476,8762,8716,7849,7982,5296,7538,8391,5476,7752,7616,8909,7628,8777,9423,10904,7800,0,8987,5578,8340,7710,8539,5708,5329,7994,7972,5629,8033,8647,5726,7920,7628,5407,7632,7957,8196,7548,7482,5419,8952,7752,5285,5509,7972,5578,7538,7538,8039,7511,7790,5237,8827,5301,7800,7675,10909,8015,8211,7521,5305,8397,7487,5688,8594,7972,5352,5352,5285,5726,5432,8239,7533,7952,5237,5325,5622,5464,7893,8149,5291,5291,5296,7482,7877,5285,5261,7648,7675,8711,5248,8329,7487,10919,7558,8903,5301,5661,5261,5476,5485,8245,7877,7706,7839,7521,5617,7632,8196,7616,7637,5301,8115,8190,5401,7605,8115,5661,8211,5661,7706,8164,5407,8249,8052,8821,8154,5314,5381,8888,7849,7763,8010,5666,5381,7986,5651,5301,8104,5301,5688,8077,5329,8762,7675,7605,7610,5301,7610,8527,7491,5413,8987,7786,5676,7616,0,5237,8179,5726,7768,8762,8179,7800,5291,5381,7605,7687,5661,5464,8816,8456,8293,7528,7548,5305,7696,7990,7763,5237,5426,7834,8795,8467,0,8093,8190,5320,5274,8316,7610,5381,5274,8387,7982,7994,8479,5248,7994,8479,9032,7946,5726,5476,5476,8201,8811,7628,8473,5496,5476,5261,8033,5564,8234,5501,8952,5381,8136,7548,7883,8915,7548,7548,5661,7706,5661,8297,7972,8504,8196,5309,7667,8467,5712,7637,5708,5453,5296,8297,7977,5480,8093,5491,8222,8174,5642,7571,5358,8670,8772,8170,7849,5320,5519,5655,5476,8994,8073,8539,8631,5564,8234,7972,7972,8297,7533,5476,7790,5480,8136,5568,5274,7877,5726,7930,8234,5237,8884,8073,9818,5564,5476,7710,7692,8504,5419,7977,8879,5305,5381,7696,7632,8613,7605,7952,7482,7774,8577,10923,10934,9345,8903,0,8653,8800,5453,5320,7977,8653,7558,5301,5676,7914,8057,5717,5476,7628,5655,7511,5688,8658,5325,5476,8201,9345,8839,8302,8658,5301,5401,5401,7692,5407,8998,7877,5358,8234,8272,8467,8093,7710,8227,5442,7888,8473,7779,8227,8456,8456,7893,8467,7632,8039,7834,8762,5237,7972,8170,7706,5325,7972,7795,8800,7935,5377,5377,5564,5248,5661,8411,5459,8653,8676,5519,5519,7849,8467,8222,8222,5564,7628,8641,7834,5296,7930,5573,5329,10940,10945,8267,8245,8131,8245,8359,8164,8467,8613,8716,7592,5612,8282,8068,7710,8940,5453,7616,5381,7542,8359,7692,5401,8222,5301,5578,5391,5329,5476,5459,5661,5274,7994,8473,8340,5325,5419,9367,8222,7521,10952,7734,5407,5622,5407,8397,5325,7883,8925,8010,8073,7521,7528,5432,7648,7800,5347,5708,7888,7952,8340,5342,8789,7877,5401,5358,5309,8903,5320,8772,5358,5347,7734,8613,7972,0,5320,8631,5391,8126,5661,8073,8033,8277,7610,5237,5274,5347,5578,5491,10961,8365,5391,5407,7533,5476,8297,8387,5237,5237,5642,8527,8772,0,8473,5564,7904,7849,5325,5325,5407,8721,8411,7834,7952,5291,7858,7790,5651,5651,7763,5391,7487,8427,7632,5291,5651,7681,5401,5642,7972,7667,5237,5261,7994,5237,5606,7628,5347,7864,8762,8196,8334,5325,8391,7616,8131,5726,8427,5309,8721,8919,5407,7632,5726,5407,7994,5291,5726,7632,5347,7914,8539,8721,5407,8721,7834,7952,5651,5391,8427,5347,5291,5325,5237,8539,5606,7628,8131,5309,5726,5285,8484,5309,8140,5291,7972,8783,5325,7786,7883,8397,8539,8987,5396,7768,5717,7710,5381,7952,7817,8062,5381,7643,5688,5426,7588,8447,5325,5329,7972,7687,5358,5426,7982,8987,7817,7972,5529,5573,5237,5476,5329,5291,5237,7834,5237,7834,7834,5693,5564,5688,5688,5285,8062,5325,8010,8329,7757,8062,5496,8272,7500,5381,5476,8504,8329,7482,5261,7706,5480,5325,8329,7482,7864,5501,8387,5642,8022,7914,7482,7528,5291,7675,8884,8033,5337,7972,7504,7565,7528,8783,5617,5274,8302,8068,7500,5476,5476,7588,7710,7849,7914,7849,7500,5655,7605,5241,8131,5209,5209,8427,7786,5564,7768,5459,8093,8539,7924,5301,5386,7533,7576,8811,5476,8170,5708,7687,5480,5476,5726,7999,5255,5358,7504,5726,7904,8245,8443,8272,7605,7839,5578,5218,7500,8329,5476,5464,7849,5391,5496,5285,5391,8727,5496,8131,7952,7768,5296,5381,5396,5671,7521,7994,7914,5442,8316,5651,8427,8391,7864,5296,7834,7504,7795,7696,5413,7681,7710,5666,7605,8582,7473,7478,7628,8909,5325,7972,8504,7588,7843,7864,8582,7864,5391,8805,7883,8073,7877,5337,7946,8255,8196,9045,8345,7628,7675,7558,5381,5274,7478,7478,5524,8022,7734,5296,5485,8851,5655,8851,8762,10969,8227,8839,5381,7990,5726,8827,7675,5342,7599,8190,7893,7710,7738,5476,8136,7482,7757,7920,8287,7877,8033,9032,5325,7706,8772,8863,7994,8170,8745,5407,5241,8115,7967,7542,5314,7779,5407,7605,8052,8099,7914,8473,8359,7858,7628,5459,7500,7858,5391,8190,5391,7643,5396,7864,7548,8539,5661,5564,7734,8805,5407,7706,7628,5209,8732,5237,5296,7482,8345,5274,7823,8033,8527,7605,7924,7834,7946,8190,5717,7495,7706,8711,7491,7994,0,8909,7967,5261,5407,8073,7692,5464,8154,5717,7616,5651,7675,5651,5237,8322,8033,9641,5377,7588,7898,7710,7542,5391,5419,8467,5661,5529,8272,5642,5642,0,7628,8473,8827,8745,5301,5305,5305,8987,5578,9476,5407,8115,5381,5401,7957,8179,7742,8721,5237,5314,5708,5708,5309,5578,5476,7982,5419,7800,8783,7653,5396,7877,7500,8833,7719,5237,5617,8217,5241,5386,5347,7864,7616,5291,5325,9021,5285,8073,5296,5622,7715,8982,7687,5391,8255,8772,8982,7734,8119,8190,5372,8772,8903,5342,7542,5325,5285,5485,5401,8417,5476,7663,8427,7920,5296,5396,5476,5476,5261,8261,8417,7542,8863,7738,7982,7576,8052,7491,7616,5407,7628,5407,5296,8762,5578,8190,8365,5666,7914,7994,7877,5301,5476,8411,5578,7834,7864,5442,7994,5442,5642,7877,8261,7482,5347,8033,8154,5578,7811,8365,5476,8903,8427,7834,8762,7834,5325,5693,5564,8504,5325,5381,8062,8272,8261,5261,7706,5480,8329,5476,8329,5325,8504,5419,5296,7742,8170,8387,8884,7500,7864,8099,7504,8022,8527,5617,7565,5291,5241,7786,7849,5255,8443,5391,7504,7687,7588,5655,8539,7967,7839,5726,7999,5358,5476,5476,8582,5666,5391,7795,5391,5381,5296,7558,7605,7914,5396,7883,8131,7768,7952,8329,5476,5241,5671,7521,5496,7643,7500,7576,5381,7478,7628,8255,7478,5524,5337,5296,8582,8851,8022,7663,8745,7605,7967,7495,8762,5314,7893,7990,7994,7628,8839,7914,7757,7877,7779,9032,5342,8772,7914,5476,8711,8033,5459,5464,5407,5661,9641,7491,7994,7864,7628,8190,7877,5209,8345,7834,8539,5651,7858,7500,5305,8903,7588,5661,5642,7898,5391,7542,5651,5309,7800,5578,5407,9476,8772,8982,8255,5347,7734,5291,7834,7542,8427,8033,7786,7542,8062,5367,5291,8062,7653,8062,5237,5237,8154,8239,7653,8762,7610,8307,5419,7706,5391,5301,8919,5509,5358,5320,5274,8527,7972,7972,7834,7834,5391,5573,5296,8068,5476,8068,5476,5407,7904,5730,7864,8140,7521,7811,5407,8800,5671,5726,5564,5237,8888,8052,7628,7605,7977,0,5237,8073,7752,7811,8888,8539,8548,5501,5476,7972,8222,7637,7653,7920,8136,7920,8131,8136,5337,7757,5305,7487,5519,7811,8653,7849,7849,5305,7653,7790,5301,8447,5358,7628,7977,8641,7790,7920,5237,7864,8170,5305,5573,8772,7811,5291,7930,5655,8467,5564,7774,7817,8594,5476,8560,5509,8751,8154,8010,8772,8721,8115,7972,7696,7605,5391,5358,5209,7696,7952,7858,8411,8349,5491,8119,8582,7893,8964,5476,7710,7790,7849,5358,5329,8504,5296,5671,7858,5209,7977,7500,9353,5285,5671,8205,5407,7616,8329,5655,5617,8888,8888,5688,5617,8732,8205,7576,8277,8365,7487,8033,8987,5606,8456,8845,5274,8349,5407,5342,5564,8772,8827,8827,7972,5325,8015,8762,5309,7504,8598,8267,8222,5437,8277,8527,8777,5325,8119,7663,5622,5564,8131,8159,8115,8239,7994,8126,8033,5622,7972,8863,8473,8267,8833,8772,8365,7834,10978,5261,5509,7616,5309,8811,5274,8205,5358,8762,5320,7834,9259,8190,7610,8811,8205,7930,5655,5564,8467,7817,7774,8115,5274,8126,8015,8154,7972,8010,8772,8751,8411,8131,7605,8721,7696,5407,5358,5391,8964,7952,8582,5491,7790,7893,7849,5476,9353,7972,7977,5296,5209,8504,5329,8205,5209,5671,5309,5688,5655,8277,5617,5564,8762,5325,5320,8987,7487,5358,7576,8845,8456,8772,8277,8527,8863,5564,5622,8159,8115,7834,8365,8267,8833,5261,7616,8811,7710,5237,5617,7823,7504,5237,7558,7849,7558,5578,5367,5629,7967,7967,5301,8484,5564,7999,8811,7706,5261,7723,8196,5274,7839,5291,8196,7710,7839,8033,8033,5459,8170,8783,8539,7719,8427,7605,8354,5726,5381,7710,5573,7795,5529,7839,7681,7888,8577,8811,5612,8140,5237,7999,7588,7482,8170,5407,5699,5629,8287,8402,5329,5726,8903,5688,5209,5377,5726,7710,5464,8255,8255,5642,5372,5377,10982,8365,8365,8443,8994,8222,7692,7990,5471,5291,5564,8033,5407,7565,7972,7730,8354,8994,7706,8354,8322,5480,7658,5476,8184,8093,5712,7904,5459,7692,5480,7977,7839,8174,5280,7605,8170,5459,7972,5564,7533,8170,5261,8073,8447,8170,5301,8682,5476,5325,5491,5274,5285,7888,7605,5622,7473,5635,7952,7723,8005,7521,7710,5329,5413,7972,7977,7681,7774,5407,7738,8255,5358,5274,7888,5325,8170,5325,5320,5647,5573,5485,8077,7675,8073,7710,8658,8711,5320,7843,5218,5285,5442,8255,0,7738,5407,7706,8494,7994,5314,5381,5325,8077,8170,8170,8099,5329,8873,8359,8170,7710,5509,7768,5377,8073,8443,7867,5325,8140,8548,7774,8548,5352,7972,5241,7828,7972,7628,7888,5471,8104,5218,7548,8539,5578,8033,8663,5407,7795,5629,8170,5564,8443,5459,7858,8110,7495,5377,5496,8422,5407,8479,8451,5237,7738,8322,8427,7828,5377,5325,8077,7800,7511,8427,5358,5248,5329,8239,8140,5629,5491,5612,5237,8005,5325,7972,8322,8539,7800,8548,5401,5413,5372,8184,5432,8422,8170,8919,8554,5274,8010,5573,7548,5471,8073,8140,8443,5291,5291,7516,7738,8255,8255,7734,8239,5471,8498,8582,5372,7738,5358,5358,7605,8170,5573,8255,5471,5442,5325,7478,8354,8184,7516,8577,7972,5301,7972,7877,5573,8676,7994,7610,7516,5274,7994,8857,5347,5661,8261,5661,8077,7738,5726,5381,8498,8857,5237,8005,5291,7516,7914,7817,7883,10986,5726,5377,7888,7888,7817,7843,10994,7632,7663,5325,8170,5629,11001,11009,7834,11013,8756,5726,7957,8149,5480,7972,11023,5377,8479,11023,7628,7935,8387,7952,7667,7994,8354,7528,8539,8190,8010,8504,5261,8322,5320,8068,8033,5491,7864,8136,7706,7790,8821,8504,8010,5622,8062,7982,5726,5464,8539,8093,5491,5708,5655,8010,8582,8608,5352,7930,7786,7692,8174,7605,8164,7864,7904,7576,7972,5642,7990,5476,8745,5391,5255,7696,7723,8170,5285,8687,5329,8509,7768,7576,5437,7972,5617,7779,7628,8670,5337,7811,8267,5578,5509,5564,8745,7576,8447,8093,5578,8427,7779,5209,5296,7599,8287,8039,8795,5476,5352,7542,8234,8184,7858,8721,7930,8099,5213,7779,8821,8110,5325,7924,5274,8732,8694,8658,5717,5337,8062,5320,5564,5209,5564,7752,8543,8427,7628,7752,8272,7786,5655,5367,8467,5329,8484,8783,5622,7994,7643,10830,7935,5285,8427,7734,8149,5501,8010,7516,5717,7719,8795,7811,5476,5325,8217,7696,7628,5274,8062,5666,8456,5301,5301,5329,7516,7935,8387,7952,8190,8539,8504,5622,7864,8099,8821,8062,7692,7990,5329,7576,7972,5476,7982,5655,5301,5642,8745,5391,5437,7972,5285,7576,7768,5329,5285,5578,5564,7779,8184,7930,5296,8234,7599,7779,8287,5209,8694,5564,5325,7752,5320,8456,8467,5367,8427,5329,7935,7516,7528,7786,7839,7839,7920,8397,8411,7986,7986,7839,5529,8282,8411,8411,8411,0,8411,8282,7839,8411,8411,8033,8613,8789,8789,5655,8287,8287,11031,8705,8411,8411,11039,11044,8239,8245,7877,8811,7542,7628,7628,7706,8329,5476,8039,8349,7706,8925,7599,7977,9032,7616,5377,8267,5309,8560,8387,8010,7478,8245,7864,7811,5578,11048,5309,8467,7994,5401,7710,7935,8447,7681,7972,5476,7592,7977,8033,5491,7696,8539,8312,7599,5459,8115,8272,5320,5480,11056,5485,5296,8316,5337,5651,5413,5325,8716,5476,5381,8863,8577,8329,8422,8022,7795,8272,8334,5730,8447,5471,7592,8190,8329,8201,5337,7675,5688,7853,7605,5688,8539,8539,5647,5485,5377,8307,5476,5578,8316,8687,7478,5391,7558,7588,5372,8658,8527,5401,5612,5296,5301,11061,8277,8543,8451,5291,5413,7811,5491,5329,5337,7576,5309,7628,8287,8005,7994,5377,5476,8245,8467,7632,5358,7495,7628,8903,5342,5471,5342,7834,8732,7710,5377,7628,5391,5655,5337,8267,7864,8411,8039,7864,5367,5464,5688,8479,8245,7994,11067,5476,8131,5642,5573,7511,8329,7738,8539,7710,8467,7588,7738,7542,0,5642,8721,8015,5708,5391,8604,7710,7588,5372,5578,5471,8539,7957,7710,8451,7516,9021,7648,7542,8190,7628,5476,7478,8239,8170,5391,5358,5642,8349,5661,5342,7811,8427,8909,7696,7622,8411,8411,7986,5301,8467,5642,7632,5301,5476,8805,8919,7706,5218,5261,7653,7628,8211,8613,7723,0,8582,5564,8756,8888,7565,5426,8136,7528,7914,7898,8467,8879,8154,5661,7898,7478,8170,5337,7653,7658,5688,5358,8456,5224,8670,7930,8631,8539,7967,7491,7516,8582,7952,7605,5391,7692,7628,5671,5717,5237,7972,5325,8329,5730,5426,5285,5237,7952,7495,7843,7977,7908,5241,11075,8267,7834,7558,8307,7710,5329,5564,7478,5564,5524,8052,7843,7977,8845,7667,7616,8073,5237,7930,5301,8267,8201,7675,7706,7920,8745,8039,7576,8772,7967,5255,8277,8447,8033,5337,8201,7521,7883,8170,5218,8255,5476,8762,7834,5712,8893,7930,7864,7628,5676,7628,8267,5730,8005,7521,7521,5448,5629,8391,5237,8613,5573,5209,7967,8170,7478,7521,8267,8052,5218,5358,5305,8783,5564,8239,7482,5622,7982,8255,7834,8015,8010,8255,7500,8919,5358,7528,5358,8554,7994,5241,7790,5261,7516,8312,7883,8249,7491,8340,7908,8527,8249,7967,8582,5401,8365,7877,5337,7706,7834,7877,8365,8093,7811,5237,8527,8365,5301,5337,5693,5688,5314,8456,7576,5476,8560,7628,8484,7834,8397,7790,7883,7500,7853,5655,5501,11082,0,8267,7658,5606,5280,5480,7571,7653,7786,7588,8312,5442,5437,8391,7632,8287,5442,5337,8316,7972,5274,5419,7558,7482,5647,7675,5712,7692,7940,5666,7734,8397,8370,7834,5237,8929,7994,5329,5347,7834,8272,8456,8427,8104,8772,8397,8287,8140,8653,5377,7746,8762,7982,7500,5426,8772,8484,8104,8267,8312,7990,5448,5651,7768,5442,8451,8267,5218,8608,7687,8370,5629,5419,8647,5261,7628,5301,5372,8149,5476,5419,7734,5285,5237,8772,8312,8789,5476,5301,8170,5285,5476,8929,8613,8329,5442,7834,8093,5651,5651,8929,7528,5285,5237,5651,7834,8411,7774,5391,5337,5391,5391,5301,7548,7491,7779,5301,5309,5309,5688,5476,7757,8479,7999,5693,8312,5688,7849,5564,5655,7972,7904,8375,5564,8716,7757,5261,8255,5568,8732,5209,8010,7628,5396,7653,7817,7706,8211,8915,8539,7487,5237,5476,7637,5391,5647,5237,8293,7542,11094,5407,7920,7491,7482,7904,7565,8033,5426,7853,8354,7834,5564,7920,8136,7528,7864,5291,5471,8131,7482,7542,8282,5325,8504,8783,8816,5501,8267,5325,8196,7920,8039,8062,7482,7667,5391,5476,7548,8077,5671,8915,8154,7658,8756,11104,11112,11119,0,7888,5209,8447,5647,5391,8438,7786,7864,8093,5224,5476,7786,7904,7920,7628,7487,7571,8201,5337,7828,7977,5655,5391,5391,8964,8170,8427,5391,5617,8190,7999,8222,7849,5358,8119,5573,5391,8073,7605,7710,8925,8312,8316,7542,5564,8533,7511,7542,5564,5301,8354,7920,7924,8282,8073,5381,8131,5320,5241,7715,8447,8077,8539,7977,7715,7883,7914,5476,7487,8582,9012,7930,5407,8316,5426,8062,5285,7710,7696,5717,5224,5391,8711,7977,7482,7667,7576,5248,8987,8316,5305,5666,5325,7628,7500,8504,9021,7972,7723,5261,7710,5274,5426,7768,7920,8964,7605,5730,8391,7473,5642,5274,5274,5519,7667,5496,8149,5325,7920,8613,5651,5476,7482,8687,8345,9562,5337,7719,8898,7542,8375,11126,7663,7757,7653,7872,5391,8946,5688,7675,5578,5519,8205,5377,8451,7795,7817,7548,8307,5329,5712,7843,5509,7528,8267,7930,7478,7588,7628,7877,8805,8073,7653,7977,8062,8498,8527,7877,5509,7972,7487,8190,7478,7478,7681,7817,5314,9471,5426,7542,7914,7653,9471,5661,5573,5241,8170,5274,8964,8211,7734,5301,7533,7872,7558,5524,5301,8594,11135,7605,11142,5647,7511,8397,8170,8227,8467,5407,8461,7757,8272,8227,8099,7473,8093,7930,5329,5301,8322,8057,5676,8438,8397,5352,8345,7920,5274,8387,8863,5666,9051,8571,7738,8653,8762,7994,7805,5209,5241,8543,8077,8827,8658,8772,5693,7706,7542,5314,7706,7628,5309,8721,7790,8227,5606,5237,5401,8272,7786,8451,5320,5655,5329,8249,5329,5396,8473,5205,8277,8800,11147,8201,8716,5509,8365,0,8407,5274,0,8154,7779,5933,8514,8509,7616,8539,5401,8039,5274,8762,5647,7994,8827,5564,8110,5325,7864,8110,8033,5377,7687,8062,7924,8676,5367,7628,8946,5426,5464,7994,5564,7999,5496,7867,5617,8062,8005,5606,8711,8255,8255,5730,7853,8827,7811,7491,8438,5407,8676,5407,8022,8005,7982,8190,7888,5381,5655,8411,7548,5209,5519,7491,5712,5213,7663,5381,0,5712,8287,7738,7898,5367,5401,5612,5237,7511,8443,7491,8417,5534,8164,5629,5612,8322,5717,8851,7805,8073,7533,7730,5358,8940,8461,5209,7478,7616,5464,7681,7511,8509,7962,8302,5448,5509,8052,5655,5655,7632,5476,8467,5629,8077,5237,7977,5717,7538,5676,11126,11104,5612,0,0,0,8136,5329,5612,7742,8443,8641,5519,8721,8190,5401,8087,5708,7800,5305,7632,5358,7994,7511,8539,8255,8827,5476,5329,5708,8946,8322,8402,7706,8227,5629,7800,5218,7877,8527,5485,8473,5320,7957,5519,8827,7610,8365,5407,8340,5301,5367,5237,8756,0,5413,0,0,5241,5329,5396,5325,7734,5296,8322,8312,7516,5612,5519,8589,7558,8005,7487,7511,5386,7946,8959,5342,8010,8255,7768,7924,5629,7521,5291,5285,9021,8239,5381,8149,8217,8772,8365,5325,5407,7548,8919,8387,7616,8217,5291,8417,5377,7734,8964,0,0,5693,5261,8509,5407,7893,5342,5329,5676,5296,7628,5401,5314,8255,7542,5314,5666,5358,8964,7811,7491,7888,8039,8903,8170,5501,8245,7930,5476,7663,8548,8329,7757,7605,7946,8863,5325,8077,7738,8154,8745,8888,7616,8005,8381,7500,5407,5407,11155,5496,7972,7763,5301,5666,5325,8857,8582,8987,5352,7986,8762,8851,8287,5329,8473,8222,5329,0,0,7610,7864,5329,7528,5407,5347,8073,5407,5642,7877,7521,5407,5237,8721,8777,8077,5666,8498,5726,7533,7632,8857,8375,5372,8077,5291,5629,5320,5347,5309,5688,5476,5655,5693,7999,8312,7757,5647,7542,8732,5261,5325,8010,7757,8514,8293,5237,7637,5426,5671,8201,7658,8170,5471,8783,7548,8136,7930,8461,8282,7542,5642,8196,7667,7478,8131,8756,7565,8154,7853,8816,7904,7628,7542,5241,7542,7786,8073,7864,8312,8201,7904,8354,8857,7715,7883,7977,7828,5337,8964,8073,8093,8851,7542,7511,8222,5391,8190,5617,5358,8447,7920,7888,5426,8898,8149,7696,8211,8387,5337,7558,7977,7491,5386,7972,8903,8316,5329,7757,7482,8509,7687,7605,5274,8805,9003,5274,5396,7768,8302,7977,5642,5717,8391,5241,7719,5285,5476,7877,5248,5629,8345,7482,8613,7605,8149,7734,7478,8277,8594,5401,8946,7675,5612,5301,5241,5573,8039,5524,8964,5519,8451,9471,8527,7528,7511,8509,5407,7872,5377,7843,7542,8170,9051,8322,7888,5606,8451,7790,8543,7706,8407,7473,8653,8227,5237,7786,7632,7805,8863,5309,7972,5274,5676,8154,8057,8772,5693,5407,8170,8249,5209,7867,7616,8509,8322,8022,7864,5496,8255,7548,8676,5448,5464,7811,7663,8762,5712,7957,5209,7893,5712,5305,5655,8073,5717,8077,5629,5676,8077,8136,7511,8052,7898,5476,7977,8888,8164,8473,5629,7800,7632,5413,5218,5485,8539,8443,8190,7511,8772,5291,8239,7734,5329,8217,5347,7734,8498,8322,8919,8154,5666,7811,5314,5401,5476,5496,8473,7986,7877,7521,8227,8227,8484,5708,5459,5726,8239,5651,8227,8514,7538,8969,5261,8154,8514,7834,5358,7653,5358,8589,8509,8756,5413,8062,8489,8589,5274,5274,5407,8438,5367,11161,8307,7687,5386,5407,5352,5367,8093,8411,5358,8489,7849,8721,5717,5717,8048,5573,8062,7952,8438,7719,8653,7843,5329,8805,8302,8170,8354,8354,7877,5726,7516,8227,8635,8653,7834,8438,7834,7864,7643,7628,7752,7521,8222,7521,5726,5642,7752,8282,8345,7994,7482,8144,5699,5347,8762,0,11167,5606,8077,7738,8509,7849,5699,8519,8721,8307,7706,8005,5629,8721,8647,8795,5237,5296,7877,7920,8903,7811,7738,7752,0,8514,8969,5261,7834,7653,5358,7752,8519,8489,7994,5274,8062,5407,8438,8756,8514,7687,5386,7952,7752,7738,8438,5329,8509,8048,5717,7849,8653,8484,8354,7843,8762,7628,7834,8227,5237,7752,7643,7834,7864,7877,5347,5726,5296,8144,5699,5717,5606,7738,5699,8795,7811,5564,5564,5333,8217,7528,7542,7478,5476,5480,7482,7924,8307,7864,8119,8282,8456,8946,8267,8821,7972,7920,5485,7565,7924,7482,5655,5381,7558,7864,5726,8539,8443,7571,7828,8093,9051,5480,5480,8312,5224,5564,5325,5329,7610,8033,5426,7888,7957,5305,5419,5320,7888,5274,7696,7952,7628,5671,5261,8329,8255,5426,8104,5564,5358,5367,5261,8119,7972,7734,8307,8467,5655,5573,5274,7853,8077,8267,5274,8456,8456,7967,5476,8217,8099,7482,8170,7805,8033,7920,8093,8272,5274,5329,8119,5274,7482,7605,7924,8705,5261,5248,7834,7482,7628,5377,7628,7610,7994,7994,8077,8217,5342,8345,5464,5381,5342,7482,5671,7834,5296,5717,8267,7478,7994,7663,5237,5629,5325,8015,8479,5708,5237,7482,11175,7648,7516,8422,8919,7920,5342,5342,7628,5274,5501,8447,7696,5325,8479,5237,7482,7864,5296,7610,5237,5301,5301,5301,8863,7849,7972,9032,7667,7823,5476,5699,7834,7542,8387,7504,8387,5325,7786,7811,7972,8131,7667,7839,5218,8170,5573,7982,8925,7632,7628,5442,7757,5342,7653,8154,8617,8721,5573,8925,5218,5325,5237,5442,7511,5301,7823,5529,8925,5325,5325,7628,7628,5529,8136,8998,7719,7715,7752,5501,8334,8267,5301,5301,8608,8093,5666,8345,8222,8249,7828,8903,5426,7478,7999,7500,5325,7715,8033,7675,7687,8805,5655,8456,5712,8093,7706,5442,8154,8302,7893,5534,8427,7482,8447,5442,8068,7516,0,7582,7616,7478,8093,8617,8093,5367,8062,7482,5305,8349,8267,7511,8249,8888,7478,7994,8154,7482,5237,5476,7663,7883,8919,5274,7628,5329,7610,5491,5325,8334,7924,7904,7920,7994,0,5237,5325,8349,8249,8249,5666,5301,8154,7663,7893,5491,7610,8093,7663,8527,5301,8222,0,7849,7849,5224,8745,8745,5485,5606,5655,5485,7558,8745,5485,5485,7828,5485,5606,7893,7893,8898,5651,7746,7746,8174,7491,5606,5296,7491,5717,5693,5496,5407,8504,8539,8762,7478,8504,8196,5309,5529,8816,7904,7482,7730,8136,5305,8443,8245,8282,5476,5642,8272,5480,7977,8062,8174,7924,11180,7482,7977,8272,5325,5661,8345,8345,8727,7817,11186,8245,8255,8805,5509,7616,5342,7681,8255,8190,8571,5413,7738,8015,5224,8144,8170,7986,5661,8110,7898,5476,5688,5688,7849,7675,7715,8170,5407,8411,8539,5407,11194,8272,8131,7738,7930,5661,7533,5717,5358,8144,5629,7957,7952,8255,5529,5325,5407,5419,7877,8245,8154,5274,7542,8762,8631,5407,5347,7994,8504,5564,5712,5676,5717,7994,8255,7653,8227,0,8110,8329,5617,7994,5717,7930,8272,8131,8267,0,5358,7994,5296,8762,8631,8762,7994,8504,5564,7653,7994,8267,8272,8484,8484,5274,5661,5274,5325,7482,8925,8267,8670,5333,5352,7946,7616,8267,5352,7482,7482,7521,7982,7491,5693,8745,7533,7521,8598,7653,7500,5476,7500,7786,8022,8005,7706,8560,7628,5509,8282,5471,8539,7883,7533,8312,8093,8604,5485,5666,7849,8255,7864,7864,7994,5381,7795,7914,5476,7914,8370,8217,7858,5255,5666,5564,7977,7853,5296,8005,7977,5333,5606,7558,7616,7667,7982,7653,5485,8422,8422,8751,8277,8422,5209,5209,7805,5693,8277,7834,7653,5407,7990,8402,7592,8196,5476,8159,5377,7864,7864,7834,7643,8795,5218,5622,7834,5274,7528,5476,8467,8940,7828,7828,5419,7692,5666,8239,8647,5476,7800,7706,7648,8052,8255,7786,8329,7542,5296,8427,8613,8062,8888,5274,8751,5329,5347,8077,7768,7491,5693,8745,7653,7521,8598,7500,7500,5509,7786,5471,7706,8282,8022,8560,7628,5329,8093,8312,5485,5381,7977,5606,7653,7616,7592,8370,5476,8751,5296,8422,7653,7616,7616,7990,5377,5218,7864,5622,7834,7864,8077,7800,7828,8940,8052,5666,8427,8613,8751,7768,8527,8473,11198,5564,5367,8427,8473,7730,7904,7658,8577,7795,8190,8670,8170,5358,7487,7994,7924,5642,5448,8509,5514,8010,7511,5237,8239,8647,8647,7511,8473,8473,8473,8239,0,7719,8527,8473,8527,7924,8427,8473,7730,8170,7487,5448,5642,7511,8647,8473,8473,7893,8010,7893,7893,5391,5391,8179,5325,5693,7487,5480,8427,7962,7521,8068,8504,7628,5676,7710,7482,8010,8010,7962,7482,7605,5476,8533,5358,5381,8272,7511,7839,8964,7487,8222,5391,7888,8370,8504,5606,5285,7977,5224,5642,8316,7839,7521,7924,7924,7696,7834,5333,5476,8179,8073,8028,7864,8201,7667,8307,7588,7628,5391,5642,7643,8039,5391,5407,8863,5224,5274,8201,7491,8772,7893,8015,7994,8721,7864,8699,7643,7982,5464,8964,5296,5407,5730,7849,5426,5501,7994,7786,5496,8022,5629,8073,5524,5237,8005,7511,5448,8272,7491,8267,5305,5629,7800,5358,7628,5519,5309,8589,8005,5622,5261,7710,7883,5476,5325,7648,7558,5218,8272,5296,7521,8427,5501,8370,8249,7834,5305,7877,7521,7632,8857,7700,5391,5693,5325,5480,5426,8068,5237,8504,7628,7710,8010,7482,5407,5391,8222,7487,7888,5476,7696,7648,7521,7977,5333,5285,5476,5224,8073,8307,7864,7628,8028,7667,8039,7643,5274,8721,5496,8005,7786,5448,7877,7491,5305,8073,7511,5519,5309,7800,8589,5622,7700,8087,8005,8039,7521,5501,7904,8447,5358,8073,5647,7653,7893,5407,8345,7663,5564,5274,7752,7528,5501,8888,5426,7538,7628,8527,7653,8539,5480,5480,7710,8329,7605,7972,8456,7528,8915,7730,7482,7752,7972,7883,5329,5337,8073,8222,7908,5480,5476,5726,0,5726,7592,8073,7999,8467,5352,7576,8170,7605,8293,8170,7920,8205,7977,8093,5655,7658,5564,7924,5391,5358,5480,5480,7487,7511,7538,7858,8272,7972,8164,8909,7582,8329,7768,7914,7592,7696,8370,8073,7605,7482,7632,11206,7883,5661,7511,8170,8022,8196,8211,7779,7653,5647,8190,8422,7667,7864,7558,7528,7663,5329,8863,7576,5617,7858,8653,8272,8277,8548,7990,7706,7706,7834,7893,5514,7834,5381,5642,7478,7858,8827,7858,7542,7893,5464,5407,8154,7628,5377,7768,5367,8548,8005,8110,7487,7795,5480,8005,5448,7542,7558,7972,7511,8334,8909,5237,8340,8762,7834,8467,7967,5514,5261,5301,7972,8617,5329,5237,7632,8015,5305,5708,8179,8647,8827,5726,5358,7972,7628,7500,5396,8073,7588,7675,7516,7877,5471,7511,5480,8833,8772,5285,8964,7834,7632,8427,5485,5476,7491,5480,8888,7967,7834,5352,5329,8909,7521,5325,8617,8170,5237,7811,5301,8473,7538,7628,5480,8329,7710,5726,8915,8073,5329,8205,5391,7487,5564,8170,7967,7605,5480,8293,7977,5476,7658,7675,7538,7482,5285,5396,7632,8370,7858,8473,5301,7558,7834,7528,8196,7667,7706,7706,7990,8863,8548,7588,8179,7858,7972,8005,5514,7478,5708,7511,7542,5261,8647,7632,8827,7877,7967,5325,8617,7521,7786,7994,7994,7994,7628,8811,5476,8608,7853,5661,8222,5358,7710,5377,8539,7692,8370,8255,8131,7473,5717,8422,8845,7858,5358,7990,9012,7628,5342,7957,8073,7675,8334,8073,7839,8739,8888,5305,8239,7957,5386,8762,8205,5342,5377,8888,8739,5329,5524,5524,8255,8898,8255,8149,5372,8473,8653,8653,5377,7565,5519,8297,7790,7883,8653,8888,8048,7681,5352,5209,8048,8297,5377,8174,7920,7790,5564,7696,8164,5726,7817,5519,7795,5325,5352,9361,8670,8302,5377,5301,8888,8548,5377,5352,8022,5241,7768,8548,8598,5407,7888,7982,7986,8484,7706,5401,5655,8888,5352,5305,8589,7800,7800,9026,7500,8577,7542,7542,8789,7811,7908,8381,8888,8577,8261,8307,8307,5386,8062,5237,8307,7653,8307,8307,8484,8227,7628,7628,5301,5676,5564,7542,7952,8548,7511,7952,8987,7628,7952,5712,5325,7706,5381,8005,7643,7904,8312,5712,7500,7834,7675,7779,7628,8422,7706,7599,7779,7994,5407,7710,8647,5358,5305,5325,7500,5442,7834,8427,7628,8479,8504,5325,11212,7817,5480,7757,5325,7500,7864,7864,8302,8560,8068,5305,5381,7914,8010,8467,5358,5329,7752,7982,5329,8925,7565,5501,8136,5337,11217,11225,7849,5367,5726,7653,7920,8093,5480,8073,5688,5255,5564,5358,5325,7994,8170,7757,8073,5337,8234,7920,8184,5426,7658,8222,5564,7687,8170,7786,11231,8316,11239,7738,5381,5320,5730,7521,7696,8345,7994,7681,7605,7482,8577,7632,8316,5476,7706,5224,7994,5285,8201,7952,5274,5717,5296,11243,11249,8898,11255,7888,7667,5377,7800,7675,8925,8302,8196,7628,8028,5578,8234,8845,7588,7478,5688,8805,5564,5509,5337,5301,8302,8302,5524,8249,11261,11267,11274,11285,5218,8447,5209,7706,8745,7521,8028,8104,5325,7757,7867,7786,7576,7582,8277,7893,8447,5476,8653,5329,8484,8227,5485,8099,8093,7967,5301,8249,8548,7972,8184,11295,11303,11310,5391,7914,7643,5391,5730,5426,7605,7986,8548,5325,8411,8411,7811,7768,8115,7994,7994,7628,8658,8110,5459,5464,5401,7834,5688,5688,5407,5358,7864,7924,5564,8159,5407,5367,5480,7982,11319,8893,11328,7752,5407,8052,7478,7565,5514,7511,7538,5391,5391,7482,11336,8909,7738,5642,5717,8164,7542,7706,7752,8893,11339,5401,5708,5333,5296,8438,5325,7681,5726,5407,5514,7800,5237,5688,8473,5325,5325,7605,5419,5688,5622,5218,8015,8756,5529,5432,5291,5726,7521,8073,5285,8329,7588,5464,9021,5261,5261,8010,5291,7516,8329,7622,5237,11349,11354,5501,8721,5730,7908,9353,5514,8427,8811,7952,8119,5301,8227,11339,11360,11368,8613,5325,7500,8154,11360,5301,8577,5301,7763,5655,7521,7864,5329,8721,5301,5274,7628,8479,5325,5337,8068,5329,7565,7904,7849,8073,5255,8184,5329,5337,7687,5564,8073,8222,5730,7920,7658,7952,5381,8898,7994,7696,8316,8115,5730,7908,5325,5285,5274,8925,7521,8329,8845,5301,5401,5407,5301,5391,7681,8234,8302,5509,7667,5325,5218,8745,8093,7706,7967,7893,8653,8227,7786,8447,8184,7757,5485,7914,5391,5209,5501,5459,5358,8227,5391,7752,7994,8159,7864,5688,5564,5464,7768,5419,8411,5514,5708,7706,7738,7482,5642,7565,5407,5333,8473,5529,5432,7800,8438,5218,7994,5237,5291,5261,7516,9021,8154,8811,5301,8427,8721,5453,5476,5564,5301,8484,8201,7834,5564,7757,5325,8527,11375,8811,5391,8527,8391,8222,8467,7972,7982,8196,5564,5501,7752,5407,5391,7628,8998,11380,5291,5291,7920,7811,5655,8222,7834,8387,5241,7565,8527,7752,7742,8594,7977,8293,8093,7763,5564,5480,7752,5301,8411,7972,5717,8467,5209,5726,7675,7972,7883,8170,5337,7786,7548,7628,7924,8164,8387,8964,7628,11386,7616,8863,7478,7696,7795,7663,7972,7834,7946,5285,5325,8577,7605,8504,5476,8062,7632,8613,8711,5717,8504,5285,5519,7576,7972,7632,11393,11402,9457,8375,7977,5325,7628,7811,5480,8201,7478,5676,7628,8073,8329,8329,5358,5237,7667,8170,5647,5485,5377,7864,7864,8582,7982,7478,7914,8277,11408,11417,5329,5255,5320,5564,8345,7999,5352,8196,7542,7930,7757,5329,5699,5407,8170,5647,8387,8467,7706,5301,7491,8863,8571,8863,8653,8119,7706,5485,5476,5476,5485,5209,8277,7582,7706,8104,8845,8170,5726,11425,11432,5325,5320,0,7710,7622,8110,8345,5688,5377,7982,5377,7864,5381,7790,5564,8104,5647,7834,7849,8467,7858,8267,5712,7982,7616,5471,7715,8170,11445,8777,7565,7786,7616,8467,8190,5534,5391,7849,5573,5629,5367,8893,7511,5325,7786,5407,9032,7653,5209,5209,8447,5642,7834,5325,5301,5606,5568,5377,5377,8447,5647,7538,5285,5524,5606,8033,5301,5622,5578,5708,5642,5476,7742,7710,7972,8239,8164,7957,5358,8617,5314,7628,7478,5291,7482,7768,7487,5285,5476,5396,5358,7616,7588,5464,8010,5285,8239,7834,8898,8484,5274,5274,5647,8349,9021,7628,7616,5329,8641,5274,5529,5476,7920,5320,7632,7706,5476,5325,5578,7628,8427,7491,7924,7920,8381,8154,5651,7616,8249,8539,8354,7628,5666,8222,5329,7849,7610,8617,8354,7616,8721,5726,5301,8375,5453,8484,5325,8467,8391,5391,7742,8387,8777,8222,5655,7786,7582,5329,8387,7675,7924,8093,7972,5726,8467,5529,5480,7487,7972,7696,7795,5519,7946,7576,5717,8375,8062,7478,8073,5301,5676,7982,7864,7628,5274,5377,7478,5699,7622,8345,8653,7930,5352,7542,8104,8845,8467,7588,7982,7849,7864,7786,5688,5209,5712,7715,8447,5642,5534,7511,5325,8447,5407,7849,5476,7616,5578,8239,8239,5285,8484,7628,5329,8190,8427,7616,8154,8249,8721,8617,5329,5309,8093,5407,5274,8451,5407,5407,7834,8451,5329,5337,8140,5325,8473,8140,8473,7605,7667,7605,5407,5651,5651,7478,7511,8033,7667,7516,8447,7706,5329,8484,7667,5485,5301,7521,7834,7977,5651,5301,5617,8015,7516,5485,5325,8093,7834,8140,8349,8349,5717,8783,5564,7746,7746,5564,8174,5726,5726,8711,5564,5274,8277,5726,7746,0,8527,5564,5726,7746,7538,5305,5305,5296,7538,7967,5362,5501,5464,5464,5309,8687,5606,7853,7946,5237,8582,7946,5320,5301,8184,7710,9372,9372,5476,7542,7883,5237,8641,5305,5305,7542,5491,5573,5337,7828,5476,5367,7834,5726,5712,7834,5485,7628,5301,8903,8762,8179,7482,8345,7834,8772,8345,5655,5491,8179,5476,5712,7883,7834,8762,5329,7972,5501,5564,5564,8438,8438,8467,8140,5726,8783,8631,7605,7972,8211,5708,5432,5480,5358,8467,8783,5480,5693,5651,8716,5693,5209,7786,7786,7582,5501,8272,8467,7920,8227,5524,7706,8467,5629,8909,5320,5320,5501,7893,7752,7904,7757,5480,8316,5726,8119,5391,5337,5391,8805,7478,8184,5485,7643,8170,7834,5647,5377,5237,5274,7834,5666,5358,5642,5688,7653,7478,7478,5730,5237,5717,7687,5519,5534,7687,8789,7700,7706,8533,5325,5209,5325,5325,7706,5325,7710,8033,8033,7849,8387,8800,5661,8174,8451,5391,5209,7710,8184,8170,7681,8093,8093,5573,7768,5661,8800,8077,8484,5642,8287,8653,7628,5573,5476,8447,8451,7967,5726,5362,5274,7742,7864,8494,5476,8287,7967,7828,5573,5309,8387,7710,8033,7849,8800,8170,8093,8174,7681,5209,8800,7628,8287,5726,8494,7610,8334,7817,8334,7834,7610,7610,7817,8795,7738,8093,7738,7610,7817,8795,7952,5688,5432,7952,8354,7805,7849,5291,5661,7628,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4269,11454,0,0,11459,0,0,0,11464,0,0,0,0,0,0,0,11469,11474,0,11479,0,11484,0,11490,0,0,0,0,11495,11500,0,0,0,0,0,0,11506,0,0,0,0,0,0,0,0,0,0,0,11512,0,0,0,0,0,0,0,11519,0,0,0,0,0,0,0,0,0,0,0,11525,5599,40,11528,11531,11535,335,11539,4899,11543,24,11546,11549,11553,11556,380,11560,52,11563,11566,32,3103,11569,11573,2795,11577,11581,11586,11591,11595,11600,11604,800,11608,11612,11617,11621,11626,11630,2809,11634,11638,2806,11642,11646,11650,2792,9676,11654,11659,11663,11667,11671,11674,11678,11683,11687,11691,3457,11695,11699,11704,11708,11713,11717,803,9686,11721,11726,11730,11735,11739,3471,11743,11747,11751,3454,11755,9690,11759,11763,11767,11771,11774,11778,11783,11787,11792,11797,11801,11806,11812,11818,11823,11829,11834,1073,11839,11844,11850,11855,11861,11866,11871,11875,11880,11885,11889,11894,11899,11904,11908,11913,11919,11924,11929,11934,11938,11943,11948,11953,11957,11962,11968,11973,11979,11984,11989,9710,11993,11998,12003,12007,12012,12017,12022,12026,12031,12037,12042,9721,12047,12051,12056,12062,12067,12072,12077,12081,12086,12092,12097,12103,12108,12113,12117,12122,12128,12133,12139,12144,12149,12153,12158,12163,12168,12172,12177,12183,9740,12188,12192,9745,12197,12202,12206,2599,12210,12214,12219,12223,12228,12232,845,12236,12240,12245,12250,12254,12259,12263,2613,12267,12271,2610,12275,12279,2596,12283,12287,12292,12296,12300,12304,12307,12311,12315,1733,12319,12323,12327,833,12331,12335,2759,12339,12343,12347,2738,12351,12355,12360,12364,12368,12372,12375,12379,12383,2819,12387,12391,12396,12401,12405,12410,12414,985,12418,12422,12426,2833,12430,12434,12438,12442,12446,2816,12450,12454,12459,12463,12467,10579,12471,12475,12480,12484,12488,3120,12492,12496,12501,12505,12510,12514,816,12518,12522,12527,618,12531,3194,12535,12539,432,12543,12547,12551,3183,12555,12559,12564,12568,12572,324,12576,12580,5230,12585,12590,12594,806,12598,12602,12607,12612,12616,12621,12625,2854,4993,12629,2851,12633,12637,12641,2840,12645,12649,12654,12658,12663,2496,12668,12673,12679,12684,12690,12695,942,12700,12705,12711,12716,12722,12727,2514,12732,12737,2510,12742,12747,12752,3201,12757,12762,12768,12773,12778,10015,12783,12788,12794,12799,12804,10060,12809,12814,12819,10264,12824,12829,10330,12834,12839,12844,10207,12849,12854,12860,12865,12870,12875,12879,12884,12890,12896,12901,12907,12912,3064,12917,12922,12928,12933,12938,12943,12948,12953,12957,12962,12967,12971,2950,12975,12979,12984,12988,12993,842,12997,13001,13006,13010,13015,13019,1400,13023,13027,2957,13031,13035,13039,2947,13043,13047,13052,13056,13061,13066,13070,13075,13081,13086,13092,13097,4878,13102,13107,13113,13118,13124,13129,13133,13138,13143,13147,13152,13157,13162,13166,13171,13177,13182,13187,13192,13196,13201,13207,13212,13216,2547,13220,13224,13229,13234,13238,13243,13247,839,13251,13255,13260,13265,13269,13274,13278,1426,13282,13286,2554,13290,13294,13298,2544,13302,13306,13311,13315,13319,4493,13323,13327,13332,13336,13340,3228,13344,13348,13353,13358,13362,13367,13371,915,13375,13379,13384,13389,13393,13398,13402,3242,13406,13410,13414,3239,13418,13422,13426,3225,13430,13434,13439,13443,13447,2998,13451,13455,13460,13464,13469,13473,836,13477,13481,13486,13490,13495,13499,1311,13503,13507,13511,3009,13515,13519,13523,2995,13527,13531,13536,13540,13545,3271,13550,13556,13561,13567,13572,1060,13577,13582,13588,13594,13599,13605,13610,3289,13615,13620,13625,3285,13630,13635,13640,3267,13645,13650,13656,13661,13667,13672,13677,13682,13686,13691,13697,13702,13708,13713,13718,13722,13727,13732,13736,13741,13746,13751,13755,13760,13766,13771,13776,13781,13785,13790,13796,13802,13807,13813,13818,13823,13827,13832,13838,13844,13849,13855,13860,13865,13869,13874,13879,13883,13888,13894,13899,13905,13910,922,13915,13920,13926,13932,13937,13942,4136,13947,13952,13957,13961,13966,13970,1623,13975,13979,429,13983,13987,13992,13997,14001,14006,14010,2537,14014,14018,1620,14022,14026,14030,852,14034,14038,14043,14047,14052,3114,14056,14060,482,14064,14068,14072,3126,14076,14080,14085,14089,14094,14098,1044,14102,14106,14111,14115,14120,14124,3137,14128,14132,464,14136,14140,14144,3123,14148,14152,14157,14161,14165,14169,14172,14176,14181,14185,14189,2864,14193,14197,14202,14207,14211,14216,14220,926,14224,14228,14233,14237,14242,14246,2878,14250,14254,2875,14258,14262,14266,2861,14270,14274,14279,14283,14287,5159,14291,14295,14300,14304,14309,6491,14314,14319,14325,14331,14336,14342,14347,6483,14352,14357,6509,14362,14367,6505,14372,14377,6487,14382,14387,14393,14398,14403,14408,14412,14417,9839,14423,14428,14433,14437,14442,14448,14453,14459,14464,14469,14473,14478,14484,14489,14494,14499,14504,14508,14513,14517,14522,14528,14533,14538,14543,14547,14552,14558,14563,14567,2678,14571,14575,14580,14584,14589,14593,826,14597,14601,14606,14610,14615,14619,1325,14623,14627,2689,14631,14635,14639,2675,14643,14647,14652,14656,14660,14664,14667,14671,14676,14680,14685,6435,14690,14695,14701,14706,14712,14717,992,14722,14727,14732,4430,14737,14742,6449,14747,14752,14757,6431,14762,9853,14767,14772,14776,14781,14787,14792,14797,1464,14802,14807,14813,14818,14824,14829,3166,14834,14839,14844,3162,14849,14854,9858,3144,14859,14864,14870,14875,14880,14885,14889,14894,14900,14905,14910,812,14915,14920,14926,14932,14937,14943,14948,3342,14953,14958,14963,3338,14968,14973,3320,14978,14983,14989,14994,14999,15004,15008,15013,15019,15024,822,15029,15035,15040,15045,10693,15050,15055,15060,15065,15069,15074,15079,15084,15088,15093,15099,15104,15109,15114,15118,15123,15129,15134,15139,4604,15144,15149,15154,15158,15163,15168,15173,15177,15182,15187,15192,15196,15201,15207,15212,15217,15222,15226,15231,15237,15242,15247,988,15252,15257,15263,15268,15274,15279,327,15284,15289,15294,2305,15299,15304,15309,2696,15314,15319,15325,15330,15335,15340,15344,15349,15355,15360,15364,819,15368,15372,15377,15381,15386,15390,2668,15394,15398,2665,15402,15406,15410,2651,15414,15418,15423,15427,15431,4486,15435,15439,15444,15448,15452,3208,15456,15460,15465,15470,15474,15479,15484,15489,15493,15498,15502,3222,15506,15510,15514,3205,15518,15522,15527,9873,15531,5156,15535,15539,15544,15548,15552,2712,15556,15560,15565,9877,15570,15575,15580,3499,15585,15590,15594,2726,15598,15602,15606,2709,15610,15614,15619,15623,15627,15631,15634,15638,15643,15647,15652,4282,15657,15662,15668,15674,15679,15685,15691,15696,15702,15707,4269,15712,15717,15722,4265,15727,15732,15738,15743,15748,15753,15757,15762,15767,10019,15772,15777,15783,15789,15794,15800,15806,15811,15816,10268,15821,15826,10211,9881,15831,15837,15842,15847,15852,15856,15861,15867,15872,15877,2968,15882,15887,15893,15899,15904,15910,9886,15916,15922,15927,2986,15932,15937,15942,2964,15947,15952,15956,2891,15960,15964,15969,9900,15974,15979,15984,15988,15992,2905,15996,16000,16004,16008,16011,16015,16020,16024,16028,347,16032,16036,16041,16046,16050,16055,16060,16065,16069,16074,16078,1318,16082,16086,16090,670,16094,16098,16103,16107,16111,1124,16115,16119,16124,0,0,0,15590,2547,13443,15882,14291,6435,13615,13418,2599,13771,13332,11894,12267,1318,11747,13844,12590,915,0,0,12768,11659,13594,15932,2840,11563,15717,14120,11763,12149,16024,12459,15340,12438,1044,3222,0,15753,13398,15674,3114,3183,15325,13234,5159,14237,14193,13869,15242,0,15284,3338,14319,0,3009,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2995,16128,0,0,16132,0,0,0,16136,0,0,0,0,0,0,0,16140,16144,0,16148,0,16152,0,0,0,0,0,0,16157,0,0,0,16162,0,0,0,16168,0,0,0,0,0,0,0,0,0,0,0,0,16174,0,0,0,0,0,0,3030,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16181,0,0,0,0,0,0,3016,16187,0,0,16192,0,0,0,16197,0,0,0,0,0,0,0,16202,16207,0,16212,0,16217,0,0,0,0,0,0,6584,0,0,0,16223,0,0,0,16228,0,0,0,0,0,0,0,16233,0,0,0,0,0,0,0,0,0,0,0,16238,16242,0,0,16247,0,0,0,16252,0,0,0,0,0,0,0,16257,16262,0,0,0,16267,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2998,16273,0,0,16277,0,0,0,16281,0,0,0,0,0,0,0,16285,16289,0,16293,0,16297,0,0,0,0,0,0,806,16302,0,0,1655,0,0,0,16306,16310,0,0,0,0,0,0,16315,16319,0,16323,16327,16332,0,0,0,0,0,0,16337,16341,0,0,16346,0,0,0,16351,0,0,0,0,0,0,0,16356,16361,0,16366,16371,16377,0,0,0,0,0,0,4073,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16389,16393,0,0,16398,0,0,0,16403,0,16408,0,0,0,0,0,16414,16419,0,16424,16429,16435,0,0,0,0,0,0,2851,16441,0,0,16445,0,0,0,16449,0,0,0,0,0,0,0,16453,16457,0,16461,0,16465,0,0,0,0,0,0,16470,0,0,0,16475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16481,0,0,0,0,0,0,0,4061,0,0,0,16488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2854,16493,0,0,16497,0,0,0,16501,0,0,0,0,0,0,0,16505,16509,0,16513,0,16517,0,0,0,0,4993,0,2857,0,0,0,16522,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16527,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16532,0,0,0,16536,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16541,0,16546,0,0,0,0,0,0,4069,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2840,16552,0,0,16556,0,0,0,16560,0,0,0,0,0,0,0,10627,16564,0,16568,0,16572,0,0,0,0,0,0,16577,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16582,0,0,0,0,0,0,0,3613,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3617,16589,0,0,16594,0,0,0,16599,0,0,0,0,0,0,0,16604,16609,0,0,0,16614,0,0,0,0,0,0,16620,0,0,0,16624,0,0,0,16629,0,0,0,0,0,0,0,16634,0,0,0,0,16639,0,0,0,0,0,0,16645,16649,0,0,16654,0,0,16659,16664,0,16669,0,0,0,0,0,16675,16680,0,16685,0,0,0,0,0,0,0,0,4065,0,0,0,16690,0,0,0,16695,0,0,0,0,0,0,0,16700,16705,0,0,0,0,0,0,0,0,0,0,324,16710,0,0,16714,0,0,0,16718,0,0,0,0,0,0,0,16722,16726,0,16730,0,16734,0,0,0,0,0,0,803,16739,16743,0,16748,0,0,0,16752,0,16756,0,0,0,0,0,16761,16765,0,16769,16773,16778,0,0,0,11713,0,0,16783,16787,0,0,16792,0,0,0,16797,0,0,0,0,0,0,0,16802,16807,0,16812,16817,16823,0,0,0,0,0,0,16829,16833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16838,16842,0,0,16847,0,0,0,16852,0,0,0,0,0,0,0,16857,16862,0,16867,16872,16878,0,0,0,0,0,0,3468,16884,0,0,16888,0,0,0,16892,0,0,0,0,0,0,0,16896,16900,0,16904,0,16908,0,0,0,0,0,0,16913,0,0,0,16918,0,0,0,16924,0,0,0,0,0,0,0,16930,16936,0,0,16942,16949,0,0,0,0,0,0,16956,0,0,0,0,0,0,0,16960,0,0,0,0,0,0,0,0,16965,0,16970,0,0,0,0,0,0,0,0,3471,16975,0,0,16979,0,0,0,16983,0,0,0,0,0,0,0,16987,16991,0,16995,0,16999,0,0,0,0,0,0,2779,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17010,0,0,0,17014,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17019,0,0,0,17023,0,0,0,17028,0,0,0,0,0,0,0,0,17033,0,17038,0,0,0,0,0,0,0,0,3454,17043,0,0,17047,0,0,17051,17055,0,17059,0,0,0,0,0,17064,17068,0,17072,0,17076,0,0,0,0,0,0,17081,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17086,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3577,0,0,0,17093,0,0,0,17098,0,0,0,0,0,0,0,17103,0,0,17108,0,0,0,0,0,0,0,0,17113,0,0,0,17117,0,0,0,17122,0,0,0,0,0,0,0,17127,0,0,17132,0,17137,0,0,0,0,0,0,17143,0,0,0,17147,0,0,0,17152,0,0,0,0,0,0,0,17157,17162,0,17167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3457,17172,0,0,17176,0,0,0,17180,0,0,0,0,0,0,0,17184,17188,0,17192,0,17196,0,0,0,0,0,0,429,17201,0,0,10033,0,0,0,17205,0,0,0,0,17209,0,0,17214,17218,0,17222,0,17226,0,0,0,0,0,0,1616,17231,0,0,17236,0,0,0,17241,0,0,0,0,0,0,0,17246,17251,0,17256,17261,17267,0,0,0,0,0,0,17273,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17277,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17283,17287,0,0,17292,0,0,0,17297,0,17302,0,0,0,0,0,17308,17313,0,17318,0,17323,0,0,0,0,0,0,1620,17329,0,0,10282,0,0,0,17333,0,0,0,0,0,0,0,17337,17341,0,17345,0,10541,0,0,0,0,0,0,17349,17354,0,0,17360,0,0,0,17366,0,0,0,0,0,0,0,17372,17378,0,17384,17390,17397,0,0,0,0,0,0,17404,0,0,0,17408,0,0,0,17413,0,0,0,0,0,0,0,0,17418,0,0,0,0,0,0,0,0,0,0,2537,17423,0,0,9220,0,0,0,17427,0,0,0,0,17431,0,0,17436,17440,0,17444,0,17448,0,0,0,14006,0,0,4211,17453,0,0,17458,0,0,0,17463,0,0,0,0,0,0,0,0,0,0,17468,0,17473,0,0,0,0,0,0,17479,17484,0,0,17490,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17496,0,17502,0,0,0,0,0,0,1631,17509,0,0,17514,0,0,0,17519,0,0,0,0,0,0,0,0,17524,0,17529,0,17534,0,0,0,0,0,0,17540,0,0,0,17544,0,0,0,17549,0,0,0,0,0,0,0,0,17554,0,17559,0,0,0,0,0,0,0,0,2523,17564,0,0,10169,0,0,0,17568,0,0,0,0,17572,0,0,17577,0,0,17581,0,17585,0,0,0,0,0,0,17590,0,0,0,17595,0,0,0,17601,0,0,0,0,0,0,0,17607,0,0,0,0,17613,0,0,0,0,0,0,4198,17620,0,0,915,17625,17629,17634,1639,17639,17644,17649,17653,17657,17662,17667,17672,17677,17682,17687,17692,17696,17700,17705,17709,17714,17719,17723,17727,13367,13375,17731,17735,17739,17744,17750,17756,17761,17767,17773,17778,17783,17789,17795,17801,17807,17813,17819,17825,17830,17835,17841,17846,17852,17858,17863,17868,17873,17878,17883,6640,17888,17893,17899,17905,17910,17916,17922,17927,17932,17938,17944,17950,17956,17962,17968,17974,17979,17984,17990,17995,18001,18007,18012,18017,18022,18027,18032,18037,18042,18048,18055,18062,18068,18075,18082,18088,18094,18101,18108,18115,18122,18129,18136,18143,18149,18155,18162,18168,18175,18182,18188,18194,18200,18206,18212,1140,18218,18223,18229,18235,18240,18246,18252,18257,18262,18268,18274,18280,18286,18292,18298,18304,18309,18314,18320,18325,18331,18337,18342,18347,18352,18357,18362,3239,18367,18371,18376,10345,18381,18386,18391,18395,18399,18404,18409,18414,18419,18424,18429,18434,18438,18442,18447,18451,18456,18461,18465,18469,13410,13418,18473,18477,18482,18488,18495,18502,18508,18515,18522,18528,18534,18541,18548,18555,18562,18569,18576,18583,18589,18595,18602,18608,18615,18622,18628,18634,18640,18646,18652,6662,18658,18663,18669,18675,18680,18686,18692,18697,18702,18708,18714,18720,18726,18732,18738,18744,18749,18754,18760,18765,18771,18777,18782,18787,18792,18797,18802,3242,18807,18811,18816,18821,18825,18830,18835,18839,18843,18848,18853,18858,18863,18868,18873,18878,18882,18886,18891,18895,18900,18905,18909,18913,13398,13406,18917,3245,18921,18926,18932,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,24,54,24,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18938,18943,18949,18955,18960,18965,18971,18977,18983,18989,18995,19001,19007,19012,19017,19023,19028,19034,19040,19045,19050,19055,19060,19065,19070,19075,19081,19088,19095,19101,19108,19115,19121,19127,19134,19141,19148,19155,19162,19169,19176,19182,19188,19195,19201,19208,19215,19221,19227,19233,19239,19245,19251,19255,19260,19266,19272,19277,19283,19289,19294,19299,19305,19311,19317,19323,19329,19335,19341,19346,19351,19357,19362,19368,19374,19379,19384,19389,19394,19399,6666,19404,19409,19415,10825,19421,19427,19433,19438,19443,19449,19455,19461,19467,19473,19479,19485,19490,19495,19501,19506,19512,19518,19523,19528,19533,19538,19543,3225,19548,19552,19557,19562,19566,19571,19576,19580,19584,19589,19594,19599,19604,19609,19614,19619,19623,19627,19632,19636,19641,19646,19650,19654,13422,13430,19658,19662,19667,19673,19680,19687,19693,19700,19707,19713,19719,19726,19733,19740,19747,19754,19761,19768,19774,19780,19787,19793,19800,19807,19813,19819,19825,19831,19837,3263,19843,19848,19854,19860,19865,19871,19877,19882,19887,19893,19899,19905,19911,19917,19923,19929,19934,19939,19945,19950,19956,19962,19967,19972,19977,19982,19987,3249,19992,19997,20003,20009,20014,20020,20026,20031,20036,20042,20048,20054,20060,20066,20072,20078,20083,20088,20094,20099,20105,20111,20116,20121,20126,20131,20136,6644,20141,20146,20152,20158,20163,20169,20175,20180,20185,20191,20197,20203,20209,20215,20221,20227,20232,20237,20243,20248,20254,20260,20265,20270,20275,20280,20285,20290,20294,20299,20305,20311,20316,20322,20328,20333,20338,20344,20350,20356,20362,20368,20374,20380,20385,20390,20396,7478,8154,20401,20406,20411,20416,20421,20426,6648,20431,20436,20442,20448,20453,20459,20465,20470,20475,20481,20487,20493,20499,20505,20511,20517,20522,20527,20533,20538,20544,20550,20555,20560,20565,20570,20575,3228,20580,20584,20589,20594,20598,20603,20608,20612,20616,20621,20626,20631,20636,20641,20646,20651,20655,20659,20664,20668,20673,20678,20682,20686,13336,13344,20690,1060,20694,20699,20705,20711,20716,20722,20728,20733,20738,20744,20750,20756,20762,20768,20774,20780,20785,20790,20796,20801,20807,20813,20818,20823,13567,13577,20828,20833,20838,20844,20851,20858,20864,20871,20878,20884,20890,20897,20904,20911,20918,20925,20932,20939,20945,20951,20958,20964,20971,20978,20984,20990,20996,21002,21008,21014,21019,21025,21032,21039,21045,21052,21059,21065,21071,21078,21085,21092,21099,21106,21113,21120,21126,21132,21139,21145,21152,21159,21165,21171,21177,21183,21189,21195,21201,21208,21216,21224,21231,21239,21247,21254,21261,21269,21277,21285,21293,21301,21309,21317,21324,21331,21339,21346,21354,21362,21369,21376,21383,21390,21397,21404,21409,21415,21422,21429,21435,21442,21449,21455,21461,21468,21475,21482,21489,21496,21503,21510,21516,21522,21529,21535,21542,21549,21555,21561,21567,21573,21579,3285,21585,21590,21596,21602,21607,21613,21619,21624,21629,21635,21641,21647,21653,21659,21665,21671,21676,21681,21687,21692,21698,21704,21709,21714,13620,13630,21719,21724,21730,21737,21745,21753,21760,21768,21776,21783,21790,21798,21806,21814,21822,21830,21838,21846,21853,21860,21868,21875,21883,21891,21898,21905,21912,21919,21926,21933,21938,21944,21951,21958,21964,21971,21978,21984,21990,21997,22004,22011,22018,22025,22032,22039,22045,22051,22058,22064,22071,22078,22084,22090,22096,22102,22108,3289,22114,22119,22125,22131,22136,22142,22148,22153,22158,22164,22170,22176,22182,22188,22194,22200,22205,22210,22216,22221,22227,22233,22238,22243,13605,13615,22248,6410,22253,22259,22266,22273,22279,22286,22293,22299,22305,22312,22319,22326,22333,22340,22347,22354,22360,22366,22373,22379,22386,22393,22399,22405,22411,22417,22423,22429,22435,22442,22450,22458,22465,22473,22481,22488,22495,22503,22511,22519,22527,22535,22543,22551,22558,22565,22573,22580,22588,22596,22603,22610,22617,22624,22631,22638,22643,22649,22656,22663,22669,22676,22683,22689,22695,22702,22709,22716,22723,22730,22737,22744,22750,22756,22763,22769,22776,22783,22789,22795,22801,22807,22813,22819,22824,22830,22837,22844,22850,22857,22864,22870,22876,22883,22890,22897,22904,22911,22918,22925,22931,22937,22944,22950,22957,22964,22970,22976,22982,22988,22994,3267,23000,23005,23011,23017,23022,23028,23034,23039,23044,23050,23056,23062,23068,23074,23080,23086,23091,23096,23102,23107,23113,23119,23124,23129,13635,13645,23134,23139,23145,23152,23160,23168,23175,23183,23191,23198,23205,23213,23221,23229,23237,23245,23253,23261,23268,23275,23283,23290,23298,23306,23313,23320,23327,23334,23341,6426,23348,23354,23361,23368,23374,23381,23388,23394,23400,23407,23414,23421,23428,23435,23442,23449,23455,23461,23468,23474,23481,23488,23494,23500,23506,23512,23518,6415,23524,23530,23537,23544,23550,23557,23564,23570,23576,23583,23590,23597,23604,23611,23618,23625,23631,23637,23644,23650,23657,23664,23670,23676,23682,23688,23694,23700,23705,23711,23718,23725,23731,23738,23745,23751,23757,23764,23771,23778,23785,23792,23799,23806,23812,23818,23825,23831,23838,23845,23851,23857,23863,23869,23875,23881,23886,23892,23899,23906,23912,23919,23926,23932,23938,23945,23952,23959,23966,23973,23980,23987,23993,23999,24006,24012,24019,24026,24032,24038,24044,24050,24056,24062,24067,24073,24080,24087,24093,24100,24107,24113,24119,24126,24133,24140,24147,24154,24161,24168,24174,24180,24187,24193,24200,24207,24213,24219,24225,24231,24237,3271,24243,24248,24254,24260,24265,24271,24277,24282,24287,24293,24299,24305,24311,24317,24323,24329,24334,24339,24345,24350,24356,24362,24367,24372,13540,24377,24382,842,24387,24391,24396,24401,24405,24410,24415,24419,24423,24428,24433,24438,24443,24448,24453,24458,24462,24466,24471,24475,24480,24485,24489,24493,24497,12997,3488,24501,24505,24510,24516,24522,24527,24533,24539,24544,24549,24555,24561,24567,24573,24579,24585,24591,24596,24601,24607,24612,24618,24624,24629,24634,24639,24644,24649,848,24654,24659,24665,10893,24671,24677,24683,24688,24693,24699,24705,24711,24717,24723,24729,24735,24740,24745,24751,24756,24762,24768,24773,24778,24783,24788,24793,24798,24803,24809,24816,24823,24829,24836,24843,24849,24855,24862,24869,24876,24883,24890,24897,24904,24910,24916,24923,24929,24936,24943,24949,24955,24961,24967,24973,24979,24983,24988,24994,25000,25005,25011,25017,25022,25027,25033,25039,25045,25051,25057,25063,25069,25074,25079,25085,25090,25096,25102,25107,25112,25117,25122,25127,2957,25132,25136,25141,25146,25150,25155,25160,25164,25168,25173,25178,25183,25188,25193,25198,25203,25207,25211,25216,25220,25225,25230,25234,25238,25242,13031,25246,25250,25255,25261,25268,25275,25281,25288,25295,25301,25307,25314,25321,25328,25335,25342,25349,25356,25362,25368,25375,25381,25388,25395,25401,25407,25413,25419,25425,2982,25431,25436,25442,25448,25453,25459,25465,25470,25475,25481,25487,25493,25499,25505,25511,25517,25522,25527,25533,25538,25544,25550,25555,25560,25565,25570,25575,1400,25580,25584,25589,25594,25598,25603,25608,25612,25616,25621,25626,25631,25636,25641,25646,25651,25655,25659,25664,25668,25673,25678,25682,25686,13015,13023,25690,2960,25694,25699,25705,25711,25716,25722,25728,25733,25738,25744,25750,25756,25762,25768,25774,25780,25785,25790,25796,25801,25807,25813,25818,25823,25828,25833,25838,25843,25848,25854,25861,25868,25874,25881,25888,25894,25900,25907,25914,25921,25928,25935,25942,25949,25955,25961,25968,25974,25981,25988,25994,26000,26006,26012,26018,26024,26028,26033,26039,26045,26050,26056,26062,26067,26072,26078,26084,26090,26096,26102,26108,26114,26119,26124,26130,26135,26141,26147,26152,26157,26162,26167,26172,2986,26177,26182,26188,26194,26199,26205,26211,26216,26221,26227,26233,26239,26245,26251,26257,26263,26268,26273,26279,26284,26290,26296,26301,26306,15922,15932,26311,2947,26316,26320,26325,26330,26334,26339,26344,26348,26352,26357,26362,26367,26372,26377,26382,10623,26387,26391,26396,26400,26405,26410,26414,26418,13035,13043,26422,26426,26431,26437,26444,26451,26457,26464,26471,26477,26483,26490,26497,26504,26511,26518,26525,26532,26538,26544,26551,26557,26564,26571,26577,26583,26589,26595,26601,3791,26607,26612,26618,26624,26629,26635,26641,26646,26651,26657,26663,26669,26675,26681,26687,26693,26698,26703,26709,26714,26720,26726,26731,26736,26741,26746,26751,26756,26760,26765,26771,26777,26782,26788,26794,26799,26804,26810,26816,26822,26828,26834,26840,26846,26851,26856,26862,26867,26873,26879,26884,26889,26894,26899,26904,2964,26909,26914,26920,26926,26931,26937,26943,26948,26953,26959,26965,26971,26977,26983,26989,26995,27000,27005,27011,27016,27022,27028,27033,27038,15937,15947,27043,27048,27052,27057,27063,27069,27074,27080,27086,27091,27096,27102,27108,27114,27120,27126,27132,27138,27143,27148,27154,27159,27165,27171,27176,27181,27186,27191,27196,2968,27201,27206,27212,27218,27223,27229,27235,27240,27245,27251,27257,27263,27269,27275,27281,27287,27292,27297,27303,27308,27314,27320,27325,27330,15872,15882,27335,2950,27340,27344,27349,27354,27358,27363,27368,27372,27376,27381,27386,27391,27396,27401,27406,27411,27415,27419,27424,27428,27433,27438,27442,27446,12967,12975,27450,816,27454,27458,27463,27468,27472,27477,27482,681,27486,27491,27496,27501,27506,27511,27516,27521,10919,27525,27530,27534,27539,27544,27548,27552,12510,12518,27556,27560,27564,27569,27575,27581,27586,27592,27598,27603,27608,27614,27620,27626,27632,27638,27644,27650,27655,27660,27666,27671,27677,27683,27688,27693,27698,27703,27708,27713,27717,27722,27728,27734,27739,27745,27751,27756,27761,27767,27773,27779,27785,27791,27797,27803,27808,27813,27819,27824,27830,27836,27841,27846,27851,27856,27861,27866,27871,27877,27884,27891,27897,27904,27911,27917,27923,27930,27937,27944,27951,27958,27965,27972,27978,27984,27991,27997,28004,28011,28017,28023,28029,28035,28041,28047,28051,28056,28062,28068,28073,28079,28085,28090,28095,28101,28107,28113,28119,28125,28131,28137,28142,28147,28153,28158,28164,28170,28175,28180,28185,28190,28195,432,82,28200,28205,28210,28214,28219,28224,28228,28232,28237,28242,28247,28252,28257,28262,28267,28271,28275,28280,28284,28289,28294,28298,28302,28306,12543,28310,28314,28319,28325,28332,28339,28345,28352,28359,28365,28371,28378,28385,28392,28399,28406,28413,28420,28426,28432,28439,28445,28452,28459,28465,28471,28477,28483,28489,28495,28499,28504,28510,28516,28521,28527,28533,28538,28543,28549,28555,28561,28567,28573,28579,28585,28590,28595,28601,28606,28612,28618,28623,28628,28633,28638,28643,3194,28648,28652,28657,1643,28662,28667,28672,28676,28680,28685,28690,28695,28700,28705,28710,28715,28719,28723,28728,28732,28737,28742,28746,28750,618,12535,28754,3197,28758,28763,28769,28775,28780,28786,28792,28797,28802,28808,28814,28820,28826,28832,28838,28844,28849,28854,28860,28865,28871,28877,28882,28887,28892,28897,28902,28907,28912,28918,28925}
+#define UTFASCIILOOKUP {1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,1,2,2,1,1,2,2,2,2,4,6,8,10,12,14,16,18,20,22,2,2,1,1,1,1,1,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,1,2,1,1,1,1,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,28,76,1,72,1,79,1,28,24,1,1,2,58,2,82,86,8,10,1,64,54,1,2,6,52,1,88,91,94,1,24,24,24,24,24,24,97,28,32,32,32,32,40,40,40,40,30,50,52,52,52,52,52,70,52,64,64,64,64,64,100,79,24,24,24,24,24,24,97,28,32,32,32,32,40,40,40,40,30,50,52,52,52,52,52,2,52,64,64,64,64,72,100,72,24,24,24,24,24,24,28,28,28,28,28,28,28,28,30,30,30,30,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,38,38,38,38,40,40,40,40,40,40,40,40,40,40,103,103,42,42,44,44,44,46,46,46,46,46,46,46,46,46,46,50,50,50,50,50,50,50,106,106,52,52,52,52,52,52,109,109,58,58,58,58,58,58,60,60,60,60,60,60,60,60,62,62,62,62,62,62,64,64,64,64,64,64,64,64,64,64,64,64,68,68,72,72,72,74,74,74,74,74,74,60,26,26,26,26,16,16,52,28,28,30,30,30,30,30,10,1,32,34,34,36,36,112,40,40,44,44,46,46,68,50,50,52,52,52,115,115,54,54,118,8,8,121,121,62,62,62,62,64,64,72,66,72,72,74,74,124,124,124,124,8,14,14,127,68,1,1,1,1,130,130,130,133,133,133,136,136,136,24,24,40,40,52,52,64,64,64,64,64,64,64,64,64,64,1,24,24,24,24,97,97,36,36,36,36,44,44,52,52,52,52,124,124,42,130,30,130,36,36,112,68,50,50,24,24,97,97,52,52,24,24,24,24,32,32,32,32,40,40,40,40,52,52,52,52,58,58,58,58,64,64,64,64,60,60,62,62,72,72,38,38,50,30,139,139,74,74,24,24,32,32,52,52,52,52,52,52,52,52,72,72,46,50,62,42,142,145,24,28,28,46,62,60,74,148,148,26,64,66,32,32,42,42,56,56,58,58,72,72,24,24,24,26,52,28,30,30,32,1,1,32,32,32,32,42,36,36,36,36,64,72,38,38,40,40,40,46,46,46,153,68,68,48,50,50,50,52,109,52,34,58,58,58,58,58,58,58,58,58,60,60,42,60,60,62,62,64,64,66,1,68,72,72,74,74,74,74,1,1,1,28,1,26,32,36,38,42,44,46,56,1,1,130,130,130,127,127,156,159,162,153,165,1,38,38,44,38,42,58,58,58,58,68,72,1,1,1,1,1,1,1,1,1,1,1,1,66,1,66,1,2,2,2,2,1,2,2,2,2,1,1,1,66,1,2,66,2,1,2,1,1,58,70,36,46,60,70,1,168,179,184,188,193,203,207,66,1,1,212,217,220,225,231,236,236,236,243,249,256,262,256,262,266,266,220,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,272,272,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,272,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,24,32,40,52,64,28,30,38,48,58,62,66,70,278,278,283,283,1,2,289,289,0,0,1,0,0,0,1,0,0,0,0,0,1,1,24,2,32,32,40,0,52,0,64,52,40,24,26,36,30,32,74,32,100,40,44,46,48,50,300,52,54,58,0,60,62,64,303,306,76,52,40,64,24,32,32,40,64,24,26,36,30,32,74,32,100,40,44,46,48,50,70,52,54,58,60,60,62,64,303,306,76,52,40,64,52,64,52,0,26,100,64,64,64,303,54,2,309,309,315,315,68,68,56,56,318,318,121,121,34,34,306,306,38,38,36,36,321,321,324,324,44,58,28,42,0,0,0,327,327,0,331,331,0,0,0,0,335,338,341,344,335,130,40,347,42,133,136,350,354,40,64,357,24,26,66,36,30,335,124,74,40,40,44,46,48,50,52,54,58,60,62,64,34,306,127,321,121,361,366,72,1,32,371,374,24,26,66,36,30,335,124,74,40,40,44,46,48,50,52,54,58,60,62,64,34,306,127,321,121,361,366,72,1,32,371,374,335,338,341,344,335,130,40,347,42,133,136,350,354,40,64,357,52,52,32,32,335,335,32,32,335,335,52,52,338,338,300,300,76,76,34,34,72,72,72,72,64,64,52,52,52,52,380,380,56,56,383,1,1,1,1,0,388,395,40,40,1,1,58,58,36,36,36,36,36,36,124,124,74,74,44,44,44,44,44,44,44,44,50,50,106,106,54,54,306,306,60,60,62,62,64,64,64,64,306,306,403,403,321,321,321,321,38,38,321,321,321,321,1,124,124,44,44,407,407,50,50,410,410,321,321,413,413,416,24,24,24,24,97,97,335,335,1,1,1,1,124,124,74,74,130,130,40,40,40,40,52,52,52,52,52,52,32,32,64,64,64,64,64,64,321,321,425,425,72,72,425,425,429,429,429,429,432,432,435,435,439,439,443,443,448,448,452,452,456,456,460,460,464,464,407,407,467,467,471,471,475,475,479,479,482,482,485,485,407,407,410,410,0,0,0,0,0,0,0,0,0,0,0,0,0,24,26,36,30,32,74,32,32,62,124,40,46,306,127,44,38,130,377,321,48,72,50,121,52,321,54,42,491,60,66,62,58,127,68,54,44,52,34,0,0,220,0,0,0,0,0,0,0,24,26,36,30,32,74,32,32,62,124,40,46,306,127,44,38,130,377,321,48,72,50,121,52,321,54,42,491,60,66,62,58,127,68,54,44,52,34,494,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,24,52,40,32,32,24,24,52,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,497,26,36,30,38,66,74,306,62,72,44,44,46,48,48,50,50,60,502,54,54,127,127,56,58,121,62,0,0,0,0,0,66,507,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,510,0,516,0,0,0,0,0,0,0,0,0,0,0,522,528,540,547,559,564,0,497,0,0,0,0,0,0,0,0,0,0,574,24,497,68,497,72,497,26,580,62,100,42,38,306,30,584,58,74,60,121,60,30,62,74,587,36,591,591,597,597,597,0,34,56,44,46,48,50,38,68,497,72,603,606,609,24,64,40,68,0,0,0,0,0,0,0,0,66,612,618,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,622,626,497,497,497,497,179,179,179,64,179,630,633,26,62,62,54,100,637,640,38,644,647,38,321,650,654,30,30,657,584,660,30,30,30,664,58,58,58,58,58,58,42,58,60,60,60,60,60,62,377,34,34,34,66,34,303,56,56,306,44,44,44,106,44,36,36,50,36,36,36,46,46,46,46,50,50,50,50,50,38,321,667,38,38,580,68,109,109,64,670,670,68,66,72,72,72,68,32,673,72,72,0,97,677,626,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,681,685,0,6,8,10,12,14,16,18,20,22,121,30,377,689,689,696,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,700,700,26,36,36,30,30,38,68,74,38,62,62,72,706,44,46,48,50,60,60,32,54,54,60,56,58,121,62,709,709,709,24,24,24,24,24,24,32,32,32,32,40,40,64,64,64,52,0,0,0,0,0,70,56,0,0,0,0,0,0,717,717,717,622,622,622,622,622,622,622,640,640,681,681,685,725,587,587,587,730,730,591,591,591,734,734,739,739,739,744,685,685,725,640,640,725,685,640,497,497,597,597,597,748,748,673,673,640,725,725,752,38,121,50,58,26,46,44,756,66,48,34,584,100,46,36,644,60,30,74,62,72,54,42,321,630,762,306,100,74,121,60,30,62,74,765,377,56,68,24,770,40,773,64,776,32,779,52,782,0,785,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,24,773,40,32,64,776,52,789,50,800,803,806,809,812,816,819,822,826,829,833,836,839,842,845,848,842,429,852,855,848,858,858,858,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,863,875,884,24,24,770,40,892,64,895,58,46,898,32,32,905,898,52,52,908,836,911,915,918,922,926,812,809,929,848,933,937,942,946,951,806,955,816,959,842,963,803,968,800,972,845,855,819,822,839,976,980,985,988,992,826,429,0,0,996,1002,770,40,892,64,895,58,664,898,32,32,905,898,52,52,908,1011,0,0,0,1018,1025,0,0,0,0,0,479,1034,1039,1044,1047,471,833,1053,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,179,898,0,0,0,0,0,0,0,0,1060,1064,148,1068,1073,0,863,875,884,0,24,770,40,892,64,895,58,46,0,0,32,905,0,0,52,908,836,911,915,918,922,926,812,809,929,848,933,937,942,946,951,806,955,816,959,842,0,803,968,800,972,845,855,819,0,839,0,0,0,988,992,826,429,0,0,996,1002,770,40,892,64,895,58,664,0,0,32,905,0,0,52,908,1011,1077,0,0,0,0,0,0,0,0,0,0,0,0,0,822,471,0,1053,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,819,819,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,46,410,32,32,905,1084,52,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,1093,54,303,26,637,48,72,58,664,46,46,1097,66,121,79,60,38,0,0,996,0,770,40,892,64,895,58,664,410,32,32,905,1084,52,52,908,1011,0,0,1101,1105,0,0,0,0,0,0,56,1111,1115,74,1119,491,34,1124,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,1127,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,664,0,0,32,905,0,0,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,637,48,72,58,0,46,976,0,985,121,79,60,38,0,0,996,1002,770,40,892,64,895,58,664,898,0,32,905,898,0,52,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,491,0,1124,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,58,58,1134,1134,0,0,0,0,0,0,0,0,0,0,0,0,0,863,50,884,0,24,770,40,892,64,895,58,46,0,0,773,905,0,0,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,1137,48,72,58,0,46,1057,0,66,121,992,60,38,0,0,996,1002,770,40,892,64,895,58,664,0,0,773,905,0,0,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,1111,1115,74,664,471,34,1053,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,50,38,0,0,1140,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,0,410,32,32,905,1084,52,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,963,54,303,26,637,48,855,58,822,46,1057,980,66,121,79,60,38,0,0,0,0,770,40,892,64,895,58,664,410,32,32,905,1084,52,52,908,1011,0,0,1101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,46,0,32,32,905,0,52,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,637,48,72,58,822,46,1057,0,985,121,79,60,38,0,0,0,1002,770,40,892,64,895,58,664,0,32,32,905,0,52,52,908,1011,0,0,0,0,0,0,0,0,0,0,1144,1148,0,0,664,491,0,1124,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,6,8,10,6,8,10,1152,0,0,50,38,0,24,770,40,892,64,895,58,46,0,32,773,905,0,52,776,908,44,911,915,918,106,28,812,42,929,644,630,937,942,946,1090,62,955,816,959,50,1093,54,968,800,972,48,72,58,664,46,1057,1097,66,988,79,60,38,0,0,996,1002,770,40,892,64,895,58,664,0,32,773,905,0,52,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,833,0,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,1158,1170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,46,0,32,773,905,0,52,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,637,48,72,58,664,46,1057,980,66,121,79,60,38,0,0,0,1002,770,40,892,64,895,58,664,0,32,773,905,0,52,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,1182,1182,1182,1182,1182,1182,0,0,50,38,0,24,770,40,892,64,895,58,46,1189,32,773,905,1198,52,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,1205,54,303,26,637,48,72,58,664,46,1057,1205,66,121,79,60,38,1216,1224,0,1232,770,40,892,64,895,58,664,1240,32,773,905,0,52,776,908,0,0,1250,1261,1267,1261,1267,1261,0,1267,0,1272,1285,1267,1293,1285,1285,1097,1299,664,1057,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1267,1267,0,0,0,0,0,0,0,0,0,0,0,0,0,1311,50,38,1314,24,770,40,892,64,895,58,46,1318,32,773,905,1321,52,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,1325,54,303,26,637,48,72,58,664,46,1057,1097,66,121,79,60,38,1328,0,0,0,770,40,892,64,895,58,905,1336,32,773,905,1348,52,776,908,1352,1361,1370,0,6,8,10,12,14,16,18,20,22,1378,1389,0,0,0,0,664,1057,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1311,50,38,1314,24,770,97,1396,40,892,64,895,58,664,46,1057,32,773,905,52,776,908,1321,0,1400,44,306,36,377,106,1403,28,321,42,1087,644,1407,1411,630,633,654,660,1090,1415,62,100,30,584,50,770,1420,54,303,26,637,48,1423,72,58,1426,46,0,0,66,121,79,60,38,1057,34,0,0,0,0,0,0,0,0,770,97,1396,40,892,64,14,895,18,58,32,773,905,52,776,908,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,1057,0,0,0,0,0,0,0,0,0,0,0,0,1429,44,306,306,306,306,306,106,650,321,321,321,321,72,30,62,100,100,100,50,30,62,100,100,100,50,26,54,303,34,303,34,303,48,72,58,58,46,46,68,60,60,60,38,46,1432,38,1432,24,24,770,1437,40,892,1440,1443,64,895,0,0,0,0,1447,637,32,97,52,905,905,1451,812,809,0,848,933,937,942,48,951,806,955,816,959,842,803,968,800,972,845,1144,1454,1148,1459,852,1464,1044,1468,855,819,839,988,992,826,429,24,1471,1476,1487,822,0,0,0,0,770,40,892,64,895,58,664,46,1057,32,773,52,776,1491,1496,40,44,306,1501,306,0,1505,106,321,1509,60,1514,0,644,0,0,836,911,915,918,30,38,100,100,0,50,26,54,303,34,303,34,955,48,72,58,803,46,800,68,845,1144,60,38,1459,852,1464,1044,24,855,770,1437,40,892,72,1124,64,895,1476,52,46,644,0,0,32,1518,52,1521,905,0,0,0,0,0,0,0,0,48,1524,1524,0,0,0,0,0,0,0,0,0,0,0,0,1529,1532,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1101,911,915,918,922,926,812,809,929,848,1535,933,937,942,946,951,806,955,816,959,842,803,968,800,972,845,855,819,839,852,826,429,976,24,1540,40,892,64,895,32,1545,52,908,1549,770,40,892,64,895,32,905,1545,1545,32,875,618,884,1011,1554,1559,1559,1559,1559,1566,44,306,36,377,106,28,321,42,20,644,630,633,654,660,1090,62,100,30,584,50,54,303,26,637,48,127,350,130,357,68,124,74,1545,72,58,46,121,1572,60,38,24,1576,58,1580,1580,1580,1588,1588,1588,770,40,892,64,895,58,664,46,1057,32,773,52,776,48,38,40,892,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1596,1596,44,306,36,377,106,28,321,42,20,644,630,633,654,660,1090,62,100,30,584,50,54,303,26,637,48,127,350,130,357,68,124,74,1602,72,58,46,121,79,60,38,24,1576,68,72,58,1606,70,1611,1616,1620,1623,482,1627,1631,0,0,0,0,0,0,0,0,0,0,603,1635,1639,1643,410,1647,1651,1655,609,1659,1663,1667,1671,1084,1675,1679,1602,331,1684,606,1688,1693,1698,1703,1707,1712,1717,1721,1725,1606,1729,1611,1616,1620,1623,482,1627,1631,1733,1736,1739,1639,587,0,1745,0,0,0,44,306,36,377,106,28,321,42,1087,644,1754,630,633,654,660,1090,630,100,30,584,50,54,303,26,637,48,72,58,46,68,60,38,1057,24,0,40,892,64,895,32,0,52,908,0,770,40,892,64,895,32,905,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,58,46,32,121,79,58,664,46,1057,58,664,46,1057,0,0,0,0,0,0,1758,24,97,855,475,1765,32,1768,1772,52,852,1775,109,1318,64,1779,482,1783,670,1786,347,40,1789,1793,1797,1802,1808,1813,1818,1824,1830,1836,1841,1845,1850,1854,1858,1864,1871,1878,1883,1888,1892,1897,1905,1910,1914,1919,1925,1930,1937,1943,1948,1953,1958,1964,1969,1973,1978,1982,1986,1991,1999,2005,24,26,36,30,32,66,74,62,40,44,46,48,50,52,54,124,58,60,62,64,54,44,36,56,121,321,28,74,28,321,70,42,38,32,72,68,2014,109,2017,2030,2041,2055,2069,2083,2096,2114,2126,2139,24,26,36,30,32,66,74,62,40,44,46,48,50,52,54,124,58,60,62,64,54,44,36,56,121,321,28,74,28,321,70,42,38,32,72,68,2014,109,34,2158,2170,2182,0,0,0,0,0,0,36,2194,50,30,654,58,48,26,1137,60,79,2197,42,2201,28,44,62,54,38,106,1090,1420,2204,2207,2210,664,491,2210,1423,2213,2216,2219,2222,2226,2229,2233,2237,2241,2245,2249,2252,2255,2258,2219,2261,2265,2268,2271,2274,2277,2280,2283,2287,60,2291,2294,2297,315,318,121,2300,2305,327,2309,74,36,30,48,26,60,74,2314,42,28,62,54,50,42,0,0,2318,2322,2326,321,2329,2334,2338,2341,762,56,2344,2349,2355,2361,0,0,800,24,97,855,475,1765,32,1768,1772,52,852,1775,109,1318,64,1779,482,1783,670,1786,347,40,1789,1793,1797,1802,1808,1813,1818,1824,1830,1836,1841,1845,1850,1854,1858,1864,1871,1878,1883,1888,1892,1897,1905,1910,1914,1919,1925,1930,1937,1943,1948,1953,1958,1964,1969,1973,1978,1982,1986,1982,64,2366,1910,2371,895,770,773,32,52,852,36,2194,2375,50,136,2378,30,46,2381,2384,2387,162,2390,2393,2396,48,26,2226,60,79,106,42,28,44,62,54,38,2399,2402,106,1420,2406,2409,2412,2207,2415,2418,2422,2425,2428,1057,2432,2436,2440,2444,2448,2452,153,2456,2459,2462,2465,1423,2468,2471,2475,2478,2481,2213,2484,2258,303,2341,2265,2271,2487,2280,74,36,79,1318,306,50,2406,2409,2338,2341,1529,2490,1532,2493,56,2496,2500,2505,2510,2514,2518,429,2523,2526,2529,2533,1620,2537,2540,839,2544,2547,2197,2550,2554,1426,2557,2561,2565,2569,2573,2578,2583,2587,2591,845,2596,2599,2602,2606,2610,2613,2616,2222,2620,2624,2628,2633,2638,2642,2646,819,2651,2654,2657,2661,2665,2668,2671,826,2675,2678,2681,2685,2689,1325,2692,988,2696,2700,2704,2300,2305,327,2309,479,2709,2712,2715,2719,2723,2726,2729,2734,2738,2741,2745,2750,2755,2759,2762,2318,2322,2766,2770,2329,2334,2775,2779,2783,2788,2344,2349,2355,2361,0,0,800,2792,2795,2798,2802,2806,2809,2812,985,2816,2819,2822,2826,2830,2833,2836,806,2840,324,2843,2847,2851,2854,2857,926,2861,2864,2867,2871,2875,2878,2881,2885,2888,2891,2894,2898,2902,2905,2908,2912,2916,2920,2924,2929,2934,2938,2943,842,2947,2950,785,2953,2957,1400,2960,848,2964,2968,2972,2977,2982,2986,2990,24,32,40,52,64,66,915,836,836,2995,2998,3001,3005,3009,1311,2526,3012,2523,3016,3020,3025,3030,1426,2544,3034,3038,3042,3046,3051,3056,3060,3064,3068,2957,3073,3078,3084,3090,3095,3099,852,3103,1783,3106,3110,482,3114,2678,1325,2675,3117,816,806,432,2851,3120,1044,3123,3126,3129,3133,464,3137,3140,1464,3144,3148,3152,3157,3162,3166,3170,855,670,347,3175,3179,1772,1318,855,816,3183,3120,3186,3190,432,3194,3197,942,3201,2496,2500,2505,2510,2514,2518,809,3205,3208,3211,3215,3219,3222,2540,915,3225,3228,3231,3235,3239,3242,0,3245,0,3249,3253,3258,3263,0,0,1060,3267,3271,3275,3280,3285,3289,0,955,3293,3297,3301,3306,3311,1321,3315,812,3320,3324,3328,3333,3338,3342,3346,968,3351,3355,3359,3364,3369,3373,3377,1144,3382,3386,3390,3395,3400,3404,3408,3413,3417,3421,3425,3430,3435,3439,0,833,2738,1733,3443,3447,3451,2759,2762,803,3454,3457,3460,3464,3468,3471,2779,3474,2788,3478,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,32,40,52,64,66,915,836,3239,3228,3242,3225,3482,429,1620,2526,2537,2523,112,839,2554,2547,1426,2544,3485,845,2610,2599,2613,2596,842,3064,3488,2957,2950,1400,2947,3492,3095,3099,3495,3499,3503,3507,826,60,2689,2678,1325,2675,3117,816,806,432,2851,3120,324,3194,3183,3511,3514,3518,3522,3526,3530,3534,3538,1144,3400,3386,3404,3382,3542,852,482,1783,3114,3103,3546,855,1772,347,1318,670,3549,0,0,0,0,0,0,0,0,0,0,0,0,32,3552,40,892,52,776,776,773,40,24,770,482,482,1783,1783,3556,3556,3114,3114,3560,3560,3560,852,852,3106,3106,3106,905,68,0,62,44,121,60,50,68,50,0,68,28,0,46,410,609,1084,603,3468,3564,3457,3569,3471,3573,3573,2533,2526,803,3460,2943,2943,3577,3577,3581,3581,3586,3586,3590,3590,2779,2779,3595,3595,3595,54,54,38,2851,3600,324,3605,2854,3609,3609,3190,3120,806,2843,3613,3613,3617,3617,3621,3621,3626,3626,3630,3630,2857,2857,3635,3635,3635,62,3640,3644,3648,933,3009,3652,2998,3657,1311,3661,3661,836,3001,3030,3030,3016,3016,3665,3665,3670,3670,3674,3674,3012,3012,3020,3020,3020,44,3679,3682,3686,3690,3694,2875,3698,2864,3703,2878,3707,3707,926,2867,3711,3711,3715,3715,3719,3719,3724,3724,3728,3728,2881,2881,3733,3733,3733,28,100,2610,3738,2599,3743,2613,3747,3747,845,2602,3751,3751,3755,3755,3759,3759,3764,3764,3768,3768,2616,2616,3773,3773,3773,48,48,2481,48,48,2957,3778,2950,3783,1400,3787,3787,842,785,3791,3791,2960,2960,3795,3795,3795,50,106,2378,2554,3800,2547,3805,1426,3809,3809,839,2197,3813,3813,3817,3817,3821,3821,3826,3826,3830,3830,2557,2557,3835,3835,46,46,46,2689,3840,2678,3845,1325,3849,3849,826,2681,3853,3853,3857,3857,3861,3861,3866,3866,3870,3870,2692,2692,3875,3875,3875,60,60,3880,60,2297,3883,3880,3887,3892,3897,3902,2305,2700,3907,327,3912,988,2704,3917,3917,3922,3922,3927,3927,3933,3933,3938,3938,2309,2309,3944,3944,121,1772,3950,347,3955,1318,3959,3959,855,3175,3963,3963,3967,3967,3971,3971,3976,3976,3980,3980,3985,3985,3989,3989,3989,72,72,72,347,2665,2665,2554,3994,2654,3999,2668,4003,1426,819,2657,839,4007,4007,58,58,58,3451,4012,1733,4017,2759,4021,833,3443,4025,4025,34,3311,3311,3297,3297,4030,4030,1321,4035,955,3301,4040,4040,100,4046,4051,4056,937,633,4061,4065,4069,4073,1620,2526,4077,2537,4081,429,2529,38,38,4085,4088,2712,4093,2726,4097,479,2715,56,4101,4106,4111,4116,2665,2654,2668,819,4121,4127,4131,4136,4140,922,4145,106,1403,2305,2700,327,988,3311,3297,1321,955,100,4150,4154,4159,4163,467,4168,2396,3311,3297,4030,1321,4035,955,3301,100,26,32,40,52,24,482,1783,3114,852,2957,2950,1400,842,3009,2998,1311,836,1620,2526,2537,429,4173,4177,425,4181,4186,918,2651,2668,2665,2661,2654,819,3103,3114,482,3110,1783,852,4190,4194,4198,4202,4207,4211,3293,1321,3311,3306,3297,955,4215,3648,3640,4219,3644,933,3454,3471,3468,3464,3457,803,54,3225,3242,3239,3235,3228,915,4224,1314,4228,4232,4237,911,4241,4245,4249,4253,4258,1487,4262,2947,1400,2957,2953,2950,842,2596,2613,2610,2606,2599,845,670,1318,1772,3179,347,855,3205,3205,3222,3219,3215,3208,3208,809,4265,4269,4273,4277,4282,1064,2544,1426,2554,2550,2547,839,4286,4290,4294,4298,4303,3514,4307,4159,4311,4315,4150,467,4320,4111,4101,4325,4106,4116,3534,3530,3522,4331,3526,3518,3123,3137,464,3133,3126,1044,74,74,4336,4340,4344,4348,4353,1148,2675,1325,2689,2685,2678,826,2696,327,2305,2300,2700,988,121,3382,3404,3400,3395,3386,1144,3320,3342,3338,3333,3324,812,4357,4362,4367,4372,4378,4383,70,839,4388,4392,4397,4402,4408,4413,4419,4424,0,0,0,0,0,0,0,0,0,836,26,46,34,60,50,38,30,62,28,56,48,36,106,74,58,24,52,64,32,40,321,100,303,54,70,54,1426,2833,988,4430,826,34,66,64,118,72,68,100,100,24,52,4434,97,52,52,52,109,1084,58,44,28,44,36,106,36,36,68,38,38,38,38,50,50,50,40,32,42,36,97,24,1765,54,74,60,60,60,28,74,62,62,30,26,26,54,54,32,48,48,48,46,46,106,106,30,52,4437,4441,2709,2709,2709,60,118,118,118,56,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4445,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,24,32,40,52,64,109,1440,773,842,4454,800,803,479,915,845,839,826,988,806,816,812,809,855,819,852,833,836,911,1144,1044,2529,4458,467,3148,3324,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4472,4472,4472,4472,4472,0,0,0,0,0,0,0,0,44,306,36,377,106,28,321,42,1087,644,62,633,30,660,1090,62,100,30,584,50,54,303,26,637,48,72,58,46,66,121,79,60,38,46,56,24,770,40,892,64,4479,895,4482,4486,4489,4493,4496,32,905,776,776,908,24,770,770,40,892,72,1124,64,895,4500,109,855,335,32,97,905,776,908,48,38,24,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,911,915,918,922,926,812,809,929,4506,806,955,816,959,842,803,968,800,972,845,855,819,839,852,988,992,826,429,0,0,0,24,40,64,773,905,776,908,32,52,855,819,852,0,0,0,0,836,922,875,806,842,803,845,819,839,4510,4520,4530,0,0,0,0,3809,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,836,2885,922,1144,826,855,806,955,839,803,968,845,833,985,429,479,911,1454,842,24,40,773,4535,64,776,52,1440,32,4538,905,0,0,4542,4542,4542,4542,4542,0,0,0,0,0,0,0,0,0,0,0,179,479,179,179,179,836,2885,922,179,179,179,1144,826,855,179,179,179,806,955,842,179,179,179,803,968,845,179,179,179,833,985,839,179,179,179,429,816,800,179,179,4548,4552,0,0,0,0,0,0,4556,770,892,64,895,32,97,52,782,1440,1521,4562,4566,507,4569,4573,4577,4580,4580,4580,4580,4580,4580,4580,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,4586,4590,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,915,922,4595,803,800,845,4600,806,816,842,4604,926,809,848,4608,855,819,839,985,826,24,429,40,64,32,52,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4613,4613,4617,4623,4630,4636,4636,4642,4642,4648,4648,819,819,839,839,4654,4660,4667,4667,836,836,915,915,922,926,926,809,809,848,806,806,816,816,842,806,806,816,816,842,803,803,800,800,845,855,819,839,852,826,826,826,429,4673,4681,4613,4613,4688,4688,819,819,839,839,4693,4693,4693,4693,4700,4700,0,752,4706,4711,4716,2830,4719,4723,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4730,4739,4749,24,40,64,97,52,32,1786,836,479,915,922,926,809,1044,848,806,816,842,803,833,985,800,845,855,819,839,852,826,2885,429,4759,4769,4778,4786,4795,4803,4814,4823,4831,4842,0,0,0,911,4850,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,4854,911,915,4858,922,926,812,809,848,806,955,816,842,803,4862,968,833,4866,800,4870,845,4874,1144,1454,1148,855,819,839,429,4878,985,826,988,852,24,855,819,770,40,52,776,64,895,32,44,48,46,50,54,58,62,4882,4890,4895,996,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,933,937,942,0,6,8,10,12,14,16,18,20,22,839,4899,4902,4454,4905,2197,4908,4912,4916,4920,2547,4924,4927,4930,4934,2544,4937,4940,4943,4566,2554,4947,4950,410,4954,1426,4958,4962,4965,4968,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4971,4971,97,4971,4971,4971,4971,4971,4979,40,4971,4971,4971,4971,4971,4971,4971,4984,4984,4984,109,4971,4993,4997,4971,4971,4971,4971,4971,4984,4984,4984,4971,4971,4971,4971,5004,587,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,24,5011,5018,5011,26,30,32,5024,4979,5011,36,5011,44,48,5030,52,4979,4993,4997,54,62,64,4984,5011,66,587,5034,5039,5045,5039,3324,40,58,64,66,5034,5051,5057,3355,3324,1440,26,30,34,48,50,54,58,58,60,62,74,36,5061,5070,100,40,5078,54,64,5083,26,30,34,36,44,46,48,50,54,58,60,5091,66,70,74,24,5018,30,32,32,4979,5024,40,52,5091,64,5095,5011,28,28,5099,5103,34,5112,5120,5011,40,5078,4971,4971,42,46,46,4971,48,5011,50,50,4971,5127,3355,60,5091,62,64,5083,4971,66,5011,74,74,74,5095,5134,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,5140,97,1451,5150,28,5070,5099,36,4971,44,46,4971,4971,50,4971,4971,58,60,60,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,26,28,28,30,30,30,30,30,30,30,30,30,30,32,32,32,32,32,32,32,32,32,32,34,34,24,32,40,52,64,52,64,773,50,106,26,54,56,36,48,46,60,121,62,30,321,42,72,58,68,34,44,911,127,74,38,5153,2396,124,321,48,32,40,52,64,52,64,106,26,54,56,36,48,62,30,321,42,127,72,68,44,36,38,5156,644,130,32,40,4577,64,64,106,44,36,38,54,121,62,30,42,34,36,38,127,74,58,321,124,40,44,58,34,124,64,64,64,64,66,66,66,66,68,38,70,68,48,68,68,24,40,44,106,28,630,633,654,1090,62,30,54,303,79,124,74,24,62,124,377,106,28,1087,933,660,62,584,79,5159,124,74,64,72,637,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,64,64,64,64,64,64,64,64,64,64,64,64,64,64,72,72,72,72,72,72,72,72,5162,5162,5162,5162,72,72,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5175,5175,5175,5175,5175,5175,0,0,5175,5175,5175,5175,5175,5175,0,0,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5187,5187,5187,5187,5187,5187,0,0,5187,5187,5187,5187,5187,5187,0,0,5083,5083,5083,5083,5083,5083,5083,5083,0,5083,0,5083,0,5083,0,5083,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5018,5018,5175,5175,5183,5183,5078,5078,5187,5187,5083,5083,5195,5195,0,0,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5018,5018,5018,5018,5018,0,5018,5018,5018,5018,5018,5018,5018,0,0,0,0,0,5183,5183,5183,0,5183,5183,5175,5175,5183,5183,5183,0,0,0,5078,5078,5078,5078,0,0,5078,5078,5078,5078,5078,5078,0,0,0,0,5083,5083,5083,5083,5057,5057,5083,5083,5083,5083,5083,5083,5057,0,0,0,0,0,5195,5195,5195,0,5195,5195,5187,5187,5195,5195,5195,0,0,0,5201,0,2,2,2,2,5205,2,2,5209,5213,2,2,2,2,2,2,2,2,2,2,0,0,0,5218,1,1,1,1,1,1,1,1,1,1,1,0,0,0,2,0,0,5224,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,5230,0,0,2,0,0,0,0,0,0,5234,0,1,1,0,0,5237,0,0,5241,0,0,0,0,0,0,5248,0,0,0,5255,2,2,0,0,0,0,0,0,0,0,0,0,5261,0,0,5267,5267,5274,40,0,5280,0,0,0,0,0,0,0,5285,0,0,0,50,0,0,0,0,0,0,0,0,0,0,5291,0,0,0,0,0,24,32,52,70,5024,0,0,0,0,0,0,0,0,0,5296,0,0,0,0,0,0,0,0,5301,0,0,0,0,0,0,0,0,0,5305,0,5309,0,0,0,5314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5320,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5325,0,0,0,0,0,0,0,0,0,0,0,0,0,5329,0,0,0,0,0,0,0,0,0,0,4971,5333,0,0,0,4971,0,0,0,0,2,0,0,0,0,0,4971,0,0,0,0,5337,2,0,0,0,0,0,4971,5078,0,0,0,4971,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5342,0,0,5347,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5352,0,0,0,0,0,0,0,0,0,0,5358,0,0,0,0,0,0,0,0,0,0,5325,0,0,0,0,0,0,0,5362,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5367,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5372,0,0,0,0,0,0,0,0,0,5320,0,0,0,0,5377,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5381,0,0,0,0,0,0,0,5386,0,0,0,0,0,0,0,0,0,5391,0,0,0,0,0,0,0,0,0,5396,5401,5401,0,0,0,5407,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5413,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5426,5386,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5432,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5248,0,0,5437,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5442,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5448,0,0,0,0,0,0,0,0,0,0,0,0,0,5453,5459,0,0,0,0,0,0,0,5453,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5471,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5476,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5325,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,26,28,28,30,30,30,30,30,30,30,30,30,30,32,32,32,32,32,32,32,32,32,32,34,34,36,36,38,38,38,38,38,38,38,38,38,38,40,40,40,40,44,44,44,44,44,44,46,46,46,46,46,46,46,46,48,48,48,48,48,48,50,50,50,50,50,50,50,50,52,52,52,52,52,52,52,52,54,54,54,54,58,58,58,58,58,58,58,58,60,60,60,60,60,60,60,60,60,60,62,62,62,62,62,62,62,62,64,64,64,64,64,64,64,64,64,64,66,66,66,66,68,68,68,68,68,68,68,68,68,68,70,70,70,70,72,72,74,74,74,74,74,74,38,62,68,72,24,60,24,26,28,30,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,64,64,64,64,64,64,64,64,64,64,64,64,64,64,72,72,72,72,72,72,72,72,16,18,20,22,0,0,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,0,0,32,32,32,32,32,32,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,52,52,52,52,52,52,5386,0,52,52,52,52,52,52,2,5480,64,64,64,64,64,64,64,64,0,64,0,64,0,64,0,64,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,24,24,32,32,32,32,40,40,52,52,64,64,52,52,0,0,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,24,24,24,24,24,0,24,24,24,24,24,24,24,0,40,0,0,0,32,32,32,0,32,32,32,32,32,32,32,0,0,0,40,40,40,40,0,0,40,40,40,40,40,40,0,0,0,0,64,64,64,64,58,58,64,64,64,64,64,64,58,0,0,0,0,0,52,52,52,0,52,52,52,52,52,52,52,0,0,0,5485,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5491,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,5496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5501,0,0,0,0,0,0,0,0,0,0,5506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5509,0,5255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5514,0,0,0,5519,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5524,0,0,0,0,0,5529,0,0,0,0,0,5534,0,0,0,5540,5544,5547,5550,46,5553,50,5557,1134,68,2406,30,1786,44,62,5561,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5564,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5568,0,5573,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5578,0,0,0,0,5564,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,1,1,0,40,892,5583,5587,66,2819,5590,5594,5599,70,2891,5602,46,28,30,48,40,892,5583,5587,66,2819,5590,5594,5599,70,2891,5602,46,28,30,48,6,30,10,12,14,16,18,20,22,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,66,0,0,0,0,0,5606,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5612,0,0,0,0,5617,0,0,0,0,0,0,0,0,0,5622,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5629,0,0,0,0,5291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5635,0,0,0,5629,0,0,0,0,5642,0,0,0,0,0,0,0,0,0,0,0,0,0,5647,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5651,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5325,5655,0,0,0,0,0,0,0,0,5285,0,0,0,5367,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5661,5661,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5666,0,0,0,0,5671,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,5676,5682,0,0,0,0,5688,0,0,0,0,0,0,0,0,0,0,5693,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5699,0,0,0,0,0,0,5291,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5476,5704,5704,0,0,0,0,0,0,0,0,0,0,0,5708,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5712,0,0,5717,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5721,5721,5721,5721,5721,5721,5721,5721,5721,5721,5721,609,609,0,5721,5721,0,0,609,609,5721,5726,0,609,609,609,0,5464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5693,0,0,0,0,0,0,0,0,5730,0,0,2,2,0,0,0,0,0,0,0,0,5721,0,0,0,0,0,0,0,0,0,0,5682,5682,5682,0,0,0,5721,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5721,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,272,272,272,272,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,5682,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5735,5739,5744,5749,5757,5763,5769,5777,5783,5790,5795,40,5803,5810,5815,5823,5831,5837,5841,5848,5854,5860,5867,5871,5877,5882,3468,5886,3386,5891,988,5898,5903,5908,5913,670,5921,5921,1318,5925,5933,5925,5937,5942,5950,5958,5969,0,5735,5739,5744,5749,5757,5763,5769,5777,5783,5790,5795,40,5803,5810,5815,5823,5831,5837,5841,5848,5854,5860,5867,5871,5877,5882,3468,5886,3386,5891,988,5898,5903,5908,5913,670,5921,5921,1318,5925,5933,5925,5937,5942,5950,5958,5969,0,46,46,46,54,58,24,62,38,38,44,44,74,74,5018,48,24,0,66,68,68,66,1432,1432,5978,32,58,52,4971,42,4971,0,0,5987,5987,5992,5992,5051,5051,5997,5997,6003,6003,6007,6007,6011,6011,6016,6016,6021,6021,6028,6028,6034,6034,6039,6039,2599,2599,2950,2950,6045,6045,52,52,3457,3457,2668,2668,6049,6049,6054,6054,4500,4500,1733,1733,4237,4237,6058,6058,6062,6062,6066,6066,6076,6076,6080,6080,6066,6066,6066,6066,6080,6080,6076,6076,283,283,6094,6094,6076,6076,6076,6076,6102,6102,6066,6066,6076,6076,6076,6076,6111,6111,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,603,1635,1639,1643,410,1647,1651,1655,609,1659,1663,1667,1671,1084,1675,1679,1602,331,1684,606,1688,1693,1698,1703,1707,1712,1717,1721,1725,1606,1729,1611,1616,1620,1623,482,1627,1631,0,0,0,0,0,0,0,0,0,0,855,6120,6124,6129,6133,6139,6146,6150,6154,6159,6164,6170,6174,6178,6182,6189,6195,6139,6182,6199,3175,6204,6182,6209,6182,347,6213,6218,6182,6226,6230,4506,6182,6182,6234,670,1447,6238,6243,6182,6248,6253,6257,6262,6267,6271,6276,6281,6286,6290,6294,6298,6302,6313,0,0,0,0,0,0,0,0,0,6318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6332,6336,6340,6344,6348,6353,6357,6361,6365,6369,782,6374,6378,6382,6387,6391,6396,6401,6406,6410,6415,6420,6426,0,0,0,0,0,0,0,0,0,992,6431,6435,6439,6444,6449,4430,0,6453,6457,6461,6465,6470,6475,6479,0,6483,6487,6491,6495,6500,6505,6509,0,6513,6518,6523,6528,6534,6540,6545,0,6550,6554,6558,6562,6567,6572,6576,0,6580,6584,6588,6592,6597,6602,6606,0,6610,6614,6618,6622,6627,6632,6636,0,6640,6644,6648,6652,6657,6662,6666,0,2806,2830,425,432,3162,464,836,407,413,410,52,3468,6670,6673,2851,429,3400,3338,988,6676,5937,6682,24,335,6688,6694,6267,670,6704,6713,5933,6704,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,5682,220,5682,6720,6725,6725,6725,6725,6725,6725,6734,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,24,24,40,40,64,64,32,32,52,52,836,915,2998,3228,2995,3225,3009,3239,1311,3242,826,1044,2678,3126,2675,3123,2689,464,1325,3137,806,816,324,3120,2840,2840,3183,2851,432,2854,3194,842,2950,2947,2957,1400,429,800,803,2526,70,3457,2523,2792,3454,1620,2806,3468,2537,2809,3471,845,2599,2596,2610,2613,855,855,670,670,1318,1318,819,2654,2651,2665,2668,852,852,1783,482,3114,50,2816,836,3009,0,0,0,0,0,0,0,0,0,2,24,24,40,40,64,64,32,32,52,52,836,915,2998,3228,2995,3225,3009,3239,1311,3242,826,1044,2678,3126,2675,3123,2689,66,66,66,66,816,324,3120,2840,2840,3183,2851,432,2854,3194,842,2950,2947,2957,1400,429,800,803,2526,2795,3457,2523,2792,3454,1620,2806,3468,2537,2809,3471,845,2599,2596,2610,2613,855,855,670,670,1318,1318,819,2654,2651,2665,2668,852,52,1783,482,3114,50,2816,836,3009,985,2819,2830,2833,0,0,0,0,0,0,0,0,0,0,26,54,48,34,30,62,50,46,36,44,38,42,56,70,124,321,121,58,74,28,60,24,52,32,4535,905,1518,908,139,603,410,4454,5030,6670,40,64,371,66,106,6743,4927,0,0,0,6746,6753,6765,6777,6783,6795,6807,6814,6826,6832,6845,6857,6869,6880,6894,6908,6920,6926,6932,6943,6954,6959,6969,6975,6981,6992,7000,7008,7016,7024,24,97,855,475,1765,32,1768,1772,52,852,1775,109,1318,64,1779,482,1783,670,1786,347,40,0,7030,2017,2030,2041,2096,2126,7041,7058,7072,7090,7102,7113,7127,7141,7154,7167,7185,7203,7215,7229,7243,7262,7274,7285,7297,7308,7319,7327,7338,7347,7361,7378,7394,2182,1858,1864,1883,1930,1937,1948,1999,7405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2792,3126,3208,3225,773,7412,776,7416,4934,7420,7424,4943,7428,7431,7435,7440,1437,1429,7445,7449,54,62,44,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2995,2678,2675,2854,2947,429,2526,2523,1620,2537,2596,819,2654,2651,2665,2668,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7454,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7460,7467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,26,0,44,0,46,0,28,40,34,0,48,60,54,0,32,0,38,0,52,0,58,0,30,42,36,0,50,62,56,0,0,0,0,0,64,0,66,0,0,0,0,0,70,0,0,0,0,0,0,0,74,0,0,0,0,68,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5688,5606,0,0,7473,7478,7482,0,0,0,0,0,7487,0,0,0,0,0,0,0,0,0,7491,0,0,0,0,0,5442,0,0,0,0,7495,0,0,5688,0,0,0,7500,5426,0,7504,7511,7516,7521,5218,7528,5655,5491,7478,7533,0,0,7538,7542,5476,7548,7555,7558,0,0,0,0,5314,7565,5708,7478,7571,0,7576,7582,7588,5476,7592,7599,5666,5386,7605,0,0,0,0,7500,0,0,0,5381,5459,7495,7588,5476,7610,7616,5413,0,0,0,5347,7622,5476,5301,5325,7628,7632,7637,0,0,0,7643,7500,5296,7648,0,7576,0,7653,5237,7658,7663,5296,7667,7538,7672,5629,7675,7681,7687,7628,7692,7696,7700,7706,7710,7715,7653,5629,7719,0,7723,5666,7730,0,0,5296,7734,7738,5320,0,7742,7658,0,7746,7752,7757,7628,7763,7667,5453,5661,5337,0,0,5617,0,5666,5301,0,7632,0,5325,0,0,0,0,7768,0,7774,7779,7786,7790,0,7795,5342,0,0,7790,7800,0,5391,5301,0,7599,5568,7805,5655,0,0,0,5224,7811,7582,7817,0,0,5401,7592,5329,5426,0,7823,5661,0,5358,5381,7588,0,0,0,5337,5426,7706,0,7828,5564,7632,5280,5381,0,0,7834,7839,0,7843,0,0,7849,0,5301,5396,7853,7858,0,7667,7864,7867,5476,5291,7872,5407,0,7710,5248,7710,0,7672,0,7516,5291,7588,7675,7877,0,0,7605,7883,5407,7576,7888,5661,5301,0,7710,5237,5407,0,5325,0,7893,5573,7898,5568,0,7904,7779,7908,0,7849,0,5291,5666,7914,7920,7924,7672,7930,7864,5329,0,0,7935,7495,7940,7946,7628,0,7952,5476,5274,7817,7957,0,5333,5391,0,7962,5642,5381,7967,0,5699,7482,0,7972,7977,7982,7986,5730,7990,0,5485,7663,0,7864,5573,5661,5573,7994,0,0,7811,7588,5337,0,7667,7999,7500,5391,0,0,8005,0,7849,5671,7834,5688,5476,5396,0,8010,8015,7883,7565,8022,5708,5564,8028,7849,5337,5396,0,8033,8039,8044,5396,5301,8048,8052,8057,0,7487,0,0,5333,7516,5476,5730,0,7500,5726,7696,0,0,0,0,0,0,0,8028,7994,5661,5377,8062,8068,8073,8077,7482,0,0,0,0,0,0,8082,8087,7904,7491,5325,7853,7653,7592,7582,7752,5329,5448,8039,8093,0,5606,8099,0,0,0,0,0,0,0,7491,5391,5529,5501,8104,8110,7888,8115,7864,5661,0,7864,8119,7752,7800,7982,5717,5367,7800,5358,5325,5730,7972,0,0,0,0,8126,7663,0,0,8131,7883,8126,8073,8136,5301,7675,5519,0,0,0,0,0,7582,5377,8140,8144,8149,7972,7663,5237,0,7867,0,0,0,0,5573,5325,8154,7738,7834,7500,0,8159,0,0,0,0,7491,7521,0,5367,7571,5476,7839,0,0,5274,7658,8164,5476,7972,5476,5274,8170,5325,7653,0,8174,5301,0,5347,8179,7653,7834,0,0,7834,7653,0,7710,8184,8154,0,5358,5367,5534,8190,0,5337,8196,7500,8028,5358,8052,5485,5708,5708,0,0,0,0,8170,0,7571,8201,5381,7663,8205,7839,8048,0,0,0,0,8077,7511,8211,8217,0,5358,8222,0,5573,7653,5606,8227,0,0,0,0,5564,7888,7628,7491,8005,7653,7908,0,7908,0,7610,0,8201,7710,5661,8077,7843,5476,0,7800,8015,5367,8234,0,0,5325,8239,7491,5325,7482,0,8245,5476,5661,8052,5218,7653,7877,7658,5629,7972,8222,8249,7952,7877,5666,0,5237,0,0,8255,8261,8267,0,7610,5564,0,0,7786,0,0,5396,8039,0,5524,8272,0,5261,8277,8077,5564,5524,7867,8282,0,0,5237,7500,8005,8249,8287,0,5325,8293,7675,5476,7628,5476,7834,0,8297,8052,8302,0,5337,0,7528,5358,0,7828,0,8201,0,7487,7696,0,7790,8267,0,0,8255,0,8174,0,0,7495,5381,0,7696,7888,0,0,0,7888,0,0,7867,0,7742,5448,8179,8307,0,5352,5476,0,7571,8312,7867,8316,7528,5337,7930,7610,0,0,0,0,0,0,7738,5347,7800,8322,7576,7834,0,5329,0,5514,7746,0,7872,8048,5496,5386,0,5442,0,5320,7858,0,8005,8302,0,5274,7972,0,0,0,5401,8329,7500,5651,5296,7715,0,8334,5476,8131,5629,7706,8267,5320,5564,5476,8245,0,5401,8340,8179,8170,5329,7588,5362,5708,8345,7542,0,0,0,0,8297,7914,8349,7653,8354,7696,5708,5274,7538,0,0,5347,0,8354,7582,5534,8359,8249,5453,5509,5651,8077,5726,8365,5401,7972,5209,8370,7500,8052,8329,7972,8010,8104,8131,0,8104,8375,7605,8087,8239,5381,5661,5693,5381,8164,8211,0,5717,5642,8381,5476,7843,5218,7482,0,7588,0,7516,8387,7790,8391,8397,7628,7491,8131,5651,7667,7752,0,0,7828,7610,0,5426,8402,8255,7746,8249,8196,0,5509,8407,7663,0,8411,8417,5401,5309,0,7805,7571,8073,0,5642,8422,5325,0,8039,5325,7994,0,0,7500,8184,8267,0,7904,5578,8170,7994,5237,7706,5476,5661,7839,5688,8068,5453,7706,5325,0,0,0,7828,8149,8427,0,0,7482,8433,5325,5296,5437,5347,5386,8170,8196,5491,0,5381,7500,0,5218,8307,7710,0,8438,5464,5342,7990,8443,8052,7558,5529,8447,7710,5401,8345,7710,0,7521,7924,5396,8451,5688,8149,5564,8217,8211,7843,5480,7653,8211,8073,0,7706,7653,0,7610,0,7681,8149,7706,8365,5651,8456,8427,7521,8461,0,7706,0,5329,0,8267,7864,7768,8438,7994,7768,5320,8438,0,0,8391,5642,5291,5301,7908,8461,8467,8245,0,8149,7957,7542,5708,8473,0,8211,8479,0,5708,0,5237,5564,0,8484,8489,8316,5726,7864,0,5325,5325,5396,5285,8397,8473,8249,8126,7994,5325,5708,7628,8052,8217,8494,8447,8498,0,5301,5329,5453,5396,8277,0,7672,0,5651,7628,0,8170,0,0,8427,0,5476,0,5325,5358,0,8504,0,8010,5717,7692,5381,7622,0,0,8316,0,7839,5358,8509,5301,0,7962,7495,0,5325,8514,5274,5280,7864,7790,0,0,7853,0,8255,0,0,7478,0,8519,5377,5401,5358,0,8211,5529,8527,5666,0,5241,5573,7800,7610,0,7482,0,5241,7542,8375,8077,5476,0,5325,5325,8533,7628,8484,7811,8539,0,8093,5325,8543,7687,7839,7883,8239,5476,7999,5274,7710,7839,7710,7834,7843,8307,7610,7877,0,8422,5496,7663,7710,0,7616,5496,7853,0,8422,5496,5642,8548,0,0,8255,5401,8196,5329,7834,0,0,5476,7877,7592,5419,0,5485,0,7582,0,5676,7653,8539,0,0,8062,0,7710,8438,5358,0,8329,5329,0,5617,5358,0,5358,0,5274,7994,5432,7696,5676,0,5655,7930,5476,7628,5726,8365,5651,8447,7487,0,0,0,5261,7658,7715,5485,8411,8164,8554,8179,0,0,0,0,0,8539,8316,7738,5426,0,7888,5237,8316,0,5377,5261,5407,7972,0,7482,0,0,7811,7548,7706,0,0,5661,5661,8115,7994,0,0,7738,8427,8381,0,0,0,5476,8504,5320,5496,5314,0,7746,5325,7565,8456,7663,8010,5708,8196,5280,7675,0,0,8255,0,8316,0,5337,0,8543,5564,5573,7605,0,5573,0,8560,8566,5291,0,5496,8571,8577,5301,7500,0,7628,8370,5301,5730,7817,7990,8467,8407,5296,0,8582,7592,8365,5564,7867,7930,5237,7839,8334,0,5237,5688,5464,0,0,5442,8589,0,8407,8407,8594,8514,8093,8087,7828,8179,5459,7935,5352,0,8170,5325,8277,5606,8467,0,7774,7706,7628,5401,0,0,0,0,7628,5325,7994,5651,8402,5661,7500,5237,5688,5296,0,7628,7867,8598,7805,7888,7957,0,8334,7658,7576,7482,0,7893,7914,8467,5476,7643,7719,7491,8438,5501,7849,0,7482,8604,8447,5708,8527,5401,8227,7877,7538,8539,0,5329,0,5476,5396,0,8422,7864,5396,7962,8447,5401,5301,5274,7834,7610,8514,5407,0,0,8411,7628,8154,7622,5442,8370,0,5333,5381,7994,5476,7811,7849,8179,5347,7482,5661,0,7632,8093,7542,8154,0,8494,0,0,5717,0,5459,5218,5325,8608,8613,5237,8617,7500,5476,7982,5325,5726,5606,0,7542,7715,0,7790,7482,5671,7904,5274,7790,7565,8387,0,8022,7994,5529,0,8625,8484,7864,5209,8402,5358,8631,0,8577,0,0,7908,0,8370,0,7605,5248,5274,8190,0,5688,8456,7952,7696,7817,7723,0,8149,5301,8033,8589,8073,8494,8057,0,7888,0,8594,7738,7972,8473,7786,0,0,5224,7972,7582,7558,7999,8028,7516,8312,5325,8438,7994,7935,8131,0,8613,0,8201,0,8005,8149,7653,7616,7972,5381,5426,5661,8329,5261,7542,5661,7588,8370,5651,7643,0,0,5296,8136,8022,8543,7511,5381,5464,5347,0,7982,8307,8154,5717,5642,8604,7952,5407,5407,5442,5309,7538,5296,8514,8179,7672,7920,7924,8170,8170,5699,0,0,8635,0,8484,5396,5274,5661,0,7588,7893,8604,7491,0,0,0,8196,5296,8068,0,8322,5237,5476,0,8249,8641,5347,8052,7839,8533,8647,7632,5651,0,0,0,5661,8073,5296,7706,5661,0,0,8073,7542,8282,5285,5291,8653,8022,8170,7864,8077,0,5459,5459,0,7952,0,7706,7805,0,7628,8196,0,7990,5564,0,8539,5274,7952,7849,8658,7653,8316,8073,5261,5358,5329,7491,8447,8663,8589,7757,5329,7853,5401,7990,8589,5655,8663,5401,7790,0,7542,7990,8670,8255,5358,0,7482,0,5261,7588,7730,7872,5314,5329,8093,5496,0,7811,0,0,7977,8282,7982,8307,0,7957,0,5676,7990,5612,5717,5578,5693,8676,7605,7834,8334,5496,0,0,0,0,5476,0,0,5337,8234,5642,5642,5391,7817,7706,8682,0,0,5730,5651,5564,7982,8687,7883,0,0,7834,0,0,5726,0,8227,8391,0,8222,0,0,0,5274,0,0,0,7790,7843,7823,8456,8033,0,0,8694,0,7867,5491,0,8653,5459,5329,0,0,0,0,7628,7658,7877,7800,7746,7811,0,8699,7811,5730,5485,8073,5274,5301,5309,0,8211,8647,8052,7924,0,5274,7588,7994,7935,0,5309,8554,7849,0,8635,8093,0,8217,0,7734,8354,8073,0,5296,5459,7834,8170,5285,7908,8577,7628,5377,0,7478,8062,7675,8052,0,0,0,0,5464,5564,0,0,5471,0,8705,5285,0,7528,0,0,8467,5291,5396,0,7898,8711,0,0,7994,0,5712,7487,8411,5329,0,0,0,7849,5617,7672,5213,8164,5688,8577,7817,5274,5237,0,0,5453,0,0,0,5661,5666,0,8498,5314,7893,7571,5459,5325,7849,5325,0,0,0,0,0,5647,5274,7834,5629,7738,8539,5291,8608,7653,5642,8170,7872,7898,0,8077,5606,8716,0,0,5337,7746,0,0,8716,5426,7706,0,8682,8316,7696,7977,8196,7790,7864,5301,7710,0,7849,5381,5325,0,8721,5730,5671,0,5501,7719,0,5325,0,7723,7849,0,5274,5381,5396,5358,0,0,5655,0,0,5391,0,8022,7972,8543,0,0,0,7843,5358,5274,7898,5491,0,0,7920,7877,5358,7588,8154,8727,7616,8732,5419,5362,7786,7565,0,0,7738,8402,0,8407,8297,8739,7935,8245,7982,8402,5329,5676,5329,7542,8174,5655,0,5301,8340,7706,0,0,5377,8093,5726,5401,5329,5320,7817,5578,8473,5309,8745,0,0,8548,7734,5309,8473,5407,8234,0,0,0,8577,5301,7632,7914,7746,5407,8539,7930,0,5401,0,8329,8751,5699,7610,8397,0,5291,0,5617,0,5661,0,5347,8140,5476,7495,5301,8354,0,5476,0,5325,8756,5661,0,5209,7990,5296,5726,0,0,0,8631,0,8329,0,7914,5568,7867,8302,7500,8387,8312,8443,5337,5209,5401,5309,5367,5476,7867,5651,5285,0,7710,5391,0,7482,5305,5476,0,7719,5309,7491,0,5699,7935,8375,0,5241,0,0,0,0,0,0,8402,0,8345,5519,8179,8732,7687,0,5325,8073,0,0,7843,8422,0,8093,7864,8494,5401,8762,8514,5347,7994,8676,7908,7663,5437,5296,5476,5305,5209,8543,5413,0,5358,5301,5329,7632,0,7883,0,5699,8033,0,7558,8484,5568,5325,8093,0,8670,8509,7872,8287,8766,0,7957,8222,0,0,8222,8164,0,5666,0,0,5726,0,0,7972,8772,8164,8443,7616,7790,8716,8411,0,0,5629,7653,5372,8164,0,0,7734,0,8772,0,8297,8381,8577,5459,5459,7548,0,7672,7883,0,7952,5325,8447,5476,8184,7628,7599,8039,8115,7834,8402,5274,5285,5320,5564,8456,0,0,0,0,8201,8411,7710,7730,5476,8411,0,8217,5347,0,7637,0,8190,7628,7628,0,0,0,0,7738,0,0,0,0,8170,5661,5237,5407,0,7533,7738,8190,5274,5453,0,0,0,0,0,5651,5325,8131,7752,0,7599,5337,8115,5358,5651,0,5661,8010,5476,0,5666,7616,0,5309,5617,7482,5325,0,7588,0,0,0,7599,7746,7588,5476,5437,7719,5325,7632,0,7790,7687,5342,7972,8411,5301,0,0,0,0,0,0,0,8255,8721,0,5655,0,8077,7667,5661,5642,5661,0,8766,0,0,7610,8033,5651,5699,0,8136,0,0,0,7588,5661,8073,5693,8498,0,8519,7935,7653,7883,8052,0,0,0,7914,5651,7877,8514,7653,8402,5291,7849,7893,5391,7935,7914,7555,5564,7800,0,0,0,0,5476,5442,0,0,8222,5666,7990,7828,5358,5342,5717,5358,5476,5274,8447,7616,7605,8104,8527,7500,8647,7478,8239,8777,7967,0,8411,5642,7811,5213,5448,0,8217,5485,5237,0,8039,0,0,7834,5529,5573,7946,7616,0,0,0,5401,5274,7811,0,0,5401,5261,8777,7930,5407,5320,8010,7828,0,7904,7628,0,0,7700,5666,5476,5491,0,7877,8783,0,5309,5362,0,0,0,8239,5712,8484,0,7511,7653,0,5218,5309,7710,8504,8789,0,0,8062,5606,0,0,0,0,8073,7723,0,5320,8402,5296,8783,8307,8625,7864,7994,5501,8772,0,8099,7849,5218,5296,0,7628,8548,7834,5688,7999,7592,7658,0,0,0,0,0,0,8422,7516,7592,7687,0,7849,0,7500,0,0,0,8402,8745,5305,0,0,5413,5301,0,0,7834,5717,5305,7930,5676,5459,8670,0,7478,7834,0,5291,0,7658,7653,0,7828,5325,5381,0,0,0,5661,7986,8010,8154,5237,8077,5651,8297,8498,7482,5651,0,5291,0,8316,5509,0,5301,8670,8571,8795,8282,0,7681,0,7930,7491,7858,7877,7982,8800,0,8345,8104,7542,7930,0,5501,0,5480,5480,7571,8093,0,7952,0,5391,5730,8577,0,7487,0,7930,8504,8762,8073,7779,7839,5358,5325,8548,0,7849,5301,8467,8354,0,7877,8539,5666,5309,5248,7487,7734,5476,0,0,7811,8272,8613,7616,7616,7648,7482,5391,7482,5291,8068,8190,0,0,7867,7605,0,0,5337,0,0,5237,5391,5476,5305,0,0,7982,7675,7478,0,5485,8805,5391,8447,0,7738,0,5573,7877,8647,7757,5386,5386,8811,8131,7628,5730,0,0,0,7982,7924,0,5274,0,8164,7957,7999,8179,8239,8647,8370,8010,7653,7883,8427,0,7738,7605,8282,5407,7628,5314,5337,5301,0,0,0,7877,5401,0,0,8484,7734,5688,7817,5209,7628,0,0,8705,8816,5712,0,8484,0,7500,5255,8411,7790,0,0,0,0,5476,5337,0,5255,0,8222,5296,0,0,0,8201,8211,7986,5647,7478,5301,8093,0,5325,7667,0,7888,5291,5491,7930,0,0,0,0,0,7986,8411,5342,5647,5459,0,0,0,0,0,7888,0,0,5342,5358,5647,7719,8179,5647,7746,0,7672,0,0,8427,5358,5325,8433,0,5301,0,0,5342,0,5320,0,0,7864,0,0,0,0,7723,7632,7482,8068,7786,7628,5666,7930,8028,7858,5401,5688,5401,0,0,5301,5693,8631,7576,0,5426,8608,8010,5352,8126,5480,0,7864,8126,7706,5573,7817,8316,7653,7558,7977,7811,5426,7828,8349,7582,7864,8821,8577,8119,7742,8539,7628,8732,8164,0,5629,8827,8647,8617,5329,8316,5241,5301,7730,0,0,0,0,8625,5476,7653,5661,7632,7511,0,7883,0,0,8772,0,0,0,5337,7823,0,8461,7667,7710,5568,5509,5301,7511,8577,5367,0,8345,7628,8170,8110,8329,0,8451,8179,8833,5218,5564,8821,0,5237,5320,5285,5285,7653,8015,0,0,8839,8033,8010,5325,0,0,7786,7478,0,7867,5320,0,5480,8762,7487,8297,7715,5564,8093,5325,5519,8190,8716,0,5381,5301,8245,5325,0,7672,7914,5301,7843,8845,7482,0,8196,7867,7935,5337,8201,5464,5699,8277,0,0,7500,7898,7990,7706,0,8119,0,0,7576,5464,8422,7982,7930,0,0,0,5325,7786,0,5524,7637,7538,7605,8422,8422,5401,7843,0,0,0,5491,7663,5274,0,5237,0,8422,8179,5514,0,5381,5501,8658,0,5642,8479,7977,5666,7834,5329,8422,7616,7920,7632,5301,5432,0,7790,8126,0,0,5642,7849,8104,7982,8381,5442,5301,5629,7811,5358,0,7935,7924,8245,5708,5529,0,0,0,8297,0,5372,5509,7738,8222,0,7834,0,7605,8387,8010,5337,0,8422,8249,5617,5309,7786,7706,8255,5285,7834,0,8795,7746,5274,8589,8136,0,7811,8816,7558,0,5291,5237,7706,8608,5712,7786,0,0,8010,5726,7877,8598,5358,7790,8851,7786,8062,7811,7632,8560,7977,7768,0,8211,8201,7786,0,7715,7663,7616,8598,7843,5381,8539,7977,0,8751,8504,7834,8762,8539,0,7843,5274,0,5426,7930,8345,5651,7706,7706,8494,5617,7628,7977,7558,5642,7616,7924,5325,5381,7653,8438,7957,8509,5642,7834,7962,7952,5464,7616,8119,5496,5401,0,8190,8732,7935,8447,5726,7622,8154,7628,7823,7982,8554,0,7542,5617,5419,5708,8349,8211,8427,8411,5285,5291,8789,5358,5391,5301,5305,8577,7763,5305,5237,7877,5726,5285,8154,0,7500,7700,8316,5730,7628,0,0,8073,8857,0,8287,0,5381,0,5426,5296,5391,0,0,0,5642,7628,7898,5381,5578,0,5617,8539,7582,7839,5564,8438,5655,5655,0,7834,7757,8062,7817,0,7672,8625,7986,8402,8048,8451,7834,0,5381,0,8039,5612,5509,5241,8077,7757,8277,7738,8402,0,8234,0,0,0,0,7746,0,8438,8170,7628,0,7999,8115,0,0,7533,7849,8131,8062,8149,7478,8287,0,5329,8140,5401,0,8255,5320,0,0,8433,0,5296,7588,8519,0,7610,0,5386,8772,7883,7994,8811,8245,5301,0,5274,7533,7986,0,5453,8359,7616,5274,5347,5305,7904,0,5564,5358,0,8154,5476,7511,0,0,5676,8154,7558,8307,7864,0,7834,8863,8762,7706,7628,7768,8154,8077,7946,8170,5617,0,0,5352,8391,8340,7957,5301,8104,0,8402,5261,0,7706,0,8277,8093,8239,8705,7628,5386,8287,7706,5476,8184,0,5407,8387,0,7805,0,0,0,5358,7883,8312,8184,7972,8783,5606,5606,8110,5476,8577,8345,7849,7723,5301,0,5209,7588,8467,8387,8762,5509,0,7582,5337,5296,5407,7872,8211,8170,0,0,8345,5342,8277,7643,8322,0,7888,0,8136,8179,5377,7500,8484,5464,7706,5381,7790,7834,0,7972,8422,0,7663,8334,8777,5629,8869,7643,7706,5573,5612,5314,8417,5647,8443,7957,7622,5301,7800,7786,8433,5396,5712,0,5401,8479,5261,7839,0,0,7972,7904,8402,5688,0,7610,0,7893,8039,7558,8484,7864,0,5291,8062,5285,8498,5642,8316,5496,5337,5320,5642,5717,7811,7843,5291,8033,0,0,7914,0,8391,8391,0,8519,8267,0,5309,8287,0,8772,0,7723,0,7558,0,7628,7558,8316,0,8255,0,8170,5347,5476,8164,0,0,7487,0,8048,0,8249,7952,0,0,8370,8255,8287,5699,8217,5301,7904,5381,0,7632,0,8267,0,7982,7482,0,7972,5401,0,8811,5407,7576,7605,7692,8136,8217,8115,7924,7605,7817,5476,0,0,8519,8149,8504,8164,0,8136,8604,0,0,5476,5291,5358,7558,7667,5442,5296,7710,7972,7834,0,0,8099,5224,7999,7653,7628,5491,7999,7893,8302,8093,7738,0,8211,7491,8222,8005,7795,7823,5717,0,7710,0,5612,7839,7576,7658,7908,8196,0,8762,8604,7811,0,8159,5241,7542,0,0,7994,0,0,5237,8136,7734,8359,8170,0,0,0,7533,7738,7542,0,8164,7632,7982,5448,0,7734,7763,0,8851,8349,5320,8093,5666,5419,8873,7972,7757,0,8589,7982,8010,5712,5342,5407,5629,5661,0,5305,8010,5666,0,8554,8093,0,8827,8267,8249,7628,7972,7706,7883,8154,7994,8772,7719,5661,5448,8022,0,7511,5476,0,5666,5301,7893,8577,7516,5274,5642,0,5432,5274,8261,5622,0,7883,8411,8093,8062,7706,8239,8282,5651,7982,7982,0,8604,8456,7723,8391,8484,8201,5712,8589,5712,0,0,5301,7768,0,8869,7521,0,5391,0,0,5347,5464,8484,7834,0,7730,8641,5661,5578,8514,5237,7800,0,5464,8772,7675,8387,5358,7632,8010,5301,8402,5496,5442,8539,8582,5573,0,7877,5651,7542,5688,5655,0,0,0,7786,7834,7710,8625,7715,8073,7473,8845,5642,7790,7599,0,0,0,8613,5291,0,8438,5419,0,8427,7571,8354,5224,0,7576,5358,8504,7628,0,8287,7696,5476,5651,8745,0,7599,5325,8201,0,5432,8010,5642,5301,8010,5726,5564,7696,0,0,0,8154,5309,7706,8170,8277,7935,7930,8816,5476,7500,7511,8329,5564,0,8566,8805,5413,7687,0,0,0,7742,8851,8845,5629,7952,5296,7738,0,5642,0,7706,7653,7672,5651,5651,0,5329,8010,7742,5651,5381,5564,5651,5464,7588,5642,8077,5309,5401,5358,8745,5377,8093,8857,7972,7482,8479,5442,7774,5651,7834,5347,5248,0,0,8721,5617,7632,0,0,7632,7605,0,5442,5676,7592,7696,5476,7872,7774,8504,5564,5347,5342,7628,5642,7828,8093,7605,7738,5255,7542,5291,7805,8201,7786,8879,0,7653,7653,8711,7982,8062,8539,5564,8190,5651,5712,7843,7786,7999,7738,7628,8548,5301,8239,7478,5666,5325,5666,5301,0,8073,8608,8005,5480,0,0,7999,7952,0,7500,8716,8287,7888,0,7582,7952,8073,0,7811,8190,8179,5301,8422,5464,5529,7982,8222,8297,7681,5564,8239,0,5476,5320,8312,7849,8140,0,8136,8345,8783,5329,8427,7738,0,0,0,8255,7588,0,8721,0,0,5573,0,7696,7696,8699,7706,7487,5573,0,7834,7898,8345,0,8884,8519,7904,0,5377,7653,7571,7904,5578,8631,8119,5358,7696,7605,7478,7752,7972,7576,5329,7752,8234,5688,7986,5437,5448,7746,7972,7706,8340,8647,5401,0,7610,7588,7706,8467,8527,0,5291,8539,7858,8721,8816,8504,5655,5671,7920,8772,8783,8104,0,8104,5305,5432,7706,5391,5358,5291,7487,0,5396,8136,5296,0,7696,0,8711,0,5237,7972,8504,8170,5459,5578,8670,8249,5358,7653,7628,5274,0,8766,8179,8201,0,7706,5325,5453,5329,7592,7653,5476,7774,8104,7972,5209,8245,0,5606,7576,0,8104,0,5578,0,8110,8888,5325,5476,8762,5291,5717,5325,0,0,5612,8893,7521,5464,7706,7605,8451,7710,5534,0,8898,7786,8509,8010,0,8340,7972,7877,5666,0,0,5578,7628,7952,5464,5309,0,8039,5514,8772,0,5237,7800,7888,5708,7920,7478,7663,8249,7920,8249,7924,7972,8073,7616,7994,5386,5347,7834,7877,7768,5655,7734,0,7658,7893,5320,0,8903,5496,8297,5606,7710,7738,7977,8598,5464,8239,0,0,0,5309,7864,0,5564,7888,0,7864,0,5642,8539,0,8539,8201,7800,7935,8099,7706,7715,8179,0,0,0,0,5337,0,8245,0,7588,5564,5325,5419,8340,8073,8909,7935,5564,8201,7478,0,7924,8391,8334,8211,0,8249,8340,7681,8509,8126,7675,7528,7706,0,0,8670,7946,8816,7675,8033,0,8010,7482,8608,8297,8915,8048,8010,5726,5391,7849,8411,5491,5305,8919,0,0,0,0,5496,7888,5337,8052,0,0,5274,5666,5309,7706,0,5712,0,0,0,0,7834,5476,7482,7706,5578,5237,5476,7491,7864,0,7972,7653,8287,0,8104,5224,7908,5442,0,5480,7723,0,8484,0,8140,5564,0,8249,5301,8577,7738,0,7786,7779,0,7986,7828,7839,0,0,0,5325,0,5496,7790,8762,0,7637,7872,8727,8821,0,8277,5426,0,5476,5712,0,7849,5325,0,7653,0,5301,5209,8443,5642,0,5301,7706,8811,5301,0,0,0,0,7588,5442,0,5661,7930,7500,5485,7734,8093,7521,7571,7757,8104,8745,7823,0,7672,7710,8670,7628,5396,5301,0,0,0,5301,0,0,8217,0,5476,8381,0,7982,5564,0,7558,7823,8604,0,5377,8196,8473,5342,7994,0,7719,7663,7864,5381,8739,7893,0,7482,0,5514,8307,5296,5661,8115,8772,8227,7972,5476,5564,7864,0,7667,0,5496,5274,7800,0,5358,8093,5381,8005,7977,0,0,7843,0,7893,5329,7687,7849,0,8447,7616,7675,8909,8149,8115,8005,0,7542,8170,8647,8282,8307,7516,5651,5314,5661,7982,5651,0,8925,8827,5717,7823,7605,7834,7653,0,5476,8375,8354,8297,8093,8929,7628,7555,0,5476,7555,8196,7542,5367,5573,5309,5651,0,8136,7653,8443,5367,7834,5647,0,0,5612,7482,5248,7576,8211,8467,7555,7622,5514,5509,5301,0,8136,5391,5358,7839,7898,0,5676,7521,7952,5213,0,8329,7687,5642,0,0,0,7864,7924,7681,5337,5291,5301,0,5301,0,5325,7982,8427,5564,8227,8721,8170,8249,0,7558,8711,0,5301,0,0,0,5476,5224,0,5730,5509,7710,0,5717,7653,8073,0,7511,8179,8179,5476,8190,7834,5612,5524,5218,0,0,0,7628,0,5578,7538,0,0,8617,5309,8721,7734,7516,0,8805,0,7986,5476,0,7839,7834,5381,0,7994,5274,8381,5564,5717,0,5305,5564,8716,5274,7752,5301,8179,7763,0,8447,7637,0,7500,7555,8349,0,8795,0,8560,0,0,7628,7994,7605,0,0,5476,0,0,5564,5358,7605,5209,5320,5367,8447,0,5285,8190,0,8417,8164,5459,7730,0,0,7628,0,0,0,5329,7653,0,5476,8397,8427,7588,5509,8447,8721,5291,5413,8179,0,7888,7706,5642,7952,8699,5730,8329,5661,0,5296,0,5661,8073,7990,0,7500,8126,0,5573,0,5377,5573,7710,5453,8721,8527,5661,0,7888,5291,5296,8833,7730,7888,8093,8249,0,8039,8249,7610,0,7616,0,8721,8140,5301,8762,0,7864,0,0,0,8407,8407,5419,5401,0,8670,5237,0,7994,0,0,7849,5337,5329,8277,7742,8119,5676,7706,0,8267,0,7706,0,8873,5325,8349,8519,8184,0,5301,8093,0,8033,0,5274,7982,0,8443,5491,5491,7643,0,7935,5377,0,7495,7972,7511,7893,5285,0,5708,7516,0,8705,8272,7920,7528,5261,5661,8631,8272,0,5237,5661,7920,5642,5642,7555,8052,8566,7482,8010,7823,7710,7599,8467,5367,7576,8467,5391,5651,0,5717,8174,7893,7982,8447,7839,5651,8411,0,8136,7628,7864,7972,8566,7500,7672,5296,8329,5386,7653,7977,8307,5396,0,0,8140,5237,8022,5651,7528,7478,7723,5241,5442,5426,8484,8170,7643,5377,7800,5407,7706,8087,5666,5509,7935,8179,5381,5337,5296,7687,7588,5717,5386,5237,0,0,7710,7994,5305,8234,0,0,5372,5296,8375,8239,8149,0,0,5280,5708,8077,5342,8349,8772,7528,5485,8345,7738,7877,7994,8641,5325,8033,7935,7500,5274,7528,0,0,0,5386,0,7834,5688,8062,8022,7667,8239,8170,0,7800,8577,0,5573,7710,7521,0,5712,5320,8604,7710,7786,7628,0,0,8239,8149,5320,5578,0,0,0,0,7864,0,8302,8548,5291,7667,0,7957,7994,0,7605,7986,0,5578,7999,0,5476,0,8447,0,0,5476,8052,8387,7811,7800,7800,5726,8149,8052,0,8514,5274,5655,5320,7571,7605,8131,8190,5476,5377,0,5309,8179,0,8201,7779,7972,5325,5509,8721,0,8745,7663,5564,7952,8131,5274,8821,7972,8473,5476,5612,5459,7952,8119,8329,8033,5617,8745,0,0,8104,8062,7582,7558,7994,5459,5320,0,5325,8925,7706,0,5564,5708,5564,8312,0,8772,7687,7935,5726,5337,7849,5730,7952,7864,5419,8267,7853,5688,0,5564,7571,7982,0,8073,0,5291,8539,5291,5564,5464,0,5218,7805,5612,7710,0,0,0,7800,8936,7706,5407,5358,0,7972,7605,5726,8427,5325,7828,0,5301,5301,7986,7768,0,5564,5496,5629,5391,8560,7867,7706,8073,8136,7853,5573,8140,8354,8539,8033,5573,5358,8211,7904,5606,8438,8577,8527,0,5688,7681,5564,8144,5407,0,0,0,5655,5688,8451,7710,8005,8577,7898,8762,7478,0,5291,5329,8227,0,5573,7779,5606,8653,8227,5291,5647,5396,7893,5358,0,5280,8494,5325,5726,8005,7982,8140,5342,0,0,5688,7920,7930,8631,5285,8164,0,8140,5459,7710,8451,8249,8190,7888,5432,5578,5573,7877,7952,8676,7967,8919,8277,8909,8354,7768,5320,8093,0,8196,5564,5617,7681,0,7663,0,7723,7757,8370,5261,8082,8427,7610,8484,5301,0,8438,8164,8354,5291,8756,8010,7706,8062,5564,5329,8062,5480,8438,5606,5676,7706,5241,5485,7817,5606,7843,7790,7482,5329,8267,8170,7920,0,5661,8411,0,0,8164,8940,7478,5496,7786,7877,5352,7800,0,0,8617,8946,5622,7877,0,8519,5342,7930,8509,0,7972,7994,8438,8093,0,8028,8093,7706,8354,0,5476,5237,8033,0,8164,8033,8789,5337,5325,8073,7565,0,0,8140,8539,0,7628,5717,7500,7672,7849,0,8126,7817,7592,0,8387,8293,5337,8022,5661,8777,5642,5320,7834,8952,8239,0,7628,8073,5342,0,7834,5666,7516,7658,8762,8354,5325,0,8267,0,0,0,8170,0,8033,0,7521,5274,0,7952,7628,5666,0,5647,8033,5426,5688,8560,0,8903,7774,8539,7834,0,0,0,7877,0,5301,5612,7538,7538,0,5629,8456,7957,0,8451,5647,7864,8179,5381,5377,5325,8903,5285,5358,5666,5476,8104,8104,8312,5301,5437,7658,8312,5606,8170,7500,8010,0,7500,7696,8154,0,8297,8048,0,0,7779,5377,5651,0,0,8433,5712,7482,7746,5647,8005,0,0,5651,8164,8039,0,5651,8170,7920,5309,7599,5325,8249,5407,5529,8222,8811,7877,5301,5301,5688,5471,7616,8267,8033,5325,8297,0,7672,0,7952,8354,5296,7920,5496,7888,7877,0,8739,5617,5426,5534,5391,7710,7491,7653,7893,7491,7834,8857,0,7482,7888,5274,0,0,7867,7877,7653,8249,8354,8140,7542,5309,5261,7715,0,0,0,5241,7972,8104,7628,8711,5509,5442,0,7588,8959,5606,8739,8140,5342,0,5381,5407,5708,5285,7491,0,7491,7610,5372,8222,5401,0,7811,7672,7994,5274,8964,8073,5241,7605,7904,8249,5661,0,0,0,7675,5301,7687,5651,0,7491,0,0,0,5661,0,0,0,5261,0,0,5261,5291,5325,7565,0,5453,5708,5573,7478,8721,5661,8805,5661,8903,0,8772,0,5367,7500,5358,7487,8154,5241,7478,0,8489,8663,5391,7811,8144,5564,8663,5274,8196,7867,5347,0,8387,0,5699,0,8104,7972,0,8005,7542,8560,5476,8447,5241,8663,0,5391,0,7839,5291,7500,8267,0,0,5573,8479,7828,5717,5377,8062,8447,0,5301,0,5274,0,5237,8190,0,0,0,8277,0,7715,7558,5407,5358,7706,8093,8052,7898,5629,8539,5564,5274,8969,0,0,0,7734,5296,7994,5476,7491,0,7935,8052,0,0,5274,7877,7643,0,7653,7839,0,7706,8005,8110,0,0,7504,0,7982,8402,0,5699,8539,7935,0,0,7834,8239,5358,0,0,0,0,7555,8222,7616,8062,7839,5280,5377,7628,5666,8222,0,5325,5564,5274,8433,0,7719,0,0,7628,0,7663,7653,7883,5717,8539,7982,8334,0,0,8093,8349,8349,5401,0,5529,5655,8312,5564,8417,5237,8217,7883,8267,5274,7482,0,8217,5413,7982,7893,7893,7542,7930,0,0,5391,5606,8427,5407,0,5296,5564,5509,5305,8255,8239,0,7763,5717,8062,7628,7706,7888,8608,0,7904,8539,8190,8539,5358,7576,8174,8184,5476,0,7977,8245,7888,5237,7883,7681,5661,8227,8467,8721,7779,5413,0,5329,5325,8190,5320,0,5320,7982,8267,7877,0,8164,7864,0,7904,8527,0,5578,5501,8721,8201,5717,0,5464,8762,5377,8073,7542,7986,7610,7994,8427,5347,0,8136,5358,5480,5285,0,8201,8170,8312,5367,7994,5564,7849,8010,7877,7982,8925,0,0,0,0,0,8010,5459,8062,7710,8222,7482,0,0,8073,8821,5442,7616,0,5671,0,8267,5655,8387,0,5730,8438,8456,5717,8411,0,8052,5651,8119,8682,5358,7888,8104,8976,8589,7558,8297,8982,7790,8073,8422,7920,5564,0,0,7516,0,8514,7478,7706,7972,8033,5367,7849,8940,0,5730,0,5564,7648,7643,8456,7542,0,5237,8391,8005,5717,0,5708,8589,8617,7957,5655,5296,8179,0,7516,8136,7653,8762,5309,7746,8010,7864,5386,8062,8062,5529,5529,0,5358,0,5337,5476,5529,7730,7628,5301,5301,8467,8217,8052,7867,8873,0,0,8039,8201,7994,7994,0,8345,7500,8987,7946,7924,0,5642,0,5358,0,7946,8272,7511,0,7605,0,7706,8783,5476,8307,8467,8140,0,8073,8179,7924,0,5476,8184,8670,8543,0,8282,5305,7663,8869,5617,0,7972,7924,5407,8467,8217,5377,7994,8329,7972,5476,8504,5391,7982,8884,5476,5407,5342,7616,8222,7982,7982,5661,0,7924,5401,0,8869,0,5407,7605,7616,7834,5309,8519,7883,0,7908,5476,7491,5407,8869,8381,7839,7542,5529,8073,5651,8839,5651,7779,7706,7706,8087,5358,8073,5413,5432,8447,7994,7811,8010,7706,7511,5564,8608,8608,0,7706,8658,5480,5476,8073,7858,8073,0,8190,0,0,7628,7710,5329,5476,5301,0,5453,5237,7478,0,5666,0,7999,8397,8287,0,8345,7696,7628,8873,5564,8302,7811,5573,5448,0,5358,5459,0,8539,5301,0,7653,5437,7786,7558,7957,5305,5651,8349,5708,7883,7605,5464,8010,8919,8316,0,8762,7982,7994,5325,7710,7516,0,8334,5407,8077,7632,5325,0,0,8077,5476,0,5509,8387,5280,8073,0,8093,8811,8154,8370,0,7946,8005,8433,0,7843,5358,7811,8312,7742,5407,5377,5342,0,8217,5708,5407,5305,7952,7908,8345,7538,8745,5501,0,8898,8052,7888,0,8716,0,5381,5564,8994,0,8227,8077,7800,0,7839,0,8144,0,8539,5564,7681,8443,8494,7893,7774,5352,5391,0,8110,7706,5496,7533,8073,7800,8548,7839,7952,5325,5347,0,8249,7746,7533,5329,8498,0,7511,5476,7752,5301,5301,8833,7605,7643,7914,7710,5426,7599,0,8154,7920,0,5712,7935,5712,8783,8170,8417,0,8447,8613,8093,8387,0,7706,0,0,7898,0,8115,5381,7628,7528,7930,7904,5480,0,8255,5337,8539,5381,5305,8119,5261,7706,5261,5651,7883,5476,8845,8845,7853,0,5529,5476,8805,7681,8711,7511,0,5301,0,5329,7500,8451,7904,7511,8170,8427,8170,0,8443,5274,7972,0,0,7972,0,0,7986,0,8845,7864,7715,7548,8539,7834,0,8845,0,7843,7628,0,8136,8370,5396,8427,0,7957,7877,5459,7994,8190,5372,8438,0,0,0,0,0,5480,8433,8739,8909,8028,8149,5329,5476,5661,7834,8745,7734,5442,5274,8721,5381,8277,8249,7491,0,5301,7482,0,0,8909,7628,0,0,5496,8762,8062,0,5237,0,7706,0,8467,5325,8267,7565,0,8560,5655,7982,0,0,5381,8456,8811,8190,0,8479,8255,7839,5459,7904,7681,5509,7839,7972,8126,7478,8222,7883,7904,8316,0,0,8484,7952,7839,5337,8467,8149,8484,8998,8028,7864,7864,5426,7849,7834,5647,8201,5413,5568,7805,0,7706,8467,0,0,0,5730,5464,0,5676,8005,7864,5325,5305,5248,8222,7478,5655,7500,8245,7710,0,8827,7538,5568,7834,8179,0,7849,0,5347,8316,7628,8560,5386,5301,5501,7734,8093,5708,8190,5476,8190,8249,0,5666,7834,8222,5459,8093,5391,5285,8577,5485,8170,5377,7920,8461,5285,8359,8201,8539,7811,5642,5301,5651,0,0,0,8504,0,0,8647,5329,8093,5476,7774,5261,0,5320,5480,5305,7849,8964,5224,5352,7643,0,8039,8201,5301,7877,8126,8451,8249,5612,8322,7972,8582,5358,5708,8249,5274,0,7853,0,7994,0,0,0,8149,7877,8447,8447,5301,7582,8170,5407,5564,8302,7687,8272,5407,8789,8387,5485,8811,8539,5407,5712,8245,5407,5617,5661,5437,8211,5301,8234,7628,7738,5578,7924,8641,0,7849,7757,7994,8267,7687,5726,0,0,0,8805,7786,0,8936,5564,8964,7738,7738,5314,7653,5255,7849,0,7576,8073,7511,7555,0,8174,8539,8302,5377,7908,5377,7706,5325,7710,8994,5309,7990,5301,8170,5726,7986,7786,5280,7706,5274,5407,5391,5274,7663,5396,8170,8115,5642,0,5325,5496,8795,0,0,7834,0,0,8316,7823,8354,0,7710,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5476,5693,8898,7706,8987,5367,0,5305,8015,8589,8987,5367,5325,8201,7628,7746,5671,5442,5442,5622,7867,7920,5391,5391,5688,5224,7491,8827,7582,7487,7558,9003,5688,7779,9003,5337,7779,7834,5224,8940,8234,8484,5717,8387,8322,7548,5325,5381,8527,8721,8732,7877,7516,5314,7605,0,5509,7883,7994,7605,5485,5301,8170,8959,5564,5476,5476,8716,0,8484,8484,5578,5642,5476,0,7972,7478,7687,7982,8048,5333,7548,5255,8334,8255,7982,8625,7558,7558,5476,7482,0,7763,8484,7706,7491,5237,7521,5671,8484,0,0,5320,0,5391,5325,7700,7977,0,5391,0,0,8349,8375,0,8613,5529,7834,5564,8302,8136,8811,0,0,0,0,8811,7710,7952,8811,8375,7516,5476,5291,5333,0,7628,5241,5391,5391,7696,5573,7628,7628,7628,8267,7982,7706,7478,5485,7487,5342,8682,8682,8387,5661,8387,7706,8387,5325,7853,7599,8756,7738,5285,8370,5476,7877,7946,7715,0,7521,5485,8805,7779,7521,5485,7491,8196,8073,5337,5661,7883,5401,7888,7994,8504,8504,5325,0,7599,5476,5391,8504,5333,5693,8115,5309,7734,5442,7904,8015,5309,5381,5224,8705,8827,9008,8589,8099,0,8777,5209,5391,7738,8015,5564,5274,5274,5480,8062,8316,8504,7542,8811,5476,8539,5491,8093,5476,8783,8227,7730,8987,5476,7715,8514,8504,7977,8783,7924,7542,7548,7920,5509,7478,5407,5381,5642,8527,8777,8504,7599,5501,8539,7565,7548,7706,8456,7628,7757,5471,7752,5476,7528,8756,5476,5325,7663,7478,5325,5564,8048,5519,5309,7930,7883,5564,5629,7548,5337,8154,5296,7628,8402,8732,8589,7994,8732,7935,8387,5274,8987,8227,8099,8777,8329,7528,7994,7605,7710,8190,8293,8073,7786,8447,8447,5661,8282,7500,8093,7576,7914,5726,7487,5413,7487,7977,7920,5476,7487,7663,5241,7828,7653,8349,7883,7605,8201,5726,5358,8670,7839,7994,8539,7605,7571,5337,7924,5377,8427,7849,5358,5480,5617,7628,5476,9008,7571,5568,8381,8316,8447,8190,5726,5218,8631,7542,0,9012,0,8456,8359,7849,8149,7521,5717,7924,8126,8048,8391,7977,7696,5224,5325,8727,8154,7952,7768,7681,5285,7839,5476,5391,5426,7914,5480,8795,7972,5671,8277,5476,7710,7473,8687,5301,7482,5391,5651,7605,7500,5337,8345,5329,8711,7696,8099,8316,5496,7710,8329,7817,7576,5476,8613,5407,5367,7977,5437,5329,0,5285,5655,8604,8255,7908,7637,8381,8789,5309,7478,5730,7592,7558,5655,7571,5442,8196,5329,8170,5320,8805,7914,5480,8073,7823,8052,8411,8422,7628,5237,8140,7864,5688,7500,8582,7692,7478,7667,5476,5564,7843,8443,8255,5301,5218,7643,5485,5274,8589,5213,7588,5564,5237,5301,5564,5255,8222,7628,7487,5367,7528,5519,7628,5377,7935,5442,0,7834,9016,5301,8277,7487,5407,5519,5564,7849,8170,7675,5213,5407,8473,5573,7893,8527,8387,8345,7930,7628,7528,5358,5407,8227,7710,5224,8365,5642,8402,9016,5509,8277,8777,8548,5717,8721,7930,5606,5320,5320,8514,8479,8772,5291,7805,5426,5352,5629,5730,5476,7706,5377,8811,5485,5381,5342,8227,5381,7565,7972,8571,5676,8548,8170,7542,8447,8099,5314,7994,7632,8022,8873,7643,7582,5209,8543,7478,8170,8716,7774,5407,8533,7491,7972,8302,8745,0,7616,7558,5407,7834,8699,7548,8104,7977,5381,7994,7628,5224,8893,5377,7994,7858,7834,8527,5629,8494,7864,5661,7935,8119,8795,8539,7571,5496,8805,7930,7491,5464,5642,8427,5442,7834,5337,5407,7500,7687,7839,5564,5358,7972,8548,7746,5325,5476,5661,8329,7487,8676,8604,5655,7742,7853,7853,7930,8925,5329,5381,7994,5501,8227,7952,5448,7972,7588,5367,5564,8467,8164,5301,8613,8267,8131,7538,7898,7828,5629,8052,5381,5237,5261,7542,5291,8777,5573,8589,7930,7675,5218,5642,8772,5612,7924,8048,5224,7977,5491,5437,5629,0,8888,5573,7495,8179,5666,8402,5218,5372,8548,5352,8022,5708,8732,7628,8533,8694,8987,8322,5485,7710,8302,7653,8015,8745,7834,8539,5237,5329,7930,8647,5309,5401,5329,7800,7542,5274,8772,7616,7582,5622,7521,5261,8255,7592,8422,9021,7734,5237,8149,8227,8687,8239,7706,8919,7877,7994,5325,8010,5296,8732,5407,7883,5285,8484,9026,5501,5274,5291,7864,5285,5407,8316,7516,8073,7786,0,7588,5274,5419,8438,7491,5309,7977,8255,7920,8527,7576,7663,8159,5476,7667,8789,7877,5476,8903,5485,8190,7908,5407,5573,7883,5285,8302,5437,0,8888,8345,8613,7658,5442,7637,5347,8447,5309,7542,8249,7478,8381,7723,8447,8227,8577,5666,5329,8582,8222,8762,8473,8365,7972,7487,5337,8052,8033,8033,5301,8909,7994,7610,5573,7877,8261,5320,5296,5301,7632,8365,7495,5629,7834,5666,7700,7696,7478,8267,8365,8467,7504,5248,7999,7504,5274,8687,8217,7990,8217,7746,5647,8227,7696,8217,7696,7528,5647,7487,7834,7834,5391,5391,8903,7542,8307,5501,7790,7914,8307,8126,5485,5301,5464,8613,7599,8028,7768,7779,7628,7904,7817,7511,5237,0,5347,7817,5606,8721,5426,5224,7706,8170,7828,5209,0,7924,5407,8087,5325,5476,5325,7877,7592,0,8297,8028,8467,7790,8461,8297,8604,7592,8604,5437,7795,7592,7790,7576,8711,8131,7500,7746,5651,8164,7482,5661,8795,7667,8789,5476,5651,5391,8721,8249,7548,8170,8467,8391,5568,0,5564,5661,5651,5224,7582,7658,8461,8527,5224,7982,5248,5291,7982,8582,7491,8873,7533,5564,8438,7582,5274,8577,5367,5407,5485,5320,5712,5647,7706,7786,9032,8022,5485,7779,8745,7757,8093,7582,8811,5407,7482,8694,5476,5301,8777,8391,9038,8402,7487,7888,5309,7516,7516,8381,5237,8762,5325,8010,8010,8010,8527,8170,5573,0,8527,0,0,5564,8527,5255,8527,8509,5464,8509,8811,8919,5255,5726,7504,7908,5647,5708,5573,5325,8903,7653,7653,5372,8479,7757,8479,8504,8504,8519,5501,7867,5476,5325,8795,7542,8879,5573,7752,5325,7883,5426,5396,5509,5291,5301,8354,8577,7511,8115,8461,8519,5564,5573,5726,8170,5261,8438,8093,7548,7533,5432,5381,5381,8222,5301,5261,5432,7877,5485,7795,8682,8479,8519,8005,7692,7888,7696,7972,9045,7768,5496,7839,7990,5381,7952,7839,7952,8509,7888,5325,5377,5485,7957,8682,8115,8467,8451,5529,7990,7986,7542,5496,8519,7795,5407,8451,5301,5377,7893,8057,7877,7706,8519,5209,8461,5509,8073,5325,7888,8745,7834,5314,5407,5325,8073,7834,8170,8154,8119,5407,7888,8676,7478,7795,5564,8119,5407,5717,7687,8509,8519,5676,7877,8641,5329,5301,8998,5261,8647,5568,5285,7795,8255,5291,5396,7687,5314,5401,8170,7920,7511,7952,5285,7952,5407,5407,5629,8154,5325,5407,5476,5407,7972,7877,8498,5305,5301,7605,5301,8387,7768,8282,7817,7977,7478,8349,8577,5309,8946,5661,7972,7582,7605,8293,5381,5726,8670,5476,7605,7622,5301,5485,8149,8149,5676,5568,7924,8631,7675,8711,8582,5381,8577,7849,5391,7990,5485,8052,8073,8438,7710,7843,5218,5218,7746,7990,8329,5676,8745,5329,8057,8249,8277,5333,8509,7746,7582,7500,7500,8795,7478,5476,8329,5534,8119,8149,7715,5329,8647,5391,5325,8196,8322,5285,7768,7924,5476,5291,8010,5676,8316,8170,7883,5661,8349,8329,8329,5329,5301,7935,8261,7768,8222,8670,8267,8484,8222,8131,7478,8267,0,0,5671,5671,8222,8827,0,7504,5352,8170,8272,5717,7734,8345,8174,5564,7817,8245,8484,7723,5358,5396,7930,5386,7710,7565,8484,5476,8925,5419,8756,5419,8582,7982,5367,5726,8411,7952,7867,8205,8582,7893,7982,7853,7952,7952,5296,7883,7952,5401,5401,7940,8762,8484,5726,5237,7920,5726,5476,5280,7834,8411,8447,5726,5391,7528,7542,8184,7730,8443,8119,7478,5296,8282,5391,5237,5509,5396,5661,5509,7930,8443,5314,5661,7883,8349,7823,7883,5325,8073,8952,8201,8582,8411,8201,8427,5280,5329,5337,5329,5237,7795,8494,5661,5381,5381,7994,8608,7723,7972,7790,7482,7994,8670,5325,5699,8375,5391,5676,5661,7500,5309,5699,7478,5325,7864,8745,5237,0,7653,8427,7864,8805,5301,5578,7653,5301,8387,8387,7834,5617,7972,7687,8334,0,7849,8387,7972,8604,8334,5377,5301,5617,5730,8805,8397,8451,7893,8467,8604,8467,7521,7834,5301,5291,8302,7828,5573,8484,8196,5708,7952,7834,7487,5301,8227,5347,5301,7834,7834,8467,7487,7817,7516,5688,5726,5726,0,5666,8762,5274,5622,8589,8179,8179,8179,8179,7663,5491,5337,5496,5325,5337,8617,8010,8087,8625,7904,8048,8893,5391,5320,5314,5726,8087,8411,7500,7977,7533,5448,5524,7994,5448,5459,7872,8827,5568,7786,8170,8093,7795,8272,5568,7972,5285,7999,7904,5693,7990,7658,7710,5391,5337,5688,8312,5661,8052,7487,8772,7710,5333,7757,5325,0,8062,7763,7500,8211,7710,5717,8190,5642,5209,7849,5325,7757,8879,8316,8391,5730,5301,5647,7521,7687,5367,7491,5329,9051,7538,7742,5529,5476,7667,5442,7516,8068,7482,7893,5358,8196,8196,5381,8201,8998,7904,5471,5501,7864,7653,8805,8560,8598,7706,8062,7972,7914,7478,7478,8783,8884,5529,5237,7805,8307,7752,5730,7742,7478,5524,8387,7667,5329,7864,40,5712,7663,7706,7558,7478,5524,5564,915,2998,7710,8119,8884,8068,5564,5476,5491,7742,5301,8126,8467,7908,3123,8322,7478,1325,3137,7768,9054,7752,8447,9059,8093,8297,5337,8539,7576,3194,7576,8964,5237,2957,1400,5255,5209,7786,5209,7994,7500,7849,5386,5367,8456,2806,7675,7914,7982,8391,8245,5726,8170,9062,8925,855,7888,670,8174,5358,5564,819,2654,7687,7849,8370,8484,5218,5564,5699,7576,50,9012,7786,9012,7571,8201,7610,7582,8381,0,7487,5274,8154,7706,7696,7864,8687,7687,5237,5476,8577,5209,7763,5651,7972,5642,5325,7576,5717,8952,8365,7675,7990,5296,826,8359,8272,5274,2675,8190,5519,8082,7834,8149,5476,7663,8751,7914,8316,8062,7504,7710,8631,5201,5437,842,2950,5213,7521,7663,8727,8582,8387,8245,7675,5358,8354,2792,5396,1620,7908,7888,2537,5325,8789,8711,9067,8052,8467,7610,855,8211,5717,7864,7710,8670,5301,8136,8443,2665,7692,7675,852,1783,8073,5578,7687,2816,836,3009,5333,5342,2830,8201,7653,7946,8845,8851,5717,5337,7834,7786,7786,8126,7653,5612,8104,5476,7663,7977,5647,5274,36,5301,5237,5629,7571,5688,124,7478,121,8387,8307,28,60,8196,7538,32,4535,905,1518,8149,139,5612,5372,7811,5030,8302,5325,64,371,8527,106,7982,7706,8087,7994,9045,8227,7696,5301,8322,8345,5381,9067,8184,7628,2381,8277,8302,162,5480,7982,7663,7576,26,8800,5314,5314,8987,8539,7946,5347,9051,7675,7521,8068,7478,7752,8402,8302,7982,7706,32,8272,7883,7883,852,1775,109,1318,8287,7849,8387,7706,670,8456,7779,5274,7920,8302,7986,8115,2409,2418,8994,2440,7719,5622,8077,2468,2475,2213,2216,7768,2229,8073,5693,7843,7675,2261,2265,7710,5377,8345,8484,7883,7990,5218,7994,7823,5261,762,56,7986,5381,5730,7653,5459,7576,7637,8082,9071,7628,7482,8365,5642,8494,7746,7982,8267,8732,5296,7811,7811,5237,7849,5325,8005,2792,7994,8302,7500,5464,8762,8077,8190,7779,7628,8940,7710,8255,7834,7883,7440,8179,5301,9067,7687,54,7622,7616,9054,0,8005,5237,7628,5381,7957,7692,5514,8154,5377,5642,7849,9051,5519,8322,7719,5218,7588,8062,5661,5476,5612,7538,5496,8370,7990,7738,8940,5606,8613,5448,8631,5325,8334,7478,5274,5391,5717,5209,5381,7632,5534,8631,7487,7710,8052,5612,7977,8370,5612,8196,8077,7849,0,8159,8044,5717,8136,9075,7663,0,8316,5358,5708,5708,5401,8402,5578,5305,5448,5448,8772,8539,7706,5285,5248,5285,8509,8772,8589,8340,7977,7663,7675,8647,7957,5205,7786,7675,7982,5296,8039,7742,5274,8115,8227,7500,8312,8407,7538,7538,7982,5666,8762,5205,5629,7491,5413,7616,0,5285,5651,7675,5396,8349,8297,7571,5352,8149,7675,5325,7605,8783,8005,8397,7675,7487,8052,5564,8239,8255,5237,5519,8772,8772,5305,8329,7864,9021,8010,7710,5296,8365,8519,8140,7883,7628,8068,7558,5285,7491,5237,7706,8052,5401,7500,8919,5296,7482,7734,5291,8196,8329,8077,5329,7487,7834,7616,8245,7883,7628,7576,5309,8789,8354,5296,7706,7864,5372,5476,5391,5285,8467,7663,5218,5291,7908,7628,9054,8479,5717,7528,5471,8903,0,8159,7920,7920,7482,8397,8381,8539,5347,7738,8154,8613,8052,5367,8387,7888,5237,5442,5325,5309,8052,5377,8227,0,0,8936,5377,5329,5296,8073,5337,8077,7482,7982,5305,5464,5578,5301,7511,0,7700,7675,5305,7834,5301,5329,7610,5564,7883,8033,8751,7920,7521,8154,5305,5237,7888,7692,7834,7877,7616,8261,7828,7986,7738,7675,5285,8287,7811,8154,5622,8077,7675,8936,5301,7877,7637,5301,5476,7632,7700,8365,7588,5237,0,5407,24,7605,64,8077,7700,836,2998,7994,5296,1311,5688,7487,2675,5407,5296,7528,7482,7823,8641,8641,5471,8756,2947,7592,1400,429,8827,7982,1620,8467,5337,2599,8653,8827,7994,5647,7994,8099,819,8658,2651,8093,7786,852,1783,8039,5647,5337,8039,7482,7643,7734,7628,9080,8467,8099,7768,7628,8745,8039,8732,7994,9085,7768,9092,9097,8467,8467,7864,9104,5647,9113,8641,9122,5296,5476,8467,9130,8375,5647,8387,9137,8805,8119,9146,9152,9157,8387,5437,7994,5717,9164,7478,7952,7920,5476,8539,9172,9181,5655,5314,9187,9193,9201,9206,8582,8227,7706,5034,9214,5325,9220,7972,7972,8282,9224,9230,8196,9235,7667,9240,8068,7565,5501,8543,8772,8795,7920,7571,8946,5358,9247,9253,9259,9263,7908,8539,5485,5407,8772,5301,7904,7478,5501,8863,8312,7533,5629,8653,5726,8772,7972,5480,8811,5255,7828,7795,8447,7658,7920,7592,7924,9008,5708,7511,5688,7715,7990,8131,5529,7904,7710,7935,8093,9272,5564,7982,842,7805,7986,7610,7610,5329,9278,9281,8174,9285,5426,7582,9288,2462,5329,9298,9301,5666,5671,7482,5730,2465,7999,5564,8687,5642,7888,9305,7952,5496,7924,7482,8048,8131,8467,5459,5661,8800,7592,9308,7864,9312,7828,9316,7478,7473,9320,76,2406,8509,2468,5386,8345,5426,9326,7811,7898,8456,9329,5476,7482,3679,7500,7805,8433,8845,7663,9332,9335,5699,5218,142,9338,429,8349,7843,4262,7558,7834,5309,2422,5666,8577,8201,7558,9341,303,5391,8329,8039,2274,7491,8184,8539,7628,8201,8387,5676,5342,7920,7558,5509,8170,8099,5241,8571,5248,7582,5491,8772,8345,7774,5320,5413,8795,7972,7888,5476,7972,5476,8456,5325,9032,7706,5514,8170,8447,7692,7990,5629,8653,8447,5407,8217,5309,8461,7628,7864,5352,7786,5647,8873,0,8387,7542,0,8345,0,7888,5386,5647,7558,7482,7643,5358,5401,8039,5459,5622,5730,8222,8222,7628,8539,7790,5381,8821,7864,8845,8795,8548,7628,5464,7864,5642,7834,8222,5325,5712,8227,8762,5480,7482,8527,7548,5381,5655,8527,8461,8732,5407,0,0,7521,5464,8873,8676,0,8190,5325,5325,7908,7616,7738,7558,5218,8509,7588,7588,5391,5651,7738,5534,7558,5647,5629,5699,7548,5301,5352,7898,8159,8205,8217,5606,7478,7558,8329,5717,5655,7663,7817,7834,8795,5606,8467,7752,5661,7511,0,7843,8227,5352,5413,8033,8140,5329,7742,7542,5712,5305,5622,8617,5320,7957,7710,7800,8473,5485,7706,5320,8539,8015,8795,5218,7828,8033,7972,5237,8039,8322,5309,8539,8987,7715,8402,7834,7738,8833,7706,8322,7779,0,8863,8255,8833,7500,5261,5261,7904,7734,7908,7582,8010,5699,5305,5471,5471,5471,8539,8119,7888,7888,8772,8919,7478,5501,5464,8772,8245,7491,0,0,7628,8322,5325,8255,8800,5476,7920,5358,7828,5419,7491,5218,8073,8772,5347,8170,8359,8903,8261,7542,8329,5347,5237,7849,7663,8387,8479,8052,8821,0,5666,8582,5329,7834,8772,7994,8359,7610,7610,7872,5301,7516,8261,0,8329,7834,5666,7904,0,5391,8504,0,9345,9345,8119,5476,8349,7990,7605,9345,7982,7982,8653,5476,7982,7500,8653,8087,8211,9021,8087,5476,7972,7786,5573,5419,8527,7930,0,8411,5342,8658,8093,5564,7571,5367,7504,0,5386,5367,8005,5237,8082,8467,7790,7588,7888,7888,7491,8745,0,8131,8131,7706,8249,8249,7482,8154,8033,8245,8115,5606,7658,5564,8625,5642,7924,8560,5524,5391,8543,7658,7853,7834,5358,5476,7473,7977,7888,0,8582,8267,7977,8994,8869,5401,7811,8539,7834,8174,7768,7706,8716,8527,5661,5501,7828,0,8005,7967,7811,7706,8509,7687,8543,5476,5419,8272,8205,8543,5237,7521,7893,7757,8329,8946,7828,5708,5617,5534,7533,5708,7478,5708,5419,5401,7888,8267,5419,5391,5501,8154,5358,5401,7888,8293,8293,5693,8716,7542,5407,7738,8484,7823,5496,8052,5274,8010,5325,8851,8613,7893,7599,8062,9345,5564,7538,7883,8504,5564,5485,7834,5661,7752,7548,8994,8762,5325,8946,7548,5642,5309,8267,7622,8456,0,8354,9345,8816,7834,8136,7528,5501,5358,7628,5480,8527,8467,7565,7478,7628,7952,8762,7904,8447,7576,5314,7999,8245,8716,8467,7853,8190,7972,7864,5712,5305,7706,5358,7914,7867,7864,7849,7500,8048,5241,8438,8282,7715,5564,8093,5209,5209,5391,8297,5261,7924,7800,5381,7786,7487,5426,7994,5209,8170,5261,8751,8504,5642,8316,5419,5320,5325,5671,8987,8144,5676,5285,8131,7715,5407,5407,5476,8184,7972,5325,5325,5274,7946,8687,7667,7473,7834,8391,8577,8456,7834,5337,7834,5496,7914,7482,7710,7952,7768,5209,8022,7994,8062,8631,7957,8387,7648,5285,8375,5255,5274,8670,5301,7558,7675,8211,0,5612,7478,7994,7990,8277,8287,5693,8929,5426,7823,7628,7495,8456,8028,5676,7914,7972,7653,8539,9345,7864,8751,8422,7653,7746,7478,7834,7478,5237,7834,7628,7487,7628,8631,0,5274,8170,5726,8839,7706,5274,8863,7582,8227,5329,7663,7864,7864,7957,7746,8827,8057,8170,8312,7774,5693,5509,8473,7675,5320,7706,5296,5564,7864,8494,8772,7893,0,5381,5606,8447,7768,5485,7643,5485,7542,7828,5426,7982,8631,8277,5358,7482,5442,8287,5564,5485,8099,7834,5347,8653,7482,8387,0,5301,7828,5274,0,5396,7616,7877,7914,8805,8903,5642,7478,7823,8893,7977,7853,7500,7628,7994,5377,8110,5712,7883,8821,8196,0,7478,7542,8104,7790,5564,5381,8676,5237,7548,5712,5464,7746,8345,7616,8190,0,7994,5712,8467,5655,5688,5377,5661,5480,5401,7790,8297,7487,7858,7994,8631,8484,7982,5708,0,0,7500,7853,7952,7967,5642,7920,5237,8467,7616,8164,8613,7710,7511,5712,7533,5708,7538,8131,8005,8196,7977,5514,5655,8467,5496,5218,8391,7616,5325,7588,5453,5274,8272,8334,7843,5386,8222,7663,7920,8751,5476,8647,7628,5666,8190,7800,5476,8015,8756,5218,8447,5301,8539,7952,7834,5309,5622,8227,8604,7653,5362,8149,5305,5578,7982,7982,5708,5362,8322,0,8959,7786,7478,5285,5480,8427,7790,5274,5274,5305,8239,5401,5396,7952,8919,7972,7500,0,5396,5237,5296,7648,5237,7834,7877,5285,5712,8010,8010,5274,5476,7994,5285,5564,5391,5358,5261,5342,8322,5401,7811,0,5453,7582,5476,8179,7663,8929,8766,7538,7681,5442,5309,7839,7628,8751,0,7500,8716,7834,7658,7616,8179,5453,0,7616,7746,0,7538,7914,5426,8447,8762,7511,8467,5347,7834,8617,8093,5285,8929,5347,5274,7616,8617,8952,7768,5651,5301,8375,7834,7605,5347,5209,5381,5291,5291,8571,8267,5209,5209,8879,7962,5564,7930,5209,7675,7528,8249,7487,7658,8222,5325,7786,8293,5529,0,5622,8370,8375,7962,8359,7763,8827,7542,5320,7877,8387,5209,8447,5564,5209,5301,5529,8073,8613,8277,8077,8077,7616,8375,7746,7605,8164,7738,7952,8533,7723,7628,8087,8345,5647,8022,5509,8110,5642,8062,5476,5485,9032,5651,7605,8903,8062,8548,8721,7576,5693,5509,5476,8222,5391,5391,5248,7914,7990,8190,5391,5337,7811,5476,7681,5391,5274,7817,7558,8658,7817,7675,5437,7687,8222,8370,7834,7675,7977,7914,8033,8164,5464,5651,5568,8739,8888,7588,7774,8365,5325,8467,5325,7482,5651,5568,8745,5699,5655,5407,5564,8381,5224,7811,5712,8196,7653,7628,5391,8381,8196,8381,7972,7628,8222,8739,8381,8196,5305,5496,8170,7795,8196,7982,7478,8239,5391,7605,8533,7914,7994,5661,8739,5296,8239,7667,7811,5476,5476,8222,8196,5248,8222,8527,8879,8217,7487,8329,8479,7672,8217,8087,8312,8527,5622,5564,5617,7990,5419,5419,5622,7994,9021,8329,5320,8217,8479,7675,5325,8670,7696,7696,7696,5205,5407,5320,8033,8987,8987,0,5205,8227,8239,5274,5274,0,7599,7599,5337,8239,8239,5642,8211,7599,7599,7599,5205,5642,7888,8005,7548,8484,8811,7786,8811,8422,8811,8811,5391,7482,7710,8898,8447,5309,7994,5453,8170,7920,8554,5237,5358,8170,5381,5606,5726,5377,5381,7478,7757,5391,5391,5255,5325,5661,8033,5237,8447,8427,5237,0,7800,7864,7957,5255,5377,7893,5320,5661,5647,5329,5329,5237,8554,5329,8170,5661,8170,5291,8239,5291,5320,5237,7935,8068,8447,5261,0,5274,5301,5529,0,0,7610,5476,7706,8504,7478,7653,7914,7628,5573,5342,7706,0,8354,8282,5642,8608,8387,7478,5381,7864,5325,7542,5501,8467,7706,8433,7542,7706,5496,5381,5726,8461,5274,5708,5347,8479,7904,7571,7571,7924,8170,8461,7990,8131,5529,7930,5301,7681,8170,7834,5564,5519,7977,8093,5480,8456,5337,5491,8582,8354,5726,7982,8312,8438,8345,7681,8093,7710,0,7582,0,8005,5519,7790,8316,5529,5476,0,7849,7990,7632,7864,5564,8329,5459,5329,8345,7696,5671,7768,8316,5476,7715,5391,8345,7994,7982,7972,5651,5301,5325,8316,7994,5337,0,5367,5301,5642,5285,5241,8375,5285,7864,7864,7628,7491,8201,8255,8658,8527,8527,5386,5301,5337,5274,8062,8479,7914,7558,5647,8845,7667,8052,5367,7482,7628,7843,8795,8149,8277,5274,5699,8571,5248,5248,7738,0,5396,8170,8277,7706,8438,8653,8653,8443,7786,8402,8387,8387,8461,8099,8099,8873,5291,7888,5241,8039,7482,7582,7653,5241,7994,5642,7920,7834,8022,5381,5413,8443,5291,7582,8427,7786,7482,0,8115,5464,7628,7994,7924,8527,5688,5471,5377,5476,7972,5391,5437,5642,7864,7605,8795,5329,7834,5712,8811,5325,5325,7811,8805,8119,5712,7542,7478,7628,8548,5347,5291,7834,7834,7994,8548,5496,5342,8164,0,8196,7628,0,7957,5647,8217,5237,5534,8777,8903,8062,5381,7663,7511,7478,8022,8255,5209,7994,5413,7828,8451,7542,5218,8077,8451,5325,0,0,8022,8548,5419,8239,0,7877,5459,8433,5693,5647,7957,8015,8427,8427,5708,8340,5726,8322,8397,8397,8479,8479,5237,7628,8073,7610,7521,8554,8073,8196,5285,7834,8149,8427,7516,8239,8239,5309,8919,7888,9021,5285,7952,5642,8255,5642,5291,8427,5476,5529,5386,7491,7491,5476,7864,5274,5325,5661,7990,5237,8539,5708,8397,0,8447,8164,8479,8093,8925,7628,8354,7482,0,5381,5301,5342,7610,7610,7828,7616,5237,8170,7877,7616,8005,7834,7994,5386,7768,8783,8498,8375,7828,7828,0,7834,7834,7834,5386,7834,8732,7952,8732,7576,5464,5485,8329,8783,8783,8577,7817,7571,8255,8170,7817,0,7478,0,0,7637,5688,5688,5325,5476,7487,7904,7972,7999,7521,5476,5309,8329,5676,0,8329,5309,5564,8925,5358,5391,8201,5693,8952,8010,8077,5391,5501,8994,7972,5237,7982,7883,7994,8015,5629,5491,7538,8456,8994,8964,5564,5401,7972,7576,8073,7972,8539,5305,5476,5476,5255,5280,5676,8613,8952,5491,5241,8839,8255,5655,5391,8658,5237,7898,5491,7952,5442,5255,8015,8302,5509,5491,7994,8227,8302,7706,8115,8039,7790,8762,5730,5241,7500,5651,7994,8494,5564,5476,7898,5255,0,7817,7533,5464,8479,5651,7977,8909,5296,7548,5261,7800,7715,8473,8039,8115,7715,7898,8015,7592,7877,5564,7972,7982,8010,8519,5358,0,0,5651,8255,7877,5501,8249,7898,5442,7763,5573,5381,5274,5347,8811,5255,8184,7542,5224,5224,5426,8811,5642,7811,5337,5337,5325,7834,7920,8805,8115,8687,9345,5305,8745,5358,8196,5471,8519,7952,8387,8126,5381,7500,5329,7478,0,7692,7616,8539,8174,7828,8387,7622,8845,7839,5564,8316,8334,7893,7521,5476,7972,7681,7972,5519,8762,7571,7675,5647,7952,7692,8334,8805,5337,8201,5693,7558,8277,7930,5325,8345,5320,8756,5218,5480,8022,5320,8745,7628,7628,7622,5448,8604,7521,7893,8484,7849,5296,7511,8302,5401,7843,5448,5407,8057,8745,8484,8484,8196,5708,8144,7957,7482,8239,5491,5329,5476,5573,7877,5647,7487,7528,7622,8227,7478,7893,8687,0,7908,5358,8322,5661,7516,7516,8239,5329,0,7616,5274,8805,5218,5301,8805,7482,8329,7834,8805,8539,8312,5407,5296,8716,5296,7817,8184,8509,8411,5476,7706,8789,5501,8170,7834,5476,8205,5358,5476,5476,7696,8589,5391,7696,5391,5391,7817,7757,7482,7982,5564,8062,7478,8422,7710,5419,7904,7914,8539,8015,5291,8272,5564,8539,5651,5274,7982,8783,8293,5485,5655,5476,5651,7768,5509,8670,8893,8190,5485,5471,8015,5419,8322,5352,7883,8322,5358,5358,5617,7883,5407,8131,0,8048,5358,5568,0,5432,7675,7883,8144,8322,8062,5651,8144,5509,5291,5325,5325,7952,8903,5329,5329,8641,5296,7972,5296,5296,5476,5476,5476,5476,8154,8154,5261,5426,7752,8316,7834,7834,7628,7710,7774,8473,7757,8888,5352,5218,8647,8015,7616,7710,7710,5314,5480,5325,8334,7548,5476,7599,7935,5358,7710,8093,5564,7599,5241,8140,7599,5485,5491,5237,8329,8727,7924,8359,5329,5730,8631,7558,7972,7500,5485,5647,8827,0,8277,8827,8407,5213,5237,0,7706,8227,7972,8827,7576,8277,7628,5661,5381,5407,7710,7977,8411,5464,5564,8329,7994,8334,5642,7994,5237,5241,8647,7710,8407,5241,5241,5432,8407,5248,7935,5285,7994,5285,5296,5712,7610,7521,8222,5726,7528,5320,5358,5476,5333,8504,8479,5693,5671,5325,8504,8504,7877,8772,8594,8594,8811,7706,5391,8879,7972,7599,8211,5237,8010,7616,5606,8438,8438,7548,5248,7478,5325,7478,5237,7491,5337,5509,8827,7548,7908,7628,8411,7972,7706,8402,8033,7658,8068,7542,8184,7643,7504,8816,7599,5274,7528,8756,7982,8509,5501,8359,7658,8022,7478,7742,8227,8519,8170,5476,8222,8783,8438,8456,7571,8982,7924,5568,8282,8293,5386,5241,8994,8201,8964,7786,7982,8170,8245,5401,7487,5442,8539,5491,5476,5647,5337,5564,5325,5352,5426,8467,8447,8625,5564,5237,5358,5337,7867,8190,8827,5224,5464,7500,5573,7920,5237,5237,8772,0,8548,8217,0,0,5476,7710,8504,8329,5391,5237,8149,7946,8582,7715,7972,5661,5401,7681,5464,5459,8052,8571,7952,7946,5237,7675,5320,0,7473,5688,7924,5296,5296,7710,7977,5476,7504,8625,7516,5296,5209,7500,7710,7521,8293,8727,8869,7990,8316,5606,7817,7768,5237,5280,8354,5352,8800,8407,5296,7864,0,8316,7834,8509,8604,5386,8267,8211,5218,5218,8467,7920,8653,8255,8354,7628,7628,5381,5237,5578,7516,5377,7653,8052,7867,5377,8201,5476,7542,5296,5237,7930,7800,5476,7946,8022,7768,7558,5296,7478,7478,5337,5301,7779,7811,8827,5476,8354,5301,8566,5386,7864,5699,8190,7542,7478,8438,8827,7893,7930,7888,8402,8227,8514,5301,5325,8721,8721,5426,8479,7706,8571,5606,8099,5237,8795,8653,8447,8745,5442,5471,8039,7877,7779,5509,8467,5309,5325,7516,7628,8154,7849,7768,8772,5377,5377,8077,7599,8287,8201,7643,5237,5629,7528,7994,5296,7864,7872,8548,5407,5218,7828,8170,8179,7558,8407,7930,7867,8179,7883,8721,7888,5386,8267,7521,8863,5459,5464,8104,7723,9071,5426,8604,8411,7643,8548,5377,8255,5442,7930,8190,7994,5717,7542,7994,7628,7628,5358,8190,7811,8438,5358,5476,7746,5218,8509,8903,7482,7864,8033,8711,7990,7990,7628,7663,7867,7834,7495,8811,8267,8548,8159,8873,5501,0,8005,8005,5699,7817,8267,7588,7588,7706,5642,8022,5464,5325,7786,8170,8519,8447,5661,8509,5241,5218,8340,7962,7914,8073,8509,8467,5661,7643,5218,7924,5301,5514,8272,7482,7839,7500,7542,7658,5464,8267,7914,8391,0,5617,8827,8647,5305,7715,8039,7710,8179,8179,8179,8402,8438,8594,8015,8316,5708,8617,7800,8721,5699,5372,8484,5296,8509,5401,7742,8022,5309,7482,5329,8987,7994,8641,7800,7542,5617,5218,8745,8756,8539,7972,7957,5676,7706,7706,7628,5255,8239,8827,5337,5248,7972,8316,7558,7706,5726,5352,7930,5432,8104,5285,8833,7710,5401,5255,8005,5296,8255,7558,7482,7482,5237,5237,7883,8772,7888,8217,8217,7588,5291,8604,7675,8010,5501,8149,8149,5248,7653,7706,5274,8438,5485,8239,7478,8179,5291,8140,5274,8772,8119,7920,5476,5573,5274,5386,7883,8772,5485,8022,7653,5285,8082,7811,7582,8196,8196,5726,8340,8800,5661,7616,5708,7790,5476,7516,7719,7667,8359,8514,5347,7663,7516,7834,7795,5367,7710,7628,7482,5491,8249,7663,8249,8217,7706,5305,5347,8514,5442,7972,7495,7495,7834,7924,8073,7972,8582,8582,5337,5564,7511,7763,7558,0,7877,8249,5347,8359,8190,8261,7877,5325,8170,7811,5617,5476,5401,7823,5651,5629,5291,8461,8461,8461,5717,8354,7478,5407,7500,5320,8164,5237,7558,8494,5381,5717,5407,8322,8154,8322,8427,7582,7706,7977,5459,9353,7977,5325,5391,8795,5325,8005,5671,8919,8427,8519,5717,5407,5381,7628,5407,7834,5329,5237,8427,5237,5237,8287,5491,5726,7982,7982,7982,7864,5391,5301,7790,7982,5301,7565,5612,8411,7828,7592,8987,5476,5476,5261,7982,7893,7834,8087,9358,7774,7687,5688,5333,8201,7904,8245,8705,5564,0,5437,5480,8015,7757,8756,7628,7692,7653,7914,5496,5476,7786,5568,7478,5480,7542,7972,8504,8144,8514,5514,7924,8816,8282,7935,7648,5237,7542,8282,7977,7628,5564,5708,5237,7920,7972,5209,7864,5471,7999,7558,5325,7834,8582,8411,8783,8170,7752,7982,8354,5291,7904,8196,5655,5241,8267,5509,8293,5476,5320,9361,8057,7853,8307,8756,5578,8057,5564,8174,7904,5708,8115,8641,5568,8099,8322,0,7982,8222,5224,7972,5352,8772,7734,7920,7658,5642,5655,7687,7924,8222,7849,8447,5476,8539,7710,7920,8925,5305,5712,7914,8387,5442,5726,8438,5573,7977,5564,8427,7605,7883,7637,7715,8184,7986,5564,8174,8282,5213,8093,8136,8625,7542,8170,5480,7904,5480,5480,5708,8170,5314,7533,7999,8126,8126,8539,8447,8170,8144,7610,5407,0,5218,5347,8381,8073,8115,7542,8727,7795,5391,5381,5241,8566,7817,7817,7768,8969,8879,8365,8898,7710,5661,8604,5296,8751,5635,5391,8136,8073,7710,7795,7972,8144,7888,7888,7972,7867,8345,8789,5655,5717,5285,7692,7582,8613,7681,8577,7687,5329,5459,8631,5291,0,8170,7972,8375,8387,9361,7738,5661,5386,8903,5285,5241,5325,5296,8329,0,7663,5480,7495,8451,8073,8845,5377,5655,7558,5612,5612,8946,5712,7610,8170,5352,5407,5476,8805,5261,7495,5509,5661,5496,8527,5285,7478,7667,8484,8316,8653,8154,5647,5314,8057,5333,7904,7653,8670,8077,5676,8115,8022,7491,5291,8201,7811,8201,9021,5476,8533,7672,5448,5480,8149,7962,7898,5407,7811,8479,0,5509,8196,5352,5617,8577,8438,8514,5564,8126,8170,8479,8494,7663,5676,8354,8548,8033,7805,5381,5647,8543,8136,8184,7495,8443,8494,5237,5274,7558,7828,5514,8099,8745,8461,7888,8087,7757,8057,8539,8015,8234,5325,8272,5280,7706,5213,5320,7542,8093,5476,8387,5291,5241,7779,7795,5476,8154,5261,5241,5329,7774,8772,7935,5224,5381,5377,8571,8422,7834,8451,7967,8170,5606,7542,8800,8126,8087,5381,5329,8039,0,0,7972,7883,0,5274,5514,8721,5352,8467,7495,5407,5655,8484,5407,7628,7834,8005,7823,8062,8110,7920,7994,8159,7967,8190,7622,5377,8077,5496,5391,8548,5655,5476,8598,7946,8411,7924,7811,7834,8857,8345,7500,8387,8494,7990,8663,5325,5377,7986,7986,7558,8509,8484,8484,5647,5381,5296,8845,5248,8851,5617,5661,8467,7542,7491,5496,7687,7930,5642,0,0,5347,7752,8196,7877,5717,7957,8548,8845,5285,8131,8196,5218,5699,5442,7710,8427,7962,7962,8073,5573,8164,5413,8451,5514,7990,5642,8479,7972,8293,5661,5407,5448,5688,5524,5274,8851,8940,5309,7763,7864,7805,7495,5261,7738,5381,5629,7533,8282,8245,5301,8272,7982,7972,8631,5367,7542,7752,8322,5606,5655,7864,5237,7495,7768,5496,7687,5717,7478,8869,5617,8756,5617,5320,8126,5642,8888,5448,8772,7730,7877,5612,8239,5248,8519,8039,5224,8527,8952,8539,7706,0,8533,5401,5629,7710,8721,5329,7632,7957,8548,5671,7982,7687,8519,5629,5396,8402,8716,5305,5419,7952,7616,7972,5708,7972,8077,7800,5261,5568,5320,5612,8641,5285,5305,5305,5578,5274,8946,8647,5419,7482,8131,7542,5329,5325,7616,5291,8959,8959,8149,5471,5274,8821,8005,8365,5476,8329,7558,7558,7730,5386,7946,7487,7542,5464,8245,9021,8184,7516,5241,5296,9345,5285,5325,8340,7883,7883,7935,8073,7935,5291,7675,8239,8543,5564,8255,8073,8451,5314,5622,5480,7734,8196,5471,8184,0,5661,5329,5285,8498,7738,7653,8255,9361,5407,8811,5218,5666,8144,5329,5261,5314,8115,7734,8287,5325,8903,5612,8340,8745,5485,7811,5381,8196,7908,7883,5237,5717,7920,8073,5708,8170,7491,0,0,5448,5651,5325,7658,5314,8479,5426,5347,8936,8170,7491,8613,7491,7491,8447,7982,5325,8888,8381,5717,7972,5381,8144,5305,5407,5661,8577,8772,8126,5448,5329,5329,7648,7972,7533,7924,5666,7730,5320,8365,8184,5274,7667,8154,5301,7986,7653,7616,5329,7610,7542,7542,8365,7542,5347,8589,7616,5712,8261,7877,0,8498,5237,5617,7632,7667,5651,5301,8365,5329,8772,8857,5301,7828,8631,8903,5285,5291,5347,5301,7700,7972,7952,7952,7706,7528,7734,5342,8087,8898,5337,5671,5476,7817,8811,8282,7565,5241,8073,7828,5568,8438,7478,7786,7849,8604,7675,5651,5573,5717,8539,7500,5285,8438,8033,8484,5655,7888,7628,7710,5708,8126,7500,5285,7888,5401,8077,5358,8227,7828,7888,5476,8811,8589,7990,7834,5471,7706,8307,7675,7888,5285,5485,7924,5367,8438,5320,7663,8255,7663,5241,8539,5655,5564,5320,8239,5726,7504,5237,5285,0,5285,5314,5476,5401,5358,5301,7675,7675,7752,5529,7706,7706,8533,8888,5291,8533,0,7893,8282,8282,5347,7628,5347,7994,8307,8119,8239,7977,7982,5661,7977,7628,5655,5285,8494,7853,5573,5309,7710,7482,5564,8322,8427,5726,5314,8427,8676,5314,7487,7528,5314,5314,8196,7516,5314,5573,8676,7605,7565,5661,8560,7628,5391,8456,5337,0,8334,7706,8427,7790,5329,8456,7920,7511,5564,7565,8190,5485,5485,8447,8443,7999,5476,7511,8670,5407,0,5476,7706,7972,8010,8647,8010,8427,8625,5342,7628,7478,5325,5325,5325,8154,8915,7883,8484,7972,5372,5661,7681,8329,7500,7500,7500,8811,7653,7658,8539,7500,7877,5391,8582,7924,5391,7599,8438,8438,8068,8104,7478,8267,7930,8608,8115,8282,5381,8653,8119,7982,7565,8052,7952,8227,8190,8391,7643,5501,8196,7982,5476,5237,7528,7834,8115,7565,8772,7914,8170,7924,8365,5224,5426,7616,8190,8456,5655,8093,8104,8052,5712,7571,5305,8411,7500,7643,7999,8548,5391,5391,7628,7893,5459,7790,8447,8227,7752,7582,7663,5224,8608,7576,7610,5274,8582,7681,8783,5391,5464,5464,8190,8005,7500,5285,5309,7972,5309,8987,8316,8062,7834,5671,7521,8635,7675,7491,8267,5296,7653,7653,7667,5509,5274,8653,7576,5237,7558,8119,8201,5578,5578,7478,7653,5296,8052,8033,5509,5606,5314,8397,7576,7734,5485,5237,5261,5476,5237,8745,7706,5485,7952,5655,5476,7972,8345,5509,7516,7779,8227,7599,7675,8365,0,8190,8190,5476,5367,8267,5296,5564,8438,8005,7849,7616,8762,7994,5320,8745,7790,7823,5407,8699,8345,7924,8104,5642,5612,5309,8391,5285,8509,5524,5534,8227,7706,8052,7834,5301,7663,5325,7952,8514,8365,5661,8052,7715,5305,8827,8447,8015,5296,8222,7653,8190,8732,8239,5274,7883,5485,8959,7516,8068,5237,5476,5325,5464,7658,7491,7491,5301,8772,8316,7675,7893,8196,7999,8052,5476,7521,5426,9367,5285,8222,5485,7834,7663,7491,8613,5320,8249,8329,5642,7734,5301,8033,8582,5459,0,7834,8154,5329,5237,8164,7610,7700,7632,8375,8635,5629,7834,5573,8354,8354,5726,5476,8845,7491,7982,7849,5320,8340,8340,0,7800,8554,8554,5377,8397,8179,7500,5296,7482,7867,5501,7920,8354,5337,8821,5352,8282,5564,8093,7893,5726,0,8293,7681,8851,5655,7843,7843,5676,8391,5464,7599,8068,7999,5325,7706,7616,8548,7599,8316,7843,0,8249,7610,7715,8919,7994,5305,8543,7687,7605,7605,0,7605,8504,7904,8312,7888,7888,8479,5301,5688,5325,8484,5358,5519,8805,7839,8302,0,8925,7768,7542,7628,8811,7478,5496,5261,8329,8010,7478,5209,5301,5426,7774,8879,8504,8670,5480,8539,8015,8211,7710,5476,7786,7817,8762,5476,7706,5320,8461,7681,0,0,0,8277,0,8211,7924,7538,7622,7487,8467,8560,7893,7930,5381,7582,5524,5642,5274,5573,8658,8994,5320,5396,7528,5442,7605,5442,8022,8282,8022,5325,8354,5309,8131,5325,7790,7920,5358,7599,8608,7565,5501,5476,5564,7823,5237,7982,8387,8307,8329,5655,5642,7516,7872,7864,5712,7999,8039,7972,8827,8267,0,8307,5320,5372,0,5301,0,5407,7558,0,8322,8527,7823,7675,5274,7692,5255,5476,5237,7972,8625,7675,7977,7977,8131,5564,5305,5476,7491,7491,5391,8077,5358,7888,5476,8093,5224,8447,7986,7849,7533,8010,7548,5491,7839,7924,5564,8073,8711,8811,7706,8297,8110,7790,7999,8022,5578,5367,5337,7914,8170,5480,7571,7823,8381,5218,8539,7972,7687,5496,7883,7786,0,8484,5708,5564,5407,8073,7888,7990,8716,7605,5358,7511,7637,7687,7487,7605,8456,5391,8625,5496,5642,5291,8484,5391,7972,7511,5712,0,8164,7687,0,8473,8427,5381,7610,7582,5329,0,5301,5347,5218,5320,8329,8969,7706,5655,7706,5301,5476,7521,5655,5301,7588,7795,8795,5224,8504,7675,8073,8504,5224,5209,5442,5476,5381,7500,7605,5407,8397,7696,7696,5337,8048,7817,8898,8149,8427,5301,0,7924,7849,8682,7972,7710,5717,5437,8375,5564,5381,8560,7952,8272,8687,7994,8582,8613,8345,8345,5676,5476,5314,7692,7972,7723,8316,8940,8940,7811,5381,8484,5529,7888,8863,7628,8365,0,7616,0,0,8427,8387,5386,5655,8903,7706,8255,5396,7908,5419,9345,8329,5612,8302,5655,7930,8805,7795,5485,8073,8543,5564,7872,8316,5291,5237,7843,7511,8527,7706,7752,7667,8811,8140,7779,5688,8805,5337,5712,7898,7610,5352,9345,8539,8190,5647,5372,5708,7786,5358,8539,7653,5209,7972,8504,7930,8845,5407,7811,5509,7495,7977,7681,5325,7675,5329,7811,8670,8433,5501,8022,8249,7478,5301,5301,8307,8433,7616,5612,8170,5377,5381,8653,5314,5320,7877,8010,7994,5485,5301,5224,0,0,8272,7972,8277,5401,5407,5314,8093,5301,7706,5224,9032,8827,7542,7746,7706,7706,7774,8234,7877,8594,7893,5213,7898,8057,7643,8548,7558,5372,5325,5301,5352,7628,7628,7786,7643,7582,5629,8461,7599,8539,5237,8010,7558,8427,7706,8467,7834,7628,7768,5476,9367,8504,7805,8873,7706,5314,5564,7990,8277,7967,7967,5314,8721,5501,5501,8033,7723,8077,5509,8039,5329,8052,5381,5476,5442,8170,8170,7558,7571,7779,8322,7972,8863,8387,8170,7930,5285,5314,5209,8888,5352,5693,5573,0,0,0,5407,7952,5237,8762,7542,0,0,0,7632,7972,0,0,0,0,5352,8427,0,5480,9367,7888,7491,8998,7994,7994,8676,7977,8548,5407,5476,7914,5237,7834,7834,8732,8427,8104,7628,7849,7687,8494,7858,5358,5642,8154,7500,8893,7924,7986,7834,8543,7643,8005,5381,8005,7487,8527,5661,5480,7972,5407,7715,7790,5573,7982,7982,5401,8873,8805,7823,7628,5337,5712,8022,8190,8190,7616,5655,7858,7491,5325,5381,7491,5573,8598,7628,8694,7994,5712,8539,5325,5381,8509,5688,7616,8110,7946,7957,5333,0,0,8751,0,5671,8772,5347,8267,7628,8033,5329,8170,0,0,0,5661,7977,5476,8427,5564,8716,5651,7843,8164,7786,5407,8170,7738,5642,5655,7898,8302,8467,5209,8391,7588,7977,5642,5381,5464,8811,7893,7687,7542,7538,7962,8467,5661,8164,5391,7972,8402,8267,8805,7511,8164,5629,5699,8533,7487,8119,7738,7990,5237,7786,7706,8898,5524,7962,7533,8272,5717,8329,7828,8417,5325,8851,8131,7805,8322,5496,7542,8359,5712,7500,8461,5524,5314,5480,0,7924,7828,7977,5407,8397,0,0,8888,7605,0,5237,7706,5401,5296,5218,7542,8039,5671,5671,8641,5396,8140,9367,8402,5413,5337,7982,5419,7982,7811,8005,5476,8077,5524,8756,7952,7952,8340,7800,5309,8539,9345,5333,7843,8033,8827,5301,5519,8745,8617,8010,8316,8721,5325,5612,5666,5329,7779,5651,7957,8783,7588,7990,5320,5629,8473,5329,8484,5320,7687,5320,8015,8514,5305,5453,7924,7681,5352,7605,8302,5237,7768,7946,5407,8827,0,0,8322,0,7616,7696,7528,7972,8255,8397,8827,7734,5320,5396,8005,5655,9021,8354,8427,5237,8329,7828,8048,8811,5305,7478,8255,5386,7516,7511,8255,5274,8489,8010,8427,5480,8149,8267,8598,8422,7558,5629,8249,8170,7558,7588,5291,5291,8772,5296,5325,7495,7521,5480,8381,7872,7605,8519,8833,5501,7723,8297,7946,8433,7786,7511,8149,5524,5573,0,0,0,0,5325,8307,0,5329,0,0,8467,7738,5320,5419,8772,7516,8789,7482,5237,5342,5261,8397,8190,7558,8811,8170,8397,5476,8196,7734,7834,5666,8527,5296,8903,5325,5342,8073,5358,5693,5573,9361,7908,5325,5381,7977,8745,5578,5407,8322,8479,5476,8473,8022,5617,7516,0,5496,8249,7482,8272,7658,7746,7706,0,8888,8154,5325,7542,5651,8381,5476,5524,5407,7482,7696,8745,7834,7706,5651,7999,7952,8104,5325,8005,8312,8919,5573,0,7746,5337,7972,8687,7542,5666,5666,7730,5329,5301,8498,7672,7763,5296,7742,5329,5381,5524,8762,8467,5301,7893,5314,5448,5401,0,5573,0,7605,5329,7834,5301,7605,8033,5381,7864,7588,8359,8077,7628,7610,8277,0,5274,0,8170,7675,8093,7616,5407,7482,5337,7616,7521,8789,8073,7877,5347,8170,8617,5617,7994,8827,7768,5726,0,0,7628,7632,5301,8365,8375,8903,5291,0,5347,5347,7605,5666,5301,7904,7700,7628,8093,0,7542,7839,7811,7528,7628,7628,7542,7742,7500,8783,5573,7710,8509,5476,5291,5237,7500,5367,7628,7908,7843,8739,8851,5237,7663,5476,7706,7982,7710,8196,8739,8795,8739,8795,8732,8302,0,7482,7528,5661,7628,7542,7675,5476,5717,7478,8772,5309,7742,7982,5377,7811,7500,9054,5237,7675,7500,5237,0,5401,5573,5476,8795,7628,8287,7811,7972,5241,7839,8201,7478,7706,8201,8201,8082,8170,7542,7710,7719,7710,7719,7548,5342,5342,5301,8451,7628,5301,7952,5491,5491,7487,5407,5578,5305,5305,5642,5305,8140,7924,5606,8119,5491,8987,7500,8329,5320,8179,5291,8647,5280,5688,7588,8745,8267,5401,5476,8998,7972,7491,8179,7643,7883,5325,7491,0,8267,7752,5442,8888,5377,5309,8987,7482,7757,8140,5296,8498,5476,7883,8762,5419,5401,8888,8762,0,5407,5320,7742,8676,7605,7482,8745,5476,8302,5699,7990,5642,7667,7828,5296,5296,7786,5699,5325,5476,7742,5296,8676,5476,7675,7478,8721,7715,5712,5712,7663,7571,8762,7628,5358,5358,5358,7920,7920,5358,7877,7790,0,0,7734,0,7977,8427,8159,7715,5480,8329,7696,8164,5274,8170,7715,8052,5688,8307,0,8772,8456,8170,7888,8402,5358,8589,0,7790,5342,7628,7628,5480,7849,5407,7738,8589,5329,7715,5301,8316,8164,8227,7734,7632,8427,5514,8427,8249,7632,5726,5459,5391,8539,8438,5291,8211,7706,8959,8716,7706,8479,5274,8732,5501,8915,8028,0,5564,7914,7582,8745,7706,7482,5237,8370,7924,8345,8387,7990,8745,8387,7582,7883,5329,8745,7924,8267,8267,8839,8589,5241,5224,5218,8903,0,5333,8447,8068,8010,7952,8805,7972,5688,8888,8115,7746,8498,5296,7757,5476,5496,5314,8732,5509,8010,5491,5237,5480,8211,5688,7706,5261,5213,7653,7542,7478,7478,8329,7487,8613,7817,5419,7710,7478,0,0,5629,7972,7710,7542,5651,7628,7599,8745,5485,7872,7667,8062,7658,7768,5325,8411,8411,8811,7752,7548,7565,7504,5291,8560,0,7706,5501,7500,7500,8196,5476,8494,8267,8467,8560,7834,8033,8033,7883,5337,5471,7982,8154,7867,7715,8110,5712,7738,7746,7478,5248,5606,5358,8302,7972,8456,7533,8863,8925,8131,7511,5712,8115,8527,7742,5301,8099,8777,8527,7994,7982,5305,5712,5320,8170,8365,5480,5480,5480,7849,5301,5651,5476,8048,7893,5337,5606,7972,7999,7786,8427,7834,7487,8582,7592,8170,5661,5688,5476,7977,7548,7768,8073,5296,5651,8543,5314,5573,5333,5337,7786,8062,8811,8048,7790,7487,7982,5255,7839,8010,7710,7588,8381,7558,8093,8174,8073,7706,7487,8447,8170,8354,7605,8119,5666,8190,5529,5564,7533,8438,7658,7924,5325,5218,8721,5413,5529,7610,5329,0,8073,5661,8312,8115,5485,7482,7576,5325,5476,5296,5296,8397,7558,7482,7994,5730,5407,7924,8577,7487,5325,7696,5426,5564,7730,5612,7972,7482,7478,5237,8898,7605,5419,7632,0,8345,7582,5476,8711,5666,5476,5651,7768,5309,5305,7994,7675,5661,8062,7500,8851,8582,8272,7867,8170,7696,7576,8613,5255,8329,7504,7972,8687,7811,8391,8154,8631,5280,5213,7478,5726,7511,5476,7977,5485,7542,5419,5285,7558,5391,5314,8604,0,7908,5325,7511,7877,7643,7982,8789,8329,5309,8577,5688,7994,5578,7667,7653,7898,8211,5314,5337,5237,8073,8307,5509,8062,5476,7734,7616,5347,8052,7843,7653,5301,8845,5564,7478,5401,8104,8527,5476,7628,8316,8149,8370,5309,7977,5248,5534,5712,5342,7558,8456,5274,7914,5647,8653,8751,8077,7653,5485,7675,5617,8184,5647,5218,7675,5274,8805,7864,7588,8068,5676,8433,5377,5301,8839,7487,5666,8839,8272,8762,8149,8277,5401,7994,8494,8267,7811,8539,0,8489,5407,8015,7719,5564,8721,5426,8087,8969,8387,8287,8015,7491,8571,8494,7653,5480,7582,7849,8494,8170,8811,7779,7643,7738,5314,7828,7867,8407,5676,5209,5237,5642,7706,7786,8039,7653,7516,5629,7576,5352,8052,8227,5320,7706,7565,7710,5329,5386,8170,8272,8827,5666,7972,5352,7893,8022,5606,7920,7883,7628,8447,7628,5329,8811,5651,5485,8093,8099,7482,8402,5726,8359,7628,8184,7914,8647,8104,8631,8467,8277,7643,8745,7834,7542,5606,7622,7972,7482,5651,8543,8467,7752,9071,7893,8745,8467,7990,5325,5617,8467,0,5329,5209,8762,0,5407,8438,7920,0,7628,8467,7914,7914,8110,7811,7605,5407,8699,7628,5688,8805,5726,8762,8527,7687,8073,8494,8494,8539,7994,7752,8613,5661,8604,7994,5717,8461,7834,8062,8190,5651,7990,7790,7616,7834,5337,8062,7622,5426,5712,5437,7643,8716,8005,5391,7864,5213,5712,5401,7706,7706,5712,5606,8694,7994,8179,8641,7746,5296,5305,7500,5325,9054,5407,5407,7982,8527,7521,5476,7482,8427,5391,5381,7558,5464,8772,7628,5358,8438,5391,5647,8119,5218,5726,7548,0,8484,5285,0,7482,5629,7610,8154,8467,7823,8282,5337,7768,7805,7779,7877,7834,8104,8077,5209,5509,5391,7800,7616,0,8005,0,5407,7500,7672,7952,5671,0,0,8312,5309,7952,5629,8467,5612,8467,5401,5642,8249,9032,8119,7990,7658,8245,8631,7511,8131,5514,8391,7687,5391,5476,8099,7538,7734,7994,5301,7774,7478,5237,7752,8322,8115,5391,7588,5476,5655,5448,8267,5519,7482,8164,7643,7588,7588,8447,7738,5391,8613,7994,7533,5573,5573,8334,5534,8777,7763,7849,7828,8052,5464,5237,5209,8539,7972,7616,5564,5381,5396,5717,5209,8272,8909,5342,5358,5285,5296,8234,7482,5524,7610,7972,7834,5617,7800,7616,8104,5329,5347,8375,0,8888,8772,7628,5448,7982,5358,8473,7972,5419,5568,7914,8987,8539,5651,5708,5329,7982,7982,5337,7877,8010,5218,8234,7800,8745,7628,8647,5325,8387,5285,7706,5237,5325,5329,5329,7610,5309,8039,8827,7957,7972,5671,8322,5301,7834,8340,5285,8827,8658,8641,7742,8909,7491,5237,5651,5629,5305,8987,7653,5401,5347,8631,5301,7542,8527,8190,5476,7800,5209,8211,8756,5666,5352,5320,8015,8015,5248,7500,7811,8144,5407,7834,8519,8239,8402,5377,7924,5419,8827,7616,8062,8329,5320,8721,7616,7675,0,0,7500,5401,7972,7994,7920,5291,5285,8312,8903,5296,5381,7478,8994,5325,7533,7952,7675,7542,7542,5237,5329,5237,8190,5471,5464,8438,8489,7588,8239,5655,7548,5476,8539,5509,7883,8772,8783,8329,8005,0,8670,5647,7605,8589,9372,5358,5261,7877,7877,5320,8316,7734,7516,7994,7719,7719,7558,7592,7558,5396,5285,8149,7935,8811,8879,7946,7487,5320,5352,7653,8267,7511,8062,5564,8052,7849,5274,5407,5261,5237,0,0,5347,0,7628,7516,8438,5372,8903,5509,8115,5661,7628,5301,5391,5529,8093,7800,5209,5218,7908,8179,5401,7828,7491,5708,7811,5655,7877,7800,7883,7883,5476,5342,7920,8170,7738,8196,5325,5314,5401,8789,8039,5309,5501,7719,5325,5342,5296,5573,7738,8022,5693,0,7605,8277,8888,5401,5651,5391,5320,5651,8381,7616,7616,8249,5309,7706,7920,5325,8052,8613,8397,8494,8272,7482,7482,8217,7839,8154,5485,5347,7667,7663,7734,5314,7994,8888,7786,7542,5426,0,8144,7893,0,0,5407,7994,7632,8365,5329,5301,5337,7924,5329,7487,5381,7616,8762,7599,5296,5661,7533,7914,8473,7877,5305,7511,5407,7734,7719,7558,7786,8888,8154,5274,5329,8196,7653,7616,5218,5301,5485,7675,7616,5342,7994,5661,8359,8052,7605,7610,8277,8217,8010,7982,8277,0,0,7616,5651,5325,5401,5407,7616,5501,7516,5476,5407,8354,7877,5491,8261,5407,5347,8010,8617,8467,5314,8527,5617,5666,5347,8827,5726,5218,7542,8048,8721,5699,7834,8052,0,7730,8365,8375,7834,5301,5651,5261,8772,8903,5285,7877,0,8052,7904,7605,5347,5347,7700,5509,8375,8329,5274,7834,8811,7834,7628,8154,7487,7763,8687,8919,5296,7675,7675,0,8062,8093,5372,5622,8484,7687,5661,7710,5314,5437,5437,8179,7924,7706,7548,5501,8816,7592,7752,8312,5476,5329,7805,7920,8509,7533,7834,8509,8334,7715,8783,8239,7952,8756,8068,8687,7528,7972,8687,8687,7994,8322,0,8245,5367,5241,7605,7990,7999,5564,7904,7888,7888,8093,5314,8190,8170,8772,8174,7592,8174,7658,7658,5224,7924,8316,7653,7605,7687,7828,7994,5391,5401,7710,5464,0,7982,8851,5347,5485,5285,7500,5426,7768,8577,7811,7924,7675,5519,5274,7482,7478,7576,5642,5391,7994,8316,5529,5437,8509,8062,7632,5367,7605,8190,5241,8312,7834,5296,8687,5578,5296,8898,0,8010,8670,7491,5296,0,5629,5309,9071,0,5237,5564,7592,7935,7734,5485,5314,8805,5509,8370,5352,7843,5261,7982,8527,7710,8164,7982,0,5320,7849,8329,7692,5291,7675,5237,7834,7653,9345,7667,8539,5661,5325,7478,0,0,7653,7834,7811,8514,8170,5442,7930,5501,7516,8653,7643,8068,5237,8402,7478,8062,8170,5564,8494,5285,8827,8527,5255,7723,8893,5237,7723,7528,5314,7834,7834,5476,5291,7628,8461,8297,7920,7786,0,8119,8227,8670,0,0,0,0,8033,7849,8005,7548,8676,5367,5296,8527,5401,8190,5426,5464,5285,5407,5358,7616,7605,7994,8641,5606,5237,8699,8699,7877,7834,7592,7592,7628,5712,8302,7994,7491,7528,7723,8110,5712,7811,7500,7999,7994,8010,5688,5342,7924,8577,7605,0,5524,7795,8222,7982,8267,5367,0,0,8411,8131,8422,5629,8783,5261,8869,8073,5464,5661,5237,7478,5237,8267,7849,7849,5237,8267,7504,8716,5261,0,5642,8329,5651,5401,7616,7478,8164,0,0,8322,7511,5237,5358,8473,8548,5329,5407,8087,5476,7957,8527,5342,5476,8316,5291,8548,8267,7982,5476,7972,5708,7994,8239,7653,7742,9071,7592,7800,0,8987,8498,8833,5407,5237,5237,5237,5476,7675,7710,5464,7877,7491,7542,8297,7834,5274,8255,9021,8919,5471,7914,5285,5501,7487,8239,7628,7516,8316,8670,5501,8010,7834,8329,5347,5712,5629,5476,5485,8514,0,0,7616,7628,5476,5529,5347,7658,5372,8179,5342,5237,5699,8827,5401,5296,7605,5661,8093,7994,5476,5661,7999,5296,0,0,5347,8613,5274,8898,8329,5309,5442,5442,5642,7849,5347,8473,8164,8987,5305,8222,8893,8015,8589,5708,5367,8582,8851,7628,7746,5329,5442,5442,7834,5237,7920,5391,5391,5688,8261,8354,5347,7582,5291,8316,8721,5688,7779,5651,5629,7779,7834,5224,8093,8498,7628,9361,8387,8994,5241,5325,5381,8467,7663,7994,7877,7516,5291,5564,7491,7904,5459,7491,5642,8443,8617,7696,8322,8519,5717,8205,8716,8322,8484,8322,7858,8282,7533,8670,5407,5213,8762,7982,7853,5333,7548,5459,7898,8255,7982,5337,7558,8762,8387,7558,8816,7763,8751,8484,8711,5480,7715,8149,8504,9377,7565,7790,7715,5391,7478,7834,7977,7930,5391,5407,7786,5337,8375,8119,7715,8539,7542,7768,7768,5209,8594,5237,8211,8946,7542,7478,7786,5237,5301,5301,7516,5325,8461,7972,8543,7768,8489,8762,8170,7977,5407,8527,7858,7990,8170,8898,5573,7478,7930,7632,5381,7538,8682,7994,5301,8387,8316,8387,5419,7853,5301,8762,8577,7920,8647,8222,5237,5442,7994,8005,7521,7768,8010,7904,8010,5688,7491,7774,8073,8345,5381,9345,8687,7538,5337,8756,8504,5325,8387,7599,7811,9345,8267,8582,8816,8539,8745,7548,5442,7930,7920,8170,8447,8119,8174,5367,9008,7982,8093,7893,8777,8447,5391,5337,8131,8354,8170,7883,8312,7786,8316,8381,7811,8727,5285,7849,7999,5325,5476,5261,8227,8164,8087,8316,8149,8762,5367,5391,5396,5241,7628,7962,7628,5358,7478,5237,5676,5301,5367,7482,7940,7843,7930,7972,7834,8302,5301,8456,5274,7757,5471,7752,5642,7904,8756,8447,8473,7482,7478,5237,5407,8048,8653,7834,8039,7883,5651,8227,5476,7972,5241,5296,8249,7774,8140,5617,7994,8732,7632,7982,8548,8987,7994,8527,8494,8329,5426,7605,7790,7994,8467,5274,8641,8387,5386,5661,7977,5730,8411,5337,5337,5712,7687,5642,7962,8073,7977,5396,8467,5448,7663,8467,5491,7628,5391,7883,7605,8201,5655,8519,8670,7800,5485,5419,7715,8015,7877,5708,5377,8427,7849,5358,5291,5358,5358,5464,7734,7571,7628,8316,5642,8239,8851,7675,5218,8631,5237,5717,5676,8762,5296,7908,5274,5661,7738,5274,8329,8381,8048,8154,8417,7696,8577,5386,8687,8087,7952,7738,5274,5651,8261,7811,5386,7632,5274,7706,5291,8190,7622,5209,5329,5329,7628,7588,7599,7482,5391,5693,7605,7500,5325,8062,8539,7768,8811,8484,7628,5496,7710,8329,7538,7576,7478,8613,7752,5381,8387,5501,5329,5413,8354,5291,8604,5291,5509,7637,5712,7883,7920,7994,7811,5274,7558,8093,5491,5476,8345,5255,7828,5564,8190,5237,8073,7839,7823,7977,8670,8312,7628,7990,8297,7864,7914,5476,8443,7977,8438,5261,7511,5358,5655,5655,5291,8048,7610,5309,5285,5407,8589,8687,5274,7576,7817,7834,5519,7924,7500,7632,7487,7605,7528,5519,8329,5377,7696,5442,5642,5367,7946,7952,5248,7500,8282,8456,5564,7849,8170,7643,5213,7864,7558,5377,7893,7478,8387,7667,7930,7930,8805,5274,8287,7653,8190,5224,5688,7768,7843,5301,5519,5564,7511,7491,5237,8093,5301,5606,5401,5612,8514,8479,8772,5291,7805,8427,5352,5629,5730,8170,8033,5377,7752,5485,5381,7828,5573,5314,8456,7558,7982,7706,8548,8653,8227,7706,5413,5509,5329,8827,8721,7834,7757,7930,7516,8196,7920,8994,8716,7774,5407,8048,7491,7723,8302,8745,7643,7628,7790,5712,7834,8190,7548,5426,7977,5381,7994,5655,7994,8893,7811,5381,8732,5407,5622,7924,8494,7768,5367,7935,8467,8795,5386,7982,7616,7628,7930,7872,7719,7511,8427,8164,5612,5642,5407,7500,5309,7839,7616,7538,7972,8548,5629,5301,7843,7952,5655,8322,8451,8604,7999,5642,7663,7853,5647,8925,5329,5622,8827,5309,5476,8402,8827,7972,5301,5367,5612,5688,8190,5708,5401,7800,8015,7538,7898,7616,5629,5329,5381,8919,5261,8833,8329,8777,8903,7516,7930,7723,5218,5464,8772,7734,5485,8010,5309,7511,5325,5437,5485,7663,5358,8179,5726,5372,8903,8402,8234,5372,5296,7811,7719,5342,8732,7628,7628,5309,5329,8888,5485,7752,8397,7653,5237,5325,8190,8821,8154,5671,5666,8647,5301,5401,5329,7800,7542,7723,5578,7616,7582,5622,7610,5261,8255,8365,8422,7616,5651,7521,5237,8721,8479,8365,7811,7795,8073,5459,8222,7982,7972,8647,8282,8261,5301,8631,9026,5419,7542,5291,7864,7565,5407,5534,7742,8073,7786,0,7588,8093,5476,5255,7839,5309,7977,8255,7710,8527,8903,8249,8057,8863,7667,8411,7576,5655,8903,5485,7616,7706,5407,5573,8539,7742,8249,5622,5352,7516,8833,7478,7920,7883,5534,7616,7834,8811,5491,7914,7478,5606,7653,8227,8119,8577,8119,7877,7877,8222,8119,7588,8365,5218,8952,5329,5564,5218,5413,8527,8381,5606,5337,7977,7914,8261,7828,5296,7823,7828,5255,8805,5396,8805,7768,5209,8249,5358,8267,8365,8467,7511,8227,7715,8267,8010,5564,8845,5606,5381,5381,7768,7994,7696,5606,7696,7528,7533,7487,7834,7834,5391,7511,8543,5655,5573,7715,7790,8604,8307,8126,5358,8245,7972,5329,7706,5329,7768,7779,8010,5396,7628,7628,5237,7667,5476,7817,7628,5459,5442,5224,8903,8287,5325,5509,9382,7924,5407,8641,5666,5325,5496,7877,7592,8641,7516,8028,5419,5442,8461,5459,5459,7920,8077,5437,5320,5320,7972,5476,8519,8131,5693,5358,5381,8239,7817,5717,8484,7667,8789,5261,5651,8293,5301,7924,8033,5337,7904,5381,5568,7972,5564,5661,5358,5476,5301,7658,8519,8527,7605,8174,7920,8811,7990,7839,5661,8873,7883,5655,8048,7972,8909,8170,5325,7893,5726,7828,7977,5274,5496,5224,9032,5241,5218,5485,7768,5248,8316,5476,8509,7994,5296,7888,7924,5301,7972,8727,8387,5712,8307,5485,7675,8316,7516,8211,7920,7675,7940,7734,5301,7972,8451,8170,7478,8302,8149,8087,7811,5274,8527,5352,8527,8721,8772,7893,7538,7516,7710,5325,7828,8345,7710,5358,7930,8438,7786,8217,7864,7994,7628,8402,8479,7605,8504,7883,5501,7867,5325,7628,5730,8527,7986,7924,7752,5647,7628,7795,5396,7811,7692,7977,7482,5476,5329,5514,5291,7710,5237,8721,5476,7752,5325,8519,8282,5666,7511,7637,8087,8293,7828,8245,8959,8772,7877,8473,7795,8140,7632,5476,8548,5442,8015,8533,7972,9045,5699,5496,7957,5329,5305,5309,7482,7616,5464,7888,8239,7610,5485,7957,8149,5274,7893,7883,5529,7990,7834,8282,5496,8519,8625,5407,7628,7994,5476,7893,7920,5666,5301,5320,7883,8461,7828,8073,8277,8959,5325,7710,7924,5274,5381,5241,7834,5301,8154,8277,5407,7828,5274,7616,7482,5726,5218,8772,7828,7687,8509,8375,8073,7877,7952,8312,8048,8919,8048,8126,8126,7867,5358,5372,5372,7790,8407,5314,5381,5464,7952,7839,8093,5524,7952,5407,5285,5352,5524,7663,7864,8052,5407,5358,5509,8498,5305,5237,7663,7592,8052,5464,8052,7817,7977,7478,8349,8577,8312,8946,5285,7972,7582,7605,5301,8647,5726,5285,7920,8811,8174,7576,7667,8149,8879,5699,5568,7786,7667,7667,7576,7687,5381,8427,8762,8438,7990,5485,7628,7930,7999,7548,9054,5218,7616,7849,5476,8329,5676,7849,8608,8427,7834,5407,7849,7628,8005,7582,5671,8479,7533,7478,5688,8119,8479,5329,8427,8249,5329,5309,5391,5407,7533,8721,8345,5329,7924,7576,8903,8010,7786,5301,7715,7558,8811,7500,8211,8211,7972,7706,7935,5606,7521,5471,7528,5237,7533,8222,5471,7478,8267,8119,9389,8267,7746,7533,8827,7622,7883,5712,7790,8795,5274,7742,8345,8174,5241,5642,7914,8154,7723,5655,5396,7930,5386,7710,8119,5712,5476,7605,5655,5655,7746,8582,8467,5459,5476,5209,5209,8783,7687,8190,7893,7982,7853,5342,7952,5651,7883,5476,7696,8391,8190,7710,8582,5676,8711,5655,7681,7924,7834,5305,7548,8447,7999,5241,7528,7667,8670,7653,7811,8539,7478,5296,5676,7864,5509,5274,5237,8653,8277,5407,5261,5314,7643,5509,8093,7823,7883,8577,9394,5485,5241,8582,8277,5342,5676,8839,5342,8762,5329,5358,7715,7643,8447,5329,5476,5381,7774,7576,7628,7643,7482,7994,8670,5325,5699,8375,5391,5676,5661,8762,5309,5699,5377,8005,5524,7872,8711,7500,8048,7752,7622,5442,5301,5651,5534,5568,8387,8033,7990,5448,5367,7723,8334,8391,7800,8387,7972,8015,8334,7757,5301,5305,8598,8827,7957,7710,7800,8647,7558,5325,8249,7834,5301,8959,8302,8255,7734,7605,8919,7914,8598,8239,7487,5301,8795,7491,7500,8316,8711,7516,8005,5274,7516,7663,5296,8427,5407,7786,8762,5726,5622,8589,5514,8179,8329,8179,7663,8249,5337,8888,7746,5337,8582,5291,8190,7746,8154,8048,8893,7610,8721,7800,5726,5573,5629,8795,7605,7790,5309,5524,7628,5448,8604,7872,5391,5476,7786,7972,8093,7914,7616,8170,7972,5285,8451,8676,7663,5285,8833,8154,8126,5391,5688,8312,5325,5209,8811,7478,5480,7692,8322,5237,8010,8582,8903,7538,8302,7883,5717,5301,5564,5209,7849,8154,7757,8879,7706,8795,5381,5501,7864,8387,7920,5578,7834,5342,5622,7935,5471,5529,7834,7667,8527,8048,8068,7687,5726,7628,7632,5480,5381,8539,8533,5655,7663,7893,7715,7605,5301,8411,8293,5255,5352,8093,8174,5333,8312,8073,8884,7914,8925,7495,5301,7610,8316,7742,5301,5524,5573,7667,5329,7605,5717,8154,7663,5386,7977,5329,7994,5564,7632,8800,5426,8119,8316,8068,5237,5476,5491,8851,5367,8255,8467,7908,8255,8322,8946,7675,5699,7768,7843,7752,7628,9059,5367,8211,5337,8539,7935,7935,7864,7511,7616,8211,5699,7834,8302,8653,7628,7994,7500,7849,5386,5407,8456,8022,7675,8946,5352,8391,8863,8571,8554,7706,8925,8745,7516,7667,8073,5693,5564,7757,7849,7687,5329,7663,5342,5699,5564,7930,7576,8217,7478,7706,8099,5509,7828,8461,8456,7706,8033,7487,7834,5459,5693,8762,5480,5381,7616,8411,5476,5358,7994,8851,5655,8676,5367,8903,7576,5386,5352,5407,8539,8772,5496,7473,8359,8272,5274,8190,5699,5699,7538,7834,8184,5476,7663,7839,7914,7487,5629,7898,5396,8631,7994,8940,5666,8451,5655,5367,7706,5401,7533,7994,8245,7675,5578,7990,7986,5396,9399,8234,5622,7877,5325,5708,5352,5329,5329,8795,8322,8033,8211,5666,7864,7706,5305,7706,8402,8443,8745,8287,7675,5325,8149,8073,5726,8833,8919,7904,7763,7516,5342,7828,5464,7533,8925,8255,8539,5301,5337,5285,7786,7786,8255,5471,5612,7628,5476,7849,7977,5647,5666,7811,5573,5237,5699,8903,5476,5419,7920,5372,8387,8751,7706,7663,8196,5407,7628,8821,8249,9406,8149,7779,5612,7763,8936,5274,8582,5666,5666,7972,5301,5301,8010,5699,8087,7616,9045,7610,7696,5301,8073,8617,5381,9067,8365,7834,5391,5391,5301,8705,5617,8354,7487,7706,7738,8800,5661,5274,5274,7972,7706,7972,5413,8217,7548,8068,7478,5391,5337,7972,7681,5564,5564,5651,8443,7972,7491,5209,7571,5726,7982,7605,7914,5342,7839,7637,5651,5329,7628,7521,7986,7681,8647,7605,7952,5367,7719,5325,8077,5655,5524,7834,5309,8033,5671,8073,5693,8479,8154,8272,7706,7710,8721,8397,8484,5329,5224,5309,8479,7823,5329,5261,5578,7986,5296,5730,5237,7482,7576,8154,5655,5564,8467,7482,5274,7924,5377,5476,5712,7487,8539,5296,5314,5655,5218,5325,5325,8005,7487,7538,7738,7500,8190,8762,7628,5237,5325,7628,7877,8772,7908,5342,5301,9054,8447,8479,5301,8261,8354,7622,8365,5666,8110,7628,7628,7710,5381,8196,7849,5647,5519,7487,5642,5647,9051,5496,8811,7719,5274,5224,8062,5688,5476,5248,5501,8052,8370,7990,7622,8940,5606,5358,7972,8631,5651,8334,7478,5274,8447,5301,5337,8443,7920,7904,8631,5305,7558,8052,8196,7924,8370,7972,7972,5320,8170,5209,8154,5325,7558,8136,9075,7663,7849,8316,5209,7972,5381,5401,8762,5476,5305,5296,5448,8772,5237,7706,7843,5564,8115,8839,5329,8589,8811,7977,5377,7558,5647,8670,8839,7786,8099,5329,7786,7571,8504,9032,8115,8126,5325,7972,7972,8653,8873,7982,7990,5224,5442,5629,7628,7588,7616,9411,5476,5651,8411,5396,8349,5358,7571,5352,7548,8548,7500,7558,8479,7752,8397,7675,7487,5325,5564,5655,8255,8479,7977,5325,5524,5524,7786,7864,5342,8010,5325,5296,7715,5261,8514,7972,5325,5329,7588,5325,7616,7752,5688,7719,5401,7500,5464,5296,5325,5342,7675,8196,5285,5314,8316,7487,7834,5342,8789,7719,5296,8261,5309,8789,8354,5325,8422,7752,5372,8154,7817,5329,8473,7663,8261,5314,7908,7628,5529,8631,8484,7723,5237,7723,8571,7628,7920,5485,5642,8732,9032,5647,5347,7867,8533,5642,8411,8222,5642,5224,8631,7605,5285,8255,8052,7478,7952,5642,7972,8519,5642,7681,5285,8519,7592,7675,7482,7982,8498,8494,7883,7692,7990,9417,7500,7588,5305,8005,8307,5329,7482,8494,8631,8387,7628,8170,7723,5642,5642,7681,8783,7628,5606,7757,8170,8239,5237,7986,8005,7675,5285,8287,8739,7610,7558,8402,7675,5372,8498,8255,7637,8307,5372,7632,7867,5301,7588,5391,9423,7542,8925,8062,7706,7542,7700,5391,5320,7994,8170,8427,7605,7487,7610,5224,5485,5485,8015,5476,7487,7667,8062,8316,8022,7592,7858,8267,5320,5485,5296,5381,5255,8676,8670,8827,7994,5647,7994,8099,5485,8795,5485,7605,7605,5333,7658,7628,5647,8811,8211,7605,7643,8762,5325,7675,7904,8099,5325,5655,7999,7962,8732,7994,8467,7982,8461,7675,8433,7920,5358,5407,5647,5647,5261,8119,5367,8539,8467,8136,7710,5647,5301,5647,8438,8222,7681,7487,5564,8387,8543,7994,8245,5209,8539,8093,8115,8293,5564,8131,8010,7977,5717,8010,5391,9427,8312,8582,5407,7723,7610,5305,8411,7977,7952,7972,8282,8329,5642,5274,5358,7723,7795,8919,5285,5309,7768,7962,8613,8048,8582,7605,8316,5426,8245,5485,8604,7908,5568,5485,5358,8635,5301,5241,7478,5501,8267,5647,8994,5301,7843,8170,8721,5407,5480,8316,5255,7828,7558,7940,5391,7920,7571,7675,8670,8805,8604,7834,5524,7908,8811,5442,7904,8461,7935,8093,7542,5564,5407,7972,8277,7986,5358,5358,5358,5717,7710,8174,7628,5407,7999,7786,7710,5241,5485,8302,7576,5671,8073,5325,7516,7940,7667,5564,7687,7786,8571,7542,5496,7667,7805,8721,8467,8467,8170,5661,8115,7867,5480,7632,7883,7675,8893,5407,7473,8411,8272,7521,8509,9435,5655,8119,5426,5391,7605,8354,8456,7904,5476,7482,7675,7500,5381,5464,8845,7663,8010,7565,5622,7858,8329,7605,8062,7867,5730,8190,7622,7542,5309,8005,5666,7957,8267,7849,9441,8201,5442,5524,7893,8893,5241,8131,8077,7542,7675,8498,7817,8334,8762,5301,5358,5314,5573,8635,7710,7605,7582,7610,5347,8345,8201,5301,5296,5358,8539,7888,7834,5352,9367,5622,5325,8647,8307,7628,7763,5622,8115,5237,8039,5476,8447,7877,5568,8140,8461,5442,5325,7952,7588,7957,7687,5329,8184,5612,8498,8345,5612,7888,8676,5647,7558,8073,7643,5358,8903,8239,7883,7828,5564,5407,8438,8005,8539,8255,8919,5464,7962,8149,8365,7675,8762,5391,7864,5642,5213,8222,5325,8811,8227,8762,5480,7834,8073,8903,5381,7990,7610,7542,5401,8073,7576,8277,7521,5347,8873,7628,8354,8052,5655,7658,5377,7616,5442,5325,5218,8509,8909,7588,5391,8010,5448,5534,7558,5314,8909,5329,5329,5407,5480,7898,8159,8277,7610,5606,7478,5347,7542,8354,7548,5726,7817,8411,8676,8857,5301,7752,7632,7616,9447,7843,7500,5651,8539,8010,8140,5329,7914,8293,5661,5666,5274,5209,8447,8879,7710,7542,8473,5358,8282,7478,8539,8015,8110,5501,5358,8402,7972,5301,8039,8322,5309,7904,5301,7715,8170,8312,5305,8140,8184,8322,7779,7588,7681,5301,7706,7588,5261,8316,5209,8604,8354,7576,8010,9345,8126,5471,5501,5471,8539,8119,7779,5274,8772,7779,8179,8845,5301,8354,8245,7491,9452,8402,8126,8015,7516,8548,5485,8039,7920,8589,8589,5419,7491,8110,8073,5730,7500,8170,7982,5407,8365,7839,5301,5347,5564,8447,7930,8387,5519,5524,5629,5688,5666,8340,5329,7834,5651,8589,5501,5372,8756,7872,5305,7516,8261,9457,8329,7779,5419,7904,8073,5391,8504,8548,5274,7495,8641,8077,5301,7990,8539,9345,7681,5347,5651,5476,8484,5237,8653,5241,8484,9021,5325,5496,7576,8329,8354,8062,7628,7849,5509,8504,7752,7752,5688,8136,5209,7853,8816,8998,5381,5320,8104,7920,7482,8302,8062,7972,5325,5501,8267,8504,7883,5309,7588,7565,5612,8249,7482,8154,8033,5309,5564,7972,7658,5209,5442,5642,7687,5666,5237,5564,5661,7914,7853,7605,5726,5476,7605,8670,8811,7924,5564,5480,5655,5491,5314,5391,7548,5274,8443,7592,8282,8170,8716,8527,8397,5501,5485,8504,7946,5661,5381,7605,5442,7795,8126,5291,8582,8272,7839,8543,5237,8272,5661,7757,5285,7768,7828,7632,8190,5224,7533,5708,9462,8316,8164,7681,7482,5666,5419,7768,7500,5329,5459,8316,7487,5419,8293,5296,5291,7972,5407,5676,7710,7746,5655,5329,5274,5688,5320,7898,8613,7675,5509,8196,8845,5564,5377,5519,8504,5564,5237,5564,8805,5342,7548,8653,5564,5485,7982,7548,7834,5309,8267,5325,8456,5391,8548,7516,7888,5301,5329,7779,5442,7768,7628,5480,7706,9032,7565,5509,7542,5274,8087,7994,7706,8272,5509,8461,7599,8716,8863,7774,8190,8402,8099,7511,7706,8427,7930,8287,8093,7746,7706,7867,8772,5241,8234,7967,5476,5209,8093,7779,5309,7893,7872,5261,7628,8548,5381,5329,7500,5426,7994,5209,8170,7521,5407,7990,5274,8821,7746,7706,8676,7548,8539,8438,5676,8467,5661,7715,7487,5688,8411,7811,8845,5325,7746,5274,5564,7994,7628,8131,7622,5661,5401,8456,8411,8267,7834,5377,7795,7972,7710,7952,7768,5209,8022,8467,8062,7500,7957,8387,7648,5285,7616,5309,5476,8863,8447,7898,7786,7533,7576,5407,8451,7768,8617,8267,5367,8952,8929,5426,8272,5564,8267,5655,5524,8613,7982,5437,8909,5274,7588,5655,8548,8422,7653,7774,5358,8527,7478,5301,5612,7482,5237,8548,5666,5622,7542,7800,7972,5329,5305,8647,5401,5651,8190,8548,5325,5261,5342,8010,8952,5413,5476,5514,8711,7576,8322,7643,8473,5237,5320,5519,5296,5564,5296,8255,8833,7571,7972,5261,8589,7516,7628,8010,8239,5485,9021,5407,7648,7877,7872,5519,5296,5396,5442,8287,8322,5485,8245,8119,5296,5237,7482,5407,8170,7811,5372,5274,5381,5285,8073,7877,5476,5386,5342,5476,8635,7500,5325,8888,7542,5347,7734,8329,8857,7706,5712,7883,5305,5666,5661,8857,8582,5337,7500,5666,5274,7877,5237,5329,7877,7616,7774,7521,5274,8397,8857,7632,5237,8479,5347,5688,5377,7487,8484,7628,8062,7576,5274,7849,8354,5325,5509,8582,5325,8504,7994,8267,7853,8104,7920,8302,8461,8136,8467,8548,8099,5501,7972,7752,7565,7533,5708,8816,5320,5274,8811,5661,5564,5401,8443,7914,5237,7972,7548,7576,8282,5564,5314,8670,5476,5485,5491,7898,8164,5381,7692,7648,8647,7946,5296,9462,8190,5419,7632,5291,5285,8316,8845,7675,5676,5519,5309,5342,8272,5325,5377,5325,7500,8093,5578,7500,7706,7893,8287,8015,8234,8119,7994,7746,8087,5413,5442,7790,7511,7768,8548,8427,5509,5329,8863,5209,7990,7521,5407,7746,5347,5377,7622,7706,7834,5296,7487,7888,8676,8411,5274,8131,8863,7811,8539,5329,8411,8438,8467,5309,5564,8613,5655,8527,7582,5524,7877,5301,5476,5407,8888,8647,7800,5666,7616,5612,8711,5514,5661,8239,5261,8833,5419,7542,5372,7811,5285,8857,8998,7538,8461,8998,5699,8762,7511,8073,5255,5730,8617,8093,7616,7616,8745,5367,7616,8617,8772,7768,7706,5534,7616,5666,8772,5329,8721,7599,5291,5291,7599,7653,5209,7632,5564,7962,8048,7786,7605,8170,7790,7786,8438,8461,7904,7795,7786,5676,5564,7516,7834,7999,8397,7795,5314,7628,7972,7542,8048,7823,5320,7487,7920,7538,7511,7904,8048,5301,8783,7994,5358,5325,8833,8316,7746,5325,5676,5651,7952,7632,7920,5325,5325,8375,7924,7763,8322,7738,5712,8062,5476,5337,5501,5651,5524,7924,7786,8548,8721,7576,8093,5476,7605,8539,5519,7542,5476,5274,8164,8658,8658,7542,7811,8397,5274,5476,5274,7817,5274,7628,8845,5381,5629,8467,5237,8010,7834,5501,5261,5401,5666,8845,8417,8322,7877,7628,7817,5476,5248,5534,5501,8062,5325,7710,8402,5564,8745,9054,5476,7986,5476,7920,8093,7511,7972,5726,5237,7628,7521,5237,8196,7706,8255,7628,8222,7675,7719,8196,5419,8539,8402,7893,8272,8302,7478,7605,5407,7605,5391,7858,8548,5509,5296,5730,7849,7849,7653,5708,8647,5476,5401,5726,8222,7516,9054,8255,7487,8010,5476,5296,8190,8479,5642,8149,5622,8898,7790,5578,7706,8131,5622,7994,9021,5459,7696,9045,8821,7696,8716,5622,5666,7696,5209,8845,8783,8052,8267,8994,8987,7710,7487,8227,7977,8170,7849,5573,8149,7599,5325,5629,7742,7957,8417,8131,8334,7599,7957,5642,7888,8005,5337,5305,8811,7696,5578,8805,7491,8245,8022,8196,7710,7710,8447,7883,8062,8845,8170,7920,8077,7883,5358,8170,8093,5241,5337,5377,8239,7610,7972,8381,5391,7696,8387,5459,7795,5237,5401,8427,8119,8577,8751,7864,8170,5255,8539,8039,7752,7500,5647,8827,5329,5237,8805,5329,8170,8005,8170,8005,8827,5291,5534,5237,7935,5401,8827,5708,8119,8022,8805,8005,8077,7972,7883,8381,7706,8504,7478,8805,7610,7628,7628,5342,7487,7588,5476,7588,7487,7999,8387,8110,5476,5333,5325,7542,5501,8340,5717,8433,7811,5464,5496,8504,7675,8461,7576,8467,8762,8461,8164,8811,7571,8494,8227,7786,7972,7653,5564,7893,5301,7681,8170,5407,7565,9032,5337,8136,8560,8800,5337,7817,7628,8354,5642,5309,8312,7542,5237,7681,7893,7710,5485,7658,7914,7548,8015,5661,7914,7994,7576,5459,7883,7893,7904,8073,5726,8329,7930,7795,7658,5209,7692,7972,8316,5476,5209,5564,8334,5655,5274,7571,8456,7977,8119,7972,8222,5337,5726,7982,5301,5476,7482,7500,7924,7610,7582,9012,5329,5485,8293,7834,8658,7473,5476,8687,5671,5717,7582,7972,7675,7914,7504,7696,7864,5426,7858,8766,5209,7628,7558,7681,7972,8277,5274,5661,8402,5661,5305,8349,5325,5396,8170,7908,7730,8205,7706,5386,5651,8789,8375,5509,8073,8461,8721,5688,5285,5485,7888,7946,8451,8577,7582,8805,5712,8104,7914,5661,7834,8397,5381,5519,8443,5480,8174,7558,7786,5564,8307,5480,5453,7628,7994,7924,7795,5688,5401,8015,8402,7972,5391,7576,7920,7864,7605,8795,5329,8005,7805,8811,5606,8028,5485,8805,7986,5476,8345,8504,7914,8287,5564,5564,8170,7893,8322,5509,5496,5342,8164,8548,5693,7478,5712,7957,5622,7972,8694,7795,7742,8903,8345,5426,5386,7628,7478,7823,8255,7548,7994,7864,8159,5647,5642,5407,7994,5285,7628,7977,8676,5358,8227,5564,5274,8447,7746,8631,8909,8422,7898,7957,5329,8631,8427,5708,7588,8863,5717,5476,8073,8239,5325,7920,7628,5524,7610,8888,8554,8227,8196,8039,7834,8663,8647,5419,5564,5629,5305,5237,5622,5329,5285,7952,5329,7972,5642,5291,5401,8316,5352,8447,7687,8239,8402,7864,7675,5325,8010,7972,5285,5261,7478,8402,8489,7521,5342,5501,7616,8772,9361,7883,7908,8789,8068,5401,5358,5218,5291,5573,5476,5676,7986,5401,5514,8005,7786,7706,5386,8888,8329,8613,8154,8205,7828,8473,7834,8739,7986,7834,5329,8154,7952,7632,5726,8205,8375,8447,8205,8033,8577,8494,8687,8205,7516,8687,5209,7478,8077,5442,5325,5688,5688,5325,8077,7972,7972,7972,7999,5459,7972,5519,7658,5655,8484,8329,7628,5496,5642,7628,5248,8201,5237,8484,7628,7628,5426,8170,8484,7528,5617,5617,7883,7994,5391,8772,5320,7538,5606,7883,7734,7734,8721,7972,7576,8732,8598,5367,7478,7576,8479,8461,5261,5476,8613,8994,5491,5241,8282,8732,8560,7565,8282,5699,7898,7548,5407,8777,8093,7605,8115,7888,8073,5274,5717,8732,7977,5329,8062,8334,5237,5730,5564,7500,8527,7994,8670,7628,5476,8805,5255,7994,7817,8249,5464,8479,5464,8087,8548,8411,7790,5459,7800,7898,5496,5476,5514,8777,8340,7957,5491,7877,5642,8316,7982,8903,8772,5329,5476,5381,5407,8255,8249,7706,5329,5329,7877,8617,8682,7779,5407,5407,7719,7834,5564,5255,7834,7834,8340,8340,5476,7811,8805,5688,7663,8716,7681,8805,5381,5352,5509,5476,8745,5358,7763,5471,7542,7628,8387,8851,7723,5647,5367,7706,8211,5209,5296,8539,8174,7521,5358,5564,8068,7994,7478,7972,7706,5261,7752,7542,8504,8998,5568,5381,5329,7500,5325,8196,7706,8467,5501,7904,7872,7528,5325,5396,8277,7565,7478,5291,8131,7972,8267,8196,5708,5573,7790,8387,7893,7622,8560,8827,7482,5337,8411,5476,5296,7994,5301,5401,7864,5274,8227,8777,8249,7588,8484,8467,8297,8093,7658,7681,8539,7622,7723,5301,5573,7990,7715,7487,8222,8131,8438,5476,7893,8170,7920,8893,7692,7605,8447,7516,5224,5261,5688,5642,7616,8543,8062,7616,7687,7582,8170,5459,8077,8811,8539,5255,5712,5564,8716,5296,5358,8184,5564,5314,7790,8010,7867,7790,7790,7904,5209,5305,5358,5476,7710,5325,5485,7610,7696,5453,5391,7817,7616,7723,5717,8391,5301,8164,7482,8682,7542,7904,8033,8539,5519,5291,8577,7478,5325,8005,8604,5248,7839,8131,8687,8211,7710,5285,7768,5564,8670,7605,5209,5419,5296,7482,5496,8048,8164,8613,5248,8211,8316,5617,7883,7605,8329,7811,7473,7768,5671,8245,5485,5426,7768,8340,5485,7696,8345,8087,7710,8504,5407,5377,5464,5255,5301,5329,8149,5296,9345,5296,7977,7648,5358,5476,8255,5296,7706,8903,5426,8164,7643,7616,7632,7616,8329,5309,7962,7482,8349,8062,7576,5642,8015,7616,7710,8307,5564,8504,7482,7849,5358,5476,8267,8539,5647,5342,5342,7558,7599,7478,8140,5237,5485,5301,5564,7605,5305,5301,9345,5325,7888,5688,8302,5612,8033,5485,8170,5712,8249,5426,5485,7935,7528,7667,7834,8805,7757,8451,5509,7653,5337,7628,7977,7599,5337,8816,8670,5274,7843,5564,7864,5305,8334,5642,7823,7715,8795,8277,5401,5391,8494,5241,5401,8154,5337,7616,7616,7994,8104,8211,5712,7839,5509,5485,8539,5726,7582,5407,7967,7786,7986,5329,8170,7994,7667,8504,8653,7849,8772,5209,8594,8039,5564,8099,8227,5442,8022,7805,5237,8514,7774,7904,5301,5647,8073,7653,8222,8196,5676,5237,7491,8539,5381,7734,8903,5309,7999,8411,8845,5396,7786,8093,7893,5309,8345,7599,5413,7576,7834,8170,5407,7516,8772,5320,5606,8479,8359,7706,8022,8402,8272,8227,7930,8227,5476,7893,8277,7706,8249,5255,7994,7883,8302,7811,7834,5476,5241,8994,8201,8964,8716,7982,8170,8484,8964,7632,5442,8539,8249,5476,5647,5337,7616,7616,7616,7675,7730,5688,7990,7521,5509,7628,5337,5564,5401,8190,8467,7823,8115,8494,8104,7675,7628,7858,7790,8345,7864,7632,9467,8154,7795,8504,7746,7571,7571,8170,8222,8110,7715,5661,5661,5726,5407,5564,5329,8052,9054,8527,8062,5237,5730,5320,5647,7605,5688,7521,7914,5717,5381,5485,5651,5464,7914,7734,5671,7582,7500,7542,7994,8073,7994,8994,7990,7982,8205,7977,8676,5642,7667,8827,5352,7994,5274,8005,8805,7643,5237,5391,7706,8604,5386,5642,8467,5218,5218,8467,8539,8653,8721,8354,5529,7877,8509,8005,5578,5419,7957,7994,5213,7867,5448,7482,5476,7542,5391,5237,7930,7843,8293,8249,7849,5699,7940,8467,5301,8170,5237,8334,5573,7811,5647,5476,8354,5655,7542,8443,8312,8451,8467,5573,7628,7908,7533,7734,7734,7888,8851,8227,5501,5301,5241,5407,5325,8893,8777,8869,8571,8052,7962,5655,8391,8653,7500,7511,5237,7786,8039,8164,5534,5671,8451,5391,5629,7632,8613,5612,5274,7930,5642,5377,5358,8548,7599,8287,5519,8604,5237,5347,7528,5325,5301,7864,7872,7628,5407,7616,5305,7757,7681,7790,8316,7605,5352,8179,5401,8827,5237,5255,5688,5309,8104,5459,7994,8422,7723,7628,5476,5325,8239,5358,5329,7588,8201,5442,7632,8190,7994,5717,8093,5325,8647,8234,7653,8539,7588,5329,5617,8987,7746,7763,8329,7800,8073,8539,8451,5578,9367,8190,7994,7663,5708,5651,7957,8140,7548,7774,8159,5419,5651,8827,5453,5296,7667,7482,5407,7834,5320,7482,8005,8033,7982,8302,7786,8170,8519,8205,5661,8322,8307,5401,7516,5568,7663,5358,5301,8467,5325,8329,5218,8010,8249,7742,7877,7828,8329,5285,7872,7872,5464,7628,8255,8391,5396,5407,8827,8267,8222,5337,5726,5329,7648,5296,7864,8909,8438,5291,8397,8316,8613,5501,8005,8598,7872,8387,7500,5564,5291,8903,7478,8316,7487,7675,5237,8987,7994,8641,7706,7542,8267,7962,8093,7628,5367,5218,5325,8062,7487,7706,5666,5255,8267,7628,5237,8052,8073,8052,7663,7994,5296,7994,5325,7839,7521,8375,7763,5476,8873,5419,8005,5296,8322,5401,7990,8467,8245,5377,5629,5661,5358,8427,7962,5401,8010,5693,5381,7786,5661,8149,5407,8898,8062,7730,7528,8329,5642,8239,5448,5320,8329,8217,5274,7994,8766,5442,8349,8613,8647,7658,7706,8772,5485,5655,7696,8447,7616,5524,8827,7675,7706,8048,5407,7500,8005,5381,5708,7757,5476,5347,5309,8777,7622,7723,7867,5274,7516,7742,7795,7588,5329,5476,7500,5491,5301,5476,7986,5666,7706,8539,7972,7930,8909,5642,5305,7495,8647,8010,5448,8772,8422,7723,5337,7994,7511,5296,7558,5524,7877,8249,5301,5320,5573,7663,7516,5372,8170,8033,8277,8154,5480,7478,7872,5629,7706,7946,5329,7588,5717,8211,8267,8751,7628,5320,8164,5237,7558,5305,5381,7588,5407,8322,8077,8073,8261,5476,5274,7628,8170,9353,5401,7482,8322,7616,7610,8316,7994,8354,8093,5726,5717,8010,5651,7628,8005,5347,5325,8903,8427,5666,5666,5396,8527,7972,7994,7982,8427,8359,5301,5325,5651,7982,8359,7632,5325,8411,7828,5407,8987,5476,5666,7768,7675,7893,7834,8514,5432,7982,7982,5329,8293,5329,7487,7675,7542,5573,7982,5437,5480,5564,7500,7500,5329,7692,7628,8052,5496,8170,8039,8222,7834,8427,7542,8005,8282,5237,5320,5248,5688,7757,5325,5688,7558,5391,7542,8539,5578,7628,5564,8811,5237,8062,5296,8249,5717,5342,5367,7637,5391,5476,7538,8411,8783,7864,8994,7710,8354,5291,7752,7872,7898,5358,8354,5509,7667,7706,5320,7482,7706,5606,8467,5291,5296,8196,7706,8174,8387,7839,7715,8641,5568,5501,8560,7817,5372,5564,5224,5381,5564,7710,8307,8647,5274,5642,5655,5688,5337,7687,7849,7710,5337,7849,7653,8170,5301,5564,8297,7687,8131,7920,8073,5274,7605,7757,5432,5224,7786,8297,5726,5617,8964,8093,7786,7883,7786,7616,5301,7558,5726,8711,8170,7839,5296,5480,8211,5564,7924,8631,8577,7605,5476,5274,8144,5285,8170,8144,5255,5325,5201,5218,5476,8381,5305,7723,7867,7952,7817,7972,7800,5241,7972,7977,7648,7487,7706,5426,8577,5688,8670,5218,7977,8839,8751,5635,7864,8136,5320,8190,8527,7914,5655,5564,5274,5578,7478,5564,5301,7843,5358,5573,8467,7582,8613,7883,7834,8805,5329,8839,8631,7795,7972,8022,7893,8170,5651,9361,7706,5661,7667,7687,8249,8322,7487,5237,8099,5301,5459,7681,8272,8451,8811,7653,7628,5655,7893,7920,7994,5471,5476,8467,8170,7768,7542,5476,8447,8745,7994,5509,8039,5509,7582,7864,8282,8539,8484,8316,7924,7616,8039,7877,8057,7986,7990,5325,7849,8805,8349,7500,7746,7628,5381,5391,8190,5464,7834,8411,8110,7994,5564,8467,5712,7994,5564,8821,5661,5337,5688,7790,5367,7616,5391,5248,5629,7605,8548,5377,5564,8467,5296,7663,5676,8762,7982,5688,5459,5301,7795,8267,8170,7823,7957,8658,8164,7616,5274,7558,7843,8334,7487,5237,8461,5237,8467,5534,8057,5448,8015,8164,5325,5325,7478,5688,7653,8196,5476,8093,5396,5629,5476,5241,8716,7849,7982,5296,7538,8391,9471,7774,7616,8909,7628,5381,5377,8571,7800,7834,8987,5578,8340,7710,8539,5708,5329,8087,7972,5629,8033,8647,5726,7920,7628,5407,7632,7957,8196,7548,7482,5419,8952,5655,5285,5509,7972,5578,7538,7538,8039,7511,7790,5237,8827,7967,8190,7622,5377,8015,8211,7521,5305,5655,5476,5688,8594,7972,7924,5352,5285,5726,5432,8239,7533,7952,5237,5325,5622,5464,7893,8149,5291,8509,5296,7482,7877,5285,5261,7648,5248,8851,5248,8329,7487,7542,7558,8903,7687,5661,5261,5476,5485,5347,7877,7706,7839,7521,5617,7632,8845,7616,7637,8196,8115,8190,5401,7605,8115,5661,8211,5661,7706,8164,5413,8249,8052,8821,8154,5314,7972,8888,5661,7763,8010,5666,5524,7986,5651,5301,8104,5301,5688,8077,5329,8762,7675,7605,7610,5301,7610,8245,7491,5413,8987,7786,5676,7616,7542,5237,8179,5726,7768,8762,5237,7800,5291,5381,7605,7687,5661,5464,8816,8456,8293,7528,7548,5642,7696,5448,7763,5237,5426,7834,8795,5248,8519,8039,8190,5320,5274,8316,7610,5381,8533,8387,7982,7994,8721,5248,7994,7957,8548,7946,5726,5476,5476,8201,5396,7628,8473,5496,5476,5261,8033,5564,8234,5501,8952,5381,8136,5568,7883,8915,7548,7548,5305,7706,5578,5274,7972,8504,8196,5309,7667,8467,5712,7637,5708,5453,8959,8959,7977,5480,5274,5491,8222,8174,5642,8329,7558,8670,8772,8170,7946,5320,5519,5655,5476,8994,8073,8539,8631,5296,8234,7972,5325,8297,7533,7883,7790,8073,7935,5568,5274,8239,5726,7930,8234,5237,8451,5314,5622,5564,5476,8196,7692,8504,5419,7977,8879,5305,5381,7738,7632,8613,7605,7952,7482,7774,8577,8144,5329,9345,8903,8115,7734,8800,5453,5320,7977,8653,7558,5301,5676,5381,8057,7908,5476,7628,5655,7511,5688,8658,5325,5476,8201,9345,8839,8302,5325,5301,5401,5401,7692,5407,8936,7877,5358,8613,7491,8467,8093,7982,8227,5442,7888,8473,7779,8227,8456,5305,7893,8467,7632,8039,7834,8762,5237,7972,8170,7972,7533,7972,7795,7730,5320,5377,5377,5564,7667,5661,8411,5459,8653,7616,5519,7610,7849,8467,8222,8222,5564,7628,8641,7834,5296,7930,5573,5329,5237,5617,8267,8245,5651,8245,8359,8164,8772,8613,8716,7592,8631,8282,8068,7710,8940,5453,7616,5381,7542,8359,7692,5401,8222,5301,5578,5391,5329,5671,5476,5661,5274,7994,8473,5241,8073,5419,9367,8222,7521,7786,7734,8604,7675,5407,5573,5325,7883,8925,5285,8073,7521,7528,5432,7648,7628,7710,5708,7888,7952,8340,5342,8789,7877,5401,5358,5309,8903,5320,8772,5358,5347,7834,8613,7706,8307,5320,8631,5391,8126,5661,8073,8033,5320,7610,5237,5274,5347,8539,5491,5564,5320,5391,5407,7533,5476,5285,8387,5237,5314,5642,8527,8772,5301,8473,5564,7904,7849,7706,5325,5407,8888,5291,8533,7952,7893,8282,8282,5651,7628,7763,5391,7487,8427,8239,5291,5651,7681,5401,5642,7972,5285,5237,5261,7994,5237,7710,7628,5347,8322,8762,8196,5314,5325,8391,7616,8131,7528,5314,5309,8721,7516,5314,7632,5726,7605,7994,5291,8560,7628,5347,7914,8539,8721,5407,8721,8427,7952,5651,5391,8427,5347,5291,5325,5237,8539,5485,7628,8131,5309,5726,5285,8484,5309,8140,5291,7706,7972,5325,7786,7883,8397,8539,8987,5396,7768,5717,7710,5381,7952,7817,8062,5381,7643,5688,5661,7588,8447,5325,7500,7972,7687,5358,5426,7982,8987,7877,7972,5529,5573,5391,5476,5329,5291,8068,7834,5237,7834,7930,5693,5564,5688,5381,8653,8062,5325,7565,8329,7952,8062,8190,8272,7500,5381,5476,8504,8329,5237,5261,7706,5480,5325,8772,7914,7864,7924,8387,5642,8022,7616,8190,7528,5291,8093,8884,8052,5337,7571,5305,7565,7500,8783,5617,8548,5391,8068,7500,7893,5476,7588,8447,7849,7752,7582,7500,5655,7605,5241,7610,5209,5209,8427,7786,5391,5464,5459,8093,8539,7500,5301,5309,7533,5309,8811,5476,8170,5708,7687,5480,5476,7675,7999,5255,5358,7504,5726,7904,5509,8443,8653,7576,7839,7558,5218,7500,8329,5476,7478,7653,5391,8052,5285,5391,5606,5496,8131,7952,7768,5485,5381,5396,5671,7521,7994,7914,5442,8316,5655,8427,8391,7864,5296,7516,7779,7795,7599,5413,7681,7710,5666,7605,8582,7473,8267,7628,8909,5325,7972,8504,7616,7843,7994,8582,7864,5391,7823,7883,8073,8345,5337,7946,8255,5612,5309,8391,7628,8509,7558,5381,8227,7478,7478,5524,8022,7734,5296,7952,8851,5655,8851,8762,7715,5305,8839,8447,7990,5296,8222,7653,5342,8732,8190,7893,7710,7738,5476,8136,7482,7757,7920,5325,7877,8033,9032,5325,7706,8772,8863,7994,7893,8745,5407,5241,5476,7967,5426,5314,7779,5407,7605,8052,8099,7914,8473,8359,7858,7628,5459,7500,7858,5391,8190,5391,7643,7834,7864,5329,8539,5661,5564,7700,7632,5407,8635,7628,5209,8732,5237,5296,7482,8345,5274,7823,8033,8527,7605,8340,7834,7946,8190,8554,7495,7706,8711,7491,7994,5296,8909,7967,5261,5407,8073,5337,5464,8154,5717,7616,5651,7675,5651,5237,8322,8033,8293,5377,7588,7898,7710,7542,5391,5419,8467,5661,5529,7706,5642,5642,7599,7628,8473,8827,8745,5301,5305,8919,8987,5578,9476,7687,8115,5381,5401,7957,8504,7742,8312,5237,5314,5708,5301,5309,5578,5476,7982,5419,7800,7839,7653,5396,7877,7768,7542,7719,5237,5617,8217,5241,5386,5347,7864,5209,5291,5325,9021,5285,8073,5296,5622,7715,8982,7687,5391,8255,8772,8982,7734,8119,7706,5372,8772,7681,9481,7542,9487,5285,5485,5401,8417,7538,7663,8427,7920,5296,7893,5476,5476,5261,8261,5642,7542,5573,8658,7982,7576,8052,7491,7616,7605,7628,5407,5296,8762,5325,8190,8365,5666,7914,7994,7920,5301,7599,8411,5578,7834,5476,5442,7823,5442,7982,7877,8261,7482,5347,8033,7516,5578,7811,8365,7999,8903,7972,7834,8762,7834,5325,5693,5564,8504,5325,5381,8062,8272,8261,5261,7706,7823,8329,5476,8329,5325,5476,5419,5296,7742,8170,8387,8884,7500,7864,8099,5476,8022,8527,5617,7565,5291,5241,7786,7849,5255,8443,5391,7849,7687,7588,5655,8539,7967,7839,5726,7999,8711,5476,5476,8582,5666,5391,7795,5391,5381,5296,7558,7605,7914,5396,7883,8131,7768,7952,8329,5476,5241,5671,7521,5496,7643,7500,5708,5381,7478,7628,8255,7478,5524,5337,5296,8582,8851,8022,7663,8745,7605,7967,7495,8762,5314,7893,7990,7994,7628,8839,7914,7757,7877,7779,9032,5342,8772,5381,5476,8711,8033,5459,5464,5407,5661,8293,7491,7994,7864,7628,8190,7877,5209,8345,7834,8539,5651,7858,8795,5305,8903,7588,5661,5642,7898,5391,7542,5651,5309,7800,5578,5407,9476,8772,8982,8255,5347,7734,5291,7834,7542,8427,8033,7786,7849,8062,5367,5291,8062,7653,8062,5237,5381,8154,8239,7653,8687,7610,8307,5419,7706,5391,5301,8919,5509,5358,5320,5274,8527,8940,8940,7811,7834,5391,5573,5296,8863,7628,8068,9494,5407,7904,5730,7864,8387,7521,7811,8903,8800,5671,5726,7908,5237,8888,8052,7628,7605,7977,7930,5237,8073,7752,7811,8888,5564,8548,5501,5476,7972,8222,7637,7653,7920,8136,7667,8811,8136,5337,7757,8805,7487,5519,7811,7610,5352,7849,5305,8190,7790,5301,8447,5358,7628,7977,8641,7790,7920,5237,7930,8170,5305,5573,8772,7495,5291,7930,5655,7675,5564,7774,7817,8594,5476,8560,8249,8751,8154,8010,8772,8721,8115,7972,7696,7605,5391,8653,5209,7696,7952,7858,8411,8349,5491,8119,8582,7893,8964,5476,7710,7790,7849,5358,5329,8504,5296,5671,9032,5209,7977,7746,9353,7706,5671,8205,5407,7616,7893,5655,5617,8888,7643,5688,7558,8732,5325,7576,8277,8365,7487,8033,8987,5606,8456,8845,5274,8349,5407,5342,5564,8772,8827,8467,7972,7628,8015,8762,5309,8504,8598,8267,7706,5437,8277,8527,8277,7967,8119,7663,5622,5564,8131,8159,8115,8077,7994,8039,8033,8052,7972,8863,8473,8267,8833,8772,8365,7834,8322,5261,8863,7616,5309,7930,5285,8205,5358,8762,5320,7834,5573,8190,9501,8811,5407,7930,5655,5564,7542,7817,7774,8115,5274,8126,8015,8154,7972,8010,8772,8751,8411,8131,7605,8721,7696,5407,5358,5391,8964,7952,8582,5491,7790,7893,7849,5476,9353,7972,7977,5296,5209,8504,5329,8205,5209,5671,5309,5688,5655,8277,5617,5564,8762,5325,5320,8987,7487,8005,7487,8845,8456,8772,8277,5407,8863,5564,5622,8159,8115,7834,8365,8805,8833,5261,7616,8811,7710,8190,5617,7823,7504,5237,7491,7849,7558,5578,5367,5629,7967,7967,5301,8484,5564,7999,8811,7706,5261,7723,8110,5274,7957,5291,9509,9516,7839,8033,5671,8772,8170,8783,7628,8033,5329,7605,8354,5726,5381,7710,5573,7795,5529,7839,7681,7888,8577,8811,5612,5407,8170,7999,5642,7482,8170,8302,8467,5629,8287,8402,7977,5726,5381,5688,8811,5377,5726,7542,5464,8255,8255,5642,5372,5377,7972,8365,8365,8443,8994,8222,7692,7990,5471,5291,5564,7738,5407,5237,7972,7730,8898,8994,7706,8354,8322,5480,7658,5476,8184,5325,8851,7904,5459,7692,5480,7977,7839,8174,7500,7605,5524,5459,7972,5564,7533,8170,5261,8073,8447,8170,5301,8682,5476,5325,5491,5274,5285,5296,7605,5622,7473,5635,7952,7723,8005,8140,7710,5329,5413,7972,7977,7681,7774,5407,8005,8255,5358,5274,7888,5325,8170,5325,5320,5647,5573,9345,8077,7675,8073,7710,8658,8711,5320,7843,5218,8316,5442,8255,5612,7738,5407,7706,8494,7994,5314,5381,5325,8077,8170,8170,8099,5329,8873,8359,8170,7710,5509,7768,5377,8073,8443,7867,5325,8140,5237,7774,8548,5352,7972,5241,7828,7972,7628,7888,7696,8104,5218,7548,8539,8827,8033,8663,5407,8005,5629,8170,5564,8443,5459,7858,8110,8048,5377,5496,7478,5407,8479,8451,5237,7738,8322,8427,7828,8427,5325,8077,7800,7511,8427,5358,5248,5329,8170,8140,5629,5491,5612,5237,8005,5325,7972,8322,8539,7800,8548,5401,5413,5372,5501,5432,8422,7946,8919,8554,7511,8010,5573,5573,5471,8073,8140,8589,5291,8307,7516,5329,8255,8255,7734,7738,5320,8498,8772,5372,7738,7482,5358,7605,8170,5573,8255,5471,5442,5325,7478,8354,8184,7516,8577,7972,5301,7972,7877,5573,8676,7994,7610,7516,5274,9361,8857,5347,5661,8261,5661,8077,5407,5726,5381,8498,8857,8022,8005,5291,7516,7914,7817,7482,8272,5726,5377,7888,7888,8888,8154,5325,7542,5651,8381,5476,5629,5407,7482,7834,8745,7834,5726,5651,8149,7952,8104,5325,5377,8312,8919,7628,7935,8387,7952,7667,7994,8354,5666,8539,8190,8010,8504,8498,5329,5320,8068,7742,5329,7864,8136,7706,7790,8821,8504,8010,5622,8062,9525,5726,5464,8539,8093,5491,5301,5655,8010,5381,8608,5352,8359,7786,7628,7610,7605,8164,7864,7904,7576,7972,5642,7990,5476,8745,5391,5255,7696,7723,8170,5285,5347,5329,8509,7768,7576,5437,7972,5617,7779,7628,8670,7632,7811,8267,5578,5509,5564,8745,7576,8447,8093,5578,8427,7779,5209,5296,7599,8287,8039,7839,7811,5352,7542,8234,8184,7742,7500,7930,8099,7710,7779,5476,8110,5325,7500,5367,8732,8694,8658,5717,5337,8062,5320,5564,7706,5564,7710,8196,8427,7628,7752,8795,7786,5655,5367,8467,5329,8484,8783,5622,7675,7643,5717,7935,5285,8427,7734,8149,5501,8010,7516,5717,7719,8795,7811,5476,5325,8217,7696,7628,5274,8062,5666,8456,5301,5301,5329,8201,7935,8387,7952,8190,8082,8504,5622,7864,8099,8821,8062,7692,7990,5329,7576,7972,5476,7982,5655,5301,5642,8745,5391,5437,7972,5285,5642,7768,5329,5285,5578,5564,7779,8184,7930,5296,8234,7599,5291,8287,5209,8694,5564,5325,8267,5320,8456,8467,5367,8427,5329,7935,7516,7528,7786,5655,7839,7920,5442,8888,5377,7986,8987,7482,8282,8411,8411,8411,5476,8411,8762,7839,8411,8411,8033,8613,8789,5320,5655,8676,8287,7482,8745,8411,8411,5699,7990,8239,8245,7877,5296,7542,7628,5699,7706,8329,5476,8039,8349,7706,7675,7599,8721,9032,7616,5712,8267,5309,8560,8387,8010,7478,8245,7864,7811,5578,7877,5309,8467,7994,5401,7710,7935,8447,7681,7972,5476,7592,7977,8164,5491,7696,8539,8312,5688,5459,8115,8272,5320,8170,7888,5485,5296,8316,5337,5651,5413,5325,8716,5476,5381,8863,8577,8329,8422,8022,7795,8272,8334,5730,8447,7632,8427,8190,8329,8201,5337,7675,5688,7853,7605,5688,8539,8539,5647,5485,5377,8307,8479,5578,8316,8687,7478,5391,7558,7588,5372,8658,8527,5401,5612,5237,5301,7924,8345,8387,7990,8745,8387,7811,5491,5329,8745,7576,5309,8267,8287,8005,7994,5224,5476,8245,9531,7632,5358,7495,7628,8903,8805,5471,5342,8888,8732,7710,8498,7628,7757,5655,5337,8267,8732,8411,8039,7864,5367,5464,5688,8479,8245,7994,5213,5476,8131,5642,7478,7511,8329,7738,8539,5419,8467,7588,7738,7542,5629,5642,7710,8015,5708,5391,7599,7710,5485,5372,5578,5471,8539,7768,7710,8451,7516,9021,7648,7542,8190,7628,5476,7478,8239,8170,5391,5358,5642,8349,5661,5342,7811,8427,8909,7696,7622,8411,8411,7986,5471,8467,8154,7632,5301,5476,5712,8919,7706,5218,5248,7653,7628,8211,7972,7723,7533,8582,5564,8756,8888,7565,5426,8136,7742,7914,7898,8467,8879,7994,5661,5305,7478,5320,5337,7653,7658,5688,5358,8456,5224,8670,7930,8048,8539,7967,7491,7516,7999,7952,7605,5391,7487,7628,7592,5717,5237,7972,5476,8329,5730,7768,5285,5237,5651,8543,7843,7977,7908,5241,7786,8267,7834,7558,8307,7710,5329,5564,7478,5564,5524,8052,8381,7977,8845,7667,7616,8073,5237,7930,5301,8267,8201,7675,7706,7920,8745,8039,7533,8772,7967,5255,8277,8447,8033,5337,5529,7521,7883,8170,5218,8255,5476,8762,7834,5712,8893,7930,7864,7628,5676,7628,8267,5730,8005,7521,5407,5448,8577,8391,5237,8613,5573,5209,7967,5612,7478,7482,8267,8052,5218,5358,5305,8783,5564,8239,7482,5622,7982,8255,7834,8015,8010,5309,7500,8919,5358,7528,5358,8554,7994,5241,7790,5261,7516,8312,7883,8249,7491,8340,7908,7972,8249,7967,8582,5401,8631,5280,5337,7706,7834,7877,5476,8093,7811,5237,8527,8365,5301,5337,5693,5688,5314,8456,7576,5476,8560,7643,8484,7834,8397,7790,7883,7500,7853,5578,5501,7653,7898,8267,7658,5606,5280,5480,7571,7653,7786,7588,7734,7616,5437,8391,7632,7653,5442,8845,8316,7972,5274,5419,7558,7482,5647,7675,5712,7692,7940,5666,7734,5534,5712,7834,5237,8929,7994,5329,5347,7834,8272,8456,8427,8104,7675,8397,8287,8140,8653,5377,5274,8762,7982,7500,5426,8772,8433,5377,5301,8312,7487,5448,5651,7768,5442,8451,8267,5218,8608,7687,8370,5629,5419,8647,8489,7628,5301,7719,8149,5476,5419,7734,5285,5237,8772,8312,8789,5476,5301,8170,5480,5476,8929,8613,8329,8811,7834,8093,5651,5314,8929,7528,5285,5237,5209,7834,8411,7774,5391,5337,5391,5391,5301,7548,7491,7779,5301,5309,7706,5688,5476,7757,8479,7999,5693,8312,5688,7849,5564,5655,8022,7904,7920,5564,8716,7757,5261,5329,5568,8732,5209,8010,7628,5396,7653,7817,7706,7628,8184,8539,8647,5237,5476,7637,5391,5647,5237,8293,7542,5606,5407,7920,7482,7482,7904,7565,8033,5426,7853,8354,7834,5564,5325,8136,7528,9542,5291,5471,8131,7482,7542,8282,5325,9550,8783,8816,5501,8267,8110,8196,7920,5407,8062,7628,7667,8805,5726,8762,8527,5671,8915,8154,7658,8756,7994,7752,8613,5661,7888,5209,8447,8461,5391,8438,7786,7864,8093,7790,5476,7786,7904,7920,7628,5426,5712,8201,5337,7828,7977,5391,7864,5213,8964,8170,8427,7706,5617,8190,7999,8222,7849,5358,8119,5573,5391,8073,7605,7710,8925,5407,8316,7542,7521,5476,7511,7542,5391,5381,8354,5464,7924,8282,8073,5381,8131,5320,5241,7715,5726,7548,9556,8484,7715,7883,7482,5476,7487,8582,9012,7823,5407,5337,5426,7805,5285,7710,7696,5717,5224,5391,8711,7977,7482,7616,7576,5248,8987,8316,5305,5666,5325,5671,7500,8504,9021,7972,7723,5629,8467,5274,8467,7768,7920,8964,7605,5730,8391,7473,5642,5274,5274,5519,5514,8391,8149,5325,7920,8613,5651,5476,7482,8687,8345,9562,5337,7719,8898,7542,8375,7588,5476,5655,7653,7872,5391,8946,5688,7675,7588,5519,8447,5377,8451,8613,7994,7533,8307,5329,5712,7843,5509,7528,8267,7930,7478,7588,7628,7877,8805,8073,7653,7977,8062,8498,8527,7877,8272,7972,5342,8190,7478,7478,8234,7482,5524,5329,5426,7542,7914,7653,7616,8104,5573,5347,8170,5274,8964,8211,7734,5448,7982,7872,7558,5524,5301,8594,7914,7605,8539,5651,5708,8397,8170,8227,8467,5407,8461,5218,8272,8227,8099,7473,8093,5325,5329,5285,8322,5237,5676,8438,5329,5352,8345,7920,5274,8387,8863,5671,9051,8571,7738,8653,8762,8827,7805,5209,5241,8543,7491,8827,8658,8772,5693,7706,7542,5314,7706,7628,5309,8721,7790,8227,5606,5237,5401,8272,7786,8451,5352,5320,5329,8249,5329,5396,8473,8144,8277,8800,8519,8239,8716,5377,8365,5419,8827,7616,8062,8329,7779,8721,8514,8509,7616,8539,5401,8039,5274,8762,5647,7994,8827,5564,8110,5296,7864,8110,8033,5377,7687,8062,7924,8676,5367,5237,8946,5237,5464,7994,5464,7999,5496,7867,8239,8062,7548,5476,8711,5509,8255,5730,7853,8329,7811,7491,8670,5647,7605,5407,8022,8005,5261,8190,7888,5381,5655,7734,7548,7994,5519,7719,5712,5213,7558,5396,5285,8149,8287,7738,7898,7946,5401,5612,5237,7511,8267,7491,8417,5564,8164,5629,5612,8322,5717,8851,7805,8073,5347,7730,5358,8940,8438,5209,7478,7616,5464,7681,7511,8509,7962,8302,5448,7800,8052,5655,5655,7632,5476,8467,5629,8077,5237,7977,7877,7538,7883,7883,5476,5342,7920,8170,7738,8196,5329,5314,7742,8443,8641,5309,5501,8190,5401,5342,5708,5573,5305,7632,5358,7994,7511,8539,8255,5401,5476,5329,5708,8946,8322,8402,7706,8249,5629,7800,5218,7877,8052,5485,8473,5320,7957,5519,8827,7610,8365,8154,5485,5347,5367,7663,8756,5314,7994,8888,7786,7542,5426,5396,5325,7734,5296,8322,8312,7516,5612,5519,8589,7558,8005,7924,5329,5386,5381,7616,5342,8010,5296,7768,7924,5629,7521,5291,5285,9021,8239,5381,8149,8217,8772,8365,5325,5274,7548,8919,8387,7616,5218,5301,5485,7675,7734,8964,7994,5661,8359,8052,7605,7610,7893,5342,5329,5676,5296,7628,5401,7616,8255,7542,5314,5666,7616,8964,7811,7491,7888,8039,8903,8170,5501,8245,7930,5476,7663,8548,5314,8527,7605,7946,8863,5325,8077,7738,8154,8745,8888,5699,7834,8381,7500,5407,5407,8375,7834,7972,5651,5301,8772,8903,8857,8582,8987,5352,7986,7605,8851,5347,5329,8473,8222,8329,5274,7834,7610,7864,5329,7528,7487,5347,8073,5407,5642,7877,7521,5407,5237,8721,8777,8077,5666,7687,5661,7710,7632,8857,8375,5372,8077,5291,5629,5320,8816,5309,5688,5476,5655,5693,7999,8312,7757,5647,7542,8732,5261,7715,8010,7757,8514,8293,8068,7637,7528,5671,8201,7658,8170,5471,8783,7548,8136,7930,8461,8282,7542,5642,8196,7667,7478,8131,8756,7565,8154,7853,8816,7904,7628,7542,5241,7542,7786,8073,7864,8312,8201,7904,8354,8857,7715,7883,7977,7828,5337,8964,8073,8093,8851,7542,7511,7768,5391,8190,5617,5358,8447,7920,7888,7478,8898,8149,7696,7994,8316,5337,7558,7977,7491,5386,5367,8903,8316,5329,7757,7482,8509,7687,7605,5274,8805,9003,8010,5396,7768,8302,7977,5642,5717,8391,5241,7719,5285,5476,7877,5248,5629,8345,7482,8613,7605,8149,7734,5261,8277,8594,5401,8946,7675,5612,5301,5241,5573,8039,5524,8964,5519,8451,5329,8527,7528,7511,8509,5407,7872,5377,7843,7542,8170,9051,8322,7888,5606,8451,7790,8543,8653,8407,7473,8653,8402,5237,7786,7632,7805,8863,5309,8827,5274,5676,8154,8057,8772,5693,5407,8170,8249,5209,7867,5291,8509,8322,8022,7864,5496,8255,7548,8676,5448,5464,7811,7663,8762,5712,7957,8005,7893,5712,5305,5655,8527,5717,8077,5426,5676,8077,8136,7511,8052,7898,5476,7977,8888,5237,8473,5629,7800,7632,7592,5218,5485,8539,8443,8190,7491,8772,5291,8239,7734,5329,8217,5347,7734,8498,8322,8919,8154,5666,7605,5314,5401,5476,5496,8473,8267,5367,7521,8227,8411,8131,5708,5459,5726,8239,7555,8227,8514,5661,8969,5261,5237,8267,7834,5358,7653,5358,7504,8509,8756,5413,8062,8489,8589,5274,5274,5407,8438,9568,0,8322,7687,5386,5358,5352,5367,5329,8411,5358,8489,7849,8721,5717,5717,8048,5291,8062,7952,8438,5476,8653,7843,5329,8805,7653,8170,8354,8354,7800,5726,7516,8227,8635,5407,7834,8438,7834,7864,7643,7628,7752,7521,7491,7542,5726,7834,7752,8282,8345,7994,7482,8144,5699,5347,8762,8239,7628,5606,8077,7738,8509,7849,5699,8519,5347,8307,5629,8005,5629,8721,8647,8795,5237,5296,7877,7920,8903,7811,7738,8179,5342,8514,8969,5261,7834,5296,5358,7752,8519,8489,7994,5274,8062,5407,8438,8756,8514,7687,5386,7952,7752,7738,8438,5329,5642,8048,5717,7849,8653,8484,8354,7843,8893,7628,7834,8227,5237,7752,7643,7834,7864,7877,5347,5726,7834,8144,5699,5717,5606,7738,5699,8795,5347,5564,5564,5333,8217,7528,7542,7478,5476,5480,7605,7924,8093,7864,7628,8282,9577,8946,8267,8821,7972,7920,5485,7565,7924,7482,5655,5381,7491,7904,5726,8539,8443,7571,7828,7696,9051,5480,5717,8312,5224,5564,5325,5329,7610,8033,5426,7888,7957,5305,5419,5320,7888,5274,7696,5459,7628,5671,5261,5337,8255,5426,8387,7558,5358,5367,5261,8119,7972,5480,8307,8467,5655,5573,5274,7790,8077,8267,5274,8456,8456,7967,5476,5407,8099,7482,8170,7805,8033,7920,8093,8272,5274,5329,8594,5274,8211,7605,7924,8705,7786,5248,5301,5301,7628,5377,7628,7610,7994,7994,8077,8217,5342,7977,5464,5381,5342,7482,5671,7834,5296,5717,8267,7632,7994,7663,5237,7994,5325,8015,8316,5708,5419,7482,5301,7648,7516,8422,8647,8222,5342,5342,7628,5274,5442,8447,8010,5325,8010,5237,7482,7864,5296,7610,5381,5301,5301,5301,8863,8756,7972,9032,7667,7823,5476,5699,7834,7542,8387,7504,8387,5325,7786,7811,7972,8131,7667,7839,5218,8170,5573,7982,8925,7632,7628,5442,7757,5342,7653,8154,8617,8721,5573,8925,5218,5325,5237,5442,7511,5301,7823,5325,8925,5261,7738,7628,7628,5529,8136,8762,5367,5391,7752,5501,8334,8267,5301,5358,8608,8093,5666,8345,8222,8249,7828,7843,5426,7478,7999,7500,5325,7715,5274,7675,7687,8805,5655,8456,5712,8093,7706,7482,8154,8302,7893,5534,8427,7482,8447,8548,5651,7516,5476,7582,7616,8387,8249,8617,8093,5367,8062,7482,7632,8349,8267,7511,8249,8888,7478,7994,8154,7482,5237,5476,7663,7883,8919,5274,5386,5329,7977,5730,5325,5337,5337,7904,7920,7994,7962,8073,5325,8349,8249,5448,7538,5301,8154,7663,5391,5491,7610,8093,7663,8519,5301,7800,5485,5419,7715,8015,7877,8745,5485,8052,8402,5485,5291,8745,5485,5485,7828,5485,7628,7893,5642,8898,5651,7746,9591,8174,7491,5606,5676,7491,5717,5693,5496,5407,8504,8539,8329,7478,8504,8196,5309,5529,8577,7904,7482,7730,8136,5305,8443,8245,8282,5476,5642,8272,5480,7977,8062,8174,7924,5209,5329,7977,7628,5325,5661,5688,8345,8727,7817,7904,8245,8255,8539,5509,8811,8484,7681,8255,8190,8571,7538,7738,8015,5224,7752,8170,7986,5661,8110,7898,5476,5688,8267,7849,5509,7715,8170,5407,8411,8539,5407,5274,8322,8131,7738,7930,8345,7533,5717,5564,8144,5237,7957,7839,8131,7977,5325,8312,5419,7990,8245,8154,5274,7542,8762,8631,5407,5261,7994,8504,5564,5712,5676,5717,7610,5309,7653,8227,5301,8110,8329,5617,7994,7834,5519,8272,8131,8267,7588,7605,7994,8800,8762,8222,8762,7994,8504,5367,7653,7994,8267,8272,8484,8484,5274,5661,5274,5325,7482,7864,8267,8670,7478,5352,7946,7616,8267,7930,7482,7482,7521,7982,7491,5693,8745,7533,7521,8598,7653,7500,7511,7500,5237,8022,8005,7706,8560,7628,5509,8282,5471,7828,8751,7533,8312,8093,7628,5485,5666,7849,8255,7864,7994,7994,5381,5314,8456,5476,7982,8370,8217,7858,5255,7706,5564,7977,7853,8827,8005,7977,7757,5606,7516,7616,7667,8994,7653,5485,8422,8048,8751,8277,8422,5381,7643,7628,5693,5712,7834,7653,5407,7990,5491,7592,8196,5476,8159,5377,7864,7864,7834,7643,8795,5218,5622,7834,5274,8676,5476,8467,8940,7982,7828,5419,7692,5666,8239,8647,5391,7800,7706,7648,8052,7478,7786,5309,7542,5296,8427,7511,5629,5301,5274,8751,5329,5347,8077,7768,7491,5693,8745,7653,7521,8598,7500,7500,5509,7786,5471,7706,8282,8022,8560,7628,5329,8093,8312,5485,5381,7977,8015,7653,7616,7616,8370,5476,8751,8919,8422,7653,8329,7616,7990,5377,8239,7864,5622,7834,7864,8077,7800,7828,8940,8052,5325,8427,8613,8751,7768,8527,8473,5372,8903,5367,8427,8473,7730,7811,7658,8577,7795,8190,7628,8170,5329,7487,8087,7924,5642,5448,8509,5514,8010,7511,5237,8239,8647,8647,5301,8473,8110,5301,8239,7723,7719,8527,5342,8527,7610,5329,8473,7730,8170,7616,5448,7521,5237,8647,8473,8473,7893,8010,8073,7893,5391,7982,7972,5325,5693,8261,5480,8631,7962,7521,8068,8504,7628,7565,7710,7482,8010,9596,9609,7482,7982,5476,5476,5358,7839,9621,7511,7839,7710,7487,8222,5391,8057,8370,5255,5606,5285,5655,5224,7839,8316,7839,7521,7924,8539,7696,7834,5622,5352,8179,8073,8028,7864,8201,7667,8307,7588,7628,5491,5642,7643,5606,5391,5407,8863,5224,5274,7877,7877,8772,7893,7588,7994,8721,7864,8699,7643,7982,5464,8964,5296,5407,5730,7849,5426,7687,7994,5564,7823,7828,5255,8073,5396,5237,8005,7511,5448,5358,7491,8267,5305,7511,7800,7715,7628,5519,5309,8845,8005,5622,5381,7710,7994,5476,5325,7648,7558,5218,8272,5296,7521,8427,5501,8543,8249,7834,7715,7877,7521,8433,8857,5358,5391,7972,5325,7706,5426,8068,5237,8504,7628,7710,8010,7482,5407,5391,8222,7487,5459,5476,7696,7648,7521,5325,5509,5285,8119,5224,8073,5666,7864,7628,8028,9633,8641,7643,5274,8721,5496,8005,5459,5448,7877,8077,5305,5320,7511,5519,5309,7800,8589,5622,7700,8087,8005,8039,7521,8484,7576,8447,5358,8073,9641,5301,7893,8033,8345,7904,5564,5274,7752,7528,8402,5358,5426,7538,7628,8527,7653,8539,5480,5480,7710,8329,7605,5661,7706,7883,8915,7730,7482,7752,7972,5325,7893,5726,8073,8222,7908,5480,5476,5726,5241,5726,7592,7768,7999,8467,5352,7576,8170,7605,8293,8170,7920,8205,7977,8093,5655,7658,5564,7675,5391,5358,5480,7920,7487,7940,7734,7858,8272,7972,8164,7478,7582,8149,7768,7914,5274,7696,8370,8073,8721,7482,7632,7538,7516,5661,5325,8170,8022,8196,8211,7779,7653,5647,8190,8422,7667,7628,7558,7528,7663,5329,8863,7576,5617,5325,8653,8272,8277,7986,7990,7706,7706,7628,7893,5514,7834,5381,5642,7478,5476,5329,7858,7542,7893,5464,5407,8154,7752,5377,8519,5367,8548,8005,8110,8087,7795,5480,8005,5448,7542,7558,7972,7511,8140,8909,5237,8340,5442,7834,8467,7967,5514,5261,5301,7972,5329,5305,5237,7632,8015,5305,5708,8179,8647,8827,5726,5358,5274,7628,7500,5396,7849,7588,7675,7516,7877,5471,8789,5480,8833,8772,5285,8964,7834,5301,8427,5485,5476,7828,7516,8888,7967,7834,7710,5329,5274,7521,5325,8617,8170,5237,7811,5301,8473,7538,7628,5480,8329,7710,5726,7828,8073,5329,8205,5391,7487,5564,8170,7967,7605,5480,8293,7977,5476,7658,7675,7538,7790,5285,5396,7632,8370,7858,7839,5301,7558,7834,5325,5285,7667,7706,7706,7990,8863,7653,5358,8179,7858,7972,5237,5514,7478,5708,7511,7542,5261,8647,7632,8827,7877,7967,5325,5285,7521,7786,5464,5301,7994,7849,8811,7920,8608,7853,5661,7667,5358,7710,5699,8539,7692,8370,8255,8131,7473,5717,8427,8845,7858,5358,7990,9012,7930,5342,7957,8073,7675,7616,7849,7839,8739,8888,5305,8608,7957,5386,8762,8205,5342,5377,8888,8739,8479,5524,5564,5688,8119,8255,5329,5372,8473,5301,8653,5377,7565,7533,8721,7790,7883,5320,7576,8048,7681,5352,5209,8048,8297,8811,8174,7920,7790,5564,7706,8164,5726,7521,5519,7795,5325,5352,9361,8670,8438,8391,5301,5391,8548,5377,5352,8022,7622,7768,5712,8598,5407,7888,7982,7986,8484,7706,5401,5655,8888,8245,5305,8589,7800,7800,9026,7500,5712,5305,7605,8789,7811,7908,8539,8888,8577,8261,8307,5209,5386,8062,5237,8307,7653,7610,5342,8484,8227,5459,7628,5301,5676,8190,7542,8582,8548,8711,5655,8987,7628,7952,5305,5325,7706,7999,8005,7643,7904,8312,5712,7500,7834,7675,7779,7628,8422,7706,7599,7779,7994,8277,7710,8647,5606,5305,5325,7500,5391,7834,8427,7628,8479,5241,5301,8277,7817,5480,7757,5342,8762,7864,5358,8302,8560,8068,5329,5476,5381,8010,7576,7628,5329,7752,7982,5426,5237,7565,5501,8136,5337,5712,8762,7849,5367,5726,7653,7920,7872,5480,7500,5688,5255,7622,5358,5325,7994,8170,5568,8903,8033,7990,5448,8184,7723,7658,8222,5564,7687,8115,7786,5476,7757,7742,5305,5381,5320,7957,7710,7696,8345,7994,7681,7605,7482,8577,7632,8316,8255,7706,7605,7994,5285,8598,7952,5274,5717,8795,7491,7500,8316,8711,7888,7667,5274,7800,7675,5296,8427,5407,7628,7999,5578,8234,8845,5514,7478,5688,5642,5564,5509,5337,5301,8302,5301,8582,5291,8190,7746,8154,5329,5218,8447,5209,7706,8745,7521,5629,8104,5325,7757,7867,7516,7576,8851,8277,7893,8447,5476,8653,5329,8484,8227,5485,8170,8093,7967,5301,8676,7663,5285,8184,8154,8126,5391,5693,7914,5325,5391,5730,7478,5480,7692,8322,5325,8010,8582,8903,7538,8302,7883,7994,7628,8658,8110,5459,5464,5401,7834,5688,5688,5407,5501,7864,8387,5564,8159,5407,5367,5622,7982,5471,7533,7834,7752,5407,8052,5305,7687,5726,7511,7632,5391,5391,7482,8533,5655,7738,5642,7715,8164,7542,7706,7752,8893,5352,5401,5708,5333,5296,8073,5325,7681,8925,5407,5514,7800,5237,5688,8473,5325,5325,7605,7768,7605,5622,8154,8015,8756,5529,5432,5291,5726,7521,8073,5285,7834,7588,5352,9021,5261,5261,8010,5291,7516,8329,7622,5237,0,8946,7675,8721,5730,7908,8062,5514,8427,5367,8211,8119,5301,8227,7935,7864,7511,7616,5325,7500,7834,8302,5301,7628,5301,7763,5655,7521,7864,5329,8721,5301,8946,7628,7834,8863,5337,8554,5329,7565,8745,7516,8073,5255,8184,5329,7757,5407,5564,5329,8222,5730,5699,7658,7952,5381,8217,7994,7696,8099,5509,7828,8461,5325,5285,5274,8821,7521,8329,8845,5301,5401,5407,5301,5391,7681,8234,8302,5509,5655,5325,5367,8745,8093,5386,7967,7893,8653,8227,7786,8447,8184,7757,5485,8190,5391,5209,5501,5459,8184,7588,7864,7839,7511,8159,7864,5688,5564,5464,7994,8940,8411,5514,5708,7706,7738,7482,5642,7994,8267,5333,8473,5529,5432,7800,8438,5218,5622,7877,5291,5261,7516,9021,5329,8795,5301,8033,7482,5453,5476,5564,5305,8484,8201,7834,5564,7757,5325,5325,5261,8811,5391,8527,8391,8222,8467,7972,5693,8196,5564,5501,7752,5407,8539,7628,8998,5285,5291,5291,7920,7811,5655,8222,7834,8387,8154,8533,5666,7990,7742,5325,7977,8903,8093,5419,5564,5480,7628,5301,8411,7972,8509,8467,7628,5726,7675,7972,7883,8170,5337,7786,8936,7628,7924,5666,8387,8964,7628,5301,7616,8863,7478,7696,7795,7663,7610,7834,8073,8617,5325,8577,7605,7834,5391,8062,5301,8613,8711,5717,8504,5285,5519,7576,7972,7632,5274,7972,7706,7972,7977,5325,7628,7811,5476,8201,7478,5676,7628,8073,8329,5651,5358,5237,7667,8170,5647,5485,5377,7864,7864,8582,7982,7478,5651,5329,7628,7521,7478,5255,5320,5564,8345,7999,5352,5325,5524,7930,7757,5329,5699,5407,8170,5647,8539,8467,7706,5301,7491,8863,8721,8863,8093,8119,7706,5485,5476,7972,5485,5209,8277,7582,7706,8104,8845,8170,5726,8154,5655,5325,5320,7478,7710,7924,8110,5476,5688,5377,7982,5377,7864,5381,7790,5564,8104,5647,7834,7849,8467,7858,8267,7706,7982,7616,5471,7715,8170,8772,8777,7565,5301,7616,8447,8190,5534,5391,7849,5573,5629,5367,8893,7511,5325,7786,5407,8196,7653,5209,5519,8447,5642,7834,5325,5301,5606,5568,5377,5224,8447,5647,7538,5285,5524,5606,8033,5301,5622,5578,8845,5642,5476,7742,7710,7972,8239,8164,7957,5358,8617,5314,7920,7478,5291,7482,7768,7487,5285,7924,5396,5358,7972,7588,5464,8010,5285,8239,7834,8316,8484,5274,5274,5647,8349,9021,7628,7616,5329,8641,7605,5529,5476,7920,5320,7632,7706,5476,5325,5578,7628,8427,8811,7924,5377,8381,5647,5651,8839,8249,8539,8354,7628,5666,8222,5329,7898,7610,5325,8354,7616,8721,8873,5301,8375,5453,8484,5325,8467,8391,9471,7742,8387,5237,8222,5655,7786,7582,5329,8387,7548,7924,7500,7972,5726,8467,5401,5480,7487,7972,7696,7795,5519,8479,7977,5717,8375,8062,7786,8073,5301,5676,7982,7864,7628,5274,5377,7478,5699,7622,8345,5325,7930,5352,5688,8104,8845,5476,5464,7982,5325,7864,7786,7734,5209,5712,7715,8159,5642,5342,8789,7719,5296,5407,7849,7628,7616,5578,8239,8239,5285,8484,7628,5329,8473,8427,7616,8154,5301,8721,5529,5329,8484,7723,5407,5274,8451,7628,5407,7834,8451,5329,5337,8140,5325,8473,8533,5642,7605,7667,7605,5407,5651,5651,7478,7511,8033,7478,7952,8447,7706,5329,8484,7667,5285,5301,7592,7834,7977,5651,5301,5617,7883,7516,5485,5325,7500,7588,8140,8349,8349,5717,7482,5564,7746,8387,7628,8174,5726,5642,8711,7681,8783,7628,5726,7746,8170,8527,5564,5726,7746,7538,5305,5305,5296,7610,7967,8402,5501,5464,5464,8255,7723,8307,7853,7946,7867,5301,7946,5320,5301,8184,7710,9372,9372,5476,7542,7883,5237,7622,5305,5305,7542,5491,5573,5337,7828,5476,5367,5476,5726,7667,7834,5485,7628,5301,8903,8762,8179,7482,5726,7834,8772,8345,5655,5622,8179,5476,5712,7883,7834,8762,5485,7972,5501,5564,5564,8438,8438,8467,8140,5726,9646,8762,5325,7675,8211,5708,5432,5480,5358,8467,8387,5480,5693,5651,8716,7675,5209,7786,5358,7582,5501,8272,8467,7920,8227,5524,7706,8136,5629,7786,5320,5320,5501,7893,7752,7904,5564,8604,8316,5726,8119,5391,5337,5391,8805,7478,8184,5485,7643,8170,7834,5647,5377,5237,5274,7834,5407,5358,7610,5688,7653,7632,7478,5730,5237,5717,7687,5274,5534,7687,8789,7700,7706,8533,5325,5209,5325,5325,7706,5325,7710,5325,8033,7849,8387,8800,5661,8174,5358,5391,5209,7710,8184,8170,7681,8093,8093,5573,7768,5661,8800,8077,7653,8316,8287,8653,7628,7940,5476,8447,8451,7967,5726,8805,5274,7742,7864,8494,5476,8287,7967,7828,8267,9654,8387,7710,8033,7734,8277,8170,8093,8174,7681,5209,8800,7628,8287,5726,8494,7610,7710,5241,8334,7834,7610,5329,7817,8795,7516,7940,7738,7610,7817,8795,7952,5688,7768,7952,8354,8721,7849,8604,5661,8073,8115,7867,5480,7632,7883,7675,8893,5407,8190,8411,7962,7521,5274,5255,5655,8119,7982,5391,7605,8354,8104,5329,7478,7582,7675,5325,5381,5464,5426,5712,8010,7805,5622,7858,8527,7605,8062,7867,5730,5688,7622,7542,0,8005,9657,7957,8267,7849,5629,8354,5442,5524,7893,8893,5241,8131,8077,7542,7675,8498,7817,8334,8762,5301,5358,5314,5573,8635,7710,7605,8322,7610,5347,5407,8201,5301,5296,5358,8539,8827,7834,5352,9367,5622,5213,8647,8307,7628,7763,5622,8115,5237,8039,5476,7982,7877,5568,8140,5255,5442,5325,7952,7588,7957,7687,5329,8184,5612,8498,9662,5612,5333,8676,9670,7675,8073,5651,7487,8903,8239,7883,7828,5564,5407,8438,8005,5491,8255,8919,5464,7962,8149,8365,7675,8762,5391,8365,9676,5213,9680,5213,8811,8170,8762,5329,7834,8073,8903,8159,7990,7610,7542,5401,8073,7576,8277,9686,5347,8005,7628,8354,8052,5655,7658,5377,5651,5442,5325,9690,9680,8909,5622,7576,8010,5448,7576,9695,5314,8909,5329,5329,5407,5480,7616,7628,8277,7610,9701,5401,5347,7542,8354,7548,5726,5401,8411,8676,8857,5301,7487,7632,7616,8354,5314,7500,5651,8539,8010,7914,5578,7914,8293,5661,5666,5274,5209,8447,8879,9710,7542,9715,5358,8282,7478,8302,8756,8110,5501,5358,8402,9721,5301,7710,9726,9736,7904,5301,8811,8170,8312,5305,8140,8184,7576,5301,7588,7681,5301,7706,7588,8062,8316,5209,8604,8354,7576,7516,9345,8126,9740,5501,5325,9745,9751,7779,5274,5564,7779,8179,8845,5301,8354,5329,8170,7706,8402,8126,8015,7516,8548,5485,8039,9759,8589,8589,5629,8411,8110,7746,5730,7500,8548,7982,5407,8365,7839,5301,5661,5564,8447,7930,7786,5519,5524,5629,5688,9751,8340,9345,5629,5651,8589,5501,5372,8756,5419,5305,8589,8589,7495,5237,7779,5419,7908,8073,7811,985,8548,5274,7495,8641,8077,5301,7571,8539,8077,7681,5347,5651,5285,8484,5237,7817,5241,8484,5337,5325,5496,7576,8329,8354,8062,7628,7849,5509,8504,7752,7752,5688,8136,5209,7853,8816,8998,5381,5320,8104,7920,7482,8302,8062,7972,5325,5501,8267,8504,7883,5309,7588,7565,5612,8402,8484,7687,9766,5309,5564,7972,7839,5209,5442,8062,7687,5666,5237,5564,5661,7914,7930,7605,5726,8093,7605,8670,8811,7924,5564,5480,5655,5491,5314,5391,7548,5274,8443,7592,8282,8170,5305,5320,8397,9772,5485,8504,7946,5661,5381,7605,5442,7795,8126,5291,8582,7982,7839,8845,8845,8272,5661,7692,5285,7768,5671,7632,8190,5224,5274,5564,9462,8316,8164,7681,7482,5666,5661,7768,7500,8099,5459,8316,7487,5419,7521,5296,5291,7972,5407,5676,7710,7746,5655,5329,7558,5688,5320,7898,8316,7675,5509,8196,8845,5519,5377,5519,5661,8062,5237,5564,8805,5342,8217,8653,5564,5485,7982,7972,7834,7592,8527,5325,9778,9783,8548,7516,7888,5301,5329,7779,5442,7768,8670,7706,7706,9032,7706,5509,7542,5274,8087,7994,7706,8272,5509,8461,7599,5413,8863,7774,8039,8402,8099,7511,7706,8427,7930,8287,8093,7746,7706,7867,8772,8548,8234,7967,5476,5209,5426,7779,5309,7893,7872,8438,7628,8548,8010,5329,7500,9789,8015,9796,7500,7521,5407,7990,5274,8821,7746,7706,8676,7548,8539,8438,7622,8467,5661,8222,7487,5688,8411,7811,8845,8827,7746,7994,5564,7994,7628,8131,7622,5661,5401,8548,8411,8267,7482,5377,7795,7972,8267,7558,7877,5491,5367,8467,8548,7500,9804,9810,8845,9367,7616,5309,5476,8863,8447,7898,7786,7533,7576,5407,8451,7768,8617,8267,5367,8952,5237,8164,8272,5564,8267,5655,5524,8613,7982,5437,8909,5274,7588,5655,8548,8272,9818,7774,5358,8527,8140,5301,5612,7482,5237,8548,5666,5622,7542,7800,7972,5329,5305,8647,5401,5651,8190,8548,5325,5261,5342,8010,8952,5413,5476,5514,8711,7576,8322,7643,9824,5237,9829,5519,8297,8190,5296,8255,8833,7571,7972,5261,8589,7516,7628,8010,8239,8287,9021,5407,7648,7877,7872,5519,5296,5396,8857,5237,8322,9835,8245,8119,5296,5237,7719,5407,5419,7811,5372,8827,5381,5285,8073,7877,5476,5386,5342,5476,8635,7500,5325,8888,7542,5347,7734,8329,8857,7706,5352,5301,5305,5666,5661,8857,8582,5337,7500,5666,5274,7877,5568,5329,7877,7616,7774,7521,5274,8397,8857,7632,5237,8479,5347,5666,5401,7487,8484,7628,8062,7576,5274,7849,8354,5325,5509,8582,5325,8504,7994,8267,8062,8104,7920,8302,8461,8136,8504,8548,8099,5501,7972,7752,7565,7605,7482,8816,5320,5274,8811,5661,5564,5401,8443,7914,5237,7972,7548,7576,8282,5564,5314,8670,5476,5485,5491,7898,8164,5381,7692,7648,5459,7946,5296,9462,8190,5419,7632,5291,5285,8316,8845,7675,5676,5519,5237,5342,8272,5325,5377,5325,7500,8093,9839,7500,7706,7893,8287,8015,8234,8119,7994,7746,8087,5413,5442,8272,7511,7768,8548,8427,5509,5329,8863,5209,7990,7521,5407,7746,5347,5377,7622,7706,8267,5296,7487,7888,8676,8411,5274,8131,8863,7811,8539,5329,8411,8438,8467,5309,5564,8613,5655,8527,8952,5524,7877,5301,5476,5407,8888,8647,7800,5666,7616,5612,8711,5514,5661,8239,5261,8833,5419,7542,5372,7811,5285,8857,8998,5661,8461,8998,5699,8998,9844,8073,5255,5730,9853,8461,7616,7616,8745,5367,8721,9021,8772,8227,7706,5534,7616,5666,8772,5329,8721,7599,7599,8461,7599,7653,9858,7632,5564,5651,8048,7786,7605,8170,7790,7786,8438,8461,7904,7795,5377,5676,5564,7516,7834,7999,8397,7795,5314,7628,7972,8345,8048,7823,5320,7487,7920,7538,7511,7904,8048,5301,8783,7994,5358,5325,8833,8316,7511,5325,5676,5651,7999,7632,7920,5325,5325,8375,7924,7763,8322,7738,5712,7924,5337,5337,5501,7904,5524,7924,7786,8322,8205,5524,8093,5476,7605,8539,5519,7542,5476,5274,8164,8658,8658,7542,7811,8397,5274,5476,9863,8322,5274,7628,8845,5381,5629,8467,5237,8010,5261,5501,5261,5401,5666,8845,8417,8322,7877,7628,7817,5476,5248,5534,5501,8062,7710,7710,8402,5564,5367,9054,5476,7986,5476,7920,8093,7511,7972,5726,5237,5661,7521,5237,5237,7706,8255,5296,5296,7675,7719,8062,5419,8539,8402,7893,8272,8302,7710,7605,5407,8190,5391,7858,8548,5509,5296,5730,7849,7849,7653,5708,8647,5476,5401,5726,9873,7516,9054,8255,5708,8010,5476,5296,8190,8479,5642,8149,9877,8898,7790,5578,7706,8131,8131,8131,5459,5459,7696,9045,8821,7696,8716,5622,5666,8805,5209,8845,8783,8052,8267,8994,7920,7710,7487,5573,7977,8170,7849,5573,8149,8099,5325,5629,7742,7957,8417,8131,8334,8115,7957,5325,8149,8154,5337,5305,8359,7696,5578,8805,7491,8245,8022,8196,8267,7710,7883,7883,8062,8845,7972,9881,8077,7883,5655,7935,8093,5241,5337,8631,8239,7610,7972,8381,7681,7696,8387,5459,7795,9886,5401,8052,8119,8577,8751,5485,8170,5358,8539,8039,7752,7500,5255,8827,9891,9900,8805,7628,8827,8005,9904,8005,8827,5401,5534,8005,5401,5401,8827,5708,8119,8022,8805,8005,8077,7972,7883,8381,7867,5325,8805,8805,7610,7628,7628,7999,7487,7588,5476,7588,7487,7999,7999,8110,5476,5333,5325,5688,8800,8340,5717,8539,7811,5464,5476,8504,7675,8613,7576,8467,8762,8461,8164,8811,5496,8494,8227,7786,7972,7653,5564,7893,5501,8456,8334,5407,7565,9032,5337,8136,8560,8800,8297,7817,7628,7752,5642,5309,7920,7542,5237,5237,7893,8800,5485,7658,7914,7548,8015,5661,7914,7994,7576,5459,7883,7893,7904,8073,5726,5606,7930,7795,7658,5209,7692,7972,8447,5255,5209,5564,8334,5655,5274,7571,8456,7977,8119,7972,8222,7715,5726,7982,7990,5476,7482,7500,7924,7610,7582,9012,5329,5485,8293,7834,8334,7473,5476,8687,5671,5717,7582,7972,7675,7504,7504,7696,7864,5426,7858,8766,5209,7952,773,9915,2533,3110,9919,3464,9924,2802,9929,9934,9939,9945,3447,2826,2847,3306,9950,9955,2550,2661,3190,9961,2685,2300,3133,3157,2871,3215,9966,3179,3005,9971,3235,2606,2953,2977,40,609,2526,9977,1783,9981,3457,9985,2795,9989,9993,9997,10002,1733,2819,324,3297,10006,10010,2547,2654,3120,10015,2678,2700,3126,3148,2864,3208,10019,347,2998,10023,3228,2599,2950,2968,24,603,10028,429,10033,852,10037,803,972,800,10041,9312,10045,10050,829,833,985,806,955,959,10055,839,819,816,10060,826,988,1044,1464,926,809,10064,855,836,1659,10068,915,845,842,848,776,10073,4081,3560,10077,3573,10082,10087,10091,10096,10101,10107,4021,10112,3609,4035,10116,10121,3809,4003,10127,10131,3849,3912,10136,10140,3707,10145,10149,3959,3661,10154,10160,3747,3787,10164,64,606,2523,10169,3103,10173,3454,10177,2792,10181,10185,10189,10194,2738,2816,2840,3293,10198,10202,2544,2651,3183,10207,2675,2696,3123,3144,2861,3205,10211,670,2995,10215,3225,2596,2947,2964,52,1084,10220,2537,9220,3114,10225,3471,10229,2809,10233,10237,10241,10246,10250,2759,2833,2854,1321,10255,10259,1426,2668,3194,10264,1325,327,3137,3166,2878,3222,10268,1318,1311,10272,3242,2613,1400,2986,32,410,10277,1620,10282,482,10286,3468,10290,2806,10294,10298,10302,10307,10312,10316,3451,2830,2851,3311,10321,10325,2554,2665,432,10330,2689,2305,464,3162,2875,3219,452,1772,3009,10334,10339,3239,10345,2610,2957,2982,106,10349,0,0,0,10360,10360,10360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,10360,10360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10366,10366,5777,5777,4344,4344,5078,5078,6688,6688,6694,6694,10373,10373,10379,10379,5898,5898,6704,6704,670,670,6704,6704,10387,10387,10394,10394,6704,6704,1736,1736,0,0,10402,10402,10402,10402,10402,10402,10407,10407,10417,10417,10427,10427,10434,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10446,10446,10450,10450,10455,10455,6540,6540,10460,10460,2851,2851,3613,3613,10465,10465,10470,10470,10475,10475,4198,4198,3917,3917,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10480,10480,10480,10480,10480,10480,10480,10480,168,179,184,10488,193,168,179,184,10488,193,168,179,184,10495,193,618,618,618,10505,249,249,249,249,10511,10520,10520,10527,10527,10527,10527,10541,10541,10546,10546,10549,10549,10558,10558,10558,10558,4971,4971,770,770,1451,1451,908,908,5150,5150,5150,5150,1521,1521,28,28,44,44,44,44,44,44,10568,10568,46,46,52,52,52,52,776,776,54,54,54,54,54,54,56,56,56,56,58,58,10575,10575,66,66,10579,10579,10582,10582,10593,10593,10593,10593,10599,10599,5234,5234,4924,4924,10604,10604,10608,10611,10615,10619,10623,10575,4971,10627,10631,5070,5070,5070,5070,5070,5070,5070,46,46,5070,5070,5070,5070,5070,5070,10634,10645,10651,10658,10658,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,54,48,40,48,24,40,10667,64,32,52,10676,1311,1314,3242,4177,875,2878,3342,3222,10684,3648,4056,2514,10688,2854,1321,3194,10255,1400,3471,3373,2809,10229,2613,2668,1426,10693,1325,2537,24,40,64,32,776,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,911,915,922,926,812,809,848,806,955,816,842,803,968,800,845,1144,1454,1148,852,1464,1044,24,855,819,839,988,826,429,24,40,64,32,52,479,2885,833,1060,773,852,855,933,937,942,951,10697,10707,5004,10717,819,819,863,0,0,0,0,0,0,0,0,0,0,0,0,875,884,24,770,40,892,64,895,58,664,46,1057,32,773,905,52,776,908,836,911,915,918,922,926,812,809,929,848,933,937,942,946,951,806,955,816,959,842,803,968,800,972,845,855,819,839,985,988,992,826,429,976,10727,770,40,892,64,895,58,664,46,1057,32,773,905,52,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,836,911,915,922,826,988,1044,848,806,10733,842,803,968,845,816,800,819,855,839,852,955,429,985,926,24,109,40,776,0,0,0,0,0,0,0,0,3715,10737,836,915,922,806,816,842,803,800,845,926,809,848,826,819,839,855,852,429,10041,10068,10060,10742,24,40,64,32,905,52,908,1786,10747,106,50,58,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,40,64,32,905,52,836,911,915,918,10750,922,812,10755,809,929,10760,10765,10769,806,955,816,959,10774,842,942,803,10778,968,800,972,10782,845,1073,855,819,839,985,992,826,429,770,40,892,1518,64,109,52,905,908,1440,855,819,839,852,0,0,0,0,0,0,0,0,0,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7558,7681,7972,8402,5712,5661,8402,5661,5305,8349,5325,10786,0,7908,7730,8205,7706,5386,5651,8789,8375,5509,8073,7752,8721,5688,5285,5485,8110,7946,8451,8577,5261,8805,5712,8104,7914,5661,8407,8397,8140,5519,7528,5480,8174,7558,8028,5564,8307,5480,5453,10798,7920,7786,7795,5301,5401,8015,8402,5381,7779,7576,7920,8473,8099,7858,8039,8005,7805,7883,5606,8028,5485,5381,7986,5476,8345,8504,7914,8287,5564,5564,8170,7893,8322,5509,7582,7920,8039,8548,5693,7478,5712,8821,5622,7972,8694,7795,7742,8539,8345,5426,5386,7628,8732,7823,8267,7548,8110,7864,8159,5647,5642,5407,7994,5285,7628,7977,8676,5358,8227,5564,5274,8447,7746,8631,8909,8422,7898,7542,5329,8631,5448,5629,7588,8863,5717,5476,8073,8239,5325,7920,5661,5524,5329,8888,7742,8227,5329,8039,8334,8663,8647,5419,5564,5629,5305,5237,5622,5329,5285,7616,5329,7972,10803,8104,5401,8316,5352,8447,7687,8239,8402,7952,7675,8909,8010,7972,5285,5261,7478,8402,8489,7521,5342,5501,7616,8772,9361,7883,7908,8789,8068,5401,5358,5218,5291,5573,5476,5676,7986,5401,5514,8068,7786,7706,8402,8888,8329,8613,8154,8205,5274,8473,5426,8739,7986,7834,5329,8154,8205,7632,5726,8205,8375,8447,8205,8033,7542,8494,8687,8205,7516,8687,5209,5285,8077,5442,5325,5524,5442,7746,8077,7972,7972,5717,5407,5459,7972,5519,7658,5655,8484,5274,7628,5496,5642,7628,5248,5237,5237,8484,7628,7628,5426,8170,8484,7528,5617,5617,10809,8484,5391,8772,5320,5391,5606,7883,7734,7734,8721,5396,8772,8732,8598,5367,7478,7576,8479,8461,5261,5476,0,8994,7658,8010,8282,8732,8560,7565,8282,5699,10817,7548,5407,8777,8093,7605,8115,7888,8073,5274,5717,8732,7977,5329,8062,8334,5237,0,5564,5372,8527,5301,8670,7628,7843,8805,0,7994,8073,8249,8184,8170,5464,8087,8548,8411,7790,5459,10825,7898,5496,5476,5514,8777,8340,7957,5491,10830,5642,8316,10836,8903,8772,5329,5476,5381,5407,8154,8249,7706,5329,5329,7877,8617,8682,7779,5407,5407,7719,7834,5564,5255,7834,7834,8340,8340,5476,5333,8805,5688,7663,8716,7681,5285,5381,5352,5509,5476,7637,7746,7763,8811,7542,7628,7628,8851,7723,5647,5367,7706,8211,5209,5296,5342,7972,7521,5358,5564,8068,7994,7478,7972,7706,5261,7752,7542,8504,8998,5568,5381,5329,7500,5325,8196,7706,8467,5501,7904,7872,7528,5325,5396,5396,7565,7478,5291,8131,7972,8267,8196,5708,5573,7790,8387,7893,8705,8560,8827,7482,5337,8411,5476,10844,7994,5301,7920,7864,5274,8227,8777,8249,7588,5476,8467,8297,8093,7658,7681,8539,7622,7723,5301,5218,7990,7715,8456,8222,8131,8438,5476,5476,8170,7920,8893,7692,7605,8447,8073,5224,5261,5688,5642,5274,8543,8062,7616,7687,7582,8170,5459,8077,8811,7982,5255,5712,5564,8119,7786,5358,7994,5564,5314,7790,8010,7867,7790,7790,7904,5209,5305,5209,8539,7710,5325,5485,7610,0,5453,0,5529,7616,7723,5717,8391,5301,8164,7482,8682,7542,7637,8033,7628,5519,5209,8577,7478,5325,8005,8604,5248,7839,8131,8687,8211,7710,5285,5285,5564,7628,7605,5209,5419,5296,7482,5496,8048,8164,8613,5248,8211,8316,7548,0,7605,8329,7811,7473,7768,5671,8245,5485,5426,7768,8340,5485,7696,8345,8087,7710,8504,5407,5377,5464,5255,5301,5309,8149,5320,9345,8245,7977,7648,5358,8115,8255,5296,7706,8903,0,8164,7643,7616,7632,7616,8329,5309,7962,7482,8349,8062,7576,5642,8762,7994,5573,8307,5564,8504,7482,7849,5358,8201,8267,8539,5647,5342,5342,7558,8033,7478,5432,5237,8845,5301,5564,7605,5305,5301,9345,5325,7888,5688,8302,5612,8033,8527,8170,5712,8249,5426,5485,7935,7528,7667,7834,8805,7757,8451,5509,7653,5337,8451,7977,7599,5337,8816,8670,5274,7843,5564,7864,5305,7752,5381,7823,7715,8795,8277,5401,5391,8494,10850,5401,8154,5337,7616,7616,10857,8104,8211,8211,7839,5509,5485,8539,5726,7582,5407,7967,7786,7986,5329,8170,7994,7667,8077,8653,7849,7734,5209,5524,8039,5564,8099,8227,5442,8022,7805,8427,8514,7774,7904,5301,5647,8073,7653,8222,8196,5676,5237,8196,8539,5381,7734,8903,5309,7999,7658,8845,5396,7786,8093,7893,5309,8345,7599,5413,7576,7834,8170,5407,7516,8772,5320,5606,8479,7982,7706,7849,8402,8272,8104,7930,8227,7811,7893,8277,7706,8249,5255,7994,7883,8302,7811,7834,5476,7681,7706,5509,8604,8716,10862,5480,8484,8964,7632,0,0,8249,0,10874,0,7616,7616,7616,7675,7730,5688,7990,7521,5509,7628,7628,5564,5401,8190,8467,7823,8115,8494,8104,7675,7628,7858,7790,8345,7864,7632,7616,8154,7795,5419,7746,7571,7571,8170,8222,8110,5237,5661,8345,5726,5407,5564,5329,5485,9054,8527,8062,8062,5730,7834,5647,7605,5209,7521,7914,5717,5381,5485,5651,5464,7914,7734,5671,7582,7576,7542,7994,8073,7994,8994,5325,7982,8205,7977,8676,5642,7667,8827,7768,7994,5274,8005,8805,7643,5237,5391,7706,5347,8548,5642,8467,5712,8267,5320,8539,5622,8721,9751,5529,7877,8509,8005,0,5419,7957,7994,5213,0,5448,7482,5391,8104,5391,8267,5655,7843,8293,8249,7849,5699,7940,8467,5301,8170,5237,8334,5573,7500,5647,7511,8494,5655,7542,8443,8312,8451,8467,5573,7628,7908,7533,7734,7734,8136,8851,5237,5501,8267,5241,5407,5325,8893,8777,8869,5651,8052,7962,5655,8391,5448,7500,7511,5237,7786,7843,8164,5534,5671,8451,5391,5629,7632,8613,5612,5274,7930,5642,7952,5358,8548,8234,8925,5519,8604,8370,5347,0,5325,5301,8179,7843,7628,0,7616,5305,7757,7681,7790,8316,7605,5352,8345,5401,8827,5237,5255,5688,5309,8104,5381,7994,8422,8340,7628,5476,5325,8239,5358,5329,7588,8201,8015,7632,5419,7800,7834,8093,5325,8647,8234,7653,8539,7588,5329,5617,8987,8539,7763,8329,7800,8073,8539,8451,5578,9367,8190,7994,7982,5708,5651,7957,8140,7548,7774,8312,5419,5651,8827,5453,5296,7667,7482,5407,7834,5320,7482,8005,8033,7982,8302,5568,7542,7538,8205,10880,8322,8307,5401,7516,5568,7663,5358,5301,7994,5325,8329,8119,8010,8249,7742,7877,7828,8329,5285,7872,7872,5666,7628,8255,5573,5396,5407,8349,8267,8222,5337,5726,5329,7648,5296,7864,8909,7893,5291,8397,8048,8613,5501,8005,8598,7872,8387,7500,5564,5291,8903,7478,8316,7487,7675,5237,7610,8267,0,7706,5407,8267,7962,8093,7628,5367,5218,5325,8062,7487,8789,5666,8190,8267,7628,5237,8052,8073,8052,7663,7994,5296,7994,5325,7839,7521,8375,7763,5476,8873,5419,8179,7914,8322,5401,7990,8467,8245,5377,5629,5661,5358,8427,7962,5401,8010,5693,5381,7786,5661,5320,5407,8898,8062,7730,7528,8329,5642,10888,5448,5320,8329,8217,8751,7994,8766,5442,8349,8613,8647,7658,7706,5372,8033,5655,7696,8447,7616,5524,8827,7675,7706,8048,5407,7500,8005,5381,8411,7757,5651,5347,5309,8777,7622,7723,7867,5274,10893,7742,5274,7588,5329,5476,7500,5661,5301,5476,7986,5666,7675,8539,7972,7930,8909,5642,5305,7811,8647,8010,5448,8772,8422,7723,8255,7994,7511,5296,0,5524,8267,0,5301,5320,5573,7663,7516,5372,8190,8033,8277,8154,5480,7478,7872,7872,7706,7946,5329,7588,8422,8211,8267,8751,7628,8329,5325,7592,5274,5305,10898,7588,7592,0,8077,8073,8261,5476,5274,7628,8170,5401,5401,7482,8322,7616,7610,8316,7994,8354,8093,5726,5642,8010,5651,5347,8005,5347,5325,8903,9516,5666,5666,5396,8527,7972,7994,8005,8427,8359,5301,5325,5651,5666,8359,7632,5325,8005,5329,5407,8589,0,5666,7768,7675,5476,8375,8514,5432,7982,7982,5329,9641,5329,7487,7675,7542,5573,7982,7500,8451,5564,7500,7500,5329,7982,7628,8052,5285,8170,8039,8222,7834,8427,8427,8005,8282,5237,5320,5248,5688,7757,5325,5688,7558,5391,0,8539,5578,5617,7628,8811,5209,8062,5296,8249,5717,5342,5367,7637,5391,5476,7538,7521,7565,7864,8994,7710,7542,7752,7752,7872,7898,5358,8354,8354,7667,7706,8297,7482,7706,5606,8467,5291,5296,8196,7706,7548,8387,7839,7715,7599,5501,5501,8560,7817,5372,5564,8297,5381,5564,7710,8307,8647,5274,8447,8594,5688,5337,7687,5255,7710,5337,7849,7653,8170,5301,5564,8297,7687,8131,7920,8073,5274,7605,7757,5432,5224,7786,8297,5726,5617,8964,8093,7786,7883,7786,7616,5301,7558,5726,8711,5717,7839,5296,5296,8211,5564,7924,8631,8577,7605,5476,5274,8144,5285,5301,5476,5255,5325,5201,5617,5476,7599,5305,7723,7867,7952,7817,7972,7800,10904,7972,7977,7648,7487,7706,5426,8577,5688,8670,5218,7977,8839,7935,8126,7864,7653,5320,8190,8527,7914,5655,5564,5274,5578,7478,5564,5301,7843,5358,5573,8467,5337,5381,7883,7834,8805,7828,8839,5296,7795,7972,8022,7893,8170,5651,7706,7706,7628,7667,7687,8249,8322,7487,5237,8099,5301,5459,7681,8272,8653,8811,7653,7628,7898,7893,7920,7994,5471,5476,8467,7588,7768,7542,7872,8447,8745,7994,7779,8039,5509,7582,7864,8282,8539,7599,8179,7924,7616,8039,7877,0,7986,7990,5325,7849,8805,8349,7500,7746,7628,5381,5391,8190,5464,7834,8411,8110,7994,5564,8467,5712,7994,5564,8821,5661,5337,5688,7790,5367,7616,5391,5248,5629,7605,8548,5377,5564,8467,5296,8249,7986,8762,7982,5688,5459,5301,7795,8267,8170,7823,7957,8658,8164,7616,5419,0,7843,8334,7487,5237,7839,5237,8467,5534,5401,5448,8282,8164,8164,5325,7478,5688,7653,8196,5476,5358,5396,5629,5476,8762,8716,7849,7982,5296,7538,8391,5476,7752,7616,8909,7628,8777,9423,10904,7800,0,8987,5578,8340,7710,8539,5708,5329,7994,7972,5629,8033,8647,5726,7920,7628,5407,7632,7957,8196,7548,7482,5419,8952,7752,5285,5509,7972,5578,7538,7538,8039,7511,7790,5237,8827,5301,7800,7675,10909,8015,8211,7521,5305,8397,7487,5688,8594,7972,5352,5352,5285,5726,5432,8239,7533,7952,5237,5325,5622,5464,7893,8149,5291,5291,5296,7482,7877,5285,5261,7648,7675,8711,5248,8329,7487,10919,7558,8903,5301,5661,5261,5476,5485,8245,7877,7706,7839,7521,5617,7632,8196,7616,7637,5301,8115,8190,5401,7605,8115,5661,8211,5661,7706,8164,5407,8249,8052,8821,8154,5314,5381,8888,7849,7763,8010,5666,5381,7986,5651,5301,8104,5301,5688,8077,5329,8762,7675,7605,7610,5301,7610,8527,7491,5413,8987,7786,5676,7616,0,5237,8179,5726,7768,8762,8179,7800,5291,5381,7605,7687,5661,5464,8816,8456,8293,7528,7548,5305,7696,7990,7763,5237,5426,7834,8795,8467,0,8093,8190,5320,5274,8316,7610,5381,5274,8387,7982,7994,8479,5248,7994,8479,9032,7946,5726,5476,5476,8201,8811,7628,8473,5496,5476,5261,8033,5564,8234,5501,8952,5381,8136,7548,7883,8915,7548,7548,5661,7706,5661,8297,7972,8504,8196,5309,7667,8467,5712,7637,5708,5453,5296,8297,7977,5480,8093,5491,8222,8174,5642,7571,5358,8670,8772,8170,7849,5320,5519,5655,5476,8994,8073,8539,8631,5564,8234,7972,7972,8297,7533,5476,7790,5480,8136,5568,5274,7877,5726,7930,8234,5237,8884,8073,9818,5564,5476,7710,7692,8504,5419,7977,8879,5305,5381,7696,7632,8613,7605,7952,7482,7774,8577,10923,10934,9345,8903,0,8653,8800,5453,5320,7977,8653,7558,5301,5676,7914,8057,5717,5476,7628,5655,7511,5688,8658,5325,5476,8201,9345,8839,8302,8658,5301,5401,5401,7692,5407,8998,7877,5358,8234,8272,8467,8093,7710,8227,5442,7888,8473,7779,8227,8456,8456,7893,8467,7632,8039,7834,8762,5237,7972,8170,7706,5325,7972,7795,8800,7935,5377,5377,5564,5248,5661,8411,5459,8653,8676,5519,5519,7849,8467,8222,8222,5564,7628,8641,7834,5296,7930,5573,5329,10940,10945,8267,8245,8131,8245,8359,8164,8467,8613,8716,7592,5612,8282,8068,7710,8940,5453,7616,5381,7542,8359,7692,5401,8222,5301,5578,5391,5329,5476,5459,5661,5274,7994,8473,8340,5325,5419,9367,8222,7521,10952,7734,5407,5622,5407,8397,5325,7883,8925,8010,8073,7521,7528,5432,7648,7800,5347,5708,7888,7952,8340,5342,8789,7877,5401,5358,5309,8903,5320,8772,5358,5347,7734,8613,7972,0,5320,8631,5391,8126,5661,8073,8033,8277,7610,5237,5274,5347,5578,5491,10961,8365,5391,5407,7533,5476,8297,8387,5237,5237,5642,8527,8772,0,8473,5564,7904,7849,5325,5325,5407,8721,8411,7834,7952,5291,7858,7790,5651,5651,7763,5391,7487,8427,7632,5291,5651,7681,5401,5642,7972,7667,5237,5261,7994,5237,5606,7628,5347,7864,8762,8196,8334,5325,8391,7616,8131,5726,8427,5309,8721,8919,5407,7632,5726,5407,7994,5291,5726,7632,5347,7914,8539,8721,5407,8721,7834,7952,5651,5391,8427,5347,5291,5325,5237,8539,5606,7628,8131,5309,5726,5285,8484,5309,8140,5291,7972,8783,5325,7786,7883,8397,8539,8987,5396,7768,5717,7710,5381,7952,7817,8062,5381,7643,5688,5426,7588,8447,5325,5329,7972,7687,5358,5426,7982,8987,7817,7972,5529,5573,5237,5476,5329,5291,5237,7834,5237,7834,7834,5693,5564,5688,5688,5285,8062,5325,8010,8329,7757,8062,5496,8272,7500,5381,5476,8504,8329,7482,5261,7706,5480,5325,8329,7482,7864,5501,8387,5642,8022,7914,7482,7528,5291,7675,8884,8033,5337,7972,7504,7565,7528,8783,5617,5274,8302,8068,7500,5476,5476,7588,7710,7849,7914,7849,7500,5655,7605,5241,8131,5209,5209,8427,7786,5564,7768,5459,8093,8539,7924,5301,5386,7533,7576,8811,5476,8170,5708,7687,5480,5476,5726,7999,5255,5358,7504,5726,7904,8245,8443,8272,7605,7839,5578,5218,7500,8329,5476,5464,7849,5391,5496,5285,5391,8727,5496,8131,7952,7768,5296,5381,5396,5671,7521,7994,7914,5442,8316,5651,8427,8391,7864,5296,7834,7504,7795,7696,5413,7681,7710,5666,7605,8582,7473,7478,7628,8909,5325,7972,8504,7588,7843,7864,8582,7864,5391,8805,7883,8073,7877,5337,7946,8255,8196,9045,8345,7628,7675,7558,5381,5274,7478,7478,5524,8022,7734,5296,5485,8851,5655,8851,8762,10969,8227,8839,5381,7990,5726,8827,7675,5342,7599,8190,7893,7710,7738,5476,8136,7482,7757,7920,8287,7877,8033,9032,5325,7706,8772,8863,7994,8170,8745,5407,5241,8115,7967,7542,5314,7779,5407,7605,8052,8099,7914,8473,8359,7858,7628,5459,7500,7858,5391,8190,5391,7643,5396,7864,7548,8539,5661,5564,7734,8805,5407,7706,7628,5209,8732,5237,5296,7482,8345,5274,7823,8033,8527,7605,7924,7834,7946,8190,5717,7495,7706,8711,7491,7994,0,8909,7967,5261,5407,8073,7692,5464,8154,5717,7616,5651,7675,5651,5237,8322,8033,9641,5377,7588,7898,7710,7542,5391,5419,8467,5661,5529,8272,5642,5642,0,7628,8473,8827,8745,5301,5305,5305,8987,5578,9476,5407,8115,5381,5401,7957,8179,7742,8721,5237,5314,5708,5708,5309,5578,5476,7982,5419,7800,8783,7653,5396,7877,7500,8833,7719,5237,5617,8217,5241,5386,5347,7864,7616,5291,5325,9021,5285,8073,5296,5622,7715,8982,7687,5391,8255,8772,8982,7734,8119,8190,5372,8772,8903,5342,7542,5325,5285,5485,5401,8417,5476,7663,8427,7920,5296,5396,5476,5476,5261,8261,8417,7542,8863,7738,7982,7576,8052,7491,7616,5407,7628,5407,5296,8762,5578,8190,8365,5666,7914,7994,7877,5301,5476,8411,5578,7834,7864,5442,7994,5442,5642,7877,8261,7482,5347,8033,8154,5578,7811,8365,5476,8903,8427,7834,8762,7834,5325,5693,5564,8504,5325,5381,8062,8272,8261,5261,7706,5480,8329,5476,8329,5325,8504,5419,5296,7742,8170,8387,8884,7500,7864,8099,7504,8022,8527,5617,7565,5291,5241,7786,7849,5255,8443,5391,7504,7687,7588,5655,8539,7967,7839,5726,7999,5358,5476,5476,8582,5666,5391,7795,5391,5381,5296,7558,7605,7914,5396,7883,8131,7768,7952,8329,5476,5241,5671,7521,5496,7643,7500,7576,5381,7478,7628,8255,7478,5524,5337,5296,8582,8851,8022,7663,8745,7605,7967,7495,8762,5314,7893,7990,7994,7628,8839,7914,7757,7877,7779,9032,5342,8772,7914,5476,8711,8033,5459,5464,5407,5661,9641,7491,7994,7864,7628,8190,7877,5209,8345,7834,8539,5651,7858,7500,5305,8903,7588,5661,5642,7898,5391,7542,5651,5309,7800,5578,5407,9476,8772,8982,8255,5347,7734,5291,7834,7542,8427,8033,7786,7542,8062,5367,5291,8062,7653,8062,5237,5237,8154,8239,7653,8762,7610,8307,5419,7706,5391,5301,8919,5509,5358,5320,5274,8527,7972,7972,7834,7834,5391,5573,5296,8068,5476,8068,5476,5407,7904,5730,7864,8140,7521,7811,5407,8800,5671,5726,5564,5237,8888,8052,7628,7605,7977,0,5237,8073,7752,7811,8888,8539,8548,5501,5476,7972,8222,7637,7653,7920,8136,7920,8131,8136,5337,7757,5305,7487,5519,7811,8653,7849,7849,5305,7653,7790,5301,8447,5358,7628,7977,8641,7790,7920,5237,7864,8170,5305,5573,8772,7811,5291,7930,5655,8467,5564,7774,7817,8594,5476,8560,5509,8751,8154,8010,8772,8721,8115,7972,7696,7605,5391,5358,5209,7696,7952,7858,8411,8349,5491,8119,8582,7893,8964,5476,7710,7790,7849,5358,5329,8504,5296,5671,7858,5209,7977,7500,9353,5285,5671,8205,5407,7616,8329,5655,5617,8888,8888,5688,5617,8732,8205,7576,8277,8365,7487,8033,8987,5606,8456,8845,5274,8349,5407,5342,5564,8772,8827,8827,7972,5325,8015,8762,5309,7504,8598,8267,8222,5437,8277,8527,8777,5325,8119,7663,5622,5564,8131,8159,8115,8239,7994,8126,8033,5622,7972,8863,8473,8267,8833,8772,8365,7834,10978,5261,5509,7616,5309,8811,5274,8205,5358,8762,5320,7834,9259,8190,7610,8811,8205,7930,5655,5564,8467,7817,7774,8115,5274,8126,8015,8154,7972,8010,8772,8751,8411,8131,7605,8721,7696,5407,5358,5391,8964,7952,8582,5491,7790,7893,7849,5476,9353,7972,7977,5296,5209,8504,5329,8205,5209,5671,5309,5688,5655,8277,5617,5564,8762,5325,5320,8987,7487,5358,7576,8845,8456,8772,8277,8527,8863,5564,5622,8159,8115,7834,8365,8267,8833,5261,7616,8811,7710,5237,5617,7823,7504,5237,7558,7849,7558,5578,5367,5629,7967,7967,5301,8484,5564,7999,8811,7706,5261,7723,8196,5274,7839,5291,8196,7710,7839,8033,8033,5459,8170,8783,8539,7719,8427,7605,8354,5726,5381,7710,5573,7795,5529,7839,7681,7888,8577,8811,5612,8140,5237,7999,7588,7482,8170,5407,5699,5629,8287,8402,5329,5726,8903,5688,5209,5377,5726,7710,5464,8255,8255,5642,5372,5377,10982,8365,8365,8443,8994,8222,7692,7990,5471,5291,5564,8033,5407,7565,7972,7730,8354,8994,7706,8354,8322,5480,7658,5476,8184,8093,5712,7904,5459,7692,5480,7977,7839,8174,5280,7605,8170,5459,7972,5564,7533,8170,5261,8073,8447,8170,5301,8682,5476,5325,5491,5274,5285,7888,7605,5622,7473,5635,7952,7723,8005,7521,7710,5329,5413,7972,7977,7681,7774,5407,7738,8255,5358,5274,7888,5325,8170,5325,5320,5647,5573,5485,8077,7675,8073,7710,8658,8711,5320,7843,5218,5285,5442,8255,0,7738,5407,7706,8494,7994,5314,5381,5325,8077,8170,8170,8099,5329,8873,8359,8170,7710,5509,7768,5377,8073,8443,7867,5325,8140,8548,7774,8548,5352,7972,5241,7828,7972,7628,7888,5471,8104,5218,7548,8539,5578,8033,8663,5407,7795,5629,8170,5564,8443,5459,7858,8110,7495,5377,5496,8422,5407,8479,8451,5237,7738,8322,8427,7828,5377,5325,8077,7800,7511,8427,5358,5248,5329,8239,8140,5629,5491,5612,5237,8005,5325,7972,8322,8539,7800,8548,5401,5413,5372,8184,5432,8422,8170,8919,8554,5274,8010,5573,7548,5471,8073,8140,8443,5291,5291,7516,7738,8255,8255,7734,8239,5471,8498,8582,5372,7738,5358,5358,7605,8170,5573,8255,5471,5442,5325,7478,8354,8184,7516,8577,7972,5301,7972,7877,5573,8676,7994,7610,7516,5274,7994,8857,5347,5661,8261,5661,8077,7738,5726,5381,8498,8857,5237,8005,5291,7516,7914,7817,7883,10986,5726,5377,7888,7888,7817,7843,10994,7632,7663,5325,8170,5629,11001,11009,7834,11013,8756,5726,7957,8149,5480,7972,11023,5377,8479,11023,7628,7935,8387,7952,7667,7994,8354,7528,8539,8190,8010,8504,5261,8322,5320,8068,8033,5491,7864,8136,7706,7790,8821,8504,8010,5622,8062,7982,5726,5464,8539,8093,5491,5708,5655,8010,8582,8608,5352,7930,7786,7692,8174,7605,8164,7864,7904,7576,7972,5642,7990,5476,8745,5391,5255,7696,7723,8170,5285,8687,5329,8509,7768,7576,5437,7972,5617,7779,7628,8670,5337,7811,8267,5578,5509,5564,8745,7576,8447,8093,5578,8427,7779,5209,5296,7599,8287,8039,8795,5476,5352,7542,8234,8184,7858,8721,7930,8099,5213,7779,8821,8110,5325,7924,5274,8732,8694,8658,5717,5337,8062,5320,5564,5209,5564,7752,8543,8427,7628,7752,8272,7786,5655,5367,8467,5329,8484,8783,5622,7994,7643,10830,7935,5285,8427,7734,8149,5501,8010,7516,5717,7719,8795,7811,5476,5325,8217,7696,7628,5274,8062,5666,8456,5301,5301,5329,7516,7935,8387,7952,8190,8539,8504,5622,7864,8099,8821,8062,7692,7990,5329,7576,7972,5476,7982,5655,5301,5642,8745,5391,5437,7972,5285,7576,7768,5329,5285,5578,5564,7779,8184,7930,5296,8234,7599,7779,8287,5209,8694,5564,5325,7752,5320,8456,8467,5367,8427,5329,7935,7516,7528,7786,7839,7839,7920,8397,8411,7986,7986,7839,5529,8282,8411,8411,8411,0,8411,8282,7839,8411,8411,8033,8613,8789,8789,5655,8287,8287,11031,8705,8411,8411,11039,11044,8239,8245,7877,8811,7542,7628,7628,7706,8329,5476,8039,8349,7706,8925,7599,7977,9032,7616,5377,8267,5309,8560,8387,8010,7478,8245,7864,7811,5578,11048,5309,8467,7994,5401,7710,7935,8447,7681,7972,5476,7592,7977,8033,5491,7696,8539,8312,7599,5459,8115,8272,5320,5480,11056,5485,5296,8316,5337,5651,5413,5325,8716,5476,5381,8863,8577,8329,8422,8022,7795,8272,8334,5730,8447,5471,7592,8190,8329,8201,5337,7675,5688,7853,7605,5688,8539,8539,5647,5485,5377,8307,5476,5578,8316,8687,7478,5391,7558,7588,5372,8658,8527,5401,5612,5296,5301,11061,8277,8543,8451,5291,5413,7811,5491,5329,5337,7576,5309,7628,8287,8005,7994,5377,5476,8245,8467,7632,5358,7495,7628,8903,5342,5471,5342,7834,8732,7710,5377,7628,5391,5655,5337,8267,7864,8411,8039,7864,5367,5464,5688,8479,8245,7994,11067,5476,8131,5642,5573,7511,8329,7738,8539,7710,8467,7588,7738,7542,0,5642,8721,8015,5708,5391,8604,7710,7588,5372,5578,5471,8539,7957,7710,8451,7516,9021,7648,7542,8190,7628,5476,7478,8239,8170,5391,5358,5642,8349,5661,5342,7811,8427,8909,7696,7622,8411,8411,7986,5301,8467,5642,7632,5301,5476,8805,8919,7706,5218,5261,7653,7628,8211,8613,7723,0,8582,5564,8756,8888,7565,5426,8136,7528,7914,7898,8467,8879,8154,5661,7898,7478,8170,5337,7653,7658,5688,5358,8456,5224,8670,7930,8631,8539,7967,7491,7516,8582,7952,7605,5391,7692,7628,5671,5717,5237,7972,5325,8329,5730,5426,5285,5237,7952,7495,7843,7977,7908,5241,11075,8267,7834,7558,8307,7710,5329,5564,7478,5564,5524,8052,7843,7977,8845,7667,7616,8073,5237,7930,5301,8267,8201,7675,7706,7920,8745,8039,7576,8772,7967,5255,8277,8447,8033,5337,8201,7521,7883,8170,5218,8255,5476,8762,7834,5712,8893,7930,7864,7628,5676,7628,8267,5730,8005,7521,7521,5448,5629,8391,5237,8613,5573,5209,7967,8170,7478,7521,8267,8052,5218,5358,5305,8783,5564,8239,7482,5622,7982,8255,7834,8015,8010,8255,7500,8919,5358,7528,5358,8554,7994,5241,7790,5261,7516,8312,7883,8249,7491,8340,7908,8527,8249,7967,8582,5401,8365,7877,5337,7706,7834,7877,8365,8093,7811,5237,8527,8365,5301,5337,5693,5688,5314,8456,7576,5476,8560,7628,8484,7834,8397,7790,7883,7500,7853,5655,5501,11082,0,8267,7658,5606,5280,5480,7571,7653,7786,7588,8312,5442,5437,8391,7632,8287,5442,5337,8316,7972,5274,5419,7558,7482,5647,7675,5712,7692,7940,5666,7734,8397,8370,7834,5237,8929,7994,5329,5347,7834,8272,8456,8427,8104,8772,8397,8287,8140,8653,5377,7746,8762,7982,7500,5426,8772,8484,8104,8267,8312,7990,5448,5651,7768,5442,8451,8267,5218,8608,7687,8370,5629,5419,8647,5261,7628,5301,5372,8149,5476,5419,7734,5285,5237,8772,8312,8789,5476,5301,8170,5285,5476,8929,8613,8329,5442,7834,8093,5651,5651,8929,7528,5285,5237,5651,7834,8411,7774,5391,5337,5391,5391,5301,7548,7491,7779,5301,5309,5309,5688,5476,7757,8479,7999,5693,8312,5688,7849,5564,5655,7972,7904,8375,5564,8716,7757,5261,8255,5568,8732,5209,8010,7628,5396,7653,7817,7706,8211,8915,8539,7487,5237,5476,7637,5391,5647,5237,8293,7542,11094,5407,7920,7491,7482,7904,7565,8033,5426,7853,8354,7834,5564,7920,8136,7528,7864,5291,5471,8131,7482,7542,8282,5325,8504,8783,8816,5501,8267,5325,8196,7920,8039,8062,7482,7667,5391,5476,7548,8077,5671,8915,8154,7658,8756,11104,11112,11119,0,7888,5209,8447,5647,5391,8438,7786,7864,8093,5224,5476,7786,7904,7920,7628,7487,7571,8201,5337,7828,7977,5655,5391,5391,8964,8170,8427,5391,5617,8190,7999,8222,7849,5358,8119,5573,5391,8073,7605,7710,8925,8312,8316,7542,5564,8533,7511,7542,5564,5301,8354,7920,7924,8282,8073,5381,8131,5320,5241,7715,8447,8077,8539,7977,7715,7883,7914,5476,7487,8582,9012,7930,5407,8316,5426,8062,5285,7710,7696,5717,5224,5391,8711,7977,7482,7667,7576,5248,8987,8316,5305,5666,5325,7628,7500,8504,9021,7972,7723,5261,7710,5274,5426,7768,7920,8964,7605,5730,8391,7473,5642,5274,5274,5519,7667,5496,8149,5325,7920,8613,5651,5476,7482,8687,8345,9562,5337,7719,8898,7542,8375,11126,7663,7757,7653,7872,5391,8946,5688,7675,5578,5519,8205,5377,8451,7795,7817,7548,8307,5329,5712,7843,5509,7528,8267,7930,7478,7588,7628,7877,8805,8073,7653,7977,8062,8498,8527,7877,5509,7972,7487,8190,7478,7478,7681,7817,5314,9471,5426,7542,7914,7653,9471,5661,5573,5241,8170,5274,8964,8211,7734,5301,7533,7872,7558,5524,5301,8594,11135,7605,11142,5647,7511,8397,8170,8227,8467,5407,8461,7757,8272,8227,8099,7473,8093,7930,5329,5301,8322,8057,5676,8438,8397,5352,8345,7920,5274,8387,8863,5666,9051,8571,7738,8653,8762,7994,7805,5209,5241,8543,8077,8827,8658,8772,5693,7706,7542,5314,7706,7628,5309,8721,7790,8227,5606,5237,5401,8272,7786,8451,5320,5655,5329,8249,5329,5396,8473,5205,8277,8800,11147,8201,8716,5509,8365,0,8407,5274,0,8154,7779,5933,8514,8509,7616,8539,5401,8039,5274,8762,5647,7994,8827,5564,8110,5325,7864,8110,8033,5377,7687,8062,7924,8676,5367,7628,8946,5426,5464,7994,5564,7999,5496,7867,5617,8062,8005,5606,8711,8255,8255,5730,7853,8827,7811,7491,8438,5407,8676,5407,8022,8005,7982,8190,7888,5381,5655,8411,7548,5209,5519,7491,5712,5213,7663,5381,0,5712,8287,7738,7898,5367,5401,5612,5237,7511,8443,7491,8417,5534,8164,5629,5612,8322,5717,8851,7805,8073,7533,7730,5358,8940,8461,5209,7478,7616,5464,7681,7511,8509,7962,8302,5448,5509,8052,5655,5655,7632,5476,8467,5629,8077,5237,7977,5717,7538,5676,11126,11104,5612,0,0,0,8136,5329,5612,7742,8443,8641,5519,8721,8190,5401,8087,5708,7800,5305,7632,5358,7994,7511,8539,8255,8827,5476,5329,5708,8946,8322,8402,7706,8227,5629,7800,5218,7877,8527,5485,8473,5320,7957,5519,8827,7610,8365,5407,8340,5301,5367,5237,8756,0,5413,0,0,5241,5329,5396,5325,7734,5296,8322,8312,7516,5612,5519,8589,7558,8005,7487,7511,5386,7946,8959,5342,8010,8255,7768,7924,5629,7521,5291,5285,9021,8239,5381,8149,8217,8772,8365,5325,5407,7548,8919,8387,7616,8217,5291,8417,5377,7734,8964,0,0,5693,5261,8509,5407,7893,5342,5329,5676,5296,7628,5401,5314,8255,7542,5314,5666,5358,8964,7811,7491,7888,8039,8903,8170,5501,8245,7930,5476,7663,8548,8329,7757,7605,7946,8863,5325,8077,7738,8154,8745,8888,7616,8005,8381,7500,5407,5407,11155,5496,7972,7763,5301,5666,5325,8857,8582,8987,5352,7986,8762,8851,8287,5329,8473,8222,5329,0,0,7610,7864,5329,7528,5407,5347,8073,5407,5642,7877,7521,5407,5237,8721,8777,8077,5666,8498,5726,7533,7632,8857,8375,5372,8077,5291,5629,5320,5347,5309,5688,5476,5655,5693,7999,8312,7757,5647,7542,8732,5261,5325,8010,7757,8514,8293,5237,7637,5426,5671,8201,7658,8170,5471,8783,7548,8136,7930,8461,8282,7542,5642,8196,7667,7478,8131,8756,7565,8154,7853,8816,7904,7628,7542,5241,7542,7786,8073,7864,8312,8201,7904,8354,8857,7715,7883,7977,7828,5337,8964,8073,8093,8851,7542,7511,8222,5391,8190,5617,5358,8447,7920,7888,5426,8898,8149,7696,8211,8387,5337,7558,7977,7491,5386,7972,8903,8316,5329,7757,7482,8509,7687,7605,5274,8805,9003,5274,5396,7768,8302,7977,5642,5717,8391,5241,7719,5285,5476,7877,5248,5629,8345,7482,8613,7605,8149,7734,7478,8277,8594,5401,8946,7675,5612,5301,5241,5573,8039,5524,8964,5519,8451,9471,8527,7528,7511,8509,5407,7872,5377,7843,7542,8170,9051,8322,7888,5606,8451,7790,8543,7706,8407,7473,8653,8227,5237,7786,7632,7805,8863,5309,7972,5274,5676,8154,8057,8772,5693,5407,8170,8249,5209,7867,7616,8509,8322,8022,7864,5496,8255,7548,8676,5448,5464,7811,7663,8762,5712,7957,5209,7893,5712,5305,5655,8073,5717,8077,5629,5676,8077,8136,7511,8052,7898,5476,7977,8888,8164,8473,5629,7800,7632,5413,5218,5485,8539,8443,8190,7511,8772,5291,8239,7734,5329,8217,5347,7734,8498,8322,8919,8154,5666,7811,5314,5401,5476,5496,8473,7986,7877,7521,8227,8227,8484,5708,5459,5726,8239,5651,8227,8514,7538,8969,5261,8154,8514,7834,5358,7653,5358,8589,8509,8756,5413,8062,8489,8589,5274,5274,5407,8438,5367,11161,8307,7687,5386,5407,5352,5367,8093,8411,5358,8489,7849,8721,5717,5717,8048,5573,8062,7952,8438,7719,8653,7843,5329,8805,8302,8170,8354,8354,7877,5726,7516,8227,8635,8653,7834,8438,7834,7864,7643,7628,7752,7521,8222,7521,5726,5642,7752,8282,8345,7994,7482,8144,5699,5347,8762,0,11167,5606,8077,7738,8509,7849,5699,8519,8721,8307,7706,8005,5629,8721,8647,8795,5237,5296,7877,7920,8903,7811,7738,7752,0,8514,8969,5261,7834,7653,5358,7752,8519,8489,7994,5274,8062,5407,8438,8756,8514,7687,5386,7952,7752,7738,8438,5329,8509,8048,5717,7849,8653,8484,8354,7843,8762,7628,7834,8227,5237,7752,7643,7834,7864,7877,5347,5726,5296,8144,5699,5717,5606,7738,5699,8795,7811,5564,5564,5333,8217,7528,7542,7478,5476,5480,7482,7924,8307,7864,8119,8282,8456,8946,8267,8821,7972,7920,5485,7565,7924,7482,5655,5381,7558,7864,5726,8539,8443,7571,7828,8093,9051,5480,5480,8312,5224,5564,5325,5329,7610,8033,5426,7888,7957,5305,5419,5320,7888,5274,7696,7952,7628,5671,5261,8329,8255,5426,8104,5564,5358,5367,5261,8119,7972,7734,8307,8467,5655,5573,5274,7853,8077,8267,5274,8456,8456,7967,5476,8217,8099,7482,8170,7805,8033,7920,8093,8272,5274,5329,8119,5274,7482,7605,7924,8705,5261,5248,7834,7482,7628,5377,7628,7610,7994,7994,8077,8217,5342,8345,5464,5381,5342,7482,5671,7834,5296,5717,8267,7478,7994,7663,5237,5629,5325,8015,8479,5708,5237,7482,11175,7648,7516,8422,8919,7920,5342,5342,7628,5274,5501,8447,7696,5325,8479,5237,7482,7864,5296,7610,5237,5301,5301,5301,8863,7849,7972,9032,7667,7823,5476,5699,7834,7542,8387,7504,8387,5325,7786,7811,7972,8131,7667,7839,5218,8170,5573,7982,8925,7632,7628,5442,7757,5342,7653,8154,8617,8721,5573,8925,5218,5325,5237,5442,7511,5301,7823,5529,8925,5325,5325,7628,7628,5529,8136,8998,7719,7715,7752,5501,8334,8267,5301,5301,8608,8093,5666,8345,8222,8249,7828,8903,5426,7478,7999,7500,5325,7715,8033,7675,7687,8805,5655,8456,5712,8093,7706,5442,8154,8302,7893,5534,8427,7482,8447,5442,8068,7516,0,7582,7616,7478,8093,8617,8093,5367,8062,7482,5305,8349,8267,7511,8249,8888,7478,7994,8154,7482,5237,5476,7663,7883,8919,5274,7628,5329,7610,5491,5325,8334,7924,7904,7920,7994,0,5237,5325,8349,8249,8249,5666,5301,8154,7663,7893,5491,7610,8093,7663,8527,5301,8222,0,7849,7849,5224,8745,8745,5485,5606,5655,5485,7558,8745,5485,5485,7828,5485,5606,7893,7893,8898,5651,7746,7746,8174,7491,5606,5296,7491,5717,5693,5496,5407,8504,8539,8762,7478,8504,8196,5309,5529,8816,7904,7482,7730,8136,5305,8443,8245,8282,5476,5642,8272,5480,7977,8062,8174,7924,11180,7482,7977,8272,5325,5661,8345,8345,8727,7817,11186,8245,8255,8805,5509,7616,5342,7681,8255,8190,8571,5413,7738,8015,5224,8144,8170,7986,5661,8110,7898,5476,5688,5688,7849,7675,7715,8170,5407,8411,8539,5407,11194,8272,8131,7738,7930,5661,7533,5717,5358,8144,5629,7957,7952,8255,5529,5325,5407,5419,7877,8245,8154,5274,7542,8762,8631,5407,5347,7994,8504,5564,5712,5676,5717,7994,8255,7653,8227,0,8110,8329,5617,7994,5717,7930,8272,8131,8267,0,5358,7994,5296,8762,8631,8762,7994,8504,5564,7653,7994,8267,8272,8484,8484,5274,5661,5274,5325,7482,8925,8267,8670,5333,5352,7946,7616,8267,5352,7482,7482,7521,7982,7491,5693,8745,7533,7521,8598,7653,7500,5476,7500,7786,8022,8005,7706,8560,7628,5509,8282,5471,8539,7883,7533,8312,8093,8604,5485,5666,7849,8255,7864,7864,7994,5381,7795,7914,5476,7914,8370,8217,7858,5255,5666,5564,7977,7853,5296,8005,7977,5333,5606,7558,7616,7667,7982,7653,5485,8422,8422,8751,8277,8422,5209,5209,7805,5693,8277,7834,7653,5407,7990,8402,7592,8196,5476,8159,5377,7864,7864,7834,7643,8795,5218,5622,7834,5274,7528,5476,8467,8940,7828,7828,5419,7692,5666,8239,8647,5476,7800,7706,7648,8052,8255,7786,8329,7542,5296,8427,8613,8062,8888,5274,8751,5329,5347,8077,7768,7491,5693,8745,7653,7521,8598,7500,7500,5509,7786,5471,7706,8282,8022,8560,7628,5329,8093,8312,5485,5381,7977,5606,7653,7616,7592,8370,5476,8751,5296,8422,7653,7616,7616,7990,5377,5218,7864,5622,7834,7864,8077,7800,7828,8940,8052,5666,8427,8613,8751,7768,8527,8473,11198,5564,5367,8427,8473,7730,7904,7658,8577,7795,8190,8670,8170,5358,7487,7994,7924,5642,5448,8509,5514,8010,7511,5237,8239,8647,8647,7511,8473,8473,8473,8239,0,7719,8527,8473,8527,7924,8427,8473,7730,8170,7487,5448,5642,7511,8647,8473,8473,7893,8010,7893,7893,5391,5391,8179,5325,5693,7487,5480,8427,7962,7521,8068,8504,7628,5676,7710,7482,8010,8010,7962,7482,7605,5476,8533,5358,5381,8272,7511,7839,8964,7487,8222,5391,7888,8370,8504,5606,5285,7977,5224,5642,8316,7839,7521,7924,7924,7696,7834,5333,5476,8179,8073,8028,7864,8201,7667,8307,7588,7628,5391,5642,7643,8039,5391,5407,8863,5224,5274,8201,7491,8772,7893,8015,7994,8721,7864,8699,7643,7982,5464,8964,5296,5407,5730,7849,5426,5501,7994,7786,5496,8022,5629,8073,5524,5237,8005,7511,5448,8272,7491,8267,5305,5629,7800,5358,7628,5519,5309,8589,8005,5622,5261,7710,7883,5476,5325,7648,7558,5218,8272,5296,7521,8427,5501,8370,8249,7834,5305,7877,7521,7632,8857,7700,5391,5693,5325,5480,5426,8068,5237,8504,7628,7710,8010,7482,5407,5391,8222,7487,7888,5476,7696,7648,7521,7977,5333,5285,5476,5224,8073,8307,7864,7628,8028,7667,8039,7643,5274,8721,5496,8005,7786,5448,7877,7491,5305,8073,7511,5519,5309,7800,8589,5622,7700,8087,8005,8039,7521,5501,7904,8447,5358,8073,5647,7653,7893,5407,8345,7663,5564,5274,7752,7528,5501,8888,5426,7538,7628,8527,7653,8539,5480,5480,7710,8329,7605,7972,8456,7528,8915,7730,7482,7752,7972,7883,5329,5337,8073,8222,7908,5480,5476,5726,0,5726,7592,8073,7999,8467,5352,7576,8170,7605,8293,8170,7920,8205,7977,8093,5655,7658,5564,7924,5391,5358,5480,5480,7487,7511,7538,7858,8272,7972,8164,8909,7582,8329,7768,7914,7592,7696,8370,8073,7605,7482,7632,11206,7883,5661,7511,8170,8022,8196,8211,7779,7653,5647,8190,8422,7667,7864,7558,7528,7663,5329,8863,7576,5617,7858,8653,8272,8277,8548,7990,7706,7706,7834,7893,5514,7834,5381,5642,7478,7858,8827,7858,7542,7893,5464,5407,8154,7628,5377,7768,5367,8548,8005,8110,7487,7795,5480,8005,5448,7542,7558,7972,7511,8334,8909,5237,8340,8762,7834,8467,7967,5514,5261,5301,7972,8617,5329,5237,7632,8015,5305,5708,8179,8647,8827,5726,5358,7972,7628,7500,5396,8073,7588,7675,7516,7877,5471,7511,5480,8833,8772,5285,8964,7834,7632,8427,5485,5476,7491,5480,8888,7967,7834,5352,5329,8909,7521,5325,8617,8170,5237,7811,5301,8473,7538,7628,5480,8329,7710,5726,8915,8073,5329,8205,5391,7487,5564,8170,7967,7605,5480,8293,7977,5476,7658,7675,7538,7482,5285,5396,7632,8370,7858,8473,5301,7558,7834,7528,8196,7667,7706,7706,7990,8863,8548,7588,8179,7858,7972,8005,5514,7478,5708,7511,7542,5261,8647,7632,8827,7877,7967,5325,8617,7521,7786,7994,7994,7994,7628,8811,5476,8608,7853,5661,8222,5358,7710,5377,8539,7692,8370,8255,8131,7473,5717,8422,8845,7858,5358,7990,9012,7628,5342,7957,8073,7675,8334,8073,7839,8739,8888,5305,8239,7957,5386,8762,8205,5342,5377,8888,8739,5329,5524,5524,8255,8898,8255,8149,5372,8473,8653,8653,5377,7565,5519,8297,7790,7883,8653,8888,8048,7681,5352,5209,8048,8297,5377,8174,7920,7790,5564,7696,8164,5726,7817,5519,7795,5325,5352,9361,8670,8302,5377,5301,8888,8548,5377,5352,8022,5241,7768,8548,8598,5407,7888,7982,7986,8484,7706,5401,5655,8888,5352,5305,8589,7800,7800,9026,7500,8577,7542,7542,8789,7811,7908,8381,8888,8577,8261,8307,8307,5386,8062,5237,8307,7653,8307,8307,8484,8227,7628,7628,5301,5676,5564,7542,7952,8548,7511,7952,8987,7628,7952,5712,5325,7706,5381,8005,7643,7904,8312,5712,7500,7834,7675,7779,7628,8422,7706,7599,7779,7994,5407,7710,8647,5358,5305,5325,7500,5442,7834,8427,7628,8479,8504,5325,11212,7817,5480,7757,5325,7500,7864,7864,8302,8560,8068,5305,5381,7914,8010,8467,5358,5329,7752,7982,5329,8925,7565,5501,8136,5337,11217,11225,7849,5367,5726,7653,7920,8093,5480,8073,5688,5255,5564,5358,5325,7994,8170,7757,8073,5337,8234,7920,8184,5426,7658,8222,5564,7687,8170,7786,11231,8316,11239,7738,5381,5320,5730,7521,7696,8345,7994,7681,7605,7482,8577,7632,8316,5476,7706,5224,7994,5285,8201,7952,5274,5717,5296,11243,11249,8898,11255,7888,7667,5377,7800,7675,8925,8302,8196,7628,8028,5578,8234,8845,7588,7478,5688,8805,5564,5509,5337,5301,8302,8302,5524,8249,11261,11267,11274,11285,5218,8447,5209,7706,8745,7521,8028,8104,5325,7757,7867,7786,7576,7582,8277,7893,8447,5476,8653,5329,8484,8227,5485,8099,8093,7967,5301,8249,8548,7972,8184,11295,11303,11310,5391,7914,7643,5391,5730,5426,7605,7986,8548,5325,8411,8411,7811,7768,8115,7994,7994,7628,8658,8110,5459,5464,5401,7834,5688,5688,5407,5358,7864,7924,5564,8159,5407,5367,5480,7982,11319,8893,11328,7752,5407,8052,7478,7565,5514,7511,7538,5391,5391,7482,11336,8909,7738,5642,5717,8164,7542,7706,7752,8893,11339,5401,5708,5333,5296,8438,5325,7681,5726,5407,5514,7800,5237,5688,8473,5325,5325,7605,5419,5688,5622,5218,8015,8756,5529,5432,5291,5726,7521,8073,5285,8329,7588,5464,9021,5261,5261,8010,5291,7516,8329,7622,5237,11349,11354,5501,8721,5730,7908,9353,5514,8427,8811,7952,8119,5301,8227,11339,11360,11368,8613,5325,7500,8154,11360,5301,8577,5301,7763,5655,7521,7864,5329,8721,5301,5274,7628,8479,5325,5337,8068,5329,7565,7904,7849,8073,5255,8184,5329,5337,7687,5564,8073,8222,5730,7920,7658,7952,5381,8898,7994,7696,8316,8115,5730,7908,5325,5285,5274,8925,7521,8329,8845,5301,5401,5407,5301,5391,7681,8234,8302,5509,7667,5325,5218,8745,8093,7706,7967,7893,8653,8227,7786,8447,8184,7757,5485,7914,5391,5209,5501,5459,5358,8227,5391,7752,7994,8159,7864,5688,5564,5464,7768,5419,8411,5514,5708,7706,7738,7482,5642,7565,5407,5333,8473,5529,5432,7800,8438,5218,7994,5237,5291,5261,7516,9021,8154,8811,5301,8427,8721,5453,5476,5564,5301,8484,8201,7834,5564,7757,5325,8527,11375,8811,5391,8527,8391,8222,8467,7972,7982,8196,5564,5501,7752,5407,5391,7628,8998,11380,5291,5291,7920,7811,5655,8222,7834,8387,5241,7565,8527,7752,7742,8594,7977,8293,8093,7763,5564,5480,7752,5301,8411,7972,5717,8467,5209,5726,7675,7972,7883,8170,5337,7786,7548,7628,7924,8164,8387,8964,7628,11386,7616,8863,7478,7696,7795,7663,7972,7834,7946,5285,5325,8577,7605,8504,5476,8062,7632,8613,8711,5717,8504,5285,5519,7576,7972,7632,11393,11402,9457,8375,7977,5325,7628,7811,5480,8201,7478,5676,7628,8073,8329,8329,5358,5237,7667,8170,5647,5485,5377,7864,7864,8582,7982,7478,7914,8277,11408,11417,5329,5255,5320,5564,8345,7999,5352,8196,7542,7930,7757,5329,5699,5407,8170,5647,8387,8467,7706,5301,7491,8863,8571,8863,8653,8119,7706,5485,5476,5476,5485,5209,8277,7582,7706,8104,8845,8170,5726,11425,11432,5325,5320,0,7710,7622,8110,8345,5688,5377,7982,5377,7864,5381,7790,5564,8104,5647,7834,7849,8467,7858,8267,5712,7982,7616,5471,7715,8170,11445,8777,7565,7786,7616,8467,8190,5534,5391,7849,5573,5629,5367,8893,7511,5325,7786,5407,9032,7653,5209,5209,8447,5642,7834,5325,5301,5606,5568,5377,5377,8447,5647,7538,5285,5524,5606,8033,5301,5622,5578,5708,5642,5476,7742,7710,7972,8239,8164,7957,5358,8617,5314,7628,7478,5291,7482,7768,7487,5285,5476,5396,5358,7616,7588,5464,8010,5285,8239,7834,8898,8484,5274,5274,5647,8349,9021,7628,7616,5329,8641,5274,5529,5476,7920,5320,7632,7706,5476,5325,5578,7628,8427,7491,7924,7920,8381,8154,5651,7616,8249,8539,8354,7628,5666,8222,5329,7849,7610,8617,8354,7616,8721,5726,5301,8375,5453,8484,5325,8467,8391,5391,7742,8387,8777,8222,5655,7786,7582,5329,8387,7675,7924,8093,7972,5726,8467,5529,5480,7487,7972,7696,7795,5519,7946,7576,5717,8375,8062,7478,8073,5301,5676,7982,7864,7628,5274,5377,7478,5699,7622,8345,8653,7930,5352,7542,8104,8845,8467,7588,7982,7849,7864,7786,5688,5209,5712,7715,8447,5642,5534,7511,5325,8447,5407,7849,5476,7616,5578,8239,8239,5285,8484,7628,5329,8190,8427,7616,8154,8249,8721,8617,5329,5309,8093,5407,5274,8451,5407,5407,7834,8451,5329,5337,8140,5325,8473,8140,8473,7605,7667,7605,5407,5651,5651,7478,7511,8033,7667,7516,8447,7706,5329,8484,7667,5485,5301,7521,7834,7977,5651,5301,5617,8015,7516,5485,5325,8093,7834,8140,8349,8349,5717,8783,5564,7746,7746,5564,8174,5726,5726,8711,5564,5274,8277,5726,7746,0,8527,5564,5726,7746,7538,5305,5305,5296,7538,7967,5362,5501,5464,5464,5309,8687,5606,7853,7946,5237,8582,7946,5320,5301,8184,7710,9372,9372,5476,7542,7883,5237,8641,5305,5305,7542,5491,5573,5337,7828,5476,5367,7834,5726,5712,7834,5485,7628,5301,8903,8762,8179,7482,8345,7834,8772,8345,5655,5491,8179,5476,5712,7883,7834,8762,5329,7972,5501,5564,5564,8438,8438,8467,8140,5726,8783,8631,7605,7972,8211,5708,5432,5480,5358,8467,8783,5480,5693,5651,8716,5693,5209,7786,7786,7582,5501,8272,8467,7920,8227,5524,7706,8467,5629,8909,5320,5320,5501,7893,7752,7904,7757,5480,8316,5726,8119,5391,5337,5391,8805,7478,8184,5485,7643,8170,7834,5647,5377,5237,5274,7834,5666,5358,5642,5688,7653,7478,7478,5730,5237,5717,7687,5519,5534,7687,8789,7700,7706,8533,5325,5209,5325,5325,7706,5325,7710,8033,8033,7849,8387,8800,5661,8174,8451,5391,5209,7710,8184,8170,7681,8093,8093,5573,7768,5661,8800,8077,8484,5642,8287,8653,7628,5573,5476,8447,8451,7967,5726,5362,5274,7742,7864,8494,5476,8287,7967,7828,5573,5309,8387,7710,8033,7849,8800,8170,8093,8174,7681,5209,8800,7628,8287,5726,8494,7610,8334,7817,8334,7834,7610,7610,7817,8795,7738,8093,7738,7610,7817,8795,7952,5688,5432,7952,8354,7805,7849,5291,5661,7628,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4269,11454,0,0,11459,0,0,0,11464,0,0,0,0,0,0,0,11469,11474,0,11479,0,11484,0,11490,0,0,0,0,11495,11500,0,0,0,0,0,0,11506,0,0,0,0,0,0,0,0,0,0,0,11512,0,0,0,0,0,0,0,11519,0,0,0,0,0,0,0,0,0,0,0,11525,5599,40,11528,11531,11535,335,11539,4899,11543,24,11546,11549,11553,11556,380,11560,52,11563,11566,32,3103,11569,11573,2795,11577,11581,11586,11591,11595,11600,11604,800,11608,11612,11617,11621,11626,11630,2809,11634,11638,2806,11642,11646,11650,2792,9676,11654,11659,11663,11667,11671,11674,11678,11683,11687,11691,3457,11695,11699,11704,11708,11713,11717,803,9686,11721,11726,11730,11735,11739,3471,11743,11747,11751,3454,11755,9690,11759,11763,11767,11771,11774,11778,11783,11787,11792,11797,11801,11806,11812,11818,11823,11829,11834,1073,11839,11844,11850,11855,11861,11866,11871,11875,11880,11885,11889,11894,11899,11904,11908,11913,11919,11924,11929,11934,11938,11943,11948,11953,11957,11962,11968,11973,11979,11984,11989,9710,11993,11998,12003,12007,12012,12017,12022,12026,12031,12037,12042,9721,12047,12051,12056,12062,12067,12072,12077,12081,12086,12092,12097,12103,12108,12113,12117,12122,12128,12133,12139,12144,12149,12153,12158,12163,12168,12172,12177,12183,9740,12188,12192,9745,12197,12202,12206,2599,12210,12214,12219,12223,12228,12232,845,12236,12240,12245,12250,12254,12259,12263,2613,12267,12271,2610,12275,12279,2596,12283,12287,12292,12296,12300,12304,12307,12311,12315,1733,12319,12323,12327,833,12331,12335,2759,12339,12343,12347,2738,12351,12355,12360,12364,12368,12372,12375,12379,12383,2819,12387,12391,12396,12401,12405,12410,12414,985,12418,12422,12426,2833,12430,12434,12438,12442,12446,2816,12450,12454,12459,12463,12467,10579,12471,12475,12480,12484,12488,3120,12492,12496,12501,12505,12510,12514,816,12518,12522,12527,618,12531,3194,12535,12539,432,12543,12547,12551,3183,12555,12559,12564,12568,12572,324,12576,12580,5230,12585,12590,12594,806,12598,12602,12607,12612,12616,12621,12625,2854,4993,12629,2851,12633,12637,12641,2840,12645,12649,12654,12658,12663,2496,12668,12673,12679,12684,12690,12695,942,12700,12705,12711,12716,12722,12727,2514,12732,12737,2510,12742,12747,12752,3201,12757,12762,12768,12773,12778,10015,12783,12788,12794,12799,12804,10060,12809,12814,12819,10264,12824,12829,10330,12834,12839,12844,10207,12849,12854,12860,12865,12870,12875,12879,12884,12890,12896,12901,12907,12912,3064,12917,12922,12928,12933,12938,12943,12948,12953,12957,12962,12967,12971,2950,12975,12979,12984,12988,12993,842,12997,13001,13006,13010,13015,13019,1400,13023,13027,2957,13031,13035,13039,2947,13043,13047,13052,13056,13061,13066,13070,13075,13081,13086,13092,13097,4878,13102,13107,13113,13118,13124,13129,13133,13138,13143,13147,13152,13157,13162,13166,13171,13177,13182,13187,13192,13196,13201,13207,13212,13216,2547,13220,13224,13229,13234,13238,13243,13247,839,13251,13255,13260,13265,13269,13274,13278,1426,13282,13286,2554,13290,13294,13298,2544,13302,13306,13311,13315,13319,4493,13323,13327,13332,13336,13340,3228,13344,13348,13353,13358,13362,13367,13371,915,13375,13379,13384,13389,13393,13398,13402,3242,13406,13410,13414,3239,13418,13422,13426,3225,13430,13434,13439,13443,13447,2998,13451,13455,13460,13464,13469,13473,836,13477,13481,13486,13490,13495,13499,1311,13503,13507,13511,3009,13515,13519,13523,2995,13527,13531,13536,13540,13545,3271,13550,13556,13561,13567,13572,1060,13577,13582,13588,13594,13599,13605,13610,3289,13615,13620,13625,3285,13630,13635,13640,3267,13645,13650,13656,13661,13667,13672,13677,13682,13686,13691,13697,13702,13708,13713,13718,13722,13727,13732,13736,13741,13746,13751,13755,13760,13766,13771,13776,13781,13785,13790,13796,13802,13807,13813,13818,13823,13827,13832,13838,13844,13849,13855,13860,13865,13869,13874,13879,13883,13888,13894,13899,13905,13910,922,13915,13920,13926,13932,13937,13942,4136,13947,13952,13957,13961,13966,13970,1623,13975,13979,429,13983,13987,13992,13997,14001,14006,14010,2537,14014,14018,1620,14022,14026,14030,852,14034,14038,14043,14047,14052,3114,14056,14060,482,14064,14068,14072,3126,14076,14080,14085,14089,14094,14098,1044,14102,14106,14111,14115,14120,14124,3137,14128,14132,464,14136,14140,14144,3123,14148,14152,14157,14161,14165,14169,14172,14176,14181,14185,14189,2864,14193,14197,14202,14207,14211,14216,14220,926,14224,14228,14233,14237,14242,14246,2878,14250,14254,2875,14258,14262,14266,2861,14270,14274,14279,14283,14287,5159,14291,14295,14300,14304,14309,6491,14314,14319,14325,14331,14336,14342,14347,6483,14352,14357,6509,14362,14367,6505,14372,14377,6487,14382,14387,14393,14398,14403,14408,14412,14417,9839,14423,14428,14433,14437,14442,14448,14453,14459,14464,14469,14473,14478,14484,14489,14494,14499,14504,14508,14513,14517,14522,14528,14533,14538,14543,14547,14552,14558,14563,14567,2678,14571,14575,14580,14584,14589,14593,826,14597,14601,14606,14610,14615,14619,1325,14623,14627,2689,14631,14635,14639,2675,14643,14647,14652,14656,14660,14664,14667,14671,14676,14680,14685,6435,14690,14695,14701,14706,14712,14717,992,14722,14727,14732,4430,14737,14742,6449,14747,14752,14757,6431,14762,9853,14767,14772,14776,14781,14787,14792,14797,1464,14802,14807,14813,14818,14824,14829,3166,14834,14839,14844,3162,14849,14854,9858,3144,14859,14864,14870,14875,14880,14885,14889,14894,14900,14905,14910,812,14915,14920,14926,14932,14937,14943,14948,3342,14953,14958,14963,3338,14968,14973,3320,14978,14983,14989,14994,14999,15004,15008,15013,15019,15024,822,15029,15035,15040,15045,10693,15050,15055,15060,15065,15069,15074,15079,15084,15088,15093,15099,15104,15109,15114,15118,15123,15129,15134,15139,4604,15144,15149,15154,15158,15163,15168,15173,15177,15182,15187,15192,15196,15201,15207,15212,15217,15222,15226,15231,15237,15242,15247,988,15252,15257,15263,15268,15274,15279,327,15284,15289,15294,2305,15299,15304,15309,2696,15314,15319,15325,15330,15335,15340,15344,15349,15355,15360,15364,819,15368,15372,15377,15381,15386,15390,2668,15394,15398,2665,15402,15406,15410,2651,15414,15418,15423,15427,15431,4486,15435,15439,15444,15448,15452,3208,15456,15460,15465,15470,15474,15479,15484,15489,15493,15498,15502,3222,15506,15510,15514,3205,15518,15522,15527,9873,15531,5156,15535,15539,15544,15548,15552,2712,15556,15560,15565,9877,15570,15575,15580,3499,15585,15590,15594,2726,15598,15602,15606,2709,15610,15614,15619,15623,15627,15631,15634,15638,15643,15647,15652,4282,15657,15662,15668,15674,15679,15685,15691,15696,15702,15707,4269,15712,15717,15722,4265,15727,15732,15738,15743,15748,15753,15757,15762,15767,10019,15772,15777,15783,15789,15794,15800,15806,15811,15816,10268,15821,15826,10211,9881,15831,15837,15842,15847,15852,15856,15861,15867,15872,15877,2968,15882,15887,15893,15899,15904,15910,9886,15916,15922,15927,2986,15932,15937,15942,2964,15947,15952,15956,2891,15960,15964,15969,9900,15974,15979,15984,15988,15992,2905,15996,16000,16004,16008,16011,16015,16020,16024,16028,347,16032,16036,16041,16046,16050,16055,16060,16065,16069,16074,16078,1318,16082,16086,16090,670,16094,16098,16103,16107,16111,1124,16115,16119,16124,0,0,0,15590,2547,13443,15882,14291,6435,13615,13418,2599,13771,13332,11894,12267,1318,11747,13844,12590,915,0,0,12768,11659,13594,15932,2840,11563,15717,14120,11763,12149,16024,12459,15340,12438,1044,3222,0,15753,13398,15674,3114,3183,15325,13234,5159,14237,14193,13869,15242,0,15284,3338,14319,0,3009,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2995,16128,0,0,16132,0,0,0,16136,0,0,0,0,0,0,0,16140,16144,0,16148,0,16152,0,0,0,0,0,0,16157,0,0,0,16162,0,0,0,16168,0,0,0,0,0,0,0,0,0,0,0,0,16174,0,0,0,0,0,0,3030,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16181,0,0,0,0,0,0,3016,16187,0,0,16192,0,0,0,16197,0,0,0,0,0,0,0,16202,16207,0,16212,0,16217,0,0,0,0,0,0,6584,0,0,0,16223,0,0,0,16228,0,0,0,0,0,0,0,16233,0,0,0,0,0,0,0,0,0,0,0,16238,16242,0,0,16247,0,0,0,16252,0,0,0,0,0,0,0,16257,16262,0,0,0,16267,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2998,16273,0,0,16277,0,0,0,16281,0,0,0,0,0,0,0,16285,16289,0,16293,0,16297,0,0,0,0,0,0,806,16302,0,0,1655,0,0,0,16306,16310,0,0,0,0,0,0,16315,16319,0,16323,16327,16332,0,0,0,0,0,0,16337,16341,0,0,16346,0,0,0,16351,0,0,0,0,0,0,0,16356,16361,0,16366,16371,16377,0,0,0,0,0,0,4073,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16389,16393,0,0,16398,0,0,0,16403,0,16408,0,0,0,0,0,16414,16419,0,16424,16429,16435,0,0,0,0,0,0,2851,16441,0,0,16445,0,0,0,16449,0,0,0,0,0,0,0,16453,16457,0,16461,0,16465,0,0,0,0,0,0,16470,0,0,0,16475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16481,0,0,0,0,0,0,0,4061,0,0,0,16488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2854,16493,0,0,16497,0,0,0,16501,0,0,0,0,0,0,0,16505,16509,0,16513,0,16517,0,0,0,0,4993,0,2857,0,0,0,16522,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16527,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16532,0,0,0,16536,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16541,0,16546,0,0,0,0,0,0,4069,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2840,16552,0,0,16556,0,0,0,16560,0,0,0,0,0,0,0,10627,16564,0,16568,0,16572,0,0,0,0,0,0,16577,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16582,0,0,0,0,0,0,0,3613,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3617,16589,0,0,16594,0,0,0,16599,0,0,0,0,0,0,0,16604,16609,0,0,0,16614,0,0,0,0,0,0,16620,0,0,0,16624,0,0,0,16629,0,0,0,0,0,0,0,16634,0,0,0,0,16639,0,0,0,0,0,0,16645,16649,0,0,16654,0,0,16659,16664,0,16669,0,0,0,0,0,16675,16680,0,16685,0,0,0,0,0,0,0,0,4065,0,0,0,16690,0,0,0,16695,0,0,0,0,0,0,0,16700,16705,0,0,0,0,0,0,0,0,0,0,324,16710,0,0,16714,0,0,0,16718,0,0,0,0,0,0,0,16722,16726,0,16730,0,16734,0,0,0,0,0,0,803,16739,16743,0,16748,0,0,0,16752,0,16756,0,0,0,0,0,16761,16765,0,16769,16773,16778,0,0,0,11713,0,0,16783,16787,0,0,16792,0,0,0,16797,0,0,0,0,0,0,0,16802,16807,0,16812,16817,16823,0,0,0,0,0,0,16829,16833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16838,16842,0,0,16847,0,0,0,16852,0,0,0,0,0,0,0,16857,16862,0,16867,16872,16878,0,0,0,0,0,0,3468,16884,0,0,16888,0,0,0,16892,0,0,0,0,0,0,0,16896,16900,0,16904,0,16908,0,0,0,0,0,0,16913,0,0,0,16918,0,0,0,16924,0,0,0,0,0,0,0,16930,16936,0,0,16942,16949,0,0,0,0,0,0,16956,0,0,0,0,0,0,0,16960,0,0,0,0,0,0,0,0,16965,0,16970,0,0,0,0,0,0,0,0,3471,16975,0,0,16979,0,0,0,16983,0,0,0,0,0,0,0,16987,16991,0,16995,0,16999,0,0,0,0,0,0,2779,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17010,0,0,0,17014,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17019,0,0,0,17023,0,0,0,17028,0,0,0,0,0,0,0,0,17033,0,17038,0,0,0,0,0,0,0,0,3454,17043,0,0,17047,0,0,17051,17055,0,17059,0,0,0,0,0,17064,17068,0,17072,0,17076,0,0,0,0,0,0,17081,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17086,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3577,0,0,0,17093,0,0,0,17098,0,0,0,0,0,0,0,17103,0,0,17108,0,0,0,0,0,0,0,0,17113,0,0,0,17117,0,0,0,17122,0,0,0,0,0,0,0,17127,0,0,17132,0,17137,0,0,0,0,0,0,17143,0,0,0,17147,0,0,0,17152,0,0,0,0,0,0,0,17157,17162,0,17167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3457,17172,0,0,17176,0,0,0,17180,0,0,0,0,0,0,0,17184,17188,0,17192,0,17196,0,0,0,0,0,0,429,17201,0,0,10033,0,0,0,17205,0,0,0,0,17209,0,0,17214,17218,0,17222,0,17226,0,0,0,0,0,0,1616,17231,0,0,17236,0,0,0,17241,0,0,0,0,0,0,0,17246,17251,0,17256,17261,17267,0,0,0,0,0,0,17273,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17277,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17283,17287,0,0,17292,0,0,0,17297,0,17302,0,0,0,0,0,17308,17313,0,17318,0,17323,0,0,0,0,0,0,1620,17329,0,0,10282,0,0,0,17333,0,0,0,0,0,0,0,17337,17341,0,17345,0,10541,0,0,0,0,0,0,17349,17354,0,0,17360,0,0,0,17366,0,0,0,0,0,0,0,17372,17378,0,17384,17390,17397,0,0,0,0,0,0,17404,0,0,0,17408,0,0,0,17413,0,0,0,0,0,0,0,0,17418,0,0,0,0,0,0,0,0,0,0,2537,17423,0,0,9220,0,0,0,17427,0,0,0,0,17431,0,0,17436,17440,0,17444,0,17448,0,0,0,14006,0,0,4211,17453,0,0,17458,0,0,0,17463,0,0,0,0,0,0,0,0,0,0,17468,0,17473,0,0,0,0,0,0,17479,17484,0,0,17490,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17496,0,17502,0,0,0,0,0,0,1631,17509,0,0,17514,0,0,0,17519,0,0,0,0,0,0,0,0,17524,0,17529,0,17534,0,0,0,0,0,0,17540,0,0,0,17544,0,0,0,17549,0,0,0,0,0,0,0,0,17554,0,17559,0,0,0,0,0,0,0,0,2523,17564,0,0,10169,0,0,0,17568,0,0,0,0,17572,0,0,17577,0,0,17581,0,17585,0,0,0,0,0,0,17590,0,0,0,17595,0,0,0,17601,0,0,0,0,0,0,0,17607,0,0,0,0,17613,0,0,0,0,0,0,4198,17620,0,0,915,17625,17629,17634,1639,17639,17644,17649,17653,17657,17662,17667,17672,17677,17682,17687,17692,17696,17700,17705,17709,17714,17719,17723,17727,13367,13375,17731,17735,17739,17744,17750,17756,17761,17767,17773,17778,17783,17789,17795,17801,17807,17813,17819,17825,17830,17835,17841,17846,17852,17858,17863,17868,17873,17878,17883,6640,17888,17893,17899,17905,17910,17916,17922,17927,17932,17938,17944,17950,17956,17962,17968,17974,17979,17984,17990,17995,18001,18007,18012,18017,18022,18027,18032,18037,18042,18048,18055,18062,18068,18075,18082,18088,18094,18101,18108,18115,18122,18129,18136,18143,18149,18155,18162,18168,18175,18182,18188,18194,18200,18206,18212,1140,18218,18223,18229,18235,18240,18246,18252,18257,18262,18268,18274,18280,18286,18292,18298,18304,18309,18314,18320,18325,18331,18337,18342,18347,18352,18357,18362,3239,18367,18371,18376,10345,18381,18386,18391,18395,18399,18404,18409,18414,18419,18424,18429,18434,18438,18442,18447,18451,18456,18461,18465,18469,13410,13418,18473,18477,18482,18488,18495,18502,18508,18515,18522,18528,18534,18541,18548,18555,18562,18569,18576,18583,18589,18595,18602,18608,18615,18622,18628,18634,18640,18646,18652,6662,18658,18663,18669,18675,18680,18686,18692,18697,18702,18708,18714,18720,18726,18732,18738,18744,18749,18754,18760,18765,18771,18777,18782,18787,18792,18797,18802,3242,18807,18811,18816,18821,18825,18830,18835,18839,18843,18848,18853,18858,18863,18868,18873,18878,18882,18886,18891,18895,18900,18905,18909,18913,13398,13406,18917,3245,18921,18926,18932,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,24,54,24,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18938,18943,18949,18955,18960,18965,18971,18977,18983,18989,18995,19001,19007,19012,19017,19023,19028,19034,19040,19045,19050,19055,19060,19065,19070,19075,19081,19088,19095,19101,19108,19115,19121,19127,19134,19141,19148,19155,19162,19169,19176,19182,19188,19195,19201,19208,19215,19221,19227,19233,19239,19245,19251,19255,19260,19266,19272,19277,19283,19289,19294,19299,19305,19311,19317,19323,19329,19335,19341,19346,19351,19357,19362,19368,19374,19379,19384,19389,19394,19399,6666,19404,19409,19415,10825,19421,19427,19433,19438,19443,19449,19455,19461,19467,19473,19479,19485,19490,19495,19501,19506,19512,19518,19523,19528,19533,19538,19543,3225,19548,19552,19557,19562,19566,19571,19576,19580,19584,19589,19594,19599,19604,19609,19614,19619,19623,19627,19632,19636,19641,19646,19650,19654,13422,13430,19658,19662,19667,19673,19680,19687,19693,19700,19707,19713,19719,19726,19733,19740,19747,19754,19761,19768,19774,19780,19787,19793,19800,19807,19813,19819,19825,19831,19837,3263,19843,19848,19854,19860,19865,19871,19877,19882,19887,19893,19899,19905,19911,19917,19923,19929,19934,19939,19945,19950,19956,19962,19967,19972,19977,19982,19987,3249,19992,19997,20003,20009,20014,20020,20026,20031,20036,20042,20048,20054,20060,20066,20072,20078,20083,20088,20094,20099,20105,20111,20116,20121,20126,20131,20136,6644,20141,20146,20152,20158,20163,20169,20175,20180,20185,20191,20197,20203,20209,20215,20221,20227,20232,20237,20243,20248,20254,20260,20265,20270,20275,20280,20285,20290,20294,20299,20305,20311,20316,20322,20328,20333,20338,20344,20350,20356,20362,20368,20374,20380,20385,20390,20396,7478,8154,20401,20406,20411,20416,20421,20426,6648,20431,20436,20442,20448,20453,20459,20465,20470,20475,20481,20487,20493,20499,20505,20511,20517,20522,20527,20533,20538,20544,20550,20555,20560,20565,20570,20575,3228,20580,20584,20589,20594,20598,20603,20608,20612,20616,20621,20626,20631,20636,20641,20646,20651,20655,20659,20664,20668,20673,20678,20682,20686,13336,13344,20690,1060,20694,20699,20705,20711,20716,20722,20728,20733,20738,20744,20750,20756,20762,20768,20774,20780,20785,20790,20796,20801,20807,20813,20818,20823,13567,13577,20828,20833,20838,20844,20851,20858,20864,20871,20878,20884,20890,20897,20904,20911,20918,20925,20932,20939,20945,20951,20958,20964,20971,20978,20984,20990,20996,21002,21008,21014,21019,21025,21032,21039,21045,21052,21059,21065,21071,21078,21085,21092,21099,21106,21113,21120,21126,21132,21139,21145,21152,21159,21165,21171,21177,21183,21189,21195,21201,21208,21216,21224,21231,21239,21247,21254,21261,21269,21277,21285,21293,21301,21309,21317,21324,21331,21339,21346,21354,21362,21369,21376,21383,21390,21397,21404,21409,21415,21422,21429,21435,21442,21449,21455,21461,21468,21475,21482,21489,21496,21503,21510,21516,21522,21529,21535,21542,21549,21555,21561,21567,21573,21579,3285,21585,21590,21596,21602,21607,21613,21619,21624,21629,21635,21641,21647,21653,21659,21665,21671,21676,21681,21687,21692,21698,21704,21709,21714,13620,13630,21719,21724,21730,21737,21745,21753,21760,21768,21776,21783,21790,21798,21806,21814,21822,21830,21838,21846,21853,21860,21868,21875,21883,21891,21898,21905,21912,21919,21926,21933,21938,21944,21951,21958,21964,21971,21978,21984,21990,21997,22004,22011,22018,22025,22032,22039,22045,22051,22058,22064,22071,22078,22084,22090,22096,22102,22108,3289,22114,22119,22125,22131,22136,22142,22148,22153,22158,22164,22170,22176,22182,22188,22194,22200,22205,22210,22216,22221,22227,22233,22238,22243,13605,13615,22248,6410,22253,22259,22266,22273,22279,22286,22293,22299,22305,22312,22319,22326,22333,22340,22347,22354,22360,22366,22373,22379,22386,22393,22399,22405,22411,22417,22423,22429,22435,22442,22450,22458,22465,22473,22481,22488,22495,22503,22511,22519,22527,22535,22543,22551,22558,22565,22573,22580,22588,22596,22603,22610,22617,22624,22631,22638,22643,22649,22656,22663,22669,22676,22683,22689,22695,22702,22709,22716,22723,22730,22737,22744,22750,22756,22763,22769,22776,22783,22789,22795,22801,22807,22813,22819,22824,22830,22837,22844,22850,22857,22864,22870,22876,22883,22890,22897,22904,22911,22918,22925,22931,22937,22944,22950,22957,22964,22970,22976,22982,22988,22994,3267,23000,23005,23011,23017,23022,23028,23034,23039,23044,23050,23056,23062,23068,23074,23080,23086,23091,23096,23102,23107,23113,23119,23124,23129,13635,13645,23134,23139,23145,23152,23160,23168,23175,23183,23191,23198,23205,23213,23221,23229,23237,23245,23253,23261,23268,23275,23283,23290,23298,23306,23313,23320,23327,23334,23341,6426,23348,23354,23361,23368,23374,23381,23388,23394,23400,23407,23414,23421,23428,23435,23442,23449,23455,23461,23468,23474,23481,23488,23494,23500,23506,23512,23518,6415,23524,23530,23537,23544,23550,23557,23564,23570,23576,23583,23590,23597,23604,23611,23618,23625,23631,23637,23644,23650,23657,23664,23670,23676,23682,23688,23694,23700,23705,23711,23718,23725,23731,23738,23745,23751,23757,23764,23771,23778,23785,23792,23799,23806,23812,23818,23825,23831,23838,23845,23851,23857,23863,23869,23875,23881,23886,23892,23899,23906,23912,23919,23926,23932,23938,23945,23952,23959,23966,23973,23980,23987,23993,23999,24006,24012,24019,24026,24032,24038,24044,24050,24056,24062,24067,24073,24080,24087,24093,24100,24107,24113,24119,24126,24133,24140,24147,24154,24161,24168,24174,24180,24187,24193,24200,24207,24213,24219,24225,24231,24237,3271,24243,24248,24254,24260,24265,24271,24277,24282,24287,24293,24299,24305,24311,24317,24323,24329,24334,24339,24345,24350,24356,24362,24367,24372,13540,24377,24382,842,24387,24391,24396,24401,24405,24410,24415,24419,24423,24428,24433,24438,24443,24448,24453,24458,24462,24466,24471,24475,24480,24485,24489,24493,24497,12997,3488,24501,24505,24510,24516,24522,24527,24533,24539,24544,24549,24555,24561,24567,24573,24579,24585,24591,24596,24601,24607,24612,24618,24624,24629,24634,24639,24644,24649,848,24654,24659,24665,10893,24671,24677,24683,24688,24693,24699,24705,24711,24717,24723,24729,24735,24740,24745,24751,24756,24762,24768,24773,24778,24783,24788,24793,24798,24803,24809,24816,24823,24829,24836,24843,24849,24855,24862,24869,24876,24883,24890,24897,24904,24910,24916,24923,24929,24936,24943,24949,24955,24961,24967,24973,24979,24983,24988,24994,25000,25005,25011,25017,25022,25027,25033,25039,25045,25051,25057,25063,25069,25074,25079,25085,25090,25096,25102,25107,25112,25117,25122,25127,2957,25132,25136,25141,25146,25150,25155,25160,25164,25168,25173,25178,25183,25188,25193,25198,25203,25207,25211,25216,25220,25225,25230,25234,25238,25242,13031,25246,25250,25255,25261,25268,25275,25281,25288,25295,25301,25307,25314,25321,25328,25335,25342,25349,25356,25362,25368,25375,25381,25388,25395,25401,25407,25413,25419,25425,2982,25431,25436,25442,25448,25453,25459,25465,25470,25475,25481,25487,25493,25499,25505,25511,25517,25522,25527,25533,25538,25544,25550,25555,25560,25565,25570,25575,1400,25580,25584,25589,25594,25598,25603,25608,25612,25616,25621,25626,25631,25636,25641,25646,25651,25655,25659,25664,25668,25673,25678,25682,25686,13015,13023,25690,2960,25694,25699,25705,25711,25716,25722,25728,25733,25738,25744,25750,25756,25762,25768,25774,25780,25785,25790,25796,25801,25807,25813,25818,25823,25828,25833,25838,25843,25848,25854,25861,25868,25874,25881,25888,25894,25900,25907,25914,25921,25928,25935,25942,25949,25955,25961,25968,25974,25981,25988,25994,26000,26006,26012,26018,26024,26028,26033,26039,26045,26050,26056,26062,26067,26072,26078,26084,26090,26096,26102,26108,26114,26119,26124,26130,26135,26141,26147,26152,26157,26162,26167,26172,2986,26177,26182,26188,26194,26199,26205,26211,26216,26221,26227,26233,26239,26245,26251,26257,26263,26268,26273,26279,26284,26290,26296,26301,26306,15922,15932,26311,2947,26316,26320,26325,26330,26334,26339,26344,26348,26352,26357,26362,26367,26372,26377,26382,10623,26387,26391,26396,26400,26405,26410,26414,26418,13035,13043,26422,26426,26431,26437,26444,26451,26457,26464,26471,26477,26483,26490,26497,26504,26511,26518,26525,26532,26538,26544,26551,26557,26564,26571,26577,26583,26589,26595,26601,3791,26607,26612,26618,26624,26629,26635,26641,26646,26651,26657,26663,26669,26675,26681,26687,26693,26698,26703,26709,26714,26720,26726,26731,26736,26741,26746,26751,26756,26760,26765,26771,26777,26782,26788,26794,26799,26804,26810,26816,26822,26828,26834,26840,26846,26851,26856,26862,26867,26873,26879,26884,26889,26894,26899,26904,2964,26909,26914,26920,26926,26931,26937,26943,26948,26953,26959,26965,26971,26977,26983,26989,26995,27000,27005,27011,27016,27022,27028,27033,27038,15937,15947,27043,27048,27052,27057,27063,27069,27074,27080,27086,27091,27096,27102,27108,27114,27120,27126,27132,27138,27143,27148,27154,27159,27165,27171,27176,27181,27186,27191,27196,2968,27201,27206,27212,27218,27223,27229,27235,27240,27245,27251,27257,27263,27269,27275,27281,27287,27292,27297,27303,27308,27314,27320,27325,27330,15872,15882,27335,2950,27340,27344,27349,27354,27358,27363,27368,27372,27376,27381,27386,27391,27396,27401,27406,27411,27415,27419,27424,27428,27433,27438,27442,27446,12967,12975,27450,816,27454,27458,27463,27468,27472,27477,27482,681,27486,27491,27496,27501,27506,27511,27516,27521,10919,27525,27530,27534,27539,27544,27548,27552,12510,12518,27556,27560,27564,27569,27575,27581,27586,27592,27598,27603,27608,27614,27620,27626,27632,27638,27644,27650,27655,27660,27666,27671,27677,27683,27688,27693,27698,27703,27708,27713,27717,27722,27728,27734,27739,27745,27751,27756,27761,27767,27773,27779,27785,27791,27797,27803,27808,27813,27819,27824,27830,27836,27841,27846,27851,27856,27861,27866,27871,27877,27884,27891,27897,27904,27911,27917,27923,27930,27937,27944,27951,27958,27965,27972,27978,27984,27991,27997,28004,28011,28017,28023,28029,28035,28041,28047,28051,28056,28062,28068,28073,28079,28085,28090,28095,28101,28107,28113,28119,28125,28131,28137,28142,28147,28153,28158,28164,28170,28175,28180,28185,28190,28195,432,82,28200,28205,28210,28214,28219,28224,28228,28232,28237,28242,28247,28252,28257,28262,28267,28271,28275,28280,28284,28289,28294,28298,28302,28306,12543,28310,28314,28319,28325,28332,28339,28345,28352,28359,28365,28371,28378,28385,28392,28399,28406,28413,28420,28426,28432,28439,28445,28452,28459,28465,28471,28477,28483,28489,28495,28499,28504,28510,28516,28521,28527,28533,28538,28543,28549,28555,28561,28567,28573,28579,28585,28590,28595,28601,28606,28612,28618,28623,28628,28633,28638,28643,3194,28648,28652,28657,1643,28662,28667,28672,28676,28680,28685,28690,28695,28700,28705,28710,28715,28719,28723,28728,28732,28737,28742,28746,28750,618,12535,28754,3197,28758,28763,28769,28775,28780,28786,28792,28797,28802,28808,28814,28820,28826,28832,28838,28844,28849,28854,28860,28865,28871,28877,28882,28887,28892,28897,28902,28907,28912,28918,28925}
diff --git a/nominatim/CMakeLists.txt b/nominatim/CMakeLists.txt
deleted file mode 100644 (file)
index b391a34..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-add_executable(nominatim export.c geometry.cpp import.c index.c input.c nominatim.c postgresql.c sprompt.c)
-
-CHECK_SYMBOL_EXISTS(bswap_32 "byteswap.h" HAVE_BYTESWAP)
-CHECK_SYMBOL_EXISTS(bswap32 "sys/endian.h" HAVE_SYS_ENDIAN)
-
-target_compile_definitions(nominatim
-    PRIVATE HAVE_BYTESWAP=$<BOOL:${HAVE_BYTESWAP}>
-    PRIVATE HAVE_SYS_ENDIAN=$<BOOL:${HAVE_SYS_ENDIAN}>
-)
-
-target_link_libraries(nominatim ${LIBXML2_LIBRARIES} ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES} ${PostgreSQL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
-
diff --git a/nominatim/README.txt b/nominatim/README.txt
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/nominatim/export.c b/nominatim/export.c
deleted file mode 100644 (file)
index b9628e1..0000000
+++ /dev/null
@@ -1,558 +0,0 @@
-/*
-*/
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <time.h>
-#include <stdint.h>
-#include <pthread.h>
-
-#include <libpq-fe.h>
-
-#include "nominatim.h"
-#include "export.h"
-#include "postgresql.h"
-
-extern int verbose;
-
-int mode = 0;
-
-void nominatim_export(int rank_min, int rank_max, const char *conninfo, const char *structuredoutputfile)
-{
-    xmlTextWriterPtr writer;
-
-    int rankTotalDone;
-
-    PGconn *conn;
-    PGresult * res;
-    PGresult * resSectors;
-    PGresult * resPlaces;
-
-    int rank;
-    int i;
-    int iSector;
-    int tuples;
-
-    const char *paramValues[2];
-    int         paramLengths[2];
-    int         paramFormats[2];
-    uint32_t    paramRank;
-    uint32_t    paramSector;
-    uint32_t    sector;
-
-    Oid pg_prepare_params[2];
-
-    conn = PQconnectdb(conninfo);
-    if (PQstatus(conn) != CONNECTION_OK)
-    {
-        fprintf(stderr, "Connection to database failed: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    pg_prepare_params[0] = PG_OID_INT4;
-    res = PQprepare(conn, "index_sectors",
-                    "select geometry_sector,count(*) from placex where rank_search = $1 and indexed_status = 0 group by geometry_sector order by geometry_sector",
-                    1, pg_prepare_params);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK) exit(EXIT_FAILURE);
-    PQclear(res);
-
-    pg_prepare_params[0] = PG_OID_INT4;
-    pg_prepare_params[1] = PG_OID_INT4;
-    res = PQprepare(conn, "index_sector_places",
-                    "select place_id from placex where rank_search = $1 and geometry_sector = $2",
-                    2, pg_prepare_params);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK) exit(EXIT_FAILURE);
-    PQclear(res);
-
-    nominatim_exportCreatePreparedQueries(conn);
-
-    // Create the output file
-    writer = nominatim_exportXMLStart(structuredoutputfile);
-
-    for (rank = rank_min; rank <= rank_max; rank++)
-    {
-        printf("Starting rank %d\n", rank);
-
-        paramRank = PGint32(rank);
-        paramValues[0] = (char *)&paramRank;
-        paramLengths[0] = sizeof(paramRank);
-        paramFormats[0] = 1;
-        resSectors = PQexecPrepared(conn, "index_sectors", 1, paramValues, paramLengths, paramFormats, 1);
-        if (PQresultStatus(resSectors) != PGRES_TUPLES_OK)
-        {
-            fprintf(stderr, "index_sectors: SELECT failed: %s", PQerrorMessage(conn));
-            PQclear(resSectors);
-            exit(EXIT_FAILURE);
-        }
-        if (PQftype(resSectors, 0) != PG_OID_INT4)
-        {
-            fprintf(stderr, "Sector value has unexpected type\n");
-            PQclear(resSectors);
-            exit(EXIT_FAILURE);
-        }
-        if (PQftype(resSectors, 1) != PG_OID_INT8)
-        {
-            fprintf(stderr, "Sector value has unexpected type\n");
-            PQclear(resSectors);
-            exit(EXIT_FAILURE);
-        }
-
-        rankTotalDone = 0;
-        for (iSector = 0; iSector < PQntuples(resSectors); iSector++)
-        {
-            sector = PGint32(*((uint32_t *)PQgetvalue(resSectors, iSector, 0)));
-
-            // Get all the place_id's for this sector
-            paramRank = PGint32(rank);
-            paramValues[0] = (char *)&paramRank;
-            paramLengths[0] = sizeof(paramRank);
-            paramFormats[0] = 1;
-            paramSector = PGint32(sector);
-            paramValues[1] = (char *)&paramSector;
-            paramLengths[1] = sizeof(paramSector);
-            paramFormats[1] = 1;
-            resPlaces = PQexecPrepared(conn, "index_sector_places", 2, paramValues, paramLengths, paramFormats, 1);
-            if (PQresultStatus(resPlaces) != PGRES_TUPLES_OK)
-            {
-                fprintf(stderr, "index_sector_places: SELECT failed: %s", PQerrorMessage(conn));
-                PQclear(resPlaces);
-                exit(EXIT_FAILURE);
-            }
-            if (PQftype(resPlaces, 0) != PG_OID_INT8)
-            {
-                fprintf(stderr, "Place_id value has unexpected type\n");
-                PQclear(resPlaces);
-                exit(EXIT_FAILURE);
-            }
-
-            tuples = PQntuples(resPlaces);
-            for (i = 0; i < tuples; i++)
-            {
-                nominatim_exportPlace(PGint64(*((uint64_t *)PQgetvalue(resPlaces, i, 0))), conn, writer, NULL, NULL);
-                rankTotalDone++;
-                if (rankTotalDone%1000 == 0) printf("Done %i (k)\n", rankTotalDone/1000);
-            }
-            PQclear(resPlaces);
-        }
-        PQclear(resSectors);
-    }
-
-    nominatim_exportXMLEnd(writer);
-
-    PQfinish(conn);
-}
-
-void nominatim_exportCreatePreparedQueries(PGconn * conn)
-{
-    Oid pg_prepare_params[2];
-    PGresult * res;
-
-    pg_prepare_params[0] = PG_OID_INT8;
-    res = PQprepare(conn, "placex_details",
-                    "select placex.osm_type, placex.osm_id, placex.class, placex.type, placex.name, placex.housenumber, placex.country_code, ST_AsText(placex.geometry), placex.admin_level, placex.rank_address, placex.rank_search, placex.parent_place_id, parent.osm_type, parent.osm_id, placex.indexed_status, placex.linked_place_id from placex left outer join placex as parent on (placex.parent_place_id = parent.place_id) where placex.place_id = $1",
-                    1, pg_prepare_params);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Error preparing placex_details: %s", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQclear(res);
-
-    pg_prepare_params[0] = PG_OID_INT8;
-    res = PQprepare(conn, "placex_address",
-                    "select osm_type,osm_id,class,type,distance,cached_rank_address,isaddress from place_addressline join placex on (address_place_id = placex.place_id) where place_addressline.place_id = $1 and address_place_id != place_addressline.place_id order by cached_rank_address asc,osm_type,osm_id",
-                    1, pg_prepare_params);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Error preparing placex_address: %s", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQclear(res);
-
-    pg_prepare_params[0] = PG_OID_INT8;
-    res = PQprepare(conn, "placex_names",
-                    "select (each(name)).key,(each(name)).value from (select name from placex where place_id = $1) as x order by (each(name)).key",
-                    1, pg_prepare_params);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Error preparing placex_names: %s", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQclear(res);
-
-    pg_prepare_params[0] = PG_OID_INT8;
-    res = PQprepare(conn, "placex_extratags",
-                    "select (each(extratags)).key,(each(extratags)).value from (select extratags from placex where place_id = $1) as x order by (each(extratags)).key",
-                    1, pg_prepare_params);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Error preparing placex_extratags: %s", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQclear(res);
-}
-
-xmlTextWriterPtr nominatim_exportXMLStart(const char *structuredoutputfile)
-{
-    xmlTextWriterPtr writer;
-
-    writer = xmlNewTextWriterFilename(structuredoutputfile, 0);
-    if (writer==NULL)
-    {
-        fprintf(stderr, "Unable to open %s\n", structuredoutputfile);
-        exit(EXIT_FAILURE);
-    }
-    xmlTextWriterSetIndent(writer, 1);
-    if (xmlTextWriterStartDocument(writer, NULL, "UTF8", NULL) < 0)
-    {
-        fprintf(stderr, "xmlTextWriterStartDocument failed\n");
-        exit(EXIT_FAILURE);
-    }
-    if (xmlTextWriterStartElement(writer, BAD_CAST "osmStructured") < 0)
-    {
-        fprintf(stderr, "xmlTextWriterStartElement failed\n");
-        exit(EXIT_FAILURE);
-    }
-    if (xmlTextWriterWriteAttribute(writer, BAD_CAST "version", BAD_CAST "0.1") < 0)
-    {
-        fprintf(stderr, "xmlTextWriterWriteAttribute failed\n");
-        exit(EXIT_FAILURE);
-    }
-    if (xmlTextWriterWriteAttribute(writer, BAD_CAST "generator", BAD_CAST "Nominatim") < 0)
-    {
-        fprintf(stderr, "xmlTextWriterWriteAttribute failed\n");
-        exit(EXIT_FAILURE);
-    }
-
-    mode = 0;
-
-    return writer;
-}
-
-void nominatim_exportXMLEnd(xmlTextWriterPtr writer)
-{
-    nominatim_exportEndMode(writer);
-
-    // End <osmStructured>
-    if (xmlTextWriterEndElement(writer) < 0)
-    {
-        fprintf(stderr, "xmlTextWriterEndElement failed\n");
-        exit(EXIT_FAILURE);
-    }
-    if (xmlTextWriterEndDocument(writer) < 0)
-    {
-        fprintf(stderr, "xmlTextWriterEndDocument failed\n");
-        exit(EXIT_FAILURE);
-    }
-    xmlFreeTextWriter(writer);
-}
-
-void nominatim_exportStartMode(xmlTextWriterPtr writer, int newMode)
-{
-    if (mode == newMode) return;
-
-    nominatim_exportEndMode(writer);
-
-    switch(newMode)
-    {
-    case 0:
-        break;
-
-    case 1:
-        if (xmlTextWriterStartElement(writer, BAD_CAST "add") < 0)
-        {
-            fprintf(stderr, "xmlTextWriterStartElement failed\n");
-            exit(EXIT_FAILURE);
-        }
-        break;
-
-    case 2:
-        if (xmlTextWriterStartElement(writer, BAD_CAST "update") < 0)
-        {
-            fprintf(stderr, "xmlTextWriterStartElement failed\n");
-            exit(EXIT_FAILURE);
-        }
-        break;
-
-    case 3:
-        if (xmlTextWriterStartElement(writer, BAD_CAST "delete") < 0)
-        {
-            fprintf(stderr, "xmlTextWriterStartElement failed\n");
-            exit(EXIT_FAILURE);
-        }
-        break;
-    }
-    mode = newMode;
-}
-
-void nominatim_exportEndMode(xmlTextWriterPtr writer)
-{
-    if (!mode) return;
-
-    if (xmlTextWriterEndElement(writer) < 0)
-    {
-        fprintf(stderr, "xmlTextWriterEndElement failed\n");
-        exit(EXIT_FAILURE);
-    }
-}
-
-void nominatim_exportPlaceQueries(uint64_t place_id, PGconn * conn, struct export_data * querySet)
-{
-    const char *       paramValues[1];
-    int                paramLengths[1];
-    int                paramFormats[1];
-    uint64_t           paramPlaceID;
-
-    paramPlaceID = PGint64(place_id);
-    paramValues[0] = (char *)&paramPlaceID;
-    paramLengths[0] = sizeof(paramPlaceID);
-    paramFormats[0] = 1;
-
-    querySet->res = PQexecPrepared(conn, "placex_details", 1, paramValues, paramLengths, paramFormats, 0);
-    if (PQresultStatus(querySet->res) != PGRES_TUPLES_OK)
-    {
-        fprintf(stderr, "placex_details: SELECT failed: %s", PQerrorMessage(conn));
-        PQclear(querySet->res);
-        exit(EXIT_FAILURE);
-    }
-
-    querySet->resNames = PQexecPrepared(conn, "placex_names", 1, paramValues, paramLengths, paramFormats, 0);
-    if (PQresultStatus(querySet->resNames) != PGRES_TUPLES_OK)
-    {
-        fprintf(stderr, "placex_names: SELECT failed: %s", PQerrorMessage(conn));
-        PQclear(querySet->resNames);
-        exit(EXIT_FAILURE);
-    }
-
-    querySet->resAddress = PQexecPrepared(conn, "placex_address", 1, paramValues, paramLengths, paramFormats, 0);
-    if (PQresultStatus(querySet->resAddress) != PGRES_TUPLES_OK)
-    {
-        fprintf(stderr, "placex_address: SELECT failed: %s", PQerrorMessage(conn));
-        PQclear(querySet->resAddress);
-        exit(EXIT_FAILURE);
-    }
-
-    querySet->resExtraTags = PQexecPrepared(conn, "placex_extratags", 1, paramValues, paramLengths, paramFormats, 0);
-    if (PQresultStatus(querySet->resExtraTags) != PGRES_TUPLES_OK)
-    {
-        fprintf(stderr, "placex_extratags: SELECT failed: %s", PQerrorMessage(conn));
-        PQclear(querySet->resExtraTags);
-        exit(EXIT_FAILURE);
-    }
-}
-
-void nominatim_exportFreeQueries(struct export_data * querySet)
-{
-    PQclear(querySet->res);
-    PQclear(querySet->resNames);
-    PQclear(querySet->resAddress);
-    PQclear(querySet->resExtraTags);
-}
-
-/*
- * Requirements: the prepared queries must exist
- */
-void nominatim_exportPlace(uint64_t place_id, PGconn * conn,
-  xmlTextWriterPtr writer, pthread_mutex_t * writer_mutex, struct export_data * prevQuerySet)
-{
-    struct export_data         querySet;
-
-    int                        i;
-
-    nominatim_exportPlaceQueries(place_id, conn, &querySet);
-
-    // Add, modify or delete?
-    if (prevQuerySet)
-    {
-        if ((PQgetvalue(prevQuerySet->res, 0, 14) && strcmp(PQgetvalue(prevQuerySet->res, 0, 14), "100") == 0) || PQntuples(querySet.res) == 0)
-        {
-            // Delete
-            if (writer_mutex) pthread_mutex_lock( writer_mutex );
-            nominatim_exportStartMode(writer, 3);
-            xmlTextWriterStartElement(writer, BAD_CAST "feature");
-            xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "place_id", "%li", place_id);
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "type", BAD_CAST PQgetvalue(prevQuerySet->res, 0, 0));
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "id", BAD_CAST PQgetvalue(prevQuerySet->res, 0, 1));
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "key", BAD_CAST PQgetvalue(prevQuerySet->res, 0, 2));
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "value", BAD_CAST PQgetvalue(prevQuerySet->res, 0, 3));
-            xmlTextWriterEndElement(writer);
-            if (writer_mutex) pthread_mutex_unlock( writer_mutex );
-            nominatim_exportFreeQueries(&querySet);
-            return;
-        }
-        if (PQgetvalue(prevQuerySet->res, 0, 14) && strcmp(PQgetvalue(prevQuerySet->res, 0, 14), "1") == 0)
-        {
-            // Add
-            if (writer_mutex) pthread_mutex_lock( writer_mutex );
-            nominatim_exportStartMode(writer, 1);
-        }
-        else
-        {
-            // Update, but only if something has changed
-
-            // TODO: detect changes
-
-            if (writer_mutex) pthread_mutex_lock( writer_mutex );
-            nominatim_exportStartMode(writer, 2);
-        }
-    }
-    else
-    {
-       // Add
-       if (writer_mutex) pthread_mutex_lock( writer_mutex );
-       nominatim_exportStartMode(writer, 1);
-    }
-
-    xmlTextWriterStartElement(writer, BAD_CAST "feature");
-    xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "place_id", "%li", place_id);
-    xmlTextWriterWriteAttribute(writer, BAD_CAST "type", BAD_CAST PQgetvalue(querySet.res, 0, 0));
-    xmlTextWriterWriteAttribute(writer, BAD_CAST "id", BAD_CAST PQgetvalue(querySet.res, 0, 1));
-    xmlTextWriterWriteAttribute(writer, BAD_CAST "key", BAD_CAST PQgetvalue(querySet.res, 0, 2));
-    xmlTextWriterWriteAttribute(writer, BAD_CAST "value", BAD_CAST PQgetvalue(querySet.res, 0, 3));
-    xmlTextWriterWriteAttribute(writer, BAD_CAST "rank", BAD_CAST PQgetvalue(querySet.res, 0, 9));
-    xmlTextWriterWriteAttribute(writer, BAD_CAST "importance", BAD_CAST PQgetvalue(querySet.res, 0, 10));
-    xmlTextWriterWriteAttribute(writer, BAD_CAST "parent_place_id", BAD_CAST PQgetvalue(querySet.res, 0, 11));
-    xmlTextWriterWriteAttribute(writer, BAD_CAST "parent_type", BAD_CAST PQgetvalue(querySet.res, 0, 12));
-    xmlTextWriterWriteAttribute(writer, BAD_CAST "parent_id", BAD_CAST PQgetvalue(querySet.res, 0, 13));
-    xmlTextWriterWriteAttribute(writer, BAD_CAST "linked_place_id", BAD_CAST PQgetvalue(querySet.res, 0, 15));
-
-    if (PQntuples(querySet.resNames))
-    {
-        xmlTextWriterStartElement(writer, BAD_CAST "names");
-
-        for (i = 0; i < PQntuples(querySet.resNames); i++)
-        {
-            xmlTextWriterStartElement(writer, BAD_CAST "name");
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "type", BAD_CAST PQgetvalue(querySet.resNames, i, 0));
-            xmlTextWriterWriteString(writer, BAD_CAST PQgetvalue(querySet.resNames, i, 1));
-            xmlTextWriterEndElement(writer);
-        }
-
-        xmlTextWriterEndElement(writer);
-    }
-
-    if (PQgetvalue(querySet.res, 0, 5) && strlen(PQgetvalue(querySet.res, 0, 5)))
-    {
-        xmlTextWriterStartElement(writer, BAD_CAST "houseNumber");
-        xmlTextWriterWriteString(writer, BAD_CAST PQgetvalue(querySet.res, 0, 5));
-        xmlTextWriterEndElement(writer);
-    }
-
-    if (PQgetvalue(querySet.res, 0, 8) && strlen(PQgetvalue(querySet.res, 0, 8)))
-    {
-        xmlTextWriterStartElement(writer, BAD_CAST "adminLevel");
-        xmlTextWriterWriteString(writer, BAD_CAST PQgetvalue(querySet.res, 0, 8));
-        xmlTextWriterEndElement(writer);
-    }
-
-    if (PQgetvalue(querySet.res, 0, 6) && strlen(PQgetvalue(querySet.res, 0, 6)))
-    {
-        xmlTextWriterStartElement(writer, BAD_CAST "countryCode");
-        xmlTextWriterWriteString(writer, BAD_CAST PQgetvalue(querySet.res, 0, 6));
-        xmlTextWriterEndElement(writer);
-    }
-
-    if (PQntuples(querySet.resAddress) > 0)
-    {
-        xmlTextWriterStartElement(writer, BAD_CAST "address");
-        for (i = 0; i < PQntuples(querySet.resAddress); i++)
-        {
-            xmlTextWriterStartElement(writer, BAD_CAST getRankLabel(atoi(PQgetvalue(querySet.resAddress, i, 5))));
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "rank", BAD_CAST PQgetvalue(querySet.resAddress, i, 5));
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "type", BAD_CAST PQgetvalue(querySet.resAddress, i, 0));
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "id", BAD_CAST PQgetvalue(querySet.resAddress, i, 1));
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "key", BAD_CAST PQgetvalue(querySet.resAddress, i, 2));
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "value", BAD_CAST PQgetvalue(querySet.resAddress, i, 3));
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "distance", BAD_CAST PQgetvalue(querySet.resAddress, i, 4));
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "isaddress", BAD_CAST PQgetvalue(querySet.resAddress, i, 6));
-            xmlTextWriterEndElement(writer);
-        }
-        xmlTextWriterEndElement(writer);
-    }
-
-    if (PQntuples(querySet.resExtraTags))
-    {
-        xmlTextWriterStartElement(writer, BAD_CAST "tags");
-
-        for (i = 0; i < PQntuples(querySet.resExtraTags); i++)
-        {
-            xmlTextWriterStartElement(writer, BAD_CAST "tag");
-            xmlTextWriterWriteAttribute(writer, BAD_CAST "type", BAD_CAST PQgetvalue(querySet.resExtraTags, i, 0));
-            xmlTextWriterWriteString(writer, BAD_CAST PQgetvalue(querySet.resExtraTags, i, 1));
-            xmlTextWriterEndElement(writer);
-        }
-
-        xmlTextWriterEndElement(writer);
-    }
-
-
-    xmlTextWriterStartElement(writer, BAD_CAST "osmGeometry");
-    xmlTextWriterWriteString(writer, BAD_CAST PQgetvalue(querySet.res, 0, 7));
-    xmlTextWriterEndElement(writer);
-
-    xmlTextWriterEndElement(writer); // </feature>
-
-    if (writer_mutex) pthread_mutex_unlock( writer_mutex );
-
-    nominatim_exportFreeQueries(&querySet);
-}
-
-const char * getRankLabel(int rank)
-{
-    switch (rank)
-    {
-    case 0:
-    case 1:
-        return "continent";
-    case 2:
-    case 3:
-        return "sea";
-    case 4:
-    case 5:
-    case 6:
-    case 7:
-        return "country";
-    case 8:
-    case 9:
-    case 10:
-    case 11:
-        return "state";
-    case 12:
-    case 13:
-    case 14:
-    case 15:
-        return "county";
-    case 16:
-        return "city";
-    case 17:
-        return "town";
-    case 18:
-        return "village";
-    case 19:
-        return "unknown";
-    case 20:
-        return "suburb";
-    case 21:
-        return "postcode";
-    case 22:
-        return "neighborhood";
-    case 23:
-        return "postcode";
-    case 24:
-        return "unknown";
-    case 25:
-        return "postcode";
-    case 26:
-        return "street";
-    case 27:
-        return "access";
-    case 28:
-        return "building";
-    case 29:
-    default:
-        return "other";
-    }
-}
diff --git a/nominatim/export.h b/nominatim/export.h
deleted file mode 100644 (file)
index c7a302c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef EXPORT_H
-#define EXPORT_H
-
-#include <libxml/encoding.h>
-#include <libxml/xmlwriter.h>
-#include <stdint.h>
-
-struct export_data
-{   
-    PGresult *          res;
-    PGresult *          resNames;
-    PGresult *          resAddress;
-    PGresult *          resExtraTags;
-};
-
-void nominatim_export(int rank_min, int rank_max, const char *conninfo, const char *structuredoutputfile);
-void nominatim_exportCreatePreparedQueries(PGconn * conn);
-
-xmlTextWriterPtr nominatim_exportXMLStart(const char *structuredoutputfile);
-void nominatim_exportXMLEnd(xmlTextWriterPtr writer);
-
-void nominatim_exportEndMode(xmlTextWriterPtr writer);
-
-void nominatim_exportPlaceQueries(uint64_t place_id, PGconn * conn, struct export_data * querySet);
-void nominatim_exportFreeQueries(struct export_data * querySet);
-
-void nominatim_exportPlace(uint64_t place_id, PGconn * conn, 
-  xmlTextWriterPtr writer, pthread_mutex_t * writer_mutex, struct export_data * prevQuerySet);
-const char * getRankLabel(int rank);
-
-#endif
diff --git a/nominatim/geometry.cpp b/nominatim/geometry.cpp
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/nominatim/import.c b/nominatim/import.c
deleted file mode 100644 (file)
index 419ab6a..0000000
+++ /dev/null
@@ -1,856 +0,0 @@
-/*
-*/
-#include <stdlib.h>
-#include <string.h>
-
-#include <libpq-fe.h>
-
-#include <libxml/xmlstring.h>
-#include <libxml/xmlreader.h>
-#include <libxml/hash.h>
-
-#include "nominatim.h"
-#include "import.h"
-#include "input.h"
-
-typedef enum { FILETYPE_NONE, FILETYPE_STRUCTUREDV0P1 } filetypes_t;
-typedef enum { FILEMODE_NONE, FILEMODE_ADD, FILEMODE_UPDATE, FILEMODE_DELETE } filemodes_t;
-
-#define MAX_FEATUREADDRESS 5000
-#define MAX_FEATURENAMES 10000
-#define MAX_FEATUREEXTRATAGS 10000
-#define MAX_FEATURENAMESTRING 1000000
-#define MAX_FEATUREEXTRATAGSTRING 500000
-
-struct feature_address
-{
-    int                        place_id;
-    int                        rankAddress;
-    char                       isAddress[2];
-    xmlChar *  type;
-    xmlChar *  id;
-    xmlChar *  key;
-    xmlChar *  value;
-    xmlChar *  distance;
-};
-
-struct feature_tag
-{
-    xmlChar *  type;
-    xmlChar *  value;
-};
-
-struct feature
-{
-    xmlChar *   placeID;
-    xmlChar *  type;
-    xmlChar *  id;
-    xmlChar *  key;
-    xmlChar *  value;
-    xmlChar *  rankAddress;
-    xmlChar *  rankSearch;
-    xmlChar *  countryCode;
-    xmlChar *  parentPlaceID;
-    xmlChar *  parentType;
-    xmlChar *  parentID;
-    xmlChar *  adminLevel;
-    xmlChar *  houseNumber;
-    xmlChar *  geometry;
-} feature;
-
-int                                    fileType = FILETYPE_NONE;
-int                                    fileMode = FILEMODE_ADD;
-PGconn *                               conn;
-struct feature_address         featureAddress[MAX_FEATUREADDRESS];
-struct feature_tag             featureName[MAX_FEATURENAMES];
-struct feature_tag             featureExtraTag[MAX_FEATUREEXTRATAGS];
-struct feature                         feature;
-int                                    featureAddressLines = 0;
-int                                    featureNameLines = 0;
-int                                    featureExtraTagLines = 0;
-int                                    featureCount = 0;
-xmlHashTablePtr                partionTableTagsHash;
-xmlHashTablePtr                partionTableTagsHashDelete;
-char                                   featureNameString[MAX_FEATURENAMESTRING];
-char                                   featureExtraTagString[MAX_FEATUREEXTRATAGSTRING];
-
-extern int verbose;
-
-void StartElement(xmlTextReaderPtr reader, const xmlChar *name)
-{
-    char * value;
-    float version;
-    int isAddressLine;
-
-    if (fileType == FILETYPE_NONE)
-    {
-        // Potential to handle other file types in the future / versions
-        if (xmlStrEqual(name, BAD_CAST "osmStructured"))
-        {
-            value = (char*)xmlTextReaderGetAttribute(reader, BAD_CAST "version");
-            version = strtof(value, NULL);
-            xmlFree(value);
-
-            if (version == (float)0.1)
-            {
-                fileType = FILETYPE_STRUCTUREDV0P1;
-                fileMode = FILEMODE_ADD;
-            }
-            else
-            {
-                fprintf( stderr, "Unknown osmStructured version %f (%s)\n", version, value );
-                exit_nicely();
-            }
-        }
-        else
-        {
-            fprintf( stderr, "Unknown XML document type: %s\n", name );
-            exit_nicely();
-        }
-        return;
-    }
-
-    if (xmlStrEqual(name, BAD_CAST "add"))
-    {
-        fileMode = FILEMODE_ADD;
-        return;
-    }
-    if (xmlStrEqual(name, BAD_CAST "update"))
-    {
-        fileMode = FILEMODE_UPDATE;
-        return;
-    }
-    if (xmlStrEqual(name, BAD_CAST "delete"))
-    {
-        fileMode = FILEMODE_DELETE;
-        return;
-    }
-    if (fileMode == FILEMODE_NONE)
-    {
-        fprintf( stderr, "Unknown import mode in: %s\n", name );
-        exit_nicely();
-    }
-
-    if (xmlStrEqual(name, BAD_CAST "feature"))
-    {
-        feature.placeID = xmlTextReaderGetAttribute(reader, BAD_CAST "place_id");
-        feature.type = xmlTextReaderGetAttribute(reader, BAD_CAST "type");
-        feature.id = xmlTextReaderGetAttribute(reader, BAD_CAST "id");
-        feature.key = xmlTextReaderGetAttribute(reader, BAD_CAST "key");
-        feature.value = xmlTextReaderGetAttribute(reader, BAD_CAST "value");
-        feature.rankAddress = xmlTextReaderGetAttribute(reader, BAD_CAST "rank");
-        feature.rankSearch = xmlTextReaderGetAttribute(reader, BAD_CAST "importance");
-
-        feature.parentPlaceID = xmlTextReaderGetAttribute(reader, BAD_CAST "parent_place_id");
-/*
-       if (strlen(feature.parentPlaceID) == 0)
-       {
-               xmlFree(feature.parentPlaceID);
-               feature.parentPlaceID = NULL;
-       }
-*/
-        feature.parentType = xmlTextReaderGetAttribute(reader, BAD_CAST "parent_type");
-        feature.parentID = xmlTextReaderGetAttribute(reader, BAD_CAST "parent_id");
-
-        feature.countryCode = NULL;
-        feature.adminLevel = NULL;
-        feature.houseNumber = NULL;
-        feature.geometry = NULL;
-        featureAddressLines = 0;
-        featureNameLines = 0;
-        featureExtraTagLines = 0;
-
-        return;
-    }
-    if (xmlStrEqual(name, BAD_CAST "names")) return;
-    if (xmlStrEqual(name, BAD_CAST "name"))
-    {
-        if (featureNameLines < MAX_FEATURENAMES)
-        {
-               featureName[featureNameLines].type = xmlTextReaderGetAttribute(reader, BAD_CAST "type");
-           featureName[featureNameLines].value = xmlTextReaderReadString(reader);
-               featureNameLines++;
-               }
-               else
-               {
-            fprintf( stderr, "Too many name elements (%s%s)\n", feature.type, feature.id);
-//            exit_nicely();
-        }
-        return;
-    }
-    if (xmlStrEqual(name, BAD_CAST "tags")) return;
-    if (xmlStrEqual(name, BAD_CAST "tag"))
-    {
-        if (featureExtraTagLines < MAX_FEATUREEXTRATAGS)
-               {
-               featureExtraTag[featureExtraTagLines].type = xmlTextReaderGetAttribute(reader, BAD_CAST "type");
-           featureExtraTag[featureExtraTagLines].value = xmlTextReaderReadString(reader);
-               featureExtraTagLines++;
-               }
-               else
-        {
-            fprintf( stderr, "Too many extra tag elements (%s%s)\n", feature.type, feature.id);
-//            exit_nicely();
-        }
-        return;
-    }
-    if (xmlStrEqual(name, BAD_CAST "osmGeometry"))
-    {
-        feature.geometry = xmlTextReaderReadString(reader);
-        return;
-    }
-    if (xmlStrEqual(name, BAD_CAST "adminLevel"))
-    {
-        feature.adminLevel = xmlTextReaderReadString(reader);
-        return;
-    }
-    if (xmlStrEqual(name, BAD_CAST "countryCode"))
-    {
-        feature.countryCode = xmlTextReaderReadString(reader);
-        return;
-    }
-    if (xmlStrEqual(name, BAD_CAST "houseNumber"))
-    {
-        feature.houseNumber = xmlTextReaderReadString(reader);
-        return;
-    }
-    if (xmlStrEqual(name, BAD_CAST "address"))
-    {
-        featureAddressLines = 0;
-        return;
-    }
-    isAddressLine = 0;
-    if (xmlStrEqual(name, BAD_CAST "continent"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "sea"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "country"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "state"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "county"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "city"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "town"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "village"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "unknown"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "suburb"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "postcode"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "neighborhood"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "street"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "access"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "building"))
-    {
-        isAddressLine = 1;
-    }
-    else if (xmlStrEqual(name, BAD_CAST "other"))
-    {
-        isAddressLine = 1;
-    }
-    if (isAddressLine)
-    {
-        if (featureAddressLines < MAX_FEATUREADDRESS)
-               {
-               value = (char*)xmlTextReaderGetAttribute(reader, BAD_CAST "rank");
-           if (!value)
-               {
-               fprintf( stderr, "Address element missing rank\n");
-                   exit_nicely();
-               }
-           featureAddress[featureAddressLines].rankAddress =  atoi(value);
-               xmlFree(value);
-
-               value = (char*)xmlTextReaderGetAttribute(reader, BAD_CAST "isaddress");
-           if (!value)
-               {
-                   fprintf( stderr, "Address element missing rank\n");
-               exit_nicely();
-               }
-               if (*value == 't') strcpy(featureAddress[featureAddressLines].isAddress, "t");
-           else strcpy(featureAddress[featureAddressLines].isAddress, "f");
-               xmlFree(value);
-
-               featureAddress[featureAddressLines].type = xmlTextReaderGetAttribute(reader, BAD_CAST "type");
-           featureAddress[featureAddressLines].id = xmlTextReaderGetAttribute(reader, BAD_CAST "id");
-               featureAddress[featureAddressLines].key = xmlTextReaderGetAttribute(reader, BAD_CAST "key");
-               featureAddress[featureAddressLines].value = xmlTextReaderGetAttribute(reader, BAD_CAST "value");
-           featureAddress[featureAddressLines].distance = xmlTextReaderGetAttribute(reader, BAD_CAST "distance");
-       
-           featureAddressLines++;
-               }
-               else
-        {
-            fprintf( stderr, "Too many address elements (%s%s)\n", feature.type, feature.id);
-//            exit_nicely();
-        }
-
-        return;
-    }
-    fprintf(stderr, "%s: Unknown element name: %s\n", __FUNCTION__, name);
-}
-
-void EndElement(xmlTextReaderPtr reader, const xmlChar *name)
-{
-    PGresult *                 res;
-    const char *       paramValues[14];
-    char *                     place_id;
-    char *                     partionQueryName;
-    int i, namePos, lineTypeLen, lineValueLen;
-
-    if (xmlStrEqual(name, BAD_CAST "feature"))
-    {
-        featureCount++;
-        if (featureCount % 1000 == 0) printf("feature %i(k)\n", featureCount/1000);
-/*
-        if (fileMode == FILEMODE_ADD)
-        {
-            resPlaceID = PQexecPrepared(conn, "get_new_place_id", 0, NULL, NULL, NULL, 0);
-            if (PQresultStatus(resPlaceID) != PGRES_TUPLES_OK)
-            {
-                fprintf(stderr, "get_place_id: INSERT failed: %s", PQerrorMessage(conn));
-                PQclear(resPlaceID);
-                exit(EXIT_FAILURE);
-            }
-        }
-        else
-        {
-            paramValues[0] = (const char *)feature.type;
-            paramValues[1] = (const char *)feature.id;
-            paramValues[2] = (const char *)feature.key;
-            paramValues[3] = (const char *)feature.value;
-            resPlaceID = PQexecPrepared(conn, "get_new_place_id", 4, paramValues, NULL, NULL, 0);
-            if (PQresultStatus(resPlaceID) != PGRES_TUPLES_OK)
-            {
-                fprintf(stderr, "index_placex: INSERT failed: %s", PQerrorMessage(conn));
-                PQclear(resPlaceID);
-                exit(EXIT_FAILURE);
-            }
-        }
-*/
-        place_id = (char *)feature.placeID;
-
-        if (fileMode == FILEMODE_UPDATE || fileMode == FILEMODE_DELETE || fileMode == FILEMODE_ADD)
-        {
-            paramValues[0] = (const char *)place_id;
-            if (verbose) fprintf(stderr, "placex_delete: %s\n", paramValues[0]);
-            res = PQexecPrepared(conn, "placex_delete", 1, paramValues, NULL, NULL, 0);
-            if (PQresultStatus(res) != PGRES_COMMAND_OK)
-            {
-                fprintf(stderr, "placex_delete: DELETE failed: %s", PQerrorMessage(conn));
-                PQclear(res);
-                exit(EXIT_FAILURE);
-            }
-            PQclear(res);
-
-            if (verbose) fprintf(stderr, "search_name_delete: %s\n", paramValues[0]);
-            res = PQexecPrepared(conn, "search_name_delete", 1, paramValues, NULL, NULL, 0);
-            if (PQresultStatus(res) != PGRES_COMMAND_OK)
-            {
-                fprintf(stderr, "search_name_delete: DELETE failed: %s", PQerrorMessage(conn));
-                PQclear(res);
-                exit(EXIT_FAILURE);
-            }
-            PQclear(res);
-
-            if (verbose) fprintf(stderr, "place_addressline_delete: %s\n", paramValues[0]);
-            res = PQexecPrepared(conn, "place_addressline_delete", 1, paramValues, NULL, NULL, 0);
-            if (PQresultStatus(res) != PGRES_COMMAND_OK)
-            {
-                fprintf(stderr, "place_addressline_delete: DELETE failed: %s", PQerrorMessage(conn));
-                PQclear(res);
-                exit(EXIT_FAILURE);
-            }
-            PQclear(res);
-
-            partionQueryName = xmlHashLookup2(partionTableTagsHashDelete, feature.key, feature.value);
-            if (partionQueryName)
-            {
-                res = PQexecPrepared(conn, partionQueryName, 1, paramValues, NULL, NULL, 0);
-                if (PQresultStatus(res) != PGRES_COMMAND_OK)
-                {
-                    fprintf(stderr, "%s: DELETE failed: %s", partionQueryName, PQerrorMessage(conn));
-                    PQclear(res);
-                    exit(EXIT_FAILURE);
-                }
-                PQclear(res);
-            }
-        }
-
-        if (fileMode == FILEMODE_UPDATE || fileMode == FILEMODE_ADD)
-        {
-            // Insert into placex
-            paramValues[0] = (const char *)place_id;
-            paramValues[1] = (const char *)feature.type;
-            paramValues[2] = (const char *)feature.id;
-            paramValues[3] = (const char *)feature.key;
-            paramValues[4] = (const char *)feature.value;
-
-            featureNameString[0] = 0;
-            if (featureNameLines)
-            {
-                namePos = 0;
-                lineTypeLen = 0;
-                lineValueLen = 0;
-                for (i = 0; i < featureNameLines; i++)
-                {
-                    lineTypeLen = (int)strlen((char *) featureName[i].type);
-                    lineValueLen = (int)strlen((char *) featureName[i].value);
-                    if (namePos+lineTypeLen+lineValueLen+7 > MAX_FEATURENAMESTRING)
-                    {
-                        fprintf(stderr, "feature name too long: %s", (const char *)featureName[i].value);
-                        break;
-                    }
-                    if (namePos) strcpy(featureNameString+(namePos++), ",");
-                    strcpy(featureNameString+(namePos++), "\"");
-                    strcpy(featureNameString+namePos, (char*) featureName[i].type);
-                    namePos += lineTypeLen;
-                    strcpy(featureNameString+namePos, "\"=>\"");
-                    namePos += 4;
-                    strcpy(featureNameString+namePos, (char *) featureName[i].value);
-                    namePos += lineValueLen;
-                    strcpy(featureNameString+(namePos++), "\"");
-
-                    xmlFree(featureName[i].type);
-                    xmlFree(featureName[i].value);
-                }
-            }
-            paramValues[5] = (const char *)featureNameString;
-
-            paramValues[6] = (const char *)feature.countryCode;
-
-            featureExtraTagString[0] = 0;
-            if (featureExtraTagLines)
-            {
-                namePos = 0;
-                lineTypeLen = 0;
-                lineValueLen = 0;
-                for (i = 0; i < featureExtraTagLines; i++)
-                {
-                    lineTypeLen = strlen((char *) featureExtraTag[i].type);
-                    lineValueLen = strlen((char *) featureExtraTag[i].value);
-                    if (namePos+lineTypeLen+lineValueLen+7 > MAX_FEATUREEXTRATAGSTRING)
-                    {
-                        fprintf(stderr, "feature extra tag too long: %s", (const char *)featureExtraTag[i].value);
-                        break;
-                    }
-                    if (namePos) strcpy(featureExtraTagString+(namePos++),",");
-                    strcpy(featureExtraTagString+(namePos++), "\"");
-                    strcpy(featureExtraTagString+namePos, (char *) featureExtraTag[i].type);
-                    namePos += lineTypeLen;
-                    strcpy(featureExtraTagString+namePos, "\"=>\"");
-                    namePos += 4;
-                    strcpy(featureExtraTagString+namePos, (char *) featureExtraTag[i].value);
-                    namePos += lineValueLen;
-                    strcpy(featureExtraTagString+(namePos++), "\"");
-
-                    xmlFree(featureExtraTag[i].type);
-                    xmlFree(featureExtraTag[i].value);
-                }
-            }
-            paramValues[7] = (const char *)featureExtraTagString;
-
-            if (xmlStrlen(feature.parentPlaceID) == 0)
-                paramValues[8] = "0";
-            else
-                paramValues[8] = (const char *)feature.parentPlaceID;
-
-            paramValues[9] = (const char *)feature.adminLevel;
-            paramValues[10] = (const char *)feature.houseNumber;
-            paramValues[11] = (const char *)feature.rankAddress;
-            paramValues[12] = (const char *)feature.rankSearch;
-            paramValues[13] = (const char *)feature.geometry;
-            if (strlen(paramValues[3]) && strlen(paramValues[13]))
-            {
-                if (verbose) fprintf(stderr, "placex_insert: %s\n", paramValues[0]);
-                res = PQexecPrepared(conn, "placex_insert", 14, paramValues, NULL, NULL, 0);
-                if (PQresultStatus(res) != PGRES_COMMAND_OK)
-                {
-                    fprintf(stderr, "index_placex: INSERT failed: %s", PQerrorMessage(conn));
-                    fprintf(stderr, "index_placex: INSERT failed: %s %s %s", paramValues[0], paramValues[1], paramValues[2]);
-                    PQclear(res);
-                    exit(EXIT_FAILURE);
-               }
-               PQclear(res);
-            }
-
-            for (i = 0; i < featureAddressLines; i++)
-            {
-                // insert into place_address
-                paramValues[0] = (const char *)place_id;
-                paramValues[1] = (const char *)featureAddress[i].distance;
-                if (paramValues[1] == NULL || strlen(paramValues[1]) == 0) paramValues[1] = "0";
-                paramValues[2] = (const char *)featureAddress[i].type;
-                paramValues[3] = (const char *)featureAddress[i].id;
-                paramValues[4] = (const char *)featureAddress[i].key;
-                paramValues[5] = (const char *)featureAddress[i].value;
-                paramValues[6] = (const char *)featureAddress[i].isAddress;
-                if (verbose) fprintf(stderr, "placex_insert: %s %s\n", paramValues[2], paramValues[3]);
-                res = PQexecPrepared(conn, "place_addressline_insert", 7, paramValues, NULL, NULL, 0);
-                if (PQresultStatus(res) != PGRES_COMMAND_OK)
-                {
-                    fprintf(stderr, "place_addressline_insert: INSERT failed: %s", PQerrorMessage(conn));
-                    fprintf(stderr, "(%s,%s,%s,%s,%s,%s,%s)",paramValues[0],paramValues[1],paramValues[2],paramValues[3],paramValues[4],paramValues[5],paramValues[6]);
-                    PQclear(res);
-                    exit(EXIT_FAILURE);
-                }
-                PQclear(res);
-
-                xmlFree(featureAddress[i].type);
-                xmlFree(featureAddress[i].id);
-                xmlFree(featureAddress[i].key);
-                xmlFree(featureAddress[i].value);
-                xmlFree(featureAddress[i].distance);
-            }
-
-            if (featureNameLines)
-            {
-                if (xmlStrlen(feature.parentPlaceID) > 0 && featureAddressLines == 0)
-               {
-                    paramValues[0] = (const char *)place_id;
-                    paramValues[1] = (const char *)feature.parentPlaceID;
-                    if (verbose) fprintf(stderr, "search_name_from_parent_insert: INSERT %s %s\n", paramValues[0], paramValues[1]);
-                    res = PQexecPrepared(conn, "search_name_from_parent_insert", 2, paramValues, NULL, NULL, 0);
-                    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-                    {
-                        fprintf(stderr, "search_name_from_parent_insert: INSERT failed: %s", PQerrorMessage(conn));
-                        PQclear(res);
-                        exit(EXIT_FAILURE);
-                    }
-                    PQclear(res);
-               }
-               else
-               {
-                    paramValues[0] = (const char *)place_id;
-                    if (verbose) fprintf(stderr, "search_name_insert: INSERT %s\n", paramValues[0]);
-                    res = PQexecPrepared(conn, "search_name_insert", 1, paramValues, NULL, NULL, 0);
-                    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-                    {
-                        fprintf(stderr, "search_name_insert: INSERT failed: %s", PQerrorMessage(conn));
-                        PQclear(res);
-                        exit(EXIT_FAILURE);
-                    }
-                    PQclear(res);
-                }
-            }
-
-            partionQueryName = xmlHashLookup2(partionTableTagsHash, feature.key, feature.value);
-            if (partionQueryName)
-            {
-                // insert into partition table
-                paramValues[0] = (const char *)place_id;
-                paramValues[1] = (const char *)feature.geometry;
-                res = PQexecPrepared(conn, partionQueryName, 2, paramValues, NULL, NULL, 0);
-                if (PQresultStatus(res) != PGRES_COMMAND_OK)
-                {
-                    fprintf(stderr, "%s: INSERT failed: %s", partionQueryName, PQerrorMessage(conn));
-                    PQclear(res);
-                    exit(EXIT_FAILURE);
-                }
-                PQclear(res);
-            }
-
-        }
-        else
-        {
-            for (i = 0; i < featureAddressLines; i++)
-            {
-                xmlFree(featureAddress[i].type);
-                xmlFree(featureAddress[i].id);
-                xmlFree(featureAddress[i].key);
-                xmlFree(featureAddress[i].value);
-                xmlFree(featureAddress[i].distance);
-            }
-        }
-
-        xmlFree(feature.placeID);
-        xmlFree(feature.type);
-        xmlFree(feature.id);
-        xmlFree(feature.key);
-        xmlFree(feature.value);
-        xmlFree(feature.rankAddress);
-        xmlFree(feature.rankSearch);
-        if (feature.countryCode) xmlFree(feature.countryCode);
-       if (feature.parentPlaceID) xmlFree(feature.parentPlaceID);
-       if (feature.parentType) xmlFree(feature.parentType);
-       if (feature.parentID) xmlFree(feature.parentID);
-//             if (feature.name) xmlFree(feature.name);
-        if (feature.adminLevel) xmlFree(feature.adminLevel);
-        if (feature.houseNumber) xmlFree(feature.houseNumber);
-        if (feature.geometry) xmlFree(feature.geometry);
-
-//        PQclear(resPlaceID);
-    }
-}
-
-static void processNode(xmlTextReaderPtr reader)
-{
-    xmlChar *name;
-    name = xmlTextReaderName(reader);
-    if (name == NULL)
-    {
-        name = xmlStrdup(BAD_CAST "--");
-    }
-
-    switch (xmlTextReaderNodeType(reader))
-    {
-    case XML_READER_TYPE_ELEMENT:
-        StartElement(reader, name);
-        if (xmlTextReaderIsEmptyElement(reader))
-            EndElement(reader, name); /* No end_element for self closing tags! */
-        break;
-    case XML_READER_TYPE_END_ELEMENT:
-        EndElement(reader, name);
-        break;
-    case XML_READER_TYPE_TEXT:
-    case XML_READER_TYPE_CDATA:
-    case XML_READER_TYPE_SIGNIFICANT_WHITESPACE:
-        /* Ignore */
-        break;
-    default:
-        fprintf(stderr, "Unknown node type %d\n", xmlTextReaderNodeType(reader));
-        break;
-    }
-
-    xmlFree(name);
-}
-
-int nominatim_import(const char *conninfo, const char *partionTagsFilename, const char *filename)
-{
-    xmlTextReaderPtr   reader;
-    int                                ret = 0;
-    PGresult *                         res;
-    FILE *                             partionTagsFile;
-    char *                             partionQueryName;
-    char                               partionQuerySQL[1024];
-
-    conn = PQconnectdb(conninfo);
-    if (PQstatus(conn) != CONNECTION_OK)
-    {
-        fprintf(stderr, "Connection to database failed: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    partionTableTagsHash = xmlHashCreate(200);
-    partionTableTagsHashDelete = xmlHashCreate(200);
-
-    partionTagsFile = fopen(partionTagsFilename, "rt");
-    if (!partionTagsFile)
-    {
-        fprintf(stderr, "Unable to read partition tags file: %s\n", partionTagsFilename);
-        exit(EXIT_FAILURE);
-    }
-
-    char buffer[1024], osmkey[256], osmvalue[256];
-    int fields;
-    while (fgets(buffer, sizeof(buffer), partionTagsFile) != NULL)
-    {
-        fields = sscanf( buffer, "%23s %63s", osmkey, osmvalue );
-
-        if ( fields <= 0 ) continue;
-
-        if ( fields != 2  )
-        {
-            fprintf( stderr, "Error partition file\n");
-            exit_nicely();
-        }
-        partionQueryName = malloc(strlen("partition_insert_")+strlen(osmkey)+strlen(osmvalue)+2);
-        strcpy(partionQueryName, "partition_insert_");
-        strcat(partionQueryName, osmkey);
-        strcat(partionQueryName, "_");
-        strcat(partionQueryName, osmvalue);
-
-        strcpy(partionQuerySQL, "insert into place_classtype_");
-        strcat(partionQuerySQL, osmkey);
-        strcat(partionQuerySQL, "_");
-        strcat(partionQuerySQL, osmvalue);
-        strcat(partionQuerySQL, " (place_id, centroid) values ($1, ST_Centroid(st_setsrid($2, 4326)))");
-
-        res = PQprepare(conn, partionQueryName, partionQuerySQL, 2, NULL);
-        if (PQresultStatus(res) != PGRES_COMMAND_OK)
-        {
-            fprintf(stderr, "Failed to prepare %s: %s\n", partionQueryName, PQerrorMessage(conn));
-            exit(EXIT_FAILURE);
-        }
-
-        xmlHashAddEntry2(partionTableTagsHash, BAD_CAST osmkey, BAD_CAST osmvalue, BAD_CAST partionQueryName);
-
-        partionQueryName = malloc(strlen("partition_delete_")+strlen(osmkey)+strlen(osmvalue)+2);
-        strcpy(partionQueryName, "partition_delete_");
-        strcat(partionQueryName, osmkey);
-        strcat(partionQueryName, "_");
-        strcat(partionQueryName, osmvalue);
-
-        strcpy(partionQuerySQL, "delete from place_classtype_");
-        strcat(partionQuerySQL, osmkey);
-        strcat(partionQuerySQL, "_");
-        strcat(partionQuerySQL, osmvalue);
-        strcat(partionQuerySQL, " where place_id = $1::integer");
-
-        res = PQprepare(conn, partionQueryName, partionQuerySQL, 1, NULL);
-        if (PQresultStatus(res) != PGRES_COMMAND_OK)
-        {
-            fprintf(stderr, "Failed to prepare %s: %s\n", partionQueryName, PQerrorMessage(conn));
-            exit(EXIT_FAILURE);
-        }
-
-        xmlHashAddEntry2(partionTableTagsHashDelete, BAD_CAST osmkey, BAD_CAST osmvalue, BAD_CAST partionQueryName);
-    }
-
-    res = PQprepare(conn, "get_new_place_id",
-                    "select nextval('seq_place')",
-                    0, NULL);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed to prepare get_new_place_id: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    res = PQprepare(conn, "get_place_id",
-                    "select place_id from placex where osm_type = $1 and osm_id = $2 and class = $3 and type = $4",
-                    4, NULL);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed to prepare get_place_id: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    res = PQprepare(conn, "placex_insert",
-                    "insert into placex (place_id,osm_type,osm_id,class,type,name,country_code,extratags,parent_place_id,admin_level,housenumber,rank_address,rank_search,geometry) "
-                    "values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, st_setsrid($14, 4326))",
-                    12, NULL);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed to prepare placex_insert: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    res = PQprepare(conn, "search_name_insert",
-                    "insert into search_name (place_id, search_rank, address_rank, country_code, name_vector, nameaddress_vector, centroid) "
-                    "select place_id, rank_search, rank_address, country_code, make_keywords(name), "
-                    "(select uniq(sort(array_agg(parent_search_name.name_vector))) from search_name as parent_search_name where place_id in "
-                     "(select distinct address_place_id from place_addressline where place_addressline.place_id = $1 limit 1000)"
-                    "), st_centroid(geometry) from placex "
-                    "where place_id = $1",
-                    1, NULL);
-
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed to prepare search_name_insert: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    res = PQprepare(conn, "search_name_from_parent_insert",
-                    "insert into search_name (place_id, search_rank, address_rank, country_code, name_vector, nameaddress_vector, centroid) "
-                    "select place_id, rank_search, rank_address, country_code, make_keywords(name), "
-                    "(select uniq(sort(name_vector+nameaddress_vector)) from search_name as parent_search_name "
-                    "where parent_search_name.place_id = $2 ), st_centroid(geometry) from placex "
-                    "where place_id = $1",
-                    2, NULL);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed to prepare search_name_insert: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    res = PQprepare(conn, "place_addressline_insert",
-                    "insert into place_addressline (place_id, address_place_id, fromarea, isaddress, distance, cached_rank_address) "
-                    "select $1, place_id, false, $7, $2, rank_address from placex where osm_type = $3 and osm_id = $4 and class = $5 and type = $6",
-                    7, NULL);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed to prepare place_addressline_insert: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    res = PQprepare(conn, "placex_delete",
-                    "delete from placex where place_id = $1",
-                    1, NULL);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed to prepare placex_delete: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    res = PQprepare(conn, "search_name_delete",
-                    "delete from search_name where place_id = $1",
-                    1, NULL);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed to prepare search_name_delete: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    res = PQprepare(conn, "place_addressline_delete",
-                    "delete from place_addressline where place_id = $1",
-                    1, NULL);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed to prepare place_addressline_delete: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    featureCount = 0;
-
-    reader = inputUTF8(filename);
-
-    if (reader == NULL)
-    {
-        fprintf(stderr, "Unable to open %s\n", filename);
-        return 1;
-    }
-
-    ret = xmlTextReaderRead(reader);
-    while (ret == 1)
-    {
-        processNode(reader);
-        ret = xmlTextReaderRead(reader);
-    }
-    if (ret != 0)
-    {
-        fprintf(stderr, "%s : failed to parse\n", filename);
-        return ret;
-    }
-
-    xmlFreeTextReader(reader);
-    xmlHashFree(partionTableTagsHash, NULL);
-    xmlHashFree(partionTableTagsHashDelete, NULL);
-
-    return 0;
-}
diff --git a/nominatim/import.h b/nominatim/import.h
deleted file mode 100644 (file)
index ae8c26c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef IMPORT_H
-#define IMPORT_H
-
-int nominatim_import(const char *conninfo, const char *partionTagsFilename, const char *filename);
-
-#endif
diff --git a/nominatim/index.c b/nominatim/index.c
deleted file mode 100644 (file)
index bb553f7..0000000
+++ /dev/null
@@ -1,547 +0,0 @@
-/*
- * triggers indexing (reparenting etc.) through setting resetting indexed_status: update placex/osmline set indexed_status = 0 where indexed_status > 0
- * triggers placex_update and osmline_update
-*/
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <pthread.h>
-#include <time.h>
-#include <stdint.h>
-
-#include <libpq-fe.h>
-
-#include "nominatim.h"
-#include "index.h"
-#include "export.h"
-#include "postgresql.h"
-
-extern int verbose;
-
-void run_indexing(int rank, int interpolation, PGconn *conn, int num_threads, 
-struct index_thread_data * thread_data, const char *structuredoutputfile)
-{
-    int tuples, count, sleepcount;
-    pthread_mutex_t count_mutex = PTHREAD_MUTEX_INITIALIZER;
-    
-    time_t rankStartTime;
-    int rankTotalTuples;
-    int rankCountTuples;
-    float rankPerSecond;
-    
-    PGresult * resSectors;
-    PGresult * resPlaces;
-    PGresult * resNULL;
-    
-    int i;
-    int iSector;
-    int iResult;
-    
-    const char *paramValues[2];
-    int         paramLengths[2];
-    int         paramFormats[2];
-    uint32_t    paramRank;
-    uint32_t    paramSector;
-    uint32_t    sector;
-    
-    xmlTextWriterPtr writer;
-    pthread_mutex_t writer_mutex = PTHREAD_MUTEX_INITIALIZER;
-    
-    // Create the output file
-    writer = NULL;
-    if (structuredoutputfile)
-    {
-        writer = nominatim_exportXMLStart(structuredoutputfile);
-    }
-    
-    if (interpolation)
-    {
-        fprintf(stderr, "Starting interpolation lines (location_property_osmline)\n");
-    }
-    else
-    {
-        fprintf(stderr, "Starting rank %d\n", rank);
-    }
-    
-    rankCountTuples = 0;
-    rankPerSecond = 0;
-
-    paramRank = PGint32(rank);
-    paramValues[0] = (char *)&paramRank;
-    paramLengths[0] = sizeof(paramRank);
-    paramFormats[0] = 1;
-    
-    if (interpolation)
-    {
-        resSectors = PQexecPrepared(conn, "index_sectors_osmline", 0, NULL, 0, NULL, 1);
-    }
-    else
-    {
-        resSectors = PQexecPrepared(conn, "index_sectors", 1, paramValues, paramLengths, paramFormats, 1);
-    }
-    if (PQresultStatus(resSectors) != PGRES_TUPLES_OK)
-    {
-        fprintf(stderr, "index_sectors: SELECT failed: %s", PQerrorMessage(conn));
-        PQclear(resSectors);
-        exit(EXIT_FAILURE);
-    }
-    if (PQftype(resSectors, 0) != PG_OID_INT4)
-    {
-        fprintf(stderr, "Sector value has unexpected type\n");
-        PQclear(resSectors);
-        exit(EXIT_FAILURE);
-    }
-    if (PQftype(resSectors, 1) != PG_OID_INT8)
-    {
-        fprintf(stderr, "Sector value has unexpected type\n");
-        PQclear(resSectors);
-        exit(EXIT_FAILURE);
-    }
-    
-    rankTotalTuples = 0;
-    for (iSector = 0; iSector < PQntuples(resSectors); iSector++)
-    {
-        rankTotalTuples += PGint64(*((uint64_t *)PQgetvalue(resSectors, iSector, 1)));
-    }
-
-    rankStartTime = time(0);
-    for (iSector = 0; iSector <= PQntuples(resSectors); iSector++)
-    {
-        if (iSector > 0)
-        {
-            resPlaces = PQgetResult(conn);
-            if (PQresultStatus(resPlaces) != PGRES_TUPLES_OK)
-            {
-                fprintf(stderr, "index_sector_places: SELECT failed: %s", PQerrorMessage(conn));
-                PQclear(resPlaces);
-                exit(EXIT_FAILURE);
-            }
-            if (PQftype(resPlaces, 0) != PG_OID_INT8)
-            {
-                fprintf(stderr, "Place_id value has unexpected type\n");
-                PQclear(resPlaces);
-                exit(EXIT_FAILURE);
-            }
-            resNULL = PQgetResult(conn);
-            if (resNULL != NULL)
-            {
-                fprintf(stderr, "Unexpected non-null response\n");
-                exit(EXIT_FAILURE);
-            }
-        }
-
-        if (iSector < PQntuples(resSectors))
-        {
-            sector = PGint32(*((uint32_t *)PQgetvalue(resSectors, iSector, 0)));
-//                fprintf(stderr, "\n Starting sector %d size %ld\n", sector, PGint64(*((uint64_t *)PQgetvalue(resSectors, iSector, 1))));
-
-            // Get all the place_id's for this sector
-            paramRank = PGint32(rank);
-            paramSector = PGint32(sector);
-            if (rankTotalTuples-rankCountTuples < num_threads*1000)
-            {
-                // no sectors
-                if (interpolation)
-                {
-                    iResult = PQsendQueryPrepared(conn, "index_nosector_places_osmline", 0, NULL, 0, NULL, 1);
-                }
-                else
-                {
-                    paramValues[0] = (char *)&paramRank;
-                    paramLengths[0] = sizeof(paramRank);
-                    paramFormats[0] = 1;
-                    iResult = PQsendQueryPrepared(conn, "index_nosector_places", 1, paramValues, paramLengths, paramFormats, 1);
-                }
-            }
-            else
-            {
-                if (interpolation)
-                {
-                    iResult = PQsendQueryPrepared(conn, "index_sector_places_osmline", 1, paramValues, paramLengths, paramFormats, 1);
-                    paramValues[0] = (char *)&paramSector;
-                    paramLengths[0] = sizeof(paramSector);
-                    paramFormats[0] = 1;
-                }
-                else
-                {
-                    paramValues[0] = (char *)&paramRank;
-                    paramLengths[0] = sizeof(paramRank);
-                    paramFormats[0] = 1;
-                    paramValues[1] = (char *)&paramSector;
-                    paramLengths[1] = sizeof(paramSector);
-                    paramFormats[1] = 1;
-                    iResult = PQsendQueryPrepared(conn, "index_sector_places", 2, paramValues, paramLengths, paramFormats, 1);
-                }
-            }
-            if (!iResult)
-            {
-                fprintf(stderr, "index_sector_places: SELECT failed: %s", PQerrorMessage(conn));
-                PQclear(resPlaces);
-                exit(EXIT_FAILURE);
-            }
-        }
-        if (iSector > 0)
-        {
-            count = 0;
-            rankPerSecond = 0;
-            tuples = PQntuples(resPlaces);
-
-            if (tuples > 0)
-            {
-                // Spawn threads
-                for (i = 0; i < num_threads; i++)
-                {
-                    thread_data[i].res = resPlaces;
-                    thread_data[i].tuples = tuples;
-                    thread_data[i].count = &count;
-                    thread_data[i].count_mutex = &count_mutex;
-                    thread_data[i].writer = writer;
-                    thread_data[i].writer_mutex = &writer_mutex;
-                    if (interpolation)
-                    {
-                        thread_data[i].table = 0;  // use interpolations table
-                    }
-                    else
-                    {
-                        thread_data[i].table = 1;  // use placex table
-                    }
-                    pthread_create(&thread_data[i].thread, NULL, &nominatim_indexThread, (void *)&thread_data[i]);
-                }
-
-                // Monitor threads to give user feedback
-                sleepcount = 0;
-                while (count < tuples)
-                {
-                    usleep(1000);
-
-                    // Aim for one update per second
-                    if (sleepcount++ > 1000)
-                    {
-                        rankPerSecond = ((float)rankCountTuples + (float)count) / MAX(difftime(time(0), rankStartTime),1);
-                        if(interpolation)
-                        {
-                            fprintf(stderr, "  Done %i in %i @ %f per second - Interpolation lines ETA (seconds): %f\n", (rankCountTuples + count), (int)(difftime(time(0), rankStartTime)), rankPerSecond, ((float)(rankTotalTuples - (rankCountTuples + count)))/rankPerSecond);
-                        }
-                        else
-                        {
-                            fprintf(stderr, "  Done %i in %i @ %f per second - Rank %i ETA (seconds): %f\n", (rankCountTuples + count), (int)(difftime(time(0), rankStartTime)), rankPerSecond, rank, ((float)(rankTotalTuples - (rankCountTuples + count)))/rankPerSecond);
-                        }
-                        
-                        sleepcount = 0;
-                    }
-                }
-
-                // Wait for everything to finish
-                for (i = 0; i < num_threads; i++)
-                {
-                    pthread_join(thread_data[i].thread, NULL);
-                }
-
-                rankCountTuples += tuples;
-            }
-
-            // Finished sector
-            rankPerSecond = (float)rankCountTuples / MAX(difftime(time(0), rankStartTime),1);
-            fprintf(stderr, "  Done %i in %i @ %f per second - ETA (seconds): %f\n", rankCountTuples, (int)(difftime(time(0), rankStartTime)), rankPerSecond, ((float)(rankTotalTuples - rankCountTuples))/rankPerSecond);
-
-            PQclear(resPlaces);
-        }
-        if (rankTotalTuples-rankCountTuples < num_threads*20 && iSector < PQntuples(resSectors))
-        {
-            iSector = PQntuples(resSectors) - 1;
-        }
-    }
-    // Finished rank
-    fprintf(stderr, "\r  Done %i in %i @ %f per second - FINISHED\n\n", rankCountTuples, (int)(difftime(time(0), rankStartTime)), rankPerSecond);
-
-    PQclear(resSectors);
-}
-
-void nominatim_index(int rank_min, int rank_max, int num_threads, const char *conninfo, const char *structuredoutputfile)
-{
-    struct index_thread_data *thread_data;
-
-    PGconn *conn;
-    PGresult *res;
-    int num_rows = 0, status_code = 0;
-    int db_has_locale = 0;
-    char *result_string = NULL;
-
-    int rank;
-
-    int i;
-
-    xmlTextWriterPtr writer;
-    pthread_mutex_t writer_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-    Oid pg_prepare_params[2];
-
-    conn = PQconnectdb(conninfo);
-    if (PQstatus(conn) != CONNECTION_OK)
-    {
-        fprintf(stderr, "Connection to database failed: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-
-    res = PQexec(conn, "SHOW lc_messages");
-    status_code = PQresultStatus(res);
-    if (status_code != PGRES_TUPLES_OK && status_code != PGRES_SINGLE_TUPLE) {
-        fprintf(stderr, "Failed determining database locale: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    num_rows = PQntuples(res);
-    if (num_rows > 0)
-    {
-        result_string = PQgetvalue(res, 0, 0);
-        if (result_string && (strlen(result_string) > 0) && (strcasecmp(result_string, "C") != 0))
-        {
-            // non-default locale if the result exists, is non-empty, and is not "C"
-            db_has_locale = 1;
-        }
-    }
-
-    pg_prepare_params[0] = PG_OID_INT4;
-    res = PQprepare(conn, "index_sectors",
-                    "select geometry_sector,count(*) from placex where rank_search = $1 and indexed_status > 0 group by geometry_sector order by geometry_sector",
-                    1, pg_prepare_params);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed preparing index_sectors: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQclear(res);
-    
-    res = PQprepare(conn, "index_sectors_osmline",
-                    "select geometry_sector,count(*) from location_property_osmline where indexed_status > 0 group by geometry_sector order by geometry_sector",
-                    0, NULL);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed preparing index_sectors: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQclear(res);
-
-    pg_prepare_params[0] = PG_OID_INT4;
-    res = PQprepare(conn, "index_nosectors",
-                    "select 0::integer,count(*) from placex where rank_search = $1 and indexed_status > 0",
-                    1, pg_prepare_params);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed preparing index_sectors: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQclear(res);
-
-    pg_prepare_params[0] = PG_OID_INT4;
-    pg_prepare_params[1] = PG_OID_INT4;
-    res = PQprepare(conn, "index_sector_places",
-                    "select place_id from placex where rank_search = $1 and geometry_sector = $2 and indexed_status > 0",
-                    2, pg_prepare_params);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed preparing index_sector_places: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQclear(res);
-
-    pg_prepare_params[0] = PG_OID_INT4;
-    res = PQprepare(conn, "index_nosector_places",
-                    "select place_id from placex where rank_search = $1 and indexed_status > 0 order by geometry_sector",
-                    1, pg_prepare_params);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed preparing index_nosector_places: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQclear(res);
-    
-    pg_prepare_params[0] = PG_OID_INT4;
-    res = PQprepare(conn, "index_sector_places_osmline",
-                    "select place_id from location_property_osmline where geometry_sector = $1 and indexed_status > 0",
-                    1, pg_prepare_params);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed preparing index_sector_places: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQclear(res);
-    
-    res = PQprepare(conn, "index_nosector_places_osmline",
-                    "select place_id from location_property_osmline where indexed_status > 0 order by geometry_sector",
-                    0, NULL);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-    {
-        fprintf(stderr, "Failed preparing index_nosector_places: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQclear(res);
-    
-    // Build the data for each thread
-    thread_data = (struct index_thread_data *)malloc(sizeof(struct index_thread_data)*num_threads);
-    for (i = 0; i < num_threads; i++)
-    {
-        thread_data[i].conn = PQconnectdb(conninfo);
-        if (PQstatus(thread_data[i].conn) != CONNECTION_OK)
-        {
-            fprintf(stderr, "Connection to database failed: %s\n", PQerrorMessage(thread_data[i].conn));
-            exit(EXIT_FAILURE);
-        }
-
-        pg_prepare_params[0] = PG_OID_INT8;
-        res = PQprepare(thread_data[i].conn, "index_placex",
-                        "update placex set indexed_status = 0 where place_id = $1",
-                        1, pg_prepare_params);
-        if (PQresultStatus(res) != PGRES_COMMAND_OK)
-        {
-            fprintf(stderr, "Failed preparing index_placex: %s\n", PQerrorMessage(thread_data[i].conn));
-            exit(EXIT_FAILURE);
-        }
-        PQclear(res);
-        
-        pg_prepare_params[0] = PG_OID_INT8;
-        res = PQprepare(thread_data[i].conn, "index_osmline",
-                        "update location_property_osmline set indexed_status = 0 where place_id = $1",
-                        1, pg_prepare_params);
-        if (PQresultStatus(res) != PGRES_COMMAND_OK)
-        {
-            fprintf(stderr, "Failed preparing index_osmline: %s\n", PQerrorMessage(thread_data[i].conn));
-            exit(EXIT_FAILURE);
-        }
-        PQclear(res);
-
-        if (db_has_locale)
-        {
-            // Make sure the error message is not localized as we parse it later.
-            res = PQexec(thread_data[i].conn, "SET lc_messages TO 'C'");
-            if (PQresultStatus(res) != PGRES_COMMAND_OK)
-            {
-                fprintf(stderr, "Failed to set langauge: %s\n", PQerrorMessage(thread_data[i].conn));
-                exit(EXIT_FAILURE);
-            }
-            PQclear(res);
-        }
-        nominatim_exportCreatePreparedQueries(thread_data[i].conn);
-    }
-
-    fprintf(stderr, "Starting indexing rank (%i to %i) using %i threads\n", rank_min, rank_max, num_threads);
-
-    for (rank = rank_min; rank <= rank_max; rank++)
-    {
-        // OSMLINE: do reindexing (=> reparenting) for interpolation lines at rank 30, but before all other objects of rank 30
-        // reason: houses (rank 30) depend on the updated interpolation line, when reparenting (see placex_update in functions.sql)
-        if (rank == 30)
-        {
-            run_indexing(rank, 1, conn, num_threads, thread_data, structuredoutputfile);
-        }
-        run_indexing(rank, 0, conn, num_threads, thread_data, structuredoutputfile);
-    }
-       // Close all connections
-       for (i = 0; i < num_threads; i++)
-       {
-               PQfinish(thread_data[i].conn);
-       }
-       PQfinish(conn);
-}
-
-void *nominatim_indexThread(void * thread_data_in)
-{
-    struct index_thread_data * thread_data = (struct index_thread_data * )thread_data_in;
-    struct export_data querySet;
-
-    PGresult   *res;
-
-    const char  *paramValues[1];
-    int         paramLengths[1];
-    int         paramFormats[1];
-    uint64_t    paramPlaceID;
-    uint64_t    place_id;
-    time_t      updateStartTime;
-    unsigned    table;
-    
-    table = thread_data->table;
-
-    while (1)
-    {
-        pthread_mutex_lock( thread_data->count_mutex );
-        if (*(thread_data->count) >= thread_data->tuples)
-        {
-            pthread_mutex_unlock( thread_data->count_mutex );
-            break;
-        }
-
-        place_id = PGint64(*((uint64_t *)PQgetvalue(thread_data->res, *thread_data->count, 0)));
-        (*thread_data->count)++;
-
-        pthread_mutex_unlock( thread_data->count_mutex );
-
-        if (verbose) fprintf(stderr, "  Processing place_id %ld\n", place_id);
-
-        updateStartTime = time(0);
-        int done = 0;
-
-        if (thread_data->writer)
-        {
-             nominatim_exportPlaceQueries(place_id, thread_data->conn, &querySet);
-        }
-
-        while(!done)
-        {
-            paramPlaceID = PGint64(place_id);
-            paramValues[0] = (char *)&paramPlaceID;
-            paramLengths[0] = sizeof(paramPlaceID);
-            paramFormats[0] = 1;
-            if (table == 1) // table=1 for placex
-            {
-                res = PQexecPrepared(thread_data->conn, "index_placex", 1, paramValues, paramLengths, paramFormats, 1);
-            }
-            else // table=0 for osmline
-            {
-                res = PQexecPrepared(thread_data->conn, "index_osmline", 1, paramValues, paramLengths, paramFormats, 1);
-            }
-            if (PQresultStatus(res) == PGRES_COMMAND_OK)
-                done = 1;
-            else
-            {
-                if (!strncmp(PQerrorMessage(thread_data->conn), "ERROR:  deadlock detected", 25))
-                {
-                    if (table == 1)
-                    {
-                        fprintf(stderr, "index_placex: UPDATE failed - deadlock, retrying (%ld)\n", place_id);
-                    }
-                    else
-                    {
-                        fprintf(stderr, "index_osmline: UPDATE failed - deadlock, retrying (%ld)\n", place_id);
-                    }
-                    PQclear(res);
-                    sleep(rand() % 10);
-                }
-                else
-                {
-                    if (table == 1)
-                    {
-                        fprintf(stderr, "index_placex: UPDATE failed: %s", PQerrorMessage(thread_data->conn));
-                    }
-                    else
-                    {
-                        fprintf(stderr, "index_osmline: UPDATE failed: %s", PQerrorMessage(thread_data->conn));
-                    }
-                    PQclear(res);
-                    exit(EXIT_FAILURE);
-                }
-            }
-        }
-        PQclear(res);
-        if (difftime(time(0), updateStartTime) > 1) fprintf(stderr, "  Slow place_id %ld\n", place_id);
-
-        if (thread_data->writer)
-        {
-            nominatim_exportPlace(place_id, thread_data->conn, thread_data->writer, thread_data->writer_mutex, &querySet);
-            nominatim_exportFreeQueries(&querySet);
-        }
-    }
-
-    return NULL;
-}
diff --git a/nominatim/index.h b/nominatim/index.h
deleted file mode 100644 (file)
index e575954..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef INDEX_H
-#define INDEX_H
-
-#include <libxml/encoding.h>
-#include <libxml/xmlwriter.h>
-
-struct index_thread_data
-{
-    pthread_t thread;
-    PGconn * conn;
-    PGresult * res;
-    int tuples;
-    int * count;
-    pthread_mutex_t * count_mutex;
-    xmlTextWriterPtr writer;
-    pthread_mutex_t * writer_mutex;
-    unsigned table;
-};
-void nominatim_index(int rank_min, int rank_max, int num_threads, const char *conninfo, const char *structuredoutputfile);
-void *nominatim_indexThread(void * thread_data_in);
-
-#endif
diff --git a/nominatim/input.c b/nominatim/input.c
deleted file mode 100644 (file)
index 1d53b49..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-#define _FILE_OFFSET_BITS 64
-#define _LARGEFILE64_SOURCE
-
-#ifdef __MINGW_H
-# include <windows.h>
-#else
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <zlib.h>
-#endif
-
-#include <libxml/xmlreader.h>
-#include <bzlib.h>
-
-#include "input.h"
-
-struct Input
-{
-    char *name;
-    enum { plainFile, gzipFile, bzip2File } type;
-    void *fileHandle;
-    // needed by bzip2 when decompressing from multiple streams. other
-    // decompressors must ignore it.
-    FILE *systemHandle;
-    int eof;
-    char buf[4096];
-    int buf_ptr, buf_fill;
-};
-
-// tries to re-open the bz stream at the next stream start.
-// returns 0 on success, -1 on failure.
-int bzReOpen(struct Input *ctx, int *error)
-{
-    // for copying out the last unused part of the block which
-    // has an EOS token in it. needed for re-initialising the
-    // next stream.
-    unsigned char unused[BZ_MAX_UNUSED];
-    void *unused_tmp_ptr = NULL;
-    int nUnused, i;
-
-    BZ2_bzReadGetUnused(error, (BZFILE *)(ctx->fileHandle), &unused_tmp_ptr, &nUnused);
-    if (*error != BZ_OK) return -1;
-
-    // when bzReadClose is called the unused buffer is deallocated,
-    // so it needs to be copied somewhere safe first.
-    for (i = 0; i < nUnused; ++i)
-        unused[i] = ((unsigned char *)unused_tmp_ptr)[i];
-
-    BZ2_bzReadClose(error, (BZFILE *)(ctx->fileHandle));
-    if (*error != BZ_OK) return -1;
-
-    // reassign the file handle
-    ctx->fileHandle = BZ2_bzReadOpen(error, ctx->systemHandle, 0, 0, unused, nUnused);
-    if (ctx->fileHandle == NULL || *error != BZ_OK) return -1;
-
-    return 0;
-}
-
-int readFile(void *context, char * buffer, int len)
-{
-    struct Input *ctx = context;
-    void *f = ctx->fileHandle;
-    int l = 0, error = 0;
-
-    if (ctx->eof || (len == 0))
-        return 0;
-
-    switch (ctx->type)
-    {
-    case plainFile:
-        l = read(*(int *)f, buffer, len);
-        if (l <= 0) ctx->eof = 1;
-        break;
-    case gzipFile:
-        l = gzread((gzFile)f, buffer, len);
-        if (l <= 0) ctx->eof = 1;
-        break;
-    case bzip2File:
-        l = BZ2_bzRead(&error, (BZFILE *)f, buffer, len);
-
-        // error codes BZ_OK and BZ_STREAM_END are both "OK", but the stream
-        // end means the reader needs to be reset from the original handle.
-        if (error != BZ_OK)
-        {
-            // for stream errors, try re-opening the stream before admitting defeat.
-            if (error != BZ_STREAM_END || bzReOpen(ctx, &error) != 0)
-            {
-                l = 0;
-                ctx->eof = 1;
-            }
-        }
-        break;
-    default:
-        fprintf(stderr, "Bad file type\n");
-        break;
-    }
-
-    if (l < 0)
-    {
-        fprintf(stderr, "File reader received error %d (%d)\n", l, error);
-        l = 0;
-    }
-
-    return l;
-}
-
-char inputGetChar(void *context)
-{
-    struct Input *ctx = context;
-
-    if (ctx->buf_ptr == ctx->buf_fill)
-    {
-        ctx->buf_fill = readFile(context, &ctx->buf[0], sizeof(ctx->buf));
-        ctx->buf_ptr = 0;
-        if (ctx->buf_fill == 0)
-            return 0;
-        if (ctx->buf_fill < 0)
-        {
-            perror("Error while reading file");
-            exit(1);
-        }
-    }
-    //readFile(context, &c, 1);
-    return ctx->buf[ctx->buf_ptr++];
-}
-
-int inputEof(void *context)
-{
-    return ((struct Input *)context)->eof;
-}
-
-void *inputOpen(const char *name)
-{
-    const char *ext = strrchr(name, '.');
-    struct Input *ctx = malloc (sizeof(*ctx));
-
-    if (!ctx)
-        return NULL;
-
-    memset(ctx, 0, sizeof(*ctx));
-
-    ctx->name = strdup(name);
-
-    if (ext && !strcmp(ext, ".gz"))
-    {
-        ctx->fileHandle = (void *)gzopen(name, "rb");
-        ctx->type = gzipFile;
-    }
-    else if (ext && !strcmp(ext, ".bz2"))
-    {
-        int error = 0;
-        ctx->systemHandle = fopen(name, "rb");
-        if (!ctx->systemHandle)
-        {
-            fprintf(stderr, "error while opening file %s\n", name);
-            exit(10);
-        }
-
-        ctx->fileHandle = (void *)BZ2_bzReadOpen(&error, ctx->systemHandle, 0, 0, NULL, 0);
-        ctx->type = bzip2File;
-
-    }
-    else
-    {
-        int *pfd = malloc(sizeof(pfd));
-        if (pfd)
-        {
-            if (!strcmp(name, "-"))
-            {
-                *pfd = STDIN_FILENO;
-            }
-            else
-            {
-                int flags = O_RDONLY;
-#ifdef O_LARGEFILE
-                flags |= O_LARGEFILE;
-#endif
-                *pfd = open(name, flags);
-                if (*pfd < 0)
-                {
-                    free(pfd);
-                    pfd = NULL;
-                }
-            }
-        }
-        ctx->fileHandle = (void *)pfd;
-        ctx->type = plainFile;
-    }
-    if (!ctx->fileHandle)
-    {
-        fprintf(stderr, "error while opening file %s\n", name);
-        exit(10);
-    }
-    ctx->buf_ptr = 0;
-    ctx->buf_fill = 0;
-    return (void *)ctx;
-}
-
-int inputClose(void *context)
-{
-    struct Input *ctx = context;
-    void *f = ctx->fileHandle;
-
-    switch (ctx->type)
-    {
-    case plainFile:
-        close(*(int *)f);
-        free(f);
-        break;
-    case gzipFile:
-        gzclose((gzFile)f);
-        break;
-    case bzip2File:
-        BZ2_bzclose((BZFILE *)f);
-        break;
-    default:
-        fprintf(stderr, "Bad file type\n");
-        break;
-    }
-
-    free(ctx->name);
-    free(ctx);
-    return 0;
-}
-
-xmlTextReaderPtr inputUTF8(const char *name)
-{
-    void *ctx = inputOpen(name);
-
-    if (!ctx)
-    {
-        fprintf(stderr, "Input reader create failed for: %s\n", name);
-        return NULL;
-    }
-
-    return xmlReaderForIO(readFile, inputClose, (void *)ctx, NULL, NULL, 0);
-}
diff --git a/nominatim/input.h b/nominatim/input.h
deleted file mode 100644 (file)
index de5f802..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef INPUT_H
-#define INPUT_H
-
-int readFile(void *context, char * buffer, int len);
-int inputClose(void *context);
-void *inputOpen(const char *name);
-char inputGetChar(void *context);
-int inputEof(void *context);
-xmlTextReaderPtr inputUTF8(const char *name);
-
-#endif
diff --git a/nominatim/nominatim.c b/nominatim/nominatim.c
deleted file mode 100644 (file)
index 1771be2..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
-#-----------------------------------------------------------------------------
-# nominatim - [description]
-#-----------------------------------------------------------------------------
-# Copyright 2010, Brian Quinion
-# Based on osm2pgsql
-#
-# 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.
-#-----------------------------------------------------------------------------
-*/
-
-#define _GNU_SOURCE
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <getopt.h>
-#include <libgen.h>
-#include <pthread.h>
-#include <time.h>
-
-#include <libpq-fe.h>
-
-#include "nominatim.h"
-#include "postgresql.h"
-#include "sprompt.h"
-#include "index.h"
-#include "export.h"
-#include "import.h"
-
-int verbose;
-
-void exit_nicely(void)
-{
-    fprintf(stderr, "Error occurred, cleaning up\n");
-    exit(1);
-}
-
-void short_usage(char *arg0)
-{
-    const char *name = basename(arg0);
-
-    fprintf(stderr, "Usage error. For further information see:\n");
-    fprintf(stderr, "\t%s -h|--help\n", name);
-}
-
-static void long_usage(char *arg0)
-{
-    const char *name = basename(arg0);
-
-    fprintf(stderr, "Usage:\n");
-    fprintf(stderr, "\t%s [options] planet.osms\n", name);
-    fprintf(stderr, "\nThis will import the structured osm data into a PostgreSQL database\n");
-    fprintf(stderr, "suitable for nominatim search engine\n");
-    fprintf(stderr, "\nOptions:\n");
-    fprintf(stderr, "   -d|--database\tThe name of the PostgreSQL database to connect\n");
-    fprintf(stderr, "                \tto (default: nominatim).\n");
-    fprintf(stderr, "   -U|--username\tPostgresql user name.\n");
-    fprintf(stderr, "   -W|--password\tForce password prompt.\n");
-    fprintf(stderr, "   -H|--host\t\tDatabase server hostname or socket location.\n");
-    fprintf(stderr, "   -P|--port\t\tDatabase server port.\n");
-    fprintf(stderr, "   -i|--index\t\tIndex the database.\n");
-    fprintf(stderr, "   -e|--export\t\tGenerate a structured file.\n");
-    fprintf(stderr, "   -I|--import\t\tImport a structured file.\n");
-    fprintf(stderr, "   -r|--minrank\t\tMinimum / starting rank. (default: 0))\n");
-    fprintf(stderr, "   -R|--maxrank\t\tMaximum / finishing rank. (default: 30)\n");
-    fprintf(stderr, "   -t|--threads\t\tNumber of threads to create for indexing.\n");
-    fprintf(stderr, "   -F|--file\t\tfile to use (either to import or export).\n");
-    fprintf(stderr, "   -T|--tagfile\t\tfile containing 'special' tag pairs\n");
-    fprintf(stderr, "                \t(default: partitionedtags.def).\n");
-    fprintf(stderr, "   -h|--help\t\tHelp information.\n");
-    fprintf(stderr, "   -v|--verbose\t\tVerbose output.\n");
-    fprintf(stderr, "\n");
-
-    if (sizeof(int*) == 4)
-    {
-        fprintf(stderr, "\n\nYou are running this on 32bit system - this will not work\n");
-    }
-}
-
-int main(int argc, char *argv[])
-{
-    int long_usage_bool=0;
-    int pass_prompt=0;
-    const char *db = "nominatim";
-    const char *username=NULL;
-    const char *host=NULL;
-    const char *password=NULL;
-    const char *port = "5432";
-    const char *conninfo = NULL;
-    int index = 0;
-    int export = 0;
-    int import = 0;
-    int minrank = 0;
-    int maxrank = 30;
-    int threads = 1;
-    const char *file = NULL;
-    const char *tagsfile = "partitionedtags.def";
-
-    //import = 1;
-    //structuredinputfile = "out.osms";
-
-    PGconn *conn;
-
-    fprintf(stderr, "nominatim version %s\n\n", NOMINATIM_VERSION);
-
-    while (1)
-    {
-        int c, option_index = 0;
-        static struct option long_options[] =
-        {
-            {"help",     0, 0, 'h'},
-
-            {"verbose",  0, 0, 'v'},
-
-            {"database", 1, 0, 'd'},
-            {"username", 1, 0, 'U'},
-            {"password", 0, 0, 'W'},
-            {"host",     1, 0, 'H'},
-            {"port",     1, 0, 'P'},
-
-            {"index",  0, 0, 'i'},
-            {"export",  0, 0, 'e'},
-            {"import",  1, 0, 'I'},
-            {"threads",  1, 0, 't'},
-            {"file",  1, 0, 'F'},
-            {"tagsfile",  1, 0, 'T'},
-
-            {"minrank",  1, 0, 'r'},
-            {"maxrank",  1, 0, 'R'},
-
-
-
-            {0, 0, 0, 0}
-        };
-
-        c = getopt_long(argc, argv, "vhd:U:WH:P:ieIt:F:T:r:R:", long_options, &option_index);
-        if (c == -1)
-            break;
-
-        switch (c)
-        {
-        case 'v':
-            verbose=1;
-            break;
-        case 'd':
-            db=optarg;
-            break;
-        case 'U':
-            username=optarg;
-            break;
-        case 'W':
-            pass_prompt=1;
-            break;
-        case 'H':
-            host=optarg;
-            break;
-        case 'P':
-            port=optarg;
-            break;
-        case 'h':
-            long_usage_bool=1;
-            break;
-        case 'i':
-            index=1;
-            break;
-        case 'e':
-            export=1;
-            break;
-        case 'I':
-            import=1;
-            break;
-        case 't':
-            threads=atoi(optarg);
-            break;
-        case 'r':
-            minrank=atoi(optarg);
-            break;
-        case 'R':
-            maxrank=atoi(optarg);
-            break;
-        case 'F':
-            file=optarg;
-            break;
-        case 'T':
-            tagsfile=optarg;
-            break;
-        case '?':
-        default:
-            short_usage(argv[0]);
-            exit(EXIT_FAILURE);
-        }
-    }
-
-    if (long_usage_bool)
-    {
-        long_usage(argv[0]);
-        exit(EXIT_FAILURE);
-    }
-
-    if (threads < 1) threads = 1;
-
-    /*
-        if (argc == optind) {  // No non-switch arguments
-            short_usage(argv[0]);
-            exit(EXIT_FAILURE);
-        }
-    */
-    if (index && import)
-    {
-        fprintf(stderr, "Error: --index and --import options can not be used on the same database!\n");
-        exit(EXIT_FAILURE);
-    }
-
-    if (pass_prompt)
-        password = simple_prompt("Password:", 100, 0);
-    else
-    {
-        password = getenv("PGPASS");
-    }
-
-    // Test the database connection
-    conninfo = build_conninfo(db, username, password, host, port);
-    conn = PQconnectdb(conninfo);
-    if (PQstatus(conn) != CONNECTION_OK)
-    {
-        fprintf(stderr, "Connection to database failed: %s\n", PQerrorMessage(conn));
-        exit(EXIT_FAILURE);
-    }
-    PQfinish(conn);
-
-    if (!index && !export && !import)
-    {
-        fprintf(stderr, "Please select index, export or import.\n");
-        exit(EXIT_FAILURE);
-    }
-    if (index) nominatim_index(minrank, maxrank, threads, conninfo, file);
-    if (export) nominatim_export(minrank, maxrank, conninfo, file);
-    if (import) nominatim_import(conninfo, tagsfile, file);
-
-    return 0;
-}
diff --git a/nominatim/nominatim.h b/nominatim/nominatim.h
deleted file mode 100644 (file)
index a98f3bf..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef NOMINATIM_H
-#define NOMINATIM_H
-
-#define MAX(x,y) (x > y?x:y)
-#define MIN(x,y) (x < y?x:y)
-
-struct output_options
-{
-    const char *conninfo;  /* Connection info string */
-    const char *prefix;    /* prefix for table names */
-    int scale;       /* scale for converting coordinates to fixed point */
-    int projection;  /* SRS of projection */
-    int append;      /* Append to existing data */
-    int slim;        /* In slim mode */
-    int cache;       /* Memory usable for cache in MB */
-    struct middle_t *mid;  /* Mid storage to use */
-    const char *tblsindex;     /* Pg Tablespace to store indexes */
-    const char *style;     /* style file to use */
-    int expire_tiles_zoom;        /* Zoom level for tile expiry list */
-    int expire_tiles_zoom_min;    /* Minimum zoom level for tile expiry list */
-    const char *expire_tiles_filename;    /* File name to output expired tiles list to */
-    int enable_hstore; /* add an additional hstore column with objects key/value pairs */
-    int enable_multi; /* Output multi-geometries instead of several simple geometries */
-    char** hstore_columns; /* list of columns that should be written into their own hstore column */
-    int n_hstore_columns; /* number of hstore columns */
-};
-
-void exit_nicely(void);
-void short_usage(char *arg0);
-
-#endif
diff --git a/nominatim/nominatim.py b/nominatim/nominatim.py
new file mode 100755 (executable)
index 0000000..0db0777
--- /dev/null
@@ -0,0 +1,361 @@
+#! /usr/bin/env python3
+#-----------------------------------------------------------------------------
+# nominatim - [description]
+#-----------------------------------------------------------------------------
+#
+# Indexing tool for the Nominatim database.
+#
+# Based on C version by Brian Quinion
+#
+# 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.
+#-----------------------------------------------------------------------------
+
+from argparse import ArgumentParser, RawDescriptionHelpFormatter, ArgumentTypeError
+import logging
+import sys
+import re
+import getpass
+from datetime import datetime
+import psycopg2
+from psycopg2.extras import wait_select
+import select
+
+log = logging.getLogger()
+
+def make_connection(options, asynchronous=False):
+    params = {'dbname' : options.dbname,
+              'user' : options.user,
+              'password' : options.password,
+              'host' : options.host,
+              'port' : options.port,
+              'async' : asynchronous}
+
+    return psycopg2.connect(**params)
+
+
+class RankRunner(object):
+    """ Returns SQL commands for indexing one rank within the placex table.
+    """
+
+    def __init__(self, rank):
+        self.rank = rank
+
+    def name(self):
+        return "rank {}".format(self.rank)
+
+    def sql_index_sectors(self):
+        return """SELECT geometry_sector, count(*) FROM placex
+                  WHERE rank_search = {} and indexed_status > 0
+                  GROUP BY geometry_sector
+                  ORDER BY geometry_sector""".format(self.rank)
+
+    def sql_nosector_places(self):
+        return """SELECT place_id FROM placex
+                  WHERE indexed_status > 0 and rank_search = {}
+                  ORDER BY geometry_sector""".format(self.rank)
+
+    def sql_sector_places(self):
+        return """SELECT place_id FROM placex
+                  WHERE indexed_status > 0 and rank_search = {}
+                        and geometry_sector = %s""".format(self.rank)
+
+    def sql_index_place(self):
+        return "UPDATE placex SET indexed_status = 0 WHERE place_id = %s"
+
+
+class InterpolationRunner(object):
+    """ Returns SQL commands for indexing the address interpolation table
+        location_property_osmline.
+    """
+
+    def name(self):
+        return "interpolation lines (location_property_osmline)"
+
+    def sql_index_sectors(self):
+        return """SELECT geometry_sector, count(*) FROM location_property_osmline
+                  WHERE indexed_status > 0
+                  GROUP BY geometry_sector
+                  ORDER BY geometry_sector"""
+
+    def sql_nosector_places(self):
+        return """SELECT place_id FROM location_property_osmline
+                  WHERE indexed_status > 0
+                  ORDER BY geometry_sector"""
+
+    def sql_sector_places(self):
+        return """SELECT place_id FROM location_property_osmline
+                  WHERE indexed_status > 0 and geometry_sector = %s
+                  ORDER BY geometry_sector"""
+
+    def sql_index_place(self):
+        return """UPDATE location_property_osmline
+                  SET indexed_status = 0 WHERE place_id = %s"""
+
+
+class DBConnection(object):
+    """ A single non-blocking database connection.
+    """
+
+    def __init__(self, options):
+        self.current_query = None
+        self.current_params = None
+
+        self.conn = None
+        self.connect()
+
+    def connect(self):
+        if self.conn is not None:
+            self.cursor.close()
+            self.conn.close()
+
+        self.conn = make_connection(options, asynchronous=True)
+        self.wait()
+
+        self.cursor = self.conn.cursor()
+
+    def wait(self):
+        """ Block until any pending operation is done.
+        """
+        while True:
+            try:
+                wait_select(self.conn)
+                self.current_query = None
+                return
+            except psycopg2.extensions.TransactionRollbackError as e:
+                if e.pgcode == '40P01':
+                    log.info("Deadlock detected (params = {}), retry."
+                              .format(self.current_params))
+                    self.cursor.execute(self.current_query, self.current_params)
+                else:
+                    raise
+            except psycopg2.errors.DeadlockDetected:
+                self.cursor.execute(self.current_query, self.current_params)
+
+    def perform(self, sql, args=None):
+        """ Send SQL query to the server. Returns immediately without
+            blocking.
+        """
+        self.current_query = sql
+        self.current_params = args
+        self.cursor.execute(sql, args)
+
+    def fileno(self):
+        """ File descriptor to wait for. (Makes this class select()able.)
+        """
+        return self.conn.fileno()
+
+    def is_done(self):
+        """ Check if the connection is available for a new query.
+
+            Also checks if the previous query has run into a deadlock.
+            If so, then the previous query is repeated.
+        """
+        if self.current_query is None:
+            return True
+
+        try:
+            if self.conn.poll() == psycopg2.extensions.POLL_OK:
+                self.current_query = None
+                return True
+        except psycopg2.extensions.TransactionRollbackError as e:
+            if e.pgcode == '40P01':
+                log.info("Deadlock detected (params = {}), retry.".format(self.current_params))
+                self.cursor.execute(self.current_query, self.current_params)
+            else:
+                raise
+        except psycopg2.errors.DeadlockDetected:
+            self.cursor.execute(self.current_query, self.current_params)
+
+        return False
+
+
+class Indexer(object):
+    """ Main indexing routine.
+    """
+
+    def __init__(self, options):
+        self.minrank = max(0, options.minrank)
+        self.maxrank = min(30, options.maxrank)
+        self.conn = make_connection(options)
+        self.threads = [DBConnection(options) for i in range(options.threads)]
+
+    def run(self):
+        """ Run indexing over the entire database.
+        """
+        log.warning("Starting indexing rank ({} to {}) using {} threads".format(
+                 self.minrank, self.maxrank, len(self.threads)))
+
+        for rank in range(self.minrank, self.maxrank):
+            self.index(RankRunner(rank))
+
+        if self.maxrank == 30:
+            self.index(InterpolationRunner())
+
+        self.index(RankRunner(self.maxrank))
+
+    def index(self, obj):
+        """ Index a single rank or table. `obj` describes the SQL to use
+            for indexing.
+        """
+        log.warning("Starting {}".format(obj.name()))
+
+        cur = self.conn.cursor(name='main')
+        cur.execute(obj.sql_index_sectors())
+
+        total_tuples = 0
+        for r in cur:
+            total_tuples += r[1]
+        log.debug("Total number of rows; {}".format(total_tuples))
+
+        cur.scroll(0, mode='absolute')
+
+        next_thread = self.find_free_thread()
+        done_tuples = 0
+        rank_start_time = datetime.now()
+
+        sector_sql = obj.sql_sector_places()
+        index_sql = obj.sql_index_place()
+        min_grouped_tuples = total_tuples - len(self.threads) * 1000
+
+        next_info = 100 if log.isEnabledFor(logging.INFO) else total_tuples + 1
+
+        for r in cur:
+            sector = r[0]
+
+            # Should we do the remaining ones together?
+            do_all = done_tuples > min_grouped_tuples
+
+            pcur = self.conn.cursor(name='places')
+
+            if do_all:
+                pcur.execute(obj.sql_nosector_places())
+            else:
+                pcur.execute(sector_sql, (sector, ))
+
+            for place in pcur:
+                place_id = place[0]
+                log.debug("Processing place {}".format(place_id))
+                thread = next(next_thread)
+
+                thread.perform(index_sql, (place_id,))
+                done_tuples += 1
+
+                if done_tuples >= next_info:
+                    now = datetime.now()
+                    done_time = (now - rank_start_time).total_seconds()
+                    tuples_per_sec = done_tuples / done_time
+                    log.info("Done {} in {} @ {:.3f} per second - {} ETA (seconds): {:.2f}"
+                           .format(done_tuples, int(done_time),
+                                   tuples_per_sec, obj.name(),
+                                   (total_tuples - done_tuples)/tuples_per_sec))
+                    next_info += int(tuples_per_sec)
+
+            pcur.close()
+
+            if do_all:
+                break
+
+        cur.close()
+
+        for t in self.threads:
+            t.wait()
+
+        rank_end_time = datetime.now()
+        diff_seconds = (rank_end_time-rank_start_time).total_seconds()
+
+        log.warning("Done {}/{} in {} @ {:.3f} per second - FINISHED {}\n".format(
+                 done_tuples, total_tuples, int(diff_seconds),
+                 done_tuples/diff_seconds, obj.name()))
+
+    def find_free_thread(self):
+        """ Generator that returns the next connection that is free for
+            sending a query.
+        """
+        ready = self.threads
+        command_stat = 0
+
+        while True:
+            for thread in ready:
+                if thread.is_done():
+                    command_stat += 1
+                    yield thread
+
+            # refresh the connections occasionaly to avoid potential
+            # memory leaks in Postgresql.
+            if command_stat > 100000:
+                for t in self.threads:
+                    while not t.is_done():
+                        wait_select(t.conn)
+                    t.connect()
+                command_stat = 0
+                ready = self.threads
+            else:
+                ready, _, _ = select.select(self.threads, [], [])
+
+        assert False, "Unreachable code"
+
+
+def nominatim_arg_parser():
+    """ Setup the command-line parser for the tool.
+    """
+    def h(s):
+        return re.sub("\s\s+" , " ", s)
+
+    p = ArgumentParser(description="Indexing tool for Nominatim.",
+                       formatter_class=RawDescriptionHelpFormatter)
+
+    p.add_argument('-d', '--database',
+                   dest='dbname', action='store', default='nominatim',
+                   help='Name of the PostgreSQL database to connect to.')
+    p.add_argument('-U', '--username',
+                   dest='user', action='store',
+                   help='PostgreSQL user name.')
+    p.add_argument('-W', '--password',
+                   dest='password_prompt', action='store_true',
+                   help='Force password prompt.')
+    p.add_argument('-H', '--host',
+                   dest='host', action='store',
+                   help='PostgreSQL server hostname or socket location.')
+    p.add_argument('-P', '--port',
+                   dest='port', action='store',
+                   help='PostgreSQL server port')
+    p.add_argument('-r', '--minrank',
+                   dest='minrank', type=int, metavar='RANK', default=0,
+                   help='Minimum/starting rank.')
+    p.add_argument('-R', '--maxrank',
+                   dest='maxrank', type=int, metavar='RANK', default=30,
+                   help='Maximum/finishing rank.')
+    p.add_argument('-t', '--threads',
+                   dest='threads', type=int, metavar='NUM', default=1,
+                   help='Number of threads to create for indexing.')
+    p.add_argument('-v', '--verbose',
+                   dest='loglevel', action='count', default=0,
+                   help='Increase verbosity')
+
+    return p
+
+if __name__ == '__main__':
+    logging.basicConfig(stream=sys.stderr, format='%(levelname)s: %(message)s')
+
+    options = nominatim_arg_parser().parse_args(sys.argv[1:])
+
+    log.setLevel(max(3 - options.loglevel, 0) * 10)
+
+    options.password = None
+    if options.password_prompt:
+        password = getpass.getpass("Database password: ")
+        options.password = password
+
+    Indexer(options).run()
diff --git a/nominatim/nominatim.spec.in b/nominatim/nominatim.spec.in
deleted file mode 100644 (file)
index e7adf88..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-
-%define svn @SVN@
-
-Summary: Nominatim OpenStreetMap geocoding database
-Name:   @PACKAGE@
-Group:  Applications/Text
-Version: @VERSION@
-Release: 1.%{svn}%{?dist}
-
-License: GPL
-URL:     http://svn.openstreetmap.org/applications/utils/nominatim
-Source0: %{name}-%{version}-%{svn}.tar.bz2
-Source1: nominatim-svn.sh
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) 
-
-BuildRequires: geos-devel
-BuildRequires: libxml2-devel
-BuildRequires: postgresql-devel
-BuildRequires: bzip2-devel
-BuildRequires: proj-devel
-
-%description
-Processes data imported using osm2pgsql from the communtiy mapping project
-at http://www.openstreetmap.org.
-
-%prep
-%setup -q  -n %{name}
-
-
-%build
-
-export CFLAGS="$RPM_OPT_FLAGS"
-export CXXFLAGS="$RPM_OPT_FLAGS"
-
-make all
-
-
-%install
-rm -rf $RPM_BUILD_ROOT
-install -D -p nominatim $RPM_BUILD_ROOT/usr/bin/nominatim
-
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-
-%files
-%defattr(-,root,root)
-%doc README.txt
-%{_bindir}/nominatim
-
-
-%changelog
-* Fri Sep 09 2010 Brian Quinion <nominatim@brian.quinion.co.uk> 0.1-1.20070316svn
-- Initial build
diff --git a/nominatim/postgresql.c b/nominatim/postgresql.c
deleted file mode 100644 (file)
index 30237e0..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-*/
-#include <string.h>
-#include "postgresql.h"
-
-const char *build_conninfo(const char *db, const char *username, const char *password, const char *host, const char *port)
-{
-    static char conninfo[1024];
-
-    conninfo[0]='\0';
-    strcat(conninfo, "dbname='");
-    strcat(conninfo, db);
-    strcat(conninfo, "'");
-
-    if (username)
-    {
-        strcat(conninfo, " user='");
-        strcat(conninfo, username);
-        strcat(conninfo, "'");
-    }
-    if (password)
-    {
-        strcat(conninfo, " password='");
-        strcat(conninfo, password);
-        strcat(conninfo, "'");
-    }
-    if (host)
-    {
-        strcat(conninfo, " host='");
-        strcat(conninfo, host);
-        strcat(conninfo, "'");
-    }
-    if (port)
-    {
-        strcat(conninfo, " port='");
-        strcat(conninfo, port);
-        strcat(conninfo, "'");
-    }
-
-    return conninfo;
-}
diff --git a/nominatim/postgresql.h b/nominatim/postgresql.h
deleted file mode 100644 (file)
index f30e730..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-*/
-
-#ifndef POSTGRESQL_H
-#define POSTGRESQL_H
-
-#define PG_OID_INT8                    20
-#define PG_OID_INT4                    23
-
-#if HAVE_BYTESWAP
-#include <byteswap.h>
-#define PG_BSWAP32(x) bswap_32(x)
-#define PG_BSWAP64(x) bswap_64(x)
-#elif HAVE_SYS_ENDIAN
-#include <sys/endian.h>
-#define PG_BSWAP32(x) bswap32(x)
-#define PG_BSWAP64(x) bswap64(x)
-#else
-#error "No appropriate byteswap found for your system."
-#endif
-
-#if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
-#define PGint32(x)     (x)
-#define PGint64(x)     (x)
-#elif defined(__BYTE_ORDER__) &&  (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
-#define PGint32(x)     PG_BSWAP32(x)
-#define PGint64(x)     PG_BSWAP64(x)
-#elif defined(_BYTE_ORDER) && (_BYTE_ORDER == _BIG_ENDIAN)
-#define PGint32(x)     (x)
-#define PGint64(x)     (x)
-#elif defined(_BYTE_ORDER) &&  (_BYTE_ORDER == _LITTLE_ENDIAN)
-#define PGint32(x)     PG_BSWAP32(x)
-#define PGint64(x)     PG_BSWAP64(x)
-#else
-#error "Cannot determine byte order."
-#endif
-
-const char *build_conninfo(const char *db, const char *username, const char *password, const char *host, const char *port);
-
-#endif
diff --git a/nominatim/sprompt.c b/nominatim/sprompt.c
deleted file mode 100644 (file)
index 7666be5..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * sprompt.c
- *       simple_prompt() routine
- *
- * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/port/sprompt.c,v 1.18 2006/10/04 00:30:14 momjian Exp $
- *
- *-------------------------------------------------------------------------
- *
- * PostgreSQL Database Management System
- * (formerly known as Postgres, then as Postgres95)
- *
- * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
- *
- * Portions Copyright (c) 1994, The Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose, without fee, and without a written agreement
- * is hereby granted, provided that the above copyright notice and this
- * paragraph and the following two paragraphs appear in all copies.
- *
- * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
- * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
- * DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- */
-
-
-/*
- * simple_prompt
- *
- * Generalized function especially intended for reading in usernames and
- * password interactively. Reads from /dev/tty or stdin/stderr.
- *
- * prompt:             The prompt to print
- * maxlen:             How many characters to accept
- * echo:               Set to false if you want to hide what is entered (for passwords)
- *
- * Returns a malloc()'ed string with the input (w/o trailing newline).
- */
-
-#define DEVTTY "/dev/tty"
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include <libpq-fe.h>
-
-#ifdef __MINGW_H
-# include <windows.h>
-#else
-# define HAVE_TERMIOS_H
-# include <termios.h>
-#endif
-
-/*
-extern char *simple_prompt(const char *prompt, int maxlen, int echo);
-*/
-
-char *
-simple_prompt(const char *prompt, int maxlen, int echo)
-{
-    int                        length;
-    char          *destination;
-    FILE          *termin,
-    *termout;
-
-#ifdef HAVE_TERMIOS_H
-    struct termios t_orig,
-                t;
-#else
-#ifdef WIN32
-    HANDLE             t = NULL;
-    LPDWORD            t_orig = NULL;
-#endif
-#endif
-
-    destination = (char *) malloc(maxlen + 1);
-    if (!destination)
-        return NULL;
-
-    /*
-     * Do not try to collapse these into one "w+" mode file. Doesn't work on
-     * some platforms (eg, HPUX 10.20).
-     */
-    termin = fopen(DEVTTY, "r");
-    termout = fopen(DEVTTY, "w");
-    if (!termin || !termout
-#ifdef WIN32
-            /* See DEVTTY comment for msys */
-            || (getenv("OSTYPE") && strcmp(getenv("OSTYPE"), "msys") == 0)
-#endif
-       )
-{
-        if (termin)
-            fclose(termin);
-        if (termout)
-            fclose(termout);
-        termin = stdin;
-        termout = stderr;
-    }
-
-#ifdef HAVE_TERMIOS_H
-    if (!echo)
-    {
-        tcgetattr(fileno(termin), &t);
-        t_orig = t;
-        t.c_lflag &= ~ECHO;
-        tcsetattr(fileno(termin), TCSAFLUSH, &t);
-    }
-#else
-#ifdef WIN32
-    if (!echo)
-    {
-        /* get a new handle to turn echo off */
-        t_orig = (LPDWORD) malloc(sizeof(DWORD));
-        t = GetStdHandle(STD_INPUT_HANDLE);
-
-        /* save the old configuration first */
-        GetConsoleMode(t, t_orig);
-
-        /* set to the new mode */
-        SetConsoleMode(t, ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT);
-    }
-#endif
-#endif
-
-    if (prompt)
-    {
-        fputs(prompt, termout);
-        fflush(termout);
-    }
-
-    if (fgets(destination, maxlen + 1, termin) == NULL)
-        destination[0] = '\0';
-
-    length = strlen(destination);
-    if (length > 0 && destination[length - 1] != '\n')
-    {
-        /* eat rest of the line */
-        char           buf[128];
-        int                    buflen;
-
-        do
-        {
-            if (fgets(buf, sizeof(buf), termin) == NULL)
-                break;
-            buflen = strlen(buf);
-        }
-        while (buflen > 0 && buf[buflen - 1] != '\n');
-    }
-
-    if (length > 0 && destination[length - 1] == '\n')
-        /* remove trailing newline */
-        destination[length - 1] = '\0';
-
-#ifdef HAVE_TERMIOS_H
-    if (!echo)
-    {
-        tcsetattr(fileno(termin), TCSAFLUSH, &t_orig);
-        fputs("\n", termout);
-        fflush(termout);
-    }
-#else
-#ifdef WIN32
-    if (!echo)
-    {
-        /* reset to the original console mode */
-        SetConsoleMode(t, *t_orig);
-        fputs("\n", termout);
-        fflush(termout);
-        free(t_orig);
-    }
-#endif
-#endif
-
-    if (termin != stdin)
-    {
-        fclose(termin);
-        fclose(termout);
-    }
-
-    return destination;
-}
diff --git a/nominatim/sprompt.h b/nominatim/sprompt.h
deleted file mode 100644 (file)
index 5e68492..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifndef SPROMPT_H
-#define SPROMPT_H
-char *simple_prompt(const char *prompt, int maxlen, int echo);
-#endif
diff --git a/nominatim/voronoi/VoronoiDiagramGenerator.cpp b/nominatim/voronoi/VoronoiDiagramGenerator.cpp
deleted file mode 100644 (file)
index 196b1a8..0000000
+++ /dev/null
@@ -1,1276 +0,0 @@
-/*\r
-* The author of this software is Steven Fortune.  Copyright (c) 1994 by AT&T\r
-* Bell Laboratories.\r
-* Permission to use, copy, modify, and distribute this software for any\r
-* purpose without fee is hereby granted, provided that this entire notice\r
-* is included in all copies of any software which is or includes a copy\r
-* or modification of this software and in all copies of the supporting\r
-* documentation for such software.\r
-* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED\r
-* WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY\r
-* REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY\r
-* OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.\r
-*/\r
-\r
-/* \r
-* This code was originally written by Stephan Fortune in C code.  I, Shane O'Sullivan, \r
-* have since modified it, encapsulating it in a C++ class and, fixing memory leaks and \r
-* adding accessors to the Voronoi Edges.\r
-* Permission to use, copy, modify, and distribute this software for any\r
-* purpose without fee is hereby granted, provided that this entire notice\r
-* is included in all copies of any software which is or includes a copy\r
-* or modification of this software and in all copies of the supporting\r
-* documentation for such software.\r
-* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED\r
-* WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY\r
-* REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY\r
-* OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.\r
-*/\r
-\r
-#include "VoronoiDiagramGenerator.h"\r
-#include <stdio.h>\r
-#include <sys/mman.h>\r
-\r
-VoronoiDiagramGenerator::VoronoiDiagramGenerator()\r
-{\r
-       siteidx = 0;\r
-       sites = 0;\r
-\r
-       allMemoryList = new FreeNodeArrayList;\r
-       allMemoryList->memory = 0;\r
-       allMemoryList->next = 0;\r
-       currentMemoryBlock = allMemoryList;\r
-       allEdges = 0;\r
-       iteratorEdges = 0;\r
-       minDistanceBetweenSites = 0;\r
-}\r
-\r
-VoronoiDiagramGenerator::~VoronoiDiagramGenerator()\r
-{\r
-       cleanup();\r
-       cleanupEdges();\r
-\r
-       if(allMemoryList != 0)\r
-               delete allMemoryList;\r
-}\r
-\r
-bool VoronoiDiagramGenerator::generateVoronoi(struct SourcePoint* srcPoints, int numPoints, float minX, float maxX, float minY, float maxY, float minDist)\r
-{\r
-       cleanup();\r
-       cleanupEdges();\r
-       int i;\r
-\r
-       minDistanceBetweenSites = minDist;\r
-\r
-       nsites = numPoints;\r
-       plot = 0;\r
-       triangulate = 0;\r
-       debug = 1;\r
-       sorted = 0;\r
-       freeinit(&sfl, sizeof (Site));\r
-\r
-       sites = (struct Site *) myalloc(nsites * sizeof(*sites));\r
-       polygons = (struct Polygon *) myalloc(nsites * sizeof(*polygons));\r
-\r
-       if(sites == 0) return false;\r
-\r
-        xmin = srcPoints[0].x;\r
-        ymin = srcPoints[0].y;\r
-        xmax = srcPoints[0].x;\r
-        ymax = srcPoints[0].y;\r
-\r
-        for(i = 0; i < nsites; i++)\r
-        {\r
-                sites[i].coord.x = srcPoints[i].x;\r
-                sites[i].coord.y = srcPoints[i].y;\r
-                sites[i].weight = srcPoints[i].weight;\r
-                sites[i].sitenbr = i;\r
-                sites[i].refcnt = 0; // prevent reuse?\r
-\r
-                if(sites[i].coord.x < xmin)\r
-                        xmin = sites[i].coord.x;\r
-                else if(sites[i].coord.x > xmax)\r
-                        xmax = sites[i].coord.x;\r
-\r
-                if(sites[i].coord.y < ymin)\r
-                        ymin = sites[i].coord.y;\r
-                else if(sites[i].coord.y > ymax)\r
-                        ymax = sites[i].coord.y;\r
-\r
-               polygons[i].coord.x = sites[i].coord.x;\r
-               polygons[i].coord.y = sites[i].coord.y;\r
-               polygons[i].numpoints = 0;\r
-               polygons[i].pointlist = NULL;\r
-               polygons[i].boundary = 0;\r
-\r
-                //printf("\n%lf %lf\n", sites[i].coord.x, sites[i].coord.y);\r
-        }\r
-\r
-       qsort(sites, nsites, sizeof (*sites), scomp);\r
-\r
-       siteidx = 0;\r
-       geominit();\r
-       float temp = 0;\r
-       if(minX > maxX)\r
-       {\r
-               temp = minX;\r
-               minX = maxX;\r
-               maxX = temp;\r
-       }\r
-       if(minY > maxY)\r
-       {\r
-               temp = minY;\r
-               minY = maxY;\r
-               maxY = temp;\r
-       }\r
-       borderMinX = minX;\r
-       borderMinY = minY;\r
-       borderMaxX = maxX;\r
-       borderMaxY = maxY;\r
-\r
-       corners[0].x = borderMinX;\r
-        corners[0].y = borderMinY;\r
-        corners[1].x = borderMinX;\r
-        corners[1].y = borderMaxY;\r
-        corners[2].x = borderMaxX;\r
-        corners[2].y = borderMaxY;\r
-        corners[3].x = borderMaxX;\r
-        corners[3].y = borderMinY;\r
-\r
-       siteidx = 0;\r
-       voronoi(triangulate);\r
-\r
-       return true;\r
-}\r
-\r
-bool VoronoiDiagramGenerator::ELinitialize()\r
-{\r
-       int i;\r
-       freeinit(&hfl, sizeof **ELhash);\r
-       ELhashsize = 2 * sqrt_nsites;\r
-       ELhash = (struct Halfedge **) myalloc ( sizeof *ELhash * ELhashsize);\r
-\r
-       if(ELhash == 0)\r
-               return false;\r
-\r
-       for(i=0; i<ELhashsize; i +=1) ELhash[i] = (struct Halfedge *)NULL;\r
-       ELleftend = HEcreate( (struct Edge *)NULL, 0);\r
-       ELrightend = HEcreate( (struct Edge *)NULL, 0);\r
-       ELleftend -> ELleft = (struct Halfedge *)NULL;\r
-       ELleftend -> ELright = ELrightend;\r
-       ELrightend -> ELleft = ELleftend;\r
-       ELrightend -> ELright = (struct Halfedge *)NULL;\r
-       ELhash[0] = ELleftend;\r
-       ELhash[ELhashsize-1] = ELrightend;\r
-\r
-       return true;\r
-}\r
-\r
-\r
-struct Halfedge* VoronoiDiagramGenerator::HEcreate(struct Edge *e,int pm)\r
-{\r
-       struct Halfedge *answer;\r
-       answer = (struct Halfedge *) getfree(&hfl);\r
-       answer -> ELedge = e;\r
-       answer -> ELpm = pm;\r
-       answer -> PQnext = (struct Halfedge *) NULL;\r
-       answer -> vertex = (struct Site *) NULL;\r
-       answer -> ELrefcnt = 0;\r
-       return(answer);\r
-}\r
-\r
-\r
-void VoronoiDiagramGenerator::ELinsert(struct  Halfedge *lb, struct Halfedge *newHe)\r
-{\r
-       newHe -> ELleft = lb;\r
-       newHe -> ELright = lb -> ELright;\r
-       (lb -> ELright) -> ELleft = newHe;\r
-       lb -> ELright = newHe;\r
-}\r
-\r
-/* Get entry from hash table, pruning any deleted nodes */\r
-struct Halfedge * VoronoiDiagramGenerator::ELgethash(int b)\r
-{\r
-       struct Halfedge *he;\r
-\r
-       if(b<0 || b>=ELhashsize)\r
-               return((struct Halfedge *) NULL);\r
-       he = ELhash[b];\r
-       if (he == (struct Halfedge *) NULL || he->ELedge != (struct Edge *) DELETED )\r
-               return (he);\r
-\r
-       /* Hash table points to deleted half edge.  Patch as necessary. */\r
-       ELhash[b] = (struct Halfedge *) NULL;\r
-       if ((he -> ELrefcnt -= 1) == 0) \r
-               makefree((Freenode*)he, &hfl);\r
-       return ((struct Halfedge *) NULL);\r
-}\r
-\r
-struct Halfedge * VoronoiDiagramGenerator::ELleftbnd(struct Point *p)\r
-{\r
-       int i, bucket;\r
-       struct Halfedge *he;\r
-\r
-       /* Use hash table to get close to desired halfedge */\r
-       bucket = (int)((p->x - xmin)/deltax * ELhashsize);      //use the hash function to find the place in the hash map that this HalfEdge should be\r
-\r
-       if(bucket<0) bucket =0;                                 //make sure that the bucket position in within the range of the hash array\r
-       if(bucket>=ELhashsize) bucket = ELhashsize - 1;\r
-\r
-       he = ELgethash(bucket);\r
-       if(he == (struct Halfedge *) NULL)                      //if the HE isn't found, search backwards and forwards in the hash map for the first non-null entry\r
-       {\r
-               for(i=1; 1 ; i += 1)\r
-               {\r
-                       if ((he=ELgethash(bucket-i)) != (struct Halfedge *) NULL)\r
-                               break;\r
-                       if ((he=ELgethash(bucket+i)) != (struct Halfedge *) NULL)\r
-                               break;\r
-               };\r
-               totalsearch += i;\r
-       };\r
-       ntry += 1;\r
-       /* Now search linear list of halfedges for the correct one */\r
-       if (he==ELleftend  || (he != ELrightend && right_of(he,p)))\r
-       {\r
-               do \r
-               {\r
-                       he = he -> ELright;\r
-               } while (he!=ELrightend && right_of(he,p));     //keep going right on the list until either the end is reached, or you find the 1st edge which the point\r
-               he = he -> ELleft;                              //isn't to the right of\r
-       }\r
-       else                                                    //if the point is to the left of the HalfEdge, then search left for the HE just to the left of the point\r
-               do\r
-               {\r
-                       he = he -> ELleft;\r
-               } while (he!=ELleftend && !right_of(he,p));\r
-\r
-       /* Update hash table and reference counts */\r
-       if(bucket > 0 && bucket <ELhashsize-1)\r
-       {\r
-               if(ELhash[bucket] != (struct Halfedge *) NULL) \r
-               {\r
-                       ELhash[bucket] -> ELrefcnt -= 1;\r
-               }\r
-               ELhash[bucket] = he;\r
-               ELhash[bucket] -> ELrefcnt += 1;\r
-       };\r
-       return (he);\r
-}\r
-\r
-\r
-/* This delete routine can't reclaim node, since pointers from hash\r
-table may be present.   */\r
-void VoronoiDiagramGenerator::ELdelete(struct Halfedge *he)\r
-{\r
-       (he -> ELleft) -> ELright = he -> ELright;\r
-       (he -> ELright) -> ELleft = he -> ELleft;\r
-       he -> ELedge = (struct Edge *)DELETED;\r
-}\r
-\r
-\r
-struct Halfedge * VoronoiDiagramGenerator::ELright(struct Halfedge *he)\r
-{\r
-       return (he -> ELright);\r
-}\r
-\r
-struct Halfedge * VoronoiDiagramGenerator::ELleft(struct Halfedge *he)\r
-{\r
-       return (he -> ELleft);\r
-}\r
-\r
-\r
-struct Site * VoronoiDiagramGenerator::leftreg(struct Halfedge *he)\r
-{\r
-       if(he -> ELedge == (struct Edge *)NULL)\r
-               return(bottomsite);\r
-       return( he -> ELpm == le ?\r
-               he -> ELedge -> reg[le] : he -> ELedge -> reg[re]);\r
-}\r
-\r
-struct Site * VoronoiDiagramGenerator::rightreg(struct Halfedge *he)\r
-{\r
-       if(he -> ELedge == (struct Edge *)NULL) //if this halfedge has no edge, return the bottom site (whatever that is)\r
-               return(bottomsite);\r
-\r
-       //if the ELpm field is zero, return the site 0 that this edge bisects, otherwise return site number 1\r
-       return( he -> ELpm == le ? he -> ELedge -> reg[re] : he -> ELedge -> reg[le]);\r
-}\r
-\r
-void VoronoiDiagramGenerator::geominit()\r
-{\r
-       float sn;\r
-\r
-       freeinit(&efl, sizeof(Edge));\r
-       nvertices = 0;\r
-       nedges = 0;\r
-       sn = (float)nsites+4;\r
-       sqrt_nsites = (int)sqrt(sn);\r
-       deltay = ymax - ymin;\r
-       deltax = xmax - xmin;\r
-}\r
-\r
-\r
-struct Edge * VoronoiDiagramGenerator::bisect(struct Site *s1,struct   Site *s2)\r
-{\r
-       float dx,dy,adx,ady;\r
-       struct Edge *newedge;\r
-\r
-       newedge = (struct Edge *) getfree(&efl);\r
-\r
-       newedge -> reg[0] = s1; //store the sites that this edge is bisecting\r
-       newedge -> reg[1] = s2;\r
-       ref(s1);\r
-       ref(s2);\r
-       newedge -> ep[0] = (struct Site *) NULL; //to begin with, there are no endpoints on the bisector - it goes to infinity\r
-       newedge -> ep[1] = (struct Site *) NULL;\r
-\r
-       dx = s2->coord.x - s1->coord.x;                 //get the difference in x dist between the sites\r
-       dy = s2->coord.y - s1->coord.y;\r
-       adx = dx>0 ? dx : -dx;                                  //make sure that the difference in positive\r
-       ady = dy>0 ? dy : -dy;\r
-       newedge -> c = (float)(s1->coord.x * dx + s1->coord.y * dy + (dx*dx + dy*dy)*0.5);//get the slope of the line\r
-\r
-       if (adx>ady)\r
-       {\r
-               newedge -> a = 1.0; newedge -> b = dy/dx; newedge -> c /= dx;//set formula of line, with x fixed to 1\r
-       }\r
-       else\r
-       {\r
-               newedge -> b = 1.0; newedge -> a = dx/dy; newedge -> c /= dy;//set formula of line, with y fixed to 1\r
-       };\r
-\r
-       newedge -> edgenbr = nedges;\r
-\r
-       //printf("\nbisect(%d) ((%f,%f) and (%f,%f)",nedges,s1->coord.x,s1->coord.y,s2->coord.x,s2->coord.y);\r
-\r
-       nedges += 1;\r
-       return(newedge);\r
-}\r
-\r
-//create a new site where the HalfEdges el1 and el2 intersect - note that the Point in the argument list is not used, don't know why it's there\r
-struct Site * VoronoiDiagramGenerator::intersect(struct Halfedge *el1, struct Halfedge *el2, struct Point *p)\r
-{\r
-       struct  Edge *e1,*e2, *e;\r
-       struct  Halfedge *el;\r
-       float d, xint, yint;\r
-       int right_of_site;\r
-       struct Site *v;\r
-\r
-       e1 = el1 -> ELedge;\r
-       e2 = el2 -> ELedge;\r
-       if(e1 == (struct Edge*)NULL || e2 == (struct Edge*)NULL)\r
-               return ((struct Site *) NULL);\r
-\r
-       //if the two edges bisect the same parent, return null\r
-       if (e1->reg[1] == e2->reg[1])\r
-               return ((struct Site *) NULL);\r
-\r
-       d = e1->a * e2->b - e1->b * e2->a;\r
-       if (-1.0e-10<d && d<1.0e-10)\r
-               return ((struct Site *) NULL);\r
-\r
-       xint = (e1->c*e2->b - e2->c*e1->b)/d;\r
-       yint = (e2->c*e1->a - e1->c*e2->a)/d;\r
-\r
-       if( (e1->reg[1]->coord.y < e2->reg[1]->coord.y) ||\r
-               (e1->reg[1]->coord.y == e2->reg[1]->coord.y &&\r
-               e1->reg[1]->coord.x < e2->reg[1]->coord.x) )\r
-       {\r
-               el = el1;\r
-               e = e1;\r
-       }\r
-       else\r
-       {\r
-               el = el2;\r
-               e = e2;\r
-       };\r
-\r
-       right_of_site = xint >= e -> reg[1] -> coord.x;\r
-       if ((right_of_site && el -> ELpm == le) || (!right_of_site && el -> ELpm == re))\r
-               return ((struct Site *) NULL);\r
-\r
-       //create a new site at the point of intersection - this is a new vector event waiting to happen\r
-       v = (struct Site *) getfree(&sfl);\r
-       v -> refcnt = 0;\r
-       v -> coord.x = xint;\r
-       v -> coord.y = yint;\r
-       return(v);\r
-}\r
-\r
-/* returns 1 if p is to right of halfedge e */\r
-int VoronoiDiagramGenerator::right_of(struct Halfedge *el,struct Point *p)\r
-{\r
-       struct Edge *e;\r
-       struct Site *topsite;\r
-       int right_of_site, above, fast;\r
-       float dxp, dyp, dxs, t1, t2, t3, yl;\r
-\r
-       e = el -> ELedge;\r
-       topsite = e -> reg[1];\r
-       right_of_site = p -> x > topsite -> coord.x;\r
-       if(right_of_site && el -> ELpm == le) return(1);\r
-       if(!right_of_site && el -> ELpm == re) return (0);\r
-       if (e->a == 1.0)\r
-       {\r
-               dyp = p->y - topsite->coord.y;\r
-               dxp = p->x - topsite->coord.x;\r
-               fast = 0;\r
-               if ((!right_of_site & (e->b<0.0)) | (right_of_site & (e->b>=0.0)) )\r
-               {\r
-                       above = dyp>= e->b*dxp;\r
-                       fast = above;\r
-               }\r
-               else\r
-               {\r
-                       above = p->x + p->y*e->b > e-> c;\r
-                       if(e->b<0.0) above = !above;\r
-                       if (!above) fast = 1;\r
-               }\r
-\r
-               if (!fast)\r
-               {\r
-                       dxs = topsite->coord.x - (e->reg[0])->coord.x;\r
-                       above = e->b * (dxp*dxp - dyp*dyp) <\r
-                       dxs*dyp*(1.0+2.0*dxp/dxs + e->b*e->b);\r
-                       if(e->b<0.0) above = !above;\r
-               }\r
-       }\r
-       else  /*e->b==1.0 */\r
-       {\r
-               yl = e->c - e->a*p->x;\r
-               t1 = p->y - yl;\r
-               t2 = p->x - topsite->coord.x;\r
-               t3 = yl - topsite->coord.y;\r
-               above = t1*t1 > t2*t2 + t3*t3;\r
-       }\r
-       return (el->ELpm==le ? above : !above);\r
-}\r
-\r
-\r
-void VoronoiDiagramGenerator::endpoint(struct Edge *e,int lr,struct Site * s)\r
-{\r
-       e -> ep[lr] = s;\r
-       ref(s);\r
-       return;\r
-\r
-       if(e -> ep[re-lr]== (struct Site *) NULL)\r
-               return;\r
-\r
-       clip_line(e);\r
-\r
-       deref(e->reg[le]);\r
-       deref(e->reg[re]);\r
-       makefree((Freenode*)e, &efl);\r
-}\r
-\r
-void VoronoiDiagramGenerator::endpoint(struct Edge *e1,int lr,struct Site * s, struct Edge *e2, struct Edge *e3)\r
-{\r
-       e1 -> ep[lr] = s;\r
-       ref(s);\r
-\r
-       s->coordout.x = s->coord.x;\r
-       s->coordout.y = s->coord.y;\r
-\r
-        if(e1 -> ep[le] != (struct Site *) NULL && e1 -> ep[re] != (struct Site *) NULL)\r
-        {\r
-                clip_line(e1);\r
-                deref(e1->reg[le]);\r
-                deref(e1->reg[re]);\r
-                makefree((Freenode*)e1, &efl);\r
-        }\r
-\r
-        if(e2 -> ep[le] != (struct Site *) NULL && e2 -> ep[re] != (struct Site *) NULL)\r
-        {\r
-                clip_line(e2);\r
-                deref(e2->reg[le]);\r
-                deref(e2->reg[re]);\r
-                makefree((Freenode*)e2, &efl);\r
-        }\r
-\r
-        if(e3 -> ep[le] != (struct Site *) NULL && e3 -> ep[re] != (struct Site *) NULL)\r
-        {\r
-                clip_line(e3);\r
-                deref(e3->reg[le]);\r
-                deref(e3->reg[re]);\r
-                makefree((Freenode*)e3, &efl);\r
-        }\r
-\r
-       return; \r
-}\r
-\r
-\r
-float VoronoiDiagramGenerator::dist(struct Site *s,struct Site *t)\r
-{\r
-       float dx,dy;\r
-       dx = s->coord.x - t->coord.x;\r
-       dy = s->coord.y - t->coord.y;\r
-       return (float)(sqrt(dx*dx + dy*dy));\r
-}\r
-\r
-\r
-void VoronoiDiagramGenerator::makevertex(struct Site *v)\r
-{\r
-       v -> sitenbr = nvertices;\r
-       nvertices += 1;\r
-       out_vertex(v);\r
-}\r
-\r
-\r
-void VoronoiDiagramGenerator::deref(struct Site *v)\r
-{\r
-       v -> refcnt -= 1;\r
-       if (v -> refcnt == 0 ) \r
-               makefree((Freenode*)v, &sfl);\r
-}\r
-\r
-void VoronoiDiagramGenerator::ref(struct Site *v)\r
-{\r
-       v -> refcnt += 1;\r
-}\r
-\r
-//push the HalfEdge into the ordered linked list of vertices\r
-void VoronoiDiagramGenerator::PQinsert(struct Halfedge *he,struct Site * v, float offset)\r
-{\r
-       struct Halfedge *last, *next;\r
-\r
-       he -> vertex = v;\r
-       ref(v);\r
-       he -> ystar = (float)(v -> coord.y + offset);\r
-       last = &PQhash[PQbucket(he)];\r
-       while ((next = last -> PQnext) != (struct Halfedge *) NULL &&\r
-               (he -> ystar  > next -> ystar  ||\r
-               (he -> ystar == next -> ystar && v -> coord.x > next->vertex->coord.x)))\r
-       {\r
-               last = next;\r
-       }\r
-       he -> PQnext = last -> PQnext;\r
-       last -> PQnext = he;\r
-       PQcount += 1;\r
-}\r
-\r
-//remove the HalfEdge from the list of vertices\r
-void VoronoiDiagramGenerator::PQdelete(struct Halfedge *he)\r
-{\r
-       struct Halfedge *last;\r
-\r
-       if(he -> vertex != (struct Site *) NULL)\r
-       {\r
-               last = &PQhash[PQbucket(he)];\r
-               while (last -> PQnext != he)\r
-                       last = last -> PQnext;\r
-\r
-               last -> PQnext = he -> PQnext;\r
-               PQcount -= 1;\r
-               deref(he -> vertex);\r
-               he -> vertex = (struct Site *) NULL;\r
-       };\r
-}\r
-\r
-int VoronoiDiagramGenerator::PQbucket(struct Halfedge *he)\r
-{\r
-       int bucket;\r
-\r
-       bucket = (int)((he->ystar - ymin)/deltay * PQhashsize);\r
-       if (bucket<0) bucket = 0;\r
-       if (bucket>=PQhashsize) bucket = PQhashsize-1 ;\r
-       if (bucket < PQmin) PQmin = bucket;\r
-       return(bucket);\r
-}\r
-\r
-int VoronoiDiagramGenerator::PQempty()\r
-{\r
-       return(PQcount==0);\r
-}\r
-\r
-\r
-struct Point VoronoiDiagramGenerator::PQ_min()\r
-{\r
-       struct Point answer;\r
-\r
-       while(PQhash[PQmin].PQnext == (struct Halfedge *)NULL) {PQmin += 1;};\r
-       answer.x = PQhash[PQmin].PQnext -> vertex -> coord.x;\r
-       answer.y = PQhash[PQmin].PQnext -> ystar;\r
-       return (answer);\r
-}\r
-\r
-struct Halfedge * VoronoiDiagramGenerator::PQextractmin()\r
-{\r
-       struct Halfedge *curr;\r
-\r
-       curr = PQhash[PQmin].PQnext;\r
-       PQhash[PQmin].PQnext = curr -> PQnext;\r
-       PQcount -= 1;\r
-       return(curr);\r
-}\r
-\r
-\r
-bool VoronoiDiagramGenerator::PQinitialize()\r
-{\r
-       int i;\r
-\r
-       PQcount = 0;\r
-       PQmin = 0;\r
-       PQhashsize = 4 * sqrt_nsites;\r
-       PQhash = (struct Halfedge *) myalloc(PQhashsize * sizeof *PQhash);\r
-\r
-       if(PQhash == 0)\r
-               return false;\r
-\r
-       for(i=0; i<PQhashsize; i+=1) PQhash[i].PQnext = (struct Halfedge *)NULL;\r
-\r
-       return true;\r
-}\r
-\r
-\r
-void VoronoiDiagramGenerator::freeinit(struct Freelist *fl,int size)\r
-{\r
-       fl -> head = (struct Freenode *) NULL;\r
-       fl -> nodesize = size;\r
-}\r
-\r
-char * VoronoiDiagramGenerator::getfree(struct Freelist *fl)\r
-{\r
-       int i;\r
-       struct Freenode *t;\r
-\r
-       if(fl->head == (struct Freenode *) NULL)\r
-       {\r
-               t =  (struct Freenode *) myalloc(sqrt_nsites * fl->nodesize);\r
-\r
-               if(t == 0)\r
-                       return 0;\r
-\r
-               currentMemoryBlock->next = new FreeNodeArrayList;\r
-               currentMemoryBlock = currentMemoryBlock->next;\r
-               currentMemoryBlock->memory = t;\r
-               currentMemoryBlock->next = 0;\r
-\r
-               for(i=0; i<sqrt_nsites; i+=1)\r
-                       makefree((struct Freenode *)((char *)t+i*fl->nodesize), fl);\r
-       };\r
-       t = fl -> head;\r
-       fl -> head = (fl -> head) -> nextfree;\r
-       return((char *)t);\r
-}\r
-\r
-\r
-\r
-void VoronoiDiagramGenerator::makefree(struct Freenode *curr,struct Freelist *fl)\r
-{\r
-       curr -> nextfree = fl -> head;\r
-       fl -> head = curr;\r
-}\r
-\r
-void VoronoiDiagramGenerator::cleanup()\r
-{\r
-       if(sites != 0)\r
-       {\r
-               free(sites);\r
-               sites = 0;\r
-       }\r
-\r
-       FreeNodeArrayList* current=0, *prev = 0;\r
-\r
-       current = prev = allMemoryList;\r
-\r
-       while(current->next != 0)\r
-       {\r
-               prev = current;\r
-               current = current->next;\r
-               free(prev->memory);\r
-               delete prev;\r
-               prev = 0;\r
-       }\r
-\r
-       if(current != 0 && current->memory != 0)\r
-       {\r
-               free(current->memory);\r
-               delete current;\r
-       }\r
-\r
-       allMemoryList = new FreeNodeArrayList;\r
-       allMemoryList->next = 0;\r
-       allMemoryList->memory = 0;\r
-       currentMemoryBlock = allMemoryList;\r
-}\r
-\r
-void VoronoiDiagramGenerator::cleanupEdges()\r
-{\r
-       GraphEdge* geCurrent = 0, *gePrev = 0;\r
-       geCurrent = gePrev = allEdges;\r
-\r
-       while(geCurrent != 0 && geCurrent->next != 0)\r
-       {\r
-               gePrev = geCurrent;\r
-               geCurrent = geCurrent->next;\r
-               delete gePrev;\r
-       }\r
-\r
-       allEdges = 0;\r
-\r
-}\r
-\r
-void VoronoiDiagramGenerator::pushGraphEdge(float x1, float y1, float x2, float y2)\r
-{\r
-       GraphEdge* newEdge = new GraphEdge;\r
-       newEdge->next = allEdges;\r
-       allEdges = newEdge;\r
-       newEdge->x1 = x1;\r
-       newEdge->y1 = y1;\r
-       newEdge->x2 = x2;\r
-       newEdge->y2 = y2;\r
-}\r
-\r
-\r
-char * VoronoiDiagramGenerator::myalloc(unsigned n)\r
-{\r
-       char *t=0;\r
-       t=(char*)malloc(n);\r
-       total_alloc += n;\r
-       return(t);\r
-}\r
-\r
-\r
-/* for those who don't have Cherry's plot */\r
-/* #include <plot.h> */\r
-void VoronoiDiagramGenerator::openpl(){}\r
-void VoronoiDiagramGenerator::line(float x1, float y1, float x2, float y2)\r
-{\r
-       pushGraphEdge(x1,y1,x2,y2);\r
-\r
-}\r
-void VoronoiDiagramGenerator::circle(float x, float y, float radius){}\r
-void VoronoiDiagramGenerator::range(float minX, float minY, float maxX, float maxY){}\r
-\r
-\r
-\r
-void VoronoiDiagramGenerator::out_bisector(struct Edge *e)\r
-{\r
-\r
-}\r
-\r
-\r
-void VoronoiDiagramGenerator::out_ep(struct Edge *e)\r
-{\r
-\r
-}\r
-\r
-void VoronoiDiagramGenerator::out_vertex(struct Site *v)\r
-{\r
-\r
-}\r
-\r
-\r
-void VoronoiDiagramGenerator::out_site(struct Site *s)\r
-{\r
-       if(!triangulate & plot & !debug)\r
-               circle (s->coord.x, s->coord.y, cradius);\r
-}\r
-\r
-\r
-void VoronoiDiagramGenerator::out_triple(struct Site *s1, struct Site *s2,struct Site * s3)\r
-{\r
-\r
-}\r
-\r
-\r
-\r
-void VoronoiDiagramGenerator::plotinit()\r
-{\r
-       float dx,dy,d;\r
-\r
-       dy = ymax - ymin;\r
-       dx = xmax - xmin;\r
-       d = (float)(( dx > dy ? dx : dy) * 1.1);\r
-       pxmin = (float)(xmin - (d-dx)/2.0);\r
-       pxmax = (float)(xmax + (d-dx)/2.0);\r
-       pymin = (float)(ymin - (d-dy)/2.0);\r
-       pymax = (float)(ymax + (d-dy)/2.0);\r
-       cradius = (float)((pxmax - pxmin)/350.0);\r
-       openpl();\r
-       range(pxmin, pymin, pxmax, pymax);\r
-}\r
-\r
-void VoronoiDiagramGenerator::pushpoint(int sitenbr, double x, double y, int boundary)\r
-{\r
-       Polygon *s;\r
-\r
-       s = &polygons[sitenbr];\r
-\r
-        if (s->numpoints == 0)\r
-        {\r
-                s->pointlist = (PolygonPoint *)malloc(sizeof(struct PolygonPoint)*(s->numpoints+10));\r
-                if (!s->pointlist)\r
-                {\r
-                        printf("Out of mem\n");\r
-                }\r
-        }\r
-        else if (s->numpoints % 10 == 0)\r
-        {\r
-                s->pointlist = (PolygonPoint *)realloc(s->pointlist, sizeof(struct PolygonPoint)*(s->numpoints+10));\r
-                if (!s->pointlist)\r
-                {\r
-                        printf("Out of remem\n");\r
-                }\r
-        }\r
-        s->pointlist[s->numpoints].coord.x = x;\r
-        s->pointlist[s->numpoints].coord.y = y;\r
-        s->pointlist[s->numpoints].angle = atan2f(x-s->coord.x, y-s->coord.y);\r
-       s->pointlist[s->numpoints].boundary = boundary;\r
-\r
-       if (boundary) s->boundary = 1;\r
-\r
-        //printf("point #%d in %d (%lf, %lf) [%d] (%lf, %lf): %lf\n", s->numpoints, sitenbr, s->coord.x, s->coord.y, boundary, x, y, (s->pointlist[s->numpoints].angle/M_PI)*180);\r
-\r
-        s->numpoints++;\r
-}\r
-\r
-int VoronoiDiagramGenerator::ccw( Point p0, Point p1, Point p2 )\r
-{\r
-       double dx1, dx2, dy1, dy2;\r
-\r
-       dx1 = p1.x - p0.x; dy1 = p1.y - p0.y;\r
-       dx2 = p2.x - p0.x; dy2 = p2.y - p0.y;\r
-\r
-       if (dx1*dy2 > dy1*dx2)\r
-               return +1;\r
-       if (dx1*dy2 < dy1*dx2)\r
-               return -1;\r
-       if ((dx1*dx2 < 0) || (dy1*dy2 < 0))\r
-               return -1;\r
-       if ((dx1*dx1 + dy1*dy1) < (dx2*dx2 + dy2*dy2))\r
-               return +1;\r
-       return 0;\r
-}\r
-\r
-void VoronoiDiagramGenerator::getSitePoints(int sitenbr, int* numpoints, PolygonPoint** pS)\r
-{\r
-       int i, j, c, any, centrevalue, cornerinpolygon[4];\r
-\r
-       if (polygons[sitenbr].numpoints == 0)\r
-       {\r
-               for(c = 0; c < 4; c++)\r
-               {\r
-                       pushpoint(sitenbr, corners[c].x, corners[c].y, 0);\r
-               }\r
-       }\r
-\r
-        qsort(polygons[sitenbr].pointlist, polygons[sitenbr].numpoints, sizeof(PolygonPoint), anglecomp);\r
-\r
-       if (polygons[sitenbr].boundary)\r
-       {\r
-//             printf("\nsite %d is boundary intersection\n", sitenbr);\r
-\r
-               for(c = 0; c < 4; c++) cornerinpolygon[c] = 1;\r
-\r
-               for(i = 0; i < polygons[sitenbr].numpoints; i++)\r
-               {\r
-//                     printf("Point (%lf,%lf) %d\n", polygons[sitenbr].pointlist[i].coord.x,polygons[sitenbr].pointlist[i].coord.y,polygons[sitenbr].pointlist[i].boundary);\r
-                       j = i > 0?i-1:polygons[sitenbr].numpoints-1;\r
-                       if (    (!polygons[sitenbr].pointlist[i].boundary || !polygons[sitenbr].pointlist[j].boundary) &&\r
-                               (polygons[sitenbr].pointlist[i].coord.x != polygons[sitenbr].pointlist[j].coord.x ||\r
-                               polygons[sitenbr].pointlist[i].coord.y != polygons[sitenbr].pointlist[j].coord.y))\r
-                       {\r
-//                             printf("line side test (%lf,%lf) => (%lf,%lf)\n",polygons[sitenbr].pointlist[i].coord.x,polygons[sitenbr].pointlist[i].coord.y,polygons[sitenbr].pointlist[j].coord.x,polygons[sitenbr].pointlist[j].coord.y);\r
-                               any = 0;\r
-                               centrevalue = ccw(polygons[sitenbr].pointlist[i].coord, polygons[sitenbr].pointlist[j].coord, polygons[sitenbr].coord);\r
-//printf(" test against centre (%lf,%lf) %d\n", polygons[sitenbr].coord.x, polygons[sitenbr].coord.y, centrevalue);\r
-                               for(c = 0; c < 4; c++)\r
-                               {\r
-                                       if (cornerinpolygon[c])\r
-                                       {\r
-\r
-//printf(" test against corner (%lf,%lf) %d\n", corners[c].x, corners[c].y, ccw(polygons[sitenbr].pointlist[i].coord, polygons[sitenbr].pointlist[j].coord, corners[c]));\r
-\r
-                                               if (centrevalue == ccw(polygons[sitenbr].pointlist[i].coord, polygons[sitenbr].pointlist[j].coord, corners[c]))\r
-                                               {\r
-                                                       any = 1;\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       cornerinpolygon[c] = 0;\r
-                                               }\r
-                                       }\r
-                               }\r
-                               if (!any) break;\r
-                       }\r
-               }\r
-               if (any)\r
-               {\r
-                       for(c = 0; c < 4; c++)\r
-                       {\r
-                               if (cornerinpolygon[c])\r
-                               {\r
-//                                     printf("adding corger (%lf,%lf) to %d\n", corners[c].x, corners[c].y, sitenbr);\r
-                                       pushpoint(sitenbr, corners[c].x, corners[c].y, 0);\r
-                               }\r
-                       }\r
-               }\r
-               qsort(polygons[sitenbr].pointlist, polygons[sitenbr].numpoints, sizeof(PolygonPoint), anglecomp);\r
-\r
-               polygons[sitenbr].boundary = 0;\r
-       }\r
-\r
-        *numpoints = polygons[sitenbr].numpoints;\r
-        *pS = polygons[sitenbr].pointlist;\r
-}\r
-\r
-\r
-void VoronoiDiagramGenerator::clip_line(struct Edge *e)\r
-{\r
-       struct Site *s1, *s2, *ts1, *ts2;\r
-       float x1=0,x2=0,y1=0,y2=0, temp = 0;\r
-       int boundary1 = 0, boundary2 = 0;\r
-\r
-\r
-       x1 = e->reg[0]->coord.x;\r
-       x2 = e->reg[1]->coord.x;\r
-       y1 = e->reg[0]->coord.y;\r
-       y2 = e->reg[1]->coord.y;\r
-\r
-        if(sqrt(((x2 - x1) * (x2 - x1)) + ((y2 - y1) * (y2 - y1))) == 0)\r
-        {\r
-                return;\r
-        }\r
-\r
-       pxmin = borderMinX;\r
-       pxmax = borderMaxX;\r
-       pymin = borderMinY;\r
-       pymax = borderMaxY;\r
-\r
-       if(e -> a == 1.0 && e ->b >= 0.0)\r
-       {\r
-               s1 = e -> ep[1];\r
-               s2 = e -> ep[0];\r
-\r
-                ts1 = e -> reg[1];\r
-                ts2 = e -> reg[0];\r
-       }\r
-       else\r
-       {\r
-               s1 = e -> ep[0];\r
-               s2 = e -> ep[1];\r
-\r
-                ts1 = e -> reg[0];\r
-                ts2 = e -> reg[1];\r
-\r
-       };\r
-\r
-       if(e -> a == 1.0)\r
-       {\r
-               if (    s1!=(struct Site *)NULL\r
-                       && s1->coordout.y > pymin && s1->coordout.y < pymax\r
-                       && s1->coordout.x > pxmin && s1->coordout.x < pxmax)\r
-               {\r
-                       x1 = s1->coordout.x;\r
-                       y1 = s1->coordout.y;\r
-               }\r
-               else\r
-               {\r
-                       boundary1 = 1;\r
-                       y1 = pymin;\r
-                       if (s1!=(struct Site *)NULL && s1->coord.y > pymin)\r
-                       {\r
-                               y1 = s1->coord.y;\r
-                       }\r
-                       if(y1>pymax)\r
-                       {\r
-                               y1 = pymax;\r
-                       }\r
-                       x1 = e -> c - e -> b * y1;\r
-               }\r
-\r
-               if (    s2!=(struct Site *)NULL\r
-                       && s2->coordout.y > pymin && s2->coordout.y < pymax\r
-                       && s2->coordout.x > pxmin && s2->coordout.x < pxmax)\r
-               {\r
-                       x2 = s2->coordout.x;\r
-                       y2 = s2->coordout.y;\r
-               }\r
-               else\r
-               {\r
-                       boundary2 = 1;\r
-                       y2 = pymax;\r
-                       if (s2!=(struct Site *)NULL && s2->coord.y < pymax)\r
-                               y2 = s2->coord.y;\r
-                       if(y2<pymin)\r
-                       {\r
-                               y2 = pymin;\r
-                       }\r
-                       x2 = (e->c) - (e->b) * y2;\r
-               }\r
-\r
-               if (((x1> pxmax) & (x2>pxmax)) | ((x1<pxmin)&(x2<pxmin)))\r
-               {\r
-                       // Line completely outside clipbox\r
-                       //printf("\nClipLine jumping out(3), x1 = %f, pxmin = %f, pxmax = %f",x1,pxmin,pxmax);\r
-                       return;\r
-               }\r
-               if(x1 > pxmax)\r
-               {\r
-                       x1 = pxmax;\r
-                       y1 = (e -> c - x1)/e -> b;\r
-               }\r
-               if(x1 < pxmin)\r
-               {\r
-                       x1 = pxmin;\r
-                       y1 = (e -> c - x1)/e -> b;\r
-               }\r
-               if(x2 > pxmax)\r
-               {\r
-                       x2 = pxmax;\r
-                       y2 = (e -> c - x2)/e -> b;\r
-               }\r
-               if(x2 < pxmin)\r
-               {\r
-                       x2 = pxmin;\r
-                       y2 = (e -> c - x2)/e -> b;\r
-               }\r
-       }\r
-       else\r
-       {\r
-               if (    s1!=(struct Site *)NULL\r
-                       && s1->coordout.y > pymin && s1->coordout.y < pymax\r
-                       && s1->coordout.x > pxmin && s1->coordout.x < pxmax)\r
-               {\r
-                       x1 = s1->coordout.x;\r
-                       y1 = s1->coordout.y;\r
-               }\r
-               else\r
-               {\r
-                       boundary1 = 1;\r
-                       x1 = pxmin;\r
-                       if (s1!=(struct Site *)NULL && s1->coord.x > pxmin)\r
-                               x1 = s1->coord.x;\r
-                       if(x1>pxmax) \r
-                       {\r
-                               //printf("\nClipped (3) x1 = %f to %f",x1,pxmin);\r
-                               //return;\r
-                               x1 = pxmax;\r
-                       }\r
-                       y1 = e -> c - e -> a * x1;\r
-               }\r
-\r
-               if (    s2!=(struct Site *)NULL\r
-                       && s2->coordout.y > pymin && s2->coordout.y < pymax\r
-                       && s2->coordout.x > pxmin && s2->coordout.x < pxmax)\r
-               {\r
-                       x2 = s2->coordout.x;\r
-                       y2 = s2->coordout.y;\r
-               }\r
-               else\r
-               {\r
-                       boundary2 = 1;\r
-                       x2 = pxmax;\r
-                       if (s2!=(struct Site *)NULL && s2->coord.x < pxmax)\r
-                               x2 = s2->coord.x;\r
-                       if(x2<pxmin)\r
-                       {\r
-                               //printf("\nClipped (4) x2 = %f to %f",x2,pxmin);\r
-                               //return;\r
-                               x2 = pxmin;\r
-                       }\r
-                       y2 = e -> c - e -> a * x2;\r
-               }\r
-\r
-               if (((y1> pymax) & (y2>pymax)) | ((y1<pymin)&(y2<pymin)))\r
-               {\r
-                       //printf("\nClipLine jumping out(6), y1 = %f, pymin = %f, pymax = %f",y2,pymin,pymax);\r
-                       return;\r
-               }\r
-               if(y1 > pymax)\r
-               {       y1 = pymax; x1 = (e -> c - y1)/e -> a;};\r
-               if(y1 < pymin)\r
-               {       y1 = pymin; x1 = (e -> c - y1)/e -> a;};\r
-               if(y2 > pymax)\r
-               {       y2 = pymax; x2 = (e -> c - y2)/e -> a;};\r
-               if(y2 < pymin)\r
-               {       y2 = pymin; x2 = (e -> c - y2)/e -> a;};\r
-       };\r
-\r
-        if(sqrt(((x2 - x1) * (x2 - x1)) + ((y2 - y1) * (y2 - y1))) == 0)\r
-       {\r
-               return;\r
-       }\r
-\r
-        pushpoint(ts1->sitenbr, x1, y1, boundary1);\r
-        pushpoint(ts2->sitenbr, x2, y2, boundary2);\r
-        pushpoint(ts1->sitenbr, x2, y2, boundary2);\r
-        pushpoint(ts2->sitenbr, x1, y1, boundary1);\r
-}\r
-\r
-\r
-/* implicit parameters: nsites, sqrt_nsites, xmin, xmax, ymin, ymax,\r
-deltax, deltay (can all be estimates).\r
-Performance suffers if they are wrong; better to make nsites,\r
-deltax, and deltay too big than too small.  (?) */\r
-\r
-bool VoronoiDiagramGenerator::voronoi(int triangulate)\r
-{\r
-       struct Site *newsite, *bot, *top, *temp, *p;\r
-       struct Site *v;\r
-       struct Point newintstar;\r
-       int pm;\r
-       struct Halfedge *lbnd, *rbnd, *llbnd, *rrbnd, *bisector;\r
-       struct Edge *e, *e2, *e3;\r
-\r
-       PQinitialize();\r
-       bottomsite = nextone();\r
-       out_site(bottomsite);\r
-       bool retval = ELinitialize();\r
-\r
-       if(!retval)\r
-               return false;\r
-\r
-       newsite = nextone();\r
-       while(1)\r
-       {\r
-\r
-               if(!PQempty())\r
-                       newintstar = PQ_min();\r
-\r
-               //if the lowest site has a smaller y value than the lowest vector intersection, process the site\r
-               //otherwise process the vector intersection             \r
-\r
-               if (newsite != (struct Site *)NULL      && (PQempty() || newsite -> coord.y < newintstar.y\r
-                       || (newsite->coord.y == newintstar.y && newsite->coord.x < newintstar.x)))\r
-               {/* new site is smallest - this is a site event*/\r
-                       out_site(newsite);                                              //output the site\r
-                       lbnd = ELleftbnd(&(newsite->coord));                            //get the first HalfEdge to the LEFT of the new site\r
-                       rbnd = ELright(lbnd);                                           //get the first HalfEdge to the RIGHT of the new site\r
-                       bot = rightreg(lbnd);                                           //if this halfedge has no edge, , bot = bottom site (whatever that is)\r
-                       e = bisect(bot, newsite);                                       //create a new edge that bisects \r
-                       bisector = HEcreate(e, le);                                     //create a new HalfEdge, setting its ELpm field to 0                    \r
-                       ELinsert(lbnd, bisector);                                       //insert this new bisector edge between the left and right vectors in a linked list     \r
-\r
-                       if ((p = intersect(lbnd, bisector)) != (struct Site *) NULL)    //if the new bisector intersects with the left edge, remove the left edge's vertex, and put in the new one\r
-                       {       \r
-                               PQdelete(lbnd);\r
-                               PQinsert(lbnd, p, dist(p,newsite));\r
-                       };\r
-                       lbnd = bisector;                                                \r
-                       bisector = HEcreate(e, re);                                     //create a new HalfEdge, setting its ELpm field to 1\r
-                       ELinsert(lbnd, bisector);                                       //insert the new HE to the right of the original bisector earlier in the IF stmt\r
-\r
-                       if ((p = intersect(bisector, rbnd)) != (struct Site *) NULL)    //if this new bisector intersects with the\r
-                       {\r
-                               PQinsert(bisector, p, dist(p,newsite));                 //push the HE into the ordered linked list of vertices\r
-                       };\r
-                       newsite = nextone();\r
-               }\r
-               else if (!PQempty()) /* intersection is smallest - this is a vector event */\r
-               {\r
-                       lbnd = PQextractmin();                                          //pop the HalfEdge with the lowest vector off the ordered list of vectors                               \r
-                       llbnd = ELleft(lbnd);                                           //get the HalfEdge to the left of the above HE\r
-                       rbnd = ELright(lbnd);                                           //get the HalfEdge to the right of the above HE\r
-                       rrbnd = ELright(rbnd);                                          //get the HalfEdge to the right of the HE to the right of the lowest HE \r
-                       bot = leftreg(lbnd);                                            //get the Site to the left of the left HE which it bisects\r
-                       top = rightreg(rbnd);                                           //get the Site to the right of the right HE which it bisects\r
-\r
-                       out_triple(bot, top, rightreg(lbnd));           //output the triple of sites, stating that a circle goes through them\r
-\r
-                       v = lbnd->vertex;                                               //get the vertex that caused this event\r
-                       makevertex(v);                                                  //set the vertex number - couldn't do this earlier since we didn't know when it would be processed\r
-                       e2 = lbnd->ELedge;\r
-                       e3 = rbnd->ELedge;\r
-                       endpoint(lbnd->ELedge,lbnd->ELpm,v);    //set the endpoint of the left HalfEdge to be this vector\r
-                       endpoint(rbnd->ELedge,rbnd->ELpm,v);    //set the endpoint of the right HalfEdge to be this vector\r
-                       ELdelete(lbnd);                                                 //mark the lowest HE for deletion - can't delete yet because there might be pointers to it in Hash Map  \r
-                       PQdelete(rbnd);                                                 //remove all vertex events to do with the  right HE\r
-                       ELdelete(rbnd);                                                 //mark the right HE for deletion - can't delete yet because there might be pointers to it in Hash Map   \r
-                       pm = le;                                                                //set the pm variable to zero\r
-\r
-                       if (bot->coord.y > top->coord.y)                //if the site to the left of the event is higher than the Site\r
-                       {                                                                               //to the right of it, then swap them and set the 'pm' variable to 1\r
-                               temp = bot;\r
-                               bot = top;\r
-                               top = temp;\r
-                               pm = re;\r
-                       }\r
-                       e = bisect(bot, top);                                   //create an Edge (or line) that is between the two Sites. This creates\r
-                                                                                                       //the formula of the line, and assigns a line number to it\r
-                       bisector = HEcreate(e, pm);                             //create a HE from the Edge 'e', and make it point to that edge with its ELedge field\r
-                       ELinsert(llbnd, bisector);                              //insert the new bisector to the right of the left HE\r
-                       endpoint(e, re-pm, v, e2, e3);                                  //set one endpoint to the new edge to be the vector point 'v'.\r
-                                                                                                       //If the site to the left of this bisector is higher than the right\r
-                                                                                                       //Site, then this endpoint is put in position 0; otherwise in pos 1\r
-                       deref(v);                                                               //delete the vector 'v'\r
-\r
-                       //if left HE and the new bisector don't intersect, then delete the left HE, and reinsert it\r
-                       if((p = intersect(llbnd, bisector)) != (struct Site *) NULL)\r
-                       {\r
-                               PQdelete(llbnd);\r
-                               PQinsert(llbnd, p, dist(p,bot));\r
-                       };\r
-\r
-                       //if right HE and the new bisector don't intersect, then reinsert it\r
-                       if ((p = intersect(bisector, rrbnd)) != (struct Site *) NULL)\r
-                       {\r
-                               PQinsert(bisector, p, dist(p,bot));\r
-                       };\r
-               }\r
-               else break;\r
-       };\r
-\r
-       for(lbnd=ELright(ELleftend); lbnd != ELrightend; lbnd=ELright(lbnd))\r
-       {\r
-               e = lbnd -> ELedge;\r
-\r
-               clip_line(e);\r
-       };\r
-\r
-       cleanup();\r
-\r
-       return true;\r
-}\r
-\r
-\r
-int scomp(const void *p1,const void *p2)\r
-{\r
-       struct Point *s1 = (Point*)p1, *s2=(Point*)p2;\r
-       if(s1 -> y < s2 -> y) return(-1);\r
-       if(s1 -> y > s2 -> y) return(1);\r
-       if(s1 -> x < s2 -> x) return(-1);\r
-       if(s1 -> x > s2 -> x) return(1);\r
-       return(0);\r
-}\r
-\r
-int spcomp(const void *p1,const void *p2)\r
-{\r
-       struct SourcePoint *s1 = (SourcePoint*)p1, *s2=(SourcePoint*)p2;\r
-       if(s1 -> y < s2 -> y) return(-1);\r
-       if(s1 -> y > s2 -> y) return(1);\r
-       if(s1 -> x < s2 -> x) return(-1);\r
-       if(s1 -> x > s2 -> x) return(1);\r
-       return(0);\r
-}\r
-\r
-int anglecomp(const void * p1, const void * p2)\r
-{\r
-        PolygonPoint * s1 = (PolygonPoint *)p1 ;\r
-        PolygonPoint * s2 = (PolygonPoint *)p2 ;\r
-\r
-        if (s1->angle < s2->angle) {\r
-                return (-1) ;\r
-        }\r
-        if (s1->angle > s2->angle) {\r
-                return (1) ;\r
-        }\r
-        return (0) ;\r
-}\r
-\r
-/* return a single in-storage site */\r
-struct Site * VoronoiDiagramGenerator::nextone()\r
-{\r
-       struct Site *s;\r
-       if(siteidx < nsites)\r
-       {\r
-               s = &sites[siteidx];\r
-               siteidx += 1;\r
-               return(s);\r
-       }\r
-       else\r
-               return( (struct Site *)NULL);\r
-}\r
-\r
diff --git a/nominatim/voronoi/VoronoiDiagramGenerator.h b/nominatim/voronoi/VoronoiDiagramGenerator.h
deleted file mode 100644 (file)
index 2e1aefe..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-/*\r
-* The author of this software is Steven Fortune.  Copyright (c) 1994 by AT&T\r
-* Bell Laboratories.\r
-* Permission to use, copy, modify, and distribute this software for any\r
-* purpose without fee is hereby granted, provided that this entire notice\r
-* is included in all copies of any software which is or includes a copy\r
-* or modification of this software and in all copies of the supporting\r
-* documentation for such software.\r
-* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED\r
-* WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY\r
-* REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY\r
-* OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.\r
-*/\r
-\r
-/* \r
-* This code was originally written by Stephan Fortune in C code.  I, Shane O'Sullivan, \r
-* have since modified it, encapsulating it in a C++ class and, fixing memory leaks and \r
-* adding accessors to the Voronoi Edges.\r
-* Permission to use, copy, modify, and distribute this software for any\r
-* purpose without fee is hereby granted, provided that this entire notice\r
-* is included in all copies of any software which is or includes a copy\r
-* or modification of this software and in all copies of the supporting\r
-* documentation for such software.\r
-* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED\r
-* WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY\r
-* REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY\r
-* OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.\r
-*/\r
-\r
-#ifndef VORONOI_DIAGRAM_GENERATOR\r
-#define VORONOI_DIAGRAM_GENERATOR\r
-\r
-#include <math.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-\r
-\r
-#ifndef NULL\r
-#define NULL 0\r
-#endif\r
-#define DELETED -2\r
-\r
-#define le 0\r
-#define re 1\r
-\r
-struct SourcePoint\r
-{\r
-        int id;\r
-        double weight;\r
-        double x;\r
-        double y;\r
-};\r
-\r
-struct Freenode        \r
-{\r
-       struct  Freenode *nextfree;\r
-};\r
-\r
-struct FreeNodeArrayList\r
-{\r
-       struct  Freenode* memory;\r
-       struct  FreeNodeArrayList* next;\r
-\r
-};\r
-\r
-struct Freelist        \r
-{\r
-       struct  Freenode        *head;\r
-       int             nodesize;\r
-};\r
-\r
-struct Point   \r
-{\r
-       float x,y;\r
-};\r
-\r
-struct PolygonPoint\r
-{\r
-       struct  Point   coord;\r
-        double          angle;\r
-       int     boundary;\r
-};\r
-\r
-struct Polygon\r
-{\r
-        int            sitenbr;\r
-       struct  Point   coord;\r
-        int             numpoints;\r
-        struct PolygonPoint * pointlist;\r
-        int             boundary;\r
-};\r
-\r
-\r
-// structure used both for sites and for vertices \r
-struct Site    \r
-{\r
-       struct  Point   coord;\r
-       struct  Point   coordout;\r
-       double          weight;\r
-       int             sitenbr;\r
-       int             refcnt;\r
-};\r
-\r
-\r
-\r
-struct Edge    \r
-{\r
-       float   a,b,c;\r
-       struct  Site    *ep[2];\r
-       struct  Site    *reg[2];\r
-       int             edgenbr;\r
-\r
-};\r
-\r
-struct GraphEdge\r
-{\r
-       float x1,y1,x2,y2;\r
-       struct GraphEdge* next;\r
-};\r
-\r
-\r
-\r
-\r
-struct Halfedge \r
-{\r
-       struct  Halfedge        *ELleft, *ELright;\r
-       struct  Edge    *ELedge;\r
-       int             ELrefcnt;\r
-       char    ELpm;\r
-       struct  Site    *vertex;\r
-       float   ystar;\r
-       struct  Halfedge *PQnext;\r
-};\r
-\r
-\r
-\r
-\r
-class VoronoiDiagramGenerator\r
-{\r
-public:\r
-       VoronoiDiagramGenerator();\r
-       ~VoronoiDiagramGenerator();\r
-\r
-       bool generateVoronoi(struct SourcePoint* srcPoints, int numPoints, float minX, float maxX, float minY, float maxY, float minDist=0);\r
-       void getSitePoints(int sitenbr, int* numpoints, PolygonPoint** pS);\r
-\r
-       void resetIterator()\r
-       {\r
-               iteratorEdges = allEdges;\r
-       }\r
-\r
-       bool getNext(float& x1, float& y1, float& x2, float& y2)\r
-       {\r
-               if(iteratorEdges == 0)\r
-                       return false;\r
-               \r
-               x1 = iteratorEdges->x1;\r
-               x2 = iteratorEdges->x2;\r
-               y1 = iteratorEdges->y1;\r
-               y2 = iteratorEdges->y2;\r
-\r
-               iteratorEdges = iteratorEdges->next;\r
-\r
-               return true;\r
-       }\r
-\r
-\r
-private:\r
-       void cleanup();\r
-       void cleanupEdges();\r
-       char *getfree(struct Freelist *fl);     \r
-       struct Halfedge *PQfind();\r
-       int PQempty();\r
-\r
-\r
-       \r
-       struct  Halfedge **ELhash;\r
-       struct  Halfedge *HEcreate(), *ELleft(), *ELright(), *ELleftbnd();\r
-       struct  Halfedge *HEcreate(struct Edge *e,int pm);\r
-\r
-\r
-       struct Point PQ_min();\r
-       struct Halfedge *PQextractmin();        \r
-       void freeinit(struct Freelist *fl,int size);\r
-       void makefree(struct Freenode *curr,struct Freelist *fl);\r
-       void geominit();\r
-       void plotinit();\r
-       bool voronoi(int triangulate);\r
-       void ref(struct Site *v);\r
-       void deref(struct Site *v);\r
-       void endpoint(struct Edge *e,int lr,struct Site * s);\r
-       void endpoint(struct Edge *e1,int lr,struct Site * s, struct Edge *e2, struct Edge *e3);\r
-\r
-       void ELdelete(struct Halfedge *he);\r
-       struct Halfedge *ELleftbnd(struct Point *p);\r
-       struct Halfedge *ELright(struct Halfedge *he);\r
-       void makevertex(struct Site *v);\r
-       void out_triple(struct Site *s1, struct Site *s2,struct Site * s3);\r
-\r
-       void PQinsert(struct Halfedge *he,struct Site * v, float offset);\r
-       void PQdelete(struct Halfedge *he);\r
-       bool ELinitialize();\r
-       void ELinsert(struct    Halfedge *lb, struct Halfedge *newHe);\r
-       struct Halfedge * ELgethash(int b);\r
-       struct Halfedge *ELleft(struct Halfedge *he);\r
-       struct Site *leftreg(struct Halfedge *he);\r
-       void out_site(struct Site *s);\r
-       bool PQinitialize();\r
-       int PQbucket(struct Halfedge *he);\r
-       void pushpoint(int sitenbr, double x, double y, int boundary);\r
-       int ccw( Point p0, Point p1, Point p2 );\r
-       void clip_line(struct Edge *e);\r
-       char *myalloc(unsigned n);\r
-       int right_of(struct Halfedge *el,struct Point *p);\r
-\r
-       struct Site *rightreg(struct Halfedge *he);\r
-       struct Edge *bisect(struct      Site *s1,struct Site *s2);\r
-       float dist(struct Site *s,struct Site *t);\r
-       struct Site *intersect(struct Halfedge *el1, struct Halfedge *el2, struct Point *p=0);\r
-\r
-       void out_bisector(struct Edge *e);\r
-       void out_ep(struct Edge *e);\r
-       void out_vertex(struct Site *v);\r
-       struct Site *nextone();\r
-\r
-       void pushGraphEdge(float x1, float y1, float x2, float y2);\r
-\r
-       void openpl();\r
-       void line(float x1, float y1, float x2, float y2);\r
-       void circle(float x, float y, float radius);\r
-       void range(float minX, float minY, float maxX, float maxY);\r
-\r
-\r
-       struct  Freelist        hfl;\r
-       struct  Halfedge *ELleftend, *ELrightend;\r
-       int     ELhashsize;\r
-\r
-       int             triangulate, sorted, plot, debug;\r
-       float   xmin, xmax, ymin, ymax, deltax, deltay;\r
-\r
-       struct  Site    *sites;\r
-       struct Polygon *polygons;\r
-       struct Point    corners[4];\r
-       int             nsites;\r
-       int             siteidx;\r
-       int             sqrt_nsites;\r
-       int             nvertices;\r
-       struct  Freelist sfl;\r
-       struct  Site    *bottomsite;\r
-\r
-       int             nedges;\r
-       struct  Freelist efl;\r
-       int             PQhashsize;\r
-       struct  Halfedge *PQhash;\r
-       int             PQcount;\r
-       int             PQmin;\r
-\r
-       int             ntry, totalsearch;\r
-       float   pxmin, pxmax, pymin, pymax, cradius;\r
-       int             total_alloc;\r
-\r
-       float borderMinX, borderMaxX, borderMinY, borderMaxY;\r
-\r
-       FreeNodeArrayList* allMemoryList;\r
-       FreeNodeArrayList* currentMemoryBlock;\r
-\r
-       GraphEdge* allEdges;\r
-       GraphEdge* iteratorEdges;\r
-\r
-       float minDistanceBetweenSites;\r
-       \r
-};\r
-\r
-int scomp(const void *p1,const void *p2);\r
-int spcomp(const void *p1,const void *p2);\r
-int anglecomp(const void * p1, const void * p2);\r
-\r
-\r
-#endif\r
-\r
-\r
diff --git a/nominatim/voronoi/voronoi_main.cpp b/nominatim/voronoi/voronoi_main.cpp
deleted file mode 100644 (file)
index e55a117..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*\r
-* The author of this software is Shane O'Sullivan.  \r
-* Permission to use, copy, modify, and distribute this software for any\r
-* purpose without fee is hereby granted, provided that this entire notice\r
-* is included in all copies of any software which is or includes a copy\r
-* or modification of this software and in all copies of the supporting\r
-* documentation for such software.\r
-* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED\r
-* WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY\r
-* REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY\r
-* OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.\r
-*/\r
-\r
-\r
-#\r
-#include <stdio.h>\r
-#include <search.h>\r
-#include <malloc.h>\r
-#include "VoronoiDiagramGenerator.h"\r
-\r
-\r
-\r
-int main(int argc, char **argv) \r
-{      \r
-        double xmin, xmax, ymin, ymax;\r
-        scanf("%lf %lf %lf %lf", &xmin, &xmax, &ymin, &ymax) ;\r
-\r
-        SourcePoint * sites;\r
-        long nsites;\r
-\r
-        nsites = 0;\r
-        sites = (SourcePoint *) malloc(4000 * sizeof(SourcePoint));\r
-        while (scanf("%d %lf %lf %lf", &sites[nsites].id, &sites[nsites].weight, &sites[nsites].x, &sites[nsites].y) != EOF)\r
-        {\r
-                nsites++;\r
-                if (nsites % 4000 == 0) {\r
-                        sites = (SourcePoint *)realloc(sites,(nsites+4000)*sizeof(SourcePoint));\r
-                }\r
-        }\r
-\r
-        VoronoiDiagramGenerator * pvdg;\r
-        pvdg = new VoronoiDiagramGenerator();\r
-        pvdg->generateVoronoi(sites, nsites, xmin, xmax, ymin, ymax, 0);\r
-\r
-//     printf("sites %ld\n-------------------------------\n", nsites);\r
-        PolygonPoint* pSitePoints;\r
-        int numpoints, i, j;\r
-        for(i = 0; i < nsites; i++)\r
-        {\r
-                pvdg->getSitePoints(i, &numpoints, &pSitePoints);\r
-                if (numpoints == 0)\r
-                {\r
-                        printf("-- no points for %d\n", i);\r
-                }\r
-                else\r
-                {\r
-\r
-\r
-                        printf("update temp_child_4076440_0 set resultgeom = st_setsrid('POLYGON((");\r
-                        for(j = 0; j < numpoints; j++)\r
-                        {\r
-                                printf("%.15lf %.15lf,", pSitePoints[j].coord.x, pSitePoints[j].coord.y, (pSitePoints[j].angle/M_PI)*180);\r
-                        }\r
-                        printf("%.15lf %.15lf", pSitePoints[0].coord.x, pSitePoints[0].coord.y, (pSitePoints[j].angle/M_PI)*180);\r
-                        printf("))'::geometry,4326) where id = %d;\n", sites[i].id);\r
-\r
-                }\r
-        }\r
-\r
-       float x1,y1,x2,y2;\r
-//     printf("sites %ld\n-------------------------------\n", nsites);\r
-       pvdg->resetIterator();\r
-       while(pvdg->getNext(x1,y1,x2,y2))\r
-       {\r
-               printf("(%f %f,%f %f)\n",x1,y1,x2, y2);\r
-               \r
-       }\r
-\r
-        delete pvdg;\r
-        free(sites);\r
-\r
-       return 0;\r
-}\r
-\r
-\r
-\r
index 93b73e5f5c3b20e80027ecf272f553d26f49f2e8..cb7655a4ff7df7c93eb444e36035701b92b2ec35 160000 (submodule)
--- a/osm2pgsql
+++ b/osm2pgsql
@@ -1 +1 @@
-Subproject commit 93b73e5f5c3b20e80027ecf272f553d26f49f2e8
+Subproject commit cb7655a4ff7df7c93eb444e36035701b92b2ec35
diff --git a/settings/address-levels.json b/settings/address-levels.json
new file mode 100644 (file)
index 0000000..10cbf30
--- /dev/null
@@ -0,0 +1,112 @@
+[
+{ "tags" : {
+      "place" : {
+          "sea" : [2, 0],
+          "continent" : [2, 0],
+          "country" : [4, 0],
+          "state" : [8, 0],
+          "province" : [8, 0],
+          "region" : [18, 0],
+          "county" : 12,
+          "city" : 16,
+          "island" : [17, 0],
+          "town" : [18, 16],
+          "village" : [19, 16],
+          "municipality" : [19, 16],
+          "district" : [19, 16],
+          "borough" : [19, 18],
+          "hamlet" : 20,
+          "suburb" : 20,
+          "croft" : 20,
+          "subdivision" : 20,
+          "isolated_dwelling" : 20,
+          "allotments" : 20,
+          "farm" : [20, 0],
+          "locality" : [20, 0],
+          "islet" : [20, 0],
+          "mountain_pass" : [20, 0],
+          "neighbourhood" : 22,
+          "quarter" : 22,
+          "city_block" : 22,
+          "houses" : [28, 0]
+      },
+      "boundary" : {
+          "administrative2" : 4,
+          "administrative3" : 6,
+          "administrative4" : 8,
+          "administrative5" : 10,
+          "administrative6" : 12,
+          "administrative7" : 14,
+          "administrative8" : 16,
+          "administrative9" : 18,
+          "administrative10" : 20,
+          "administrative11" : 22,
+          "administrative12" : 24
+      },
+      "landuse" : {
+          "residential" : 22,
+          "farm" : 22,
+          "farmyard" : 22,
+          "industrial" : 22,
+          "commercial" : 22,
+          "allotments" : 22,
+          "retail" : 22,
+          "" : [22, 0]
+      },
+      "leisure" : {
+          "park" : [24, 0]
+      },
+      "natural" : {
+          "peak" : [18, 0],
+          "volcano" : [18, 0],
+          "mountain_range" : [18, 0],
+          "sea" : [4, 0]
+      },
+      "waterway" : {
+          "river" : [19, 0],
+          "stream" : [22, 0],
+          "ditch" : [22, 0],
+          "drain" : [22, 0],
+          "" : [20, 0]
+      },
+      "highway" : {
+          "" : 26,
+          "service" : 27,
+          "cycleway" : 27,
+          "path" : 27,
+          "footway" : 27,
+          "steps" : 27,
+          "bridleway" : 27,
+          "motorway_link" : 27,
+          "primary_link" : 27,
+          "trunk_link" : 27,
+          "secondary_link" : 27,
+          "tertiary_link" : 27
+      },
+      "mountain_pass" : {
+          "" : [20, 0]
+      },
+      "historic" : {
+          "neighbourhood" : [30, 0]
+      }
+  }
+},
+{ "countries" : [ "de" ],
+  "tags" : {
+      "place" : {
+          "county" : [12, 0]
+      },
+      "boundary" : {
+          "administrative5" : [10, 0]
+      }
+  }
+},
+{ "countries" : [ "be" ],
+  "tags" : {
+      "boundary" : {
+          "administrative7" : [14, 0]
+      }
+  }
+}
+]
+
index 8cdbcb5aa2344688554682dcfc5bb92a97d48cf0..f5220cd0160937166c83317672eae19a4caa1776 100644 (file)
@@ -7,7 +7,7 @@ if (isset($_GET['debug']) && $_GET['debug']) @define('CONST_Debug', true);
 
 // General settings
 @define('CONST_Debug', false);
-@define('CONST_Database_DSN', 'pgsql://@/nominatim'); // <driver>://<username>:<password>@<host>:<port>/<database>
+@define('CONST_Database_DSN', 'pgsql:dbname=nominatim'); // or add ;host=...;port=...;user=...;password=...
 @define('CONST_Database_Web_User', 'www-data');
 @define('CONST_Database_Module_Path', CONST_InstallPath.'/module');
 @define('CONST_Max_Word_Frequency', '50000');
@@ -23,8 +23,6 @@ if (isset($_GET['debug']) && $_GET['debug']) @define('CONST_Debug', true);
 // term. Spaces are kept but collapsed to one standard space.
 @define('CONST_Term_Normalization_Rules', ":: NFD (); [[:Nonspacing Mark:] [:Cf:]] >;  :: lower (); [[:Punctuation:][:Space:]]+ > ' '; :: NFC ();");
 
-// Set to false to avoid importing extra postcodes for the US.
-@define('CONST_Use_Extra_US_Postcodes', true);
 /* Set to true after importing Tiger house number data for the US.
    Note: The tables must already exist or queries will throw errors.
          After changing this setting run ./utils/setup --create-functions
@@ -49,6 +47,9 @@ if (isset($_GET['debug']) && $_GET['debug']) @define('CONST_Debug', true);
 @define('CONST_Pyosmium_Binary', '@PYOSMIUM_PATH@');
 @define('CONST_Tiger_Data_Path', CONST_ExtraDataPath.'/tiger');
 @define('CONST_Wikipedia_Data_Path', CONST_ExtraDataPath);
+@define('CONST_Phrase_Config', CONST_BasePath.'/settings/phrase_settings.php');
+@define('CONST_Address_Level_Config', CONST_BasePath.'/settings/address-levels.json');
+@define('CONST_Import_Style', CONST_BasePath.'/settings/import-full.style');
 
 // osm2pgsql settings
 @define('CONST_Osm2pgsql_Flatnode_File', null);
diff --git a/settings/import-address.style b/settings/import-address.style
new file mode 100644 (file)
index 0000000..8d622ec
--- /dev/null
@@ -0,0 +1,116 @@
+[
+{
+    "keys" : [ "" ],
+    "values" : {
+        "no" : "skip"
+    }
+},
+{
+    "keys" : ["name:prefix", "name:suffix", "name:botanical", "*wikidata"],
+    "values" : {
+        "" : "skip"
+    }
+},
+{
+    "keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
+              "iata", "icao", "pcode"],
+    "values" : {
+        "" : "ref"
+    }
+},
+{
+    "keys" : ["name", "name:*", "int_name", "int_name:*", "nat_name", "nat_name:*",
+              "reg_name", "reg_name:*", "loc_name", "loc_name:*",
+              "old_name", "old_name:*", "alt_name", "alt_name:*", "alt_name_*",
+              "official_name", "official_name:*", "place_name", "place_name:*",
+              "short_name", "short_name:*", "brand"],
+    "values" : {
+        "" : "name"
+    }
+},
+{
+    "keys" : ["landuse"],
+    "values" : {
+        "cemetry" : "skip",
+        "" : "fallback,with_name"
+    }
+},
+{
+    "keys" : ["boundary"],
+    "values" : {
+        "administrative" : "main"
+    }
+},
+{
+    "keys" : ["place"],
+    "values" : {
+        "" : "main"
+    }
+},
+{
+    "keys" : ["addr:housename"],
+    "values" : {
+        "" : "name,house"
+    }
+},
+{
+    "keys" : ["addr:housenumber", "addr:conscriptionnumber", "addr:streetnumber"],
+    "values" : {
+        "" : "address,house"
+    }
+},
+{
+    "keys" : ["addr:interpolation"],
+    "values" : {
+        "" : "interpolation,address"
+    }
+},
+{
+    "keys" : ["postal_code", "postcode", "addr:postcode",
+              "tiger:zip_left", "tiger:zip_right"],
+    "values" : {
+        "" : "postcode,fallback"
+    }
+},
+{
+    "keys" : ["country_code", "ISO3166-1", "is_in:country_code", "is_in:country",
+              "addr:country", "addr:country_code"],
+    "values" : {
+        "" : "country"
+    }
+},
+{
+    "keys" : ["addr:*", "is_in:*", "tiger:county"],
+    "values" : {
+        "" : "address"
+    }
+},
+{
+    "keys" : ["highway"],
+    "values" : {
+        "motorway" : "main",
+        "trunk" : "main",
+        "primary" : "main",
+        "secondary" : "main",
+        "tertiary" : "main",
+        "unclassified" : "main",
+        "residential" : "main",
+        "living_street" : "main",
+        "pedestrian" : "main",
+        "road" : "main",
+        "service" : "main,with_name",
+        "cycleway" : "main,with_name",
+        "path" : "main,with_name",
+        "footway" : "main,with_name",
+        "steps" : "main,with_name",
+        "bridleway" : "main,with_name",
+        "track" : "main,with_name",
+        "byway": "main,with_name",
+        "motorway_link" : "main,with_name",
+        "trunk_link" : "main,with_name",
+        "primary_link" : "main,with_name",
+        "secondary_link" : "main,with_name",
+        "tertiary_link" : "main,with_name"
+    }
+}
+]
diff --git a/settings/import-admin.style b/settings/import-admin.style
new file mode 100644 (file)
index 0000000..2ad6cec
--- /dev/null
@@ -0,0 +1,70 @@
+[
+{
+    "keys" : ["name:prefix", "name:suffix", "name:botanical", "*wikidata"],
+    "values" : {
+        "" : "skip"
+    }
+},
+{
+    "keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
+              "iata", "icao", "pcode"],
+    "values" : {
+        "" : "ref"
+    }
+},
+{
+    "keys" : ["name", "name:*", "int_name", "int_name:*", "nat_name", "nat_name:*",
+              "reg_name", "reg_name:*", "loc_name", "loc_name:*",
+              "old_name", "old_name:*", "alt_name", "alt_name:*", "alt_name_*",
+              "official_name", "official_name:*", "place_name", "place_name:*",
+              "short_name", "short_name:*", "brand"],
+    "values" : {
+        "" : "name"
+    }
+},
+{
+    "keys" : ["landuse"],
+    "values" : {
+        "cemetry" : "skip",
+        "" : "fallback,with_name"
+    }
+},
+{
+    "keys" : ["boundary"],
+    "values" : {
+        "administrative" : "main"
+    }
+},
+{
+    "keys" : ["place"],
+    "values" : {
+        "" : "main"
+    }
+},
+{
+    "keys" : ["country_code", "ISO3166-1", "is_in:country_code", "is_in:country",
+              "addr:country", "addr:country_code"],
+    "values" : {
+        "" : "country"
+    }
+},
+{
+    "keys" : ["addr:*", "is_in:*", "tiger:county"],
+    "values" : {
+        "" : "address"
+    }
+},
+{
+    "keys" : ["postal_code", "postcode", "addr:postcode",
+              "tiger:zip_left", "tiger:zip_right"],
+    "values" : {
+        "" : "postcode"
+    }
+},
+{
+    "keys" : ["capital"],
+    "values" : {
+        "" : "extra"
+    }
+}
+]
diff --git a/settings/import-extratags.style b/settings/import-extratags.style
new file mode 100644 (file)
index 0000000..49c55e5
--- /dev/null
@@ -0,0 +1,238 @@
+[
+{
+    "keys" : ["*source"],
+    "values" : {
+        "" : "skip"
+    }
+},
+{
+    "keys" : ["name:prefix", "name:suffix", "name:botanical", "wikidata",
+              "*:wikidata"],
+    "values" : {
+        "" : "extra"
+    }
+},
+{
+    "keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
+              "iata", "icao", "pcode", "pcode:*"],
+    "values" : {
+        "" : "ref"
+    }
+},
+{
+    "keys" : ["name", "name:*", "int_name", "int_name:*", "nat_name", "nat_name:*",
+              "reg_name", "reg_name:*", "loc_name", "loc_name:*",
+              "old_name", "old_name:*", "alt_name", "alt_name:*", "alt_name_*",
+              "official_name", "official_name:*", "place_name", "place_name:*",
+              "short_name", "short_name:*", "brand"],
+    "values" : {
+        "" : "name"
+    }
+},
+{
+    "keys" : ["addr:housename"],
+    "values" : {
+        "" : "name,house"
+    }
+},
+{
+    "keys" : ["emergency"],
+    "values" : {
+        "fire_hydrant" : "skip",
+        "yes" : "skip",
+        "no" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["historic", "military"],
+    "values" : {
+        "no" : "skip",
+        "yes" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["natural"],
+    "values" : {
+        "yes" : "skip",
+        "no" : "skip",
+        "coastline" : "skip",
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["landuse"],
+    "values" : {
+        "cemetry" : "main,with_name",
+        "" : "main,fallback,with_name"
+    }
+},
+{
+    "keys" : ["highway"],
+    "values" : {
+        "no" : "skip",
+        "turning_circle" : "skip",
+        "mini_roundabout" : "skip",
+        "noexit" : "skip",
+        "crossing" : "skip",
+        "traffic_signals" : "main,with_name",
+        "service" : "main,with_name",
+        "cycleway" : "main,with_name",
+        "path" : "main,with_name",
+        "footway" : "main,with_name",
+        "steps" : "main,with_name",
+        "bridleway" : "main,with_name",
+        "track" : "main,with_name",
+        "byway": "main,with_name",
+        "motorway_link" : "main,with_name",
+        "trunk_link" : "main,with_name",
+        "primary_link" : "main,with_name",
+        "secondary_link" : "main,with_name",
+        "tertiary_link" : "main,with_name",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["railway"],
+    "values" : {
+        "level_crossing" : "skip",
+        "no" : "skip",
+        "rail" : "extra",
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["man_made"],
+    "values" : {
+        "survey_point" : "skip",
+        "cutline" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["aerialway"],
+    "values" : {
+        "pylon" : "skip",
+        "no" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["boundary"],
+    "values" : {
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["amenity"],
+    "values" : {
+        "restaurant" : "main,operator",
+        "fuel" : "main,operator"
+    }
+},
+{
+    "keys" : ["aeroway", "amenity", "club", "craft", "leisure",
+              "office", "mountain_pass"],
+    "values" : {
+        "no" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["shop"],
+    "values" : {
+        "no" : "skip",
+        "" : "main,operator"
+    }
+},
+{
+    "keys" : ["tourism"],
+    "values" : {
+        "yes" : "skip",
+        "no" : "skip",
+        "" : "main,operator"
+    }
+},
+{
+    "keys" : ["bridge", "tunnel"],
+    "values" : {
+        "" : "main,with_name_key"
+    }
+},
+{
+    "keys" : ["waterway"],
+    "values" : {
+        "riverbank" : "skip",
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["place"],
+    "values" : {
+        "" : "main"
+    }
+},
+{
+    "keys" : ["junction"],
+    "values" : {
+        "" : "main,fallback,with_name"
+    }
+},
+{
+    "keys" : ["postal_code", "postcode", "addr:postcode",
+              "tiger:zip_left", "tiger:zip_right"],
+    "values" : {
+        "" : "postcode,fallback"
+    }
+},
+{
+    "keys" : ["country_code", "ISO3166-1", "is_in:country_code", "is_in:country",
+              "addr:country", "addr:country_code"],
+    "values" : {
+        "" : "country"
+    }
+},
+{
+    "keys" : ["addr:housenumber", "addr:conscriptionnumber", "addr:streetnumber"],
+    "values" : {
+        "" : "address,house"
+    }
+},
+{
+    "keys" : ["addr:interpolation"],
+    "values" : {
+        "" : "interpolation,address"
+    }
+},
+{
+    "keys" : ["addr:*", "is_in:*", "tiger:county", "is_in"],
+    "values" : {
+        "" : "address"
+    }
+},
+{
+    "keys" : ["building"],
+    "values" : {
+        "no" : "skip",
+        "" : "main,fallback,with_name"
+    }
+},
+{
+    "keys" : ["note", "note:*", "source", "source*", "attribution",
+              "comment", "fixme", "FIXME", "created_by", "tiger:*", "NHD:*",
+              "nhd:*", "gnis:*", "geobase:*", "KSJ2:*", "yh:*",
+              "osak:*", "naptan:*", "CLC:*", "import", "it:fvg:*",
+              "type", "lacounty:*", "ref:ruian:*", "building:ruian:type",
+              "ref:linz:*"],
+    "values" : {
+        "" : "skip"
+    }
+},
+{
+    "keys" : [""],
+    "values" : {
+        "" : "extra"
+    }
+}
+]
diff --git a/settings/import-full.style b/settings/import-full.style
new file mode 100644 (file)
index 0000000..e876fae
--- /dev/null
@@ -0,0 +1,240 @@
+[
+{
+    "keys" : ["*source"],
+    "values" : {
+        "" : "skip"
+    }
+},
+{
+    "keys" : ["name:prefix", "name:suffix", "name:botanical", "wikidata",
+              "*:wikidata"],
+    "values" : {
+        "" : "extra"
+    }
+},
+{
+    "keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
+              "iata", "icao", "pcode", "pcode:*"],
+    "values" : {
+        "" : "ref"
+    }
+},
+{
+    "keys" : ["name", "name:*", "int_name", "int_name:*", "nat_name", "nat_name:*",
+              "reg_name", "reg_name:*", "loc_name", "loc_name:*",
+              "old_name", "old_name:*", "alt_name", "alt_name:*", "alt_name_*",
+              "official_name", "official_name:*", "place_name", "place_name:*",
+              "short_name", "short_name:*", "brand"],
+    "values" : {
+        "" : "name"
+    }
+},
+{
+    "keys" : ["addr:housename"],
+    "values" : {
+        "" : "name,house"
+    }
+},
+{
+    "keys" : ["emergency"],
+    "values" : {
+        "fire_hydrant" : "skip",
+        "yes" : "skip",
+        "no" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["historic", "military"],
+    "values" : {
+        "no" : "skip",
+        "yes" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["natural"],
+    "values" : {
+        "yes" : "skip",
+        "no" : "skip",
+        "coastline" : "skip",
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["landuse"],
+    "values" : {
+        "cemetry" : "main,with_name",
+        "" : "main,fallback,with_name"
+    }
+},
+{
+    "keys" : ["highway"],
+    "values" : {
+        "no" : "skip",
+        "turning_circle" : "skip",
+        "mini_roundabout" : "skip",
+        "noexit" : "skip",
+        "crossing" : "skip",
+        "traffic_signals" : "main,with_name",
+        "service" : "main,with_name",
+        "cycleway" : "main,with_name",
+        "path" : "main,with_name",
+        "footway" : "main,with_name",
+        "steps" : "main,with_name",
+        "bridleway" : "main,with_name",
+        "track" : "main,with_name",
+        "byway": "main,with_name",
+        "motorway_link" : "main,with_name",
+        "trunk_link" : "main,with_name",
+        "primary_link" : "main,with_name",
+        "secondary_link" : "main,with_name",
+        "tertiary_link" : "main,with_name",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["railway"],
+    "values" : {
+        "level_crossing" : "skip",
+        "no" : "skip",
+        "rail" : "skip",
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["man_made"],
+    "values" : {
+        "survey_point" : "skip",
+        "cutline" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["aerialway"],
+    "values" : {
+        "pylon" : "skip",
+        "no" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["boundary"],
+    "values" : {
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["amenity"],
+    "values" : {
+        "restaurant" : "main,operator",
+        "fuel" : "main,operator"
+    }
+},
+{
+    "keys" : ["aeroway", "amenity", "club", "craft", "leisure",
+              "office", "mountain_pass"],
+    "values" : {
+        "no" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["shop"],
+    "values" : {
+        "no" : "skip",
+        "" : "main,operator"
+    }
+},
+{
+    "keys" : ["tourism"],
+    "values" : {
+        "yes" : "skip",
+        "no" : "skip",
+        "" : "main,operator"
+    }
+},
+{
+    "keys" : ["bridge", "tunnel"],
+    "values" : {
+        "" : "main,with_name_key"
+    }
+},
+{
+    "keys" : ["waterway"],
+    "values" : {
+        "riverbank" : "skip",
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["place"],
+    "values" : {
+        "" : "main"
+    }
+},
+{
+    "keys" : ["junction"],
+    "values" : {
+        "" : "main,fallback,with_name"
+    }
+},
+{
+    "keys" : ["postal_code", "postcode", "addr:postcode",
+              "tiger:zip_left", "tiger:zip_right"],
+    "values" : {
+        "" : "postcode,fallback"
+    }
+},
+{
+    "keys" : ["country_code", "ISO3166-1", "is_in:country_code", "is_in:country",
+              "addr:country", "addr:country_code"],
+    "values" : {
+        "" : "country"
+    }
+},
+{
+    "keys" : ["addr:housenumber", "addr:conscriptionnumber", "addr:streetnumber"],
+    "values" : {
+        "" : "address,house"
+    }
+},
+{
+    "keys" : ["addr:interpolation"],
+    "values" : {
+        "" : "interpolation,address"
+    }
+},
+{
+    "keys" : ["addr:*", "is_in:*", "tiger:county", "is_in"],
+    "values" : {
+        "" : "address"
+    }
+},
+{
+    "keys" : ["building"],
+    "values" : {
+        "no" : "skip",
+        "" : "main,fallback,with_name"
+    }
+},
+{
+    "keys" : ["tracktype", "traffic_calming", "service", "cuisine", "capital",
+              "dispensing", "religion", "denomination", "sport",
+              "internet_access", "lanes", "surface", "smoothness", "width",
+              "est_width", "incline", "opening_hours", "collection_times",
+              "service_times", "disused", "wheelchair", "sac_scale",
+              "trail_visibility", "mtb:scale", "mtb:description", "wood",
+              "drive_through", "drive_in", "access", "vehicle", "bicyle",
+              "foot", "goods", "hgv", "motor_vehicle", "motor_car", "oneway",
+              "date_on", "date_off", "day_on", "day_off", "hour_on", "hour_off",
+              "maxweight", "maxheight", "maxspeed", "fee", "toll", "charge",
+              "population", "description", "image", "attribution", "fax",
+              "email", "url", "website", "phone", "real_ale", "smoking",
+              "food", "camera", "brewery", "locality", "wikipedia",
+              "wikipedia:*", "access:*", "contact:*", "drink:*", "toll:*"],
+    "values" : {
+        "" : "extra"
+    }
+}
+]
diff --git a/settings/import-street.style b/settings/import-street.style
new file mode 100644 (file)
index 0000000..088c115
--- /dev/null
@@ -0,0 +1,85 @@
+[
+{
+    "keys" : ["name:prefix", "name:suffix", "name:botanical", "*wikidata"],
+    "values" : {
+        "" : "skip"
+    }
+},
+{
+    "keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
+              "iata", "icao", "pcode"],
+    "values" : {
+        "" : "ref"
+    }
+},
+{
+    "keys" : ["name", "name:*", "int_name", "int_name:*", "nat_name", "nat_name:*",
+              "reg_name", "reg_name:*", "loc_name", "loc_name:*",
+              "old_name", "old_name:*", "alt_name", "alt_name:*", "alt_name_*",
+              "official_name", "official_name:*", "place_name", "place_name:*",
+              "short_name", "short_name:*", "brand"],
+    "values" : {
+        "" : "name"
+    }
+},
+{
+    "keys" : ["landuse"],
+    "values" : {
+        "cemetry" : "skip",
+        "" : "fallback,with_name"
+    }
+},
+{
+    "keys" : ["boundary"],
+    "values" : {
+        "administrative" : "main"
+    }
+},
+{
+    "keys" : ["place"],
+    "values" : {
+        "" : "main"
+    }
+},
+{
+    "keys" : ["country_code", "ISO3166-1", "is_in:country_code", "is_in:country",
+              "addr:country", "addr:country_code"],
+    "values" : {
+        "" : "country"
+    }
+},
+{
+    "keys" : ["addr:*", "is_in:*", "tiger:county"],
+    "values" : {
+        "" : "address"
+    }
+},
+{
+    "keys" : ["highway"],
+    "values" : {
+        "motorway" : "main",
+        "trunk" : "main",
+        "primary" : "main",
+        "secondary" : "main",
+        "tertiary" : "main",
+        "unclassified" : "main",
+        "residential" : "main",
+        "living_street" : "main",
+        "pedestrian" : "main",
+        "road" : "main",
+        "service" : "main,with_name",
+        "cycleway" : "main,with_name",
+        "path" : "main,with_name",
+        "footway" : "main,with_name",
+        "steps" : "main,with_name",
+        "bridleway" : "main,with_name",
+        "track" : "main,with_name",
+        "byway": "main,with_name",
+        "motorway_link" : "main,with_name",
+        "trunk_link" : "main,with_name",
+        "primary_link" : "main,with_name",
+        "secondary_link" : "main,with_name",
+        "tertiary_link" : "main,with_name"
+    }
+}
+]
diff --git a/settings/settings.php b/settings/settings.php
deleted file mode 100644 (file)
index d45a423..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php
-
-echo "ERROR: Scripts must be run from build directory.\n";
-exit;
diff --git a/sql/functions.sql b/sql/functions.sql
deleted file mode 100644 (file)
index 024d1ca..0000000
+++ /dev/null
@@ -1,2957 +0,0 @@
--- Splits the line at the given point and returns the two parts
--- in a multilinestring.
-CREATE OR REPLACE FUNCTION split_line_on_node(line GEOMETRY, point GEOMETRY)
-RETURNS GEOMETRY
-  AS $$
-BEGIN
-  RETURN ST_Split(ST_Snap(line, point, 0.0005), point);
-END;
-$$
-LANGUAGE plpgsql;
-
-
-CREATE OR REPLACE FUNCTION geometry_sector(partition INTEGER, place geometry) RETURNS INTEGER
-  AS $$
-DECLARE
-  NEWgeometry geometry;
-BEGIN
---  RAISE WARNING '%',place;
-  NEWgeometry := ST_PointOnSurface(place);
-  RETURN (partition*1000000) + (500-ST_X(NEWgeometry)::integer)*1000 + (500-ST_Y(NEWgeometry)::integer);
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION transliteration(text) RETURNS text
-  AS '{modulepath}/nominatim.so', 'transliteration'
-LANGUAGE c IMMUTABLE STRICT;
-
-CREATE OR REPLACE FUNCTION gettokenstring(text) RETURNS text
-  AS '{modulepath}/nominatim.so', 'gettokenstring'
-LANGUAGE c IMMUTABLE STRICT;
-
-CREATE OR REPLACE FUNCTION make_standard_name(name TEXT) RETURNS TEXT
-  AS $$
-DECLARE
-  o TEXT;
-BEGIN
-  o := public.gettokenstring(public.transliteration(name));
-  RETURN trim(substr(o,1,length(o)));
-END;
-$$
-LANGUAGE 'plpgsql' IMMUTABLE;
-
--- returns NULL if the word is too common
-CREATE OR REPLACE FUNCTION getorcreate_word_id(lookup_word TEXT) 
-  RETURNS INTEGER
-  AS $$
-DECLARE
-  lookup_token TEXT;
-  return_word_id INTEGER;
-  count INTEGER;
-BEGIN
-  lookup_token := trim(lookup_word);
-  SELECT min(word_id), max(search_name_count) FROM word WHERE word_token = lookup_token and class is null and type is null into return_word_id, count;
-  IF return_word_id IS NULL THEN
-    return_word_id := nextval('seq_word');
-    INSERT INTO word VALUES (return_word_id, lookup_token, null, null, null, null, 0);
-  ELSE
-    IF count > get_maxwordfreq() THEN
-      return_word_id := NULL;
-    END IF;
-  END IF;
-  RETURN return_word_id;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION getorcreate_housenumber_id(lookup_word TEXT)
-  RETURNS INTEGER
-  AS $$
-DECLARE
-  lookup_token TEXT;
-  return_word_id INTEGER;
-BEGIN
-  lookup_token := ' '||trim(lookup_word);
-  SELECT min(word_id) FROM word WHERE word_token = lookup_token and class='place' and type='house' into return_word_id;
-  IF return_word_id IS NULL THEN
-    return_word_id := nextval('seq_word');
-    INSERT INTO word VALUES (return_word_id, lookup_token, null, 'place', 'house', null, 0);
-  END IF;
-  RETURN return_word_id;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION getorcreate_postcode_id(postcode TEXT)
-  RETURNS INTEGER
-  AS $$
-DECLARE
-  lookup_token TEXT;
-  lookup_word TEXT;
-  return_word_id INTEGER;
-BEGIN
-  lookup_word := upper(trim(postcode));
-  lookup_token := ' ' || make_standard_name(lookup_word);
-  SELECT min(word_id) FROM word WHERE word_token = lookup_token and class='place' and type='postcode' into return_word_id;
-  IF return_word_id IS NULL THEN
-    return_word_id := nextval('seq_word');
-    INSERT INTO word VALUES (return_word_id, lookup_token, lookup_word, 'place', 'postcode', null, 0);
-  END IF;
-  RETURN return_word_id;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION getorcreate_country(lookup_word TEXT, lookup_country_code varchar(2))
-  RETURNS INTEGER
-  AS $$
-DECLARE
-  lookup_token TEXT;
-  return_word_id INTEGER;
-BEGIN
-  lookup_token := ' '||trim(lookup_word);
-  SELECT min(word_id) FROM word WHERE word_token = lookup_token and country_code=lookup_country_code into return_word_id;
-  IF return_word_id IS NULL THEN
-    return_word_id := nextval('seq_word');
-    INSERT INTO word VALUES (return_word_id, lookup_token, null, null, null, lookup_country_code, 0);
-  END IF;
-  RETURN return_word_id;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION getorcreate_amenity(lookup_word TEXT, normalized_word TEXT, lookup_class text, lookup_type text)
-  RETURNS INTEGER
-  AS $$
-DECLARE
-  lookup_token TEXT;
-  return_word_id INTEGER;
-BEGIN
-  lookup_token := ' '||trim(lookup_word);
-  SELECT min(word_id) FROM word WHERE word_token = lookup_token and word=normalized_word and class=lookup_class and type = lookup_type into return_word_id;
-  IF return_word_id IS NULL THEN
-    return_word_id := nextval('seq_word');
-    INSERT INTO word VALUES (return_word_id, lookup_token, normalized_word, lookup_class, lookup_type, null, 0);
-  END IF;
-  RETURN return_word_id;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION getorcreate_amenityoperator(lookup_word TEXT, normalized_word TEXT, lookup_class text, lookup_type text, op text)
-  RETURNS INTEGER
-  AS $$
-DECLARE
-  lookup_token TEXT;
-  return_word_id INTEGER;
-BEGIN
-  lookup_token := ' '||trim(lookup_word);
-  SELECT min(word_id) FROM word WHERE word_token = lookup_token and word=normalized_word and class=lookup_class and type = lookup_type and operator = op into return_word_id;
-  IF return_word_id IS NULL THEN
-    return_word_id := nextval('seq_word');
-    INSERT INTO word VALUES (return_word_id, lookup_token, normalized_word, lookup_class, lookup_type, null, 0, op);
-  END IF;
-  RETURN return_word_id;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION getorcreate_name_id(lookup_word TEXT, src_word TEXT) 
-  RETURNS INTEGER
-  AS $$
-DECLARE
-  lookup_token TEXT;
-  nospace_lookup_token TEXT;
-  return_word_id INTEGER;
-BEGIN
-  lookup_token := ' '||trim(lookup_word);
-  SELECT min(word_id) FROM word WHERE word_token = lookup_token and class is null and type is null into return_word_id;
-  IF return_word_id IS NULL THEN
-    return_word_id := nextval('seq_word');
-    INSERT INTO word VALUES (return_word_id, lookup_token, src_word, null, null, null, 0);
---    nospace_lookup_token := replace(replace(lookup_token, '-',''), ' ','');
---    IF ' '||nospace_lookup_token != lookup_token THEN
---      INSERT INTO word VALUES (return_word_id, '-'||nospace_lookup_token, null, src_word, null, null, null, 0, null);
---    END IF;
-  END IF;
-  RETURN return_word_id;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION getorcreate_name_id(lookup_word TEXT) 
-  RETURNS INTEGER
-  AS $$
-DECLARE
-BEGIN
-  RETURN getorcreate_name_id(lookup_word, '');
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION get_word_id(lookup_word TEXT) 
-  RETURNS INTEGER
-  AS $$
-DECLARE
-  lookup_token TEXT;
-  return_word_id INTEGER;
-BEGIN
-  lookup_token := trim(lookup_word);
-  SELECT min(word_id) FROM word WHERE word_token = lookup_token and class is null and type is null into return_word_id;
-  RETURN return_word_id;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION get_name_id(lookup_word TEXT) 
-  RETURNS INTEGER
-  AS $$
-DECLARE
-  lookup_token TEXT;
-  return_word_id INTEGER;
-BEGIN
-  lookup_token := ' '||trim(lookup_word);
-  SELECT min(word_id) FROM word WHERE word_token = lookup_token and class is null and type is null into return_word_id;
-  RETURN return_word_id;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION get_name_ids(lookup_word TEXT)
-  RETURNS INTEGER[]
-  AS $$
-DECLARE
-  lookup_token TEXT;
-  return_word_ids INTEGER[];
-BEGIN
-  lookup_token := ' '||trim(lookup_word);
-  SELECT array_agg(word_id) FROM word WHERE word_token = lookup_token and class is null and type is null into return_word_ids;
-  RETURN return_word_ids;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION array_merge(a INTEGER[], b INTEGER[])
-  RETURNS INTEGER[]
-  AS $$
-DECLARE
-  i INTEGER;
-  r INTEGER[];
-BEGIN
-  IF array_upper(a, 1) IS NULL THEN
-    RETURN b;
-  END IF;
-  IF array_upper(b, 1) IS NULL THEN
-    RETURN a;
-  END IF;
-  r := a;
-  FOR i IN 1..array_upper(b, 1) LOOP  
-    IF NOT (ARRAY[b[i]] <@ r) THEN
-      r := r || b[i];
-    END IF;
-  END LOOP;
-  RETURN r;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION reverse_place_diameter(rank_search SMALLINT)
-  RETURNS FLOAT
-  AS $$
-BEGIN
-  IF rank_search <= 4 THEN
-    RETURN 5.0;
-  ELSIF rank_search <= 8 THEN
-    RETURN 1.8;
-  ELSIF rank_search <= 12 THEN
-    RETURN 0.6;
-  ELSIF rank_search <= 17 THEN
-    RETURN 0.16;
-  ELSIF rank_search <= 18 THEN
-    RETURN 0.08;
-  ELSIF rank_search <= 19 THEN
-    RETURN 0.04;
-  END IF;
-
-  RETURN 0.02;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION get_postcode_rank(country_code VARCHAR(2), postcode TEXT,
-                                      OUT rank_search SMALLINT, OUT rank_address SMALLINT)
-AS $$
-DECLARE
-  part TEXT;
-BEGIN
-    rank_search := 30;
-    rank_address := 30;
-    postcode := upper(postcode);
-
-    IF country_code = 'gb' THEN
-        IF postcode ~ '^([A-Z][A-Z]?[0-9][0-9A-Z]? [0-9][A-Z][A-Z])$' THEN
-            rank_search := 25;
-            rank_address := 5;
-        ELSEIF postcode ~ '^([A-Z][A-Z]?[0-9][0-9A-Z]? [0-9])$' THEN
-            rank_search := 23;
-            rank_address := 5;
-        ELSEIF postcode ~ '^([A-Z][A-Z]?[0-9][0-9A-Z])$' THEN
-            rank_search := 21;
-            rank_address := 5;
-        END IF;
-
-    ELSEIF country_code = 'sg' THEN
-        IF postcode ~ '^([0-9]{6})$' THEN
-            rank_search := 25;
-            rank_address := 11;
-        END IF;
-
-    ELSEIF country_code = 'de' THEN
-        IF postcode ~ '^([0-9]{5})$' THEN
-            rank_search := 21;
-            rank_address := 11;
-        END IF;
-
-    ELSE
-        -- Guess at the postcode format and coverage (!)
-        IF postcode ~ '^[A-Z0-9]{1,5}$' THEN -- Probably too short to be very local
-            rank_search := 21;
-            rank_address := 11;
-        ELSE
-            -- Does it look splitable into and area and local code?
-            part := substring(postcode from '^([- :A-Z0-9]+)([- :][A-Z0-9]+)$');
-
-            IF part IS NOT NULL THEN
-                rank_search := 25;
-                rank_address := 11;
-            ELSEIF postcode ~ '^[- :A-Z0-9]{6,}$' THEN
-                rank_search := 21;
-                rank_address := 11;
-            END IF;
-        END IF;
-    END IF;
-
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
--- Find the nearest artificial postcode for the given geometry.
--- TODO For areas there should not be more than two inside the geometry.
-CREATE OR REPLACE FUNCTION get_nearest_postcode(country VARCHAR(2), geom GEOMETRY) RETURNS TEXT
-  AS $$
-DECLARE
-  outcode TEXT;
-  cnt INTEGER;
-BEGIN
-    -- If the geometry is an area then only one postcode must be within
-    -- that area, otherwise consider the area as not having a postcode.
-    IF ST_GeometryType(geom) in ('ST_Polygon','ST_MultiPolygon') THEN
-        SELECT min(postcode), count(*) FROM
-              (SELECT postcode FROM location_postcode
-                WHERE ST_Contains(geom, location_postcode.geometry) LIMIT 2) sub
-          INTO outcode, cnt;
-
-        IF cnt = 1 THEN
-            RETURN outcode;
-        ELSE
-            RETURN null;
-        END IF;
-    END IF;
-
-    SELECT postcode FROM location_postcode
-     WHERE ST_DWithin(geom, location_postcode.geometry, 0.05)
-          AND location_postcode.country_code = country
-     ORDER BY ST_Distance(geom, location_postcode.geometry) LIMIT 1
-    INTO outcode;
-
-    RETURN outcode;
-END;
-$$
-LANGUAGE plpgsql;
-
-
-CREATE OR REPLACE FUNCTION create_country(src HSTORE, lookup_country_code varchar(2)) RETURNS VOID
-  AS $$
-DECLARE
-  s TEXT;
-  w INTEGER;
-  words TEXT[];
-  item RECORD;
-  j INTEGER;
-BEGIN
-  FOR item IN SELECT (each(src)).* LOOP
-
-    s := make_standard_name(item.value);
-    w := getorcreate_country(s, lookup_country_code);
-
-    words := regexp_split_to_array(item.value, E'[,;()]');
-    IF array_upper(words, 1) != 1 THEN
-      FOR j IN 1..array_upper(words, 1) LOOP
-        s := make_standard_name(words[j]);
-        IF s != '' THEN
-          w := getorcreate_country(s, lookup_country_code);
-        END IF;
-      END LOOP;
-    END IF;
-  END LOOP;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION make_keywords(src HSTORE) RETURNS INTEGER[]
-  AS $$
-DECLARE
-  result INTEGER[];
-  s TEXT;
-  w INTEGER;
-  words TEXT[];
-  item RECORD;
-  j INTEGER;
-BEGIN
-  result := '{}'::INTEGER[];
-
-  FOR item IN SELECT (each(src)).* LOOP
-
-    s := make_standard_name(item.value);
-
-    w := getorcreate_name_id(s, item.value);
-
-    IF not(ARRAY[w] <@ result) THEN
-      result := result || w;
-    END IF;
-
-    w := getorcreate_word_id(s);
-
-    IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
-      result := result || w;
-    END IF;
-
-    words := string_to_array(s, ' ');
-    IF array_upper(words, 1) IS NOT NULL THEN
-      FOR j IN 1..array_upper(words, 1) LOOP
-        IF (words[j] != '') THEN
-          w = getorcreate_word_id(words[j]);
-          IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
-            result := result || w;
-          END IF;
-        END IF;
-      END LOOP;
-    END IF;
-
-    words := regexp_split_to_array(item.value, E'[,;()]');
-    IF array_upper(words, 1) != 1 THEN
-      FOR j IN 1..array_upper(words, 1) LOOP
-        s := make_standard_name(words[j]);
-        IF s != '' THEN
-          w := getorcreate_word_id(s);
-          IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
-            result := result || w;
-          END IF;
-        END IF;
-      END LOOP;
-    END IF;
-
-    s := regexp_replace(item.value, '市$', '');
-    IF s != item.value THEN
-      s := make_standard_name(s);
-      IF s != '' THEN
-        w := getorcreate_name_id(s, item.value);
-        IF NOT (ARRAY[w] <@ result) THEN
-          result := result || w;
-        END IF;
-      END IF;
-    END IF;
-
-  END LOOP;
-
-  RETURN result;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION make_keywords(src TEXT) RETURNS INTEGER[]
-  AS $$
-DECLARE
-  result INTEGER[];
-  s TEXT;
-  w INTEGER;
-  words TEXT[];
-  i INTEGER;
-  j INTEGER;
-BEGIN
-  result := '{}'::INTEGER[];
-
-  s := make_standard_name(src);
-  w := getorcreate_name_id(s, src);
-
-  IF NOT (ARRAY[w] <@ result) THEN
-    result := result || w;
-  END IF;
-
-  w := getorcreate_word_id(s);
-
-  IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
-    result := result || w;
-  END IF;
-
-  words := string_to_array(s, ' ');
-  IF array_upper(words, 1) IS NOT NULL THEN
-    FOR j IN 1..array_upper(words, 1) LOOP
-      IF (words[j] != '') THEN
-        w = getorcreate_word_id(words[j]);
-        IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
-          result := result || w;
-        END IF;
-      END IF;
-    END LOOP;
-  END IF;
-
-  words := regexp_split_to_array(src, E'[,;()]');
-  IF array_upper(words, 1) != 1 THEN
-    FOR j IN 1..array_upper(words, 1) LOOP
-      s := make_standard_name(words[j]);
-      IF s != '' THEN
-        w := getorcreate_word_id(s);
-        IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
-          result := result || w;
-        END IF;
-      END IF;
-    END LOOP;
-  END IF;
-
-  s := regexp_replace(src, '市$', '');
-  IF s != src THEN
-    s := make_standard_name(s);
-    IF s != '' THEN
-      w := getorcreate_name_id(s, src);
-      IF NOT (ARRAY[w] <@ result) THEN
-        result := result || w;
-      END IF;
-    END IF;
-  END IF;
-
-  RETURN result;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION get_country_code(place geometry) RETURNS TEXT
-  AS $$
-DECLARE
-  place_centre GEOMETRY;
-  nearcountry RECORD;
-BEGIN
-  place_centre := ST_PointOnSurface(place);
-
--- RAISE WARNING 'get_country_code, start: %', ST_AsText(place_centre);
-
-  -- Try for a OSM polygon
-  FOR nearcountry IN select country_code from location_area_country where country_code is not null and not isguess and st_covers(geometry, place_centre) limit 1
-  LOOP
-    RETURN nearcountry.country_code;
-  END LOOP;
-
--- RAISE WARNING 'osm fallback: %', ST_AsText(place_centre);
-
-  -- Try for OSM fallback data
-  -- The order is to deal with places like HongKong that are 'states' within another polygon
-  FOR nearcountry IN select country_code from country_osm_grid where st_covers(geometry, place_centre) order by area asc limit 1
-  LOOP
-    RETURN nearcountry.country_code;
-  END LOOP;
-
--- RAISE WARNING 'natural earth: %', ST_AsText(place_centre);
-
-  -- Natural earth data
-  FOR nearcountry IN select country_code from country_naturalearthdata where st_covers(geometry, place_centre) limit 1
-  LOOP
-    RETURN nearcountry.country_code;
-  END LOOP;
-
--- RAISE WARNING 'near osm fallback: %', ST_AsText(place_centre);
-
-  -- 
-  FOR nearcountry IN select country_code from country_osm_grid where st_dwithin(geometry, place_centre, 0.5) order by st_distance(geometry, place_centre) asc, area asc limit 1
-  LOOP
-    RETURN nearcountry.country_code;
-  END LOOP;
-
--- RAISE WARNING 'near natural earth: %', ST_AsText(place_centre);
-
-  -- Natural earth data 
-  FOR nearcountry IN select country_code from country_naturalearthdata where st_dwithin(geometry, place_centre, 0.5) limit 1
-  LOOP
-    RETURN nearcountry.country_code;
-  END LOOP;
-
-  RETURN NULL;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION get_country_language_code(search_country_code VARCHAR(2)) RETURNS TEXT
-  AS $$
-DECLARE
-  nearcountry RECORD;
-BEGIN
-  FOR nearcountry IN select distinct country_default_language_code from country_name where country_code = search_country_code limit 1
-  LOOP
-    RETURN lower(nearcountry.country_default_language_code);
-  END LOOP;
-  RETURN NULL;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION get_country_language_codes(search_country_code VARCHAR(2)) RETURNS TEXT[]
-  AS $$
-DECLARE
-  nearcountry RECORD;
-BEGIN
-  FOR nearcountry IN select country_default_language_codes from country_name where country_code = search_country_code limit 1
-  LOOP
-    RETURN lower(nearcountry.country_default_language_codes);
-  END LOOP;
-  RETURN NULL;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION get_partition(in_country_code VARCHAR(10)) RETURNS INTEGER
-  AS $$
-DECLARE
-  nearcountry RECORD;
-BEGIN
-  FOR nearcountry IN select partition from country_name where country_code = in_country_code
-  LOOP
-    RETURN nearcountry.partition;
-  END LOOP;
-  RETURN 0;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION delete_location(OLD_place_id BIGINT) RETURNS BOOLEAN
-  AS $$
-DECLARE
-BEGIN
-  DELETE FROM location_area where place_id = OLD_place_id;
--- TODO:location_area
-  RETURN true;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION add_location(
-    place_id BIGINT,
-    country_code varchar(2),
-    partition INTEGER,
-    keywords INTEGER[],
-    rank_search INTEGER,
-    rank_address INTEGER,
-    in_postcode TEXT,
-    geometry GEOMETRY
-  ) 
-  RETURNS BOOLEAN
-  AS $$
-DECLARE
-  locationid INTEGER;
-  centroid GEOMETRY;
-  diameter FLOAT;
-  x BOOLEAN;
-  splitGeom RECORD;
-  secgeo GEOMETRY;
-  postcode TEXT;
-BEGIN
-
-  IF rank_search > 25 THEN
-    RAISE EXCEPTION 'Adding location with rank > 25 (% rank %)', place_id, rank_search;
-  END IF;
-
-  x := deleteLocationArea(partition, place_id, rank_search);
-
-  -- add postcode only if it contains a single entry, i.e. ignore postcode lists
-  postcode := NULL;
-  IF in_postcode is not null AND in_postcode not similar to '%(,|;)%' THEN
-      postcode := upper(trim (in_postcode));
-  END IF;
-
-  IF ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') THEN
-    centroid := ST_Centroid(geometry);
-
-    FOR secgeo IN select split_geometry(geometry) AS geom LOOP
-      x := insertLocationAreaLarge(partition, place_id, country_code, keywords, rank_search, rank_address, false, postcode, centroid, secgeo);
-    END LOOP;
-
-  ELSE
-
-    diameter := 0.02;
-    IF rank_address = 0 THEN
-      diameter := 0.02;
-    ELSEIF rank_search <= 14 THEN
-      diameter := 1.2;
-    ELSEIF rank_search <= 15 THEN
-      diameter := 1;
-    ELSEIF rank_search <= 16 THEN
-      diameter := 0.5;
-    ELSEIF rank_search <= 17 THEN
-      diameter := 0.2;
-    ELSEIF rank_search <= 21 THEN
-      diameter := 0.05;
-    ELSEIF rank_search = 25 THEN
-      diameter := 0.005;
-    END IF;
-
---    RAISE WARNING 'adding % diameter %', place_id, diameter;
-
-    secgeo := ST_Buffer(geometry, diameter);
-    x := insertLocationAreaLarge(partition, place_id, country_code, keywords, rank_search, rank_address, true, postcode, ST_Centroid(geometry), secgeo);
-
-  END IF;
-
-  RETURN true;
-END;
-$$
-LANGUAGE plpgsql;
-
-
--- find the parent road of the cut road parts
-CREATE OR REPLACE FUNCTION get_interpolation_parent(wayid BIGINT, street TEXT, place TEXT,
-                                                    partition INTEGER, centroid GEOMETRY, geom GEOMETRY)
-RETURNS BIGINT AS $$
-DECLARE
-  addr_street TEXT;
-  addr_place TEXT;
-  parent_place_id BIGINT;
-  address_street_word_ids INTEGER[];
-
-  waynodes BIGINT[];
-
-  location RECORD;
-BEGIN
-  addr_street = street;
-  addr_place = place;
-
-  IF addr_street is null and addr_place is null THEN
-    select nodes from planet_osm_ways where id = wayid INTO waynodes;
-    FOR location IN SELECT placex.address from placex
-                    where osm_type = 'N' and osm_id = ANY(waynodes)
-                          and placex.address is not null
-                          and (placex.address ? 'street' or placex.address ? 'place')
-                          and indexed_status < 100
-                    limit 1 LOOP
-      addr_street = location.address->'street';
-      addr_place = location.address->'place';
-    END LOOP;
-  END IF;
-
-  IF addr_street IS NOT NULL THEN
-    address_street_word_ids := get_name_ids(make_standard_name(addr_street));
-    IF address_street_word_ids IS NOT NULL THEN
-      FOR location IN SELECT place_id from getNearestNamedRoadFeature(partition, centroid, address_street_word_ids) LOOP
-        parent_place_id := location.place_id;
-      END LOOP;
-    END IF;
-  END IF;
-
-  IF parent_place_id IS NULL AND addr_place IS NOT NULL THEN
-    address_street_word_ids := get_name_ids(make_standard_name(addr_place));
-    IF address_street_word_ids IS NOT NULL THEN
-      FOR location IN SELECT place_id from getNearestNamedPlaceFeature(partition, centroid, address_street_word_ids) LOOP
-        parent_place_id := location.place_id;
-      END LOOP;
-    END IF;
-  END IF;
-
-  IF parent_place_id is null THEN
-    FOR location IN SELECT place_id FROM placex
-        WHERE ST_DWithin(geom, placex.geometry, 0.001) and placex.rank_search = 26
-        ORDER BY (ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,0))+
-                  ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,0.5))+
-                  ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,1))) ASC limit 1
-    LOOP
-      parent_place_id := location.place_id;
-    END LOOP;
-  END IF;
-
-  IF parent_place_id is null THEN
-    RETURN 0;
-  END IF;
-
-  RETURN parent_place_id;
-END;
-$$
-LANGUAGE plpgsql;
-
-
-CREATE OR REPLACE FUNCTION osmline_insert() RETURNS TRIGGER
-  AS $$
-BEGIN
-  NEW.place_id := nextval('seq_place');
-  NEW.indexed_date := now();
-
-  IF NEW.indexed_status IS NULL THEN
-      IF NEW.address is NULL OR NOT NEW.address ? 'interpolation'
-         OR NEW.address->'interpolation' NOT IN ('odd', 'even', 'all') THEN
-          -- other interpolation types than odd/even/all (e.g. numeric ones) are not supported
-          RETURN NULL;
-      END IF;
-
-      NEW.indexed_status := 1; --STATUS_NEW
-      NEW.country_code := lower(get_country_code(NEW.linegeo));
-
-      NEW.partition := get_partition(NEW.country_code);
-      NEW.geometry_sector := geometry_sector(NEW.partition, NEW.linegeo);
-  END IF;
-
-  RETURN NEW;
-END;
-$$
-LANGUAGE plpgsql;
-
-
-CREATE OR REPLACE FUNCTION placex_insert() RETURNS TRIGGER
-  AS $$
-DECLARE
-  i INTEGER;
-  postcode TEXT;
-  result BOOLEAN;
-  country_code VARCHAR(2);
-  default_language VARCHAR(10);
-  diameter FLOAT;
-  classtable TEXT;
-  line RECORD;
-BEGIN
-  --DEBUG: RAISE WARNING '% % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
-
-  NEW.place_id := nextval('seq_place');
-  NEW.indexed_status := 1; --STATUS_NEW
-
-  NEW.country_code := lower(get_country_code(NEW.geometry));
-
-  NEW.partition := get_partition(NEW.country_code);
-  NEW.geometry_sector := geometry_sector(NEW.partition, NEW.geometry);
-
-  -- copy 'name' to or from the default language (if there is a default language)
-  IF NEW.name is not null AND array_upper(akeys(NEW.name),1) > 1 THEN
-    default_language := get_country_language_code(NEW.country_code);
-    IF default_language IS NOT NULL THEN
-      IF NEW.name ? 'name' AND NOT NEW.name ? ('name:'||default_language) THEN
-        NEW.name := NEW.name || hstore(('name:'||default_language), (NEW.name -> 'name'));
-      ELSEIF NEW.name ? ('name:'||default_language) AND NOT NEW.name ? 'name' THEN
-        NEW.name := NEW.name || hstore('name', (NEW.name -> ('name:'||default_language)));
-      END IF;
-    END IF;
-  END IF;
-
-  IF NEW.osm_type = 'X' THEN
-    -- E'X'ternal records should already be in the right format so do nothing
-  ELSE
-    NEW.rank_search := 30;
-    NEW.rank_address := NEW.rank_search;
-
-    -- By doing in postgres we have the country available to us - currently only used for postcode
-    IF NEW.class in ('place','boundary') AND NEW.type in ('postcode','postal_code') THEN
-
-        IF NEW.address IS NULL OR NOT NEW.address ? 'postcode' THEN
-            -- most likely just a part of a multipolygon postcode boundary, throw it away
-            RETURN NULL;
-        END IF;
-
-        NEW.name := hstore('ref', NEW.address->'postcode');
-
-        SELECT * FROM get_postcode_rank(NEW.country_code, NEW.address->'postcode')
-          INTO NEW.rank_search, NEW.rank_address;
-
-        IF NOT ST_GeometryType(NEW.geometry) IN ('ST_Polygon','ST_MultiPolygon') THEN
-            NEW.rank_address := 0;
-        END IF;
-
-    ELSEIF NEW.class = 'place' THEN
-      IF NEW.type in ('continent') THEN
-        NEW.rank_search := 2;
-        NEW.rank_address := NEW.rank_search;
-        NEW.country_code := NULL;
-      ELSEIF NEW.type in ('sea') THEN
-        NEW.rank_search := 2;
-        NEW.rank_address := 0;
-        NEW.country_code := NULL;
-      ELSEIF NEW.type in ('country') THEN
-        NEW.rank_search := 4;
-        NEW.rank_address := NEW.rank_search;
-      ELSEIF NEW.type in ('state') THEN
-        NEW.rank_search := 8;
-        NEW.rank_address := NEW.rank_search;
-      ELSEIF NEW.type in ('region') THEN
-        NEW.rank_search := 18; -- dropped from previous value of 10
-        NEW.rank_address := 0; -- So badly miss-used that better to just drop it!
-      ELSEIF NEW.type in ('county') THEN
-        NEW.rank_search := 12;
-        NEW.rank_address := NEW.rank_search;
-      ELSEIF NEW.type in ('city') THEN
-        NEW.rank_search := 16;
-        NEW.rank_address := NEW.rank_search;
-      ELSEIF NEW.type in ('island') THEN
-        NEW.rank_search := 17;
-        NEW.rank_address := 0;
-      ELSEIF NEW.type in ('town') THEN
-        NEW.rank_search := 18;
-        NEW.rank_address := 16;
-      ELSEIF NEW.type in ('village','hamlet','municipality','district','unincorporated_area','borough') THEN
-        NEW.rank_search := 19;
-        NEW.rank_address := 16;
-      ELSEIF NEW.type in ('suburb','croft','subdivision','isolated_dwelling') THEN
-        NEW.rank_search := 20;
-        NEW.rank_address := NEW.rank_search;
-      ELSEIF NEW.type in ('farm','locality','islet','mountain_pass') THEN
-        NEW.rank_search := 20;
-        NEW.rank_address := 0;
-        -- Irish townlands, tagged as place=locality and locality=townland
-        IF (NEW.extratags -> 'locality') = 'townland' THEN
-          NEW.rank_address := 20;
-        END IF;
-      ELSEIF NEW.type in ('neighbourhood') THEN
-        NEW.rank_search := 22;
-        NEW.rank_address := 22;
-      ELSEIF NEW.type in ('house','building') THEN
-        NEW.rank_search := 30;
-        NEW.rank_address := NEW.rank_search;
-      ELSEIF NEW.type in ('houses') THEN
-        -- can't guarantee all required nodes loaded yet due to caching in osm2pgsql
-        NEW.rank_search := 28;
-        NEW.rank_address := 0;
-      END IF;
-
-    ELSEIF NEW.class = 'boundary' THEN
-      IF ST_GeometryType(NEW.geometry) NOT IN ('ST_Polygon','ST_MultiPolygon') THEN
---        RAISE WARNING 'invalid boundary %',NEW.osm_id;
-        return NULL;
-      END IF;
-      NEW.rank_search := NEW.admin_level * 2;
-      IF NEW.type = 'administrative' THEN
-        NEW.rank_address := NEW.rank_search;
-      ELSE
-        NEW.rank_address := 0;
-      END IF;
-    ELSEIF NEW.class = 'landuse' AND ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon') THEN
-      NEW.rank_search := 22;
-      IF NEW.type in ('residential', 'farm', 'farmyard', 'industrial', 'commercial', 'allotments', 'retail') THEN
-        NEW.rank_address := NEW.rank_search;
-      ELSE
-        NEW.rank_address := 0;
-      END IF;
-    ELSEIF NEW.class = 'leisure' and NEW.type in ('park') THEN
-      NEW.rank_search := 24;
-      NEW.rank_address := 0;
-    ELSEIF NEW.class = 'natural' and NEW.type in ('peak','volcano','mountain_range') THEN
-      NEW.rank_search := 18;
-      NEW.rank_address := 0;
-    ELSEIF NEW.class = 'natural' and NEW.type = 'sea' THEN
-      NEW.rank_search := 4;
-      NEW.rank_address := NEW.rank_search;
-    -- any feature more than 5 square miles is probably worth indexing
-    ELSEIF ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon') AND ST_Area(NEW.geometry) > 0.1 THEN
-      NEW.rank_search := 22;
-      NEW.rank_address := 0;
-    ELSEIF NEW.class = 'railway' AND NEW.type in ('rail') THEN
-      RETURN NULL;
-    ELSEIF NEW.class = 'waterway' THEN
-      IF NEW.osm_type = 'R' THEN
-        NEW.rank_search := 16;
-      ELSE
-        NEW.rank_search := 17;
-      END IF;
-      NEW.rank_address := 0;
-    ELSEIF NEW.class = 'highway' AND NEW.osm_type != 'N' AND NEW.type in ('service','cycleway','path','footway','steps','bridleway','motorway_link','primary_link','trunk_link','secondary_link','tertiary_link') THEN
-      NEW.rank_search := 27;
-      NEW.rank_address := NEW.rank_search;
-    ELSEIF NEW.class = 'highway' AND NEW.osm_type != 'N' THEN
-      NEW.rank_search := 26;
-      NEW.rank_address := NEW.rank_search;
-    ELSEIF NEW.class = 'mountain_pass' THEN
-        NEW.rank_search := 20;
-        NEW.rank_address := 0;
-    END IF;
-
-  END IF;
-
-  IF NEW.rank_search > 30 THEN
-    NEW.rank_search := 30;
-  END IF;
-
-  IF NEW.rank_address > 30 THEN
-    NEW.rank_address := 30;
-  END IF;
-
-  IF (NEW.extratags -> 'capital') = 'yes' THEN
-    NEW.rank_search := NEW.rank_search - 1;
-  END IF;
-
-  -- a country code make no sense below rank 4 (country)
-  IF NEW.rank_search < 4 THEN
-    NEW.country_code := NULL;
-  END IF;
-
--- Block import below rank 22
---  IF NEW.rank_search > 22 THEN
---    RETURN NULL;
---  END IF;
-
-  --DEBUG: RAISE WARNING 'placex_insert:END: % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
-
-  RETURN NEW; -- %DIFFUPDATES% The following is not needed until doing diff updates, and slows the main index process down
-
-  IF NEW.rank_address > 0 THEN
-    IF (ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon') AND ST_IsValid(NEW.geometry)) THEN
-      -- Performance: We just can't handle re-indexing for country level changes
-      IF st_area(NEW.geometry) < 1 THEN
-        -- mark items within the geometry for re-indexing
-  --    RAISE WARNING 'placex poly insert: % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
-
-        -- work around bug in postgis, this may have been fixed in 2.0.0 (see http://trac.osgeo.org/postgis/ticket/547)
-        update placex set indexed_status = 2 where (st_covers(NEW.geometry, placex.geometry) OR ST_Intersects(NEW.geometry, placex.geometry)) 
-         AND rank_search > NEW.rank_search and indexed_status = 0 and ST_geometrytype(placex.geometry) = 'ST_Point' and (rank_search < 28 or name is not null or (NEW.rank_search >= 16 and address ? 'place'));
-        update placex set indexed_status = 2 where (st_covers(NEW.geometry, placex.geometry) OR ST_Intersects(NEW.geometry, placex.geometry)) 
-         AND rank_search > NEW.rank_search and indexed_status = 0 and ST_geometrytype(placex.geometry) != 'ST_Point' and (rank_search < 28 or name is not null or (NEW.rank_search >= 16 and address ? 'place'));
-      END IF;
-    ELSE
-      -- mark nearby items for re-indexing, where 'nearby' depends on the features rank_search and is a complete guess :(
-      diameter := 0;
-      -- 16 = city, anything higher than city is effectively ignored (polygon required!)
-      IF NEW.type='postcode' THEN
-        diameter := 0.05;
-      ELSEIF NEW.rank_search < 16 THEN
-        diameter := 0;
-      ELSEIF NEW.rank_search < 18 THEN
-        diameter := 0.1;
-      ELSEIF NEW.rank_search < 20 THEN
-        diameter := 0.05;
-      ELSEIF NEW.rank_search = 21 THEN
-        diameter := 0.001;
-      ELSEIF NEW.rank_search < 24 THEN
-        diameter := 0.02;
-      ELSEIF NEW.rank_search < 26 THEN
-        diameter := 0.002; -- 100 to 200 meters
-      ELSEIF NEW.rank_search < 28 THEN
-        diameter := 0.001; -- 50 to 100 meters
-      END IF;
-      IF diameter > 0 THEN
-  --      RAISE WARNING 'placex point insert: % % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type,diameter;
-        IF NEW.rank_search >= 26 THEN
-          -- roads may cause reparenting for >27 rank places
-          update placex set indexed_status = 2 where indexed_status = 0 and rank_search > NEW.rank_search and ST_DWithin(placex.geometry, NEW.geometry, diameter);
-          -- reparenting also for OSM Interpolation Lines (and for Tiger?)
-          update location_property_osmline set indexed_status = 2 where indexed_status = 0 and ST_DWithin(location_property_osmline.linegeo, NEW.geometry, diameter);
-        ELSEIF NEW.rank_search >= 16 THEN
-          -- up to rank 16, street-less addresses may need reparenting
-          update placex set indexed_status = 2 where indexed_status = 0 and rank_search > NEW.rank_search and ST_DWithin(placex.geometry, NEW.geometry, diameter) and (rank_search < 28 or name is not null or address ? 'place');
-        ELSE
-          -- for all other places the search terms may change as well
-          update placex set indexed_status = 2 where indexed_status = 0 and rank_search > NEW.rank_search and ST_DWithin(placex.geometry, NEW.geometry, diameter) and (rank_search < 28 or name is not null);
-        END IF;
-      END IF;
-    END IF;
-  END IF;
-
-
-   -- add to tables for special search
-   -- Note: won't work on initial import because the classtype tables
-   -- do not yet exist. It won't hurt either.
-  classtable := 'place_classtype_' || NEW.class || '_' || NEW.type;
-  SELECT count(*)>0 FROM pg_tables WHERE tablename = classtable and schemaname = current_schema() INTO result;
-  IF result THEN
-    EXECUTE 'INSERT INTO ' || classtable::regclass || ' (place_id, centroid) VALUES ($1,$2)' 
-    USING NEW.place_id, ST_Centroid(NEW.geometry);
-  END IF;
-
-  RETURN NEW;
-
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION osmline_update() RETURNS 
-TRIGGER
-  AS $$
-DECLARE
-  place_centroid GEOMETRY;
-  waynodes BIGINT[];
-  prevnode RECORD;
-  nextnode RECORD;
-  startnumber INTEGER;
-  endnumber INTEGER;
-  housenum INTEGER;
-  linegeo GEOMETRY;
-  splitline GEOMETRY;
-  sectiongeo GEOMETRY;
-  interpol_postcode TEXT;
-  postcode TEXT;
-BEGIN
-  -- deferred delete
-  IF OLD.indexed_status = 100 THEN
-    delete from location_property_osmline where place_id = OLD.place_id;
-    RETURN NULL;
-  END IF;
-
-  IF NEW.indexed_status != 0 OR OLD.indexed_status = 0 THEN
-    RETURN NEW;
-  END IF;
-
-  NEW.interpolationtype = NEW.address->'interpolation';
-
-  place_centroid := ST_PointOnSurface(NEW.linegeo);
-  NEW.parent_place_id = get_interpolation_parent(NEW.osm_id, NEW.address->'street',
-                                                 NEW.address->'place',
-                                                 NEW.partition, place_centroid, NEW.linegeo);
-
-  IF NEW.address is not NULL AND NEW.address ? 'postcode' AND NEW.address->'postcode' not similar to '%(,|;)%' THEN
-    interpol_postcode := NEW.address->'postcode';
-    housenum := getorcreate_postcode_id(NEW.address->'postcode');
-  ELSE
-    interpol_postcode := NULL;
-  END IF;
-
-  -- if the line was newly inserted, split the line as necessary
-  IF OLD.indexed_status = 1 THEN
-      select nodes from planet_osm_ways where id = NEW.osm_id INTO waynodes;
-
-      IF array_upper(waynodes, 1) IS NULL THEN
-        RETURN NEW;
-      END IF;
-
-      linegeo := NEW.linegeo;
-      startnumber := NULL;
-
-      FOR nodeidpos in 1..array_upper(waynodes, 1) LOOP
-
-        select osm_id, address, geometry
-          from place where osm_type = 'N' and osm_id = waynodes[nodeidpos]::BIGINT
-                           and address is not NULL and address ? 'housenumber' limit 1 INTO nextnode;
-        --RAISE NOTICE 'Nextnode.place_id: %s', nextnode.place_id;
-        IF nextnode.osm_id IS NOT NULL THEN
-          --RAISE NOTICE 'place_id is not null';
-          IF nodeidpos > 1 and nodeidpos < array_upper(waynodes, 1) THEN
-            -- Make sure that the point is actually on the line. That might
-            -- be a bit paranoid but ensures that the algorithm still works
-            -- should osm2pgsql attempt to repair geometries.
-            splitline := split_line_on_node(linegeo, nextnode.geometry);
-            sectiongeo := ST_GeometryN(splitline, 1);
-            linegeo := ST_GeometryN(splitline, 2);
-          ELSE
-            sectiongeo = linegeo;
-          END IF;
-          endnumber := substring(nextnode.address->'housenumber','[0-9]+')::integer;
-
-          IF startnumber IS NOT NULL AND endnumber IS NOT NULL
-             AND startnumber != endnumber
-             AND ST_GeometryType(sectiongeo) = 'ST_LineString' THEN
-
-            IF (startnumber > endnumber) THEN
-              housenum := endnumber;
-              endnumber := startnumber;
-              startnumber := housenum;
-              sectiongeo := ST_Reverse(sectiongeo);
-            END IF;
-
-            -- determine postcode
-            postcode := coalesce(interpol_postcode,
-                                 prevnode.address->'postcode',
-                                 nextnode.address->'postcode',
-                                 postcode);
-
-            IF postcode is NULL THEN
-                SELECT placex.postcode FROM placex WHERE place_id = NEW.parent_place_id INTO postcode;
-            END IF;
-            IF postcode is NULL THEN
-                postcode := get_nearest_postcode(NEW.country_code, nextnode.geometry);
-            END IF;
-
-            IF NEW.startnumber IS NULL THEN
-                NEW.startnumber := startnumber;
-                NEW.endnumber := endnumber;
-                NEW.linegeo := sectiongeo;
-                NEW.postcode := upper(trim(postcode));
-             ELSE
-              insert into location_property_osmline
-                     (linegeo, partition, osm_id, parent_place_id,
-                      startnumber, endnumber, interpolationtype,
-                      address, postcode, country_code,
-                      geometry_sector, indexed_status)
-              values (sectiongeo, NEW.partition, NEW.osm_id, NEW.parent_place_id,
-                      startnumber, endnumber, NEW.interpolationtype,
-                      NEW.address, postcode,
-                      NEW.country_code, NEW.geometry_sector, 0);
-             END IF;
-          END IF;
-
-          -- early break if we are out of line string,
-          -- might happen when a line string loops back on itself
-          IF ST_GeometryType(linegeo) != 'ST_LineString' THEN
-              RETURN NEW;
-          END IF;
-
-          startnumber := substring(nextnode.address->'housenumber','[0-9]+')::integer;
-          prevnode := nextnode;
-        END IF;
-      END LOOP;
-  END IF;
-
-  -- marking descendants for reparenting is not needed, because there are
-  -- actually no descendants for interpolation lines
-  RETURN NEW;
-END;
-$$
-LANGUAGE plpgsql;
-
--- Trigger for updates of location_postcode
---
--- Computes the parent object the postcode most likely refers to.
--- This will be the place that determines the address displayed when
--- searching for this postcode.
-CREATE OR REPLACE FUNCTION postcode_update() RETURNS
-TRIGGER
-  AS $$
-DECLARE
-  partition SMALLINT;
-  location RECORD;
-BEGIN
-    IF NEW.indexed_status != 0 OR OLD.indexed_status = 0 THEN
-        RETURN NEW;
-    END IF;
-
-    NEW.indexed_date = now();
-
-    partition := get_partition(NEW.country_code);
-
-    SELECT * FROM get_postcode_rank(NEW.country_code, NEW.postcode)
-      INTO NEW.rank_search, NEW.rank_address;
-
-    NEW.parent_place_id = 0;
-    FOR location IN
-      SELECT place_id
-        FROM getNearFeatures(partition, NEW.geometry, NEW.rank_search, '{}'::int[])
-        WHERE NOT isguess ORDER BY rank_address DESC LIMIT 1
-    LOOP
-        NEW.parent_place_id = location.place_id;
-    END LOOP;
-
-    RETURN NEW;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION placex_update() RETURNS
-TRIGGER
-  AS $$
-DECLARE
-
-  place_centroid GEOMETRY;
-
-  search_maxdistance FLOAT[];
-  search_mindistance FLOAT[];
-  address_havelevel BOOLEAN[];
-
-  i INTEGER;
-  iMax FLOAT;
-  location RECORD;
-  way RECORD;
-  relation RECORD;
-  relation_members TEXT[];
-  relMember RECORD;
-  linkedplacex RECORD;
-  addr_item RECORD;
-  search_diameter FLOAT;
-  search_prevdiameter FLOAT;
-  search_maxrank INTEGER;
-  address_maxrank INTEGER;
-  address_street_word_id INTEGER;
-  address_street_word_ids INTEGER[];
-  parent_place_id_rank BIGINT;
-
-  addr_street TEXT;
-  addr_place TEXT;
-
-  isin TEXT[];
-  isin_tokens INT[];
-
-  location_rank_search INTEGER;
-  location_distance FLOAT;
-  location_parent GEOMETRY;
-  location_isaddress BOOLEAN;
-  location_keywords INTEGER[];
-
-  default_language TEXT;
-  name_vector INTEGER[];
-  nameaddress_vector INTEGER[];
-
-  linked_node_id BIGINT;
-  linked_importance FLOAT;
-  linked_wikipedia TEXT;
-
-  result BOOLEAN;
-BEGIN
-  -- deferred delete
-  IF OLD.indexed_status = 100 THEN
-    --DEBUG: RAISE WARNING 'placex_update delete % %',NEW.osm_type,NEW.osm_id;
-    delete from placex where place_id = OLD.place_id;
-    RETURN NULL;
-  END IF;
-
-  IF NEW.indexed_status != 0 OR OLD.indexed_status = 0 THEN
-    RETURN NEW;
-  END IF;
-
-  --DEBUG: RAISE WARNING 'placex_update % % (%)',NEW.osm_type,NEW.osm_id,NEW.place_id;
-
-  NEW.indexed_date = now();
-
-  result := deleteSearchName(NEW.partition, NEW.place_id);
-  DELETE FROM place_addressline WHERE place_id = NEW.place_id;
-  result := deleteRoad(NEW.partition, NEW.place_id);
-  result := deleteLocationArea(NEW.partition, NEW.place_id, NEW.rank_search);
-  UPDATE placex set linked_place_id = null, indexed_status = 2
-         where linked_place_id = NEW.place_id;
-  -- update not necessary for osmline, cause linked_place_id does not exist
-
-  IF NEW.linked_place_id is not null THEN
-    --DEBUG: RAISE WARNING 'place already linked to %', NEW.linked_place_id;
-    RETURN NEW;
-  END IF;
-
-  --DEBUG: RAISE WARNING 'Copy over address tags';
-  IF NEW.address is not NULL THEN
-      IF NEW.address ? 'conscriptionnumber' THEN
-        i := getorcreate_housenumber_id(make_standard_name(NEW.address->'conscriptionnumber'));
-        IF NEW.address ? 'streetnumber' THEN
-            i := getorcreate_housenumber_id(make_standard_name(NEW.address->'streetnumber'));
-            NEW.housenumber := (NEW.address->'conscriptionnumber') || '/' || (NEW.address->'streetnumber');
-        ELSE
-            NEW.housenumber := NEW.address->'conscriptionnumber';
-        END IF;
-      ELSEIF NEW.address ? 'streetnumber' THEN
-        NEW.housenumber := NEW.address->'streetnumber';
-        i := getorcreate_housenumber_id(make_standard_name(NEW.address->'streetnumber'));
-      ELSEIF NEW.address ? 'housenumber' THEN
-        NEW.housenumber := NEW.address->'housenumber';
-        i := getorcreate_housenumber_id(make_standard_name(NEW.housenumber));
-      END IF;
-
-      addr_street := NEW.address->'street';
-      addr_place := NEW.address->'place';
-
-      IF NEW.address ? 'postcode' and NEW.address->'postcode' not similar to '%(,|;)%' THEN
-        i := getorcreate_postcode_id(NEW.address->'postcode');
-      END IF;
-  END IF;
-
-  -- Speed up searches - just use the centroid of the feature
-  -- cheaper but less acurate
-  place_centroid := ST_PointOnSurface(NEW.geometry);
-  NEW.centroid := null;
-  NEW.postcode := null;
-  --DEBUG: RAISE WARNING 'Computing preliminary centroid at %',ST_AsText(place_centroid);
-
-  -- recalculate country and partition
-  IF NEW.rank_search = 4 AND NEW.address is not NULL AND NEW.address ? 'country' THEN
-    -- for countries, believe the mapped country code,
-    -- so that we remain in the right partition if the boundaries
-    -- suddenly expand.
-    NEW.country_code := lower(NEW.address->'country');
-    NEW.partition := get_partition(lower(NEW.country_code));
-    IF NEW.partition = 0 THEN
-      NEW.country_code := lower(get_country_code(place_centroid));
-      NEW.partition := get_partition(NEW.country_code);
-    END IF;
-  ELSE
-    IF NEW.rank_search >= 4 THEN
-      NEW.country_code := lower(get_country_code(place_centroid));
-    ELSE
-      NEW.country_code := NULL;
-    END IF;
-    NEW.partition := get_partition(NEW.country_code);
-  END IF;
-  --DEBUG: RAISE WARNING 'Country updated: "%"', NEW.country_code;
-
-  -- waterway ways are linked when they are part of a relation and have the same class/type
-  IF NEW.osm_type = 'R' and NEW.class = 'waterway' THEN
-      FOR relation_members IN select members from planet_osm_rels r where r.id = NEW.osm_id and r.parts != array[]::bigint[]
-      LOOP
-          FOR i IN 1..array_upper(relation_members, 1) BY 2 LOOP
-              IF relation_members[i+1] in ('', 'main_stream', 'side_stream') AND substring(relation_members[i],1,1) = 'w' THEN
-                --DEBUG: RAISE WARNING 'waterway parent %, child %/%', NEW.osm_id, i, relation_members[i];
-                FOR linked_node_id IN SELECT place_id FROM placex
-                  WHERE osm_type = 'W' and osm_id = substring(relation_members[i],2,200)::bigint
-                  and class = NEW.class and type in ('river', 'stream', 'canal', 'drain', 'ditch')
-                  and ( relation_members[i+1] != 'side_stream' or NEW.name->'name' = name->'name')
-                LOOP
-                  UPDATE placex SET linked_place_id = NEW.place_id WHERE place_id = linked_node_id;
-                END LOOP;
-              END IF;
-          END LOOP;
-      END LOOP;
-      --DEBUG: RAISE WARNING 'Waterway processed';
-  END IF;
-
-  -- Adding ourselves to the list simplifies address calculations later
-  INSERT INTO place_addressline (place_id, address_place_id, fromarea, isaddress, distance, cached_rank_address)
-    VALUES (NEW.place_id, NEW.place_id, true, true, 0, NEW.rank_address); 
-
-  -- What level are we searching from
-  search_maxrank := NEW.rank_search;
-
-  -- Thought this wasn't needed but when we add new languages to the country_name table
-  -- we need to update the existing names
-  IF NEW.name is not null AND array_upper(akeys(NEW.name),1) > 1 THEN
-    default_language := get_country_language_code(NEW.country_code);
-    IF default_language IS NOT NULL THEN
-      IF NEW.name ? 'name' AND NOT NEW.name ? ('name:'||default_language) THEN
-        NEW.name := NEW.name || hstore(('name:'||default_language), (NEW.name -> 'name'));
-      ELSEIF NEW.name ? ('name:'||default_language) AND NOT NEW.name ? 'name' THEN
-        NEW.name := NEW.name || hstore('name', (NEW.name -> ('name:'||default_language)));
-      END IF;
-    END IF;
-  END IF;
-  --DEBUG: RAISE WARNING 'Local names updated';
-
-  -- Initialise the name vector using our name
-  name_vector := make_keywords(NEW.name);
-  nameaddress_vector := '{}'::int[];
-
-  FOR i IN 1..28 LOOP
-    address_havelevel[i] := false;
-  END LOOP;
-
-  NEW.importance := null;
-  select language||':'||title,importance from get_wikipedia_match(NEW.extratags, NEW.country_code) INTO NEW.wikipedia,NEW.importance;
-  IF NEW.importance IS NULL THEN
-    select language||':'||title,importance from wikipedia_article where osm_type = NEW.osm_type and osm_id = NEW.osm_id order by importance desc limit 1 INTO NEW.wikipedia,NEW.importance;
-  END IF;
-
---DEBUG: RAISE WARNING 'Importance computed from wikipedia: %', NEW.importance;
-
-  -- ---------------------------------------------------------------------------
-  -- For low level elements we inherit from our parent road
-  IF (NEW.rank_search > 27 OR (NEW.type = 'postcode' AND NEW.rank_search = 25)) THEN
-
-    --DEBUG: RAISE WARNING 'finding street for % %', NEW.osm_type, NEW.osm_id;
-
-    -- We won't get a better centroid, besides these places are too small to care
-    NEW.centroid := place_centroid;
-
-    NEW.parent_place_id := null;
-
-    -- if we have a POI and there is no address information,
-    -- see if we can get it from a surrounding building
-    IF NEW.osm_type = 'N' AND addr_street IS NULL AND addr_place IS NULL
-       AND NEW.housenumber IS NULL THEN
-      FOR location IN select address from placex where ST_Covers(geometry, place_centroid)
-            and address is not null
-            and (address ? 'housenumber' or address ? 'street' or address ? 'place')
-            and rank_search > 28 AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')
-            limit 1
-      LOOP
-        NEW.housenumber := location.address->'housenumber';
-        addr_street := location.address->'street';
-        addr_place := location.address->'place';
-        --DEBUG: RAISE WARNING 'Found surrounding building % %', location.osm_type, location.osm_id;
-      END LOOP;
-    END IF;
-
-    -- We have to find our parent road.
-    -- Copy data from linked items (points on ways, addr:street links, relations)
-
-    -- Is this object part of a relation?
-    FOR relation IN select * from planet_osm_rels where parts @> ARRAY[NEW.osm_id] and members @> ARRAY[lower(NEW.osm_type)||NEW.osm_id]
-    LOOP
-      -- At the moment we only process one type of relation - associatedStreet
-      IF relation.tags @> ARRAY['associatedStreet'] THEN
-        FOR i IN 1..array_upper(relation.members, 1) BY 2 LOOP
-          IF NEW.parent_place_id IS NULL AND relation.members[i+1] = 'street' THEN
---RAISE WARNING 'node in relation %',relation;
-            SELECT place_id from placex where osm_type = 'W'
-              and osm_id = substring(relation.members[i],2,200)::bigint
-              and rank_search = 26 and name is not null INTO NEW.parent_place_id;
-          END IF;
-        END LOOP;
-      END IF;
-    END LOOP;
-    --DEBUG: RAISE WARNING 'Checked for street relation (%)', NEW.parent_place_id;
-
-    -- Note that addr:street links can only be indexed once the street itself is indexed
-    IF NEW.parent_place_id IS NULL AND addr_street IS NOT NULL THEN
-      address_street_word_ids := get_name_ids(make_standard_name(addr_street));
-      IF address_street_word_ids IS NOT NULL THEN
-        SELECT place_id from getNearestNamedRoadFeature(NEW.partition, place_centroid, address_street_word_ids) INTO NEW.parent_place_id;
-      END IF;
-    END IF;
-    --DEBUG: RAISE WARNING 'Checked for addr:street (%)', NEW.parent_place_id;
-
-    IF NEW.parent_place_id IS NULL AND addr_place IS NOT NULL THEN
-      address_street_word_ids := get_name_ids(make_standard_name(addr_place));
-      IF address_street_word_ids IS NOT NULL THEN
-        SELECT place_id from getNearestNamedPlaceFeature(NEW.partition, place_centroid, address_street_word_ids) INTO NEW.parent_place_id;
-      END IF;
-    END IF;
-    --DEBUG: RAISE WARNING 'Checked for addr:place (%)', NEW.parent_place_id;
-
-    -- Is this node part of an interpolation?
-    IF NEW.parent_place_id IS NULL AND NEW.osm_type = 'N' THEN
-      SELECT q.parent_place_id FROM location_property_osmline q, planet_osm_ways x
-        WHERE q.linegeo && NEW.geometry and x.id = q.osm_id and NEW.osm_id = any(x.nodes)
-        LIMIT 1 INTO NEW.parent_place_id;
-    END IF;
-    --DEBUG: RAISE WARNING 'Checked for interpolation (%)', NEW.parent_place_id;
-
-    -- Is this node part of a way?
-    IF NEW.parent_place_id IS NULL AND NEW.osm_type = 'N' THEN
-
-      FOR location IN
-        SELECT p.place_id, p.osm_id, p.rank_search, p.address from placex p, planet_osm_ways w
-         WHERE p.osm_type = 'W' and p.rank_search >= 26 and p.geometry && NEW.geometry and w.id = p.osm_id and NEW.osm_id = any(w.nodes)
-      LOOP
-        --DEBUG: RAISE WARNING 'Node is part of way % ', location.osm_id;
-
-        -- Way IS a road then we are on it - that must be our road
-        IF location.rank_search < 28 THEN
---RAISE WARNING 'node in way that is a street %',location;
-          NEW.parent_place_id := location.place_id;
-          EXIT;
-        END IF;
-        --DEBUG: RAISE WARNING 'Checked if way is street (%)', NEW.parent_place_id;
-
-        -- If the way mentions a street or place address, try that for parenting.
-        IF location.address is not null THEN
-          IF location.address ? 'street' THEN
-            address_street_word_ids := get_name_ids(make_standard_name(location.address->'street'));
-            IF address_street_word_ids IS NOT NULL THEN
-              SELECT place_id from getNearestNamedRoadFeature(NEW.partition, place_centroid, address_street_word_ids) INTO NEW.parent_place_id;
-              EXIT WHEN NEW.parent_place_id is not NULL;
-            END IF;
-          END IF;
-          --DEBUG: RAISE WARNING 'Checked for addr:street in way (%)', NEW.parent_place_id;
-
-          IF location.address ? 'place' THEN
-            address_street_word_ids := get_name_ids(make_standard_name(location.address->'place'));
-            IF address_street_word_ids IS NOT NULL THEN
-              SELECT place_id from getNearestNamedPlaceFeature(NEW.partition, place_centroid, address_street_word_ids) INTO NEW.parent_place_id;
-              EXIT WHEN NEW.parent_place_id is not NULL;
-            END IF;
-          END IF;
-        --DEBUG: RAISE WARNING 'Checked for addr:place in way (%)', NEW.parent_place_id;
-        END IF;
-
-        -- Is the WAY part of a relation
-        FOR relation IN select * from planet_osm_rels where parts @> ARRAY[location.osm_id] and members @> ARRAY['w'||location.osm_id]
-        LOOP
-          -- At the moment we only process one type of relation - associatedStreet
-          IF relation.tags @> ARRAY['associatedStreet'] AND array_upper(relation.members, 1) IS NOT NULL THEN
-            FOR i IN 1..array_upper(relation.members, 1) BY 2 LOOP
-              IF NEW.parent_place_id IS NULL AND relation.members[i+1] = 'street' THEN
---RAISE WARNING 'node in way that is in a relation %',relation;
-                SELECT place_id from placex where osm_type='W' and osm_id = substring(relation.members[i],2,200)::bigint 
-                  and rank_search = 26 and name is not null INTO NEW.parent_place_id;
-              END IF;
-            END LOOP;
-          END IF;
-        END LOOP;
-        EXIT WHEN NEW.parent_place_id is not null;
-        --DEBUG: RAISE WARNING 'Checked for street relation in way (%)', NEW.parent_place_id;
-
-      END LOOP;
-    END IF;
-
-    -- Still nothing, just use the nearest road
-    IF NEW.parent_place_id IS NULL THEN
-      SELECT place_id FROM getNearestRoadFeature(NEW.partition, place_centroid) INTO NEW.parent_place_id;
-    END IF;
-    --DEBUG: RAISE WARNING 'Checked for nearest way (%)', NEW.parent_place_id;
-
-
-    -- If we didn't find any road fallback to standard method
-    IF NEW.parent_place_id IS NOT NULL THEN
-
-      -- Get the details of the parent road
-      select s.country_code, s.name_vector, s.nameaddress_vector from search_name s
-       where s.place_id = NEW.parent_place_id INTO location;
-      NEW.country_code := location.country_code;
-      --DEBUG: RAISE WARNING 'Got parent details from search name';
-
-      -- determine postcode
-      IF NEW.rank_search > 4 THEN
-          IF NEW.address is not null AND NEW.address ? 'postcode' THEN
-              NEW.postcode = upper(trim(NEW.address->'postcode'));
-          ELSE
-             SELECT postcode FROM placex WHERE place_id = NEW.parent_place_id INTO NEW.postcode;
-          END IF;
-          IF NEW.postcode is null THEN
-            NEW.postcode := get_nearest_postcode(NEW.country_code, place_centroid);
-          END IF;
-      END IF;
-
-      -- If there is no name it isn't searchable, don't bother to create a search record
-      IF NEW.name is NULL THEN
-        --DEBUG: RAISE WARNING 'Not a searchable place % %', NEW.osm_type, NEW.osm_id;
-        return NEW;
-      END IF;
-
-      -- Merge address from parent
-      nameaddress_vector := array_merge(nameaddress_vector, location.nameaddress_vector);
-      nameaddress_vector := array_merge(nameaddress_vector, location.name_vector);
-
-      -- Performance, it would be more acurate to do all the rest of the import
-      -- process but it takes too long
-      -- Just be happy with inheriting from parent road only
-
-      IF NEW.rank_search <= 25 and NEW.rank_address > 0 THEN
-        result := add_location(NEW.place_id, NEW.country_code, NEW.partition, name_vector, NEW.rank_search, NEW.rank_address, upper(trim(NEW.address->'postcode')), NEW.geometry);
-        --DEBUG: RAISE WARNING 'Place added to location table';
-      END IF;
-
-      result := insertSearchName(NEW.partition, NEW.place_id, NEW.country_code, name_vector, nameaddress_vector, NEW.rank_search, NEW.rank_address, NEW.importance, place_centroid, NEW.geometry);
-      --DEBUG: RAISE WARNING 'Place added to search table';
-
-      return NEW;
-    END IF;
-
-  END IF;
-
-  -- ---------------------------------------------------------------------------
-  -- Full indexing
-  --DEBUG: RAISE WARNING 'Using full index mode for % %', NEW.osm_type, NEW.osm_id;
-
-  IF NEW.osm_type = 'R' AND NEW.rank_search < 26 THEN
-
-    -- see if we have any special relation members
-    select members from planet_osm_rels where id = NEW.osm_id INTO relation_members;
-    --DEBUG: RAISE WARNING 'Got relation members';
-
-    IF relation_members IS NOT NULL THEN
-      FOR relMember IN select get_osm_rel_members(relation_members,ARRAY['label']) as member LOOP
-        --DEBUG: RAISE WARNING 'Found label member %', relMember.member;
-
-        FOR linkedPlacex IN select * from placex where osm_type = upper(substring(relMember.member,1,1))::char(1) 
-          and osm_id = substring(relMember.member,2,10000)::bigint
-          and class = 'place' order by rank_search desc limit 1 LOOP
-
-          -- If we don't already have one use this as the centre point of the geometry
-          IF NEW.centroid IS NULL THEN
-            NEW.centroid := coalesce(linkedPlacex.centroid,st_centroid(linkedPlacex.geometry));
-          END IF;
-
-          -- merge in the label name, re-init word vector
-          IF NOT linkedPlacex.name IS NULL THEN
-            NEW.name := linkedPlacex.name || NEW.name;
-            name_vector := array_merge(name_vector, make_keywords(linkedPlacex.name));
-          END IF;
-
-          -- merge in extra tags
-          NEW.extratags := hstore(linkedPlacex.class, linkedPlacex.type) || coalesce(linkedPlacex.extratags, ''::hstore) || coalesce(NEW.extratags, ''::hstore);
-
-          -- mark the linked place (excludes from search results)
-          UPDATE placex set linked_place_id = NEW.place_id where place_id = linkedPlacex.place_id;
-
-          -- keep a note of the node id in case we need it for wikipedia in a bit
-          linked_node_id := linkedPlacex.osm_id;
-          select language||':'||title,importance from get_wikipedia_match(linkedPlacex.extratags, NEW.country_code) INTO linked_wikipedia,linked_importance;
-          --DEBUG: RAISE WARNING 'Linked label member';
-        END LOOP;
-
-      END LOOP;
-
-      IF NEW.centroid IS NULL THEN
-
-        FOR relMember IN select get_osm_rel_members(relation_members,ARRAY['admin_center','admin_centre']) as member LOOP
-          --DEBUG: RAISE WARNING 'Found admin_center member %', relMember.member;
-
-          FOR linkedPlacex IN select * from placex where osm_type = upper(substring(relMember.member,1,1))::char(1) 
-            and osm_id = substring(relMember.member,2,10000)::bigint
-            and class = 'place' order by rank_search desc limit 1 LOOP
-
-            -- For an admin centre we also want a name match - still not perfect, for example 'new york, new york'
-            -- But that can be fixed by explicitly setting the label in the data
-            IF make_standard_name(NEW.name->'name') = make_standard_name(linkedPlacex.name->'name') 
-              AND NEW.rank_address = linkedPlacex.rank_address THEN
-
-              -- If we don't already have one use this as the centre point of the geometry
-              IF NEW.centroid IS NULL THEN
-                NEW.centroid := coalesce(linkedPlacex.centroid,st_centroid(linkedPlacex.geometry));
-              END IF;
-
-              -- merge in the name, re-init word vector
-              IF NOT linkedPlacex.name IS NULL THEN
-                NEW.name := linkedPlacex.name || NEW.name;
-                name_vector := make_keywords(NEW.name);
-              END IF;
-
-              -- merge in extra tags
-              NEW.extratags := hstore(linkedPlacex.class, linkedPlacex.type) || coalesce(linkedPlacex.extratags, ''::hstore) || coalesce(NEW.extratags, ''::hstore);
-
-              -- mark the linked place (excludes from search results)
-              UPDATE placex set linked_place_id = NEW.place_id where place_id = linkedPlacex.place_id;
-
-              -- keep a note of the node id in case we need it for wikipedia in a bit
-              linked_node_id := linkedPlacex.osm_id;
-              select language||':'||title,importance from get_wikipedia_match(linkedPlacex.extratags, NEW.country_code) INTO linked_wikipedia,linked_importance;
-              --DEBUG: RAISE WARNING 'Linked admin_center';
-            END IF;
-
-          END LOOP;
-
-        END LOOP;
-
-      END IF;
-    END IF;
-
-  END IF;
-
-  -- Name searches can be done for ways as well as relations
-  IF NEW.osm_type in ('W','R') AND NEW.rank_search < 26 AND NEW.rank_address > 0 THEN
-
-    -- not found one yet? how about doing a name search
-    IF NEW.centroid IS NULL AND (NEW.name->'name') is not null and make_standard_name(NEW.name->'name') != '' THEN
-
-      --DEBUG: RAISE WARNING 'Looking for nodes with matching names';
-      FOR linkedPlacex IN select placex.* from placex WHERE
-        make_standard_name(name->'name') = make_standard_name(NEW.name->'name')
-        AND placex.rank_address = NEW.rank_address
-        AND placex.place_id != NEW.place_id
-        AND placex.osm_type = 'N'::char(1) AND placex.rank_search < 26
-        AND st_covers(NEW.geometry, placex.geometry)
-      LOOP
-        --DEBUG: RAISE WARNING 'Found matching place node %', linkedPlacex.osm_id;
-        -- If we don't already have one use this as the centre point of the geometry
-        IF NEW.centroid IS NULL THEN
-          NEW.centroid := coalesce(linkedPlacex.centroid,st_centroid(linkedPlacex.geometry));
-        END IF;
-
-        -- merge in the name, re-init word vector
-        NEW.name := linkedPlacex.name || NEW.name;
-        name_vector := make_keywords(NEW.name);
-
-        -- merge in extra tags
-        NEW.extratags := hstore(linkedPlacex.class, linkedPlacex.type) || coalesce(linkedPlacex.extratags, ''::hstore) || coalesce(NEW.extratags, ''::hstore);
-
-        -- mark the linked place (excludes from search results)
-        UPDATE placex set linked_place_id = NEW.place_id where place_id = linkedPlacex.place_id;
-
-        -- keep a note of the node id in case we need it for wikipedia in a bit
-        linked_node_id := linkedPlacex.osm_id;
-        select language||':'||title,importance from get_wikipedia_match(linkedPlacex.extratags, NEW.country_code) INTO linked_wikipedia,linked_importance;
-        --DEBUG: RAISE WARNING 'Linked named place';
-      END LOOP;
-    END IF;
-
-    IF NEW.centroid IS NOT NULL THEN
-      place_centroid := NEW.centroid;
-      -- Place might have had only a name tag before but has now received translations
-      -- from the linked place. Make sure a name tag for the default language exists in
-      -- this case. 
-      IF NEW.name is not null AND array_upper(akeys(NEW.name),1) > 1 THEN
-        default_language := get_country_language_code(NEW.country_code);
-        IF default_language IS NOT NULL THEN
-          IF NEW.name ? 'name' AND NOT NEW.name ? ('name:'||default_language) THEN
-            NEW.name := NEW.name || hstore(('name:'||default_language), (NEW.name -> 'name'));
-          ELSEIF NEW.name ? ('name:'||default_language) AND NOT NEW.name ? 'name' THEN
-            NEW.name := NEW.name || hstore('name', (NEW.name -> ('name:'||default_language)));
-          END IF;
-        END IF;
-      END IF;
-      --DEBUG: RAISE WARNING 'Names updated from linked places';
-    END IF;
-
-    -- Use the maximum importance if a one could be computed from the linked object.
-    IF linked_importance is not null AND
-        (NEW.importance is null or NEW.importance < linked_importance) THEN
-        NEW.importance = linked_importance;
-    END IF;
-
-    -- Still null? how about looking it up by the node id
-    IF NEW.importance IS NULL THEN
-      --DEBUG: RAISE WARNING 'Looking up importance by linked node id';
-      select language||':'||title,importance from wikipedia_article where osm_type = 'N'::char(1) and osm_id = linked_node_id order by importance desc limit 1 INTO NEW.wikipedia,NEW.importance;
-    END IF;
-
-  END IF;
-
-  -- make sure all names are in the word table
-  IF NEW.admin_level = 2 AND NEW.class = 'boundary' AND NEW.type = 'administrative' AND NEW.country_code IS NOT NULL AND NEW.osm_type = 'R' THEN
-    perform create_country(NEW.name, lower(NEW.country_code));
-    --DEBUG: RAISE WARNING 'Country names updated';
-  END IF;
-
-  NEW.parent_place_id = 0;
-  parent_place_id_rank = 0;
-
-
-  -- convert address store to array of tokenids
-  --DEBUG: RAISE WARNING 'Starting address search';
-  isin_tokens := '{}'::int[];
-  IF NEW.address IS NOT NULL THEN
-    FOR addr_item IN SELECT * FROM each(NEW.address)
-    LOOP
-      IF addr_item.key IN ('city', 'tiger:county', 'state', 'suburb', 'province', 'district', 'region', 'county', 'municipality', 'hamlet', 'village', 'subdistrict', 'town', 'neighbourhood', 'quarter', 'parish') THEN
-        address_street_word_id := get_name_id(make_standard_name(addr_item.value));
-        IF address_street_word_id IS NOT NULL AND NOT(ARRAY[address_street_word_id] <@ isin_tokens) THEN
-          isin_tokens := isin_tokens || address_street_word_id;
-        END IF;
-        address_street_word_id := get_word_id(make_standard_name(addr_item.value));
-        IF address_street_word_id IS NOT NULL THEN
-          nameaddress_vector := array_merge(nameaddress_vector, ARRAY[address_street_word_id]);
-        END IF;
-      END IF;
-      IF addr_item.key = 'is_in' THEN
-        -- is_in items need splitting
-        isin := regexp_split_to_array(addr_item.value, E'[;,]');
-        IF array_upper(isin, 1) IS NOT NULL THEN
-          FOR i IN 1..array_upper(isin, 1) LOOP
-            address_street_word_id := get_name_id(make_standard_name(isin[i]));
-            IF address_street_word_id IS NOT NULL AND NOT(ARRAY[address_street_word_id] <@ isin_tokens) THEN
-              isin_tokens := isin_tokens || address_street_word_id;
-            END IF;
-
-            -- merge word into address vector
-            address_street_word_id := get_word_id(make_standard_name(isin[i]));
-            IF address_street_word_id IS NOT NULL THEN
-              nameaddress_vector := array_merge(nameaddress_vector, ARRAY[address_street_word_id]);
-            END IF;
-          END LOOP;
-        END IF;
-      END IF;
-    END LOOP;
-  END IF;
-  nameaddress_vector := array_merge(nameaddress_vector, isin_tokens);
-
--- RAISE WARNING 'ISIN: %', isin_tokens;
-
-  -- Process area matches
-  location_rank_search := 0;
-  location_distance := 0;
-  location_parent := NULL;
-  -- added ourself as address already
-  address_havelevel[NEW.rank_address] := true;
-  --DEBUG: RAISE WARNING '  getNearFeatures(%,''%'',%,''%'')',NEW.partition, place_centroid, search_maxrank, isin_tokens;
-  FOR location IN
-    SELECT * from getNearFeatures(NEW.partition,
-                                  CASE WHEN NEW.rank_search >= 26
-                                             AND NEW.rank_search < 30
-                                       THEN NEW.geometry
-                                       ELSE place_centroid END,
-                                  search_maxrank, isin_tokens)
-  LOOP
-    IF location.rank_address != location_rank_search THEN
-      location_rank_search := location.rank_address;
-      IF location.isguess THEN
-        location_distance := location.distance * 1.5;
-      ELSE
-        IF location.rank_address <= 12 THEN
-          -- for county and above, if we have an area consider that exact
-          -- (It would be nice to relax the constraint for places close to
-          --  the boundary but we'd need the exact geometry for that. Too
-          --  expensive.)
-          location_distance = 0;
-        ELSE
-          -- Below county level remain slightly fuzzy.
-          location_distance := location.distance * 0.5;
-        END IF;
-      END IF;
-    ELSE
-      CONTINUE WHEN location.keywords <@ location_keywords;
-    END IF;
-
-    IF location.distance < location_distance OR NOT location.isguess THEN
-      location_keywords := location.keywords;
-
-      location_isaddress := NOT address_havelevel[location.rank_address];
-      IF location_isaddress AND location.isguess AND location_parent IS NOT NULL THEN
-          location_isaddress := ST_Contains(location_parent,location.centroid);
-      END IF;
-
-      -- RAISE WARNING '% isaddress: %', location.place_id, location_isaddress;
-      -- Add it to the list of search terms
-      IF location.rank_search > 4 THEN
-          nameaddress_vector := array_merge(nameaddress_vector, location.keywords::integer[]);
-      END IF;
-      INSERT INTO place_addressline (place_id, address_place_id, fromarea, isaddress, distance, cached_rank_address)
-        VALUES (NEW.place_id, location.place_id, true, location_isaddress, location.distance, location.rank_address);
-
-      IF location_isaddress THEN
-        -- add postcode if we have one
-        -- (If multiple postcodes are available, we end up with the highest ranking one.)
-        IF location.postcode is not null THEN
-            NEW.postcode = location.postcode;
-        END IF;
-
-        address_havelevel[location.rank_address] := true;
-        IF NOT location.isguess THEN
-          SELECT geometry FROM placex WHERE place_id = location.place_id INTO location_parent;
-        END IF;
-
-        IF location.rank_address > parent_place_id_rank THEN
-          NEW.parent_place_id = location.place_id;
-          parent_place_id_rank = location.rank_address;
-        END IF;
-
-      END IF;
-
-    --DEBUG: RAISE WARNING '  Terms: (%) %',location, nameaddress_vector;
-
-    END IF;
-
-  END LOOP;
-  --DEBUG: RAISE WARNING 'address computed';
-
-  IF NEW.address is not null AND NEW.address ? 'postcode' 
-     AND NEW.address->'postcode' not similar to '%(,|;)%' THEN
-    NEW.postcode := upper(trim(NEW.address->'postcode'));
-  END IF;
-
-  IF NEW.postcode is null AND NEW.rank_search > 8 THEN
-    NEW.postcode := get_nearest_postcode(NEW.country_code, NEW.geometry);
-  END IF;
-
-  -- if we have a name add this to the name search table
-  IF NEW.name IS NOT NULL THEN
-
-    IF NEW.rank_search <= 25 and NEW.rank_address > 0 THEN
-      result := add_location(NEW.place_id, NEW.country_code, NEW.partition, name_vector, NEW.rank_search, NEW.rank_address, upper(trim(NEW.address->'postcode')), NEW.geometry);
-      --DEBUG: RAISE WARNING 'added to location (full)';
-    END IF;
-
-    IF NEW.rank_search between 26 and 27 and NEW.class = 'highway' THEN
-      result := insertLocationRoad(NEW.partition, NEW.place_id, NEW.country_code, NEW.geometry);
-      --DEBUG: RAISE WARNING 'insert into road location table (full)';
-    END IF;
-
-    result := insertSearchName(NEW.partition, NEW.place_id, NEW.country_code, name_vector, nameaddress_vector, NEW.rank_search, NEW.rank_address, NEW.importance, place_centroid, NEW.geometry);
-    --DEBUG: RAISE WARNING 'added to serach name (full)';
-
-  END IF;
-
-  -- If we've not managed to pick up a better one - default centroid
-  IF NEW.centroid IS NULL THEN
-    NEW.centroid := place_centroid;
-  END IF;
-
-  --DEBUG: RAISE WARNING 'place update % % finsihed.', NEW.osm_type, NEW.osm_id;
-
-  RETURN NEW;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION placex_delete() RETURNS TRIGGER
-  AS $$
-DECLARE
-  b BOOLEAN;
-  classtable TEXT;
-BEGIN
-  -- RAISE WARNING 'placex_delete % %',OLD.osm_type,OLD.osm_id;
-
-  update placex set linked_place_id = null, indexed_status = 2 where linked_place_id = OLD.place_id and indexed_status = 0;
-  --DEBUG: RAISE WARNING 'placex_delete:01 % %',OLD.osm_type,OLD.osm_id;
-  update placex set linked_place_id = null where linked_place_id = OLD.place_id;
-  --DEBUG: RAISE WARNING 'placex_delete:02 % %',OLD.osm_type,OLD.osm_id;
-
-  IF OLD.rank_address < 30 THEN
-
-    -- mark everything linked to this place for re-indexing
-    --DEBUG: RAISE WARNING 'placex_delete:03 % %',OLD.osm_type,OLD.osm_id;
-    UPDATE placex set indexed_status = 2 from place_addressline where address_place_id = OLD.place_id 
-      and placex.place_id = place_addressline.place_id and indexed_status = 0 and place_addressline.isaddress;
-
-    --DEBUG: RAISE WARNING 'placex_delete:04 % %',OLD.osm_type,OLD.osm_id;
-    DELETE FROM place_addressline where address_place_id = OLD.place_id;
-
-    --DEBUG: RAISE WARNING 'placex_delete:05 % %',OLD.osm_type,OLD.osm_id;
-    b := deleteRoad(OLD.partition, OLD.place_id);
-
-    --DEBUG: RAISE WARNING 'placex_delete:06 % %',OLD.osm_type,OLD.osm_id;
-    update placex set indexed_status = 2 where parent_place_id = OLD.place_id and indexed_status = 0;
-    --DEBUG: RAISE WARNING 'placex_delete:07 % %',OLD.osm_type,OLD.osm_id;
-    -- reparenting also for OSM Interpolation Lines (and for Tiger?)
-    update location_property_osmline set indexed_status = 2 where indexed_status = 0 and parent_place_id = OLD.place_id;
-
-  END IF;
-
-  --DEBUG: RAISE WARNING 'placex_delete:08 % %',OLD.osm_type,OLD.osm_id;
-
-  IF OLD.rank_address < 26 THEN
-    b := deleteLocationArea(OLD.partition, OLD.place_id, OLD.rank_search);
-  END IF;
-
-  --DEBUG: RAISE WARNING 'placex_delete:09 % %',OLD.osm_type,OLD.osm_id;
-
-  IF OLD.name is not null THEN
-    b := deleteSearchName(OLD.partition, OLD.place_id);
-  END IF;
-
-  --DEBUG: RAISE WARNING 'placex_delete:10 % %',OLD.osm_type,OLD.osm_id;
-
-  DELETE FROM place_addressline where place_id = OLD.place_id;
-
-  --DEBUG: RAISE WARNING 'placex_delete:11 % %',OLD.osm_type,OLD.osm_id;
-
-  -- remove from tables for special search
-  classtable := 'place_classtype_' || OLD.class || '_' || OLD.type;
-  SELECT count(*)>0 FROM pg_tables WHERE tablename = classtable and schemaname = current_schema() INTO b;
-  IF b THEN
-    EXECUTE 'DELETE FROM ' || classtable::regclass || ' WHERE place_id = $1' USING OLD.place_id;
-  END IF;
-
-  --DEBUG: RAISE WARNING 'placex_delete:12 % %',OLD.osm_type,OLD.osm_id;
-
-  RETURN OLD;
-
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION place_delete() RETURNS TRIGGER
-  AS $$
-DECLARE
-  has_rank BOOLEAN;
-BEGIN
-
-  --DEBUG: RAISE WARNING 'delete: % % % %',OLD.osm_type,OLD.osm_id,OLD.class,OLD.type;
-
-  -- deleting large polygons can have a massive effect on the system - require manual intervention to let them through
-  IF st_area(OLD.geometry) > 2 and st_isvalid(OLD.geometry) THEN
-    SELECT bool_or(not (rank_address = 0 or rank_address > 26)) as ranked FROM placex WHERE osm_type = OLD.osm_type and osm_id = OLD.osm_id and class = OLD.class and type = OLD.type INTO has_rank;
-    IF has_rank THEN
-      insert into import_polygon_delete (osm_type, osm_id, class, type) values (OLD.osm_type,OLD.osm_id,OLD.class,OLD.type);
-      RETURN NULL;
-    END IF;
-  END IF;
-
-  -- mark for delete
-  UPDATE placex set indexed_status = 100 where osm_type = OLD.osm_type and osm_id = OLD.osm_id and class = OLD.class and type = OLD.type;
-
-  -- interpolations are special
-  IF OLD.osm_type='W' and OLD.class = 'place' and OLD.type = 'houses' THEN
-    UPDATE location_property_osmline set indexed_status = 100 where osm_id = OLD.osm_id; -- osm_id = wayid (=old.osm_id)
-  END IF;
-
-  RETURN OLD;
-
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION place_insert() RETURNS TRIGGER
-  AS $$
-DECLARE
-  i INTEGER;
-  existing RECORD;
-  existingplacex RECORD;
-  existingline RECORD;
-  existinggeometry GEOMETRY;
-  existingplace_id BIGINT;
-  result BOOLEAN;
-  partition INTEGER;
-BEGIN
-
-  --DEBUG: RAISE WARNING '-----------------------------------------------------------------------------------';
-  --DEBUG: RAISE WARNING 'place_insert: % % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type,st_area(NEW.geometry);
-  -- filter wrong tupels
-  IF ST_IsEmpty(NEW.geometry) OR NOT ST_IsValid(NEW.geometry) OR ST_X(ST_Centroid(NEW.geometry))::text in ('NaN','Infinity','-Infinity') OR ST_Y(ST_Centroid(NEW.geometry))::text in ('NaN','Infinity','-Infinity') THEN  
-    INSERT INTO import_polygon_error (osm_type, osm_id, class, type, name, country_code, updated, errormessage, prevgeometry, newgeometry)
-      VALUES (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name, NEW.address->'country', now(), ST_IsValidReason(NEW.geometry), null, NEW.geometry);
---    RAISE WARNING 'Invalid Geometry: % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
-    RETURN null;
-  END IF;
-
-  -- decide, whether it is an osm interpolation line => insert intoosmline, or else just placex
-  IF NEW.class='place' and NEW.type='houses' and NEW.osm_type='W' and ST_GeometryType(NEW.geometry) = 'ST_LineString' THEN
-    -- Have we already done this place?
-    select * from place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type INTO existing;
-
-    -- Get the existing place_id
-    select * from location_property_osmline where osm_id = NEW.osm_id INTO existingline;
-
-    -- Handle a place changing type by removing the old data (this trigger is executed BEFORE INSERT of the NEW tupel)
-    IF existing.osm_type IS NULL THEN
-      DELETE FROM place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class;
-    END IF;
-
-    DELETE from import_polygon_error where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
-    DELETE from import_polygon_delete where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
-
-    -- update method for interpolation lines: delete all old interpolation lines with same osm_id (update on place) and insert the new one(s) (they can be split up, if they have > 2 nodes)
-    IF existingline.osm_id IS NOT NULL THEN
-      delete from location_property_osmline where osm_id = NEW.osm_id;
-    END IF;
-
-    -- for interpolations invalidate all nodes on the line
-    update placex p set indexed_status = 2
-      from planet_osm_ways w
-      where w.id = NEW.osm_id and p.osm_type = 'N' and p.osm_id = any(w.nodes);
-
-
-    INSERT INTO location_property_osmline (osm_id, address, linegeo)
-      VALUES (NEW.osm_id, NEW.address, NEW.geometry);
-
-
-    IF existing.osm_type IS NULL THEN
-      return NEW;
-    END IF;
-
-    IF coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
-       OR (coalesce(existing.extratags, ''::hstore) != coalesce(NEW.extratags, ''::hstore))
-       OR existing.geometry::text != NEW.geometry::text
-       THEN
-
-      update place set 
-        name = NEW.name,
-        address = NEW.address,
-        extratags = NEW.extratags,
-        admin_level = NEW.admin_level,
-        geometry = NEW.geometry
-        where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
-    END IF;
-
-    RETURN NULL;
-
-  ELSE -- insert to placex
-
-    -- Patch in additional country names
-    IF NEW.admin_level = 2 AND NEW.type = 'administrative'
-          AND NEW.address is not NULL AND NEW.address ? 'country' THEN
-        SELECT name FROM country_name WHERE country_code = lower(NEW.address->'country') INTO existing;
-        IF existing.name IS NOT NULL THEN
-            NEW.name = existing.name || NEW.name;
-        END IF;
-    END IF;
-      
-    -- Have we already done this place?
-    select * from place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type INTO existing;
-
-    -- Get the existing place_id
-    select * from placex where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type INTO existingplacex;
-
-    -- Handle a place changing type by removing the old data
-    -- My generated 'place' types are causing havok because they overlap with real keys
-    -- TODO: move them to their own special purpose key/class to avoid collisions
-    IF existing.osm_type IS NULL THEN
-      DELETE FROM place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class;
-    END IF;
-
-    --DEBUG: RAISE WARNING 'Existing: %',existing.osm_id;
-    --DEBUG: RAISE WARNING 'Existing PlaceX: %',existingplacex.place_id;
-
-    -- Log and discard 
-    IF existing.geometry is not null AND st_isvalid(existing.geometry) 
-      AND st_area(existing.geometry) > 0.02
-      AND ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon')
-      AND st_area(NEW.geometry) < st_area(existing.geometry)*0.5
-      THEN
-      INSERT INTO import_polygon_error (osm_type, osm_id, class, type, name, country_code, updated, errormessage, prevgeometry, newgeometry)
-        VALUES (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name, NEW.address->'country', now(), 
-        'Area reduced from '||st_area(existing.geometry)||' to '||st_area(NEW.geometry), existing.geometry, NEW.geometry);
-      RETURN null;
-    END IF;
-
-    DELETE from import_polygon_error where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
-    DELETE from import_polygon_delete where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
-
-    -- To paraphrase, if there isn't an existing item, OR if the admin level has changed
-    IF existingplacex.osm_type IS NULL OR
-        (existingplacex.class = 'boundary' AND
-          ((coalesce(existingplacex.admin_level, 15) != coalesce(NEW.admin_level, 15) AND existingplacex.type = 'administrative') OR
-          (existingplacex.type != NEW.type)))
-    THEN
-
-      IF existingplacex.osm_type IS NOT NULL THEN
-        -- sanity check: ignore admin_level changes on places with too many active children
-        -- or we end up reindexing entire countries because somebody accidentally deleted admin_level
-        --LIMIT INDEXING: SELECT count(*) FROM (SELECT 'a' FROM placex , place_addressline where address_place_id = existingplacex.place_id and placex.place_id = place_addressline.place_id and indexed_status = 0 and place_addressline.isaddress LIMIT 100001) sub INTO i;
-        --LIMIT INDEXING: IF i > 100000 THEN
-        --LIMIT INDEXING:  RETURN null;
-        --LIMIT INDEXING: END IF;
-      END IF;
-
-      IF existing.osm_type IS NOT NULL THEN
-        -- pathological case caused by the triggerless copy into place during initial import
-        -- force delete even for large areas, it will be reinserted later
-        UPDATE place set geometry = ST_SetSRID(ST_Point(0,0), 4326) where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
-        DELETE from place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
-      END IF;
-
-      -- No - process it as a new insertion (hopefully of low rank or it will be slow)
-      insert into placex (osm_type, osm_id, class, type, name,
-                          admin_level, address, extratags, geometry)
-        values (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name,
-                NEW.admin_level, NEW.address, NEW.extratags, NEW.geometry);
-
-      --DEBUG: RAISE WARNING 'insert done % % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type,NEW.name;
-
-      RETURN NEW;
-    END IF;
-
-    -- Special case for polygon shape changes because they tend to be large and we can be a bit clever about how we handle them
-    IF existing.geometry::text != NEW.geometry::text 
-       AND ST_GeometryType(existing.geometry) in ('ST_Polygon','ST_MultiPolygon')
-       AND ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon') 
-       THEN 
-
-      -- Get the version of the geometry actually used (in placex table)
-      select geometry from placex where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type into existinggeometry;
-
-      -- Performance limit
-      IF st_area(NEW.geometry) < 0.000000001 AND st_area(existinggeometry) < 1 THEN
-
-        -- re-index points that have moved in / out of the polygon, could be done as a single query but postgres gets the index usage wrong
-        update placex set indexed_status = 2 where indexed_status = 0 and 
-            (st_covers(NEW.geometry, placex.geometry) OR ST_Intersects(NEW.geometry, placex.geometry))
-            AND NOT (st_covers(existinggeometry, placex.geometry) OR ST_Intersects(existinggeometry, placex.geometry))
-            AND rank_search > existingplacex.rank_search AND (rank_search < 28 or name is not null);
-
-        update placex set indexed_status = 2 where indexed_status = 0 and 
-            (st_covers(existinggeometry, placex.geometry) OR ST_Intersects(existinggeometry, placex.geometry))
-            AND NOT (st_covers(NEW.geometry, placex.geometry) OR ST_Intersects(NEW.geometry, placex.geometry))
-            AND rank_search > existingplacex.rank_search AND (rank_search < 28 or name is not null);
-
-      END IF;
-
-    END IF;
-
-
-    IF coalesce(existing.name::text, '') != coalesce(NEW.name::text, '')
-       OR coalesce(existing.extratags::text, '') != coalesce(NEW.extratags::text, '')
-       OR coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
-       OR coalesce(existing.admin_level, 15) != coalesce(NEW.admin_level, 15)
-       OR existing.geometry::text != NEW.geometry::text
-       THEN
-
-      update place set 
-        name = NEW.name,
-        address = NEW.address,
-        extratags = NEW.extratags,
-        admin_level = NEW.admin_level,
-        geometry = NEW.geometry
-        where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
-
-
-      IF NEW.class in ('place','boundary') AND NEW.type in ('postcode','postal_code') THEN
-          IF NEW.address is NULL OR NOT NEW.address ? 'postcode' THEN
-              -- postcode was deleted, no longer retain in placex
-              DELETE FROM placex where place_id = existingplacex.place_id;
-              RETURN NULL;
-          END IF;
-
-          NEW.name := hstore('ref', NEW.address->'postcode');
-      END IF;
-
-      IF NEW.class in ('boundary')
-         AND ST_GeometryType(NEW.geometry) not in ('ST_Polygon','ST_MultiPolygon') THEN
-          DELETE FROM placex where place_id = existingplacex.place_id;
-          RETURN NULL;
-      END IF;
-
-      update placex set 
-        name = NEW.name,
-        address = NEW.address,
-        parent_place_id = null,
-        extratags = NEW.extratags,
-        admin_level = NEW.admin_level,
-        indexed_status = 2,
-        geometry = NEW.geometry
-        where place_id = existingplacex.place_id;
-
-      -- if a node(=>house), which is part of a interpolation line, changes (e.g. the street attribute) => mark this line for reparenting 
-      -- (already here, because interpolation lines are reindexed before nodes, so in the second call it would be too late)
-      IF NEW.osm_type='N' and NEW.class='place' and NEW.type='house' THEN
-          -- Is this node part of an interpolation line? search for it in location_property_osmline and mark the interpolation line for reparenting
-          update location_property_osmline p set indexed_status = 2 from planet_osm_ways w where p.linegeo && NEW.geometry and p.osm_id = w.id and NEW.osm_id = any(w.nodes);
-      END IF;
-
-      -- linked places should get potential new naming and addresses
-      IF existingplacex.linked_place_id is not NULL THEN
-        update placex x set
-          name = p.name,
-          extratags = p.extratags,
-          indexed_status = 2
-        from place p
-        where x.place_id = existingplacex.linked_place_id
-              and x.indexed_status = 0
-              and x.osm_type = p.osm_type
-              and x.osm_id = p.osm_id
-              and x.class = p.class;
-      END IF;
-
-    END IF;
-
-    -- Abort the add (we modified the existing place instead)
-    RETURN NULL;
-  END IF;
-
-END;
-$$ LANGUAGE plpgsql;
-
-
-CREATE OR REPLACE FUNCTION get_name_by_language(name hstore, languagepref TEXT[]) RETURNS TEXT
-  AS $$
-DECLARE
-  result TEXT;
-BEGIN
-  IF name is null THEN
-    RETURN null;
-  END IF;
-
-  FOR j IN 1..array_upper(languagepref,1) LOOP
-    IF name ? languagepref[j] THEN
-      result := trim(name->languagepref[j]);
-      IF result != '' THEN
-        return result;
-      END IF;
-    END IF;
-  END LOOP;
-
-  -- anything will do as a fallback - just take the first name type thing there is
-  RETURN trim((avals(name))[1]);
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
---housenumber only needed for tiger data
-CREATE OR REPLACE FUNCTION get_address_by_language(for_place_id BIGINT, housenumber INTEGER, languagepref TEXT[]) RETURNS TEXT
-  AS $$
-DECLARE
-  result TEXT[];
-  currresult TEXT;
-  prevresult TEXT;
-  location RECORD;
-BEGIN
-
-  result := '{}';
-  prevresult := '';
-
-  FOR location IN select * from get_addressdata(for_place_id, housenumber) where isaddress order by rank_address desc LOOP
-    currresult := trim(get_name_by_language(location.name, languagepref));
-    IF currresult != prevresult AND currresult IS NOT NULL AND result[(100 - location.rank_address)] IS NULL THEN
-      result[(100 - location.rank_address)] := trim(get_name_by_language(location.name, languagepref));
-      prevresult := currresult;
-    END IF;
-  END LOOP;
-
-  RETURN array_to_string(result,', ');
-END;
-$$
-LANGUAGE plpgsql;
-
-DROP TYPE IF EXISTS addressline CASCADE;
-create type addressline as (
-  place_id BIGINT,
-  osm_type CHAR(1),
-  osm_id BIGINT,
-  name HSTORE,
-  class TEXT,
-  type TEXT,
-  admin_level INTEGER,
-  fromarea BOOLEAN,  
-  isaddress BOOLEAN,  
-  rank_address INTEGER,
-  distance FLOAT
-);
-
-CREATE OR REPLACE FUNCTION get_addressdata(in_place_id BIGINT, in_housenumber INTEGER) RETURNS setof addressline 
-  AS $$
-DECLARE
-  for_place_id BIGINT;
-  result TEXT[];
-  search TEXT[];
-  found INTEGER;
-  location RECORD;
-  countrylocation RECORD;
-  searchcountrycode varchar(2);
-  searchhousenumber TEXT;
-  searchhousename HSTORE;
-  searchrankaddress INTEGER;
-  searchpostcode TEXT;
-  searchclass TEXT;
-  searchtype TEXT;
-  countryname HSTORE;
-  hadcountry BOOLEAN;
-BEGIN
-  -- first query osmline (interpolation lines)
-  select parent_place_id, country_code, 30, postcode, null, 'place', 'house' from location_property_osmline 
-    WHERE place_id = in_place_id AND in_housenumber>=startnumber AND in_housenumber <= endnumber
-    INTO for_place_id,searchcountrycode, searchrankaddress, searchpostcode, searchhousename, searchclass, searchtype;
-  IF for_place_id IS NOT NULL THEN
-    searchhousenumber = in_housenumber::text;
-  END IF;
-
-  --then query tiger data
-  -- %NOTIGERDATA% IF 0 THEN
-  IF for_place_id IS NULL THEN
-    select parent_place_id,'us', 30, postcode, null, 'place', 'house' from location_property_tiger 
-      WHERE place_id = in_place_id AND in_housenumber>=startnumber AND in_housenumber <= endnumber
-      INTO for_place_id,searchcountrycode, searchrankaddress, searchpostcode, searchhousename, searchclass, searchtype;
-    IF for_place_id IS NOT NULL THEN
-      searchhousenumber = in_housenumber::text;
-    END IF;
-  END IF;
-  -- %NOTIGERDATA% END IF;
-
-  -- %NOAUXDATA% IF 0 THEN
-  IF for_place_id IS NULL THEN
-    select parent_place_id,'us', housenumber, 30, postcode, null, 'place', 'house' from location_property_aux
-      WHERE place_id = in_place_id
-      INTO for_place_id,searchcountrycode, searchhousenumber, searchrankaddress, searchpostcode, searchhousename, searchclass, searchtype;
-  END IF;
-  -- %NOAUXDATA% END IF;
-
-  -- postcode table
-  IF for_place_id IS NULL THEN
-    select parent_place_id, country_code, rank_address, postcode, 'place', 'postcode'
-      FROM location_postcode
-      WHERE place_id = in_place_id
-      INTO for_place_id, searchcountrycode, searchrankaddress, searchpostcode, searchclass, searchtype;
-  END IF;
-
-  IF for_place_id IS NULL THEN
-    select parent_place_id, country_code, housenumber, rank_search, postcode, name, class, type from placex 
-      WHERE place_id = in_place_id and  rank_search > 27
-      INTO for_place_id, searchcountrycode, searchhousenumber, searchrankaddress, searchpostcode, searchhousename, searchclass, searchtype;
-  END IF;
-
-  IF for_place_id IS NULL THEN
-    select coalesce(linked_place_id, place_id),  country_code,
-           housenumber, rank_search, postcode, null
-      from placex where place_id = in_place_id
-      INTO for_place_id, searchcountrycode, searchhousenumber, searchrankaddress, searchpostcode, searchhousename;
-  END IF;
-
---RAISE WARNING '% % % %',searchcountrycode, searchhousenumber, searchrankaddress, searchpostcode;
-
-  found := 1000;
-  hadcountry := false;
-  FOR location IN 
-    select placex.place_id, osm_type, osm_id, name,
-      class, type, admin_level, true as isaddress,
-      CASE WHEN rank_address = 0 THEN 100 WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
-      0 as distance, country_code, postcode
-      from placex
-      where place_id = for_place_id 
-  LOOP
---RAISE WARNING '%',location;
-    IF searchcountrycode IS NULL AND location.country_code IS NOT NULL THEN
-      searchcountrycode := location.country_code;
-    END IF;
-    IF location.type in ('postcode', 'postal_code') THEN
-      location.isaddress := FALSE;
-    ELSEIF location.rank_address = 4 THEN
-      hadcountry := true;
-    END IF;
-    IF location.rank_address < 4 AND NOT hadcountry THEN
-      select name from country_name where country_code = searchcountrycode limit 1 INTO countryname;
-      IF countryname IS NOT NULL THEN
-        countrylocation := ROW(null, null, null, countryname, 'place', 'country', null, true, true, 4, 0)::addressline;
-        RETURN NEXT countrylocation;
-      END IF;
-    END IF;
-    countrylocation := ROW(location.place_id, location.osm_type, location.osm_id, location.name, location.class, 
-                           location.type, location.admin_level, true, location.isaddress, location.rank_address,
-                           location.distance)::addressline;
-    RETURN NEXT countrylocation;
-    found := location.rank_address;
-  END LOOP;
-
-  FOR location IN 
-    select placex.place_id, osm_type, osm_id, name,
-      CASE WHEN extratags ? 'place' THEN 'place' ELSE class END as class,
-      CASE WHEN extratags ? 'place' THEN extratags->'place' ELSE type END as type,
-      admin_level, fromarea, isaddress,
-      CASE WHEN address_place_id = for_place_id AND rank_address = 0 THEN 100 WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
-      distance,country_code,postcode
-      from place_addressline join placex on (address_place_id = placex.place_id) 
-      where place_addressline.place_id = for_place_id 
-      and (cached_rank_address > 0 AND cached_rank_address < searchrankaddress)
-      and address_place_id != for_place_id and linked_place_id is null
-      and (placex.country_code IS NULL OR searchcountrycode IS NULL OR placex.country_code = searchcountrycode)
-      order by rank_address desc,isaddress desc,fromarea desc,distance asc,rank_search desc
-  LOOP
---RAISE WARNING '%',location;
-    IF searchcountrycode IS NULL AND location.country_code IS NOT NULL THEN
-      searchcountrycode := location.country_code;
-    END IF;
-    IF location.type in ('postcode', 'postal_code') THEN
-      location.isaddress := FALSE;
-    END IF;
-    IF location.rank_address = 4 AND location.isaddress THEN
-      hadcountry := true;
-    END IF;
-    IF location.rank_address < 4 AND NOT hadcountry THEN
-      select name from country_name where country_code = searchcountrycode limit 1 INTO countryname;
-      IF countryname IS NOT NULL THEN
-        countrylocation := ROW(null, null, null, countryname, 'place', 'country', null, true, true, 4, 0)::addressline;
-        RETURN NEXT countrylocation;
-      END IF;
-    END IF;
-    countrylocation := ROW(location.place_id, location.osm_type, location.osm_id, location.name, location.class, 
-                           location.type, location.admin_level, location.fromarea, location.isaddress, location.rank_address, 
-                           location.distance)::addressline;
-    RETURN NEXT countrylocation;
-    found := location.rank_address;
-  END LOOP;
-
-  IF found > 4 THEN
-    select name from country_name where country_code = searchcountrycode limit 1 INTO countryname;
---RAISE WARNING '% % %',found,searchcountrycode,countryname;
-    IF countryname IS NOT NULL THEN
-      location := ROW(null, null, null, countryname, 'place', 'country', null, true, true, 4, 0)::addressline;
-      RETURN NEXT location;
-    END IF;
-  END IF;
-
-  IF searchcountrycode IS NOT NULL THEN
-    location := ROW(null, null, null, hstore('ref', searchcountrycode), 'place', 'country_code', null, true, false, 4, 0)::addressline;
-    RETURN NEXT location;
-  END IF;
-
-  IF searchhousename IS NOT NULL THEN
-    location := ROW(in_place_id, null, null, searchhousename, searchclass, searchtype, null, true, true, 29, 0)::addressline;
-    RETURN NEXT location;
-  END IF;
-
-  IF searchhousenumber IS NOT NULL THEN
-    location := ROW(in_place_id, null, null, hstore('ref', searchhousenumber), 'place', 'house_number', null, true, true, 28, 0)::addressline;
-    RETURN NEXT location;
-  END IF;
-
-  IF searchpostcode IS NOT NULL THEN
-    location := ROW(null, null, null, hstore('ref', searchpostcode), 'place', 'postcode', null, true, true, 5, 0)::addressline;
-    RETURN NEXT location;
-  END IF;
-
-  RETURN;
-END;
-$$
-LANGUAGE plpgsql;
-
-
-CREATE OR REPLACE FUNCTION get_searchrank_label(rank INTEGER) RETURNS TEXT
-  AS $$
-DECLARE
-BEGIN
-  IF rank < 2 THEN
-    RETURN 'Continent';
-  ELSEIF rank < 4 THEN
-    RETURN 'Sea';
-  ELSEIF rank < 8 THEN
-    RETURN 'Country';
-  ELSEIF rank < 12 THEN
-    RETURN 'State';
-  ELSEIF rank < 16 THEN
-    RETURN 'County';
-  ELSEIF rank = 16 THEN
-    RETURN 'City';
-  ELSEIF rank = 17 THEN
-    RETURN 'Town / Island';
-  ELSEIF rank = 18 THEN
-    RETURN 'Village / Hamlet';
-  ELSEIF rank = 20 THEN
-    RETURN 'Suburb';
-  ELSEIF rank = 21 THEN
-    RETURN 'Postcode Area';
-  ELSEIF rank = 22 THEN
-    RETURN 'Croft / Farm / Locality / Islet';
-  ELSEIF rank = 23 THEN
-    RETURN 'Postcode Area';
-  ELSEIF rank = 25 THEN
-    RETURN 'Postcode Point';
-  ELSEIF rank = 26 THEN
-    RETURN 'Street / Major Landmark';
-  ELSEIF rank = 27 THEN
-    RETURN 'Minory Street / Path';
-  ELSEIF rank = 28 THEN
-    RETURN 'House / Building';
-  ELSE
-    RETURN 'Other: '||rank;
-  END IF;
-  
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION get_addressrank_label(rank INTEGER) RETURNS TEXT
-  AS $$
-DECLARE
-BEGIN
-  IF rank = 0 THEN
-    RETURN 'None';
-  ELSEIF rank < 2 THEN
-    RETURN 'Continent';
-  ELSEIF rank < 4 THEN
-    RETURN 'Sea';
-  ELSEIF rank = 5 THEN
-    RETURN 'Postcode';
-  ELSEIF rank < 8 THEN
-    RETURN 'Country';
-  ELSEIF rank < 12 THEN
-    RETURN 'State';
-  ELSEIF rank < 16 THEN
-    RETURN 'County';
-  ELSEIF rank = 16 THEN
-    RETURN 'City';
-  ELSEIF rank = 17 THEN
-    RETURN 'Town / Village / Hamlet';
-  ELSEIF rank = 20 THEN
-    RETURN 'Suburb';
-  ELSEIF rank = 21 THEN
-    RETURN 'Postcode Area';
-  ELSEIF rank = 22 THEN
-    RETURN 'Croft / Farm / Locality / Islet';
-  ELSEIF rank = 23 THEN
-    RETURN 'Postcode Area';
-  ELSEIF rank = 25 THEN
-    RETURN 'Postcode Point';
-  ELSEIF rank = 26 THEN
-    RETURN 'Street / Major Landmark';
-  ELSEIF rank = 27 THEN
-    RETURN 'Minory Street / Path';
-  ELSEIF rank = 28 THEN
-    RETURN 'House / Building';
-  ELSE
-    RETURN 'Other: '||rank;
-  END IF;
-  
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION aux_create_property(pointgeo GEOMETRY, in_housenumber TEXT, 
-  in_street TEXT, in_isin TEXT, in_postcode TEXT, in_countrycode char(2)) RETURNS INTEGER
-  AS $$
-DECLARE
-
-  newpoints INTEGER;
-  place_centroid GEOMETRY;
-  out_partition INTEGER;
-  out_parent_place_id BIGINT;
-  location RECORD;
-  address_street_word_id INTEGER;  
-  out_postcode TEXT;
-
-BEGIN
-
-  place_centroid := ST_Centroid(pointgeo);
-  out_partition := get_partition(in_countrycode);
-  out_parent_place_id := null;
-
-  address_street_word_id := get_name_id(make_standard_name(in_street));
-  IF address_street_word_id IS NOT NULL THEN
-    FOR location IN SELECT * from getNearestNamedRoadFeature(out_partition, place_centroid, address_street_word_id) LOOP
-      out_parent_place_id := location.place_id;
-    END LOOP;
-  END IF;
-
-  IF out_parent_place_id IS NULL THEN
-    FOR location IN SELECT place_id FROM getNearestRoadFeature(out_partition, place_centroid) LOOP
-      out_parent_place_id := location.place_id;
-    END LOOP;
-  END IF;
-
-  out_postcode := in_postcode;
-  IF out_postcode IS NULL THEN
-    SELECT postcode from placex where place_id = out_parent_place_id INTO out_postcode;
-  END IF;
-  -- XXX look into postcode table
-
-  newpoints := 0;
-  insert into location_property_aux (place_id, partition, parent_place_id, housenumber, postcode, centroid)
-    values (nextval('seq_place'), out_partition, out_parent_place_id, in_housenumber, out_postcode, place_centroid);
-  newpoints := newpoints + 1;
-
-  RETURN newpoints;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION get_osm_rel_members(members TEXT[], member TEXT) RETURNS TEXT[]
-  AS $$
-DECLARE
-  result TEXT[];
-  i INTEGER;
-BEGIN
-
-  FOR i IN 1..ARRAY_UPPER(members,1) BY 2 LOOP
-    IF members[i+1] = member THEN
-      result := result || members[i];
-    END IF;
-  END LOOP;
-
-  return result;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION get_osm_rel_members(members TEXT[], memberLabels TEXT[]) RETURNS SETOF TEXT
-  AS $$
-DECLARE
-  i INTEGER;
-BEGIN
-
-  FOR i IN 1..ARRAY_UPPER(members,1) BY 2 LOOP
-    IF members[i+1] = ANY(memberLabels) THEN
-      RETURN NEXT members[i];
-    END IF;
-  END LOOP;
-
-  RETURN;
-END;
-$$
-LANGUAGE plpgsql;
-
--- See: http://stackoverflow.com/questions/6410088/how-can-i-mimic-the-php-urldecode-function-in-postgresql
-CREATE OR REPLACE FUNCTION decode_url_part(p varchar) RETURNS varchar 
-  AS $$
-SELECT convert_from(CAST(E'\\x' || array_to_string(ARRAY(
-    SELECT CASE WHEN length(r.m[1]) = 1 THEN encode(convert_to(r.m[1], 'SQL_ASCII'), 'hex') ELSE substring(r.m[1] from 2 for 2) END
-    FROM regexp_matches($1, '%[0-9a-f][0-9a-f]|.', 'gi') AS r(m)
-), '') AS bytea), 'UTF8');
-$$ 
-LANGUAGE SQL IMMUTABLE STRICT;
-
-CREATE OR REPLACE FUNCTION catch_decode_url_part(p varchar) RETURNS varchar
-  AS $$
-DECLARE
-BEGIN
-  RETURN decode_url_part(p);
-EXCEPTION
-  WHEN others THEN return null;
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
-
-DROP TYPE wikipedia_article_match CASCADE;
-create type wikipedia_article_match as (
-  language TEXT,
-  title TEXT,
-  importance FLOAT
-);
-
-CREATE OR REPLACE FUNCTION get_wikipedia_match(extratags HSTORE, country_code varchar(2)) RETURNS wikipedia_article_match
-  AS $$
-DECLARE
-  langs TEXT[];
-  i INT;
-  wiki_article TEXT;
-  wiki_article_title TEXT;
-  wiki_article_language TEXT;
-  result wikipedia_article_match;
-BEGIN
-  langs := ARRAY['english','country','ar','bg','ca','cs','da','de','en','es','eo','eu','fa','fr','ko','hi','hr','id','it','he','lt','hu','ms','nl','ja','no','pl','pt','kk','ro','ru','sk','sl','sr','fi','sv','tr','uk','vi','vo','war','zh'];
-  i := 1;
-  WHILE langs[i] IS NOT NULL LOOP
-    wiki_article := extratags->(case when langs[i] in ('english','country') THEN 'wikipedia' ELSE 'wikipedia:'||langs[i] END);
-    IF wiki_article is not null THEN
-      wiki_article := regexp_replace(wiki_article,E'^(.*?)([a-z]{2,3}).wikipedia.org/wiki/',E'\\2:');
-      wiki_article := regexp_replace(wiki_article,E'^(.*?)([a-z]{2,3}).wikipedia.org/w/index.php\\?title=',E'\\2:');
-      wiki_article := regexp_replace(wiki_article,E'^(.*?)/([a-z]{2,3})/wiki/',E'\\2:');
-      --wiki_article := regexp_replace(wiki_article,E'^(.*?)([a-z]{2,3})[=:]',E'\\2:');
-      wiki_article := replace(wiki_article,' ','_');
-      IF strpos(wiki_article, ':') IN (3,4) THEN
-        wiki_article_language := lower(trim(split_part(wiki_article, ':', 1)));
-        wiki_article_title := trim(substr(wiki_article, strpos(wiki_article, ':')+1));
-      ELSE
-        wiki_article_title := trim(wiki_article);
-        wiki_article_language := CASE WHEN langs[i] = 'english' THEN 'en' WHEN langs[i] = 'country' THEN get_country_language_code(country_code) ELSE langs[i] END;
-      END IF;
-
-      select wikipedia_article.language,wikipedia_article.title,wikipedia_article.importance
-        from wikipedia_article 
-        where language = wiki_article_language and 
-        (title = wiki_article_title OR title = catch_decode_url_part(wiki_article_title) OR title = replace(catch_decode_url_part(wiki_article_title),E'\\',''))
-      UNION ALL
-      select wikipedia_article.language,wikipedia_article.title,wikipedia_article.importance
-        from wikipedia_redirect join wikipedia_article on (wikipedia_redirect.language = wikipedia_article.language and wikipedia_redirect.to_title = wikipedia_article.title)
-        where wikipedia_redirect.language = wiki_article_language and 
-        (from_title = wiki_article_title OR from_title = catch_decode_url_part(wiki_article_title) OR from_title = replace(catch_decode_url_part(wiki_article_title),E'\\',''))
-      order by importance desc limit 1 INTO result;
-
-      IF result.language is not null THEN
-        return result;
-      END IF;
-    END IF;
-    i := i + 1;
-  END LOOP;
-  RETURN NULL;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION quad_split_geometry(geometry GEOMETRY, maxarea FLOAT, maxdepth INTEGER) 
-  RETURNS SETOF GEOMETRY
-  AS $$
-DECLARE
-  xmin FLOAT;
-  ymin FLOAT;
-  xmax FLOAT;
-  ymax FLOAT;
-  xmid FLOAT;
-  ymid FLOAT;
-  secgeo GEOMETRY;
-  secbox GEOMETRY;
-  seg INTEGER;
-  geo RECORD;
-  area FLOAT;
-  remainingdepth INTEGER;
-  added INTEGER;
-  
-BEGIN
-
---  RAISE WARNING 'quad_split_geometry: maxarea=%, depth=%',maxarea,maxdepth;
-
-  IF (ST_GeometryType(geometry) not in ('ST_Polygon','ST_MultiPolygon') OR NOT ST_IsValid(geometry)) THEN
-    RETURN NEXT geometry;
-    RETURN;
-  END IF;
-
-  remainingdepth := maxdepth - 1;
-  area := ST_AREA(geometry);
-  IF remainingdepth < 1 OR area < maxarea THEN
-    RETURN NEXT geometry;
-    RETURN;
-  END IF;
-
-  xmin := st_xmin(geometry);
-  xmax := st_xmax(geometry);
-  ymin := st_ymin(geometry);
-  ymax := st_ymax(geometry);
-  secbox := ST_SetSRID(ST_MakeBox2D(ST_Point(ymin,xmin),ST_Point(ymax,xmax)),4326);
-
-  -- if the geometry completely covers the box don't bother to slice any more
-  IF ST_AREA(secbox) = area THEN
-    RETURN NEXT geometry;
-    RETURN;
-  END IF;
-
-  xmid := (xmin+xmax)/2;
-  ymid := (ymin+ymax)/2;
-
-  added := 0;
-  FOR seg IN 1..4 LOOP
-
-    IF seg = 1 THEN
-      secbox := ST_SetSRID(ST_MakeBox2D(ST_Point(xmin,ymin),ST_Point(xmid,ymid)),4326);
-    END IF;
-    IF seg = 2 THEN
-      secbox := ST_SetSRID(ST_MakeBox2D(ST_Point(xmin,ymid),ST_Point(xmid,ymax)),4326);
-    END IF;
-    IF seg = 3 THEN
-      secbox := ST_SetSRID(ST_MakeBox2D(ST_Point(xmid,ymin),ST_Point(xmax,ymid)),4326);
-    END IF;
-    IF seg = 4 THEN
-      secbox := ST_SetSRID(ST_MakeBox2D(ST_Point(xmid,ymid),ST_Point(xmax,ymax)),4326);
-    END IF;
-
-    IF st_intersects(geometry, secbox) THEN
-      secgeo := st_intersection(geometry, secbox);
-      IF NOT ST_IsEmpty(secgeo) AND ST_GeometryType(secgeo) in ('ST_Polygon','ST_MultiPolygon') THEN
-        FOR geo IN select quad_split_geometry(secgeo, maxarea, remainingdepth) as geom LOOP
-          IF NOT ST_IsEmpty(geo.geom) AND ST_GeometryType(geo.geom) in ('ST_Polygon','ST_MultiPolygon') THEN
-            added := added + 1;
-            RETURN NEXT geo.geom;
-          END IF;
-        END LOOP;
-      END IF;
-    END IF;
-  END LOOP;
-
-  RETURN;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION split_geometry(geometry GEOMETRY) 
-  RETURNS SETOF GEOMETRY
-  AS $$
-DECLARE
-  geo RECORD;
-BEGIN
-  -- 10000000000 is ~~ 1x1 degree
-  FOR geo IN select quad_split_geometry(geometry, 0.25, 20) as geom LOOP
-    RETURN NEXT geo.geom;
-  END LOOP;
-  RETURN;
-END;
-$$
-LANGUAGE plpgsql;
-
-
-CREATE OR REPLACE FUNCTION place_force_delete(placeid BIGINT) RETURNS BOOLEAN
-  AS $$
-DECLARE
-    osmid BIGINT;
-    osmtype character(1);
-    pclass text;
-    ptype text;
-BEGIN
-  SELECT osm_type, osm_id, class, type FROM placex WHERE place_id = placeid INTO osmtype, osmid, pclass, ptype;
-  DELETE FROM import_polygon_delete where osm_type = osmtype and osm_id = osmid and class = pclass and type = ptype;
-  DELETE FROM import_polygon_error where osm_type = osmtype and osm_id = osmid and class = pclass and type = ptype;
-  -- force delete from place/placex by making it a very small geometry
-  UPDATE place set geometry = ST_SetSRID(ST_Point(0,0), 4326) where osm_type = osmtype and osm_id = osmid and class = pclass and type = ptype;
-  DELETE FROM place where osm_type = osmtype and osm_id = osmid and class = pclass and type = ptype;
-
-  RETURN TRUE;
-END;
-$$
-LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION place_force_update(placeid BIGINT) RETURNS BOOLEAN
-  AS $$
-DECLARE
-  placegeom GEOMETRY;
-  geom GEOMETRY;
-  diameter FLOAT;
-  rank INTEGER;
-BEGIN
-  UPDATE placex SET indexed_status = 2 WHERE place_id = placeid;
-  SELECT geometry, rank_search FROM placex WHERE place_id = placeid INTO placegeom, rank;
-  IF placegeom IS NOT NULL AND ST_IsValid(placegeom) THEN
-    IF ST_GeometryType(placegeom) in ('ST_Polygon','ST_MultiPolygon') THEN
-      FOR geom IN select split_geometry(placegeom) FROM placex WHERE place_id = placeid LOOP
-        update placex set indexed_status = 2 where (st_covers(geom, placex.geometry) OR ST_Intersects(geom, placex.geometry)) 
-        AND rank_search > rank and indexed_status = 0 and ST_geometrytype(placex.geometry) = 'ST_Point' and (rank_search < 28 or name is not null or (rank >= 16 and address ? 'place'));
-        update placex set indexed_status = 2 where (st_covers(geom, placex.geometry) OR ST_Intersects(geom, placex.geometry)) 
-        AND rank_search > rank and indexed_status = 0 and ST_geometrytype(placex.geometry) != 'ST_Point' and (rank_search < 28 or name is not null or (rank >= 16 and address ? 'place'));
-      END LOOP;
-    ELSE
-        diameter := 0;
-        IF rank = 11 THEN
-          diameter := 0.05;
-        ELSEIF rank < 18 THEN
-          diameter := 0.1;
-        ELSEIF rank < 20 THEN
-          diameter := 0.05;
-        ELSEIF rank = 21 THEN
-          diameter := 0.001;
-        ELSEIF rank < 24 THEN
-          diameter := 0.02;
-        ELSEIF rank < 26 THEN
-          diameter := 0.002; -- 100 to 200 meters
-        ELSEIF rank < 28 THEN
-          diameter := 0.001; -- 50 to 100 meters
-        END IF;
-        IF diameter > 0 THEN
-          IF rank >= 26 THEN
-            -- roads may cause reparenting for >27 rank places
-            update placex set indexed_status = 2 where indexed_status = 0 and rank_search > rank and ST_DWithin(placex.geometry, placegeom, diameter);
-          ELSEIF rank >= 16 THEN
-            -- up to rank 16, street-less addresses may need reparenting
-            update placex set indexed_status = 2 where indexed_status = 0 and rank_search > rank and ST_DWithin(placex.geometry, placegeom, diameter) and (rank_search < 28 or name is not null or address ? 'place');
-          ELSE
-            -- for all other places the search terms may change as well
-            update placex set indexed_status = 2 where indexed_status = 0 and rank_search > rank and ST_DWithin(placex.geometry, placegeom, diameter) and (rank_search < 28 or name is not null);
-          END IF;
-        END IF;
-    END IF;
-    RETURN TRUE;
-  END IF;
-
-  RETURN FALSE;
-END;
-$$
-LANGUAGE plpgsql;
diff --git a/sql/functions/address_lookup.sql b/sql/functions/address_lookup.sql
new file mode 100644 (file)
index 0000000..7885d0a
--- /dev/null
@@ -0,0 +1,289 @@
+-- Functions for returning address information for a place.
+
+DROP TYPE IF EXISTS addressline CASCADE;
+CREATE TYPE addressline as (
+  place_id BIGINT,
+  osm_type CHAR(1),
+  osm_id BIGINT,
+  name HSTORE,
+  class TEXT,
+  type TEXT,
+  place_type TEXT,
+  admin_level INTEGER,
+  fromarea BOOLEAN,
+  isaddress BOOLEAN,
+  rank_address INTEGER,
+  distance FLOAT
+);
+
+
+CREATE OR REPLACE FUNCTION get_name_by_language(name hstore, languagepref TEXT[])
+  RETURNS TEXT
+  AS $$
+DECLARE
+  result TEXT;
+BEGIN
+  IF name is null THEN
+    RETURN null;
+  END IF;
+
+  FOR j IN 1..array_upper(languagepref,1) LOOP
+    IF name ? languagepref[j] THEN
+      result := trim(name->languagepref[j]);
+      IF result != '' THEN
+        return result;
+      END IF;
+    END IF;
+  END LOOP;
+
+  -- anything will do as a fallback - just take the first name type thing there is
+  RETURN trim((avals(name))[1]);
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+
+--housenumber only needed for tiger data
+CREATE OR REPLACE FUNCTION get_address_by_language(for_place_id BIGINT,
+                                                   housenumber INTEGER,
+                                                   languagepref TEXT[])
+  RETURNS TEXT
+  AS $$
+DECLARE
+  result TEXT[];
+  currresult TEXT;
+  prevresult TEXT;
+  location RECORD;
+BEGIN
+
+  result := '{}';
+  prevresult := '';
+
+  FOR location IN
+    SELECT name,
+       CASE WHEN place_id = for_place_id THEN 99 ELSE rank_address END as rank_address
+    FROM get_addressdata(for_place_id, housenumber)
+    WHERE isaddress order by rank_address desc
+  LOOP
+    currresult := trim(get_name_by_language(location.name, languagepref));
+    IF currresult != prevresult AND currresult IS NOT NULL
+       AND result[(100 - location.rank_address)] IS NULL
+    THEN
+      result[(100 - location.rank_address)] := currresult;
+      prevresult := currresult;
+    END IF;
+  END LOOP;
+
+  RETURN array_to_string(result,', ');
+END;
+$$
+LANGUAGE plpgsql STABLE;
+
+
+-- Compute the list of address parts for the given place.
+--
+-- If in_housenumber is greator or equal 0, look for an interpolation.
+CREATE OR REPLACE FUNCTION get_addressdata(in_place_id BIGINT, in_housenumber INTEGER)
+  RETURNS setof addressline
+  AS $$
+DECLARE
+  for_place_id BIGINT;
+  result TEXT[];
+  search TEXT[];
+  found INTEGER;
+  location RECORD;
+  countrylocation RECORD;
+  searchcountrycode varchar(2);
+  searchhousenumber TEXT;
+  searchhousename HSTORE;
+  searchrankaddress INTEGER;
+  searchpostcode TEXT;
+  postcode_isexact BOOL;
+  searchclass TEXT;
+  searchtype TEXT;
+  countryname HSTORE;
+BEGIN
+  -- The place ein question might not have a direct entry in place_addressline.
+  -- Look for the parent of such places then and save if in for_place_id.
+
+  postcode_isexact := false;
+
+  -- first query osmline (interpolation lines)
+  IF in_housenumber >= 0 THEN
+    SELECT parent_place_id, country_code, in_housenumber::text, 30, postcode,
+           null, 'place', 'house'
+      FROM location_property_osmline
+      WHERE place_id = in_place_id AND in_housenumber>=startnumber
+            AND in_housenumber <= endnumber
+      INTO for_place_id, searchcountrycode, searchhousenumber, searchrankaddress,
+           searchpostcode, searchhousename, searchclass, searchtype;
+  END IF;
+
+  --then query tiger data
+  -- %NOTIGERDATA% IF 0 THEN
+  IF for_place_id IS NULL AND in_housenumber >= 0 THEN
+    SELECT parent_place_id, 'us', in_housenumber::text, 30, postcode, null,
+           'place', 'house'
+      FROM location_property_tiger
+      WHERE place_id = in_place_id AND in_housenumber >= startnumber
+            AND in_housenumber <= endnumber
+      INTO for_place_id, searchcountrycode, searchhousenumber, searchrankaddress,
+           searchpostcode, searchhousename, searchclass, searchtype;
+  END IF;
+  -- %NOTIGERDATA% END IF;
+
+  -- %NOAUXDATA% IF 0 THEN
+  IF for_place_id IS NULL THEN
+    SELECT parent_place_id, 'us', housenumber, 30, postcode, null, 'place', 'house'
+      FROM location_property_aux
+      WHERE place_id = in_place_id
+      INTO for_place_id,searchcountrycode, searchhousenumber, searchrankaddress,
+           searchpostcode, searchhousename, searchclass, searchtype;
+  END IF;
+  -- %NOAUXDATA% END IF;
+
+  -- postcode table
+  IF for_place_id IS NULL THEN
+    SELECT parent_place_id, country_code, rank_search, postcode, 'place', 'postcode'
+      FROM location_postcode
+      WHERE place_id = in_place_id
+      INTO for_place_id, searchcountrycode, searchrankaddress, searchpostcode,
+           searchclass, searchtype;
+  END IF;
+
+  -- POI objects in the placex table
+  IF for_place_id IS NULL THEN
+    SELECT parent_place_id, country_code, housenumber, rank_search,
+           postcode, address is not null and address ? 'postcode',
+           name, class, type
+      FROM placex
+      WHERE place_id = in_place_id and rank_search > 27
+      INTO for_place_id, searchcountrycode, searchhousenumber, searchrankaddress,
+           searchpostcode, postcode_isexact, searchhousename, searchclass, searchtype;
+  END IF;
+
+  -- If for_place_id is still NULL at this point then the object has its own
+  -- entry in place_address line. However, still check if there is not linked
+  -- place we should be using instead.
+  IF for_place_id IS NULL THEN
+    select coalesce(linked_place_id, place_id),  country_code,
+           housenumber, rank_search, postcode,
+           address is not null and address ? 'postcode', null
+      from placex where place_id = in_place_id
+      INTO for_place_id, searchcountrycode, searchhousenumber, searchrankaddress, searchpostcode, postcode_isexact, searchhousename;
+  END IF;
+
+--RAISE WARNING '% % % %',searchcountrycode, searchhousenumber, searchrankaddress, searchpostcode;
+
+  found := 1000; -- the lowest rank_address included
+
+  -- Return the record for the base entry.
+  FOR location IN
+    SELECT placex.place_id, osm_type, osm_id, name,
+           class, type, admin_level,
+           type not in ('postcode', 'postal_code') as isaddress,
+           CASE WHEN rank_address = 0 THEN 100
+                WHEN rank_address = 11 THEN 5
+                ELSE rank_address END as rank_address,
+           0 as distance, country_code, postcode
+      FROM placex
+      WHERE place_id = for_place_id
+  LOOP
+--RAISE WARNING '%',location;
+    IF searchcountrycode IS NULL AND location.country_code IS NOT NULL THEN
+      searchcountrycode := location.country_code;
+    END IF;
+    IF location.rank_address < 4 THEN
+      -- no country locations for ranks higher than country
+      searchcountrycode := NULL;
+    END IF;
+    countrylocation := ROW(location.place_id, location.osm_type, location.osm_id,
+                           location.name, location.class, location.type, NULL,
+                           location.admin_level, true, location.isaddress,
+                           location.rank_address, location.distance)::addressline;
+    RETURN NEXT countrylocation;
+    found := location.rank_address;
+  END LOOP;
+
+  FOR location IN
+    SELECT placex.place_id, osm_type, osm_id, name, class, type,
+           coalesce(extratags->'place', extratags->'linked_place') as place_type,
+           admin_level, fromarea, isaddress,
+           CASE WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
+           distance, country_code, postcode
+      FROM place_addressline join placex on (address_place_id = placex.place_id)
+      WHERE place_addressline.place_id = for_place_id
+            AND (cached_rank_address >= 4 AND cached_rank_address < searchrankaddress)
+            AND linked_place_id is null
+            AND (placex.country_code IS NULL OR searchcountrycode IS NULL
+                 OR placex.country_code = searchcountrycode)
+      ORDER BY rank_address desc, isaddress desc, fromarea desc,
+               distance asc, rank_search desc
+  LOOP
+--RAISE WARNING '%',location;
+    IF searchcountrycode IS NULL AND location.country_code IS NOT NULL THEN
+      searchcountrycode := location.country_code;
+    END IF;
+    IF location.type in ('postcode', 'postal_code')
+       AND searchpostcode is not null
+    THEN
+      -- If the place had a postcode assigned, take this one only
+      -- into consideration when it is an area and the place does not have
+      -- a postcode itself.
+      IF location.fromarea AND not postcode_isexact AND location.isaddress THEN
+        searchpostcode := null; -- remove the less exact postcode
+      ELSE
+        location.isaddress := false;
+      END IF;
+    END IF;
+    countrylocation := ROW(location.place_id, location.osm_type, location.osm_id,
+                           location.name, location.class, location.type,
+                           location.place_type,
+                           location.admin_level, location.fromarea,
+                           location.isaddress, location.rank_address,
+                           location.distance)::addressline;
+    RETURN NEXT countrylocation;
+    found := location.rank_address;
+  END LOOP;
+
+  -- If no country was included yet, add the name information from country_name.
+  IF found > 4 THEN
+    SELECT name FROM country_name
+      WHERE country_code = searchcountrycode LIMIT 1 INTO countryname;
+--RAISE WARNING '% % %',found,searchcountrycode,countryname;
+    IF countryname IS NOT NULL THEN
+      location := ROW(null, null, null, countryname, 'place', 'country', NULL,
+                      null, true, true, 4, 0)::addressline;
+      RETURN NEXT location;
+    END IF;
+  END IF;
+
+  -- Finally add some artificial rows.
+  IF searchcountrycode IS NOT NULL THEN
+    location := ROW(null, null, null, hstore('ref', searchcountrycode),
+                    'place', 'country_code', null, null, true, false, 4, 0)::addressline;
+    RETURN NEXT location;
+  END IF;
+
+  IF searchhousename IS NOT NULL THEN
+    location := ROW(in_place_id, null, null, searchhousename, searchclass,
+                    searchtype, null, null, true, true, 29, 0)::addressline;
+    RETURN NEXT location;
+  END IF;
+
+  IF searchhousenumber IS NOT NULL THEN
+    location := ROW(in_place_id, null, null, hstore('ref', searchhousenumber),
+                    'place', 'house_number', null, null, true, true, 28, 0)::addressline;
+    RETURN NEXT location;
+  END IF;
+
+  IF searchpostcode IS NOT NULL THEN
+    location := ROW(null, null, null, hstore('ref', searchpostcode), 'place',
+                    'postcode', null, null, false, true, 5, 0)::addressline;
+    RETURN NEXT location;
+  END IF;
+
+  RETURN;
+END;
+$$
+LANGUAGE plpgsql STABLE;
diff --git a/sql/functions/aux_property.sql b/sql/functions/aux_property.sql
new file mode 100644 (file)
index 0000000..6dd99eb
--- /dev/null
@@ -0,0 +1,53 @@
+-- Functions for adding external data (currently unused).
+
+CREATE OR REPLACE FUNCTION aux_create_property(pointgeo GEOMETRY, in_housenumber TEXT,
+                                               in_street TEXT, in_isin TEXT,
+                                               in_postcode TEXT, in_countrycode char(2))
+  RETURNS INTEGER
+  AS $$
+DECLARE
+
+  newpoints INTEGER;
+  place_centroid GEOMETRY;
+  out_partition INTEGER;
+  out_parent_place_id BIGINT;
+  location RECORD;
+  address_street_word_ids INTEGER[];
+  out_postcode TEXT;
+
+BEGIN
+
+  place_centroid := ST_Centroid(pointgeo);
+  out_partition := get_partition(in_countrycode);
+  out_parent_place_id := null;
+
+  address_street_word_ids := word_ids_from_name(in_street);
+  IF address_street_word_ids IS NOT NULL THEN
+    out_parent_place_id := getNearestNamedRoadPlaceId(out_partition, place_centroid,
+                                                      address_street_word_ids);
+  END IF;
+
+  IF out_parent_place_id IS NULL THEN
+    SELECT getNearestRoadPlaceId(out_partition, place_centroid)
+      INTO out_parent_place_id;
+    END LOOP;
+  END IF;
+
+  out_postcode := in_postcode;
+  IF out_postcode IS NULL THEN
+    SELECT postcode from placex where place_id = out_parent_place_id INTO out_postcode;
+  END IF;
+  -- XXX look into postcode table
+
+  newpoints := 0;
+  insert into location_property_aux (place_id, partition, parent_place_id,
+                                     housenumber, postcode, centroid)
+    values (nextval('seq_place'), out_partition, out_parent_place_id,
+            in_housenumber, out_postcode, place_centroid);
+  newpoints := newpoints + 1;
+
+  RETURN newpoints;
+END;
+$$
+LANGUAGE plpgsql;
+
diff --git a/sql/functions/importance.sql b/sql/functions/importance.sql
new file mode 100644 (file)
index 0000000..0837f80
--- /dev/null
@@ -0,0 +1,125 @@
+-- Functions for interpreting wkipedia/wikidata tags and computing importance.
+
+DROP TYPE IF EXISTS wikipedia_article_match CASCADE;
+CREATE TYPE wikipedia_article_match as (
+  language TEXT,
+  title TEXT,
+  importance FLOAT
+);
+
+DROP TYPE IF EXISTS place_importance CASCADE;
+CREATE TYPE place_importance as (
+  importance FLOAT,
+  wikipedia TEXT
+);
+
+
+-- See: http://stackoverflow.com/questions/6410088/how-can-i-mimic-the-php-urldecode-function-in-postgresql
+CREATE OR REPLACE FUNCTION decode_url_part(p varchar)
+  RETURNS varchar
+  AS $$
+SELECT convert_from(CAST(E'\\x' || array_to_string(ARRAY(
+    SELECT CASE WHEN length(r.m[1]) = 1 THEN encode(convert_to(r.m[1], 'SQL_ASCII'), 'hex') ELSE substring(r.m[1] from 2 for 2) END
+    FROM regexp_matches($1, '%[0-9a-f][0-9a-f]|.', 'gi') AS r(m)
+), '') AS bytea), 'UTF8');
+$$ 
+LANGUAGE SQL IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION catch_decode_url_part(p varchar)
+  RETURNS varchar
+  AS $$
+DECLARE
+BEGIN
+  RETURN decode_url_part(p);
+EXCEPTION
+  WHEN others THEN return null;
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION get_wikipedia_match(extratags HSTORE, country_code varchar(2))
+  RETURNS wikipedia_article_match
+  AS $$
+DECLARE
+  langs TEXT[];
+  i INT;
+  wiki_article TEXT;
+  wiki_article_title TEXT;
+  wiki_article_language TEXT;
+  result wikipedia_article_match;
+BEGIN
+  langs := ARRAY['english','country','ar','bg','ca','cs','da','de','en','es','eo','eu','fa','fr','ko','hi','hr','id','it','he','lt','hu','ms','nl','ja','no','pl','pt','kk','ro','ru','sk','sl','sr','fi','sv','tr','uk','vi','vo','war','zh'];
+  i := 1;
+  WHILE langs[i] IS NOT NULL LOOP
+    wiki_article := extratags->(case when langs[i] in ('english','country') THEN 'wikipedia' ELSE 'wikipedia:'||langs[i] END);
+    IF wiki_article is not null THEN
+      wiki_article := regexp_replace(wiki_article,E'^(.*?)([a-z]{2,3}).wikipedia.org/wiki/',E'\\2:');
+      wiki_article := regexp_replace(wiki_article,E'^(.*?)([a-z]{2,3}).wikipedia.org/w/index.php\\?title=',E'\\2:');
+      wiki_article := regexp_replace(wiki_article,E'^(.*?)/([a-z]{2,3})/wiki/',E'\\2:');
+      --wiki_article := regexp_replace(wiki_article,E'^(.*?)([a-z]{2,3})[=:]',E'\\2:');
+      wiki_article := replace(wiki_article,' ','_');
+      IF strpos(wiki_article, ':') IN (3,4) THEN
+        wiki_article_language := lower(trim(split_part(wiki_article, ':', 1)));
+        wiki_article_title := trim(substr(wiki_article, strpos(wiki_article, ':')+1));
+      ELSE
+        wiki_article_title := trim(wiki_article);
+        wiki_article_language := CASE WHEN langs[i] = 'english' THEN 'en' WHEN langs[i] = 'country' THEN get_country_language_code(country_code) ELSE langs[i] END;
+      END IF;
+
+      select wikipedia_article.language,wikipedia_article.title,wikipedia_article.importance
+        from wikipedia_article 
+        where language = wiki_article_language and 
+        (title = wiki_article_title OR title = catch_decode_url_part(wiki_article_title) OR title = replace(catch_decode_url_part(wiki_article_title),E'\\',''))
+      UNION ALL
+      select wikipedia_article.language,wikipedia_article.title,wikipedia_article.importance
+        from wikipedia_redirect join wikipedia_article on (wikipedia_redirect.language = wikipedia_article.language and wikipedia_redirect.to_title = wikipedia_article.title)
+        where wikipedia_redirect.language = wiki_article_language and 
+        (from_title = wiki_article_title OR from_title = catch_decode_url_part(wiki_article_title) OR from_title = replace(catch_decode_url_part(wiki_article_title),E'\\',''))
+      order by importance desc limit 1 INTO result;
+
+      IF result.language is not null THEN
+        return result;
+      END IF;
+    END IF;
+    i := i + 1;
+  END LOOP;
+  RETURN NULL;
+END;
+$$
+LANGUAGE plpgsql STABLE;
+
+
+CREATE OR REPLACE FUNCTION compute_importance(extratags HSTORE,
+                                              country_code varchar(2),
+                                              osm_type varchar(1), osm_id BIGINT)
+  RETURNS place_importance
+  AS $$
+DECLARE
+  match RECORD;
+  result place_importance;
+BEGIN
+  FOR match IN SELECT * FROM get_wikipedia_match(extratags, country_code)
+               WHERE language is not NULL
+  LOOP
+    result.importance := match.importance;
+    result.wikipedia := match.language || ':' || match.title;
+    RETURN result;
+  END LOOP;
+
+  IF extratags ? 'wikidata' THEN
+    FOR match IN SELECT * FROM wikipedia_article
+                  WHERE wd_page_title = extratags->'wikidata'
+                  ORDER BY language = 'en' DESC, langcount DESC LIMIT 1 LOOP
+      result.importance := match.importance;
+      result.wikipedia := match.language || ':' || match.title;
+      RETURN result;
+    END LOOP;
+  END IF;
+
+  RETURN null;
+END;
+$$
+LANGUAGE plpgsql;
+
diff --git a/sql/functions/interpolation.sql b/sql/functions/interpolation.sql
new file mode 100644 (file)
index 0000000..a797cad
--- /dev/null
@@ -0,0 +1,251 @@
+-- Functions for address interpolation objects in location_property_osmline.
+
+-- Splits the line at the given point and returns the two parts
+-- in a multilinestring.
+CREATE OR REPLACE FUNCTION split_line_on_node(line GEOMETRY, point GEOMETRY)
+RETURNS GEOMETRY
+  AS $$
+BEGIN
+  RETURN ST_Split(ST_Snap(line, point, 0.0005), point);
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+
+-- find the parent road of the cut road parts
+CREATE OR REPLACE FUNCTION get_interpolation_parent(wayid BIGINT, street TEXT,
+                                                    place TEXT, partition SMALLINT,
+                                                    centroid GEOMETRY, geom GEOMETRY)
+  RETURNS BIGINT
+  AS $$
+DECLARE
+  addr_street TEXT;
+  addr_place TEXT;
+  parent_place_id BIGINT;
+
+  waynodes BIGINT[];
+
+  location RECORD;
+BEGIN
+  addr_street = street;
+  addr_place = place;
+
+  IF addr_street is null and addr_place is null THEN
+    select nodes from planet_osm_ways where id = wayid INTO waynodes;
+    FOR location IN SELECT placex.address from placex
+                    where osm_type = 'N' and osm_id = ANY(waynodes)
+                          and placex.address is not null
+                          and (placex.address ? 'street' or placex.address ? 'place')
+                          and indexed_status < 100
+                    limit 1 LOOP
+      addr_street = location.address->'street';
+      addr_place = location.address->'place';
+    END LOOP;
+  END IF;
+
+  parent_place_id := find_parent_for_address(addr_street, addr_place,
+                                             partition, centroid);
+
+  IF parent_place_id is null THEN
+    FOR location IN SELECT place_id FROM placex
+        WHERE ST_DWithin(geom, placex.geometry, 0.001) and placex.rank_search = 26
+        ORDER BY (ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,0))+
+                  ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,0.5))+
+                  ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,1))) ASC limit 1
+    LOOP
+      parent_place_id := location.place_id;
+    END LOOP;
+  END IF;
+
+  IF parent_place_id is null THEN
+    RETURN 0;
+  END IF;
+
+  RETURN parent_place_id;
+END;
+$$
+LANGUAGE plpgsql STABLE;
+
+
+CREATE OR REPLACE FUNCTION osmline_reinsert(node_id BIGINT, geom GEOMETRY)
+  RETURNS BOOLEAN
+  AS $$
+DECLARE
+  existingline RECORD;
+BEGIN
+   SELECT w.id FROM planet_osm_ways w, location_property_osmline p
+     WHERE p.linegeo && geom and p.osm_id = w.id and p.indexed_status = 0
+           and node_id = any(w.nodes) INTO existingline;
+
+   IF existingline.id is not NULL THEN
+       DELETE FROM location_property_osmline WHERE osm_id = existingline.id;
+       INSERT INTO location_property_osmline (osm_id, address, linegeo)
+         SELECT osm_id, address, geometry FROM place
+           WHERE osm_type = 'W' and osm_id = existingline.id;
+   END IF;
+
+   RETURN true;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION osmline_insert()
+  RETURNS TRIGGER
+  AS $$
+BEGIN
+  NEW.place_id := nextval('seq_place');
+  NEW.indexed_date := now();
+
+  IF NEW.indexed_status IS NULL THEN
+      IF NEW.address is NULL OR NOT NEW.address ? 'interpolation'
+         OR NEW.address->'interpolation' NOT IN ('odd', 'even', 'all') THEN
+          -- other interpolation types than odd/even/all (e.g. numeric ones) are not supported
+          RETURN NULL;
+      END IF;
+
+      NEW.indexed_status := 1; --STATUS_NEW
+      NEW.country_code := lower(get_country_code(NEW.linegeo));
+
+      NEW.partition := get_partition(NEW.country_code);
+      NEW.geometry_sector := geometry_sector(NEW.partition, NEW.linegeo);
+  END IF;
+
+  RETURN NEW;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION osmline_update()
+  RETURNS TRIGGER
+  AS $$
+DECLARE
+  place_centroid GEOMETRY;
+  waynodes BIGINT[];
+  prevnode RECORD;
+  nextnode RECORD;
+  startnumber INTEGER;
+  endnumber INTEGER;
+  housenum INTEGER;
+  linegeo GEOMETRY;
+  splitline GEOMETRY;
+  sectiongeo GEOMETRY;
+  interpol_postcode TEXT;
+  postcode TEXT;
+BEGIN
+  -- deferred delete
+  IF OLD.indexed_status = 100 THEN
+    delete from location_property_osmline where place_id = OLD.place_id;
+    RETURN NULL;
+  END IF;
+
+  IF NEW.indexed_status != 0 OR OLD.indexed_status = 0 THEN
+    RETURN NEW;
+  END IF;
+
+  NEW.interpolationtype = NEW.address->'interpolation';
+
+  place_centroid := ST_PointOnSurface(NEW.linegeo);
+  NEW.parent_place_id = get_interpolation_parent(NEW.osm_id, NEW.address->'street',
+                                                 NEW.address->'place',
+                                                 NEW.partition, place_centroid, NEW.linegeo);
+
+  IF NEW.address is not NULL AND NEW.address ? 'postcode' AND NEW.address->'postcode' not similar to '%(,|;)%' THEN
+    interpol_postcode := NEW.address->'postcode';
+    housenum := getorcreate_postcode_id(NEW.address->'postcode');
+  ELSE
+    interpol_postcode := NULL;
+  END IF;
+
+  -- if the line was newly inserted, split the line as necessary
+  IF OLD.indexed_status = 1 THEN
+      select nodes from planet_osm_ways where id = NEW.osm_id INTO waynodes;
+
+      IF array_upper(waynodes, 1) IS NULL THEN
+        RETURN NEW;
+      END IF;
+
+      linegeo := NEW.linegeo;
+      startnumber := NULL;
+
+      FOR nodeidpos in 1..array_upper(waynodes, 1) LOOP
+
+        select osm_id, address, geometry
+          from place where osm_type = 'N' and osm_id = waynodes[nodeidpos]::BIGINT
+                           and address is not NULL and address ? 'housenumber' limit 1 INTO nextnode;
+        --RAISE NOTICE 'Nextnode.place_id: %s', nextnode.place_id;
+        IF nextnode.osm_id IS NOT NULL THEN
+          --RAISE NOTICE 'place_id is not null';
+          IF nodeidpos > 1 and nodeidpos < array_upper(waynodes, 1) THEN
+            -- Make sure that the point is actually on the line. That might
+            -- be a bit paranoid but ensures that the algorithm still works
+            -- should osm2pgsql attempt to repair geometries.
+            splitline := split_line_on_node(linegeo, nextnode.geometry);
+            sectiongeo := ST_GeometryN(splitline, 1);
+            linegeo := ST_GeometryN(splitline, 2);
+          ELSE
+            sectiongeo = linegeo;
+          END IF;
+          endnumber := substring(nextnode.address->'housenumber','[0-9]+')::integer;
+
+          IF startnumber IS NOT NULL AND endnumber IS NOT NULL
+             AND startnumber != endnumber
+             AND ST_GeometryType(sectiongeo) = 'ST_LineString' THEN
+
+            IF (startnumber > endnumber) THEN
+              housenum := endnumber;
+              endnumber := startnumber;
+              startnumber := housenum;
+              sectiongeo := ST_Reverse(sectiongeo);
+            END IF;
+
+            -- determine postcode
+            postcode := coalesce(interpol_postcode,
+                                 prevnode.address->'postcode',
+                                 nextnode.address->'postcode',
+                                 postcode);
+
+            IF postcode is NULL THEN
+                SELECT placex.postcode FROM placex WHERE place_id = NEW.parent_place_id INTO postcode;
+            END IF;
+            IF postcode is NULL THEN
+                postcode := get_nearest_postcode(NEW.country_code, nextnode.geometry);
+            END IF;
+
+            IF NEW.startnumber IS NULL THEN
+                NEW.startnumber := startnumber;
+                NEW.endnumber := endnumber;
+                NEW.linegeo := sectiongeo;
+                NEW.postcode := upper(trim(postcode));
+             ELSE
+              insert into location_property_osmline
+                     (linegeo, partition, osm_id, parent_place_id,
+                      startnumber, endnumber, interpolationtype,
+                      address, postcode, country_code,
+                      geometry_sector, indexed_status)
+              values (sectiongeo, NEW.partition, NEW.osm_id, NEW.parent_place_id,
+                      startnumber, endnumber, NEW.interpolationtype,
+                      NEW.address, postcode,
+                      NEW.country_code, NEW.geometry_sector, 0);
+             END IF;
+          END IF;
+
+          -- early break if we are out of line string,
+          -- might happen when a line string loops back on itself
+          IF ST_GeometryType(linegeo) != 'ST_LineString' THEN
+              RETURN NEW;
+          END IF;
+
+          startnumber := substring(nextnode.address->'housenumber','[0-9]+')::integer;
+          prevnode := nextnode;
+        END IF;
+      END LOOP;
+  END IF;
+
+  -- marking descendants for reparenting is not needed, because there are
+  -- actually no descendants for interpolation lines
+  RETURN NEW;
+END;
+$$
+LANGUAGE plpgsql;
diff --git a/sql/functions/normalization.sql b/sql/functions/normalization.sql
new file mode 100644 (file)
index 0000000..66d0214
--- /dev/null
@@ -0,0 +1,407 @@
+-- Functions for term normalisation and access to the 'word' table.
+
+CREATE OR REPLACE FUNCTION transliteration(text) RETURNS text
+  AS '{modulepath}/nominatim.so', 'transliteration'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION gettokenstring(text) RETURNS text
+  AS '{modulepath}/nominatim.so', 'gettokenstring'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION make_standard_name(name TEXT) RETURNS TEXT
+  AS $$
+DECLARE
+  o TEXT;
+BEGIN
+  o := public.gettokenstring(public.transliteration(name));
+  RETURN trim(substr(o,1,length(o)));
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+-- returns NULL if the word is too common
+CREATE OR REPLACE FUNCTION getorcreate_word_id(lookup_word TEXT) 
+  RETURNS INTEGER
+  AS $$
+DECLARE
+  lookup_token TEXT;
+  return_word_id INTEGER;
+  count INTEGER;
+BEGIN
+  lookup_token := trim(lookup_word);
+  SELECT min(word_id), max(search_name_count) FROM word
+    WHERE word_token = lookup_token and class is null and type is null
+    INTO return_word_id, count;
+  IF return_word_id IS NULL THEN
+    return_word_id := nextval('seq_word');
+    INSERT INTO word VALUES (return_word_id, lookup_token, null, null, null, null, 0);
+  ELSE
+    IF count > get_maxwordfreq() THEN
+      return_word_id := NULL;
+    END IF;
+  END IF;
+  RETURN return_word_id;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION getorcreate_housenumber_id(lookup_word TEXT)
+  RETURNS INTEGER
+  AS $$
+DECLARE
+  lookup_token TEXT;
+  return_word_id INTEGER;
+BEGIN
+  lookup_token := ' ' || trim(lookup_word);
+  SELECT min(word_id) FROM word
+    WHERE word_token = lookup_token and class='place' and type='house'
+    INTO return_word_id;
+  IF return_word_id IS NULL THEN
+    return_word_id := nextval('seq_word');
+    INSERT INTO word VALUES (return_word_id, lookup_token, null,
+                             'place', 'house', null, 0);
+  END IF;
+  RETURN return_word_id;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION getorcreate_postcode_id(postcode TEXT)
+  RETURNS INTEGER
+  AS $$
+DECLARE
+  lookup_token TEXT;
+  lookup_word TEXT;
+  return_word_id INTEGER;
+BEGIN
+  lookup_word := upper(trim(postcode));
+  lookup_token := ' ' || make_standard_name(lookup_word);
+  SELECT min(word_id) FROM word
+    WHERE word_token = lookup_token and class='place' and type='postcode'
+    INTO return_word_id;
+  IF return_word_id IS NULL THEN
+    return_word_id := nextval('seq_word');
+    INSERT INTO word VALUES (return_word_id, lookup_token, lookup_word,
+                             'place', 'postcode', null, 0);
+  END IF;
+  RETURN return_word_id;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION getorcreate_country(lookup_word TEXT,
+                                               lookup_country_code varchar(2))
+  RETURNS INTEGER
+  AS $$
+DECLARE
+  lookup_token TEXT;
+  return_word_id INTEGER;
+BEGIN
+  lookup_token := ' '||trim(lookup_word);
+  SELECT min(word_id) FROM word
+    WHERE word_token = lookup_token and country_code=lookup_country_code
+    INTO return_word_id;
+  IF return_word_id IS NULL THEN
+    return_word_id := nextval('seq_word');
+    INSERT INTO word VALUES (return_word_id, lookup_token, null,
+                             null, null, lookup_country_code, 0);
+  END IF;
+  RETURN return_word_id;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION getorcreate_amenity(lookup_word TEXT, normalized_word TEXT,
+                                               lookup_class text, lookup_type text)
+  RETURNS INTEGER
+  AS $$
+DECLARE
+  lookup_token TEXT;
+  return_word_id INTEGER;
+BEGIN
+  lookup_token := ' '||trim(lookup_word);
+  SELECT min(word_id) FROM word
+  WHERE word_token = lookup_token and word = normalized_word
+        and class = lookup_class and type = lookup_type
+  INTO return_word_id;
+  IF return_word_id IS NULL THEN
+    return_word_id := nextval('seq_word');
+    INSERT INTO word VALUES (return_word_id, lookup_token, normalized_word,
+                             lookup_class, lookup_type, null, 0);
+  END IF;
+  RETURN return_word_id;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION getorcreate_amenityoperator(lookup_word TEXT,
+                                                       normalized_word TEXT,
+                                                       lookup_class text,
+                                                       lookup_type text,
+                                                       op text)
+  RETURNS INTEGER
+  AS $$
+DECLARE
+  lookup_token TEXT;
+  return_word_id INTEGER;
+BEGIN
+  lookup_token := ' '||trim(lookup_word);
+  SELECT min(word_id) FROM word
+  WHERE word_token = lookup_token and word = normalized_word
+        and class = lookup_class and type = lookup_type and operator = op
+  INTO return_word_id;
+  IF return_word_id IS NULL THEN
+    return_word_id := nextval('seq_word');
+    INSERT INTO word VALUES (return_word_id, lookup_token, normalized_word,
+                             lookup_class, lookup_type, null, 0, op);
+  END IF;
+  RETURN return_word_id;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION getorcreate_name_id(lookup_word TEXT, src_word TEXT)
+  RETURNS INTEGER
+  AS $$
+DECLARE
+  lookup_token TEXT;
+  nospace_lookup_token TEXT;
+  return_word_id INTEGER;
+BEGIN
+  lookup_token := ' '||trim(lookup_word);
+  SELECT min(word_id) FROM word
+  WHERE word_token = lookup_token and class is null and type is null
+  INTO return_word_id;
+  IF return_word_id IS NULL THEN
+    return_word_id := nextval('seq_word');
+    INSERT INTO word VALUES (return_word_id, lookup_token, src_word,
+                             null, null, null, 0);
+  END IF;
+  RETURN return_word_id;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION getorcreate_name_id(lookup_word TEXT)
+  RETURNS INTEGER
+  AS $$
+DECLARE
+BEGIN
+  RETURN getorcreate_name_id(lookup_word, '');
+END;
+$$
+LANGUAGE plpgsql;
+
+-- Normalize a string and lookup its word ids (partial words).
+CREATE OR REPLACE FUNCTION addr_ids_from_name(lookup_word TEXT)
+  RETURNS INTEGER[]
+  AS $$
+DECLARE
+  lookup_token TEXT;
+  return_word_id INTEGER[];
+BEGIN
+  lookup_token := make_standard_name(lookup_word);
+  SELECT array_agg(word_id) FROM word
+    WHERE word_token = lookup_token and class is null and type is null
+    INTO return_word_id;
+  RETURN return_word_id;
+END;
+$$
+LANGUAGE plpgsql STABLE;
+
+
+-- Normalize a string and look up its name ids (full words).
+CREATE OR REPLACE FUNCTION word_ids_from_name(lookup_word TEXT)
+  RETURNS INTEGER[]
+  AS $$
+DECLARE
+  lookup_token TEXT;
+  return_word_ids INTEGER[];
+BEGIN
+  lookup_token := ' '|| make_standard_name(lookup_word);
+  SELECT array_agg(word_id) FROM word
+    WHERE word_token = lookup_token and class is null and type is null
+    INTO return_word_ids;
+  RETURN return_word_ids;
+END;
+$$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION create_country(src HSTORE, country_code varchar(2))
+  RETURNS VOID
+  AS $$
+DECLARE
+  s TEXT;
+  w INTEGER;
+  words TEXT[];
+  item RECORD;
+  j INTEGER;
+BEGIN
+  FOR item IN SELECT (each(src)).* LOOP
+
+    s := make_standard_name(item.value);
+    w := getorcreate_country(s, country_code);
+
+    words := regexp_split_to_array(item.value, E'[,;()]');
+    IF array_upper(words, 1) != 1 THEN
+      FOR j IN 1..array_upper(words, 1) LOOP
+        s := make_standard_name(words[j]);
+        IF s != '' THEN
+          w := getorcreate_country(s, country_code);
+        END IF;
+      END LOOP;
+    END IF;
+  END LOOP;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION make_keywords(src HSTORE)
+  RETURNS INTEGER[]
+  AS $$
+DECLARE
+  result INTEGER[];
+  s TEXT;
+  w INTEGER;
+  words TEXT[];
+  item RECORD;
+  j INTEGER;
+BEGIN
+  result := '{}'::INTEGER[];
+
+  FOR item IN SELECT (each(src)).* LOOP
+
+    s := make_standard_name(item.value);
+    w := getorcreate_name_id(s, item.value);
+
+    IF not(ARRAY[w] <@ result) THEN
+      result := result || w;
+    END IF;
+
+    w := getorcreate_word_id(s);
+
+    IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
+      result := result || w;
+    END IF;
+
+    words := string_to_array(s, ' ');
+    IF array_upper(words, 1) IS NOT NULL THEN
+      FOR j IN 1..array_upper(words, 1) LOOP
+        IF (words[j] != '') THEN
+          w = getorcreate_word_id(words[j]);
+          IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
+            result := result || w;
+          END IF;
+        END IF;
+      END LOOP;
+    END IF;
+
+    words := regexp_split_to_array(item.value, E'[,;()]');
+    IF array_upper(words, 1) != 1 THEN
+      FOR j IN 1..array_upper(words, 1) LOOP
+        s := make_standard_name(words[j]);
+        IF s != '' THEN
+          w := getorcreate_word_id(s);
+          IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
+            result := result || w;
+          END IF;
+        END IF;
+      END LOOP;
+    END IF;
+
+    s := regexp_replace(item.value, '市$', '');
+    IF s != item.value THEN
+      s := make_standard_name(s);
+      IF s != '' THEN
+        w := getorcreate_name_id(s, item.value);
+        IF NOT (ARRAY[w] <@ result) THEN
+          result := result || w;
+        END IF;
+      END IF;
+    END IF;
+
+  END LOOP;
+
+  RETURN result;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION make_keywords(src TEXT)
+  RETURNS INTEGER[]
+  AS $$
+DECLARE
+  result INTEGER[];
+  s TEXT;
+  w INTEGER;
+  words TEXT[];
+  i INTEGER;
+  j INTEGER;
+BEGIN
+  result := '{}'::INTEGER[];
+
+  s := make_standard_name(src);
+  w := getorcreate_name_id(s, src);
+
+  IF NOT (ARRAY[w] <@ result) THEN
+    result := result || w;
+  END IF;
+
+  w := getorcreate_word_id(s);
+
+  IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
+    result := result || w;
+  END IF;
+
+  words := string_to_array(s, ' ');
+  IF array_upper(words, 1) IS NOT NULL THEN
+    FOR j IN 1..array_upper(words, 1) LOOP
+      IF (words[j] != '') THEN
+        w = getorcreate_word_id(words[j]);
+        IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
+          result := result || w;
+        END IF;
+      END IF;
+    END LOOP;
+  END IF;
+
+  words := regexp_split_to_array(src, E'[,;()]');
+  IF array_upper(words, 1) != 1 THEN
+    FOR j IN 1..array_upper(words, 1) LOOP
+      s := make_standard_name(words[j]);
+      IF s != '' THEN
+        w := getorcreate_word_id(s);
+        IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
+          result := result || w;
+        END IF;
+      END IF;
+    END LOOP;
+  END IF;
+
+  s := regexp_replace(src, '市$', '');
+  IF s != src THEN
+    s := make_standard_name(s);
+    IF s != '' THEN
+      w := getorcreate_name_id(s, src);
+      IF NOT (ARRAY[w] <@ result) THEN
+        result := result || w;
+      END IF;
+    END IF;
+  END IF;
+
+  RETURN result;
+END;
+$$
+LANGUAGE plpgsql;
diff --git a/sql/functions/place_triggers.sql b/sql/functions/place_triggers.sql
new file mode 100644 (file)
index 0000000..71f918c
--- /dev/null
@@ -0,0 +1,284 @@
+CREATE OR REPLACE FUNCTION place_insert()
+  RETURNS TRIGGER
+  AS $$
+DECLARE
+  i INTEGER;
+  existing RECORD;
+  existingplacex RECORD;
+  existingline RECORD;
+  existinggeometry GEOMETRY;
+  existingplace_id BIGINT;
+  result BOOLEAN;
+  partition INTEGER;
+BEGIN
+
+  --DEBUG: RAISE WARNING '-----------------------------------------------------------------------------------';
+  --DEBUG: RAISE WARNING 'place_insert: % % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type,st_area(NEW.geometry);
+  -- filter wrong tupels
+  IF ST_IsEmpty(NEW.geometry) OR NOT ST_IsValid(NEW.geometry) OR ST_X(ST_Centroid(NEW.geometry))::text in ('NaN','Infinity','-Infinity') OR ST_Y(ST_Centroid(NEW.geometry))::text in ('NaN','Infinity','-Infinity') THEN  
+    INSERT INTO import_polygon_error (osm_type, osm_id, class, type, name, country_code, updated, errormessage, prevgeometry, newgeometry)
+      VALUES (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name, NEW.address->'country', now(), ST_IsValidReason(NEW.geometry), null, NEW.geometry);
+--    RAISE WARNING 'Invalid Geometry: % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
+    RETURN null;
+  END IF;
+
+  -- decide, whether it is an osm interpolation line => insert intoosmline, or else just placex
+  IF NEW.class='place' and NEW.type='houses' and NEW.osm_type='W' and ST_GeometryType(NEW.geometry) = 'ST_LineString' THEN
+    -- Have we already done this place?
+    select * from place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type INTO existing;
+
+    -- Get the existing place_id
+    select * from location_property_osmline where osm_id = NEW.osm_id INTO existingline;
+
+    -- Handle a place changing type by removing the old data (this trigger is executed BEFORE INSERT of the NEW tupel)
+    IF existing.osm_type IS NULL THEN
+      DELETE FROM place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class;
+    END IF;
+
+    DELETE from import_polygon_error where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
+    DELETE from import_polygon_delete where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
+
+    -- update method for interpolation lines: delete all old interpolation lines with same osm_id (update on place) and insert the new one(s) (they can be split up, if they have > 2 nodes)
+    IF existingline.osm_id IS NOT NULL THEN
+      delete from location_property_osmline where osm_id = NEW.osm_id;
+    END IF;
+
+    -- for interpolations invalidate all nodes on the line
+    update placex p set indexed_status = 2
+      from planet_osm_ways w
+      where w.id = NEW.osm_id and p.osm_type = 'N' and p.osm_id = any(w.nodes);
+
+
+    INSERT INTO location_property_osmline (osm_id, address, linegeo)
+      VALUES (NEW.osm_id, NEW.address, NEW.geometry);
+
+
+    IF existing.osm_type IS NULL THEN
+      return NEW;
+    END IF;
+
+    IF coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
+       OR (coalesce(existing.extratags, ''::hstore) != coalesce(NEW.extratags, ''::hstore))
+       OR existing.geometry::text != NEW.geometry::text
+       THEN
+
+      update place set 
+        name = NEW.name,
+        address = NEW.address,
+        extratags = NEW.extratags,
+        admin_level = NEW.admin_level,
+        geometry = NEW.geometry
+        where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
+    END IF;
+
+    RETURN NULL;
+
+  ELSE -- insert to placex
+
+    -- Patch in additional country names
+    IF NEW.admin_level = 2 AND NEW.type = 'administrative'
+          AND NEW.address is not NULL AND NEW.address ? 'country' THEN
+        SELECT name FROM country_name WHERE country_code = lower(NEW.address->'country') INTO existing;
+        IF existing.name IS NOT NULL THEN
+            NEW.name = existing.name || NEW.name;
+        END IF;
+    END IF;
+      
+    -- Have we already done this place?
+    select * from place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type INTO existing;
+
+    -- Get the existing place_id
+    select * from placex where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type INTO existingplacex;
+
+    -- Handle a place changing type by removing the old data
+    -- My generated 'place' types are causing havok because they overlap with real keys
+    -- TODO: move them to their own special purpose key/class to avoid collisions
+    IF existing.osm_type IS NULL THEN
+      DELETE FROM place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class;
+    END IF;
+
+    --DEBUG: RAISE WARNING 'Existing: %',existing.osm_id;
+    --DEBUG: RAISE WARNING 'Existing PlaceX: %',existingplacex.place_id;
+
+    -- Log and discard 
+    IF existing.geometry is not null AND st_isvalid(existing.geometry) 
+      AND st_area(existing.geometry) > 0.02
+      AND ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon')
+      AND st_area(NEW.geometry) < st_area(existing.geometry)*0.5
+      THEN
+      INSERT INTO import_polygon_error (osm_type, osm_id, class, type, name, country_code, updated, errormessage, prevgeometry, newgeometry)
+        VALUES (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name, NEW.address->'country', now(), 
+        'Area reduced from '||st_area(existing.geometry)||' to '||st_area(NEW.geometry), existing.geometry, NEW.geometry);
+      RETURN null;
+    END IF;
+
+    DELETE from import_polygon_error where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
+    DELETE from import_polygon_delete where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
+
+    -- To paraphrase, if there isn't an existing item, OR if the admin level has changed
+    IF existingplacex.osm_type IS NULL OR
+        (existingplacex.class = 'boundary' AND
+          ((coalesce(existingplacex.admin_level, 15) != coalesce(NEW.admin_level, 15) AND existingplacex.type = 'administrative') OR
+          (existingplacex.type != NEW.type)))
+    THEN
+
+      IF existingplacex.osm_type IS NOT NULL THEN
+        -- sanity check: ignore admin_level changes on places with too many active children
+        -- or we end up reindexing entire countries because somebody accidentally deleted admin_level
+        --LIMIT INDEXING: SELECT count(*) FROM (SELECT 'a' FROM placex , place_addressline where address_place_id = existingplacex.place_id and placex.place_id = place_addressline.place_id and indexed_status = 0 and place_addressline.isaddress LIMIT 100001) sub INTO i;
+        --LIMIT INDEXING: IF i > 100000 THEN
+        --LIMIT INDEXING:  RETURN null;
+        --LIMIT INDEXING: END IF;
+      END IF;
+
+      IF existing.osm_type IS NOT NULL THEN
+        -- pathological case caused by the triggerless copy into place during initial import
+        -- force delete even for large areas, it will be reinserted later
+        UPDATE place set geometry = ST_SetSRID(ST_Point(0,0), 4326) where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
+        DELETE from place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
+      END IF;
+
+      -- No - process it as a new insertion (hopefully of low rank or it will be slow)
+      insert into placex (osm_type, osm_id, class, type, name,
+                          admin_level, address, extratags, geometry)
+        values (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name,
+                NEW.admin_level, NEW.address, NEW.extratags, NEW.geometry);
+
+      --DEBUG: RAISE WARNING 'insert done % % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type,NEW.name;
+
+      RETURN NEW;
+    END IF;
+
+    -- Special case for polygon shape changes because they tend to be large and we can be a bit clever about how we handle them
+    IF existing.geometry::text != NEW.geometry::text 
+       AND ST_GeometryType(existing.geometry) in ('ST_Polygon','ST_MultiPolygon')
+       AND ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon') 
+       THEN 
+
+      -- Get the version of the geometry actually used (in placex table)
+      select geometry from placex where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type into existinggeometry;
+
+      -- Performance limit
+      IF st_area(NEW.geometry) < 0.000000001 AND st_area(existinggeometry) < 1 THEN
+
+        -- re-index points that have moved in / out of the polygon, could be done as a single query but postgres gets the index usage wrong
+        update placex set indexed_status = 2 where indexed_status = 0 and 
+            (st_covers(NEW.geometry, placex.geometry) OR ST_Intersects(NEW.geometry, placex.geometry))
+            AND NOT (st_covers(existinggeometry, placex.geometry) OR ST_Intersects(existinggeometry, placex.geometry))
+            AND rank_search > existingplacex.rank_search AND (rank_search < 28 or name is not null);
+
+        update placex set indexed_status = 2 where indexed_status = 0 and 
+            (st_covers(existinggeometry, placex.geometry) OR ST_Intersects(existinggeometry, placex.geometry))
+            AND NOT (st_covers(NEW.geometry, placex.geometry) OR ST_Intersects(NEW.geometry, placex.geometry))
+            AND rank_search > existingplacex.rank_search AND (rank_search < 28 or name is not null);
+
+      END IF;
+
+    END IF;
+
+
+    IF coalesce(existing.name::text, '') != coalesce(NEW.name::text, '')
+       OR coalesce(existing.extratags::text, '') != coalesce(NEW.extratags::text, '')
+       OR coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
+       OR coalesce(existing.admin_level, 15) != coalesce(NEW.admin_level, 15)
+       OR existing.geometry::text != NEW.geometry::text
+       THEN
+
+      update place set 
+        name = NEW.name,
+        address = NEW.address,
+        extratags = NEW.extratags,
+        admin_level = NEW.admin_level,
+        geometry = NEW.geometry
+        where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
+
+
+      IF NEW.class in ('place','boundary') AND NEW.type in ('postcode','postal_code') THEN
+          IF NEW.address is NULL OR NOT NEW.address ? 'postcode' THEN
+              -- postcode was deleted, no longer retain in placex
+              DELETE FROM placex where place_id = existingplacex.place_id;
+              RETURN NULL;
+          END IF;
+
+          NEW.name := hstore('ref', NEW.address->'postcode');
+      END IF;
+
+      IF NEW.class in ('boundary')
+         AND ST_GeometryType(NEW.geometry) not in ('ST_Polygon','ST_MultiPolygon') THEN
+          DELETE FROM placex where place_id = existingplacex.place_id;
+          RETURN NULL;
+      END IF;
+
+      update placex set 
+        name = NEW.name,
+        address = NEW.address,
+        parent_place_id = null,
+        extratags = NEW.extratags,
+        admin_level = NEW.admin_level,
+        indexed_status = 2,
+        geometry = NEW.geometry
+        where place_id = existingplacex.place_id;
+      -- if a node(=>house), which is part of a interpolation line, changes (e.g. the street attribute) => mark this line for reparenting 
+      -- (already here, because interpolation lines are reindexed before nodes, so in the second call it would be too late)
+      IF NEW.osm_type='N'
+         and (coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
+             or existing.geometry::text != NEW.geometry::text)
+      THEN
+          result:= osmline_reinsert(NEW.osm_id, NEW.geometry);
+      END IF;
+
+      -- linked places should get potential new naming and addresses
+      IF existingplacex.linked_place_id is not NULL THEN
+        update placex x set
+          name = p.name,
+          extratags = p.extratags,
+          indexed_status = 2
+        from place p
+        where x.place_id = existingplacex.linked_place_id
+              and x.indexed_status = 0
+              and x.osm_type = p.osm_type
+              and x.osm_id = p.osm_id
+              and x.class = p.class;
+      END IF;
+
+    END IF;
+
+    -- Abort the add (we modified the existing place instead)
+    RETURN NULL;
+  END IF;
+
+END;
+$$ LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION place_delete()
+  RETURNS TRIGGER
+  AS $$
+DECLARE
+  has_rank BOOLEAN;
+BEGIN
+
+  --DEBUG: RAISE WARNING 'delete: % % % %',OLD.osm_type,OLD.osm_id,OLD.class,OLD.type;
+
+  -- deleting large polygons can have a massive effect on the system - require manual intervention to let them through
+  IF st_area(OLD.geometry) > 2 and st_isvalid(OLD.geometry) THEN
+    SELECT bool_or(not (rank_address = 0 or rank_address > 26)) as ranked FROM placex WHERE osm_type = OLD.osm_type and osm_id = OLD.osm_id and class = OLD.class and type = OLD.type INTO has_rank;
+    IF has_rank THEN
+      insert into import_polygon_delete (osm_type, osm_id, class, type) values (OLD.osm_type,OLD.osm_id,OLD.class,OLD.type);
+      RETURN NULL;
+    END IF;
+  END IF;
+
+  -- mark for delete
+  UPDATE placex set indexed_status = 100 where osm_type = OLD.osm_type and osm_id = OLD.osm_id and class = OLD.class and type = OLD.type;
+
+  -- interpolations are special
+  IF OLD.osm_type='W' and OLD.class = 'place' and OLD.type = 'houses' THEN
+    UPDATE location_property_osmline set indexed_status = 100 where osm_id = OLD.osm_id; -- osm_id = wayid (=old.osm_id)
+  END IF;
+
+  RETURN OLD;
+END;
+$$
+LANGUAGE plpgsql;
+
diff --git a/sql/functions/placex_triggers.sql b/sql/functions/placex_triggers.sql
new file mode 100644 (file)
index 0000000..b84a2d6
--- /dev/null
@@ -0,0 +1,965 @@
+-- Trigger functions for the placex table.
+
+-- Find the parent road of a POI.
+--
+-- \returns Place ID of parent object or NULL if none
+--
+-- Copy data from linked items (POIs on ways, addr:street links, relations).
+--
+CREATE OR REPLACE FUNCTION find_parent_for_poi(poi_osm_type CHAR(1),
+                                               poi_osm_id BIGINT,
+                                               poi_partition SMALLINT,
+                                               bbox GEOMETRY,
+                                               addr_street TEXT,
+                                               addr_place TEXT,
+                                               fallback BOOL = true)
+  RETURNS BIGINT
+  AS $$
+DECLARE
+  parent_place_id BIGINT DEFAULT NULL;
+  location RECORD;
+  parent RECORD;
+BEGIN
+    --DEBUG: RAISE WARNING 'finding street for % %', poi_osm_type, poi_osm_id;
+
+    -- Is this object part of an associatedStreet relation?
+    FOR location IN
+      SELECT members FROM planet_osm_rels
+      WHERE parts @> ARRAY[poi_osm_id]
+        and members @> ARRAY[lower(poi_osm_type) || poi_osm_id]
+        and tags @> ARRAY['associatedStreet']
+    LOOP
+      FOR i IN 1..array_upper(location.members, 1) BY 2 LOOP
+        IF location.members[i+1] = 'street' THEN
+          --DEBUG: RAISE WARNING 'node in relation %',relation;
+          FOR parent IN
+            SELECT place_id from placex
+             WHERE osm_type = 'W' and osm_id = substring(location.members[i],2)::bigint
+               and name is not null
+               and rank_search between 26 and 27
+          LOOP
+            RETURN parent.place_id;
+          END LOOP;
+        END IF;
+      END LOOP;
+    END LOOP;
+
+    parent_place_id := find_parent_for_address(addr_street, addr_place,
+                                               poi_partition, bbox);
+    IF parent_place_id is not null THEN
+      RETURN parent_place_id;
+    END IF;
+
+    IF poi_osm_type = 'N' THEN
+      -- Is this node part of an interpolation?
+      FOR parent IN
+        SELECT q.parent_place_id
+          FROM location_property_osmline q, planet_osm_ways x
+         WHERE q.linegeo && bbox and x.id = q.osm_id
+               and poi_osm_id = any(x.nodes)
+         LIMIT 1
+      LOOP
+        --DEBUG: RAISE WARNING 'Get parent from interpolation: %', parent.parent_place_id;
+        RETURN parent.parent_place_id;
+      END LOOP;
+
+      -- Is this node part of any other way?
+      FOR location IN
+        SELECT p.place_id, p.osm_id, p.rank_search, p.address,
+               coalesce(p.centroid, ST_Centroid(p.geometry)) as centroid
+          FROM placex p, planet_osm_ways w
+         WHERE p.osm_type = 'W' and p.rank_search >= 26
+               and p.geometry && bbox
+               and w.id = p.osm_id and poi_osm_id = any(w.nodes)
+      LOOP
+        --DEBUG: RAISE WARNING 'Node is part of way % ', location.osm_id;
+
+        -- Way IS a road then we are on it - that must be our road
+        IF location.rank_search < 28 THEN
+          --DEBUG: RAISE WARNING 'node in way that is a street %',location;
+          return location.place_id;
+        END IF;
+
+        SELECT find_parent_for_poi('W', location.osm_id, poi_partition,
+                                   location.centroid,
+                                   location.address->'street',
+                                   location.address->'place',
+                                   false)
+          INTO parent_place_id;
+        IF parent_place_id is not null THEN
+          RETURN parent_place_id;
+        END IF;
+      END LOOP;
+    END IF;
+
+    IF fallback THEN
+      IF ST_Area(bbox) < 0.01 THEN
+        -- for smaller features get the nearest road
+        SELECT getNearestRoadPlaceId(poi_partition, bbox) INTO parent_place_id;
+        --DEBUG: RAISE WARNING 'Checked for nearest way (%)', parent_place_id;
+      ELSE
+        -- for larger features simply find the area with the largest rank that
+        -- contains the bbox
+        FOR location IN
+          SELECT place_id FROM placex
+            WHERE bbox @ geometry AND _ST_Covers(geometry, ST_Centroid(bbox))
+                  AND rank_search between 5 and 25
+            ORDER BY rank_search desc
+        LOOP
+            RETURN location.place_id;
+        END LOOP;
+      END IF;
+    END IF;
+
+    RETURN parent_place_id;
+END;
+$$
+LANGUAGE plpgsql STABLE;
+
+-- Try to find a linked place for the given object.
+CREATE OR REPLACE FUNCTION find_linked_place(bnd placex)
+  RETURNS placex
+  AS $$
+DECLARE
+  relation_members TEXT[];
+  rel_member RECORD;
+  linked_placex placex%ROWTYPE;
+  bnd_name TEXT;
+BEGIN
+  IF bnd.rank_search >= 26 or bnd.rank_address = 0
+     or ST_GeometryType(bnd.geometry) NOT IN ('ST_Polygon','ST_MultiPolygon')
+  THEN
+    RETURN NULL;
+  END IF;
+
+  IF bnd.osm_type = 'R' THEN
+    -- see if we have any special relation members
+    SELECT members FROM planet_osm_rels WHERE id = bnd.osm_id INTO relation_members;
+    --DEBUG: RAISE WARNING 'Got relation members';
+
+    -- Search for relation members with role 'lable'.
+    IF relation_members IS NOT NULL THEN
+      FOR rel_member IN
+        SELECT get_rel_node_members(relation_members, ARRAY['label']) as member
+      LOOP
+        --DEBUG: RAISE WARNING 'Found label member %', rel_member.member;
+
+        FOR linked_placex IN
+          SELECT * from placex
+          WHERE osm_type = 'N' and osm_id = rel_member.member
+            and class = 'place'
+        LOOP
+          --DEBUG: RAISE WARNING 'Linked label member';
+          RETURN linked_placex;
+        END LOOP;
+
+      END LOOP;
+    END IF;
+  END IF;
+
+  IF bnd.name ? 'name' THEN
+    bnd_name := make_standard_name(bnd.name->'name');
+    IF bnd_name = '' THEN
+      bnd_name := NULL;
+    END IF;
+  END IF;
+
+  -- If extratags has a place tag, look for linked nodes by their place type.
+  -- Area and node still have to have the same name.
+  IF bnd.extratags ? 'place' and bnd_name is not null THEN
+    FOR linked_placex IN
+      SELECT * FROM placex
+      WHERE make_standard_name(name->'name') = bnd_name
+        AND placex.class = 'place' AND placex.type = bnd.extratags->'place'
+        AND placex.osm_type = 'N'
+        AND placex.rank_search < 26 -- needed to select the right index
+        AND _st_covers(bnd.geometry, placex.geometry)
+    LOOP
+      --DEBUG: RAISE WARNING 'Found type-matching place node %', linked_placex.osm_id;
+      RETURN linked_placex;
+    END LOOP;
+  END IF;
+
+  IF bnd.extratags ? 'wikidata' THEN
+    FOR linked_placex IN
+      SELECT * FROM placex
+      WHERE placex.class = 'place' AND placex.osm_type = 'N'
+        AND placex.extratags ? 'wikidata' -- needed to select right index
+        AND placex.extratags->'wikidata' = bnd.extratags->'wikidata'
+        AND placex.rank_search < 26
+        AND _st_covers(bnd.geometry, placex.geometry)
+      ORDER BY make_standard_name(name->'name') = bnd_name desc
+    LOOP
+      --DEBUG: RAISE WARNING 'Found wikidata-matching place node %', linked_placex.osm_id;
+      RETURN linked_placex;
+    END LOOP;
+  END IF;
+
+  -- Name searches can be done for ways as well as relations
+  IF bnd_name is not null THEN
+    --DEBUG: RAISE WARNING 'Looking for nodes with matching names';
+    FOR linked_placex IN
+      SELECT placex.* from placex
+      WHERE make_standard_name(name->'name') = bnd_name
+        AND ((bnd.rank_address > 0 and placex.rank_address = bnd.rank_address)
+             OR (bnd.rank_address = 0 and placex.rank_search = bnd.rank_search))
+        AND placex.osm_type = 'N'
+        AND placex.rank_search < 26 -- needed to select the right index
+        AND _st_covers(bnd.geometry, placex.geometry)
+    LOOP
+      --DEBUG: RAISE WARNING 'Found matching place node %', linked_placex.osm_id;
+      RETURN linked_placex;
+    END LOOP;
+  END IF;
+
+  RETURN NULL;
+END;
+$$
+LANGUAGE plpgsql STABLE;
+
+
+-- Insert address of a place into the place_addressline table.
+--
+-- \param obj_place_id  Place_id of the place to compute the address for.
+-- \param partition     Partition number where the place is in.
+-- \param maxrank       Rank of the place. All address features must have
+--                      a search rank lower than the given rank.
+-- \param address       Address terms for the place.
+-- \param geoemtry      Geometry to which the address objects should be close.
+--
+-- \retval parent_place_id  Place_id of the address object that is the direct
+--                          ancestor.
+-- \retval postcode         Postcode computed from the address. This is the
+--                          addr:postcode of one of the address objects. If
+--                          more than one of has a postcode, the highest ranking
+--                          one is used. May be NULL.
+-- \retval nameaddress_vector  Search terms for the address. This is the sum
+--                             of name terms of all address objects.
+CREATE OR REPLACE FUNCTION insert_addresslines(obj_place_id BIGINT,
+                                               partition SMALLINT,
+                                               maxrank SMALLINT,
+                                               address HSTORE,
+                                               geometry GEOMETRY,
+                                               OUT parent_place_id BIGINT,
+                                               OUT postcode TEXT,
+                                               OUT nameaddress_vector INT[])
+  AS $$
+DECLARE
+  current_rank_address INTEGER := 0;
+  location_distance FLOAT := 0;
+  location_parent GEOMETRY := NULL;
+  parent_place_id_rank SMALLINT := 0;
+
+  location_isaddress BOOLEAN;
+
+  address_havelevel BOOLEAN[];
+  location_keywords INT[];
+
+  location RECORD;
+  addr_item RECORD;
+
+  isin_tokens INT[];
+  isin TEXT[];
+BEGIN
+  parent_place_id := 0;
+  nameaddress_vector := '{}'::int[];
+  isin_tokens := '{}'::int[];
+
+  ---- convert address store to array of tokenids
+  IF address IS NOT NULL THEN
+    FOR addr_item IN SELECT * FROM each(address)
+    LOOP
+      IF addr_item.key IN ('city', 'tiger:county', 'state', 'suburb', 'province',
+                           'district', 'region', 'county', 'municipality',
+                           'hamlet', 'village', 'subdistrict', 'town',
+                           'neighbourhood', 'quarter', 'parish')
+      THEN
+        isin_tokens := array_merge(isin_tokens,
+                                   word_ids_from_name(addr_item.value));
+        IF NOT %REVERSE-ONLY% THEN
+          nameaddress_vector := array_merge(nameaddress_vector,
+                                            addr_ids_from_name(addr_item.value));
+        END IF;
+      END IF;
+    END LOOP;
+
+    IF address ? 'is_in' THEN
+      -- is_in items need splitting
+      isin := regexp_split_to_array(address->'is_in', E'[;,]');
+      IF array_upper(isin, 1) IS NOT NULL THEN
+        FOR i IN 1..array_upper(isin, 1) LOOP
+          isin_tokens := array_merge(isin_tokens,
+                                     word_ids_from_name(isin[i]));
+
+          -- merge word into address vector
+          IF NOT %REVERSE-ONLY% THEN
+            nameaddress_vector := array_merge(nameaddress_vector,
+                                              addr_ids_from_name(isin[i]));
+          END IF;
+        END LOOP;
+      END IF;
+    END IF;
+  END IF;
+  IF NOT %REVERSE-ONLY% THEN
+    nameaddress_vector := array_merge(nameaddress_vector, isin_tokens);
+  END IF;
+
+  ---- now compute the address terms
+  FOR i IN 1..28 LOOP
+    address_havelevel[i] := false;
+  END LOOP;
+
+  FOR location IN
+    SELECT * FROM getNearFeatures(partition, geometry, maxrank, isin_tokens)
+  LOOP
+    IF location.rank_address != current_rank_address THEN
+      current_rank_address := location.rank_address;
+      IF location.isguess THEN
+        location_distance := location.distance * 1.5;
+      ELSE
+        IF location.rank_address <= 12 THEN
+          -- for county and above, if we have an area consider that exact
+          -- (It would be nice to relax the constraint for places close to
+          --  the boundary but we'd need the exact geometry for that. Too
+          --  expensive.)
+          location_distance = 0;
+        ELSE
+          -- Below county level remain slightly fuzzy.
+          location_distance := location.distance * 0.5;
+        END IF;
+      END IF;
+    ELSE
+      CONTINUE WHEN location.keywords <@ location_keywords;
+    END IF;
+
+    IF location.distance < location_distance OR NOT location.isguess THEN
+      location_keywords := location.keywords;
+
+      location_isaddress := NOT address_havelevel[location.rank_address];
+      --DEBUG: RAISE WARNING 'should be address: %, is guess: %, rank: %', location_isaddress, location.isguess, location.rank_address;
+      IF location_isaddress AND location.isguess AND location_parent IS NOT NULL THEN
+          location_isaddress := ST_Contains(location_parent, location.centroid);
+      END IF;
+
+      --DEBUG: RAISE WARNING '% isaddress: %', location.place_id, location_isaddress;
+      -- Add it to the list of search terms
+      IF NOT %REVERSE-ONLY% THEN
+          nameaddress_vector := array_merge(nameaddress_vector,
+                                            location.keywords::integer[]);
+      END IF;
+
+      INSERT INTO place_addressline (place_id, address_place_id, fromarea,
+                                     isaddress, distance, cached_rank_address)
+        VALUES (obj_place_id, location.place_id, true,
+                location_isaddress, location.distance, location.rank_address);
+
+      IF location_isaddress THEN
+        -- add postcode if we have one
+        -- (If multiple postcodes are available, we end up with the highest ranking one.)
+        IF location.postcode is not null THEN
+            postcode = location.postcode;
+        END IF;
+
+        address_havelevel[location.rank_address] := true;
+        -- add a hack against postcode ranks
+        IF NOT location.isguess
+           AND location.rank_address != 11 AND location.rank_address != 5
+        THEN
+          SELECT p.geometry FROM placex p
+            WHERE p.place_id = location.place_id INTO location_parent;
+        END IF;
+
+        IF location.rank_address > parent_place_id_rank THEN
+          parent_place_id = location.place_id;
+          parent_place_id_rank = location.rank_address;
+        END IF;
+      END IF;
+    END IF;
+
+  END LOOP;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION placex_insert()
+  RETURNS TRIGGER
+  AS $$
+DECLARE
+  postcode TEXT;
+  result BOOLEAN;
+  is_area BOOLEAN;
+  country_code VARCHAR(2);
+  diameter FLOAT;
+  classtable TEXT;
+BEGIN
+  --DEBUG: RAISE WARNING '% % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
+
+  NEW.place_id := nextval('seq_place');
+  NEW.indexed_status := 1; --STATUS_NEW
+
+  NEW.country_code := lower(get_country_code(NEW.geometry));
+
+  NEW.partition := get_partition(NEW.country_code);
+  NEW.geometry_sector := geometry_sector(NEW.partition, NEW.geometry);
+
+  IF NEW.osm_type = 'X' THEN
+    -- E'X'ternal records should already be in the right format so do nothing
+  ELSE
+    is_area := ST_GeometryType(NEW.geometry) IN ('ST_Polygon','ST_MultiPolygon');
+
+    IF NEW.class in ('place','boundary')
+       AND NEW.type in ('postcode','postal_code')
+    THEN
+      IF NEW.address IS NULL OR NOT NEW.address ? 'postcode' THEN
+          -- most likely just a part of a multipolygon postcode boundary, throw it away
+          RETURN NULL;
+      END IF;
+
+      NEW.name := hstore('ref', NEW.address->'postcode');
+
+    ELSEIF NEW.class = 'boundary' AND NOT is_area THEN
+        RETURN NULL;
+    ELSEIF NEW.class = 'boundary' AND NEW.type = 'administrative'
+           AND NEW.admin_level <= 4 AND NEW.osm_type = 'W'
+    THEN
+        RETURN NULL;
+    END IF;
+
+    SELECT * INTO NEW.rank_search, NEW.rank_address
+      FROM compute_place_rank(NEW.country_code,
+                              CASE WHEN is_area THEN 'A' ELSE NEW.osm_type END,
+                              NEW.class, NEW.type, NEW.admin_level,
+                              (NEW.extratags->'capital') = 'yes',
+                              NEW.address->'postcode');
+
+    -- a country code make no sense below rank 4 (country)
+    IF NEW.rank_search < 4 THEN
+      NEW.country_code := NULL;
+    END IF;
+
+  END IF;
+
+  --DEBUG: RAISE WARNING 'placex_insert:END: % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
+
+  RETURN NEW; -- %DIFFUPDATES% The following is not needed until doing diff updates, and slows the main index process down
+
+  IF NEW.osm_type = 'N' and NEW.rank_search > 28 THEN
+      -- might be part of an interpolation
+      result := osmline_reinsert(NEW.osm_id, NEW.geometry);
+  ELSEIF NEW.rank_address > 0 THEN
+    IF (ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon') AND ST_IsValid(NEW.geometry)) THEN
+      -- Performance: We just can't handle re-indexing for country level changes
+      IF st_area(NEW.geometry) < 1 THEN
+        -- mark items within the geometry for re-indexing
+  --    RAISE WARNING 'placex poly insert: % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
+
+        -- work around bug in postgis, this may have been fixed in 2.0.0 (see http://trac.osgeo.org/postgis/ticket/547)
+        update placex set indexed_status = 2 where (st_covers(NEW.geometry, placex.geometry) OR ST_Intersects(NEW.geometry, placex.geometry)) 
+         AND rank_search > NEW.rank_search and indexed_status = 0 and ST_geometrytype(placex.geometry) = 'ST_Point' and (rank_search < 28 or name is not null or (NEW.rank_search >= 16 and address ? 'place'));
+        update placex set indexed_status = 2 where (st_covers(NEW.geometry, placex.geometry) OR ST_Intersects(NEW.geometry, placex.geometry)) 
+         AND rank_search > NEW.rank_search and indexed_status = 0 and ST_geometrytype(placex.geometry) != 'ST_Point' and (rank_search < 28 or name is not null or (NEW.rank_search >= 16 and address ? 'place'));
+      END IF;
+    ELSE
+      -- mark nearby items for re-indexing, where 'nearby' depends on the features rank_search and is a complete guess :(
+      diameter := update_place_diameter(NEW.rank_search);
+      IF diameter > 0 THEN
+  --      RAISE WARNING 'placex point insert: % % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type,diameter;
+        IF NEW.rank_search >= 26 THEN
+          -- roads may cause reparenting for >27 rank places
+          update placex set indexed_status = 2 where indexed_status = 0 and rank_search > NEW.rank_search and ST_DWithin(placex.geometry, NEW.geometry, diameter);
+          -- reparenting also for OSM Interpolation Lines (and for Tiger?)
+          update location_property_osmline set indexed_status = 2 where indexed_status = 0 and ST_DWithin(location_property_osmline.linegeo, NEW.geometry, diameter);
+        ELSEIF NEW.rank_search >= 16 THEN
+          -- up to rank 16, street-less addresses may need reparenting
+          update placex set indexed_status = 2 where indexed_status = 0 and rank_search > NEW.rank_search and ST_DWithin(placex.geometry, NEW.geometry, diameter) and (rank_search < 28 or name is not null or address ? 'place');
+        ELSE
+          -- for all other places the search terms may change as well
+          update placex set indexed_status = 2 where indexed_status = 0 and rank_search > NEW.rank_search and ST_DWithin(placex.geometry, NEW.geometry, diameter) and (rank_search < 28 or name is not null);
+        END IF;
+      END IF;
+    END IF;
+  END IF;
+
+
+   -- add to tables for special search
+   -- Note: won't work on initial import because the classtype tables
+   -- do not yet exist. It won't hurt either.
+  classtable := 'place_classtype_' || NEW.class || '_' || NEW.type;
+  SELECT count(*)>0 FROM pg_tables WHERE tablename = classtable and schemaname = current_schema() INTO result;
+  IF result THEN
+    EXECUTE 'INSERT INTO ' || classtable::regclass || ' (place_id, centroid) VALUES ($1,$2)' 
+    USING NEW.place_id, ST_Centroid(NEW.geometry);
+  END IF;
+
+  RETURN NEW;
+
+END;
+$$
+LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION get_parent_address_level(geom GEOMETRY, in_level SMALLINT)
+  RETURNS SMALLINT
+  AS $$
+DECLARE
+  address_rank SMALLINT;
+BEGIN
+  IF in_level <= 3 or in_level > 15 THEN
+    address_rank := 3;
+  ELSE
+    SELECT rank_address INTO address_rank
+      FROM placex
+      WHERE osm_type = 'R' and class = 'boundary' and type = 'administrative'
+            and admin_level < in_level
+            and geometry && geom and ST_Covers(geometry, geom)
+      ORDER BY admin_level desc LIMIT 1;
+  END IF;
+
+  IF address_rank is NULL or address_rank <= 3 THEN
+    RETURN 3;
+  END IF;
+
+  RETURN address_rank;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION placex_update()
+  RETURNS TRIGGER
+  AS $$
+DECLARE
+  i INTEGER;
+  location RECORD;
+  relation_members TEXT[];
+
+  centroid GEOMETRY;
+  parent_address_level SMALLINT;
+
+  addr_street TEXT;
+  addr_place TEXT;
+
+  name_vector INTEGER[];
+  nameaddress_vector INTEGER[];
+
+  linked_node_id BIGINT;
+  linked_importance FLOAT;
+  linked_wikipedia TEXT;
+
+  result BOOLEAN;
+BEGIN
+  -- deferred delete
+  IF OLD.indexed_status = 100 THEN
+    --DEBUG: RAISE WARNING 'placex_update delete % %',NEW.osm_type,NEW.osm_id;
+    delete from placex where place_id = OLD.place_id;
+    RETURN NULL;
+  END IF;
+
+  IF NEW.indexed_status != 0 OR OLD.indexed_status = 0 THEN
+    RETURN NEW;
+  END IF;
+
+  --DEBUG: RAISE WARNING 'placex_update % % (%)',NEW.osm_type,NEW.osm_id,NEW.place_id;
+
+  NEW.indexed_date = now();
+
+  IF NOT %REVERSE-ONLY% THEN
+    DELETE from search_name WHERE place_id = NEW.place_id;
+  END IF;
+  result := deleteSearchName(NEW.partition, NEW.place_id);
+  DELETE FROM place_addressline WHERE place_id = NEW.place_id;
+  result := deleteRoad(NEW.partition, NEW.place_id);
+  result := deleteLocationArea(NEW.partition, NEW.place_id, NEW.rank_search);
+  UPDATE placex set linked_place_id = null, indexed_status = 2
+         where linked_place_id = NEW.place_id;
+  -- update not necessary for osmline, cause linked_place_id does not exist
+
+  IF NEW.linked_place_id is not null THEN
+    --DEBUG: RAISE WARNING 'place already linked to %', NEW.linked_place_id;
+    RETURN NEW;
+  END IF;
+
+  -- recompute the ranks, they might change when linking changes
+  SELECT * INTO NEW.rank_search, NEW.rank_address
+    FROM compute_place_rank(NEW.country_code,
+                            CASE WHEN ST_GeometryType(NEW.geometry)
+                                        IN ('ST_Polygon','ST_MultiPolygon')
+                            THEN 'A' ELSE NEW.osm_type END,
+                            NEW.class, NEW.type, NEW.admin_level,
+                            (NEW.extratags->'capital') = 'yes',
+                            NEW.address->'postcode');
+
+
+  --DEBUG: RAISE WARNING 'Copy over address tags';
+  -- housenumber is a computed field, so start with an empty value
+  NEW.housenumber := NULL;
+  IF NEW.address is not NULL THEN
+      IF NEW.address ? 'conscriptionnumber' THEN
+        i := getorcreate_housenumber_id(make_standard_name(NEW.address->'conscriptionnumber'));
+        IF NEW.address ? 'streetnumber' THEN
+            i := getorcreate_housenumber_id(make_standard_name(NEW.address->'streetnumber'));
+            NEW.housenumber := (NEW.address->'conscriptionnumber') || '/' || (NEW.address->'streetnumber');
+        ELSE
+            NEW.housenumber := NEW.address->'conscriptionnumber';
+        END IF;
+      ELSEIF NEW.address ? 'streetnumber' THEN
+        NEW.housenumber := NEW.address->'streetnumber';
+        i := getorcreate_housenumber_id(make_standard_name(NEW.address->'streetnumber'));
+      ELSEIF NEW.address ? 'housenumber' THEN
+        NEW.housenumber := NEW.address->'housenumber';
+        i := getorcreate_housenumber_id(make_standard_name(NEW.housenumber));
+      END IF;
+
+      addr_street := NEW.address->'street';
+      addr_place := NEW.address->'place';
+
+      IF NEW.address ? 'postcode' and NEW.address->'postcode' not similar to '%(,|;)%' THEN
+        i := getorcreate_postcode_id(NEW.address->'postcode');
+      END IF;
+  END IF;
+
+  -- Speed up searches - just use the centroid of the feature
+  -- cheaper but less acurate
+  NEW.centroid := ST_PointOnSurface(NEW.geometry);
+  --DEBUG: RAISE WARNING 'Computing preliminary centroid at %',ST_AsText(NEW.centroid);
+
+  NEW.postcode := null;
+
+  -- recalculate country and partition
+  IF NEW.rank_search = 4 AND NEW.address is not NULL AND NEW.address ? 'country' THEN
+    -- for countries, believe the mapped country code,
+    -- so that we remain in the right partition if the boundaries
+    -- suddenly expand.
+    NEW.country_code := lower(NEW.address->'country');
+    NEW.partition := get_partition(lower(NEW.country_code));
+    IF NEW.partition = 0 THEN
+      NEW.country_code := lower(get_country_code(NEW.centroid));
+      NEW.partition := get_partition(NEW.country_code);
+    END IF;
+  ELSE
+    IF NEW.rank_search >= 4 THEN
+      NEW.country_code := lower(get_country_code(NEW.centroid));
+    ELSE
+      NEW.country_code := NULL;
+    END IF;
+    NEW.partition := get_partition(NEW.country_code);
+  END IF;
+  --DEBUG: RAISE WARNING 'Country updated: "%"', NEW.country_code;
+
+  -- waterway ways are linked when they are part of a relation and have the same class/type
+  IF NEW.osm_type = 'R' and NEW.class = 'waterway' THEN
+      FOR relation_members IN select members from planet_osm_rels r where r.id = NEW.osm_id and r.parts != array[]::bigint[]
+      LOOP
+          FOR i IN 1..array_upper(relation_members, 1) BY 2 LOOP
+              IF relation_members[i+1] in ('', 'main_stream', 'side_stream') AND substring(relation_members[i],1,1) = 'w' THEN
+                --DEBUG: RAISE WARNING 'waterway parent %, child %/%', NEW.osm_id, i, relation_members[i];
+                FOR linked_node_id IN SELECT place_id FROM placex
+                  WHERE osm_type = 'W' and osm_id = substring(relation_members[i],2,200)::bigint
+                  and class = NEW.class and type in ('river', 'stream', 'canal', 'drain', 'ditch')
+                  and ( relation_members[i+1] != 'side_stream' or NEW.name->'name' = name->'name')
+                LOOP
+                  UPDATE placex SET linked_place_id = NEW.place_id WHERE place_id = linked_node_id;
+                  IF NOT %REVERSE-ONLY% THEN
+                    DELETE FROM search_name WHERE place_id = linked_node_id;
+                  END IF;
+                END LOOP;
+              END IF;
+          END LOOP;
+      END LOOP;
+      --DEBUG: RAISE WARNING 'Waterway processed';
+  END IF;
+
+  NEW.importance := null;
+  SELECT wikipedia, importance
+    FROM compute_importance(NEW.extratags, NEW.country_code, NEW.osm_type, NEW.osm_id)
+    INTO NEW.wikipedia,NEW.importance;
+
+--DEBUG: RAISE WARNING 'Importance computed from wikipedia: %', NEW.importance;
+
+  -- ---------------------------------------------------------------------------
+  -- For low level elements we inherit from our parent road
+  IF (NEW.rank_search > 27 OR (NEW.type = 'postcode' AND NEW.rank_search = 25)) THEN
+
+    --DEBUG: RAISE WARNING 'finding street for % %', NEW.osm_type, NEW.osm_id;
+    NEW.parent_place_id := null;
+
+    -- if we have a POI and there is no address information,
+    -- see if we can get it from a surrounding building
+    IF NEW.osm_type = 'N' AND addr_street IS NULL AND addr_place IS NULL
+       AND NEW.housenumber IS NULL THEN
+      FOR location IN
+        -- The additional && condition works around the misguided query
+        -- planner of postgis 3.0.
+        SELECT address from placex where ST_Covers(geometry, NEW.centroid)
+            and geometry && NEW.centroid
+            and (address ? 'housenumber' or address ? 'street' or address ? 'place')
+            and rank_search > 28 AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')
+            limit 1
+      LOOP
+        NEW.housenumber := location.address->'housenumber';
+        addr_street := location.address->'street';
+        addr_place := location.address->'place';
+        --DEBUG: RAISE WARNING 'Found surrounding building % %', location.osm_type, location.osm_id;
+      END LOOP;
+    END IF;
+
+    -- We have to find our parent road.
+    NEW.parent_place_id := find_parent_for_poi(NEW.osm_type, NEW.osm_id,
+                                               NEW.partition,
+                                               ST_Envelope(NEW.geometry),
+                                               addr_street, addr_place);
+
+    -- If we found the road take a shortcut here.
+    -- Otherwise fall back to the full address getting method below.
+    IF NEW.parent_place_id is not null THEN
+
+      -- Get the details of the parent road
+      SELECT p.country_code, p.postcode FROM placex p
+       WHERE p.place_id = NEW.parent_place_id INTO location;
+
+      NEW.country_code := location.country_code;
+      --DEBUG: RAISE WARNING 'Got parent details from search name';
+
+      -- determine postcode
+      IF NEW.address is not null AND NEW.address ? 'postcode' THEN
+          NEW.postcode = upper(trim(NEW.address->'postcode'));
+      ELSE
+         NEW.postcode := location.postcode;
+      END IF;
+      IF NEW.postcode is null THEN
+        NEW.postcode := get_nearest_postcode(NEW.country_code, NEW.geometry);
+      END IF;
+
+      -- If there is no name it isn't searchable, don't bother to create a search record
+      IF NEW.name is NULL THEN
+        --DEBUG: RAISE WARNING 'Not a searchable place % %', NEW.osm_type, NEW.osm_id;
+        return NEW;
+      END IF;
+
+      NEW.name := add_default_place_name(NEW.country_code, NEW.name);
+      name_vector := make_keywords(NEW.name);
+
+      -- Performance, it would be more acurate to do all the rest of the import
+      -- process but it takes too long
+      -- Just be happy with inheriting from parent road only
+      IF NEW.rank_search <= 25 and NEW.rank_address > 0 THEN
+        result := add_location(NEW.place_id, NEW.country_code, NEW.partition, name_vector, NEW.rank_search, NEW.rank_address, upper(trim(NEW.address->'postcode')), NEW.geometry);
+        --DEBUG: RAISE WARNING 'Place added to location table';
+      END IF;
+
+      result := insertSearchName(NEW.partition, NEW.place_id, name_vector,
+                                 NEW.rank_search, NEW.rank_address, NEW.geometry);
+
+      IF NOT %REVERSE-ONLY% THEN
+          -- Merge address from parent
+          SELECT array_merge(s.name_vector, s.nameaddress_vector)
+            INTO nameaddress_vector
+            FROM search_name s
+            WHERE s.place_id = NEW.parent_place_id;
+
+          INSERT INTO search_name (place_id, search_rank, address_rank,
+                                   importance, country_code, name_vector,
+                                   nameaddress_vector, centroid)
+                 VALUES (NEW.place_id, NEW.rank_search, NEW.rank_address,
+                         NEW.importance, NEW.country_code, name_vector,
+                         nameaddress_vector, NEW.centroid);
+          --DEBUG: RAISE WARNING 'Place added to search table';
+        END IF;
+
+      return NEW;
+    END IF;
+
+  END IF;
+
+  -- ---------------------------------------------------------------------------
+  -- Full indexing
+  --DEBUG: RAISE WARNING 'Using full index mode for % %', NEW.osm_type, NEW.osm_id;
+  SELECT * INTO location FROM find_linked_place(NEW);
+  IF location.place_id is not null THEN
+    --DEBUG: RAISE WARNING 'Linked %', location;
+
+    -- Use the linked point as the centre point of the geometry,
+    -- but only if it is within the area of the boundary.
+    centroid := coalesce(location.centroid, ST_Centroid(location.geometry));
+    IF centroid is not NULL AND ST_Within(centroid, NEW.geometry) THEN
+        NEW.centroid := centroid;
+    END IF;
+
+    -- Use the address rank of the linked place, if it has one
+    parent_address_level := get_parent_address_level(NEW.geometry, NEW.admin_level);
+    --DEBUG: RAISE WARNING 'parent address: % rank address: %', parent_address_level, location.rank_address;
+    IF location.rank_address > parent_address_level
+       and location.rank_address < 26
+    THEN
+      NEW.rank_address := location.rank_address;
+    END IF;
+
+    -- merge in the label name
+    IF NOT location.name IS NULL THEN
+      NEW.name := location.name || NEW.name;
+    END IF;
+
+    -- merge in extra tags
+    NEW.extratags := hstore('linked_' || location.class, location.type)
+                     || coalesce(location.extratags, ''::hstore)
+                     || coalesce(NEW.extratags, ''::hstore);
+
+    -- mark the linked place (excludes from search results)
+    UPDATE placex set linked_place_id = NEW.place_id
+      WHERE place_id = location.place_id;
+    -- ensure that those places are not found anymore
+    IF NOT %REVERSE-ONLY% THEN
+      DELETE FROM search_name WHERE place_id = location.place_id;
+    END IF;
+    PERFORM deleteLocationArea(NEW.partition, location.place_id, NEW.rank_search);
+
+    SELECT wikipedia, importance
+      FROM compute_importance(location.extratags, NEW.country_code,
+                              'N', location.osm_id)
+      INTO linked_wikipedia,linked_importance;
+
+    -- Use the maximum importance if one could be computed from the linked object.
+    IF linked_importance is not null AND
+       (NEW.importance is null or NEW.importance < linked_importance)
+    THEN
+      NEW.importance = linked_importance;
+    END IF;
+  END IF;
+
+  -- Initialise the name vector using our name
+  NEW.name := add_default_place_name(NEW.country_code, NEW.name);
+  name_vector := make_keywords(NEW.name);
+
+  -- make sure all names are in the word table
+  IF NEW.admin_level = 2
+     AND NEW.class = 'boundary' AND NEW.type = 'administrative'
+     AND NEW.country_code IS NOT NULL AND NEW.osm_type = 'R'
+  THEN
+    PERFORM create_country(NEW.name, lower(NEW.country_code));
+    --DEBUG: RAISE WARNING 'Country names updated';
+  END IF;
+
+  SELECT * FROM insert_addresslines(NEW.place_id, NEW.partition,
+                                    NEW.rank_search, NEW.address,
+                                    CASE WHEN NEW.rank_search >= 26
+                                             AND NEW.rank_search < 30
+                                      THEN NEW.geometry ELSE NEW.centroid END)
+    INTO NEW.parent_place_id, NEW.postcode, nameaddress_vector;
+
+  --DEBUG: RAISE WARNING 'RETURN insert_addresslines: %, %, %', NEW.parent_place_id, NEW.postcode, nameaddress_vector;
+
+  IF NEW.address is not null AND NEW.address ? 'postcode' 
+     AND NEW.address->'postcode' not similar to '%(,|;)%' THEN
+    NEW.postcode := upper(trim(NEW.address->'postcode'));
+  END IF;
+
+  IF NEW.postcode is null AND NEW.rank_search > 8 THEN
+    NEW.postcode := get_nearest_postcode(NEW.country_code, NEW.geometry);
+  END IF;
+
+  -- if we have a name add this to the name search table
+  IF NEW.name IS NOT NULL THEN
+
+    IF NEW.rank_search <= 25 and NEW.rank_address > 0 THEN
+      result := add_location(NEW.place_id, NEW.country_code, NEW.partition, name_vector, NEW.rank_search, NEW.rank_address, upper(trim(NEW.address->'postcode')), NEW.geometry);
+      --DEBUG: RAISE WARNING 'added to location (full)';
+    END IF;
+
+    IF NEW.rank_search between 26 and 27 and NEW.class = 'highway' THEN
+      result := insertLocationRoad(NEW.partition, NEW.place_id, NEW.country_code, NEW.geometry);
+      --DEBUG: RAISE WARNING 'insert into road location table (full)';
+    END IF;
+
+    result := insertSearchName(NEW.partition, NEW.place_id, name_vector,
+                               NEW.rank_search, NEW.rank_address, NEW.geometry);
+    --DEBUG: RAISE WARNING 'added to search name (full)';
+
+    IF NOT %REVERSE-ONLY% THEN
+        INSERT INTO search_name (place_id, search_rank, address_rank,
+                                 importance, country_code, name_vector,
+                                 nameaddress_vector, centroid)
+               VALUES (NEW.place_id, NEW.rank_search, NEW.rank_address,
+                       NEW.importance, NEW.country_code, name_vector,
+                       nameaddress_vector, NEW.centroid);
+    END IF;
+
+  END IF;
+
+  --DEBUG: RAISE WARNING 'place update % % finsihed.', NEW.osm_type, NEW.osm_id;
+
+  RETURN NEW;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION placex_delete()
+  RETURNS TRIGGER
+  AS $$
+DECLARE
+  b BOOLEAN;
+  classtable TEXT;
+BEGIN
+  -- RAISE WARNING 'placex_delete % %',OLD.osm_type,OLD.osm_id;
+
+  update placex set linked_place_id = null, indexed_status = 2 where linked_place_id = OLD.place_id and indexed_status = 0;
+  --DEBUG: RAISE WARNING 'placex_delete:01 % %',OLD.osm_type,OLD.osm_id;
+  update placex set linked_place_id = null where linked_place_id = OLD.place_id;
+  --DEBUG: RAISE WARNING 'placex_delete:02 % %',OLD.osm_type,OLD.osm_id;
+
+  IF OLD.rank_address < 30 THEN
+
+    -- mark everything linked to this place for re-indexing
+    --DEBUG: RAISE WARNING 'placex_delete:03 % %',OLD.osm_type,OLD.osm_id;
+    UPDATE placex set indexed_status = 2 from place_addressline where address_place_id = OLD.place_id 
+      and placex.place_id = place_addressline.place_id and indexed_status = 0 and place_addressline.isaddress;
+
+    --DEBUG: RAISE WARNING 'placex_delete:04 % %',OLD.osm_type,OLD.osm_id;
+    DELETE FROM place_addressline where address_place_id = OLD.place_id;
+
+    --DEBUG: RAISE WARNING 'placex_delete:05 % %',OLD.osm_type,OLD.osm_id;
+    b := deleteRoad(OLD.partition, OLD.place_id);
+
+    --DEBUG: RAISE WARNING 'placex_delete:06 % %',OLD.osm_type,OLD.osm_id;
+    update placex set indexed_status = 2 where parent_place_id = OLD.place_id and indexed_status = 0;
+    --DEBUG: RAISE WARNING 'placex_delete:07 % %',OLD.osm_type,OLD.osm_id;
+    -- reparenting also for OSM Interpolation Lines (and for Tiger?)
+    update location_property_osmline set indexed_status = 2 where indexed_status = 0 and parent_place_id = OLD.place_id;
+
+  END IF;
+
+  --DEBUG: RAISE WARNING 'placex_delete:08 % %',OLD.osm_type,OLD.osm_id;
+
+  IF OLD.rank_address < 26 THEN
+    b := deleteLocationArea(OLD.partition, OLD.place_id, OLD.rank_search);
+  END IF;
+
+  --DEBUG: RAISE WARNING 'placex_delete:09 % %',OLD.osm_type,OLD.osm_id;
+
+  IF OLD.name is not null THEN
+    IF NOT %REVERSE-ONLY% THEN
+      DELETE from search_name WHERE place_id = OLD.place_id;
+    END IF;
+    b := deleteSearchName(OLD.partition, OLD.place_id);
+  END IF;
+
+  --DEBUG: RAISE WARNING 'placex_delete:10 % %',OLD.osm_type,OLD.osm_id;
+
+  DELETE FROM place_addressline where place_id = OLD.place_id;
+
+  --DEBUG: RAISE WARNING 'placex_delete:11 % %',OLD.osm_type,OLD.osm_id;
+
+  -- remove from tables for special search
+  classtable := 'place_classtype_' || OLD.class || '_' || OLD.type;
+  SELECT count(*)>0 FROM pg_tables WHERE tablename = classtable and schemaname = current_schema() INTO b;
+  IF b THEN
+    EXECUTE 'DELETE FROM ' || classtable::regclass || ' WHERE place_id = $1' USING OLD.place_id;
+  END IF;
+
+  --DEBUG: RAISE WARNING 'placex_delete:12 % %',OLD.osm_type,OLD.osm_id;
+
+  RETURN OLD;
+
+END;
+$$
+LANGUAGE plpgsql;
diff --git a/sql/functions/postcode_triggers.sql b/sql/functions/postcode_triggers.sql
new file mode 100644 (file)
index 0000000..96788d6
--- /dev/null
@@ -0,0 +1,40 @@
+-- Trigger functions for location_postcode table.
+
+
+-- Trigger for updates of location_postcode
+--
+-- Computes the parent object the postcode most likely refers to.
+-- This will be the place that determines the address displayed when
+-- searching for this postcode.
+CREATE OR REPLACE FUNCTION postcode_update()
+  RETURNS TRIGGER
+  AS $$
+DECLARE
+  partition SMALLINT;
+  location RECORD;
+BEGIN
+    IF NEW.indexed_status != 0 OR OLD.indexed_status = 0 THEN
+        RETURN NEW;
+    END IF;
+
+    NEW.indexed_date = now();
+
+    partition := get_partition(NEW.country_code);
+
+    SELECT * FROM get_postcode_rank(NEW.country_code, NEW.postcode)
+      INTO NEW.rank_search, NEW.rank_address;
+
+    NEW.parent_place_id = 0;
+    FOR location IN
+      SELECT place_id
+        FROM getNearFeatures(partition, NEW.geometry, NEW.rank_search, '{}'::int[])
+        WHERE NOT isguess ORDER BY rank_address DESC LIMIT 1
+    LOOP
+        NEW.parent_place_id = location.place_id;
+    END LOOP;
+
+    RETURN NEW;
+END;
+$$
+LANGUAGE plpgsql;
+
diff --git a/sql/functions/ranking.sql b/sql/functions/ranking.sql
new file mode 100644 (file)
index 0000000..98e70a4
--- /dev/null
@@ -0,0 +1,192 @@
+-- Functions related to search and address ranks
+
+-- Return an approximate search radius according to the search rank.
+CREATE OR REPLACE FUNCTION reverse_place_diameter(rank_search SMALLINT)
+  RETURNS FLOAT
+  AS $$
+BEGIN
+  IF rank_search <= 4 THEN
+    RETURN 5.0;
+  ELSIF rank_search <= 8 THEN
+    RETURN 1.8;
+  ELSIF rank_search <= 12 THEN
+    RETURN 0.6;
+  ELSIF rank_search <= 17 THEN
+    RETURN 0.16;
+  ELSIF rank_search <= 18 THEN
+    RETURN 0.08;
+  ELSIF rank_search <= 19 THEN
+    RETURN 0.04;
+  END IF;
+
+  RETURN 0.02;
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+
+-- Return an approximate update radius according to the search rank.
+CREATE OR REPLACE FUNCTION update_place_diameter(rank_search SMALLINT)
+  RETURNS FLOAT
+  AS $$
+BEGIN
+  -- postcodes
+  IF rank_search = 11 or rank_search = 5 THEN
+    RETURN 0.05;
+  -- anything higher than city is effectively ignored (polygon required)
+  ELSIF rank_search < 16 THEN
+    RETURN 0;
+  ELSIF rank_search < 18 THEN
+    RETURN 0.1;
+  ELSIF rank_search < 20 THEN
+    RETURN 0.05;
+  ELSIF rank_search = 21 THEN
+    RETURN 0.001;
+  ELSIF rank_search < 24 THEN
+    RETURN 0.02;
+  ELSIF rank_search < 26 THEN
+    RETURN 0.002;
+  ELSIF rank_search < 28 THEN
+    RETURN 0.001;
+  END IF;
+
+  RETURN 0;
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+
+-- Guess a ranking for postcodes from country and postcode format.
+CREATE OR REPLACE FUNCTION get_postcode_rank(country_code VARCHAR(2), postcode TEXT,
+                                             OUT rank_search SMALLINT,
+                                             OUT rank_address SMALLINT)
+AS $$
+DECLARE
+  part TEXT;
+BEGIN
+    rank_search := 30;
+    rank_address := 30;
+    postcode := upper(postcode);
+
+    IF country_code = 'gb' THEN
+        IF postcode ~ '^([A-Z][A-Z]?[0-9][0-9A-Z]? [0-9][A-Z][A-Z])$' THEN
+            rank_search := 25;
+            rank_address := 5;
+        ELSEIF postcode ~ '^([A-Z][A-Z]?[0-9][0-9A-Z]? [0-9])$' THEN
+            rank_search := 23;
+            rank_address := 5;
+        ELSEIF postcode ~ '^([A-Z][A-Z]?[0-9][0-9A-Z])$' THEN
+            rank_search := 21;
+            rank_address := 5;
+        END IF;
+
+    ELSEIF country_code = 'sg' THEN
+        IF postcode ~ '^([0-9]{6})$' THEN
+            rank_search := 25;
+            rank_address := 11;
+        END IF;
+
+    ELSEIF country_code = 'de' THEN
+        IF postcode ~ '^([0-9]{5})$' THEN
+            rank_search := 21;
+            rank_address := 11;
+        END IF;
+
+    ELSE
+        -- Guess at the postcode format and coverage (!)
+        IF postcode ~ '^[A-Z0-9]{1,5}$' THEN -- Probably too short to be very local
+            rank_search := 21;
+            rank_address := 11;
+        ELSE
+            -- Does it look splitable into and area and local code?
+            part := substring(postcode from '^([- :A-Z0-9]+)([- :][A-Z0-9]+)$');
+
+            IF part IS NOT NULL THEN
+                rank_search := 25;
+                rank_address := 11;
+            ELSEIF postcode ~ '^[- :A-Z0-9]{6,}$' THEN
+                rank_search := 21;
+                rank_address := 11;
+            END IF;
+        END IF;
+    END IF;
+
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+
+-- Get standard search and address rank for an object.
+--
+-- \param country        Two-letter country code where the object is in.
+-- \param extended_type  OSM type (N, W, R) or area type (A).
+-- \param place_class    Class (or tag key) of object.
+-- \param place_type     Type (or tag value) of object.
+-- \param admin_level    Value of admin_level tag.
+-- \param is_major       If true, boost search rank by one.
+-- \param postcode       Value of addr:postcode tag.
+-- \param[out] search_rank   Computed search rank.
+-- \param[out] address_rank  Computed address rank.
+--
+CREATE OR REPLACE FUNCTION compute_place_rank(country VARCHAR(2),
+                                              extended_type VARCHAR(1),
+                                              place_class TEXT, place_type TEXT,
+                                              admin_level SMALLINT,
+                                              is_major BOOLEAN,
+                                              postcode TEXT,
+                                              OUT search_rank SMALLINT,
+                                              OUT address_rank SMALLINT)
+AS $$
+DECLARE
+  classtype TEXT;
+BEGIN
+  IF place_class in ('place','boundary')
+     and place_type in ('postcode','postal_code')
+  THEN
+    SELECT * INTO search_rank, address_rank
+      FROM get_postcode_rank(country, postcode);
+
+    IF NOT extended_type = 'A' THEN
+      address_rank := 0;
+    END IF;
+  ELSEIF extended_type = 'N' AND place_class = 'highway' THEN
+    search_rank = 30;
+    address_rank = 0;
+  ELSEIF place_class = 'landuse' AND extended_type != 'A' THEN
+    search_rank = 30;
+    address_rank = 0;
+  ELSE
+    IF place_class = 'boundary' and place_type = 'administrative' THEN
+      classtype = place_type || admin_level::TEXT;
+    ELSE
+      classtype = place_type;
+    END IF;
+
+    SELECT l.rank_search, l.rank_address INTO search_rank, address_rank
+      FROM address_levels l
+     WHERE (l.country_code = country or l.country_code is NULL)
+           AND l.class = place_class AND (l.type = classtype or l.type is NULL)
+     ORDER BY l.country_code, l.class, l.type LIMIT 1;
+
+    IF search_rank is NULL THEN
+      search_rank := 30;
+    END IF;
+
+    IF address_rank is NULL THEN
+      address_rank := 30;
+    END IF;
+
+    -- some postcorrections
+    IF place_class = 'waterway' AND extended_type = 'R' THEN
+        -- Slightly promote waterway relations so that they are processed
+        -- before their members.
+        search_rank := search_rank - 1;
+    END IF;
+
+    IF is_major THEN
+      search_rank := search_rank - 1;
+    END IF;
+  END IF;
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
diff --git a/sql/functions/utils.sql b/sql/functions/utils.sql
new file mode 100644 (file)
index 0000000..61033fb
--- /dev/null
@@ -0,0 +1,505 @@
+-- Assorted helper functions for the triggers.
+
+CREATE OR REPLACE FUNCTION geometry_sector(partition INTEGER, place geometry)
+  RETURNS INTEGER
+  AS $$
+DECLARE
+  NEWgeometry geometry;
+BEGIN
+--  RAISE WARNING '%',place;
+  NEWgeometry := ST_PointOnSurface(place);
+  RETURN (partition*1000000) + (500-ST_X(NEWgeometry)::integer)*1000 + (500-ST_Y(NEWgeometry)::integer);
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+
+CREATE OR REPLACE FUNCTION array_merge(a INTEGER[], b INTEGER[])
+  RETURNS INTEGER[]
+  AS $$
+DECLARE
+  i INTEGER;
+  r INTEGER[];
+BEGIN
+  IF array_upper(a, 1) IS NULL THEN
+    RETURN b;
+  END IF;
+  IF array_upper(b, 1) IS NULL THEN
+    RETURN a;
+  END IF;
+  r := a;
+  FOR i IN 1..array_upper(b, 1) LOOP  
+    IF NOT (ARRAY[b[i]] <@ r) THEN
+      r := r || b[i];
+    END IF;
+  END LOOP;
+  RETURN r;
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+-- Return the node members with a given label from a relation member list
+-- as a set.
+--
+-- \param members      Member list in osm2pgsql middle format.
+-- \param memberLabels Array of labels to accept.
+--
+-- \returns Set of OSM ids of nodes that are found.
+--
+CREATE OR REPLACE FUNCTION get_rel_node_members(members TEXT[],
+                                                memberLabels TEXT[])
+  RETURNS SETOF BIGINT
+  AS $$
+DECLARE
+  i INTEGER;
+BEGIN
+  FOR i IN 1..ARRAY_UPPER(members,1) BY 2 LOOP
+    IF members[i+1] = ANY(memberLabels)
+       AND upper(substring(members[i], 1, 1))::char(1) = 'N'
+    THEN
+      RETURN NEXT substring(members[i], 2)::bigint;
+    END IF;
+  END LOOP;
+
+  RETURN;
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+-- Copy 'name' to or from the default language.
+--
+-- \param country_code     Country code of the object being named.
+-- \param[inout] name      List of names of the object.
+--
+-- If the country named by country_code has a single default language,
+-- then a `name` tag is copied to `name:<country_code>` if this tag does
+-- not yet exist and vice versa.
+CREATE OR REPLACE FUNCTION add_default_place_name(country_code VARCHAR(2),
+                                                  INOUT name HSTORE)
+  AS $$
+DECLARE
+  default_language VARCHAR(10);
+BEGIN
+  IF name is not null AND array_upper(akeys(name),1) > 1 THEN
+    default_language := get_country_language_code(country_code);
+    IF default_language IS NOT NULL THEN
+      IF name ? 'name' AND NOT name ? ('name:'||default_language) THEN
+        name := name || hstore(('name:'||default_language), (name -> 'name'));
+      ELSEIF name ? ('name:'||default_language) AND NOT name ? 'name' THEN
+        name := name || hstore('name', (name -> ('name:'||default_language)));
+      END IF;
+    END IF;
+  END IF;
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+
+-- Find the nearest artificial postcode for the given geometry.
+-- TODO For areas there should not be more than two inside the geometry.
+CREATE OR REPLACE FUNCTION get_nearest_postcode(country VARCHAR(2), geom GEOMETRY)
+  RETURNS TEXT
+  AS $$
+DECLARE
+  outcode TEXT;
+  cnt INTEGER;
+BEGIN
+    -- If the geometry is an area then only one postcode must be within
+    -- that area, otherwise consider the area as not having a postcode.
+    IF ST_GeometryType(geom) in ('ST_Polygon','ST_MultiPolygon') THEN
+        SELECT min(postcode), count(*) FROM
+              (SELECT postcode FROM location_postcode
+                WHERE ST_Contains(geom, location_postcode.geometry) LIMIT 2) sub
+          INTO outcode, cnt;
+
+        IF cnt = 1 THEN
+            RETURN outcode;
+        ELSE
+            RETURN null;
+        END IF;
+    END IF;
+
+    SELECT postcode FROM location_postcode
+     WHERE ST_DWithin(geom, location_postcode.geometry, 0.05)
+          AND location_postcode.country_code = country
+     ORDER BY ST_Distance(geom, location_postcode.geometry) LIMIT 1
+    INTO outcode;
+
+    RETURN outcode;
+END;
+$$
+LANGUAGE plpgsql STABLE;
+
+
+CREATE OR REPLACE FUNCTION get_country_code(place geometry)
+  RETURNS TEXT
+  AS $$
+DECLARE
+  place_centre GEOMETRY;
+  nearcountry RECORD;
+BEGIN
+  place_centre := ST_PointOnSurface(place);
+
+-- RAISE WARNING 'get_country_code, start: %', ST_AsText(place_centre);
+
+  -- Try for a OSM polygon
+  FOR nearcountry IN
+    SELECT country_code from location_area_country
+    WHERE country_code is not null and st_covers(geometry, place_centre) limit 1
+  LOOP
+    RETURN nearcountry.country_code;
+  END LOOP;
+
+-- RAISE WARNING 'osm fallback: %', ST_AsText(place_centre);
+
+  -- Try for OSM fallback data
+  -- The order is to deal with places like HongKong that are 'states' within another polygon
+  FOR nearcountry IN
+    SELECT country_code from country_osm_grid
+    WHERE st_covers(geometry, place_centre) order by area asc limit 1
+  LOOP
+    RETURN nearcountry.country_code;
+  END LOOP;
+
+-- RAISE WARNING 'near osm fallback: %', ST_AsText(place_centre);
+
+  -- 
+  FOR nearcountry IN
+    SELECT country_code from country_osm_grid
+    WHERE st_dwithin(geometry, place_centre, 0.5)
+    ORDER BY st_distance(geometry, place_centre) asc, area asc limit 1
+  LOOP
+    RETURN nearcountry.country_code;
+  END LOOP;
+
+  RETURN NULL;
+END;
+$$
+LANGUAGE plpgsql STABLE;
+
+
+CREATE OR REPLACE FUNCTION get_country_language_code(search_country_code VARCHAR(2))
+  RETURNS TEXT
+  AS $$
+DECLARE
+  nearcountry RECORD;
+BEGIN
+  FOR nearcountry IN
+    SELECT distinct country_default_language_code from country_name
+    WHERE country_code = search_country_code limit 1
+  LOOP
+    RETURN lower(nearcountry.country_default_language_code);
+  END LOOP;
+  RETURN NULL;
+END;
+$$
+LANGUAGE plpgsql STABLE;
+
+
+CREATE OR REPLACE FUNCTION get_partition(in_country_code VARCHAR(10))
+  RETURNS INTEGER
+  AS $$
+DECLARE
+  nearcountry RECORD;
+BEGIN
+  FOR nearcountry IN
+    SELECT partition from country_name where country_code = in_country_code
+  LOOP
+    RETURN nearcountry.partition;
+  END LOOP;
+  RETURN 0;
+END;
+$$
+LANGUAGE plpgsql STABLE;
+
+
+-- Find the parent of an address with addr:street/addr:place tag.
+--
+-- \param street     Value of addr:street or NULL if tag is missing.
+-- \param place      Value of addr:place or NULL if tag is missing.
+-- \param partition  Partition where to search the parent.
+-- \param centroid   Location of the address.
+--
+-- \return Place ID of the parent if one was found, NULL otherwise.
+CREATE OR REPLACE FUNCTION find_parent_for_address(street TEXT, place TEXT,
+                                                   partition SMALLINT,
+                                                   centroid GEOMETRY)
+  RETURNS BIGINT
+  AS $$
+DECLARE
+  parent_place_id BIGINT;
+  word_ids INTEGER[];
+BEGIN
+  IF street is not null THEN
+    -- Check for addr:street attributes
+    -- Note that addr:street links can only be indexed, once the street itself is indexed
+    word_ids := word_ids_from_name(street);
+    IF word_ids is not null THEN
+      parent_place_id := getNearestNamedRoadPlaceId(partition, centroid, word_ids);
+      IF parent_place_id is not null THEN
+        --DEBUG: RAISE WARNING 'Get parent form addr:street: %', parent.place_id;
+        RETURN parent_place_id;
+      END IF;
+    END IF;
+  END IF;
+
+  -- Check for addr:place attributes.
+  IF place is not null THEN
+    word_ids := word_ids_from_name(place);
+    IF word_ids is not null THEN
+      parent_place_id := getNearestNamedPlacePlaceId(partition, centroid, word_ids);
+      IF parent_place_id is not null THEN
+        --DEBUG: RAISE WARNING 'Get parent form addr:place: %', parent.place_id;
+        RETURN parent_place_id;
+      END IF;
+    END IF;
+  END IF;
+
+  RETURN NULL;
+END;
+$$
+LANGUAGE plpgsql STABLE;
+
+CREATE OR REPLACE FUNCTION delete_location(OLD_place_id BIGINT)
+  RETURNS BOOLEAN
+  AS $$
+DECLARE
+BEGIN
+  DELETE FROM location_area where place_id = OLD_place_id;
+-- TODO:location_area
+  RETURN true;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION add_location(place_id BIGINT, country_code varchar(2),
+                                        partition INTEGER, keywords INTEGER[],
+                                        rank_search INTEGER, rank_address INTEGER,
+                                        in_postcode TEXT, geometry GEOMETRY)
+  RETURNS BOOLEAN
+  AS $$
+DECLARE
+  locationid INTEGER;
+  centroid GEOMETRY;
+  diameter FLOAT;
+  x BOOLEAN;
+  splitGeom RECORD;
+  secgeo GEOMETRY;
+  postcode TEXT;
+BEGIN
+
+  IF rank_search > 25 THEN
+    RAISE EXCEPTION 'Adding location with rank > 25 (% rank %)', place_id, rank_search;
+  END IF;
+
+  x := deleteLocationArea(partition, place_id, rank_search);
+
+  -- add postcode only if it contains a single entry, i.e. ignore postcode lists
+  postcode := NULL;
+  IF in_postcode is not null AND in_postcode not similar to '%(,|;)%' THEN
+      postcode := upper(trim (in_postcode));
+  END IF;
+
+  IF ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') THEN
+    centroid := ST_Centroid(geometry);
+
+    FOR secgeo IN select split_geometry(geometry) AS geom LOOP
+      x := insertLocationAreaLarge(partition, place_id, country_code, keywords, rank_search, rank_address, false, postcode, centroid, secgeo);
+    END LOOP;
+
+  ELSE
+
+    diameter := 0.02;
+    IF rank_address = 0 THEN
+      diameter := 0.02;
+    ELSEIF rank_search <= 14 THEN
+      diameter := 1.2;
+    ELSEIF rank_search <= 15 THEN
+      diameter := 1;
+    ELSEIF rank_search <= 16 THEN
+      diameter := 0.5;
+    ELSEIF rank_search <= 17 THEN
+      diameter := 0.2;
+    ELSEIF rank_search <= 21 THEN
+      diameter := 0.05;
+    ELSEIF rank_search = 25 THEN
+      diameter := 0.005;
+    END IF;
+
+--    RAISE WARNING 'adding % diameter %', place_id, diameter;
+
+    secgeo := ST_Buffer(geometry, diameter);
+    x := insertLocationAreaLarge(partition, place_id, country_code, keywords, rank_search, rank_address, true, postcode, ST_Centroid(geometry), secgeo);
+
+  END IF;
+
+  RETURN true;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION quad_split_geometry(geometry GEOMETRY, maxarea FLOAT,
+                                               maxdepth INTEGER)
+  RETURNS SETOF GEOMETRY
+  AS $$
+DECLARE
+  xmin FLOAT;
+  ymin FLOAT;
+  xmax FLOAT;
+  ymax FLOAT;
+  xmid FLOAT;
+  ymid FLOAT;
+  secgeo GEOMETRY;
+  secbox GEOMETRY;
+  seg INTEGER;
+  geo RECORD;
+  area FLOAT;
+  remainingdepth INTEGER;
+  added INTEGER;
+BEGIN
+
+--  RAISE WARNING 'quad_split_geometry: maxarea=%, depth=%',maxarea,maxdepth;
+
+  IF (ST_GeometryType(geometry) not in ('ST_Polygon','ST_MultiPolygon') OR NOT ST_IsValid(geometry)) THEN
+    RETURN NEXT geometry;
+    RETURN;
+  END IF;
+
+  remainingdepth := maxdepth - 1;
+  area := ST_AREA(geometry);
+  IF remainingdepth < 1 OR area < maxarea THEN
+    RETURN NEXT geometry;
+    RETURN;
+  END IF;
+
+  xmin := st_xmin(geometry);
+  xmax := st_xmax(geometry);
+  ymin := st_ymin(geometry);
+  ymax := st_ymax(geometry);
+  secbox := ST_SetSRID(ST_MakeBox2D(ST_Point(ymin,xmin),ST_Point(ymax,xmax)),4326);
+
+  -- if the geometry completely covers the box don't bother to slice any more
+  IF ST_AREA(secbox) = area THEN
+    RETURN NEXT geometry;
+    RETURN;
+  END IF;
+
+  xmid := (xmin+xmax)/2;
+  ymid := (ymin+ymax)/2;
+
+  added := 0;
+  FOR seg IN 1..4 LOOP
+
+    IF seg = 1 THEN
+      secbox := ST_SetSRID(ST_MakeBox2D(ST_Point(xmin,ymin),ST_Point(xmid,ymid)),4326);
+    END IF;
+    IF seg = 2 THEN
+      secbox := ST_SetSRID(ST_MakeBox2D(ST_Point(xmin,ymid),ST_Point(xmid,ymax)),4326);
+    END IF;
+    IF seg = 3 THEN
+      secbox := ST_SetSRID(ST_MakeBox2D(ST_Point(xmid,ymin),ST_Point(xmax,ymid)),4326);
+    END IF;
+    IF seg = 4 THEN
+      secbox := ST_SetSRID(ST_MakeBox2D(ST_Point(xmid,ymid),ST_Point(xmax,ymax)),4326);
+    END IF;
+
+    IF st_intersects(geometry, secbox) THEN
+      secgeo := st_intersection(geometry, secbox);
+      IF NOT ST_IsEmpty(secgeo) AND ST_GeometryType(secgeo) in ('ST_Polygon','ST_MultiPolygon') THEN
+        FOR geo IN select quad_split_geometry(secgeo, maxarea, remainingdepth) as geom LOOP
+          IF NOT ST_IsEmpty(geo.geom) AND ST_GeometryType(geo.geom) in ('ST_Polygon','ST_MultiPolygon') THEN
+            added := added + 1;
+            RETURN NEXT geo.geom;
+          END IF;
+        END LOOP;
+      END IF;
+    END IF;
+  END LOOP;
+
+  RETURN;
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+
+CREATE OR REPLACE FUNCTION split_geometry(geometry GEOMETRY)
+  RETURNS SETOF GEOMETRY
+  AS $$
+DECLARE
+  geo RECORD;
+BEGIN
+  -- 10000000000 is ~~ 1x1 degree
+  FOR geo IN select quad_split_geometry(geometry, 0.25, 20) as geom LOOP
+    RETURN NEXT geo.geom;
+  END LOOP;
+  RETURN;
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;
+
+
+CREATE OR REPLACE FUNCTION place_force_delete(placeid BIGINT)
+  RETURNS BOOLEAN
+  AS $$
+DECLARE
+    osmid BIGINT;
+    osmtype character(1);
+    pclass text;
+    ptype text;
+BEGIN
+  SELECT osm_type, osm_id, class, type FROM placex WHERE place_id = placeid INTO osmtype, osmid, pclass, ptype;
+  DELETE FROM import_polygon_delete where osm_type = osmtype and osm_id = osmid and class = pclass and type = ptype;
+  DELETE FROM import_polygon_error where osm_type = osmtype and osm_id = osmid and class = pclass and type = ptype;
+  -- force delete from place/placex by making it a very small geometry
+  UPDATE place set geometry = ST_SetSRID(ST_Point(0,0), 4326) where osm_type = osmtype and osm_id = osmid and class = pclass and type = ptype;
+  DELETE FROM place where osm_type = osmtype and osm_id = osmid and class = pclass and type = ptype;
+
+  RETURN TRUE;
+END;
+$$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION place_force_update(placeid BIGINT)
+  RETURNS BOOLEAN
+  AS $$
+DECLARE
+  placegeom GEOMETRY;
+  geom GEOMETRY;
+  diameter FLOAT;
+  rank INTEGER;
+BEGIN
+  UPDATE placex SET indexed_status = 2 WHERE place_id = placeid;
+  SELECT geometry, rank_search FROM placex WHERE place_id = placeid INTO placegeom, rank;
+  IF placegeom IS NOT NULL AND ST_IsValid(placegeom) THEN
+    IF ST_GeometryType(placegeom) in ('ST_Polygon','ST_MultiPolygon') THEN
+      FOR geom IN select split_geometry(placegeom) FROM placex WHERE place_id = placeid LOOP
+        update placex set indexed_status = 2 where (st_covers(geom, placex.geometry) OR ST_Intersects(geom, placex.geometry)) 
+        AND rank_search > rank and indexed_status = 0 and ST_geometrytype(placex.geometry) = 'ST_Point' and (rank_search < 28 or name is not null or (rank >= 16 and address ? 'place'));
+        update placex set indexed_status = 2 where (st_covers(geom, placex.geometry) OR ST_Intersects(geom, placex.geometry)) 
+        AND rank_search > rank and indexed_status = 0 and ST_geometrytype(placex.geometry) != 'ST_Point' and (rank_search < 28 or name is not null or (rank >= 16 and address ? 'place'));
+      END LOOP;
+    ELSE
+        diameter := update_place_diameter(rank);
+        IF diameter > 0 THEN
+          IF rank >= 26 THEN
+            -- roads may cause reparenting for >27 rank places
+            update placex set indexed_status = 2 where indexed_status = 0 and rank_search > rank and ST_DWithin(placex.geometry, placegeom, diameter);
+          ELSEIF rank >= 16 THEN
+            -- up to rank 16, street-less addresses may need reparenting
+            update placex set indexed_status = 2 where indexed_status = 0 and rank_search > rank and ST_DWithin(placex.geometry, placegeom, diameter) and (rank_search < 28 or name is not null or address ? 'place');
+          ELSE
+            -- for all other places the search terms may change as well
+            update placex set indexed_status = 2 where indexed_status = 0 and rank_search > rank and ST_DWithin(placex.geometry, placegeom, diameter) and (rank_search < 28 or name is not null);
+          END IF;
+        END IF;
+    END IF;
+    RETURN TRUE;
+  END IF;
+
+  RETURN FALSE;
+END;
+$$
+LANGUAGE plpgsql;
index 32ac8a3d9b443c78c038bb125e1bcf15f7d4a1fd..63d4677e13a27782ca41b5afd7358b9759240478 100644 (file)
@@ -1,31 +1,26 @@
 -- Indices used only during search and update.
 -- These indices are created only after the indexing process is done.
 
-CREATE INDEX idx_word_word_id on word USING BTREE (word_id) {ts:search-index};
+CREATE INDEX CONCURRENTLY idx_word_word_id on word USING BTREE (word_id) {ts:search-index};
 
-CREATE INDEX idx_search_name_nameaddress_vector ON search_name USING GIN (nameaddress_vector) WITH (fastupdate = off) {ts:search-index};
-CREATE INDEX idx_search_name_name_vector ON search_name USING GIN (name_vector) WITH (fastupdate = off) {ts:search-index};
-CREATE INDEX idx_search_name_centroid ON search_name USING GIST (centroid) {ts:search-index};
+CREATE INDEX CONCURRENTLY idx_place_addressline_address_place_id on place_addressline USING BTREE (address_place_id) {ts:search-index};
 
-CREATE INDEX idx_place_addressline_address_place_id on place_addressline USING BTREE (address_place_id) {ts:search-index};
+DROP INDEX CONCURRENTLY IF EXISTS idx_placex_rank_search;
+CREATE INDEX CONCURRENTLY idx_placex_rank_search ON placex USING BTREE (rank_search) {ts:search-index};
+CREATE INDEX CONCURRENTLY idx_placex_rank_address ON placex USING BTREE (rank_address) {ts:search-index};
+CREATE INDEX CONCURRENTLY idx_placex_parent_place_id ON placex USING BTREE (parent_place_id) {ts:search-index} where parent_place_id IS NOT NULL;
 
-DROP INDEX IF EXISTS idx_placex_rank_search;
-CREATE INDEX idx_placex_rank_search ON placex USING BTREE (rank_search) {ts:search-index};
-CREATE INDEX idx_placex_rank_address ON placex USING BTREE (rank_address) {ts:search-index};
-CREATE INDEX idx_placex_pendingsector ON placex USING BTREE (rank_search,geometry_sector) {ts:address-index} where indexed_status > 0;
-CREATE INDEX idx_placex_parent_place_id ON placex USING BTREE (parent_place_id) {ts:search-index} where parent_place_id IS NOT NULL;
-
-CREATE INDEX idx_placex_geometry_reverse_lookupPoint
+CREATE INDEX CONCURRENTLY idx_placex_geometry_reverse_lookupPoint
   ON placex USING gist (geometry) {ts:search-index}
   WHERE (name is not null or housenumber is not null or rank_address between 26 and 27)
     AND class not in ('railway','tunnel','bridge','man_made')
     AND rank_address >= 26 AND indexed_status = 0 AND linked_place_id is null;
-CREATE INDEX idx_placex_geometry_reverse_lookupPolygon
+CREATE INDEX CONCURRENTLY idx_placex_geometry_reverse_lookupPolygon
   ON placex USING gist (geometry) {ts:search-index}
   WHERE St_GeometryType(geometry) in ('ST_Polygon', 'ST_MultiPolygon')
     AND rank_address between 4 and 25 AND type != 'postcode'
     AND name is not null AND indexed_status = 0 AND linked_place_id is null;
-CREATE INDEX idx_placex_geometry_reverse_placeNode
+CREATE INDEX CONCURRENTLY idx_placex_geometry_reverse_placeNode
   ON placex USING gist (geometry) {ts:search-index}
   WHERE osm_type = 'N' AND rank_search between 5 and 25
     AND class = 'place' AND type != 'postcode'
@@ -33,13 +28,8 @@ CREATE INDEX idx_placex_geometry_reverse_placeNode
 
 GRANT SELECT ON table country_osm_grid to "{www-user}";
 
-CREATE INDEX idx_location_area_country_place_id ON location_area_country USING BTREE (place_id) {ts:address-index};
-
-CREATE INDEX idx_osmline_parent_place_id ON location_property_osmline USING BTREE (parent_place_id) {ts:search-index};
-
-DROP INDEX IF EXISTS place_id_idx;
-CREATE UNIQUE INDEX idx_place_osm_unique on place using btree(osm_id,osm_type,class,type) {ts:address-index};
-
+CREATE INDEX CONCURRENTLY idx_osmline_parent_place_id ON location_property_osmline USING BTREE (parent_place_id) {ts:search-index};
+CREATE INDEX CONCURRENTLY idx_osmline_parent_osm_id ON location_property_osmline USING BTREE (osm_id) {ts:search-index};
 
-CREATE UNIQUE INDEX idx_postcode_id ON location_postcode USING BTREE (place_id) {ts:search-index};
-CREATE INDEX idx_postcode_postcode ON location_postcode USING BTREE (postcode) {ts:search-index};
+CREATE UNIQUE INDEX CONCURRENTLY idx_postcode_id ON location_postcode USING BTREE (place_id) {ts:search-index};
+CREATE INDEX CONCURRENTLY idx_postcode_postcode ON location_postcode USING BTREE (postcode) {ts:search-index};
diff --git a/sql/indices_search.src.sql b/sql/indices_search.src.sql
new file mode 100644 (file)
index 0000000..70cd879
--- /dev/null
@@ -0,0 +1,6 @@
+-- Indices used for /search API.
+-- These indices are created only after the indexing process is done.
+
+CREATE INDEX CONCURRENTLY idx_search_name_nameaddress_vector ON search_name USING GIN (nameaddress_vector) WITH (fastupdate = off) {ts:search-index};
+CREATE INDEX CONCURRENTLY idx_search_name_name_vector ON search_name USING GIN (name_vector) WITH (fastupdate = off) {ts:search-index};
+CREATE INDEX CONCURRENTLY idx_search_name_centroid ON search_name USING GIST (centroid) {ts:search-index};
diff --git a/sql/indices_updates.src.sql b/sql/indices_updates.src.sql
new file mode 100644 (file)
index 0000000..175bfba
--- /dev/null
@@ -0,0 +1,9 @@
+-- Indices used only during search and update.
+-- These indices are created only after the indexing process is done.
+
+CREATE INDEX CONCURRENTLY idx_placex_pendingsector ON placex USING BTREE (rank_search,geometry_sector) {ts:address-index} where indexed_status > 0;
+
+CREATE INDEX CONCURRENTLY idx_location_area_country_place_id ON location_area_country USING BTREE (place_id) {ts:address-index};
+
+DROP INDEX CONCURRENTLY IF EXISTS place_id_idx;
+CREATE UNIQUE INDEX CONCURRENTLY idx_place_osm_unique on place using btree(osm_id,osm_type,class,type) {ts:address-index};
index efb595426fe8d86f9f62bd14568fe0dd7f810627..34b4d390750798cb506f5fe11507535c0c20278e 100644 (file)
@@ -1,3 +1,15 @@
+DROP TYPE IF EXISTS nearfeaturecentr CASCADE;
+CREATE TYPE nearfeaturecentr AS (
+  place_id BIGINT,
+  keywords int[],
+  rank_address smallint,
+  rank_search smallint,
+  distance float,
+  isguess boolean,
+  postcode TEXT,
+  centroid GEOMETRY
+);
+
 create or replace function getNearFeatures(in_partition INTEGER, feature GEOMETRY, maxrank INTEGER, isin_tokens INT[]) RETURNS setof nearfeaturecentr AS $$
 DECLARE
   r nearfeaturecentr%rowtype;
@@ -6,11 +18,10 @@ BEGIN
 -- start
   IF in_partition = -partition- THEN
     FOR r IN 
-      SELECT place_id, keywords, rank_address, rank_search, min(ST_Distance(feature, centroid)) as distance, isguess, postcode, centroid FROM (
-        SELECT * FROM location_area_large_-partition- WHERE ST_Intersects(geometry, feature) and rank_search < maxrank
-        UNION ALL
-        SELECT * FROM location_area_country WHERE ST_Intersects(geometry, feature) and rank_search < maxrank
-      ) as location_area
+      SELECT place_id, keywords, rank_address, rank_search, min(ST_Distance(feature, centroid)) as distance, isguess, postcode, centroid
+      FROM location_area_large_-partition-
+      WHERE ST_Intersects(geometry, feature)
+        AND rank_search < maxrank AND rank_address < maxrank
       GROUP BY place_id, keywords, rank_address, rank_search, isguess, postcode, centroid
       ORDER BY rank_address, isin_tokens && keywords desc, isguess asc,
         ST_Distance(feature, centroid) *
@@ -29,7 +40,7 @@ BEGIN
   RAISE EXCEPTION 'Unknown partition %', in_partition;
 END
 $$
-LANGUAGE plpgsql;
+LANGUAGE plpgsql STABLE;
 
 create or replace function deleteLocationArea(in_partition INTEGER, in_place_id BIGINT, in_rank_search INTEGER) RETURNS BOOLEAN AS $$
 DECLARE
@@ -64,9 +75,9 @@ BEGIN
     RETURN TRUE;
   END IF;
 
-  IF in_rank_search <= 4 THEN
-    INSERT INTO location_area_country (partition, place_id, country_code, keywords, rank_search, rank_address, isguess, centroid, geometry)
-      values (in_partition, in_place_id, in_country_code, in_keywords, in_rank_search, in_rank_address, in_estimate, in_centroid, in_geometry);
+  IF in_rank_search <= 4 and not in_estimate THEN
+    INSERT INTO location_area_country (place_id, country_code, geometry)
+      values (in_place_id, in_country_code, in_geometry);
     RETURN TRUE;
   END IF;
 
@@ -84,75 +95,66 @@ END
 $$
 LANGUAGE plpgsql;
 
-create or replace function getNearestNamedRoadFeature(in_partition INTEGER, point GEOMETRY, isin_token INTEGER[]) 
-  RETURNS setof nearfeature AS $$
+CREATE OR REPLACE FUNCTION getNearestNamedRoadPlaceId(in_partition INTEGER,
+                                                      point GEOMETRY,
+                                                      isin_token INTEGER[])
+  RETURNS BIGINT
+  AS $$
 DECLARE
-  r nearfeature%rowtype;
+  parent BIGINT;
 BEGIN
 
 -- start
   IF in_partition = -partition- THEN
-    FOR r IN 
-      SELECT place_id, name_vector, address_rank, search_rank,
-          ST_Distance(centroid, point) as distance, null as isguess
-          FROM search_name_-partition-
-          WHERE name_vector && isin_token
-          AND ST_DWithin(centroid, point, 0.015)
-          AND search_rank between 26 and 27
-      ORDER BY distance ASC limit 1
-    LOOP
-      RETURN NEXT r;
-    END LOOP;
-    RETURN;
+    SELECT place_id FROM search_name_-partition-
+      INTO parent
+      WHERE name_vector && isin_token
+            AND centroid && ST_Expand(point, 0.015)
+            AND search_rank between 26 and 27
+      ORDER BY ST_Distance(centroid, point) ASC limit 1;
+    RETURN parent;
   END IF;
 -- end
 
   RAISE EXCEPTION 'Unknown partition %', in_partition;
 END
 $$
-LANGUAGE plpgsql;
+LANGUAGE plpgsql STABLE;
 
-create or replace function getNearestNamedPlaceFeature(in_partition INTEGER, point GEOMETRY, isin_token INTEGER[]) 
-  RETURNS setof nearfeature AS $$
+CREATE OR REPLACE FUNCTION getNearestNamedPlacePlaceId(in_partition INTEGER,
+                                                       point GEOMETRY,
+                                                       isin_token INTEGER[])
+  RETURNS BIGINT
+  AS $$
 DECLARE
-  r nearfeature%rowtype;
+  parent BIGINT;
 BEGIN
 
 -- start
   IF in_partition = -partition- THEN
-    FOR r IN 
-      SELECT place_id, name_vector, address_rank, search_rank,
-          ST_Distance(centroid, point) as distance, null as isguess
-          FROM search_name_-partition-
-          WHERE name_vector && isin_token
-          AND ST_DWithin(centroid, point, 0.04)
-          AND search_rank between 16 and 22
-      ORDER BY distance ASC limit 1
-    LOOP
-      RETURN NEXT r;
-    END LOOP;
-    RETURN;
+    SELECT place_id
+      INTO parent
+      FROM search_name_-partition-
+      WHERE name_vector && isin_token
+            AND centroid && ST_Expand(point, 0.04)
+            AND search_rank between 16 and 22
+      ORDER BY ST_Distance(centroid, point) ASC limit 1;
+    RETURN parent;
   END IF;
 -- end
 
   RAISE EXCEPTION 'Unknown partition %', in_partition;
 END
 $$
-LANGUAGE plpgsql;
+LANGUAGE plpgsql STABLE;
 
 
 create or replace function insertSearchName(
-  in_partition INTEGER, in_place_id BIGINT, in_country_code VARCHAR(2), 
-  in_name_vector INTEGER[], in_nameaddress_vector INTEGER[],
-  in_rank_search INTEGER, in_rank_address INTEGER, in_importance FLOAT,
-  in_centroid GEOMETRY, in_geometry GEOMETRY) RETURNS BOOLEAN AS $$
+  in_partition INTEGER, in_place_id BIGINT, in_name_vector INTEGER[],
+  in_rank_search INTEGER, in_rank_address INTEGER, in_geometry GEOMETRY)
+RETURNS BOOLEAN AS $$
 DECLARE
 BEGIN
-
-  DELETE FROM search_name WHERE place_id = in_place_id;
-  INSERT INTO search_name (place_id, search_rank, address_rank, importance, country_code, name_vector, nameaddress_vector, centroid)
-    values (in_place_id, in_rank_search, in_rank_address, in_importance, in_country_code, in_name_vector, in_nameaddress_vector, in_centroid);
-
 -- start
   IF in_partition = -partition- THEN
     DELETE FROM search_name_-partition- values WHERE place_id = in_place_id;
@@ -173,9 +175,6 @@ LANGUAGE plpgsql;
 create or replace function deleteSearchName(in_partition INTEGER, in_place_id BIGINT) RETURNS BOOLEAN AS $$
 DECLARE
 BEGIN
-
-  DELETE from search_name WHERE place_id = in_place_id;
-
 -- start
   IF in_partition = -partition- THEN
     DELETE from search_name_-partition- WHERE place_id = in_place_id;
@@ -228,48 +227,50 @@ END
 $$
 LANGUAGE plpgsql;
 
-create or replace function getNearestRoadFeature(in_partition INTEGER, point GEOMETRY) RETURNS setof nearfeature AS $$
+CREATE OR REPLACE FUNCTION getNearestRoadPlaceId(in_partition INTEGER, point GEOMETRY)
+  RETURNS BIGINT
+  AS $$
 DECLARE
-  r nearfeature%rowtype;
-  search_diameter FLOAT;  
+  r RECORD;
+  search_diameter FLOAT;
 BEGIN
 
 -- start
   IF in_partition = -partition- THEN
     search_diameter := 0.00005;
     WHILE search_diameter < 0.1 LOOP
-      FOR r IN 
-        SELECT place_id, null, null, null,
-            ST_Distance(geometry, point) as distance, null as isguess
-            FROM location_road_-partition-
-            WHERE ST_DWithin(geometry, point, search_diameter) 
-        ORDER BY distance ASC limit 1
+      FOR r IN
+        SELECT place_id FROM location_road_-partition-
+          WHERE ST_DWithin(geometry, point, search_diameter)
+          ORDER BY ST_Distance(geometry, point) ASC limit 1
       LOOP
-        RETURN NEXT r;
-        RETURN;
+        RETURN r.place_id;
       END LOOP;
       search_diameter := search_diameter * 2;
     END LOOP;
-    RETURN;
+    RETURN NULL;
   END IF;
 -- end
 
   RAISE EXCEPTION 'Unknown partition %', in_partition;
 END
 $$
-LANGUAGE plpgsql;
+LANGUAGE plpgsql STABLE;
 
-create or replace function getNearestParellelRoadFeature(in_partition INTEGER, line GEOMETRY) RETURNS setof nearfeature AS $$
+CREATE OR REPLACE FUNCTION getNearestParallelRoadFeature(in_partition INTEGER,
+                                                         line GEOMETRY)
+  RETURNS BIGINT
+  AS $$
 DECLARE
-  r nearfeature%rowtype;
-  search_diameter FLOAT;  
+  r RECORD;
+  search_diameter FLOAT;
   p1 GEOMETRY;
   p2 GEOMETRY;
   p3 GEOMETRY;
 BEGIN
 
-  IF st_geometrytype(line) not in ('ST_LineString') THEN
-    RETURN;
+  IF ST_GeometryType(line) not in ('ST_LineString') THEN
+    RETURN NULL;
   END IF;
 
   p1 := ST_LineInterpolatePoint(line,0);
@@ -280,25 +281,22 @@ BEGIN
   IF in_partition = -partition- THEN
     search_diameter := 0.0005;
     WHILE search_diameter < 0.01 LOOP
-      FOR r IN 
-        SELECT place_id, null, null, null,
-            ST_Distance(geometry, line) as distance, null as isguess
-            FROM location_road_-partition-
-            WHERE ST_DWithin(line, geometry, search_diameter)
-            ORDER BY (ST_distance(geometry, p1)+
-                      ST_distance(geometry, p2)+
-                      ST_distance(geometry, p3)) ASC limit 1
+      FOR r IN
+        SELECT place_id FROM location_road_-partition-
+          WHERE ST_DWithin(line, geometry, search_diameter)
+          ORDER BY (ST_distance(geometry, p1)+
+                    ST_distance(geometry, p2)+
+                    ST_distance(geometry, p3)) ASC limit 1
       LOOP
-        RETURN NEXT r;
-        RETURN;
+        RETURN r.place_id;
       END LOOP;
       search_diameter := search_diameter * 2;
     END LOOP;
-    RETURN;
+    RETURN NULL;
   END IF;
 -- end
 
   RAISE EXCEPTION 'Unknown partition %', in_partition;
 END
 $$
-LANGUAGE plpgsql;
+LANGUAGE plpgsql STABLE;
index 20dafcd754f3c54888bc58ee1445d507f0954715..8749243e5f8fb94402685d52463912cd1253a1bf 100644 (file)
@@ -1,30 +1,3 @@
-drop type if exists nearplace cascade;
-create type nearplace as (
-  place_id BIGINT
-);
-
-drop type if exists nearfeature cascade;
-create type nearfeature as (
-  place_id BIGINT,
-  keywords int[],
-  rank_address smallint,
-  rank_search smallint,
-  distance float,
-  isguess boolean
-);
-
-drop type if exists nearfeaturecentr cascade;
-create type nearfeaturecentr as (
-  place_id BIGINT,
-  keywords int[],
-  rank_address smallint,
-  rank_search smallint,
-  distance float,
-  isguess boolean,
-  postcode TEXT,
-  centroid GEOMETRY
-);
-
 drop table IF EXISTS search_name_blank CASCADE;
 CREATE TABLE search_name_blank (
   place_id BIGINT,
@@ -35,9 +8,6 @@ CREATE TABLE search_name_blank (
   );
 
 
-CREATE TABLE location_area_country () INHERITS (location_area_large) {ts:address-data};
-CREATE INDEX idx_location_area_country_geometry ON location_area_country USING GIST (geometry) {ts:address-index};
-
 -- start
 CREATE TABLE location_area_large_-partition- () INHERITS (location_area_large) {ts:address-data};
 CREATE INDEX idx_location_area_large_-partition-_place_id ON location_area_large_-partition- USING BTREE (place_id) {ts:address-index};
@@ -45,8 +15,8 @@ CREATE INDEX idx_location_area_large_-partition-_geometry ON location_area_large
 
 CREATE TABLE search_name_-partition- () INHERITS (search_name_blank) {ts:address-data};
 CREATE INDEX idx_search_name_-partition-_place_id ON search_name_-partition- USING BTREE (place_id) {ts:address-index};
-CREATE INDEX idx_search_name_-partition-_centroid ON search_name_-partition- USING GIST (centroid) {ts:address-index};
-CREATE INDEX idx_search_name_-partition-_name_vector ON search_name_-partition- USING GIN (name_vector) WITH (fastupdate = off) {ts:address-index};
+CREATE INDEX idx_search_name_-partition-_centroid_street ON search_name_-partition- USING GIST (centroid) {ts:address-index} where search_rank between 26 and 27;
+CREATE INDEX idx_search_name_-partition-_centroid_place ON search_name_-partition- USING GIST (centroid) {ts:address-index} where search_rank between 2 and 25;
 
 DROP TABLE IF EXISTS location_road_-partition-;
 CREATE TABLE location_road_-partition- (
diff --git a/sql/table-triggers.sql b/sql/table-triggers.sql
new file mode 100644 (file)
index 0000000..5bf895a
--- /dev/null
@@ -0,0 +1,22 @@
+-- insert creates the location tables, creates location indexes if indexed == true
+CREATE TRIGGER placex_before_insert BEFORE INSERT ON placex
+    FOR EACH ROW EXECUTE PROCEDURE placex_insert();
+CREATE TRIGGER osmline_before_insert BEFORE INSERT ON location_property_osmline
+    FOR EACH ROW EXECUTE PROCEDURE osmline_insert();
+
+-- update insert creates the location tables
+CREATE TRIGGER placex_before_update BEFORE UPDATE ON placex
+    FOR EACH ROW EXECUTE PROCEDURE placex_update();
+CREATE TRIGGER osmline_before_update BEFORE UPDATE ON location_property_osmline
+    FOR EACH ROW EXECUTE PROCEDURE osmline_update();
+
+-- diff update triggers
+CREATE TRIGGER placex_before_delete AFTER DELETE ON placex
+    FOR EACH ROW EXECUTE PROCEDURE placex_delete();
+CREATE TRIGGER place_before_delete BEFORE DELETE ON place
+    FOR EACH ROW EXECUTE PROCEDURE place_delete();
+CREATE TRIGGER place_before_insert BEFORE INSERT ON place
+    FOR EACH ROW EXECUTE PROCEDURE place_insert();
+
+CREATE TRIGGER location_postcode_before_update BEFORE UPDATE ON location_postcode
+    FOR EACH ROW EXECUTE PROCEDURE postcode_update();
index 4a22a814feab17140a2af2b0f994fa9bfb0b1935..cf51cbe68b058ca6b066d2da226bc42271d9a486 100644 (file)
@@ -10,7 +10,7 @@ drop table if exists import_osmosis_log;
 CREATE TABLE import_osmosis_log (
   batchend timestamp,
   batchseq integer,
-  batchsize integer,
+  batchsize bigint,
   starttime timestamp,
   endtime timestamp,
   event text
@@ -36,6 +36,7 @@ GRANT SELECT ON new_query_log TO "{www-user}" ;
 
 GRANT SELECT ON TABLE country_name TO "{www-user}";
 GRANT SELECT ON TABLE gb_postcode TO "{www-user}";
+GRANT SELECT ON TABLE us_postcode TO "{www-user}";
 
 drop table IF EXISTS word;
 CREATE TABLE word (
@@ -69,6 +70,15 @@ CREATE TABLE location_area (
 
 CREATE TABLE location_area_large () INHERITS (location_area);
 
+DROP TABLE IF EXISTS location_area_country;
+CREATE TABLE location_area_country (
+  place_id BIGINT,
+  country_code varchar(2),
+  geometry GEOMETRY(Geometry, 4326)
+  ) {ts:address-data};
+CREATE INDEX idx_location_area_country_geometry ON location_area_country USING GIST (geometry) {ts:address-index};
+
+
 drop table IF EXISTS location_property CASCADE;
 CREATE TABLE location_property (
   place_id BIGINT,
@@ -166,7 +176,8 @@ CREATE INDEX idx_placex_osmid ON placex USING BTREE (osm_type, osm_id) {ts:searc
 CREATE INDEX idx_placex_linked_place_id ON placex USING BTREE (linked_place_id) {ts:address-index} WHERE linked_place_id IS NOT NULL;
 CREATE INDEX idx_placex_rank_search ON placex USING BTREE (rank_search, geometry_sector) {ts:address-index};
 CREATE INDEX idx_placex_geometry ON placex USING GIST (geometry) {ts:search-index};
-CREATE INDEX idx_placex_adminname on placex USING BTREE (make_standard_name(name->'name'),rank_search) {ts:address-index} WHERE osm_type='N' and rank_search < 26;
+CREATE INDEX idx_placex_adminname on placex USING BTREE (make_standard_name(name->'name')) {ts:address-index} WHERE osm_type='N' and rank_search < 26;
+CREATE INDEX idx_placex_wikidata on placex USING BTREE ((extratags -> 'wikidata')) {ts:address-index} WHERE extratags ? 'wikidata' and class = 'place' and osm_type = 'N' and rank_search < 26;
 
 DROP SEQUENCE IF EXISTS seq_place;
 CREATE SEQUENCE seq_place start 1;
@@ -178,26 +189,6 @@ GRANT SELECT ON planet_osm_ways to "{www-user}" ;
 GRANT SELECT ON planet_osm_rels to "{www-user}" ;
 GRANT SELECT on location_area to "{www-user}" ;
 
--- insert creates the location tables, creates location indexes if indexed == true
-CREATE TRIGGER placex_before_insert BEFORE INSERT ON placex
-    FOR EACH ROW EXECUTE PROCEDURE placex_insert();
-CREATE TRIGGER osmline_before_insert BEFORE INSERT ON location_property_osmline
-    FOR EACH ROW EXECUTE PROCEDURE osmline_insert();
-
--- update insert creates the location tables
-CREATE TRIGGER placex_before_update BEFORE UPDATE ON placex
-    FOR EACH ROW EXECUTE PROCEDURE placex_update();
-CREATE TRIGGER osmline_before_update BEFORE UPDATE ON location_property_osmline
-    FOR EACH ROW EXECUTE PROCEDURE osmline_update();
-
--- diff update triggers
-CREATE TRIGGER placex_before_delete AFTER DELETE ON placex
-    FOR EACH ROW EXECUTE PROCEDURE placex_delete();
-CREATE TRIGGER place_before_delete BEFORE DELETE ON place
-    FOR EACH ROW EXECUTE PROCEDURE place_delete();
-CREATE TRIGGER place_before_insert BEFORE INSERT ON place
-    FOR EACH ROW EXECUTE PROCEDURE place_insert();
-
 -- Table for synthetic postcodes.
 DROP TABLE IF EXISTS location_postcode;
 CREATE TABLE location_postcode (
@@ -214,9 +205,6 @@ CREATE TABLE location_postcode (
 CREATE INDEX idx_postcode_geometry ON location_postcode USING GIST (geometry) {ts:address-index};
 GRANT SELECT ON location_postcode TO "{www-user}" ;
 
-CREATE TRIGGER location_postcode_before_update BEFORE UPDATE ON location_postcode
-    FOR EACH ROW EXECUTE PROCEDURE postcode_update();
-
 DROP TABLE IF EXISTS import_polygon_error;
 CREATE TABLE import_polygon_error (
   osm_id BIGINT,
@@ -258,7 +246,9 @@ CREATE TABLE wikipedia_article (
     lon double precision,
     importance double precision,
     osm_type character(1),
-    osm_id bigint
+    osm_id bigint,
+    wd_page_title text,
+    instance_of text
 );
 ALTER TABLE ONLY wikipedia_article ADD CONSTRAINT wikipedia_article_pkey PRIMARY KEY (language, title);
 CREATE INDEX idx_wikipedia_article_osm_id ON wikipedia_article USING btree (osm_type, osm_id);
index 5acb3e59d6a9e73cdcdf2a894b27ab8bba25b6ac..4b9c33fcbcb5e7650729e1ea34102e056ddf0af4 100644 (file)
@@ -2,7 +2,7 @@ DROP TABLE IF EXISTS location_property_tiger_import;
 CREATE TABLE location_property_tiger_import (linegeo GEOMETRY, place_id BIGINT, partition INTEGER, parent_place_id BIGINT, startnumber INTEGER, endnumber INTEGER, interpolationtype TEXT, postcode TEXT);
 
 CREATE OR REPLACE FUNCTION tiger_line_import(linegeo GEOMETRY, in_startnumber INTEGER, 
-  in_endnumber INTEGER, interpolationtype TEXT, 
+  in_endnumber INTEGER, interpolationtype TEXT,
   in_street TEXT, in_isin TEXT, in_postcode TEXT) RETURNS INTEGER
   AS $$
 DECLARE
@@ -14,7 +14,7 @@ DECLARE
   out_partition INTEGER;
   out_parent_place_id BIGINT;
   location RECORD;
-  address_street_word_id INTEGER;  
+  address_street_word_ids INTEGER[];
 
 BEGIN
 
@@ -26,6 +26,11 @@ BEGIN
     endnumber = in_startnumber;
   END IF;
 
+  IF startnumber < 0 THEN
+    RAISE WARNING 'Negative house number range (% to %) on %, %', startnumber, endnumber, in_street, in_isin;
+    RETURN 0;
+  END IF;
+
   numberrange := endnumber - startnumber;
 
   IF (interpolationtype = 'odd' AND startnumber%2 = 0) OR (interpolationtype = 'even' AND startnumber%2 = 1) THEN
@@ -51,23 +56,20 @@ BEGIN
   out_partition := get_partition('us');
   out_parent_place_id := null;
 
-  address_street_word_id := get_name_id(make_standard_name(in_street));
-  IF address_street_word_id IS NOT NULL THEN
-    FOR location IN SELECT * from getNearestNamedRoadFeature(out_partition, place_centroid, ARRAY[address_street_word_id]) LOOP
-      out_parent_place_id := location.place_id;
-    END LOOP;
+  address_street_word_ids := word_ids_from_name(in_street);
+  IF address_street_word_ids IS NOT NULL THEN
+    out_parent_place_id := getNearestNamedRoadPlaceId(out_partition, place_centroid,
+                                                      address_street_word_ids);
   END IF;
 
   IF out_parent_place_id IS NULL THEN
-    FOR location IN SELECT place_id FROM getNearestParellelRoadFeature(out_partition, linegeo) LOOP
-      out_parent_place_id := location.place_id;
-    END LOOP;    
+    SELECT getNearestParallelRoadFeature(out_partition, linegeo)
+      INTO out_parent_place_id;
   END IF;
 
   IF out_parent_place_id IS NULL THEN
-    FOR location IN SELECT place_id FROM getNearestRoadFeature(out_partition, place_centroid) LOOP
-      out_parent_place_id := location.place_id;
-    END LOOP;    
+    SELECT getNearestRoadPlaceId(out_partition, place_centroid)
+      INTO out_parent_place_id;
   END IF;
 
 --insert street(line) into import table
index a90abe25471ce5d62c12b8e4cd485e75632e1b3a..d59df15b67565cc4061aabba4a34d925f6e8111a 100644 (file)
@@ -6,7 +6,7 @@ SELECT country_code,
        ST_Centroid(ST_Collect(ST_Centroid(geometry))) as centroid
   FROM placex
  WHERE address ? 'postcode'
-       AND address->'postcode' NOT SIMILAR TO '%(,|;)%'
+       AND address->'postcode' NOT SIMILAR TO '%(,|;|:)%'
        AND geometry IS NOT null
 GROUP BY country_code, pc;
 
@@ -48,5 +48,11 @@ INSERT INTO location_postcode
   SELECT nextval('seq_place'), 1, country_code, pc, centroid
     FROM tmp_new_postcode_locations new;
 
+-- Remove unused word entries
+DELETE FROM word
+    WHERE class = 'place' AND type = 'postcode'
+          AND NOT EXISTS (SELECT 0 FROM location_postcode p
+                          WHERE p.postcode = word.word);
+
 -- Finally index the newly inserted postcodes
 UPDATE location_postcode SET indexed_status = 0 WHERE indexed_status > 0;
diff --git a/test/Makefile b/test/Makefile
new file mode 100644 (file)
index 0000000..0355a17
--- /dev/null
@@ -0,0 +1,9 @@
+all: bdd php
+
+bdd:
+       cd bdd && behave -DREMOVE_TEMPLATE=1
+
+php:
+       cd php && phpunit ./
+
+.PHONY: bdd php
index 0487fd404da664e8f3a5891f36306c509cc7ac40..1f7a33ca47f5b1c5d4ca541a4113ec860733da82 100644 (file)
@@ -46,11 +46,13 @@ Very low coverage.
 To execute the test suite run
 
     cd test/php
-    phpunit ../
+    UNIT_TEST_DSN='pgsql:dbname=nominatim_unit_tests' phpunit ../
 
 It will read phpunit.xml which points to the library, test path, bootstrap
 strip and set other parameters.
 
+It will use (and destroy) a local database 'nominatim_unit_tests'. You can set
+a different connection string with e.g. UNIT_TEST_DSN='pgsql:dbname=foo_unit_tests'.
 
 BDD Functional Tests
 ====================
@@ -66,18 +68,19 @@ To run the functional tests, do
     cd test/bdd
     behave
 
-The tests can be configured with a set of environment variables:
+The tests can be configured with a set of environment variables (`behave -D key=val`):
 
- * `BUILD_DIR` - build directory of Nominatim installation to test
+ * `BUILDDIR` - build directory of Nominatim installation to test
  * `TEMPLATE_DB` - name of template database used as a skeleton for
                    the test databases (db tests)
  * `TEST_DB` - name of test database (db tests)
- * `ABI_TEST_DB` - name of the database containing the API test data (api tests)
+ * `API_TEST_DB` - name of the database containing the API test data (api tests)
  * `DB_HOST` - (optional) hostname of database host
+ * `DB_PORT` - (optional) port of database on host
  * `DB_USER` - (optional) username of database login
  * `DB_PASS` - (optional) password for database login
  * `SERVER_MODULE_PATH` - (optional) path on the Postgres server to Nominatim
*                        module shared library file
                         module shared library file
  * `TEST_SETTINGS_TEMPLATE` - file to write temporary Nominatim settings to
  * `REMOVE_TEMPLATE` - if true, the template database will not be reused during
                        the next run. Reusing the base templates speeds up tests
@@ -107,18 +110,25 @@ They require a preimported test database, which consists of the import of a
 planet extract. A precompiled PBF with the necessary data can be downloaded from
 https://www.nominatim.org/data/test/nominatim-api-testdata.pbf
 
+You need at least 2GB RAM and 10GB discspace.
+
 The polygons defining the extract can be found in the test/testdb
 directory. There is also a reduced set of wikipedia data for this extract,
 which you need to import as well. For Tiger tests the data of South Dakota
 is required. Get the Tiger files `46*`.
 
-The official test dataset is derived from the 160725 planet. Newer
+    cd Nominatim/data
+    wget https://nominatim.org/data/tiger2018-nominatim-preprocessed.tar.gz
+    tar xvf tiger2018-nominatim-preprocessed.tar.gz --wildcards --no-anchored '46*'
+    rm tiger2018-nominatim-preprocessed.tar.gz
+
+The official test dataset is derived from the 180924 planet. Newer
 planets are likely to work as well but you may see isolated test
 failures where the data has changed. To recreate the input data
 for the test database run:
 
-    wget https://free.nchc.org.tw/osm.planet/pbf/planet-160725.osm.pbf
-    osmconvert planet-160725.osm.pbf -B=test/testdb/testdb.polys -o=testdb.pbf
+    wget https://ftp5.gwdg.de/pub/misc/openstreetmap/planet.openstreetmap.org/pbf/planet-180924.osm.pbf
+    osmconvert planet-180924.osm.pbf -B=test/testdb/testdb.polys -o=testdb.pbf
 
 Before importing make sure to add the following to your local settings:
 
index a50e53cfbd74c9485862ba3688108abf9f05d824..6bab1bc790ba649f7e72e50d0f04b28a0500001e 100644 (file)
@@ -34,3 +34,10 @@ Feature: Object details
             | 1 |
         Then the result is valid html
 
+    # ticket #1343
+    Scenario: Details of a country with keywords
+        When sending details query for R287072
+            | keywords |
+            | 1 |
+        Then the result is valid html
+
diff --git a/test/bdd/api/errors/formats.feature b/test/bdd/api/errors/formats.feature
new file mode 100644 (file)
index 0000000..8a8e656
--- /dev/null
@@ -0,0 +1,13 @@
+@APIDB
+Feature: Places by osm_type and osm_id Tests
+    Simple tests for errors in various response formats.
+
+    Scenario Outline: Force error by providing too many ids
+        When sending <format> lookup query for N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15,N16,N17,N18,N19,N20,N21,N22,N23,N24,N25,N26,N27,N28,N29,N30,N31,N32,N33,N34,N35,N36,N37,N38,N39,N40,N41,N42,N43,N44,N45,N46,N47,N48,N49,N50,N51
+        Then a <format> user error is returned
+
+    Examples:
+        | format  |
+        | xml     |
+        | json    |
+        | geojson |
index e29812e0123b15b4364afd506f1029ab65a744c3..53b222a00743c520b2b10e94670c352f266b8cd8 100644 (file)
@@ -1,18 +1,33 @@
 @APIDB
 Feature: Places by osm_type and osm_id Tests
-    Simple tests for internal server errors and response format.
+    Simple tests for response format.
 
     Scenario Outline: address lookup for existing node, way, relation
         When sending <format> lookup query for N3284625766,W6065798,,R123924,X99,N0
-        Then the result is valid <format>
+        Then the result is valid <outformat>
         And exactly 3 results are returned
 
     Examples:
-        | format  |
-        | xml     |
-        | json    |
-        | geojson |
+        | format      | outformat   |
+        | xml         | xml         |
+        | json        | json        |
+        | jsonv2      | json        |
+        | geojson     | geojson     |
+        | geocodejson | geocodejson |
 
     Scenario: address lookup for non-existing or invalid node, way, relation
         When sending xml lookup query for X99,,N0,nN158845944,ABC,,W9
         Then exactly 0 results are returned
+
+    Scenario Outline: Boundingbox is returned
+        When sending <format> lookup query for N3284625766,W6065798
+        Then exactly 2 results are returned
+        And result 0 has bounding box in -32.812,-32.811,-56.509,-56.508
+        And result 1 has bounding box in 47.14,47.15,9.51,9.53
+
+    Examples:
+      | format |
+      | json |
+      | jsonv2 |
+      | geojson |
+      | xml |
diff --git a/test/bdd/api/reverse/addressdetails.feature b/test/bdd/api/reverse/addressdetails.feature
new file mode 100644 (file)
index 0000000..5aa3846
--- /dev/null
@@ -0,0 +1,10 @@
+@APIDB
+Feature: Reverse addressdetails
+    Tests for addressdetails in reverse queries
+
+    #github #1763
+    Scenario: Correct translation of highways under construction
+        When sending jsonv2 reverse coordinates -34.0290514,-53.5832235
+        Then result addresses contain
+        | road |
+        | Ruta 9 Coronel Leonardo Olivera |
diff --git a/test/bdd/api/reverse/geocodejson.feature b/test/bdd/api/reverse/geocodejson.feature
new file mode 100644 (file)
index 0000000..44f8288
--- /dev/null
@@ -0,0 +1,27 @@
+@APIDB
+Feature: Parameters for Reverse API
+    Testing correctness of geocodejson output.
+
+    Scenario: City housenumber-level address with street
+        When sending geocodejson reverse coordinates 53.556,9.9607
+        Then results contain
+          | housenumber | street           | postcode | city    | country |
+          | 10          | Brunnenhofstraße | 22767    | Hamburg | Deutschland | 
+
+    Scenario: Town street-level address with street
+        When sending geocodejson reverse coordinates 47.066,9.504
+        Then results contain
+          | name    | city    | postcode | country |
+          | Gnetsch | Balzers | 9496     | Liechtenstein |
+
+    Scenario: Poi street-level address with footway
+        When sending geocodejson reverse coordinates 47.0653,9.5007
+        Then results contain
+          | street  | city    | postcode | country |
+          | Burgweg | Balzers | 9496     | Liechtenstein |
+
+    Scenario: City address with suburb
+        When sending geocodejson reverse coordinates 53.5822,10.0805
+        Then results contain
+          | housenumber | street                | district | city    | postcode | country |
+          | 64          | Hinschenfelder Straße | Wandsbek | Hamburg | 22047    | Deutschland |
index 9bde2d4e7eafcf59862c052674adf93a24d14374..9ead4e020289399f0b9f9e2ce6125c2c87ec7a53 100644 (file)
@@ -5,7 +5,7 @@ Feature: Localization of reverse search results
         When sending json reverse coordinates 18.1147,-15.95
         Then result addresses contain
           | ID | country |
-          | 0  | Mauritanie موريتانيا |
+          | 0  | موريتانيا |
 
     Scenario: accept-language parameter
         When sending json reverse coordinates 18.1147,-15.95
index f78c4c6a19b6d8ceb6d73c16957dd5462a3b3beb..2a5821e4c3e1385ed11e391ee93378e2b065107f 100644 (file)
@@ -63,18 +63,6 @@ Feature: Parameters for Reverse API
         | json     | geotext |
         | jsonv2   | geotext |
 
-    Scenario Outline: Reverse Geocoding contains polygon-as-points geometry
-        When sending <format> reverse coordinates 47.165989816710066,9.515774846076965
-          | polygon |
-          | 1 |
-        Then result 0 has not attributes <response_attribute>
-
-    Examples:
-        | format   | response_attribute |
-        | xml      | polygonpoints |
-        | json     | polygonpoints |
-        | jsonv2   | polygonpoints |
-
     Scenario Outline: Reverse Geocoding contains SVG geometry
         When sending <format> reverse coordinates 47.165989816710066,9.515774846076965
           | polygon_svg |
@@ -114,8 +102,8 @@ Feature: Parameters for Reverse API
 
     Scenario Outline: Reverse Geocoding in geojson format contains no non-geojson geometry
         When sending geojson reverse coordinates 47.165989816710066,9.515774846076965
-          | polygon_text | polygon | polygon_svg | polygon_geokml |
-          | 1            | 1       | 1           | 1              |
+          | polygon_text | polygon_svg | polygon_geokml |
+          | 1            | 1           | 1              |
         Then result 0 has not attributes <response_attribute>
 
     Examples:
@@ -124,4 +112,3 @@ Feature: Parameters for Reverse API
         | polygonpoints      |
         | svg                |
         | geokml             |
-
index 88f3bccbc34756e3b7b8284a541d14d323012864..8fbe552c6255a928758691d6ec8f0ca577394485 100644 (file)
@@ -10,7 +10,7 @@ Feature: Reverse geocoding
           | way      | place    | house |
         And result addresses contain
           | house_number | road            | postcode | country_code |
-          | 906          | West 1st Street | 57274    | us |
+          | 909          | West 1st Street | 57274    | us |
 
     @Tiger
     Scenario: No TIGER house number for zoom < 18
@@ -31,7 +31,7 @@ Feature: Reverse geocoding
           | way      | place    | house |
         And result addresses contain
           | house_number | road |
-          | 1410         | Juan Antonio Lavalleja |
+          | 1416         | Juan Antonio Lavalleja |
 
     Scenario: Address with non-numerical house number
         When sending jsonv2 reverse coordinates 53.579805460944,9.9475670458196
@@ -50,7 +50,7 @@ Feature: Reverse geocoding
         When sending jsonv2 reverse coordinates 54.046489113,8.5546870529
         Then results contain
          | display_name |
-         | Freie und Hansestadt Hamburg, Deutschland |
+         | Hamburg, Deutschland |
 
     Scenario: When slightly outside town, the town is not shown
         When sending jsonv2 reverse coordinates -32.122,-56.114
index ccd0becdbb8a837fa62dd64e0b66481ee98ca276..b07989eccf09ca6e66cbd0976f75cc3a4e7a2d72 100644 (file)
@@ -55,8 +55,6 @@ Feature: Simple Reverse Tests
 
     Examples:
      | parameter        | value |
-     | polygon          | 1 |
-     | polygon          | 0 |
      | polygon_text     | 1 |
      | polygon_text     | 0 |
      | polygon_kml      | 1 |
diff --git a/test/bdd/api/search/geocodejson.feature b/test/bdd/api/search/geocodejson.feature
new file mode 100644 (file)
index 0000000..52c535b
--- /dev/null
@@ -0,0 +1,27 @@
+@APIDB
+Feature: Parameters for Search API
+    Testing correctness of geocodejson output.
+
+    Scenario: City housenumber-level address with street
+        When sending geocodejson search query "Brunnenhofstr 10, Hamburg" with address
+        Then results contain
+          | housenumber | street           | postcode | city    | country |
+          | 10          | Brunnenhofstraße | 22767    | Hamburg | Deutschland | 
+
+    Scenario: Town street-level address with street
+        When sending geocodejson search query "Gnetsch, Balzers" with address
+        Then results contain
+          | name    | city    | postcode | country |
+          | Gnetsch | Balzers | 9496     | Liechtenstein |
+
+    Scenario: Town street-level address with footway
+        When sending geocodejson search query "burg gutenberg 6000 jahre geschichte" with address
+        Then results contain
+          | street  | city    | postcode | country |
+          | Burgweg | Balzers | 9496     | Liechtenstein |
+
+    Scenario: City address with suburb
+        When sending geocodejson search query "hinschenfelder str 64, wandsbek" with address
+        Then results contain
+          | housenumber | street                | district | city    | postcode | country |
+          | 64          | Hinschenfelder Straße | Wandsbek | Hamburg | 22047    | Deutschland |
index feacd5f95586bf3ba1d6b489144c4b4842762f9d..6ba22d03a0c56fbb7294104bf286cde7e79982c8 100644 (file)
@@ -51,7 +51,7 @@ Feature: Search queries
           | en |
         Then results contain
           | display_name |
-          | Plei Ya Rê, Kon Tum province, Vietnam |
+          | Plei Ya Rê, Vietnam |
 
     Scenario: Address details with unknown class types
         When sending json search query "Hundeauslauf, Hamburg" with address
@@ -119,13 +119,13 @@ Feature: Search queries
           | en |
         Then result addresses contain
           | ID | state |
-          | 0  | Salto |
+          | 0  | Florida |
         When sending json search query "25 de Mayo" with address
           | accept-language | viewbox |
-          | en              | -56.35879,-34.18330,-56.31618,-34.20815 |
+          | en              | -57.95468,-31.39261,-57.94741,-31.39490 |
         Then result addresses contain
           | ID | state |
-          | 0  | Florida |
+          | 0  | Salto |
 
     Scenario: viewboxes cannot be points
         When sending json search query "foo"
@@ -303,18 +303,6 @@ Feature: Search queries
         | json     | geotext |
         | jsonv2   | geotext |
 
-    Scenario Outline: Search result contains polygon-as-points geometry
-        When sending <format> search query "Highmore"
-          | polygon |
-          | 1 |
-        Then result has attributes <response_attribute>
-
-    Examples:
-        | format   | response_attribute |
-        | xml      | polygonpoints |
-        | json     | polygonpoints |
-        | jsonv2   | polygonpoints |
-
     Scenario Outline: Search result contains SVG geometry
         When sending <format> search query "Highmore"
           | polygon_svg |
@@ -354,8 +342,8 @@ Feature: Search queries
 
     Scenario Outline: Search result in geojson format contains no non-geojson geometry
         When sending geojson search query "Highmore"
-          | polygon_text | polygon | polygon_svg | polygon_geokml |
-          | 1            | 1       | 1           | 1              |
+          | polygon_text | polygon_svg | polygon_geokml |
+          | 1            | 1           | 1              |
         Then result 0 has not attributes <response_attribute>
 
     Examples:
index 63c8646946cb2d1170879b17c6ff0a9268340650..e70495f63890f15c958bb75a86ec072963fca68f 100644 (file)
@@ -26,6 +26,18 @@ Feature: Searches with postcodes
             | country_code |
             | li           |
 
+    Scenario: Postcode search with bounded viewbox restriction
+        When sending json search query "9486" with address
+          | bounded | viewbox |
+          | 1       | 9.55,47.20,9.58,47.22 |
+        Then result addresses contain
+            | postcode |
+            | 9486     |
+        When sending json search query "9486" with address
+          | bounded | viewbox                 |
+          | 1       | 5.00,20.00,6.00,21.00 |
+        Then exactly 0 results are returned
+
     Scenario: Postcode search with structured query
         When sending json search query "" with address
             | postalcode | country |
index 5ef8f7ed8bbf9139f4edfef88238089734fb5f87..57ae2c2038383349e8b7404e0017ca1cedd1455a 100644 (file)
@@ -10,6 +10,7 @@ Feature: Search queries
           | type         | value |
           | house_number | 2 |
           | hamlet       | Steinwald |
+          | village      | Göfis |
           | postcode     | 6811 |
           | country      | Austria |
           | country_code | at |
@@ -19,30 +20,30 @@ Feature: Search queries
           | accept-language |
           | de |
         Then address of result 0 is
-          | type         | value |
-          | house_number | 86 |
-          | road         | Schellingstraße |
-          | suburb       | Eilbek |
-          | postcode     | 22089 |
-          | city_district | Wandsbek |
-          | state        | Hamburg |
-          | country      | Deutschland |
-          | country_code | de |
+          | type          | value |
+          | house_number  | 86 |
+          | road          | Schellingstraße |
+          | neighbourhood | Auenviertel |
+          | suburb        | Eilbek |
+          | postcode      | 22089 |
+          | city          | Hamburg |
+          | country       | Deutschland |
+          | country_code  | de |
 
     Scenario: House number interpolation odd
         When sending json search query "Schellingstr 73, Hamburg" with address
           | accept-language |
           | de |
         Then address of result 0 is
-          | type         | value |
-          | house_number | 73 |
-          | road         | Schellingstraße |
-          | suburb       | Eilbek |
-          | postcode     | 22089 |
-          | city_district | Wandsbek |
-          | state        | Hamburg |
-          | country      | Deutschland |
-          | country_code | de |
+          | type          | value |
+          | house_number  | 73 |
+          | road          | Schellingstraße |
+          | neighbourhood | Auenviertel |
+          | suburb        | Eilbek |
+          | postcode      | 22089 |
+          | city          | Hamburg |
+          | country       | Deutschland |
+          | country_code  | de |
 
     Scenario: With missing housenumber search falls back to road
         When sending json search query "342 rocha, santa lucia" with address
@@ -55,6 +56,22 @@ Feature: Search queries
           | country      | Uruguay |
           | country_code | uy |
 
+    Scenario Outline: Housenumber 0 can be found
+        When sending <format> search query "Pham Hung Road 0" with address
+        Then results contain
+          | display_name |
+          | ^.*, 0,.* |
+        And result addresses contain
+          | house_number |
+          | 0     |
+
+    Examples:
+        | format |
+        | xml |
+        | json |
+        | jsonv2 |
+        | geojson |
+
     @Tiger
     Scenario: TIGER house number
         When sending json search query "323 22nd Street Southwest, Huron"
@@ -147,3 +164,23 @@ Feature: Search queries
           | 0  | 6395 |
           | 1  | 6395 BIS |
 
+    Scenario Outline: Same Searches with white spaces 
+        When sending json search query "<data>"
+        Then exactly 1 result is returned
+        And results contain
+          | class   |
+          | building |
+
+    Examples:
+      | data |
+      | amerlugalpe, N 47.15739° E 9.61264° |
+      | amerlugalpe,   N 47.15739° E 9.61264° |
+      |        amerlugalpe     ,       N 47.15739° E 9.61264° |
+      | amerlugalpe, N 47.15739°              E 9.61264° |
+      | amerlugalpe\v, N 47.15739° E   9.61264° |
+
+    Scenario: Searched with white spaces
+        When sending json search query "22nd   Street Southwest\v,\fHuron"
+        Then results contain
+          | class   | type |
+          | highway | residential |
\ No newline at end of file
index ca441258784c2fde1f468883d77f768fb833b145..fe2d684e8ee285b0bbf72b5bc913cc7bd028c4a3 100644 (file)
@@ -36,8 +36,6 @@ Feature: Simple Tests
      | parameter        | value |
      | addressdetails   | 1 |
      | addressdetails   | 0 |
-     | polygon          | 1 |
-     | polygon          | 0 |
      | polygon_text     | 1 |
      | polygon_text     | 0 |
      | polygon_kml      | 1 |
@@ -98,7 +96,6 @@ Feature: Simple Tests
         Then result header contains
           | attr        | value |
           | querystring | xnznxvcx |
-          | polygon     | false |
           | more_url    | .*q=xnznxvcx.*format=xml |
 
     Scenario: Empty XML search with special XML characters
@@ -106,7 +103,6 @@ Feature: Simple Tests
         Then result header contains
           | attr        | value |
           | querystring | xfdghn&zxn"xvbyx<vxx>cssdex |
-          | polygon     | false |
           | more_url    | .*q=xfdghn%26zxn%22xvbyx%3Cvxx%3Ecssdex.*format=xml |
 
     Scenario: Empty XML search with viewbox
@@ -116,7 +112,6 @@ Feature: Simple Tests
         Then result header contains
           | attr        | value |
           | querystring | xnznxvcx |
-          | polygon     | false |
           | viewbox     | 12,33,77,45.13 |
 
     Scenario: Empty XML search with viewboxlbrt
@@ -126,7 +121,6 @@ Feature: Simple Tests
         Then result header contains
           | attr        | value |
           | querystring | xnznxvcx |
-          | polygon     | false |
           | viewbox     | 12,34.13,77,45 |
 
     Scenario: Empty XML search with viewboxlbrt and viewbox
@@ -136,29 +130,8 @@ Feature: Simple Tests
         Then result header contains
           | attr        | value |
           | querystring | pub |
-          | polygon     | false |
           | viewbox     | 12,33,77,45.13 |
 
-    Scenario Outline: Empty XML search with polygon values
-        When sending xml search query "xnznxvcx"
-          | param   | value |
-          | polygon | <polyval> |
-        Then result header contains
-          | attr        | value |
-          | polygon     | <result> |
-
-    Examples:
-     | result | polyval |
-     | false  | 0 |
-     | true   | 1 |
-     | true   | True |
-     | true   | true |
-     | true   | false |
-     | true   | FALSE |
-     | true   | yes |
-     | true   | no |
-     | true   | '; delete from foobar; select ' |
-
     Scenario: Empty XML search with exluded place ids
         When sending xml search query "jghrleoxsbwjer"
           | exclude_place_ids |
@@ -194,7 +167,7 @@ Feature: Simple Tests
         When sending json search query "Tokyo"
             | param        | value |
             |json_callback | <data> |
-        Then a HTTP 400 is returned
+        Then a json user error is returned
 
     Examples:
       | data |
index 9ef06532fa320744a5e8c4fbcb01aa80453ed6e9..70e9589a371762b4f005e89d64bfbd15e2931f15 100644 (file)
@@ -5,7 +5,7 @@ Feature: Status queries against unknown database
     Scenario: Failed status as text
         When sending text status query
         Then a HTTP 500 is returned
-        And the page contents equals "ERROR: No database"
+        And the page contents equals "ERROR: Database connection failed"
 
     Scenario: Failed status as json
         When sending json status query
@@ -13,5 +13,5 @@ Feature: Status queries against unknown database
         And the result is valid json
         And results contain
           | status | message |
-          | 700    | No database |
+          | 700    | Database connection failed |
         And result has not attributes data_updated
index 61e0f46303b19a2bc0fafcfbe6b08266f669c2e2..52971295c5ced00253e7f39b6151f3640fe51fb2 100644 (file)
@@ -344,3 +344,23 @@ Feature: Import of address interpolations
         When importing
         Then W1 expands to no interpolation
 
+    Scenario: Two point interpolation starting at 0
+        Given the places
+          | osm | class | type   | housenr | geometry |
+          | N1  | place | house  | 0       | 1 1 |
+          | N2  | place | house  | 2       | 1 1.001 |
+        And the places
+          | osm | class | type   | addr+interpolation | geometry |
+          | W1  | place | houses | even     | 1 1, 1 1.001 |
+        And the ways
+          | id | nodes |
+          | 1  | 1,2 |
+        When importing
+        Then W1 expands to interpolation
+          | start | end | geometry |
+          | 0     | 2   | 1 1, 1 1.001 |
+        When sending jsonv2 reverse coordinates 1,1
+        Then results contain
+          | ID | osm_type | osm_id | type  | display_name |
+          | 0  | way      | 1      | house | 0 |
+
index ceb455865a776875a56b1c3e4fcbb315d17d4378..fa96e5b31e94b12ba1b0399e05b8d4d4e864b756 100644 (file)
@@ -127,3 +127,92 @@ Feature: Linking of places
          | N3:natural | -               |
          | N3:place   | R1              |
 
+    Scenario: Nodes with 'role' label are always linked
+        Given the places
+         | osm  | class    | type           | admin | name  | geometry |
+         | R13  | boundary | administrative | 6     | Garbo | poly-area:0.1 |
+         | N2   | place    | hamlet         | 15    | Vario | 0.006 0.00001 |
+        And the relations
+         | id | members       | tags+type |
+         | 13 | N2:label      | boundary |
+        When importing
+        Then placex contains
+         | object  | linked_place_id |
+         | N2      | R13 |
+        And placex contains
+         | object | centroid      | name+name | extratags+linked_place |
+         | R13    | 0.006 0.00001 | Garbo     | hamlet |
+
+    Scenario: Boundaries with place tags are linked against places with same type
+        Given the places
+         | osm  | class    | type           | admin | name   | extra+place | geometry |
+         | R13  | boundary | administrative | 4     | Berlin | city        |poly-area:0.1 |
+        And the places
+         | osm  | class    | type           | name   | geometry |
+         | N2   | place    | city           | Berlin | 0.006 0.00001 |
+        When importing
+        Then placex contains
+         | object  | linked_place_id |
+         | N2      | R13             |
+        And placex contains
+         | object | rank_address |
+         | R13    | 16 |
+        When searching for ""
+         | city |
+         | Berlin |
+        Then results contain
+          | ID | osm_type | osm_id |
+          |  0 | R | 13 |
+        When searching for ""
+         | state |
+         | Berlin |
+        Then results contain
+          | ID | osm_type | osm_id |
+          |  0 | R | 13 |
+
+
+    Scenario: Boundaries without place tags only link against same admin level
+        Given the places
+         | osm  | class    | type           | admin | name   | geometry |
+         | R13  | boundary | administrative | 4     | Berlin |poly-area:0.1 |
+        And the places
+         | osm  | class    | type           | name   | geometry |
+         | N2   | place    | city           | Berlin | 0.006 0.00001 |
+        When importing
+        Then placex contains
+         | object  | linked_place_id |
+         | N2      | -               |
+        And placex contains
+         | object | rank_address |
+         | R13    | 8 |
+        When searching for ""
+         | state |
+         | Berlin |
+        Then results contain
+          | ID | osm_type | osm_id |
+          |  0 | R | 13 |
+        When searching for ""
+         | city |
+         | Berlin |
+        Then results contain
+          | ID | osm_type | osm_id |
+          |  0 | N | 2 |
+
+    # github #1352
+    Scenario: Do not use linked centroid when it is outside the area
+        Given the named places
+         | osm  | class    | type           | admin | geometry |
+         | R13  | boundary | administrative | 4     | poly-area:0.01 |
+        And the named places
+         | osm  | class    | type           | geometry |
+         | N2   | place    | city           | 0.1 0.1 |
+        And the relations
+         | id | members       | tags+type |
+         | 13 | N2:label      | boundary |
+        When importing
+        Then placex contains
+         | object | linked_place_id |
+         | N2     | R13             |
+        And placex contains
+         | object | centroid |
+         | R13    | in geometry  |
index a36485390e8e3c18188aa8461caf9183a86b24c7..9d8286c2a0896bf2cd11c5bb3290f156971cc087 100644 (file)
@@ -224,7 +224,7 @@ Feature: Parenting of objects
         When importing
         Then placex contains
          | object | parent_place_id |
-         | W1     | W3 |
+         | W1     | W2 |
 
     Scenario: Building with addr:street tags
         Given the scene building-on-street-corner
index 7c5c73e2657cb8096a0f1380d187eb1aa8383a24..c9583c8303950c95b4b97b74273997b1f7717120 100644 (file)
@@ -26,8 +26,8 @@ Feature: Import into placex
           | R1  | boundary | administrative  | 2     | de      | (-100 40, -101 40, -101 41, -100 41, -100 40) |
         When importing
         Then placex contains
-          | object | addr+country | country_code |
-          | R1     | de           | de           |
+          | object | rank_search| addr+country | country_code |
+          | R1     | 4          | de           | de           |
 
     Scenario: Illegal country code tag for countries is ignored
         Given the named places
@@ -143,7 +143,6 @@ Feature: Import into placex
           | N22  | place     | hamlet    |
           | N23  | place     | municipality |
           | N24  | place     | district     |
-          | N25  | place     | unincorporated_area |
           | N26  | place     | borough             |
           | N27  | place     | suburb              |
           | N28  | place     | croft               |
@@ -157,9 +156,6 @@ Feature: Import into placex
           | N36  | place     | house               |
           | N37  | place     | building            |
           | N38  | place     | houses              |
-        And the named places
-          | osm  | class     | type      | extra+locality |
-          | N100 | place     | locality  | townland |
         And the named places
           | osm  | class     | type      | extra+capital |
           | N101 | place     | city      | yes |
@@ -168,21 +164,20 @@ Feature: Import into placex
           | object | rank_search | rank_address |
           | N1     | 30          | 30 |
           | N11    | 30          | 30 |
-          | N12    | 2           | 2 |
+          | N12    | 2           | 0 |
           | N13    | 2           | 0 |
-          | N14    | 4           | 4 |
-          | N15    | 8           | 8 |
+          | N14    | 4           | 0 |
+          | N15    | 8           | 0 |
           | N16    | 18          | 0 |
           | N17    | 12          | 12 |
           | N18    | 16          | 16 |
           | N19    | 17          | 0 |
           | N20    | 18          | 16 |
           | N21    | 19          | 16 |
-          | N22    | 19          | 16 |
+          | N22    | 20          | 20 |
           | N23    | 19          | 16 |
           | N24    | 19          | 16 |
-          | N25    | 19          | 16 |
-          | N26    | 19          | 16 |
+          | N26    | 19          | 18 |
           | N27    | 20          | 20 |
           | N28    | 20          | 20 |
           | N29    | 20          | 20 |
@@ -191,7 +186,6 @@ Feature: Import into placex
           | N32    | 20          | 0 |
           | N33    | 20          | 0 |
           | N34    | 20          | 0 |
-          | N100   | 20          | 20 |
           | N101   | 15          | 16 |
           | N35    | 22          | 22 |
           | N36    | 30          | 30 |
@@ -211,6 +205,10 @@ Feature: Import into placex
           | R21 | boundary | administrative | 32    | (3 3, 4 4, 3 4, 3 3) |
           | R22 | boundary | nature_park    | 6     | (0 0, 1 0, 0 1, 0 0) |
           | R23 | boundary | natural_reserve| 10    | (0 0, 1 1, 1 0, 0 0) |
+        And the named places
+          | osm | class | type    | geometry |
+          | R40 | place | country | (1 1, 2 2, 1 2, 1 1) |
+          | R41 | place | state   | (3 3, 4 4, 3 4, 3 3) |
         When importing
         Then placex has no entry for N1
         And placex has no entry for W10
@@ -218,8 +216,10 @@ Feature: Import into placex
           | object | rank_search | rank_address |
           | R20    | 4           | 4 |
           | R21    | 30          | 30 |
-          | R22    | 12          | 0 |
-          | R23    | 20          | 0 |
+          | R22    | 30          | 30 |
+          | R23    | 30          | 30 |
+          | R40    | 4           | 0 |
+          | R41    | 8           | 0 |
 
     Scenario: search and address ranks for highways correctly assigned
         Given the scene roads-with-pois
@@ -237,7 +237,7 @@ Feature: Import into placex
         When importing
         Then placex contains
           | object | rank_search | rank_address |
-          | N1     | 30          | 30 |
+          | N1     | 30          |  0 |
           | W1     | 26          | 26 |
           | W2     | 26          | 26 |
           | W3     | 26          | 26 |
@@ -258,11 +258,11 @@ Feature: Import into placex
         When importing
         Then placex contains
           | object | rank_search | rank_address |
-          | N2     | 30          | 30 |
-          | W2     | 30          | 30 |
+          | N2     | 30          |  0 |
+          | W2     | 30          |  0 |
           | W4     | 22          | 22 |
           | R2     | 22          | 22 |
-          | R3     | 22          | 0 |
+          | R3     | 22          |  0 |
 
     Scenario: rank and inclusion of naturals
        Given the named places
@@ -286,8 +286,27 @@ Feature: Import into placex
           | N5     | 30          | 30 |
           | W2     | 18          | 0 |
           | R3     | 18          | 0 |
-          | R4     | 22          | 0 |
-          | R5     | 4           | 4 |
-          | R6     | 4           | 4 |
+          | R4     | 30          | 30 |
+          | R5     | 4           | 0 |
+          | R6     | 4           | 0 |
           | W3     | 30          | 30 |
 
+    Scenario: boundary ways for countries and states are ignored
+        Given the named places
+          | osm | class    | type           | admin | geometry |
+          | W4  | boundary | administrative | 2     | poly-area:0.1 |
+          | R4  | boundary | administrative | 2     | poly-area:0.1 |
+          | W5  | boundary | administrative | 3     | poly-area:0.1 |
+          | R5  | boundary | administrative | 3     | poly-area:0.1 |
+          | W6  | boundary | administrative | 4     | poly-area:0.1 |
+          | R6  | boundary | administrative | 4     | poly-area:0.1 |
+          | W7  | boundary | administrative | 5     | poly-area:0.1 |
+          | R7  | boundary | administrative | 5     | poly-area:0.1 |
+       When importing
+       Then placex contains exactly
+           | object |
+           | R4     |
+           | R5     |
+           | R6     |
+           | W7     |
+           | R7     |
index 940ac5b640925a3f7d5fb6c8e3496c005ba6b781..863a9b3abcb87fe525363fa2c9f56e964033e1a2 100644 (file)
@@ -125,3 +125,15 @@ Feature: Import of postcodes
         Then placex contains
             | object | postcode  |
             | W93    | 112 DE 34 |
+
+    Scenario: Postcodes are added to the postcode and word table
+        Given the places
+           | osm | class | type  | addr+postcode | addr+housenumber | geometry |
+           | N34 | place | house | 01982         | 111              |country:de |
+        When importing
+        Then location_postcode contains exactly
+           | country | postcode | geometry |
+           | de      | 01982    | country:de |
+        And word contains
+           | word  | class | type |
+           | 01982 | place | postcode |
index cf3ce4dd266a27d2eaa8888e630324ca3e2d55f2..c4e5bbce0ac642d4422454ab56008dd66ac9bbec 100644 (file)
@@ -29,8 +29,8 @@ Feature: Creation of search terms
         And the places
          | osm | class   | type        | name     | geometry |
          | N1  | place   | state       | new york | 80 80 |
-         | N1  | place   | city        | bonn     | 81 81 |
-         | N1  | place   | suburb      | smalltown| 80 81 |
+         | N2  | place   | city        | bonn     | 81 81 |
+         | N3  | place   | suburb      | smalltown| 80 81 |
         And the named places
          | osm | class   | type    | addr+city | addr+state | addr+suburb | geometry |
          | W1  | highway | service | bonn      | New York   | Smalltown   | :w-north |
@@ -67,8 +67,8 @@ Feature: Creation of search terms
         And the places
          | osm | class   | type        | name     | geometry |
          | N1  | place   | state       | new york | 80 80 |
-         | N1  | place   | city        | bonn     | 81 81 |
-         | N1  | place   | suburb      | smalltown| 80 81 |
+         | N2  | place   | city        | bonn     | 81 81 |
+         | N3  | place   | suburb      | smalltown| 80 81 |
         And the named places
          | osm | class   | type    | addr+is_in                | geometry |
          | W1  | highway | service | bonn, New York, Smalltown | :w-north |
@@ -77,3 +77,36 @@ Feature: Creation of search terms
          | object | nameaddress_vector |
          | W1     | bonn, new york, smalltown |
 
+    Scenario: a linked place does not show up in search name
+        Given the named places
+         | osm  | class    | type           | admin | geometry |
+         | R13  | boundary | administrative | 9     | poly-area:0.01 |
+        And the named places
+         | osm  | class    | type           | geometry |
+         | N2   | place    | city           | 0.1 0.1 |
+        And the relations
+         | id | members       | tags+type |
+         | 13 | N2:label      | boundary |
+        When importing
+        Then placex contains
+         | object | linked_place_id |
+         | N2     | R13             |
+        And search_name has no entry for N2
+
+    Scenario: a linked waterway does not show up in search name
+        Given the scene split-road
+        And the places
+         | osm | class    | type  | name  | geometry |
+         | W1  | waterway | river | Rhein | :w-2 |
+         | W2  | waterway | river | Rhein | :w-3 |
+         | R13 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
+        And the relations
+         | id | members            | tags+type |
+         | 13 | W1,W2:main_stream  | waterway |
+        When importing
+        Then placex contains
+         | object | linked_place_id |
+         | W1     | R13 |
+         | W2     | R13 |
+        And search_name has no entry for W1
+        And search_name has no entry for W2
index f7f7dddbf7106cb0213b8a948d0ec0bbc428666a..27ac552e4d907315b2c711d756ddefdc317bf9b5 100644 (file)
@@ -275,7 +275,6 @@ Feature: Update of address interpolations
           | parent_place_id | start | end |
           | W2              | 2     | 6 |
 
-    @Fail
     Scenario: housenumber added in middle of interpolation
       Given the grid
           | 1 |  |  |   |  | 2 |
@@ -334,7 +333,6 @@ Feature: Update of address interpolations
           | parent_place_id | start | end | geometry |
           | W1              | 2     | 10  | 3,4,5    |
 
-    @Fail
     Scenario: Change the start housenumber
       Given the grid
           | 1 |  | 2 |
index 6c31bd8920b45710dbab76099738e02b3651f13c..647d5eafa1ea37db93585603af4be09a65fd38ea 100644 (file)
@@ -125,11 +125,11 @@ Feature: Updates of linked places
         When importing
         Then placex contains
          | object | extratags |
-         | R1     | 'wikidata' : '34', 'place' : 'city' |
+         | R1     | 'wikidata' : '34', 'linked_place' : 'city' |
         When updating places
          | osm | class    | type        | name    | extra+oneway | admin | geometry |
          | N3  | place    | city        | newname | yes          | 30    | 0.00001 0 |
         Then placex contains
          | object | extratags |
-         | R1     | 'wikidata' : '34', 'oneway' : 'yes', 'place' : 'city' |
+         | R1     | 'wikidata' : '34', 'oneway' : 'yes', 'linked_place' : 'city' |
 
diff --git a/test/bdd/db/update/parenting.feature b/test/bdd/db/update/parenting.feature
new file mode 100644 (file)
index 0000000..50a647a
--- /dev/null
@@ -0,0 +1,38 @@
+@DB
+Feature: Update parenting of objects
+
+Scenario: POI inside building inherits addr:street change
+        Given the scene building-on-street-corner
+        And the named places
+         | osm | class   | type       | geometry |
+         | N1  | amenity | bank       | :n-inner |
+         | N2  | shop    | bakery     | :n-edge-NS |
+         | N3  | shop    | supermarket| :n-edge-WE |
+        And the places
+         | osm | class    | type | addr_place | housenr | geometry |
+         | W1  | building | yes  | nowhere    | 3       | :w-building |
+        And the places
+         | osm | class    | type        | name | geometry |
+         | W2  | highway  | primary     | bar  | :w-WE |
+         | W3  | highway  | residential | foo  | :w-NS |
+        When importing
+        Then placex contains
+         | object | parent_place_id | housenumber |
+         | W1     | W2              | 3 |
+         | N1     | W3              | 3 |
+         | N2     | W3              | 3 |
+         | N3     | W2              | 3 |
+        When updating places
+         | osm | class    | type | street | addr_place | housenr | geometry    |
+         | W1  | building | yes  | foo    | nowhere    | 3       | :w-building |
+        And updating places
+         | osm | class   | type       | name | geometry |
+         | N3  | shop    | supermarket| well | :n-edge-WE |
+        Then placex contains
+         | object | parent_place_id | housenumber |
+         | W1     | W3              | 3 |
+         | N1     | W3              | 3 |
+         | N2     | W3              | 3 |
+         | N3     | W3              | 3 |
+
+
diff --git a/test/bdd/db/update/postcode.feature b/test/bdd/db/update/postcode.feature
new file mode 100644 (file)
index 0000000..fbac934
--- /dev/null
@@ -0,0 +1,58 @@
+@DB
+Feature: Update of postcode
+    Tests for updating of data related to postcodes
+
+    Scenario: A new postcode appears in the postcode and word table
+        Given the places
+           | osm | class | type  | addr+postcode | addr+housenumber | geometry |
+           | N34 | place | house | 01982         | 111              |country:de |
+        When importing
+        Then location_postcode contains exactly
+           | country | postcode | geometry |
+           | de      | 01982    | country:de |
+        When updating places
+           | osm | class | type  | addr+postcode | addr+housenumber | geometry |
+           | N35 | place | house | 4567          | 5                |country:ch |
+        And updating postcodes
+        Then location_postcode contains exactly
+           | country | postcode | geometry |
+           | de      | 01982    | country:de |
+           | ch      | 4567     | country:ch |
+        And word contains
+           | word  | class | type |
+           | 01982 | place | postcode |
+           | 4567  | place | postcode |
+
+     Scenario: When the last postcode is deleted, it is deleted from postcode and word
+        Given the places
+           | osm | class | type  | addr+postcode | addr+housenumber | geometry |
+           | N34 | place | house | 01982         | 111              |country:de |
+           | N35 | place | house | 4567          | 5                |country:ch |
+        When importing
+        And marking for delete N34
+        And updating postcodes
+        Then location_postcode contains exactly
+           | country | postcode | geometry |
+           | ch      | 4567     | country:ch |
+        And word contains not
+           | word  | class | type |
+           | 01982 | place | postcode |
+        And word contains
+           | word  | class | type |
+           | 4567  | place | postcode |
+
+     Scenario: A postcode is not deleted from postcode and word when it exist in another country
+        Given the places
+           | osm | class | type  | addr+postcode | addr+housenumber | geometry |
+           | N34 | place | house | 01982         | 111              |country:de |
+           | N35 | place | house | 01982         | 5                |country:ch |
+        When importing
+        And marking for delete N34
+        And updating postcodes
+        Then location_postcode contains exactly
+           | country | postcode | geometry |
+           | ch      | 01982    | country:ch |
+        And word contains
+           | word  | class | type |
+           | 01982 | place | postcode |
+
index d48e97fa881ff85cff2e9d5331cd7a08f5dfc7a5..195d101e1485b56dda71f1d8788c1705cdeafcef 100644 (file)
@@ -34,7 +34,7 @@ Feature: Update of simple objects
         When importing
         Then placex contains
           | object | rank_address |
-          | R1     | 0 |
+          | R1     | 30 |
           | W1     | 30 |
         When marking for delete R1,W1
         Then placex has no entry for W1
@@ -103,4 +103,4 @@ Feature: Update of simple objects
           | W1  | boundary | historic       | Haha | 5     | (1, 2, 4, 3, 1) |
         Then placex contains
           | object | rank_address |
-          | W1     | 0            |
+          | W1     | 30            |
index fdc65a5e76db2363ccf6082f012a7b4ff43a2cbb..f0658c335f95530cce4a2d82e6e268e7e6db7030 100644 (file)
@@ -15,6 +15,7 @@ userconfig = {
     'REMOVE_TEMPLATE' : False,
     'KEEP_TEST_DB' : False,
     'DB_HOST' : None,
+    'DB_PORT' : None,
     'DB_USER' : None,
     'DB_PASS' : None,
     'TEMPLATE_DB' : 'test_template_nominatim',
@@ -35,6 +36,7 @@ class NominatimEnvironment(object):
         self.build_dir = os.path.abspath(config['BUILDDIR'])
         self.src_dir = os.path.abspath(os.path.join(os.path.split(__file__)[0], "../.."))
         self.db_host = config['DB_HOST']
+        self.db_port = config['DB_PORT']
         self.db_user = config['DB_USER']
         self.db_pass = config['DB_PASS']
         self.template_db = config['TEMPLATE_DB']
@@ -54,6 +56,8 @@ class NominatimEnvironment(object):
         dbargs = {'database': dbname}
         if self.db_host:
             dbargs['host'] = self.db_host
+        if self.db_port:
+            dbargs['port'] = self.db_port
         if self.db_user:
             dbargs['user'] = self.db_user
         if self.db_pass:
@@ -69,12 +73,16 @@ class NominatimEnvironment(object):
 
     def write_nominatim_config(self, dbname):
         f = open(self.local_settings_file, 'w')
-        f.write("<?php\n  @define('CONST_Database_DSN', 'pgsql://%s:%s@%s/%s');\n" %
-                (self.db_user if self.db_user else '',
-                 self.db_pass if self.db_pass else '',
-                 self.db_host if self.db_host else '',
-                 dbname))
+        # https://secure.php.net/manual/en/ref.pdo-pgsql.connection.php
+        f.write("<?php\n  @define('CONST_Database_DSN', 'pgsql:dbname=%s%s%s%s%s');\n" %
+                (dbname,
+                 (';host=' + self.db_host) if self.db_host else '',
+                 (';port=' + self.db_port) if self.db_port else '',
+                 (';user=' + self.db_user) if self.db_user else '',
+                 (';password=' + self.db_pass) if self.db_pass else ''
+                 ))
         f.write("@define('CONST_Osm2pgsql_Flatnode_File', null);\n")
+        f.write("@define('CONST_Import_Style', CONST_BasePath.'/settings/import-full.style');\n")
         f.close()
 
     def cleanup(self):
@@ -188,6 +196,7 @@ class NominatimEnvironment(object):
         proc = subprocess.Popen(cmd, cwd=self.build_dir,
                                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
         (outp, outerr) = proc.communicate()
+        outerr = outerr.decode('utf-8').replace('\\n', '\n')
         logger.debug("run_nominatim_script: %s\n%s\n%s" % (cmd, outp, outerr))
         assert (proc.returncode == 0), "Script '%s' failed:\n%s\n%s\n" % (script, outp, outerr)
 
index 46a18199a9c02df8881ff058e9d4f343b1a79af4..5e329c6a9b3c30e48e883411911b44d4a640affd 100644 (file)
@@ -41,19 +41,3 @@ Feature: Import of simple objects by osm2pgsql
         Then place contains
           | object | class | type |
           | N1     | place | house |
-
-    Scenario: Landuses are only imported when named
-        When loading osm data
-          """
-          n100 x0 y0
-          n101 x0 y0.1
-          n102 x0.1 y0.1
-          n200 x0 y0
-          n202 x1 y1
-          n203 x1 y0
-          w1 Tlanduse=residential,name=rainbow Nn100,n101,n102,n100
-          w2 Tlanduse=residential              Nn200,n202,n203,n200
-          """
-        Then place contains exactly
-          | object | class   | type |
-          | W1     | landuse | residential |
diff --git a/test/bdd/osm2pgsql/import/tags.feature b/test/bdd/osm2pgsql/import/tags.feature
deleted file mode 100644 (file)
index e259434..0000000
+++ /dev/null
@@ -1,550 +0,0 @@
-@DB
-Feature: Tag evaluation
-    Tests if tags are correctly imported into the place table
-
-    Scenario Outline: Name tags
-       When loading osm data
-         """
-         n1 Thighway=yes,<nametag>=Foo
-         """
-       Then place contains
-         | object | name |
-         | N1     | '<nametag>' : 'Foo' |
-
-    Examples:
-     | nametag |
-     | ref |
-     | int_ref |
-     | nat_ref |
-     | reg_ref |
-     | loc_ref |
-     | old_ref |
-     | iata |
-     | icao |
-     | pcode:1 |
-     | pcode:2 |
-     | pcode:3 |
-     | name |
-     | name:de |
-     | name:bt-BR |
-     | int_name |
-     | int_name:xxx |
-     | nat_name |
-     | nat_name:fr |
-     | reg_name |
-     | reg_name:1 |
-     | loc_name |
-     | loc_name:DE |
-     | old_name |
-     | old_name:v1 |
-     | alt_name |
-     | alt_name:dfe |
-     | alt_name_1 |
-     | official_name |
-     | short_name |
-     | short_name:CH |
-     | addr:housename |
-     | brand |
-
-    Scenario: operator only for shops and amenities
-        When loading osm data
-         """
-         n1 Thighway=yes,operator=Foo,name=null
-         n2 Tshop=grocery,operator=Foo
-         n3 Tamenity=hospital,operator=Foo
-         n4 Ttourism=hotel,operator=Foo
-         """
-        Then place contains
-         | object | name |
-         | N1     | 'name' : 'null' |
-         | N2     | 'operator' : 'Foo' |
-         | N3     | 'operator' : 'Foo' |
-         | N4     | 'operator' : 'Foo' |
-
-    Scenario Outline: Ignored name tags
-        When loading osm data
-         """
-         n1 Thighway=yes,<nametag>=Foo,name=real
-         """
-        Then place contains
-         | object | name |
-         | N1     | 'name' : 'real' |
-
-    Examples:
-     | nametag |
-     | name_de |
-     | Name |
-     | ref:de |
-     | ref_de |
-     | my:ref |
-     | br:name |
-     | name:prefix |
-     | name:source |
-
-    Scenario: Special character in name tag
-        When loading osm data
-         """
-         n1 Thighway=yes,name:%20%de=Foo,name=real1
-         n2 Thighway=yes,name:%a%de=Foo,name=real2
-         n3 Thighway=yes,name:%9%de=Foo,name:\\=real3
-         n4 Thighway=yes,name:%9%de=Foo,name=rea\l3
-         """
-        Then place contains
-         | object | name |
-         | N1     | 'name: de' : 'Foo', 'name' : 'real1' |
-         | N2     | 'name: de' : 'Foo', 'name' : 'real2' |
-         | N3     | 'name: de' : 'Foo', 'name:\\\\' : 'real3' |
-         | N4     | 'name: de' : 'Foo', 'name' : 'rea\\l3' |
-
-    Scenario: Unprintable character in address tag are maintained
-        When loading osm data
-         """
-         n23 Tamenity=yes,name=foo,addr:postcode=1234%200e%
-         """
-        Then place contains
-         | object | address |
-         | N23    | 'postcode' : u'1234\u200e' |
-
-    Scenario Outline: Included places
-        When loading osm data
-         """
-         n1 T<key>=<value>,name=real
-         """
-        Then place contains
-         | object | class | type    | name |
-         | N1     | <key> | <value> | 'name' : 'real' |
-
-    Examples:
-     | key       | value |
-     | emergency | phone |
-     | tourism   | information |
-     | historic  | castle |
-     | military  | barracks |
-     | natural   | water |
-     | highway   | residential |
-     | aerialway | station |
-     | aeroway   | way |
-     | boundary  | administrative |
-     | craft     | butcher |
-     | leisure   | playground |
-     | office    | bookmaker |
-     | railway   | rail |
-     | shop      | bookshop |
-     | waterway  | stream |
-     | landuse   | cemetry |
-     | man_made  | tower |
-     | mountain_pass | yes |
-
-    Scenario Outline: Bridges and Tunnels take special name tags
-        When loading osm data
-         """
-         n1 Thighway=road,<key>=yes,name=Rd,<key>:name=My
-         n2 Thighway=road,<key>=yes,name=Rd
-         """
-        Then place contains
-          | object     | type | name |
-          | N1:highway | road | 'name' : 'Rd' |
-          | N1:<key>   | yes  | 'name' : 'My' |
-          | N2:highway | road | 'name' : 'Rd' |
-        And place has no entry for N2:<key>
-
-    Examples:
-      | key |
-      | bridge |
-      | tunnel |
-
-    Scenario Outline: Excluded places
-        When loading osm data
-         """
-         n1 T<key>=<value>,name=real
-         n2 Thighway=motorway,name=To%20%Hell
-         """
-        Then place has no entry for N1
-
-    Examples:
-     | key       | value |
-     | emergency | yes |
-     | emergency | no |
-     | tourism   | yes |
-     | tourism   | no |
-     | historic  | yes |
-     | historic  | no |
-     | military  | yes |
-     | military  | no |
-     | natural   | yes |
-     | natural   | no |
-     | highway   | no |
-     | highway   | turning_circle |
-     | highway   | mini_roundabout |
-     | highway   | noexit |
-     | highway   | crossing |
-     | aerialway | no |
-     | aerialway | pylon |
-     | man_made  | survey_point |
-     | man_made  | cutline |
-     | aeroway   | no |
-     | amenity   | no |
-     | bridge    | no |
-     | craft     | no |
-     | leisure   | no |
-     | office    | no |
-     | railway   | no |
-     | railway   | level_crossing |
-     | shop      | no |
-     | tunnel    | no |
-     | waterway  | riverbank |
-
-    Scenario Outline: Some tags only are included when named
-        When loading osm data
-        """
-        n1 T<key>=<value>
-        n2 T<key>=<value>,name=To%20%Hell
-        n3 T<key>=<value>,ref=123
-        """
-        Then place contains exactly
-         | object | class | type |
-         | N2     | <key> | <value> |
-
-    Examples:
-      | key      | value |
-      | landuse  | residential |
-      | natural  | meadow |
-      | highway  | traffic_signals |
-      | highway  | service |
-      | highway  | cycleway |
-      | highway  | path |
-      | highway  | footway |
-      | highway  | steps |
-      | highway  | bridleway |
-      | highway  | track |
-      | highway  | byway |
-      | highway  | motorway_link |
-      | highway  | primary_link |
-      | highway  | trunk_link |
-      | highway  | secondary_link |
-      | highway  | tertiary_link |
-      | railway  | rail |
-      | boundary | administrative |
-      | waterway | stream |
-
-    Scenario: Footways are not included if they are sidewalks
-        When loading osm data
-          """
-          n2 Thighway=footway,name=To%20%Hell,footway=sidewalk
-          n23 Thighway=footway,name=x
-          """
-        Then place has no entry for N2
-
-    Scenario: named junctions are included if there is no other tag
-        When loading osm data
-          """
-          n1 Tjunction=yes
-          n2 Thighway=secondary,junction=roundabout,name=To-Hell
-          n3 Tjunction=yes,name=Le%20%Croix
-          """
-        Then place has no entry for N1
-        And place has no entry for N2:junction
-        And place contains
-         | object | class    | type |
-         | N3     | junction | yes |
-
-    Scenario: Boundary with place tag
-        When loading osm data
-          """
-          n200 x0 y0
-          n201 x0 y1
-          n202 x1 y1
-          n203 x1 y0
-          w2 Tboundary=administrative,place=city,name=Foo Nn200,n201,n202,n203,n200
-          w4 Tboundary=administrative,place=island,name=Foo Nn200,n201,n202,n203,n200
-          w20 Tplace=city,name=ngng Nn200,n201,n202,n203,n200
-          w40 Tplace=city,boundary=statistical,name=BB Nn200,n201,n202,n203,n200
-          """
-        Then place contains
-          | object       | class    | extratags        | type |
-          | W2           | boundary | 'place' : 'city' | administrative |
-          | W4:boundary  | boundary | -                | administrative |
-          | W4:place     | place    | -                | island |
-          | W20          | place    | -                | city |
-          | W40:boundary | boundary | -                | statistical |
-          | W40:place    | place    | -                | city |
-        And place has no entry for W2:place
-
-    Scenario Outline: Tags that describe a house
-        When loading osm data
-          """
-          n100 T<key>=<value>
-          n999 Tamenity=prison,<key>=<value>
-          """
-        Then place contains exactly
-          | object | class   | type |
-          | N100   | place   | house |
-          | N999   | amenity | prison |
-
-    Examples:
-      | key                     | value |
-      | addr:housename          | My%20%Mansion |
-      | addr:housenumber        | 456 |
-      | addr:conscriptionnumber | 4 |
-      | addr:streetnumber       | 4568765 |
-
-    Scenario: Only named with no other interesting tag
-        When loading osm data
-          """
-          n1 Tlanduse=meadow
-          n2 Tlanduse=residential,name=important
-          n3 Tlanduse=residential,name=important,place=hamlet
-          """
-        Then place contains
-          | object | class   | type |
-          | N2     | landuse | residential |
-          | N3     | place   | hamlet |
-        And place has no entry for N1
-        And place has no entry for N3:landuse
-
-    Scenario Outline: Import of postal codes
-        When loading osm data
-          """
-          n10 Thighway=secondary,<key>=<value>
-          n11 T<key>=<value>
-          """
-        Then place contains
-          | object | class   | type      | addr+postcode |
-          | N10    | highway | secondary | <value> |
-          | N11    | place   | postcode  | <value> |
-        And place has no entry for N10:place
-
-    Examples:
-      | key                 | value |
-      | postal_code         | 45736 |
-      | postcode            | xxx |
-      | addr:postcode    | 564 |
-      | tiger:zip_left   | 00011 |
-      | tiger:zip_right  | 09123 |
-
-    Scenario: Import of street and place
-        When loading osm data
-          """
-          n10 Tamenity=hospital,addr:street=Foo%20%St
-          n20 Tamenity=hospital,addr:place=Foo%20%Town
-          """
-        Then place contains
-          | object | class   | type     | addr+street | addr+place |
-          | N10    | amenity | hospital | Foo St      | -        |
-          | N20    | amenity | hospital | -           | Foo Town |
-
-
-    Scenario Outline: Import of country
-        When loading osm data
-          """
-          n10 Tplace=village,<key>=<value>
-          """
-        Then place contains
-          | object | class   | type    | addr+country |
-          | N10    | place   | village | <value> |
-
-    Examples:
-        | key                  | value |
-        | country_code         | us |
-        | ISO3166-1            | XX |
-        | is_in:country_code   | __ |
-        | addr:country         | .. |
-        | addr:country_code    | cv |
-
-    Scenario Outline: Ignore country codes with wrong length
-        When loading osm data
-          """
-          n10 Tplace=village,country_code=<value>
-          """
-        Then place contains
-          | object | class   | type    | addr+country |
-          | N10    | place   | village | - |
-
-    Examples:
-        | value |
-        | X |
-        | x |
-        | ger |
-        | dkeufr |
-        | d%20%e |
-
-    Scenario: Import of house numbers
-        When loading osm data
-          """
-          n10 Tbuilding=yes,addr:housenumber=4b
-          n11 Tbuilding=yes,addr:conscriptionnumber=003
-          n12 Tbuilding=yes,addr:streetnumber=2345
-          n13 Tbuilding=yes,addr:conscriptionnumber=3,addr:streetnumber=111
-          """
-        Then place contains
-          | object | class | type    | address |
-          | N10    | building | yes  | 'housenumber' : '4b' |
-          | N11    | building | yes  | 'conscriptionnumber' : '003' |
-          | N12    | building | yes  | 'streetnumber' : '2345' |
-          | N13    | building | yes  | 'conscriptionnumber' : '3', 'streetnumber' : '111' |
-
-    Scenario: Shorten tiger:county tags
-        When loading osm data
-          """
-          n10 Tplace=village,tiger:county=Feebourgh%2c%%20%AL
-          n11 Tplace=village,addr:state=Alabama,tiger:county=Feebourgh%2c%%20%AL
-          n12 Tplace=village,tiger:county=Feebourgh
-          """
-        Then place contains
-          | object | class   | type    | addr+tiger:county |
-          | N10    | place   | village | Feebourgh county |
-          | N11    | place   | village | Feebourgh county |
-          | N12    | place   | village | Feebourgh county |
-
-    Scenario Outline: Import of address tags
-        When loading osm data
-          """
-          n10 Tplace=village,addr:<key>=<value>
-          n11 Tplace=village,is_in:<key>=<value>
-          """
-        Then place contains
-          | object | class   | type    | address |
-          | N10    | place   | village | '<key>' : '<value>' |
-
-    Examples:
-      | key       | value |
-      | suburb    | hinein |
-      | city      | Sydney |
-      | state     | Jura |
-
-    Scenario: Import of isin tags with space
-        When loading osm data
-          """
-          n10 Tplace=village,is_in=Stockholm%2c%%20%Sweden
-          n11 Tplace=village,addr:county=le%20%havre
-          """
-        Then place contains
-          | object | class   | type    | address |
-          | N10    | place   | village | 'is_in' : 'Stockholm, Sweden' |
-          | N11    | place   | village | 'county' : 'le havre' |
-
-    Scenario: Import of admin level
-        When loading osm data
-          """
-          n10 Tamenity=hospital,admin_level=3
-          n11 Tamenity=hospital,admin_level=b
-          n12 Tamenity=hospital
-          n13 Tamenity=hospital,admin_level=3.0
-          """
-        Then place contains
-          | object | class   | type     | admin_level |
-          | N10    | amenity | hospital | 3 |
-          | N11    | amenity | hospital | 15 |
-          | N12    | amenity | hospital | 15 |
-          | N13    | amenity | hospital | 3 |
-
-    Scenario Outline: Import of extra tags
-        When loading osm data
-          """
-          n10 Ttourism=hotel,<key>=foo
-          """
-        Then place contains
-          | object | class   | type  | extratags |
-          | N10    | tourism | hotel | '<key>' : 'foo' |
-
-     Examples:
-       | key |
-       | tracktype |
-       | traffic_calming |
-       | service |
-       | cuisine |
-       | capital |
-       | dispensing |
-       | religion |
-       | denomination |
-       | sport |
-       | internet_access |
-       | lanes |
-       | surface |
-       | smoothness |
-       | width |
-       | est_width |
-       | incline |
-       | opening_hours |
-       | collection_times |
-       | service_times |
-       | disused |
-       | wheelchair |
-       | sac_scale |
-       | trail_visibility |
-       | mtb:scale |
-       | mtb:description |
-       | wood |
-       | drive_in |
-       | access |
-       | vehicle |
-       | bicyle |
-       | foot |
-       | goods |
-       | hgv |
-       | motor_vehicle |
-       | motor_car |
-       | access:foot |
-       | contact:phone |
-       | drink:mate |
-       | oneway |
-       | date_on |
-       | date_off |
-       | day_on |
-       | day_off |
-       | hour_on |
-       | hour_off |
-       | maxweight |
-       | maxheight |
-       | maxspeed |
-       | disused |
-       | toll |
-       | charge |
-       | population |
-       | description |
-       | image |
-       | attribution |
-       | fax |
-       | email |
-       | url |
-       | website |
-       | phone |
-       | real_ale |
-       | smoking |
-       | food |
-       | camera |
-       | brewery |
-       | locality |
-       | wikipedia |
-       | wikipedia:de |
-       | wikidata |
-       | name:prefix |
-       | name:botanical |
-       | name:etymology:wikidata |
-
-    Scenario: buildings
-        When loading osm data
-          """
-          n10 Ttourism=hotel,building=yes
-          n11 Tbuilding=house
-          n12 Tbuilding=shed,addr:housenumber=1
-          n13 Tbuilding=yes,name=Das-Haus
-          n14 Tbuilding=yes,addr:postcode=12345
-          """
-        Then place contains
-          | object | class   | type |
-          | N10    | tourism | hotel |
-          | N12    | building| yes |
-          | N13    | building| yes |
-          | N14    | building| yes |
-        And place has no entry for N10:building
-        And place has no entry for N11
-
-    Scenario: complete node entry
-        When loading osm data
-          """
-          n290393920 Taddr:city=Perpignan,addr:country=FR,addr:housenumber=43\,addr:postcode=66000,addr:street=Rue%20%Pierre%20%Constant%20%d`Ivry,source=cadastre-dgi-fr%20%source%20%:%20%Direction%20%Générale%20%des%20%Impôts%20%-%20%Cadastre%20%;%20%mise%20%à%20%jour%20%:2008
-          """
-        Then place contains
-         | object     | class   | type | address |
-         | N290393920 | place   | house| 'city' : 'Perpignan', 'country' : 'FR', 'housenumber' : '43\\', 'postcode' : '66000', 'street' : 'Rue Pierre Constant d`Ivry' |
index e8d96d44e3e372733b5abf1247314452d50c0159..072f83fa4e98d4c86a939fa9bfb937cb3b231ebf 100644 (file)
@@ -24,3 +24,38 @@ Feature: Update of simple objects by osm2pgsql
           | object     | class   | type       | name |
           | N1:tourism | tourism | hotel      | 'name' : 'foo' |
 
+    Scenario: Downgrading a highway to one that is dropped without name
+        When loading osm data
+          """
+          n100 x0 y0
+          n101 x0.0001 y0.0001
+          w1 Thighway=residential Nn100,n101
+          """
+        Then place contains
+          | object     |
+          | W1:highway |
+        When updating osm data
+          """
+          w1 Thighway=service Nn100,n101
+          """
+        Then place has no entry for W1
+
+    Scenario: Downgrading a highway when a second tag is present
+        When loading osm data
+          """
+          n100 x0 y0
+          n101 x0.0001 y0.0001
+          w1 Thighway=residential,tourism=hotel Nn100,n101
+          """
+        Then place contains
+          | object     |
+          | W1:highway |
+          | W1:tourism |
+        When updating osm data
+          """
+          w1 Thighway=service,tourism=hotel Nn100,n101
+          """
+        Then place has no entry for W1:highway
+        And place contains
+          | object     |
+          | W1:tourism |
index b50f1d59baebb1c1556b0a60a8edae3f046bc31e..f4c485fd99e34be3bf44b22fe39e825e9ba69e34 100644 (file)
@@ -197,10 +197,18 @@ def assert_db_column(row, column, value, context):
         return
 
     if column.startswith('centroid'):
-        fac = float(column[9:]) if column.startswith('centroid*') else 1.0
-        x, y = value.split(' ')
-        assert_almost_equal(float(x) * fac, row['cx'], "Bad x coordinate")
-        assert_almost_equal(float(y) * fac, row['cy'], "Bad y coordinate")
+        if value == 'in geometry':
+            query = """SELECT ST_Within(ST_SetSRID(ST_Point({}, {}), 4326),
+                                        ST_SetSRID('{}'::geometry, 4326))""".format(
+                      row['cx'], row['cy'], row['geomtxt'])
+            cur = context.db.cursor()
+            cur.execute(query)
+            eq_(cur.fetchone()[0], True, "(Row %s failed: %s)" % (column, query))
+        else:
+            fac = float(column[9:]) if column.startswith('centroid*') else 1.0
+            x, y = value.split(' ')
+            assert_almost_equal(float(x) * fac, row['cx'], msg="Bad x coordinate")
+            assert_almost_equal(float(y) * fac, row['cy'], msg="Bad y coordinate")
     elif column == 'geometry':
         geom = context.osm.parse_geometry(value, context.scene)
         cur = context.db.cursor()
@@ -329,6 +337,10 @@ def update_place_table(context):
 
     check_database_integrity(context)
 
+@when("updating postcodes")
+def update_postcodes(context):
+    context.nominatim.run_update_script('calculate-postcodes')
+
 @when("marking for delete (?P<oids>.*)")
 def delete_places(context, oids):
     context.nominatim.run_setup_script(
@@ -477,6 +489,43 @@ def check_search_name_contents(context, exclude):
 
     context.db.commit()
 
+@then("location_postcode contains exactly")
+def check_location_postcode(context):
+    cur = context.db.cursor(cursor_factory=psycopg2.extras.DictCursor)
+
+    cur.execute("SELECT *, ST_AsText(geometry) as geomtxt FROM location_postcode")
+    eq_(cur.rowcount, len(list(context.table)),
+        "Postcode table has %d rows, expected %d rows."
+          % (cur.rowcount, len(list(context.table))))
+
+    table = list(cur)
+    for row in context.table:
+        for i in range(len(table)):
+            if table[i]['country_code'] != row['country'] \
+                    or table[i]['postcode'] != row['postcode']:
+                continue
+            for h in row.headings:
+                if h not in ('country', 'postcode'):
+                    assert_db_column(table[i], h, row[h], context)
+
+@then("word contains(?P<exclude> not)?")
+def check_word_table(context, exclude):
+    cur = context.db.cursor(cursor_factory=psycopg2.extras.DictCursor)
+
+    for row in context.table:
+        wheres = []
+        values = []
+        for h in row.headings:
+            wheres.append("%s = %%s" % h)
+            values.append(row[h])
+        cur.execute("SELECT * from word WHERE %s" % ' AND '.join(wheres), values)
+        if exclude:
+            eq_(0, cur.rowcount,
+                "Row still in word table: %s" % '/'.join(values))
+        else:
+            assert_greater(cur.rowcount, 0,
+                           "Row not in word table: %s" % '/'.join(values))
+
 @then("place_addressline contains")
 def check_place_addressline(context):
     cur = context.db.cursor(cursor_factory=psycopg2.extras.DictCursor)
index df34b5cc0696fc17d156a5500fb4047cb03b5b8f..d3b1203b47ae7a0c0cf1897b3bc7ec34c09988a6 100644 (file)
@@ -71,7 +71,7 @@ class GenericResponse(object):
                     pass
                 elif h == 'osm':
                     assert_equal(res['osm_type'], row[h][0])
-                    assert_equal(res['osm_id'], row[h][1:])
+                    assert_equal(res['osm_id'], int(row[h][1:]))
                 elif h == 'centroid':
                     x, y = row[h].split(' ')
                     assert_almost_equal(float(y), float(res['lat']))
@@ -115,7 +115,9 @@ class SearchResponse(GenericResponse):
         self.result = geojson_results_to_json_results(self.result)
 
     def parse_geocodejson(self):
-        return self.parse_geojson()
+        self.parse_geojson()
+        if self.result is not None:
+            self.result = [r['geocoding'] for r in self.result]
 
     def parse_html(self):
         content, errors = tidy_document(self.page,
@@ -203,7 +205,9 @@ class ReverseResponse(GenericResponse):
         self.result = geojson_results_to_json_results(self.result[0])
 
     def parse_geocodejson(self):
-        return self.parse_geojson()
+        self.parse_geojson()
+        if self.result is not None:
+            self.result = [r['geocoding'] for r in self.result]
 
     def parse_xml(self):
         et = ET.fromstring(self.page)
@@ -297,7 +301,8 @@ def query_cmd(context, query, dups):
     """
     cmd = ['/usr/bin/env', 'php']
     cmd.append(os.path.join(context.nominatim.build_dir, 'utils', 'query.php'))
-    cmd.extend(['--search', query])
+    if query:
+        cmd.extend(['--search', query])
     # add more parameters in table form
     if context.table:
         for h in context.table.headings:
@@ -455,8 +460,12 @@ def website_lookup_request(context, fmt, query):
 
     if fmt == 'json ':
         outfmt = 'json'
+    elif fmt == 'jsonv2 ':
+        outfmt = 'json'
     elif fmt == 'geojson ':
         outfmt = 'geojson'
+    elif fmt == 'geocodejson ':
+        outfmt = 'geocodejson'
     else:
         outfmt = 'xml'
 
@@ -494,6 +503,18 @@ def step_impl(context, fmt):
     context.execute_steps("Then a HTTP 200 is returned")
     eq_(context.response.format, fmt)
 
+@then(u'a (?P<fmt>\w+) user error is returned')
+def check_page_error(context, fmt):
+    context.execute_steps("Then a HTTP 400 is returned")
+    eq_(context.response.format, fmt)
+
+    if fmt == 'html':
+        assert_is_not_none(re.search(r'<html( |>).+</html>', context.response.page, re.DOTALL))
+    elif fmt == 'xml':
+        assert_is_not_none(re.search(r'<error>.+</error>', context.response.page, re.DOTALL))
+    else:
+        assert_is_not_none(re.search(r'({"error":)', context.response.page, re.DOTALL))
+
 @then(u'result header contains')
 def check_header_attr(context):
     for line in context.table:
diff --git a/test/php/Nominatim/AddressDetailsTest.php b/test/php/Nominatim/AddressDetailsTest.php
new file mode 100644 (file)
index 0000000..e7b3a3f
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+
+namespace Nominatim;
+
+require_once(CONST_BasePath.'/lib/init-website.php');
+require_once(CONST_BasePath.'/lib/AddressDetails.php');
+
+
+class AddressDetailsTest extends \PHPUnit\Framework\TestCase
+{
+
+    protected function setUp(): void
+    {
+        // How the fixture got created
+        //
+        // 1) search for '10 downing street'
+        // https://nominatim.openstreetmap.org/details.php?osmtype=R&osmid=1879842
+        //
+        // 2) find place_id in the local database
+        // SELECT place_id, name FROM placex WHERE osm_type='R' AND osm_id=1879842;
+        //
+        // 3) set postgresql to non-align output, e.g. psql -A or \a in the CLI
+        //
+        // 4) query
+        // SELECT row_to_json(row,true) FROM (
+        //   SELECT *, get_name_by_language(name, ARRAY['name:en']) as localname
+        //   FROM get_addressdata(194663412,10)
+        //   ORDER BY rank_address DESC, isaddress DESC
+        // ) AS row;
+        //
+        // 5) copy&paste into file. Add commas between records
+        //
+        $json = file_get_contents(CONST_BasePath.'/test/php/fixtures/address_details_10_downing_street.json');
+        $data = json_decode($json, true);
+
+        $this->oDbStub = $this->getMockBuilder(\DB::class)
+                              ->setMethods(array('getAll'))
+                              ->getMock();
+        $this->oDbStub->method('getAll')
+                      ->willReturn($data);
+    }
+
+    public function testGetLocaleAddress()
+    {
+        $oAD = new AddressDetails($this->oDbStub, 194663412, 10, 'en');
+        $expected = join(', ', array(
+            '10 Downing Street',
+            '10',
+            'Downing Street',
+            'St. James\'s',
+            'Covent Garden',
+            'Westminster',
+            'London',
+            'Greater London',
+            'England',
+            'SW1A 2AA',
+            'United Kingdom'
+        ));
+        $this->assertEquals($expected, $oAD->getLocaleAddress());
+    }
+
+    public function testGetAddressDetails()
+    {
+        $oAD = new AddressDetails($this->oDbStub, 194663412, 10, 'en');
+        $this->assertEquals(18, count($oAD->getAddressDetails(true)));
+        $this->assertEquals(12, count($oAD->getAddressDetails(false)));
+    }
+
+    public function testGetAddressNames()
+    {
+        $oAD = new AddressDetails($this->oDbStub, 194663412, 10, 'en');
+        $expected = array(
+                     'attraction' => '10 Downing Street',
+                     'house_number' => '10',
+                     'road' => 'Downing Street',
+                     'neighbourhood' => 'St. James\'s',
+                     'suburb' => 'Covent Garden',
+                     'city' => 'London',
+                     'state_district' => 'Greater London',
+                     'state' => 'England',
+                     'postcode' => 'SW1A 2AA',
+                     'country' => 'United Kingdom',
+                     'country_code' => 'gb'
+        );
+
+        $this->assertEquals($expected, $oAD->getAddressNames());
+    }
+
+    public function testGetAdminLevels()
+    {
+        $oAD = new AddressDetails($this->oDbStub, 194663412, 10, 'en');
+        $expected = array(
+                     'level8' => 'Westminster',
+                     'level6' => 'London',
+                     'level5' => 'Greater London',
+                     'level4' => 'England',
+                     'level2' => 'United Kingdom'
+        );
+        $this->assertEquals($expected, $oAD->getAdminLevels());
+    }
+
+    public function testDebugInfo()
+    {
+        $oAD = new AddressDetails($this->oDbStub, 194663412, 10, 'en');
+        $this->assertTrue(is_array($oAD->debugInfo()));
+        $this->assertEquals(18, count($oAD->debugInfo()));
+    }
+}
diff --git a/test/php/Nominatim/ClassTypesTest.php b/test/php/Nominatim/ClassTypesTest.php
new file mode 100644 (file)
index 0000000..cec3b82
--- /dev/null
@@ -0,0 +1,94 @@
+<?php
+
+namespace Nominatim;
+
+require_once(CONST_BasePath.'/lib/ClassTypes.php');
+
+class ClassTypesTest extends \PHPUnit\Framework\TestCase
+{
+    public function testGetInfo()
+    {
+        // 1) Admin level set
+        // city Dublin
+        // https://nominatim.openstreetmap.org/details.php?osmtype=R&osmid=1109531
+        $aPlace = array(
+                   'admin_level' => 7,
+                   'class' => 'boundary',
+                   'type' => 'administrative',
+                   'rank_address' => 14
+        );
+
+        $this->assertEquals('Municipality', ClassTypes\getInfo($aPlace)['label']);
+        $this->assertEquals('Municipality', ClassTypes\getFallbackInfo($aPlace)['label']);
+        $this->assertEquals('Municipality', ClassTypes\getProperty($aPlace, 'label'));
+
+        // 2) No admin level
+        // Eiffel Tower
+        // https://nominatim.openstreetmap.org/details.php?osmtype=W&osmid=5013364
+        $aPlace = array(
+                   'class' => 'tourism',
+                   'type' => 'attraction',
+                   'rank_address' => 29
+        );
+        $this->assertEquals('Attraction', ClassTypes\getInfo($aPlace)['label']);
+        $this->assertEquals(array('simplelabel' => 'address29'), ClassTypes\getFallbackInfo($aPlace));
+        $this->assertEquals('Attraction', ClassTypes\getProperty($aPlace, 'label'));
+
+        // 3) Unknown type
+        // La Maison du Toutou, Paris
+        // https://nominatim.openstreetmap.org/details.php?osmtype=W&osmid=164011651
+        $aPlace = array(
+                   'class' => 'shop',
+                   'type' => 'pet_grooming',
+                   'rank_address' => 29
+        );
+        $this->assertEquals(false, ClassTypes\getInfo($aPlace));
+        $this->assertEquals(array('simplelabel' => 'address29'), ClassTypes\getFallbackInfo($aPlace));
+        $this->assertEquals(false, ClassTypes\getProperty($aPlace, 'label'));
+        $this->assertEquals('mydefault', ClassTypes\getProperty($aPlace, 'label', 'mydefault'));
+    }
+
+    public function testGetClassTypesWithImportance()
+    {
+        $aClasses = ClassTypes\getListWithImportance();
+
+        $this->assertGreaterThan(
+            200,
+            count($aClasses)
+        );
+
+        $this->assertEquals(
+            array(
+             'label' => 'Country',
+             'frequency' => 0,
+             'icon' => 'poi_boundary_administrative',
+             'defzoom' => 6,
+             'defdiameter' => 15,
+             'importance' => 3
+            ),
+            $aClasses['place:country']
+        );
+    }
+
+
+    public function testGetResultDiameter()
+    {
+        $aResult = array('class' => '', 'type' => '');
+        $this->assertEquals(
+            0.0001,
+            ClassTypes\getProperty($aResult, 'defdiameter', 0.0001)
+        );
+
+        $aResult = array('class' => 'place', 'type' => 'country');
+        $this->assertEquals(
+            15,
+            ClassTypes\getProperty($aResult, 'defdiameter', 0.0001)
+        );
+
+        $aResult = array('class' => 'boundary', 'type' => 'administrative', 'admin_level' => 6);
+        $this->assertEquals(
+            0.32,
+            ClassTypes\getProperty($aResult, 'defdiameter', 0.0001)
+        );
+    }
+}
diff --git a/test/php/Nominatim/DBTest.php b/test/php/Nominatim/DBTest.php
new file mode 100644 (file)
index 0000000..1991f6f
--- /dev/null
@@ -0,0 +1,246 @@
+<?php
+
+namespace Nominatim;
+
+require_once(CONST_BasePath.'/lib/lib.php');
+require_once(CONST_BasePath.'/lib/DB.php');
+
+// subclassing so we can set the protected connection variable
+class NominatimSubClassedDB extends \Nominatim\DB
+{
+    public function setConnection($oConnection)
+    {
+        $this->connection = $oConnection;
+    }
+}
+
+// phpcs:ignore PSR1.Classes.ClassDeclaration.MultipleClasses
+class DBTest extends \PHPUnit\Framework\TestCase
+{
+    public function testReusingConnection()
+    {
+        $oDB = new NominatimSubClassedDB('');
+        $oDB->setConnection('anything');
+        $this->assertTrue($oDB->connect());
+    }
+
+    public function testCheckConnection()
+    {
+        $oDB = new \Nominatim\DB('');
+        $this->assertFalse($oDB->checkConnection());
+    }
+
+    public function testErrorHandling()
+    {
+        $this->expectException(DatabaseError::class);
+        $this->expectExceptionMessage('Failed to establish database connection');
+
+        $oDB = new \Nominatim\DB('pgsql:dbname=abc');
+        $oDB->connect();
+    }
+
+    public function testErrorHandling2()
+    {
+        $this->expectException(DatabaseError::class);
+        $this->expectExceptionMessage('Database query failed');
+
+        $oPDOStub = $this->getMockBuilder(PDO::class)
+                         ->setMethods(array('query', 'quote'))
+                         ->getMock();
+
+        $oPDOStub->method('query')
+                 ->will($this->returnCallback(function ($sVal) {
+                    return "'$sVal'";
+                 }));
+
+        $oPDOStub->method('query')
+                 ->will($this->returnCallback(function () {
+                     throw new \PDOException('ERROR:  syntax error at or near "FROM"');
+                 }));
+
+        $oDB = new NominatimSubClassedDB('');
+        $oDB->setConnection($oPDOStub);
+        $oDB->getOne('SELECT name FROM');
+    }
+
+    public function testGetPostgresVersion()
+    {
+        $oDBStub = $this->getMockBuilder(\Nominatim\DB::class)
+                        ->disableOriginalConstructor()
+                        ->setMethods(array('getOne'))
+                        ->getMock();
+
+        $oDBStub->method('getOne')
+                ->willReturn('100006');
+
+        $this->assertEquals(10, $oDBStub->getPostgresVersion());
+    }
+
+    public function testGetPostgisVersion()
+    {
+        $oDBStub = $this->getMockBuilder(\Nominatim\DB::class)
+                        ->disableOriginalConstructor()
+                        ->setMethods(array('getOne'))
+                        ->getMock();
+
+        $oDBStub->method('getOne')
+                ->willReturn('2.4.4');
+
+        $this->assertEquals(2.4, $oDBStub->getPostgisVersion());
+    }
+
+    public function testParseDSN()
+    {
+        $this->assertEquals(
+            array(),
+            \Nominatim\DB::parseDSN('')
+        );
+        $this->assertEquals(
+            array(
+             'database' => 'db1',
+             'hostspec' => 'machine1'
+            ),
+            \Nominatim\DB::parseDSN('pgsql:dbname=db1;host=machine1')
+        );
+        $this->assertEquals(
+            array(
+             'database' => 'db1',
+             'hostspec' => 'machine1',
+             'port' => '1234',
+             'username' => 'john',
+             'password' => 'secret'
+            ),
+            \Nominatim\DB::parseDSN('pgsql:dbname=db1;host=machine1;port=1234;user=john;password=secret')
+        );
+    }
+
+    public function testGenerateDSN()
+    {
+        $this->assertEquals(
+            'pgsql:',
+            \Nominatim\DB::generateDSN(array())
+        );
+        $this->assertEquals(
+            'pgsql:host=machine1;dbname=db1',
+            \Nominatim\DB::generateDSN(\Nominatim\DB::parseDSN('pgsql:host=machine1;dbname=db1'))
+        );
+    }
+
+    public function testAgainstDatabase()
+    {
+        $unit_test_dsn = getenv('UNIT_TEST_DSN') != false ?
+                            getenv('UNIT_TEST_DSN') :
+                            'pgsql:dbname=nominatim_unit_tests';
+
+        $this->assertRegExp(
+            '/unit_test/',
+            $unit_test_dsn,
+            'Test database will get destroyed, thus should have a name like unit_test to be safe'
+        );
+
+        ## Create the database.
+        {
+            $aDSNParsed = \Nominatim\DB::parseDSN($unit_test_dsn);
+            $sDbname = $aDSNParsed['database'];
+            $aDSNParsed['database'] = 'postgres';
+
+            $oDB = new \Nominatim\DB(\Nominatim\DB::generateDSN($aDSNParsed));
+            $oDB->connect();
+            $oDB->exec('DROP DATABASE IF EXISTS ' . $sDbname);
+            $oDB->exec('CREATE DATABASE ' . $sDbname);
+        }
+
+        $oDB = new \Nominatim\DB($unit_test_dsn);
+        $oDB->connect();
+
+        $this->assertTrue(
+            $oDB->checkConnection($sDbname)
+        );
+
+        # Tables, Indices
+        {
+            $this->assertEmpty($oDB->getListOfTables());
+            $oDB->exec('CREATE TABLE table1 (id integer, city varchar, country varchar)');
+            $oDB->exec('CREATE TABLE table2 (id integer, city varchar, country varchar)');
+            $this->assertEquals(
+                array('table1', 'table2'),
+                $oDB->getListOfTables()
+            );
+            $this->assertTrue($oDB->deleteTable('table2'));
+            $this->assertTrue($oDB->deleteTable('table99'));
+            $this->assertEquals(
+                array('table1'),
+                $oDB->getListOfTables()
+            );
+
+            $this->assertTrue($oDB->tableExists('table1'));
+            $this->assertFalse($oDB->tableExists('table99'));
+            $this->assertFalse($oDB->tableExists(null));
+
+            $this->assertEmpty($oDB->getListOfIndices());
+            $oDB->exec('CREATE UNIQUE INDEX table1_index ON table1 (id)');
+            $this->assertEquals(
+                array('table1_index'),
+                $oDB->getListOfIndices()
+            );
+            $this->assertEmpty($oDB->getListOfIndices('table2'));
+        }
+
+        # select queries
+        {
+            $oDB->exec(
+                "INSERT INTO table1 VALUES (1, 'Berlin', 'Germany'), (2, 'Paris', 'France')"
+            );
+
+            $this->assertEquals(
+                array(
+                    array('city' => 'Berlin'),
+                    array('city' => 'Paris')
+                ),
+                $oDB->getAll('SELECT city FROM table1')
+            );
+            $this->assertEquals(
+                array(),
+                $oDB->getAll('SELECT city FROM table1 WHERE id=999')
+            );
+
+
+            $this->assertEquals(
+                array('id' => 1, 'city' => 'Berlin', 'country' => 'Germany'),
+                $oDB->getRow('SELECT * FROM table1 WHERE id=1')
+            );
+            $this->assertEquals(
+                false,
+                $oDB->getRow('SELECT * FROM table1 WHERE id=999')
+            );
+
+
+            $this->assertEquals(
+                array('Berlin', 'Paris'),
+                $oDB->getCol('SELECT city FROM table1')
+            );
+            $this->assertEquals(
+                array(),
+                $oDB->getCol('SELECT city FROM table1 WHERE id=999')
+            );
+
+            $this->assertEquals(
+                'Berlin',
+                $oDB->getOne('SELECT city FROM table1 WHERE id=1')
+            );
+            $this->assertEquals(
+                null,
+                $oDB->getOne('SELECT city FROM table1 WHERE id=999')
+            );
+
+            $this->assertEquals(
+                array('Berlin' => 'Germany', 'Paris' => 'France'),
+                $oDB->getAssoc('SELECT city, country FROM table1')
+            );
+            $this->assertEquals(
+                array(),
+                $oDB->getAssoc('SELECT city, country FROM table1 WHERE id=999')
+            );
+        }
+    }
+}
diff --git a/test/php/Nominatim/DatabaseErrorTest.php b/test/php/Nominatim/DatabaseErrorTest.php
new file mode 100644 (file)
index 0000000..7b46189
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+namespace Nominatim;
+
+require_once(CONST_BasePath.'/lib/init-website.php');
+require_once(CONST_BasePath.'/lib/DatabaseError.php');
+
+class DatabaseErrorTest extends \PHPUnit\Framework\TestCase
+{
+
+    public function testSqlMessage()
+    {
+        $oSqlStub = $this->getMockBuilder(PDOException::class)
+                    ->setMethods(array('getMessage'))
+                    ->getMock();
+
+        $oSqlStub->method('getMessage')
+                ->willReturn('Unknown table.');
+
+        $oErr = new DatabaseError('Sql error', 123, null, $oSqlStub);
+        $this->assertEquals('Sql error', $oErr->getMessage());
+        $this->assertEquals(123, $oErr->getCode());
+        $this->assertEquals('Unknown table.', $oErr->getSqlError());
+    }
+
+    public function testSqlObjectDump()
+    {
+        $oErr = new DatabaseError('Sql error', 123, null, array('one' => 'two'));
+        $this->assertRegExp('/two/', $oErr->getSqlDebugDump());
+    }
+}
index 9db7557e1a12186eb80c30d900903899a2d41f1b..5d9525acc0beef2e5da54b90541bd90154d08611 100644 (file)
@@ -2,19 +2,23 @@
 
 namespace Nominatim;
 
-use Exception;
-
-require_once('../../lib/DebugHtml.php');
+require_once(CONST_BasePath.'/lib/DebugHtml.php');
 
 class DebugTest extends \PHPUnit\Framework\TestCase
 {
-    protected function setUp()
+
+    protected function setUp(): void
     {
-        $this->oWithDebuginfo = $this->getMock(Geocode::class, array('debugInfo'));
+        $this->oWithDebuginfo = $this->getMockBuilder(\GeococdeMock::class)
+                                    ->setMethods(array('debugInfo'))
+                                    ->getMock();
         $this->oWithDebuginfo->method('debugInfo')
                   ->willReturn(array('key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3'));
 
-        $this->oWithToString = $this->getMock(Geocode::class, array('__toString'));
+
+        $this->oWithToString = $this->getMockBuilder(\SomeMock::class)
+                                    ->setMethods(array('__toString'))
+                                    ->getMock();
         $this->oWithToString->method('__toString')->willReturn('me as string');
     }
 
index 322cc23e385f36525b4546b3b6c0394f388d40a3..28cd9af04896f4f58a8b59c326534c2fbf5f73b1 100644 (file)
@@ -2,55 +2,11 @@
 
 namespace Nominatim;
 
-require_once '../../lib/lib.php';
-require_once '../../lib/ClassTypes.php';
+require_once(CONST_BasePath.'/lib/lib.php');
+require_once(CONST_BasePath.'/lib/ClassTypes.php');
 
 class LibTest extends \PHPUnit\Framework\TestCase
 {
-    public function testGetClassTypesWithImportance()
-    {
-        $aClasses = ClassTypes\getListWithImportance();
-
-        $this->assertGreaterThan(
-            200,
-            count($aClasses)
-        );
-
-        $this->assertEquals(
-            array(
-             'label' => 'Country',
-             'frequency' => 0,
-             'icon' => 'poi_boundary_administrative',
-             'defzoom' => 6,
-             'defdiameter' => 15,
-             'importance' => 3
-            ),
-            $aClasses['place:country']
-        );
-    }
-
-
-    public function testGetResultDiameter()
-    {
-        $aResult = array('class' => '', 'type' => '');
-        $this->assertEquals(
-            0.0001,
-            ClassTypes\getProperty($aResult, 'defdiameter', 0.0001)
-        );
-
-        $aResult = array('class' => 'place', 'type' => 'country');
-        $this->assertEquals(
-            15,
-            ClassTypes\getProperty($aResult, 'defdiameter', 0.0001)
-        );
-
-        $aResult = array('class' => 'boundary', 'type' => 'administrative', 'admin_level' => 6);
-        $this->assertEquals(
-            0.32,
-            ClassTypes\getProperty($aResult, 'defdiameter', 0.0001)
-        );
-    }
-
 
     public function testAddQuotes()
     {
@@ -79,55 +35,6 @@ class LibTest extends \PHPUnit\Framework\TestCase
         );
     }
 
-
-    public function testGeometryText2Points()
-    {
-        $fRadius = 1;
-        // invalid value
-        $this->assertEquals(
-            null,
-            geometryText2Points('', $fRadius)
-        );
-
-        // POINT
-        $aPoints = geometryText2Points('POINT(10 20)', $fRadius);
-        $this->assertEquals(
-            101,
-            count($aPoints)
-        );
-        $this->assertEquals(
-            array(
-             array(10, 21),
-             array(10.062790519529, 20.998026728428),
-             array(10.125333233564, 20.992114701314)
-            ),
-            array_splice($aPoints, 0, 3)
-        );
-
-        // POLYGON
-        $this->assertEquals(
-            array(
-             array('30', '10'),
-             array('40', '40'),
-             array('20', '40'),
-             array('10', '20'),
-             array('30', '10')
-            ),
-            geometryText2Points('POLYGON((30 10, 40 40, 20 40, 10 20, 30 10))', $fRadius)
-        );
-
-        // MULTIPOLYGON
-        $this->assertEquals(
-            array(
-             array('30', '20'), // first polygon only
-             array('45', '40'),
-             array('10', '40'),
-             array('30', '20'),
-            ),
-            geometryText2Points('MULTIPOLYGON(((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))', $fRadius)
-        );
-    }
-
     public function testParseLatLon()
     {
         // no coordinates expected
@@ -159,8 +66,11 @@ class LibTest extends \PHPUnit\Framework\TestCase
                      '40 26.767 N 79 58.933 W',
                      '40° 26.767′ N 79° 58.933′ W',
                      "40° 26.767' N 79° 58.933' W",
+                     "40° 26.767'
+                         N 79° 58.933' W",
                      'N 40 26.767, W 79 58.933',
                      'N 40°26.767′, W 79°58.933′',
+                     ' N 40°26.767′, W 79°58.933′',
                      "N 40°26.767', W 79°58.933'",
  
                      '40 26 46 N 79 58 56 W',
@@ -170,6 +80,7 @@ class LibTest extends \PHPUnit\Framework\TestCase
                      'N 40 26 46 W 79 58 56',
                      'N 40° 26′ 46″, W 79° 58′ 56″',
                      'N 40° 26\' 46", W 79° 58\' 56"',
+                     'N 40° 26\' 46", W 79° 58\' 56"',
  
                      '40.446 -79.982',
                      '40.446,-79.982',
@@ -177,14 +88,18 @@ class LibTest extends \PHPUnit\Framework\TestCase
                      'N 40.446° W 79.982°',
  
                      '[40.446 -79.982]',
+                     '[40.446,\v-79.982]',
+                     '       40.446  ,   -79.982     ',
                      '       40.446  ,   -79.982     ',
+                     '       40.446    ,   -79.982     ',
+                     '       40.446\v,   -79.982        ',
                     );
 
 
         foreach ($aQueries as $sQuery) {
             $aRes = parseLatLon($sQuery);
-            $this->assertEquals(40.446, $aRes[1], 'degrees decimal ' . $sQuery, 0.01);
-            $this->assertEquals(-79.982, $aRes[2], 'degrees decimal ' . $sQuery, 0.01);
+            $this->assertEqualsWithDelta(40.446, $aRes[1], 0.01, 'degrees decimal ' . $sQuery);
+            $this->assertEqualsWithDelta(-79.982, $aRes[2], 0.01, 'degrees decimal ' . $sQuery);
             $this->assertEquals($sQuery, $aRes[0]);
         }
     }
@@ -217,4 +132,12 @@ class LibTest extends \PHPUnit\Framework\TestCase
         // start == end
         $this->closestHouseNumberEvenOddOther(50, 50, 0.5, array('even' => 50, 'odd' => 50, 'other' => 50));
     }
+
+    public function testGetSearchRankLabel()
+    {
+        $this->assertEquals('unknown', getSearchRankLabel(null));
+        $this->assertEquals('continent', getSearchRankLabel(0));
+        $this->assertEquals('continent', getSearchRankLabel(1));
+        $this->assertEquals('other: 30', getSearchRankLabel(30));
+    }
 }
diff --git a/test/php/Nominatim/OutputTest.php b/test/php/Nominatim/OutputTest.php
new file mode 100644 (file)
index 0000000..b243ba4
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+
+namespace Nominatim;
+
+require_once(CONST_BasePath.'/lib/output.php');
+
+class OutputTest extends \PHPUnit\Framework\TestCase
+{
+    public function testDetailsPermaLinkNode()
+    {
+        $aFeature = array('osm_type' => 'N', 'osm_id'=> 38274, 'class' => 'place');
+        $this->assertSame(
+            detailsPermaLink($aFeature),
+            '<a href="details.php?osmtype=N&osmid=38274&class=place">node 38274</a>'
+        );
+    }
+
+    public function testDetailsPermaLinkWay()
+    {
+        $aFeature = array('osm_type' => 'W', 'osm_id'=> 65, 'class' => 'highway');
+        $this->assertSame(
+            detailsPermaLink($aFeature),
+            '<a href="details.php?osmtype=W&osmid=65&class=highway">way 65</a>'
+        );
+    }
+
+    public function testDetailsPermaLinkRelation()
+    {
+        $aFeature = array('osm_type' => 'R', 'osm_id'=> 9908, 'class' => 'waterway');
+        $this->assertSame(
+            detailsPermaLink($aFeature),
+            '<a href="details.php?osmtype=R&osmid=9908&class=waterway">relation 9908</a>'
+        );
+    }
+
+    public function testDetailsPermaLinkTiger()
+    {
+        $aFeature = array('osm_type' => 'T', 'osm_id'=> 2, 'place_id' => 334);
+        $this->assertSame(
+            detailsPermaLink($aFeature, 'foo'),
+            '<a href="details.php?place_id=334">foo</a>'
+        );
+    }
+
+    public function testDetailsPermaLinkInterpolation()
+    {
+        $aFeature = array('osm_type' => 'I', 'osm_id'=> 400, 'place_id' => 3);
+        $this->assertSame(
+            detailsPermaLink($aFeature, 'foo'),
+            '<a href="details.php?place_id=3">foo</a>'
+        );
+    }
+
+    public function testDetailsPermaLinkWithExtraPropertiesNode()
+    {
+        $aFeature = array('osm_type' => 'N', 'osm_id'=> 2, 'class' => 'amenity');
+        $this->assertSame(
+            detailsPermaLink($aFeature, 'something', 'class="xtype"'),
+            '<a class="xtype" href="details.php?osmtype=N&osmid=2&class=amenity">something</a>'
+        );
+    }
+
+    public function testDetailsPermaLinkWithExtraPropertiesTiger()
+    {
+        $aFeature = array('osm_type' => 'T', 'osm_id'=> 5, 'place_id' => 46);
+        $this->assertSame(
+            detailsPermaLink($aFeature, 'something', 'class="xtype"'),
+            '<a class="xtype" href="details.php?place_id=46">something</a>'
+        );
+    }
+}
index 0e88d318bb0fcc0858dfeba85bd2597f86226cc1..361fefc1c8f15ecb35a9255bc537ae3fdc02511f 100644 (file)
@@ -2,14 +2,12 @@
 
 namespace Nominatim;
 
-use Exception;
-
-require_once('../../lib/ParameterParser.php');
+require_once(CONST_BasePath.'/lib/ParameterParser.php');
 
 
 function userError($sError)
 {
-    throw new Exception($sError);
+    throw new \Exception($sError);
 }
 
 class ParameterParserTest extends \PHPUnit\Framework\TestCase
@@ -55,14 +53,18 @@ class ParameterParserTest extends \PHPUnit\Framework\TestCase
 
     public function testGetIntWithNonNumber()
     {
-        $this->setExpectedException(Exception::class, "Integer number expected for parameter 'int4'");
+        $this->expectException(\Exception::class);
+        $this->expectExceptionMessage("Integer number expected for parameter 'int4'");
+
         (new ParameterParser(array('int4' => 'a')))->getInt('int4');
     }
 
 
     public function testGetIntWithEmpytString()
     {
-        $this->setExpectedException(Exception::class, "Integer number expected for parameter 'int5'");
+        $this->expectException(\Exception::class);
+        $this->expectExceptionMessage("Integer number expected for parameter 'int5'");
+
         (new ParameterParser(array('int5' => '')))->getInt('int5');
     }
 
@@ -85,20 +87,26 @@ class ParameterParserTest extends \PHPUnit\Framework\TestCase
 
     public function testGetFloatWithEmptyString()
     {
-        $this->setExpectedException(Exception::class, "Floating-point number expected for parameter 'float4'");
+        $this->expectException(\Exception::class);
+        $this->expectExceptionMessage("Floating-point number expected for parameter 'float4'");
+
         (new ParameterParser(array('float4' => '')))->getFloat('float4');
     }
 
     public function testGetFloatWithTextString()
     {
-        $this->setExpectedException(Exception::class, "Floating-point number expected for parameter 'float5'");
+        $this->expectException(\Exception::class);
+        $this->expectExceptionMessage("Floating-point number expected for parameter 'float5'");
+
         (new ParameterParser(array('float5' => 'a')))->getFloat('float5');
     }
 
 
     public function testGetFloatWithInvalidNumber()
     {
-        $this->setExpectedException(Exception::class, "Floating-point number expected for parameter 'float6'");
+        $this->expectException(\Exception::class);
+        $this->expectExceptionMessage("Floating-point number expected for parameter 'float6'");
+
         (new ParameterParser(array('float6' => '-55.')))->getFloat('float6');
     }
 
@@ -138,7 +146,9 @@ class ParameterParserTest extends \PHPUnit\Framework\TestCase
 
     public function testGetSetWithValueNotInSet()
     {
-        $this->setExpectedException(Exception::class, "Parameter 'val4' must be one of: foo, bar");
+        $this->expectException(\Exception::class);
+        $this->expectExceptionMessage("Parameter 'val4' must be one of: foo, bar");
+
         (new ParameterParser(array('val4' => 'faz')))->getSet('val4', array('foo', 'bar'));
     }
 
@@ -165,53 +175,93 @@ class ParameterParserTest extends \PHPUnit\Framework\TestCase
     {
         $oParams = new ParameterParser(array('accept-language' => ''));
         $this->assertSame(array(
-                           'short_name:default' => 'short_name:default',
                            'name:default' => 'name:default',
-                           'short_name' => 'short_name',
                            'name' => 'name',
                            'brand' => 'brand',
                            'official_name:default' => 'official_name:default',
+                           'short_name:default' => 'short_name:default',
                            'official_name' => 'official_name',
+                           'short_name' => 'short_name',
                            'ref' => 'ref',
                            'type' => 'type'
                           ), $oParams->getPreferredLanguages('default'));
 
         $oParams = new ParameterParser(array('accept-language' => 'de,en'));
         $this->assertSame(array(
-                           'short_name:de' => 'short_name:de',
                            'name:de' => 'name:de',
-                           'short_name:en' => 'short_name:en',
                            'name:en' => 'name:en',
-                           'short_name' => 'short_name',
                            'name' => 'name',
                            'brand' => 'brand',
                            'official_name:de' => 'official_name:de',
+                           'short_name:de' => 'short_name:de',
                            'official_name:en' => 'official_name:en',
+                           'short_name:en' => 'short_name:en',
                            'official_name' => 'official_name',
+                           'short_name' => 'short_name',
                            'ref' => 'ref',
                            'type' => 'type'
                           ), $oParams->getPreferredLanguages('default'));
 
         $oParams = new ParameterParser(array('accept-language' => 'fr-ca,fr;q=0.8,en-ca;q=0.5,en;q=0.3'));
         $this->assertSame(array(
-                           'short_name:fr-ca' => 'short_name:fr-ca',
                            'name:fr-ca' => 'name:fr-ca',
-                           'short_name:fr' => 'short_name:fr',
                            'name:fr' => 'name:fr',
-                           'short_name:en-ca' => 'short_name:en-ca',
                            'name:en-ca' => 'name:en-ca',
-                           'short_name:en' => 'short_name:en',
                            'name:en' => 'name:en',
-                           'short_name' => 'short_name',
                            'name' => 'name',
                            'brand' => 'brand',
                            'official_name:fr-ca' => 'official_name:fr-ca',
+                           'short_name:fr-ca' => 'short_name:fr-ca',
                            'official_name:fr' => 'official_name:fr',
+                           'short_name:fr' => 'short_name:fr',
                            'official_name:en-ca' => 'official_name:en-ca',
+                           'short_name:en-ca' => 'short_name:en-ca',
                            'official_name:en' => 'official_name:en',
+                           'short_name:en' => 'short_name:en',
+                           'official_name' => 'official_name',
+                           'short_name' => 'short_name',
+                           'ref' => 'ref',
+                           'type' => 'type',
+                          ), $oParams->getPreferredLanguages('default'));
+
+        $oParams = new ParameterParser(array('accept-language' => 'ja_rm,zh_pinyin'));
+        $this->assertSame(array(
+                           'name:ja_rm' => 'name:ja_rm',
+                           'name:zh_pinyin' => 'name:zh_pinyin',
+                           'name:ja' => 'name:ja',
+                           'name:zh' => 'name:zh',
+                           'name' => 'name',
+                           'brand' => 'brand',
+                           'official_name:ja_rm' => 'official_name:ja_rm',
+                           'short_name:ja_rm' => 'short_name:ja_rm',
+                           'official_name:zh_pinyin' => 'official_name:zh_pinyin',
+                           'short_name:zh_pinyin' => 'short_name:zh_pinyin',
+                           'official_name:ja' => 'official_name:ja',
+                           'short_name:ja' => 'short_name:ja',
+                           'official_name:zh' => 'official_name:zh',
+                           'short_name:zh' => 'short_name:zh',
                            'official_name' => 'official_name',
+                           'short_name' => 'short_name',
                            'ref' => 'ref',
                            'type' => 'type',
                           ), $oParams->getPreferredLanguages('default'));
     }
+
+    public function testHasSetAny()
+    {
+        $oParams = new ParameterParser(array(
+                                        'one' => '',
+                                        'two' => 0,
+                                        'three' => '0',
+                                        'four' => '1',
+                                        'five' => 'anystring'
+        ));
+        $this->assertFalse($oParams->hasSetAny(array()));
+        $this->assertFalse($oParams->hasSetAny(array('')));
+        $this->assertFalse($oParams->hasSetAny(array('unknown')));
+        $this->assertFalse($oParams->hasSetAny(array('one', 'two', 'three')));
+        $this->assertTrue($oParams->hasSetAny(array('one', 'four')));
+        $this->assertTrue($oParams->hasSetAny(array('four')));
+        $this->assertTrue($oParams->hasSetAny(array('five')));
+    }
 }
index 35a8a80480d2c503999432edfe230152b3be20c6..ab031bb0b0cdedfd3bb1b449a77c788f4de45eb3 100644 (file)
@@ -2,8 +2,31 @@
 
 namespace Nominatim;
 
-require_once '../../lib/Phrase.php';
+require_once(CONST_BasePath.'/lib/Phrase.php');
 
+class TokensFullSet
+{
+    public function containsAny($sTerm)
+    {
+        return true;
+    }
+}
+
+// phpcs:ignore PSR1.Classes.ClassDeclaration.MultipleClasses
+class TokensPartialSet
+{
+    public function __construct($aTokens)
+    {
+        $this->aTokens = array_flip($aTokens);
+    }
+
+    public function containsAny($sTerm)
+    {
+        return isset($this->aTokens[$sTerm]);
+    }
+}
+
+// phpcs:ignore PSR1.Classes.ClassDeclaration.MultipleClasses
 class PhraseTest extends \PHPUnit\Framework\TestCase
 {
 
@@ -21,6 +44,7 @@ class PhraseTest extends \PHPUnit\Framework\TestCase
     public function testEmptyPhrase()
     {
         $oPhrase = new Phrase('', '');
+        $oPhrase->computeWordSets(new TokensFullSet());
 
         $this->assertEquals(
             array(array('')),
@@ -32,6 +56,7 @@ class PhraseTest extends \PHPUnit\Framework\TestCase
     public function testSingleWordPhrase()
     {
         $oPhrase = new Phrase('a', '');
+        $oPhrase->computeWordSets(new TokensFullSet());
 
         $this->assertEquals(
             '(a)',
@@ -43,20 +68,23 @@ class PhraseTest extends \PHPUnit\Framework\TestCase
     public function testMultiWordPhrase()
     {
         $oPhrase = new Phrase('a b', '');
+        $oPhrase->computeWordSets(new TokensFullSet());
         $this->assertEquals(
             '(a b),(a|b)',
             $this->serializeSets($oPhrase->getWordSets())
         );
 
         $oPhrase = new Phrase('a b c', '');
+        $oPhrase->computeWordSets(new TokensFullSet());
         $this->assertEquals(
-            '(a b c),(a|b c),(a|b|c),(a b|c)',
+            '(a b c),(a|b c),(a b|c),(a|b|c)',
             $this->serializeSets($oPhrase->getWordSets())
         );
 
         $oPhrase = new Phrase('a b c d', '');
+        $oPhrase->computeWordSets(new TokensFullSet());
         $this->assertEquals(
-            '(a b c d),(a|b c d),(a|b|c d),(a|b|c|d),(a|b c|d),(a b|c d),(a b|c|d),(a b c|d)',
+            '(a b c d),(a b c|d),(a b|c d),(a|b c d),(a b|c|d),(a|b c|d),(a|b|c d),(a|b|c|d)',
             $this->serializeSets($oPhrase->getWordSets())
         );
     }
@@ -65,25 +93,47 @@ class PhraseTest extends \PHPUnit\Framework\TestCase
     public function testInverseWordSets()
     {
         $oPhrase = new Phrase('a b c', '');
+        $oPhrase->computeWordSets(new TokensFullSet());
         $oPhrase->invertWordSets();
 
         $this->assertEquals(
-            '(a b c),(c|a b),(c|b|a),(b c|a)',
+            '(a b c),(b c|a),(c|a b),(c|b|a)',
             $this->serializeSets($oPhrase->getWordSets())
         );
     }
 
 
-    public function testMaxDepth()
+    public function testMaxWordSets()
     {
         $oPhrase = new Phrase(join(' ', array_fill(0, 4, 'a')), '');
+        $oPhrase->computeWordSets(new TokensFullSet());
         $this->assertEquals(8, count($oPhrase->getWordSets()));
         $oPhrase->invertWordSets();
         $this->assertEquals(8, count($oPhrase->getWordSets()));
 
         $oPhrase = new Phrase(join(' ', array_fill(0, 18, 'a')), '');
-        $this->assertEquals(41226, count($oPhrase->getWordSets()));
+        $oPhrase->computeWordSets(new TokensFullSet());
+        $this->assertEquals(100, count($oPhrase->getWordSets()));
         $oPhrase->invertWordSets();
-        $this->assertEquals(41226, count($oPhrase->getWordSets()));
+        $this->assertEquals(100, count($oPhrase->getWordSets()));
+    }
+
+
+    public function testPartialTokensShortTerm()
+    {
+        $oPhrase = new Phrase('a b c d', '');
+        $oPhrase->computeWordSets(new TokensPartialSet(array('a', 'b', 'd', 'b c', 'b c d')));
+        $this->assertEquals(
+            '(a|b c d),(a|b c|d)',
+            $this->serializeSets($oPhrase->getWordSets())
+        );
+    }
+
+
+    public function testPartialTokensLongTerm()
+    {
+        $oPhrase = new Phrase(join(' ', array_fill(0, 18, 'a')), '');
+        $oPhrase->computeWordSets(new TokensPartialSet(array('a', 'a a a a a')));
+        $this->assertEquals(80, count($oPhrase->getWordSets()));
     }
 }
index 0a2131b92dd930ed1a3f05bfc5262b46ee713394..2b575a16c31a464a0eb4ec385a45097feb41320b 100644 (file)
@@ -2,16 +2,14 @@
 
 namespace Nominatim;
 
-@define('CONST_BasePath', '../../');
-
-require_once '../../lib/SearchContext.php';
+require_once(CONST_BasePath.'/lib/SearchContext.php');
 
 class SearchContextTest extends \PHPUnit\Framework\TestCase
 {
     private $oCtx;
 
 
-    protected function setUp()
+    protected function setUp(): void
     {
         $this->oCtx = new SearchContext();
     }
diff --git a/test/php/Nominatim/ShellTest.php b/test/php/Nominatim/ShellTest.php
new file mode 100644 (file)
index 0000000..d0222ee
--- /dev/null
@@ -0,0 +1,120 @@
+<?php
+
+namespace Nominatim;
+
+require_once(CONST_BasePath.'/lib/Shell.php');
+
+class ShellTest extends \PHPUnit\Framework\TestCase
+{
+    public function testNew()
+    {
+        $this->expectException('ArgumentCountError');
+        $this->expectExceptionMessage('Too few arguments to function');
+        $oCmd = new \Nominatim\Shell();
+
+
+        $oCmd = new \Nominatim\Shell('wc', '-l', 'file.txt');
+        $this->assertSame(
+            "wc -l 'file.txt'",
+            $oCmd->escapedCmd()
+        );
+    }
+
+    public function testaddParams()
+    {
+        $oCmd = new \Nominatim\Shell('grep');
+        $oCmd->addParams('-a', 'abc')
+               ->addParams(10);
+
+        $this->assertSame(
+            'grep -a abc 10',
+            $oCmd->escapedCmd(),
+            'no escaping needed, chained'
+        );
+
+        $oCmd = new \Nominatim\Shell('grep');
+        $oCmd->addParams();
+        $oCmd->addParams(null);
+        $oCmd->addParams('');
+
+        $this->assertEmpty($oCmd->aParams);
+        $this->assertSame('grep', $oCmd->escapedCmd(), 'empty params');
+
+        $oCmd = new \Nominatim\Shell('echo', '-n', 0);
+        $this->assertSame(
+            'echo -n 0',
+            $oCmd->escapedCmd(),
+            'zero param'
+        );
+
+        $oCmd = new \Nominatim\Shell('/path with space/do.php');
+        $oCmd->addParams('-a', ' b ');
+        $oCmd->addParams('--flag');
+        $oCmd->addParams('two words');
+        $oCmd->addParams('v=1');
+
+        $this->assertSame(
+            "'/path with space/do.php' -a ' b ' --flag 'two words' 'v=1'",
+            $oCmd->escapedCmd(),
+            'escape whitespace'
+        );
+
+        $oCmd = new \Nominatim\Shell('grep');
+        $oCmd->addParams(';', '|more&', '2>&1');
+
+        $this->assertSame(
+            "grep ';' '|more&' '2>&1'",
+            $oCmd->escapedCmd(),
+            'escape shell characters'
+        );
+    }
+
+    public function testaddEnvPair()
+    {
+        $oCmd = new \Nominatim\Shell('date');
+
+        $oCmd->addEnvPair('one', 'two words')
+             ->addEnvPair('null', null)
+             ->addEnvPair(null, 'null')
+             ->addEnvPair('empty', '')
+             ->addEnvPair('', 'empty');
+
+        $this->assertEquals(
+            array('one' => 'two words', 'empty' => ''),
+            $oCmd->aEnv
+        );
+
+        $oCmd->addEnvPair('one', 'overwrite');
+        $this->assertEquals(
+            array('one' => 'overwrite', 'empty' => ''),
+            $oCmd->aEnv
+        );
+    }
+
+    public function testClone()
+    {
+        $oCmd = new \Nominatim\Shell('wc', '-l', 'file.txt');
+        $oCmd2 = clone $oCmd;
+        $oCmd->addParams('--flag');
+        $oCmd2->addParams('--flag2');
+
+        $this->assertSame(
+            "wc -l 'file.txt' --flag",
+            $oCmd->escapedCmd()
+        );
+
+        $this->assertSame(
+            "wc -l 'file.txt' --flag2",
+            $oCmd2->escapedCmd()
+        );
+    }
+
+    public function testRun()
+    {
+        $oCmd = new \Nominatim\Shell('echo');
+
+        $this->assertSame(0, $oCmd->run());
+
+        // var_dump($sStdout);
+    }
+}
index 448940db2b3eabef8de0a4066049f0d0bc268528..f45e6633bb9cd831ede5cfba76c51dee4b0293ee 100644 (file)
@@ -2,18 +2,18 @@
 
 namespace Nominatim;
 
-require_once('../../lib/Status.php');
-require_once('DB.php');
+require_once(CONST_BasePath.'/lib/DB.php');
+require_once(CONST_BasePath.'/lib/Status.php');
 
-use Exception;
 
 class StatusTest extends \PHPUnit\Framework\TestCase
 {
 
-
     public function testNoDatabaseGiven()
     {
-        $this->setExpectedException(Exception::class, 'No database', 700);
+        $this->expectException(\Exception::class);
+        $this->expectExceptionMessage('No database');
+        $this->expectExceptionCode(700);
 
         $oDB = null;
         $oStatus = new Status($oDB);
@@ -22,28 +22,35 @@ class StatusTest extends \PHPUnit\Framework\TestCase
 
     public function testNoDatabaseConnectionFail()
     {
-        $this->setExpectedException(Exception::class, 'No database', 700);
+        $this->expectException(\Exception::class);
+        $this->expectExceptionMessage('Database connection failed');
+        $this->expectExceptionCode(700);
 
-        // causes 'Non-static method should not be called statically, assuming $this from incompatible context'
-        // failure on travis
-        // $oDB = \DB::connect('', false); // returns a DB_Error instance
+        $oDbStub = $this->getMockBuilder(Nominatim\DB::class)
+                        ->setMethods(array('connect'))
+                        ->getMock();
 
-        $oDB = new \DB_Error;
-        $oStatus = new Status($oDB);
-        $this->assertEquals('No database', $oStatus->status());
+        $oDbStub->method('connect')
+                ->will($this->returnCallback(function () {
+                    throw new \Nominatim\DatabaseError('psql connection problem', 500, null, 'unknown database');
+                }));
 
-        $oDB = null;
-        $oStatus = new Status($oDB);
+
+        $oStatus = new Status($oDbStub);
         $this->assertEquals('No database', $oStatus->status());
     }
 
 
     public function testModuleFail()
     {
-        $this->setExpectedException(Exception::class, 'Module call failed', 702);
+        $this->expectException(\Exception::class);
+        $this->expectExceptionMessage('Module call failed');
+        $this->expectExceptionCode(702);
 
         // stub has getOne method but doesn't return anything
-        $oDbStub = $this->getMock(\DB::class, array('getOne'));
+        $oDbStub = $this->getMockBuilder(Nominatim\DB::class)
+                        ->setMethods(array('connect', 'getOne'))
+                        ->getMock();
 
         $oStatus = new Status($oDbStub);
         $this->assertNull($oStatus->status());
@@ -52,9 +59,13 @@ class StatusTest extends \PHPUnit\Framework\TestCase
 
     public function testWordIdQueryFail()
     {
-        $this->setExpectedException(Exception::class, 'No value', 704);
+        $this->expectException(\Exception::class);
+        $this->expectExceptionMessage('No value');
+        $this->expectExceptionCode(704);
 
-        $oDbStub = $this->getMock(\DB::class, array('getOne'));
+        $oDbStub = $this->getMockBuilder(Nominatim\DB::class)
+                        ->setMethods(array('connect', 'getOne'))
+                        ->getMock();
 
         // return no word_id
         $oDbStub->method('getOne')
@@ -70,7 +81,9 @@ class StatusTest extends \PHPUnit\Framework\TestCase
 
     public function testOK()
     {
-        $oDbStub = $this->getMock(\DB::class, array('getOne'));
+        $oDbStub = $this->getMockBuilder(Nominatim\DB::class)
+                        ->setMethods(array('connect', 'getOne'))
+                        ->getMock();
 
         $oDbStub->method('getOne')
                 ->will($this->returnCallback(function ($sql) {
@@ -84,7 +97,9 @@ class StatusTest extends \PHPUnit\Framework\TestCase
 
     public function testDataDate()
     {
-        $oDbStub = $this->getMock(\DB::class, array('getOne'));
+        $oDbStub = $this->getMockBuilder(Nominatim\DB::class)
+                        ->setMethods(array('getOne'))
+                        ->getMock();
      
         $oDbStub->method('getOne')
                 ->willReturn(1519430221);
index ad91dff195eaf111d67675b7251cc4543e2f9fb5..191a09dceeb6a002a5c6c4103cb0557ad06178a3 100644 (file)
@@ -2,17 +2,16 @@
 
 namespace Nominatim;
 
-@define('CONST_BasePath', '../../');
+require_once(CONST_BasePath.'/lib/TokenList.php');
 
-require_once '../../lib/db.php';
-require_once '../../lib/cmd.php';
-require_once '../../lib/TokenList.php';
 
 class TokenTest extends \PHPUnit\Framework\TestCase
 {
-    protected function setUp()
+    protected function setUp(): void
     {
-        $this->oNormalizer = $this->getMock(\MockNormalizer::class, array('transliterate'));
+        $this->oNormalizer = $this->getMockBuilder(\MockNormalizer::class)
+                                  ->setMethods(array('transliterate'))
+                                  ->getMock();
         $this->oNormalizer->method('transliterate')
                           ->will($this->returnCallback(function ($text) {
                               return strtolower($text);
@@ -55,7 +54,18 @@ class TokenTest extends \PHPUnit\Framework\TestCase
     {
         $this->expectOutputRegex('/<p><tt>/');
 
-        $oDbStub = $this->getMock(\DB::class, array('getAll'));
+        $oDbStub = $this->getMockBuilder(Nominatim\DB::class)
+                        ->setMethods(array('getAll', 'getDBQuotedList'))
+                        ->getMock();
+
+        $oDbStub->method('getDBQuotedList')
+                ->will($this->returnCallback(function ($aVals) {
+                    return array_map(function ($sVal) {
+                        return "'".$sVal."'";
+                    }, $aVals);
+                }));
+
+
         $oDbStub->method('getAll')
                 ->will($this->returnCallback(function ($sql) {
                     $aResults = array();
index b3d9bbc7f3711e882119cd6b3af051245d859d04..d6968717b5b46bb699b1eb1486d9d1c1327f3194 100644 (file)
@@ -1 +1,4 @@
 <?php
+    @define('CONST_BasePath', '../..');
+    @define('CONST_Debug', true);
+    @define('CONST_NoAccessControl', false);
diff --git a/test/php/fixtures/address_details_10_downing_street.json b/test/php/fixtures/address_details_10_downing_street.json
new file mode 100644 (file)
index 0000000..853a6c0
--- /dev/null
@@ -0,0 +1,217 @@
+[{"place_id":194663412,
+ "osm_type":null,
+ "osm_id":null,
+ "name":{"name": "10 Downing Street", "name:en": "10 Downing Street", "name:es": "10 de Downing Street", "name:he": "דאונינג 10", "name:ko": "다우닝 가 10번지", "name:zh": "唐寧街10號"},
+ "class":"tourism",
+ "type":"attraction",
+ "admin_level":null,
+ "fromarea":true,
+ "isaddress":true,
+ "rank_address":29,
+ "distance":0,
+ "localname":"10 Downing Street"},
+{"place_id":194663412,
+ "osm_type":null,
+ "osm_id":null,
+ "name":{"ref": "10"},
+ "class":"place",
+ "type":"house_number",
+ "admin_level":null,
+ "fromarea":true,
+ "isaddress":true,
+ "rank_address":28,
+ "distance":0,
+ "localname":"10"},
+{"place_id":68310941,
+ "osm_type":"W",
+ "osm_id":4244999,
+ "name":{"name": "Downing Street"},
+ "class":"highway",
+ "type":"residential",
+ "admin_level":15,
+ "fromarea":true,
+ "isaddress":true,
+ "rank_address":26,
+ "distance":0,
+ "localname":"Downing Street"},
+{"place_id":16037318,
+ "osm_type":"N",
+ "osm_id":1653239257,
+ "name":{"name": "St. James's"},
+ "class":"place",
+ "type":"neighbourhood",
+ "admin_level":15,
+ "fromarea":true,
+ "isaddress":true,
+ "rank_address":22,
+ "distance":0.00982435489434447,
+ "localname":"St. James's"},
+{"place_id":51691981,
+ "osm_type":"N",
+ "osm_id":3937587633,
+ "name":{"name": "St Clement Danes"},
+ "class":"place",
+ "type":"neighbourhood",
+ "admin_level":15,
+ "fromarea":true,
+ "isaddress":false,
+ "rank_address":22,
+ "distance":0.0128768181947227,
+ "localname":"St Clement Danes"},
+{"place_id":22208313,
+ "osm_type":"N",
+ "osm_id":2290086954,
+ "name":{"name": "Covent Garden"},
+ "class":"place",
+ "type":"suburb",
+ "admin_level":15,
+ "fromarea":true,
+ "isaddress":true,
+ "rank_address":20,
+ "distance":0.00935748249317067,
+ "localname":"Covent Garden"},
+{"place_id":21742712,
+ "osm_type":"N",
+ "osm_id":2288030397,
+ "name":{"name": "Millbank"},
+ "class":"place",
+ "type":"suburb",
+ "admin_level":15,
+ "fromarea":true,
+ "isaddress":false,
+ "rank_address":20,
+ "distance":0.0106525181285902,
+ "localname":"Millbank"},
+{"place_id":122775,
+ "osm_type":"N",
+ "osm_id":26745371,
+ "name":{"name": "St Giles"},
+ "class":"place",
+ "type":"suburb",
+ "admin_level":15,
+ "fromarea":true,
+ "isaddress":false,
+ "rank_address":20,
+ "distance":0.0136188357358441,
+ "localname":"St Giles"},
+{"place_id":134882,
+ "osm_type":"N",
+ "osm_id":27553719,
+ "name":{"name": "Lambeth"},
+ "class":"place",
+ "type":"suburb",
+ "admin_level":15,
+ "fromarea":true,
+ "isaddress":false,
+ "rank_address":20,
+ "distance":0.0093308163978298,
+ "localname":"Lambeth"},
+{"place_id":194276676,
+ "osm_type":"R",
+ "osm_id":51781,
+ "name":{"name": "City of Westminster", "name:be": "Вэстмінстэр", "name:cy": "San Steffan", "name:en": "Westminster", "name:he": "וסטמינסטר", "name:ru": "Вестминстер"},
+ "class":"place",
+ "type":"city",
+ "admin_level":8,
+ "fromarea":true,
+ "isaddress":true,
+ "rank_address":16,
+ "distance":0.0340909562148044,
+ "localname":"Westminster"},
+{"place_id":195398522,
+ "osm_type":"N",
+ "osm_id":107775,
+ "name":{"name": "London", "name:ab": "Лондан", "name:af": "Londen", "name:am": "ለንደን", "name:an": "Londres", "name:ar": "لندن", "name:ba": "Лондон", "name:be": "Лондан", "name:bg": "Лондон", "name:bn": "লন্ডন", "name:bo": "ལོན་ཊོན།", "name:br": "Londrez", "name:ca": "Londres", "name:co": "Londra", "name:cs": "Londýn", "name:cu": "Лондонъ", "name:cv": "Лондон", "name:cy": "Llundain", "name:de": "London", "name:el": "Λονδίνο", "name:en": "London", "name:eo": "Londono", "name:es": "Londres", "name:eu": "Londres", "name:fa": "لندن", "name:fi": "Lontoo", "name:fr": "Londres", "name:fy": "Londen", "name:ga": "Londain", "name:gd": "Lunnainn", "name:gl": "Londres - London", "name:gn": "Londye", "name:gu": "લંડન", "name:gv": "Lunnin", "name:he": "לונדון", "name:hi": "लंदन", "name:ht": "Lonn", "name:hu": "London", "name:hy": "Լոնդոն", "name:is": "Lundúnir", "name:it": "Londra", "name:ja": "ロンドン", "name:ka": "ლონდონი", "name:kk": "Лондон", "name:kn": "ಲಂಡನ್", "name:ko": "런던", "name:ku": "London", "name:kv": "Лондон", "name:kw": "Loundres", "name:ky": "Лондон", "name:la": "Londinium", "name:li": "Londe", "name:ln": "Londoni", "name:lo": "ລອນດອນ", "name:lt": "Londonas", "name:lv": "Londona", "name:mi": "Rānana", "name:mk": "Лондон", "name:ml": "ലണ്ടൻ", "name:mn": "Лондон", "name:mr": "लंडन", "name:mt": "Londra", "name:my": "လန်ဒန်မြို့", "name:ne": "लण्डन", "name:nl": "Londen", "name:no": "London", "name:oc": "Londres", "name:or": "ଲଣ୍ଡନ", "name:os": "Лондон", "name:pl": "Londyn", "name:ps": "لندن", "name:pt": "Londres", "name:rm": "Londra", "name:ro": "Londra", "name:ru": "Лондон", "name:sa": "लन्डन्", "name:sc": "Londra", "name:si": "ලන්ඩන්", "name:sk": "Londýn", "name:sq": "Londra", "name:sr": "Лондон", "name:sv": "London", "name:ta": "இலண்டன்", "name:te": "లండన్", "name:tg": "Лондон", "name:th": "ลอนดอน", "name:tl": "Londres", "name:tr": "Londra", "name:tt": "Лондон", "name:uk": "Лондон", "name:ur": "لندن", "name:vi": "Luân Đôn", "name:wo": "Londar", "name:yi": "לאנדאן", "name:yo": "Lọndọnu", "name:zh": "倫敦", "name:zu": "ILondon", "name:ang": "Lunden", "name:arc": "ܠܘܢܕܘܢ", "name:arz": "لندن", "name:ast": "Londres", "name:bcl": "Londres", "name:cdo": "Lùng-dŭng", "name:ckb": "لەندەن", "name:diq": "Londra", "name:eml": "Lòndra", "name:ext": "Londri", "name:frp": "Londres", "name:gan": "倫敦", "name:haw": "Lākana", "name:ilo": "Londres", "name:jbo": "london", "name:koi": "Лондон", "name:krc": "Лондон", "name:lad": "Londra", "name:lbe": "Лондон", "name:lez": "Лондон", "name:lij": "Londra", "name:lmo": "Lundra", "name:mhr": "Лондон", "name:mrj": "Лондон", "name:mwl": "Londres", "name:mzn": "لندن", "name:nah": "Londres", "name:nap": "Londra", "name:new": "लण्डन", "name:nrm": "Londres", "name:pcd": "Londe", "name:pms": "Londra", "name:pnb": "لندن", "name:pnt": "Λονδίνο", "name:rue": "Лондон", "name:sah": "Лондон", "name:scn": "Londra", "name:sco": "Lunnon", "name:szl": "Lůndůn", "name:tet": "Londres", "name:tpi": "Landen", "name:tzl": "Londra", "name:udm": "Лондон", "name:vec": "Łondra", "name:vls": "Londn", "name:wuu": "伦敦", "name:xmf": "ლონდონი", "name:yue": "倫敦", "name:zea": "Londen", "name:nds-nl": "Londen", "name:bat-smg": "Londons", "name:roa-rup": "Londra", "name:roa-tara": "Londre", "name:be-tarask": "Лёндан", "name:zh_pinyin": "Lúndūn", "name:zh-classical": "倫敦", "name:zh-simplified": "伦敦", "name:zh-traditional": "倫敦"},
+ "class":"place",
+ "type":"city",
+ "admin_level":2,
+ "fromarea":true,
+ "isaddress":false,
+ "rank_address":16,
+ "distance":0.00412384196971048,
+ "localname":"London"},
+{"place_id":193774423,
+ "osm_type":"R",
+ "osm_id":65606,
+ "name":{"name": "London", "name:be": "Лондан", "name:ca": "Londres", "name:el": "Λονδίνο", "name:en": "London", "name:eo": "Londono", "name:es": "Londres", "name:fa": "لندن", "name:fi": "Lontoo", "name:fr": "Londres", "name:fy": "Londen", "name:gl": "Londres", "name:hi": "लंदन", "name:lt": "Londonas", "name:nl": "Londen", "name:pl": "Londyn", "name:pt": "Londres", "name:ru": "Лондон", "name:uk": "Лондон", "name:vi": "Luân Đôn", "name:zh": "伦敦", "int_name": "London", "name:szl": "Lůndůn", "name:tzl": "Londra", "name:be-tarask": "Лёндан"},
+ "class":"place",
+ "type":"city",
+ "admin_level":6,
+ "fromarea":true,
+ "isaddress":true,
+ "rank_address":12,
+ "distance":0.0172243361058611,
+ "localname":"London"},
+{"place_id":194000080,
+ "osm_type":"R",
+ "osm_id":175342,
+ "name":{"name": "Greater London", "name:be": "Вялікі Лондан", "name:de": "Groß-London", "name:en": "Greater London", "name:fr": "Grand Londres", "name:lt": "Didysis Londonas", "name:ru": "Большой Лондон", "name:uk": "Великий Лондон", "official_name": "Greater London (incl. City of London)", "name:be-tarask": "Вялікі Лёндан"},
+ "class":"boundary",
+ "type":"administrative",
+ "admin_level":5,
+ "fromarea":true,
+ "isaddress":true,
+ "rank_address":10,
+ "distance":0.0172532381571105,
+ "localname":"Greater London"},
+{"place_id":194325361,
+ "osm_type":"R",
+ "osm_id":58447,
+ "name":{"name": "England", "name:be": "Англія", "name:br": "Bro-Saoz", "name:ca": "Anglaterra", "name:cs": "Anglie", "name:cy": "Lloegr", "name:de": "England", "name:el": "Αγγλία", "name:en": "England", "name:eo": "Anglujo", "name:es": "Inglaterra", "name:fi": "Englanti", "name:fr": "Angleterre", "name:fy": "Ingelân", "name:ga": "Sasana", "name:gd": "Sasainn", "name:gv": "Sostyn", "name:he": "אנגליה", "name:hu": "Anglia", "name:ia": "Anglaterra", "name:io": "Anglia", "name:it": "Inghilterra", "name:la": "Anglia", "name:lt": "Anglija", "name:nl": "Engeland", "name:pl": "Anglia", "name:pt": "Inglaterra", "name:ru": "Англия", "name:sk": "Anglicko", "name:sv": "England", "name:tr": "İngiltere", "name:uk": "Англія", "name:vi": "Anh", "name:vo": "Linglän", "name:zh": "英格蘭", "name:hsb": "Jendźelska", "name:nds": "England", "name:tok": "ma Inli", "name:tzl": "Anglatzara", "alt_name:eo": "Anglio", "alt_name:ia": "Anglia", "old_name:vi": "Anh Quốc", "alt_name:nds": "Ingland", "name:be-tarask": "Ангельшчына", "name:zh-classical": "英格蘭", "name:zh-simplified": "英格兰", "name:zh-traditional": "英格蘭"},
+ "class":"boundary",
+ "type":"administrative",
+ "admin_level":4,
+ "fromarea":true,
+ "isaddress":true,
+ "rank_address":8,
+ "distance":1.75192967136328,
+ "localname":"England"},
+{"place_id":null,
+ "osm_type":null,
+ "osm_id":null,
+ "name":{"ref": "SW1A 2AA"},
+ "class":"place",
+ "type":"postcode",
+ "admin_level":null,
+ "fromarea":true,
+ "isaddress":true,
+ "rank_address":5,
+ "distance":0,
+ "localname":"SW1A 2AA"},
+{"place_id":40715006,
+ "osm_type":"N",
+ "osm_id":3055075992,
+ "name":{"ref": "SW1A 2AQ"},
+ "class":"place",
+ "type":"postcode",
+ "admin_level":15,
+ "fromarea":true,
+ "isaddress":false,
+ "rank_address":5,
+ "distance":0.00172905579146705,
+ "localname":"SW1A 2AQ"},
+{"place_id":194354400,
+ "osm_type":"R",
+ "osm_id":62149,
+ "name":{"name": "United Kingdom", "name:ab": "Британиа Ду", "name:af": "Verenigde Koninkryk", "name:ak": "United Kingdom", "name:am": "ዩናይትድ ኪንግደም", "name:an": "Reino Unito", "name:ar": "المملكة المتحدة", "name:az": "Böyük Britaniya", "name:ba": "Бөйөк Британия", "name:be": "Вялікабрытанія", "name:bg": "Обединено кралство Великобритания и Северна Ирландия", "name:bi": "Unaeted Kingdom", "name:bm": "Angilɛtɛri", "name:bn": "যুক্তরাজ্য", "name:bo": "དབྱིན་ཇི་མཉམ་འབྲེལ།", "name:br": "Rouantelezh-Unanet", "name:bs": "Ujedinjeno Kraljevstvo Velike Britanije i Sjeverne Irske", "name:ca": "Regne Unit", "name:ce": "Йоккха Британи", "name:co": "Regnu Unitu", "name:cs": "Spojené království", "name:cu": "Вєлика Британїꙗ", "name:cv": "Аслă Британи", "name:cy": "Deyrnas Unedig", "name:da": "Storbritannien", "name:de": "Vereinigtes Königreich", "name:dv": "ޔުނައިޓެޑް ކިންގްޑަމް", "name:dz": "ཡུ་ནའི་ཊེཊ་ཀིང་ཌམ", "name:ee": "United Kingdom", "name:el": "Ηνωμένο Βασίλειο", "name:en": "United Kingdom", "name:eo": "Britujo", "name:es": "Reino Unido", "name:et": "Suurbritannia", "name:eu": "Erresuma Batua", "name:fa": "بریتانیا", "name:ff": "Laamateeri Rentundi", "name:fi": "Yhdistynyt kuningaskunta", "name:fo": "Stóra Bretland", "name:fr": "Royaume-Uni", "name:fy": "Feriene Keninkryk", "name:ga": "An Ríocht Aontaithe", "name:gd": "An Rìoghachd Aonaichte", "name:gl": "Reino Unido", "name:gn": "Tavetã Joaju", "name:gu": "યુનાઇટેડ કિંગડમ", "name:gv": "Reeriaght Unnaneysit", "name:ha": "Birtaniya", "name:he": "הממלכה המאוחדת", "name:hi": "यूनाइटेड किंगडम", "name:hr": "Ujedinjeno Kraljevstvo", "name:ht": "Wayòm Ini", "name:hu": "Egyesült Királyság", "name:hy": "Միացյալ Թագավորություն", "name:ia": "Regno Unite", "name:id": "Britania Raya", "name:ie": "Reyatu Unit", "name:ig": "Obodoézè Nà Ofú", "name:ii": "ꑱꇩ", "name:io": "Unionita Rejio", "name:is": "Bretland", "name:it": "Regno Unito", "name:ja": "イギリス", "name:jv": "Britania Raya", "name:ka": "გაერთიანებული სამეფო", "name:kg": "Royaume-Uni", "name:ki": "Ngeretha", "name:kk": "Ұлыбритания", "name:kl": "Tuluit Nunaat", "name:km": "រាជាណាចក្ររួម", "name:kn": "ಯುನೈಟೆಡ್ ಕಿಂಗ್ಡಂ", "name:ko": "영국", "name:ks": "یُنایٹِڑ کِنٛگڈَم", "name:ku": "Keyaniya Yekbûyî", "name:kv": "Ыджыд Британия", "name:kw": "Ruwvaneth Unys", "name:ky": "Улуу Британия жана Түндүк Ирландия", "name:la": "Britanniarum Regnum", "name:lb": "Groussbritannien an Nordirland", "name:lg": "Bungereza", "name:li": "Vereineg Keuninkriek", "name:ln": "Ingɛlɛ́tɛlɛ", "name:lo": "ສະຫະລາດຊະອານາຈັກ", "name:lt": "Jungtinė Karalystė", "name:lv": "Apvienotā Karaliste", "name:mg": "Fanjakana Mitambatra", "name:mi": "Kīngitanga Kotahi", "name:mk": "Обединето Кралство", "name:ml": "യുണൈറ്റഡ് കിങ്ഡം", "name:mn": "Их Британи", "name:mr": "युनायटेड किंग्डम", "name:ms": "United Kingdom", "name:mt": "Renju Unit", "name:my": "ယူနိုက်တက်ကင်းဒမ်းနိုင်ငံ", "name:na": "Ingerand", "name:ne": "संयुक्त अधिराज्य", "name:nl": "Verenigd Koninkrijk", "name:nn": "Storbritannia", "name:no": "Storbritannia", "name:nv": "Tótaʼ Dinéʼiʼ Bikéyah", "name:oc": "Reialme Unit", "name:or": "ଯୁକ୍ତରାଜ୍ୟ", "name:os": "Стыр Британи", "name:pa": "ਸੰਯੁਕਤ ਬਾਦਸ਼ਾਹੀ", "name:pl": "Wielka Brytania", "name:ps": "بريتانيا", "name:pt": "Reino Unido", "name:qu": "Hukllachasqa Qhapaq Suyu", "name:rm": "Reginavel Unì", "name:rn": "Ubwongereza", "name:ro": "Regatul Unit al Marii Britanii și al Irlandei de Nord", "name:ru": "Великобритания", "name:rw": "Ubwongereza", "name:sa": "संयुक्त अधिराज्य", "name:sc": "Rennu Auniadu", "name:se": "Ovttastuvvan gonagasriika", "name:sg": "Ködörögbïä--Ôko", "name:sh": "Ujedinjeno Kraljevstvo", "name:si": "එක්සත් රාජධානිය", "name:sk": "Spojené kráľovstvo", "name:sl": "Združeno kraljestvo Velike Britanije in Severne Irske", "name:sn": "United Kingdom", "name:so": "Midowga boqortooyada Britan", "name:sq": "Mbretëria e Bashkuar e Britanisë dhe Irlandës së Veriut", "name:sr": "Уједињено Краљевство", "name:ss": "United Kingdom", "name:su": "Britania", "name:sv": "Storbritannien", "name:sw": "Ufalme wa Muungano", "name:ta": "ஐக்கிய இராச்சியம்", "name:te": "యునైటెడ్ కింగ్డమ్", "name:tg": "Подшоҳии Муттаҳида", "name:th": "สหราชอาณาจักร", "name:ti": "እንግሊዝ", "name:tl": "Nagkakaisang Kaharian", "name:to": "Pilitānia", "name:tr": "Birleşik Krallık", "name:tt": "Бөекбритания", "name:tw": "United Kingdom", "name:ty": "Paratāne", "name:ug": "بۈيۈك بېرىتانىيە", "name:uk": "Велика Британія", "name:ur": "برطانیہ", "name:uz": "Birlashgan Qirollik", "name:vi": "Vương quốc Anh", "name:vo": "Regän Pebalöl", "name:wo": "Nguur-Yu-Bennoo", "name:yi": "פאראייניגטע קעניגרייך", "name:yo": "Ilẹ̀ọba Aṣọ̀kan", "name:za": "Yinghgoz", "name:zh": "英國", "name:zu": "Umbuso Ohlangeneyo", "alt_name": "United Kingdom; UK; Britain; Great Britain", "int_name": "United Kingdom", "name:als": "Vereinigtes Königreich", "name:ang": "Geāned Cynerīce", "name:arc": "ܡܠܟܘܬܐ ܡܚܝܕܬܐ", "name:arz": "المملكه المتحده", "name:ast": "Reinu Xuníu", "name:bar": "Vaeinigts Kinireich", "name:bcl": "Reyno Unido", "name:bjn": "Britania Raya", "name:bpy": "তিলপারাজ্য", "name:bug": "United Kingdom", "name:bxr": "Нэгдсэн Вант Улс", "name:cdo": "Ĭng-guók", "name:ceb": "Hiniusang Gingharian", "name:chr": "ᎡᎵᏏᎯ", "name:chy": "United Kingdom", "name:ckb": "شانشینی یەکگرتوو", "name:crh": "Büyük Britaniya", "name:csb": "Wiôlgô Britanijô", "name:diq": "Qraliya Yewbiyayiye", "name:dsb": "Wjelika Britaniska", "name:eml": "Régn Unî", "name:ext": "Réinu Uniu", "name:frp": "Royômo-Uni", "name:frr": "Feriind Kiningrik", "name:fur": "Ream Unît", "name:gag": "Büük Britaniya", "name:gan": "英國", "name:hak": "Yîn-koet", "name:haw": "Aupuni Mōʻī Hui Pū ʻia", "name:hif": "United Kingdom", "name:hsb": "Zjednoćene kralestwo", "name:ilo": "Nagkaykaysa a Pagarian", "name:jbo": "ritygu'e", "name:kab": "Legliz", "name:kbd": "Британиэшхуэ", "name:koi": "Ыджыт Бритму", "name:krc": "Уллу Британия", "name:ksh": "Jrußbritannie", "name:lad": "Reyno Unido", "name:lez": "ЧIехибритания", "name:lfn": "Rena Unida", "name:lij": "Regno Unïo", "name:lmo": "Regn Ünì", "name:ltg": "Lelbrytaneja", "name:mhr": "Ушымо Королевстве", "name:mrj": "Кого Британи", "name:mwl": "Reino Ounido", "name:mzn": "بریتانیا", "name:nah": "Tlacetilīlli Huēyitlahtohcāyōtl", "name:nap": "Gran Vretagna", "name:nds": "Vereenigt Königriek vun Grootbritannien un Noordirland", "name:nov": "Unionati Regia", "name:nrm": "Rouoyaume Unni", "name:pag": "Reino Unido", "name:pam": "Pisanmetung a Ka-arian", "name:pap": "Reino Uni", "name:pcd": "Roéyôme-Uni", "name:pih": "Yunitid Kingdum", "name:pms": "Regn Unì", "name:pnb": "برطانیہ", "name:pnt": "Ηνωμένο Βασίλειο", "name:rmy": "Phandlo Thagaripen la Bare Britaniyako thai le Nordutne Irlandesko", "name:rue": "Велика Брітанія", "name:sah": "Холбоhуктаах Хоруоллук", "name:scn": "Regnu Unitu", "name:sco": "Unitit Kinrick", "name:srn": "Ingriskondre", "name:stq": "Fereeniged Köönichriek fon Groot-Britannien un Noudirlound", "name:szl": "Wjelgo Brytańijo", "name:tet": "Reinu Naklibur", "name:tok": "ma Juke", "name:tpi": "Yunaitet Kingdom", "name:tzl": "Regipäts Viensiçat", "name:udm": "Великобритания", "name:vec": "Regno Unìo", "name:vep": "Sur' Britanii", "name:vls": "Verênigd Keunienkryk", "name:war": "Reino Unido", "name:wuu": "英国", "name:xal": "Ик Бритишин болн Ар Гәәлгүдин Ниицәтә Нутг", "name:xmf": "გოართოიანაფილი ომაფე", "name:yue": "英國", "name:zea": "Vereênigd Konienkriek", "name:zh_py": "Yingguo", "short_name": "UK", "alt_name:eo": "Britio", "alt_name:sr": "УК;У.К.", "alt_name:vi": "Vương quốc Liên hiệp Anh", "name:nds-nl": "Verienigd Keuninkriek", "name:zh_pyt": "Yīngguó", "name:bat-smg": "Jongtėnė Karalīstė", "name:cbk-zam": "Reinos Unidos de Gran Britania y Norte Irelandia", "name:fiu-vro": "Ütiskuningriik", "name:roa-rup": "Britania Mari", "name:roa-tara": "Regne Aunìte", "official_name": "United Kingdom of Great Britain and Northern Ireland", "short_name:el": "ΗΒ", "short_name:vo": "Britän", "name:be-tarask": "Вялікабрытанія", "name:zh-min-nan": "Liân-ha̍p Ông-kok", "official_name:be": "Злучанае Каралеўства Вялікабрытаніі і Паўночнай Ірландыі", "official_name:br": "Rouantelezh Unanet Breizh-Veur ha Norzhiwerzhon", "official_name:ca": "Regne Unit de Gran Bretanya i Irlanda del Nord", "official_name:cs": "Spojené království Velké Británie a Severního Irska", "official_name:de": "Vereinigtes Königreich Großbritannien und Nordirland", "official_name:el": "Ηνωμένο Βασίλειο της Μεγάλης Βρετανίας και της Βόρειας Ιρλανδίας", "official_name:en": "United Kingdom of Great Britain and Northern Ireland", "official_name:eo": "Unuiĝinta Reĝlando de Granda Britujo kaj Nord-Irlando", "official_name:es": "Reino Unido de Gran Bretaña", "official_name:et": "Suurbritannia ja Põhja-Iiri Ühendkuningriik", "official_name:fr": "Royaume-Uni de Grande-Bretagne et d'Irlande du Nord", "official_name:hr": "Ujedinjeno Kraljevstvo Velike Britanije i Sjeverne Irske", "official_name:id": "Perserikatan Kerajaan Britania Raya dan Irlandia Utara", "official_name:it": "Regno Unito di Gran Bretagna e Irlanda del Nord", "official_name:ja": "グレートブリテン及び北アイルランド連合王国", "official_name:ku": "Keyaniya Yekbûyî ya Brîtaniya Mezin û Bakurê Îrlandê", "official_name:lb": "Vereenegt Kinnekräich vu Groussbritannien an Nordirland", "official_name:no": "Det forente kongeriket Storbritannia og Nord-Irland", "official_name:pl": "Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej", "official_name:pt": "Reino Unido da Grã-Bretanha e Irlanda do Norte", "official_name:ru": "Соединённое королевство Великобритании и Северной Ирландии", "official_name:sk": "Spojené kráľovstvo Veľkej Británie a Severného Írska", "official_name:sl": "Združeno kraljestvo Velike Britanije in Severne Irske", "official_name:sr": "Уједињено Краљевство Велике Британије и Северне Ирске", "official_name:sv": "Förenade konungariket Storbritannien och Nordirland", "official_name:vi": "Vương quốc Liên hiệp Anh và Bắc Ireland", "name:abbreviation": "UK", "name:zh-classical": "英國", "official_name:scn": "Regnu Unitu di Gran Britagna e Irlanna dû Nord", "name:zh-simplified": "英国", "name:zh-traditional": "英國"},
+ "class":"place",
+ "type":"country",
+ "admin_level":2,
+ "fromarea":true,
+ "isaddress":true,
+ "rank_address":4,
+ "distance":4.56060933645498,
+ "localname":"United Kingdom"},
+{"place_id":null,
+ "osm_type":null,
+ "osm_id":null,
+ "name":{"ref": "gb"},
+ "class":"place",
+ "type":"country_code",
+ "admin_level":null,
+ "fromarea":true,
+ "isaddress":false,
+ "rank_address":4,
+ "distance":0,
+ "localname":"gb"}
+]
\ No newline at end of file
similarity index 80%
rename from phpunit.xml
rename to test/php/phpunit.xml
index addce5ce37154a96df2e505c800bd1bbe193e9f3..bc07177ce8dfa2c84abf093390b4539964551b1d 100644 (file)
@@ -7,14 +7,14 @@
     convertWarningsToExceptions="true"
     processIsolation="false"
     stopOnFailure="false"
-    syntaxCheck="true"
-    bootstrap="test/php/bootstrap.php"
+    bootstrap="./bootstrap.php"
+    beStrictAboutTestsThatDoNotTestAnything="true"
     >
     <php>
     </php>
     <testsuites>
         <testsuite name="Nominatim PHP Test Suite">
-            <directory>./test/php/Nominatim</directory>
+            <directory>./Nominatim</directory>
         </testsuite>
     </testsuites>
     <filter>
diff --git a/test/testdb/wikimedia-importance.sql.gz b/test/testdb/wikimedia-importance.sql.gz
new file mode 100644 (file)
index 0000000..1024f72
Binary files /dev/null and b/test/testdb/wikimedia-importance.sql.gz differ
diff --git a/test/testdb/wikipedia_article.sql.bin b/test/testdb/wikipedia_article.sql.bin
deleted file mode 100644 (file)
index 628e2af..0000000
Binary files a/test/testdb/wikipedia_article.sql.bin and /dev/null differ
diff --git a/test/testdb/wikipedia_redirect.sql.bin b/test/testdb/wikipedia_redirect.sql.bin
deleted file mode 100644 (file)
index 9c4b513..0000000
Binary files a/test/testdb/wikipedia_redirect.sql.bin and /dev/null differ
diff --git a/utils/blocks.php b/utils/blocks.php
deleted file mode 100755 (executable)
index 761ab9e..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#!@PHP_BIN@ -Cq
-<?php
-
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
-require_once(CONST_BasePath.'/lib/init-cmd.php');
-ini_set('memory_limit', '800M');
-
-$aCMDOptions
- = array(
-    'Manage service blocks / restrictions',
-    array('help', 'h', 0, 1, 0, 0, false, 'Show Help'),
-    array('quiet', 'q', 0, 1, 0, 0, 'bool', 'Quiet output'),
-    array('verbose', 'v', 0, 1, 0, 0, 'bool', 'Verbose output'),
-    array('list', 'l', 0, 1, 0, 0, 'bool', 'List recent blocks'),
-    array('delete', 'd', 0, 1, 0, 0, 'bool', 'Clear recent blocks list'),
-    array('flush', '', 0, 1, 0, 0, 'bool', 'Flush all blocks / stats'),
-   );
-getCmdOpt($_SERVER['argv'], $aCMDOptions, $aResult, true, true);
-
-$m = getBucketMemcache();
-if (!$m) {
-    echo "ERROR: Bucket memcache is not configured\n";
-    exit;
-}
-
-if ($aResult['list']) {
-    $iCurrentSleeping = $m->get('sleepCounter');
-    echo "\n Sleeping blocks count: $iCurrentSleeping\n";
-
-    $aBlocks = getBucketBlocks();
-    echo "\n";
-    printf(" %-40s | %12s | %7s | %13s | %31s | %8s\n", 'Key', 'Total Blocks', 'Current', 'Still Blocked', 'Last Block Time', 'Sleeping');
-    printf(" %'--40s-|-%'-12s-|-%'-7s-|-%'-13s-|-%'-31s-|-%'-8s\n", '', '', '', '', '', '');
-    foreach ($aBlocks as $sKey => $aDetails) {
-        printf(
-            " %-40s | %12s | %7s | %13s | %31s | %8s\n",
-            $sKey,
-            $aDetails['totalBlocks'],
-            (int)$aDetails['currentBucketSize'],
-            $aDetails['currentlyBlocked']?'Y':'N',
-            date('r', $aDetails['lastBlockTimestamp']),
-            $aDetails['isSleeping']?'Y':'N'
-        );
-    }
-    echo "\n";
-}
-
-if ($aResult['delete']) {
-    $m->set('sleepCounter', 0);
-    clearBucketBlocks();
-}
-
-if ($aResult['flush']) {
-    $m->flush();
-}
diff --git a/utils/check_import_finished.php b/utils/check_import_finished.php
new file mode 100755 (executable)
index 0000000..4529c69
--- /dev/null
@@ -0,0 +1,187 @@
+<?php
+
+require_once(CONST_BasePath.'/lib/init-cmd.php');
+
+$term_colors = array(
+                'green' => "\033[92m",
+                'red' => "\x1B[31m",
+                'normal' => "\033[0m"
+);
+
+$print_success = function ($message = 'OK') use ($term_colors) {
+    echo $term_colors['green'].$message.$term_colors['normal']."\n";
+};
+
+$print_fail = function ($message = 'Failed') use ($term_colors) {
+    echo $term_colors['red'].$message.$term_colors['normal']."\n";
+};
+
+
+$oDB = new Nominatim\DB;
+
+
+function isReverseOnlyInstallation()
+{
+    global $oDB;
+    return !$oDB->tableExists('search_name');
+}
+
+
+echo 'Checking database got created ... ';
+if ($oDB->checkConnection()) {
+    $print_success();
+} else {
+    $print_fail();
+    echo <<< END
+    Hints:
+    * Is the database server started?
+    * Check the CONST_Database_DSN variable in build/settings/local.php
+    * Try connecting to the database with the same settings
+
+END;
+    exit(1);
+}
+
+
+echo 'Checking nominatim.so module installed ... ';
+$sStandardWord = $oDB->getOne("SELECT make_standard_name('a')");
+if ($sStandardWord === 'a') {
+    $print_success();
+} else {
+    $print_fail();
+    echo <<< END
+    The Postgresql extension nominatim.so was not found in the database.
+    Hints:
+    * Check the output of the CMmake/make installation step
+    * Does nominatim.so exist?
+    * Does nominatim.so exist on the database server?
+    * Can nominatim.so be accessed by the database user?
+
+END;
+    exit(1);
+}
+
+echo 'Checking place table ... ';
+if ($oDB->tableExists('place')) {
+    $print_success();
+} else {
+    $print_fail();
+    echo <<< END
+    * The import didn't finish.
+    Hints:
+    * Check the output of the utils/setup.php you ran.
+    Usually the osm2pgsql step failed. Check for errors related to
+    * the file you imported not containing any places
+    * harddrive full
+    * out of memory (RAM)
+    * osm2pgsql killed by other scripts, for consuming to much memory
+
+END;
+    exit(1);
+}
+
+
+
+echo 'Checking indexing status ... ';
+$iUnindexed = $oDB->getOne('SELECT count(*) FROM placex WHERE indexed_status > 0');
+if ($iUnindexed == 0) {
+    $print_success();
+} else {
+    $print_fail();
+    echo <<< END
+    The indexing didn't finish. There is still $iUnindexed places. See the
+    question 'Can a stopped/killed import process be resumed?' in the
+    troubleshooting guide.
+
+END;
+    exit(1);
+}
+
+echo "Search index creation\n";
+$aExpectedIndices = array(
+    // sql/indices.src.sql
+    'idx_word_word_id',
+    'idx_place_addressline_address_place_id',
+    'idx_placex_rank_search',
+    'idx_placex_rank_address',
+    'idx_placex_pendingsector',
+    'idx_placex_parent_place_id',
+    'idx_placex_geometry_reverse_lookuppoint',
+    'idx_placex_geometry_reverse_lookuppolygon',
+    'idx_placex_geometry_reverse_placenode',
+    'idx_location_area_country_place_id',
+    'idx_osmline_parent_place_id',
+    'idx_osmline_parent_osm_id',
+    'idx_place_osm_unique',
+    'idx_postcode_id',
+    'idx_postcode_postcode'
+);
+if (!isReverseOnlyInstallation()) {
+    $aExpectedIndices = array_merge($aExpectedIndices, array(
+        // sql/indices_search.src.sql
+        'idx_search_name_nameaddress_vector',
+        'idx_search_name_name_vector',
+        'idx_search_name_centroid'
+    ));
+}
+
+foreach ($aExpectedIndices as $sExpectedIndex) {
+    echo "Checking index $sExpectedIndex ... ";
+    if ($oDB->indexExists($sExpectedIndex)) {
+        $print_success();
+    } else {
+        $print_fail();
+        echo <<< END
+        Hints:
+        * Rerun the setup.php --create-search-indices step
+
+END;
+        exit(1);
+    }
+}
+
+echo 'Checking search indices are valid ... ';
+$sSQL = <<< END
+    SELECT relname
+    FROM pg_class, pg_index
+    WHERE pg_index.indisvalid = false
+      AND pg_index.indexrelid = pg_class.oid;
+END;
+$aInvalid = $oDB->getCol($sSQL);
+if (empty($aInvalid)) {
+    $print_success();
+} else {
+    $print_fail();
+    echo <<< END
+    At least one index is invalid. That can happen, e.g. when index creation was
+    disrupted and later restarted. You should delete the affected indices and
+    run the index stage of setup again.
+    See the question 'Can a stopped/killed import process be resumed?' in the
+    troubleshooting guide.
+    Affected indices: 
+END;
+    echo join(', ', $aInvalid) . "\n";
+    exit(1);
+}
+
+
+
+if (CONST_Use_US_Tiger_Data) {
+    echo 'Checking TIGER table exists ... ';
+    if ($oDB->tableExists('location_property_tiger')) {
+        $print_success();
+    } else {
+        $print_fail();
+        echo <<< END
+        Table 'location_property_tiger' does not exist. Run the TIGER data
+        import again.
+
+END;
+        exit(1);
+    }
+}
+
+
+
+
+exit(0);
index 6e3beb83c3acb4f10aebb5b925b3d3783610f55c..bcc9d0ba0d40a86aebe34426d16e9db3296606a5 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
 
 import sys
 from osmium.replication import server
old mode 100755 (executable)
new mode 100644 (file)
index b1a7ab1..63f6525
@@ -1,7 +1,5 @@
-#!@PHP_BIN@ -Cq
 <?php
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-cmd.php');
 
 ini_set('memory_limit', '800M');
@@ -16,7 +14,7 @@ $aCMDOptions
    );
 getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
 
-include(CONST_InstallPath.'/settings/phrase_settings.php');
+include(CONST_Phrase_Config);
 
 if (true) {
     $sURL = 'https://wiki.openstreetmap.org/wiki/Special:Export/Nominatim/Country_Codes';
old mode 100755 (executable)
new mode 100644 (file)
index aafb375..ef55aab
@@ -1,10 +1,8 @@
-#!@PHP_BIN@ -Cq
 <?php
     // Script to extract structured city and street data
     // from a running nominatim instance as CSV data
 
 
-    require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
     require_once(CONST_BasePath.'/lib/init-cmd.php');
     require_once(CONST_BasePath.'/lib/ParameterParser.php');
     ini_set('memory_limit', '800M');
@@ -43,7 +41,8 @@
                  'path' => 27
                 );
 
-    $oDB =& getDB();
+    $oDB = new Nominatim\DB();
+    $oDB->connect();
 
     if (isset($aCMDResult['output-type'])) {
         if (!isset($aRankmap[$aCMDResult['output-type']])) fail('unknown output-type: '.$aCMDResult['output-type']);
@@ -57,7 +56,7 @@
     $oParams = new Nominatim\ParameterParser();
     if (!isset($aCMDResult['language'])) $aCMDResult['language'] = 'xx';
     $aLangPrefOrder = $oParams->getPreferredLanguages($aCMDResult['language']);
-    $sLanguagePrefArraySQL = 'ARRAY['.join(',', array_map('getDBQuoted', $aLangPrefOrder)).']';
+    $sLanguagePrefArraySQL = $oDB->getArraySQL($oDB->getDBQuotedList($aLangPrefOrder));
 
     // output formatting: build up a lookup table that maps address ranks to columns
     $aColumnMapping = array();
@@ -97,7 +96,7 @@
     $sPlacexSQL .= ' and rank_address = '.$iOutputRank;
 
     if (isset($aCMDResult['restrict-to-country'])) {
-        $sPlacexSQL .= ' and country_code = '.getDBQuoted($aCMDResult['restrict-to-country']);
+        $sPlacexSQL .= ' and country_code = '.$oDB->getDBQuoted($aCMDResult['restrict-to-country']);
     }
 
     // restriction to parent place id
         $sOsmId = $aCMDResult['restrict-to-osm-relation'];
     }
     if ($sOsmType) {
-        $sSQL = 'select place_id from placex where';
-        $sSQL .= ' osm_type = '.getDBQuoted($sOsmType);
-        $sSQL .= ' and osm_id = '.$sOsmId;
-        $sParentId = $oDB->getOne($sSQL);
-        if (PEAR::isError($sParentId)) fail(pg_last_error($oDB->connection));
+        $sSQL = 'select place_id from placex where osm_type = :osm_type and osm_id = :osm_id';
+        $sParentId = $oDB->getOne($sSQL, array('osm_type' => $sOsmType, 'osm_id' => $sOsmId));
         if (!$sParentId) fail('Could not find place '.$sOsmType.' '.$sOsmId);
     }
     if ($sParentId) {
     // Iterate over placeids
     // to get further hierarchical information
     //var_dump($sPlacexSQL);
-    $aRes =& $oDB->query($sPlacexSQL);
-    if (PEAR::isError($aRes)) fail(pg_last_error($oDB->connection));
+    $oResults = $oDB->getQueryStatement($sPlacexSQL);
     $fOutstream = fopen('php://output', 'w');
-    while ($aRes->fetchInto($aRow)) {
-    //var_dump($aRow);
+    while ($aRow = $oResults->fetch()) {
+        //var_dump($aRow);
         $iPlaceID = $aRow['place_id'];
-        $sSQL = "select rank_address,get_name_by_language(name,$sLanguagePrefArraySQL) as localname from get_addressdata($iPlaceID, -1)";
+        $sSQL = "select rank_address,get_name_by_language(name,$sLanguagePrefArraySQL) as localname from get_addressdata(:place_id, -1)";
         $sSQL .= ' WHERE isaddress';
         $sSQL .= ' order by rank_address desc,isaddress desc';
-        $aAddressLines = $oDB->getAll($sSQL);
-        if (PEAR::IsError($aAddressLines)) fail(pg_last_error($oDB->connection));
-
+        $aAddressLines = $oDB->getAll($sSQL, array('place_id' => $iPlaceID));
 
         $aOutput = array_fill(0, $iNumCol, '');
         // output address parts
                 $sSQL = 'select array_agg(px.postcode) from placex px join place_addressline pa ';
                 $sSQL .= 'on px.place_id = pa.address_place_id ';
                 $sSQL .= 'where pa.cached_rank_address in (5,11) ';
-                $sSQL .= 'and pa.place_id in (select place_id from place_addressline where address_place_id in ('.substr($aRow['place_ids'], 1, -1).')) ';
+                $sSQL .= 'and pa.place_id in (select place_id from place_addressline where address_place_id in (:first_place_id)) ';
                 $sSQL .= 'group by postcode order by count(*) desc limit 1';
-                $sRes = $oDB->getOne($sSQL);
-                if (PEAR::IsError($sRes)) fail(pg_last_error($oDB->connection));
+                $sRes = $oDB->getOne($sSQL, array('first_place_id' => substr($aRow['place_ids'], 1, -1)));
+
                 $aOutput[$aColumnMapping['postcode']] = substr($sRes, 1, -1);
             } else {
                 $aOutput[$aColumnMapping['postcode']] = $aRow['postcode'];
diff --git a/utils/importWikipedia.php b/utils/importWikipedia.php
deleted file mode 100755 (executable)
index 6e42975..0000000
+++ /dev/null
@@ -1,554 +0,0 @@
-#!/usr/bin/php -Cq
-<?php
-
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
-require_once(CONST_BasePath.'/lib/init-cmd.php');
-ini_set('memory_limit', '800M');
-
-$aCMDOptions
- = array(
-    'Create and setup nominatim search system',
-    array('help', 'h', 0, 1, 0, 0, false, 'Show Help'),
-    array('quiet', 'q', 0, 1, 0, 0, 'bool', 'Quiet output'),
-    array('verbose', 'v', 0, 1, 0, 0, 'bool', 'Verbose output'),
-
-    array('create-tables', '', 0, 1, 0, 0, 'bool', 'Create wikipedia tables'),
-    array('parse-articles', '', 0, 1, 0, 0, 'bool', 'Parse wikipedia articles'),
-    array('link', '', 0, 1, 0, 0, 'bool', 'Try to link to existing OSM ids'),
-   );
-getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
-
-/*
-$sTestPageText = <<<EOD
-{{Coord|47|N|2|E|type:country_region:FR|display=title}}
-{{ Infobox Amusement park
-| name = Six Flags Great Adventure
-| image = [[File:SixFlagsGreatAdventure logo.png]]
-| caption = Six Flags Great Adventure logo
-| location = [[Jackson, New Jersey|Jackson]]
-| location2 = New Jersey
-| location3 = United States
-| address = 1 Six Flags Boulevard<ref name="drivedir"/>
-| season = March/April through October/November
-| opening_date = July 1, 1974
-| previous_names = Great Adventure
-| area_acre = 2200
-| rides = 45 park admission rides
-| coasters = 12
-| water_rides = 2
-| owner = [[Six Flags]]
-| general_manager =
-| homepage = [http://www.sixflags.com/parks/greatadventure/ Six Flags Great Adventure]
-}}
-EOD;
-var_dump(_templatesToProperties(_parseWikipediaContent($sTestPageText)));
-exit;
-//| coordinates = {{Coord|40|08|16.65|N|74|26|26.69|W|region:US-NJ_type:landmark|display=inline,title}}
-*/
-/*
-
-    $a = array();
-    $a[] = 'test';
-
-    $oDB &= getDB();
-
-    if ($aCMDResult['drop-tables'])
-    {
-        $oDB->query('DROP TABLE wikipedia_article');
-        $oDB->query('DROP TABLE wikipedia_link');
-    }
-*/
-
-if ($aCMDResult['create-tables']) {
-    $sSQL = <<<'EOD'
-CREATE TABLE wikipedia_article (
-    language text NOT NULL,
-    title text NOT NULL,
-    langcount integer,
-    othercount integer,
-    totalcount integer,
-    lat double precision,
-    lon double precision,
-    importance double precision,
-    title_en text,
-    osm_type character(1),
-    osm_id bigint,
-    infobox_type text,
-    population bigint,
-    website text
-);
-        $oDB->query($sSQL);
-
-        $oDB->query("SELECT AddGeometryColumn('wikipedia_article', 'location', 4326, 'GEOMETRY', 2)");
-
-        $sSQL = <<<'EOD'
-CREATE TABLE wikipedia_link (
-  from_id INTEGER,
-  to_name text
-  );
-EOD;
-    $oDB->query($sSQL);
-}
-
-
-function degreesAndMinutesToDecimal($iDegrees, $iMinutes = 0, $fSeconds = 0, $sNSEW = 'N')
-{
-    $sNSEW = strtoupper($sNSEW);
-    return ($sNSEW == 'S' || $sNSEW == 'W'?-1:1) * ((float)$iDegrees + (float)$iMinutes/60 + (float)$fSeconds/3600);
-}
-
-
-function _parseWikipediaContent($sPageText)
-{
-    $sPageText = str_replace("\n", ' ', $sPageText);
-    $sPageText = preg_replace('#<!--.*?-->#m', '', $sPageText);
-    $sPageText = preg_replace('#<math>.*?<\\/math>#m', '', $sPageText);
-
-    $aPageText = preg_split('#({{|}}|\\[\\[|\\]\\]|[|])#', $sPageText, -1, PREG_SPLIT_DELIM_CAPTURE);
-
-    $aPageProperties = array();
-    $sPageBody = '';
-    $aTemplates = array();
-    $aLinks = array();
-
-    $aTemplateStack = array();
-    $aState = array('body');
-    foreach ($aPageText as $i => $sPart) {
-        switch ($sPart) {
-            case '{{':
-                array_unshift($aTemplateStack, array('', array()));
-                array_unshift($aState, 'template');
-                break;
-            case '}}':
-                if ($aState[0] == 'template' || $aState[0] == 'templateparam') {
-                    $aTemplate = array_shift($aTemplateStack);
-                    array_shift($aState);
-
-                    $aTemplates[] = $aTemplate;
-                }
-                break;
-            case '[[':
-                $sLinkPage = '';
-                $sLinkSyn = '';
-                array_unshift($aState, 'link');
-                break;
-            case ']]':
-                if ($aState[0] == 'link' || $aState[0] == 'linksynonim') {
-                    if (!$sLinkSyn) $sLinkSyn = $sLinkPage;
-                    if (substr($sLinkPage, 0, 6) == 'Image:') $sLinkSyn = substr($sLinkPage, 6);
-
-                    $aLinks[] = array($sLinkPage, $sLinkSyn);
-
-                    array_shift($aState);
-                    switch ($aState[0]) {
-                        case 'template':
-                            $aTemplateStack[0][0] .= trim($sPart);
-                            break;
-                        case 'templateparam':
-                            $aTemplateStack[0][1][0] .= $sLinkSyn;
-                            break;
-                        case 'link':
-                            $sLinkPage .= trim($sPart);
-                            break;
-                        case 'linksynonim':
-                            $sLinkSyn .= $sPart;
-                            break;
-                        case 'body':
-                            $sPageBody .= $sLinkSyn;
-                            break;
-                        default:
-                            var_dump($aState, $sPageName, $aTemplateStack, $sPart, $aPageText);
-                            fail('unknown state');
-                    }
-                }
-                break;
-            case '|':
-                if ($aState[0] == 'template' || $aState[0] == 'templateparam') {
-                    // Create a new template paramater
-                    $aState[0] = 'templateparam';
-                    array_unshift($aTemplateStack[0][1], '');
-                }
-                if ($aState[0] == 'link') $aState[0] = 'linksynonim';
-                break;
-            default:
-                switch ($aState[0]) {
-                    case 'template':
-                        $aTemplateStack[0][0] .= trim($sPart);
-                        break;
-                    case 'templateparam':
-                        $aTemplateStack[0][1][0] .= $sPart;
-                        break;
-                    case 'link':
-                        $sLinkPage .= trim($sPart);
-                        break;
-                    case 'linksynonim':
-                        $sLinkSyn .= $sPart;
-                        break;
-                    case 'body':
-                        $sPageBody .= $sPart;
-                        break;
-                    default:
-                        var_dump($aState, $aPageText);
-                        fail('unknown state');
-                }
-                break;
-        }
-    }
-    return $aTemplates;
-}
-
-function _templatesToProperties($aTemplates)
-{
-    $aPageProperties = array();
-    foreach ($aTemplates as $iTemplate => $aTemplate) {
-        $aParams = array();
-        foreach (array_reverse($aTemplate[1]) as $iParam => $sParam) {
-            if (($iPos = strpos($sParam, '=')) === false) {
-                $aParams[] = trim($sParam);
-            } else {
-                $aParams[trim(substr($sParam, 0, $iPos))] = trim(substr($sParam, $iPos+1));
-            }
-        }
-        $aTemplates[$iTemplate][1] = $aParams;
-        if (!isset($aPageProperties['sOfficialName']) && isset($aParams['official_name']) && $aParams['official_name']) $aPageProperties['sOfficialName'] = $aParams['official_name'];
-        if (!isset($aPageProperties['iPopulation']) && isset($aParams['population']) && $aParams['population'] && preg_match('#^[0-9.,]+#', $aParams['population'])) {
-            $aPageProperties['iPopulation'] = (int)str_replace(array(',', '.'), '', $aParams['population']);
-        }
-        if (!isset($aPageProperties['iPopulation']) && isset($aParams['population_total']) && $aParams['population_total'] && preg_match('#^[0-9.,]+#', $aParams['population_total'])) {
-            $aPageProperties['iPopulation'] = (int)str_replace(array(',', '.'), '', $aParams['population_total']);
-        }
-        if (!isset($aPageProperties['iPopulation']) && isset($aParams['population_urban']) && $aParams['population_urban'] && preg_match('#^[0-9.,]+#', $aParams['population_urban'])) {
-            $aPageProperties['iPopulation'] = (int)str_replace(array(',', '.'), '', $aParams['population_urban']);
-        }
-        if (!isset($aPageProperties['iPopulation']) && isset($aParams['population_estimate']) && $aParams['population_estimate'] && preg_match('#^[0-9.,]+#', $aParams['population_estimate'])) {
-            $aPageProperties['iPopulation'] = (int)str_replace(array(',', '.'), '', $aParams['population_estimate']);
-        }
-        if (!isset($aPageProperties['sWebsite']) && isset($aParams['website']) && $aParams['website']) {
-            if (preg_match('#^\\[?([^ \\]]+)[^\\]]*\\]?$#', $aParams['website'], $aMatch)) {
-                $aPageProperties['sWebsite'] = $aMatch[1];
-                if (strpos($aPageProperties['sWebsite'], ':/'.'/') === false) {
-                    $aPageProperties['sWebsite'] = 'http:/'.'/'.$aPageProperties['sWebsite'];
-                }
-            }
-        }
-        if (!isset($aPageProperties['sTopLevelDomain']) && isset($aParams['cctld']) && $aParams['cctld']) {
-            $aPageProperties['sTopLevelDomain'] = str_replace(array('[', ']', '.'), '', $aParams['cctld']);
-        }
-
-        if (!isset($aPageProperties['sInfoboxType']) && strtolower(substr($aTemplate[0], 0, 7)) == 'infobox') {
-            $aPageProperties['sInfoboxType'] = trim(substr($aTemplate[0], 8));
-            // $aPageProperties['aInfoboxParams'] = $aParams;
-        }
-
-        // Assume the first template with lots of params is the type (fallback for infobox)
-        if (!isset($aPageProperties['sPossibleInfoboxType']) && count($aParams) > 10) {
-            $aPageProperties['sPossibleInfoboxType'] = trim($aTemplate[0]);
-            // $aPageProperties['aInfoboxParams'] = $aParams;
-        }
-
-        // do we have a lat/lon
-        if (!isset($aPageProperties['fLat'])) {
-            if (isset($aParams['latd']) && isset($aParams['longd'])) {
-                $aPageProperties['fLat'] = degreesAndMinutesToDecimal($aParams['latd'], @$aParams['latm'], @$aParams['lats'], @$aParams['latNS']);
-                $aPageProperties['fLon'] = degreesAndMinutesToDecimal($aParams['longd'], @$aParams['longm'], @$aParams['longs'], @$aParams['longEW']);
-            }
-            if (isset($aParams['lat_degrees']) && isset($aParams['lat_degrees'])) {
-                $aPageProperties['fLat'] = degreesAndMinutesToDecimal($aParams['lat_degrees'], @$aParams['lat_minutes'], @$aParams['lat_seconds'], @$aParams['lat_direction']);
-                $aPageProperties['fLon'] = degreesAndMinutesToDecimal($aParams['long_degrees'], @$aParams['long_minutes'], @$aParams['long_seconds'], @$aParams['long_direction']);
-            }
-            if (isset($aParams['latitude']) && isset($aParams['longitude'])) {
-                if (preg_match('#[0-9.]+#', $aParams['latitude']) && preg_match('#[0-9.]+#', $aParams['longitude'])) {
-                    $aPageProperties['fLat'] = (float)$aParams['latitude'];
-                    $aPageProperties['fLon'] = (float)$aParams['longitude'];
-                }
-            }
-            if (strtolower($aTemplate[0]) == 'coord') {
-                if (isset($aParams[3]) && (strtoupper($aParams[3]) == 'N' || strtoupper($aParams[3]) == 'S')) {
-                    $aPageProperties['fLat'] = degreesAndMinutesToDecimal($aParams[0], $aParams[1], $aParams[2], $aParams[3]);
-                    $aPageProperties['fLon'] = degreesAndMinutesToDecimal($aParams[4], $aParams[5], $aParams[6], $aParams[7]);
-                } elseif (isset($aParams[0]) && isset($aParams[1]) && isset($aParams[2]) && (strtoupper($aParams[2]) == 'N' || strtoupper($aParams[2]) == 'S')) {
-                    $aPageProperties['fLat'] = degreesAndMinutesToDecimal($aParams[0], $aParams[1], 0, $aParams[2]);
-                    $aPageProperties['fLon'] = degreesAndMinutesToDecimal($aParams[3], $aParams[4], 0, $aParams[5]);
-                } elseif (isset($aParams[0]) && isset($aParams[1]) && (strtoupper($aParams[1]) == 'N' || strtoupper($aParams[1]) == 'S')) {
-                    $aPageProperties['fLat'] = (strtoupper($aParams[1]) == 'N'?1:-1) * (float)$aParams[0];
-                    $aPageProperties['fLon'] = (strtoupper($aParams[3]) == 'E'?1:-1) * (float)$aParams[2];
-                } elseif (isset($aParams[0]) && is_numeric($aParams[0]) && isset($aParams[1]) && is_numeric($aParams[1])) {
-                    $aPageProperties['fLat'] = (float)$aParams[0];
-                    $aPageProperties['fLon'] = (float)$aParams[1];
-                }
-            }
-            if (isset($aParams['Latitude']) && isset($aParams['Longitude'])) {
-                $aParams['Latitude'] = str_replace('&nbsp;', ' ', $aParams['Latitude']);
-                $aParams['Longitude'] = str_replace('&nbsp;', ' ', $aParams['Longitude']);
-                if (preg_match('#^([0-9]+)°( ([0-9]+)′)? ([NS]) to ([0-9]+)°( ([0-9]+)′)? ([NS])#', $aParams['Latitude'], $aMatch)) {
-                    $aPageProperties['fLat'] =
-                        (degreesAndMinutesToDecimal($aMatch[1], $aMatch[3], 0, $aMatch[4])
-                        +degreesAndMinutesToDecimal($aMatch[5], $aMatch[7], 0, $aMatch[8])) / 2;
-                } elseif (preg_match('#^([0-9]+)°( ([0-9]+)′)? ([NS])#', $aParams['Latitude'], $aMatch)) {
-                    $aPageProperties['fLat'] = degreesAndMinutesToDecimal($aMatch[1], $aMatch[3], 0, $aMatch[4]);
-                }
-
-                if (preg_match('#^([0-9]+)°( ([0-9]+)′)? ([EW]) to ([0-9]+)°( ([0-9]+)′)? ([EW])#', $aParams['Longitude'], $aMatch)) {
-                    $aPageProperties['fLon'] =
-                        (degreesAndMinutesToDecimal($aMatch[1], $aMatch[3], 0, $aMatch[4])
-                        +degreesAndMinutesToDecimal($aMatch[5], $aMatch[7], 0, $aMatch[8])) / 2;
-                } elseif (preg_match('#^([0-9]+)°( ([0-9]+)′)? ([EW])#', $aParams['Longitude'], $aMatch)) {
-                    $aPageProperties['fLon'] = degreesAndMinutesToDecimal($aMatch[1], $aMatch[3], 0, $aMatch[4]);
-                }
-            }
-        }
-    }
-    if (isset($aPageProperties['sPossibleInfoboxType'])) {
-        if (!isset($aPageProperties['sInfoboxType'])) $aPageProperties['sInfoboxType'] = '#'.$aPageProperties['sPossibleInfoboxType'];
-        unset($aPageProperties['sPossibleInfoboxType']);
-    }
-    return $aPageProperties;
-}
-
-if (isset($aCMDResult['parse-wikipedia'])) {
-    $oDB =& getDB();
-    $sSQL = 'select page_title from content where page_namespace = 0 and page_id %10 = ';
-    $sSQL .= $aCMDResult['parse-wikipedia'];
-    $sSQL .= ' and (page_content ilike \'%{{Coord%\' or (page_content ilike \'%lat%\' and page_content ilike \'%lon%\'))';
-    $aArticleNames = $oDB->getCol($sSQL);
-    /* $aArticleNames = $oDB->getCol($sSQL = 'select page_title from content where page_namespace = 0
-        and (page_content ilike \'%{{Coord%\' or (page_content ilike \'%lat%\'
-        and page_content ilike \'%lon%\')) and page_title in (\'Virginia\')');
-     */
-    foreach ($aArticleNames as $sArticleName) {
-        $sPageText = $oDB->getOne('select page_content from content where page_namespace = 0 and page_title = \''.pg_escape_string($sArticleName).'\'');
-        $aP = _templatesToProperties(_parseWikipediaContent($sPageText));
-
-        if (isset($aP['sInfoboxType'])) {
-            $aP['sInfoboxType'] = preg_replace('#\\s+#', ' ', $aP['sInfoboxType']);
-            $sSQL = 'update wikipedia_article set ';
-            $sSQL .= 'infobox_type = \''.pg_escape_string($aP['sInfoboxType']).'\'';
-            $sSQL .= ' where language = \'en\' and title = \''.pg_escape_string($sArticleName).'\';';
-            $oDB->query($sSQL);
-        }
-        if (isset($aP['iPopulation'])) {
-            $sSQL = 'update wikipedia_article set ';
-            $sSQL .= 'population = \''.pg_escape_string($aP['iPopulation']).'\'';
-            $sSQL .= ' where language = \'en\' and title = \''.pg_escape_string($sArticleName).'\';';
-            $oDB->query($sSQL);
-        }
-        if (isset($aP['sWebsite'])) {
-            $sSQL = 'update wikipedia_article set ';
-            $sSQL .= 'website = \''.pg_escape_string($aP['sWebsite']).'\'';
-            $sSQL .= ' where language = \'en\' and title = \''.pg_escape_string($sArticleName).'\';';
-            $oDB->query($sSQL);
-        }
-        if (isset($aP['fLat']) && ($aP['fLat']!='-0' || $aP['fLon']!='-0')) {
-            if (!isset($aP['sInfoboxType'])) $aP['sInfoboxType'] = '';
-            echo $sArticleName.'|'.$aP['sInfoboxType'].'|'.$aP['fLat'].'|'.$aP['fLon'] ."\n";
-            $sSQL = 'update wikipedia_article set ';
-            $sSQL .= 'lat = \''.pg_escape_string($aP['fLat']).'\',';
-            $sSQL .= 'lon = \''.pg_escape_string($aP['fLon']).'\'';
-            $sSQL .= ' where language = \'en\' and title = \''.pg_escape_string($sArticleName).'\';';
-            $oDB->query($sSQL);
-        }
-    }
-}
-
-
-function nominatimXMLStart($hParser, $sName, $aAttr)
-{
-    global $aNominatRecords;
-    switch ($sName) {
-        case 'PLACE':
-            $aNominatRecords[] = $aAttr;
-            break;
-    }
-}
-
-
-function nominatimXMLEnd($hParser, $sName)
-{
-}
-
-
-if (isset($aCMDResult['link'])) {
-    $oDB =& getDB();
-    $aWikiArticles = $oDB->getAll("select * from wikipedia_article where language = 'en' and lat is not null and osm_type is null and totalcount < 31 order by importance desc limit 200000");
-
-    // If you point this script at production OSM you will be blocked
-    $sNominatimBaseURL = 'http://SEVERNAME/search.php';
-
-    foreach ($aWikiArticles as $aRecord) {
-        $aRecord['name'] = str_replace('_', ' ', $aRecord['title']);
-
-        $sURL = $sNominatimBaseURL.'?format=xml&accept-language=en';
-
-        echo "\n-- ".$aRecord['name'].', '.$aRecord['infobox_type']."\n";
-        $fMaxDist = 0.0000001;
-        $bUnknown = false;
-        switch (strtolower($aRecord['infobox_type'])) {
-            case 'former country':
-                continue 2;
-            case 'sea':
-                $fMaxDist = 60; // effectively turn it off
-                $sURL .= '&viewbox='.($aRecord['lon']-$fMaxDist).','.($aRecord['lat']+$fMaxDist).','.($aRecord['lon']+$fMaxDist).','.($aRecord['lat']-$fMaxDist);
-                break;
-            case 'country':
-            case 'island':
-            case 'islands':
-            case 'continent':
-                $fMaxDist = 60; // effectively turn it off
-                $sURL .= '&featuretype=country';
-                $sURL .= '&viewbox='.($aRecord['lon']-$fMaxDist).','.($aRecord['lat']+$fMaxDist).','.($aRecord['lon']+$fMaxDist).','.($aRecord['lat']-$fMaxDist);
-                break;
-            case 'prefecture japan':
-                $aRecord['name'] = trim(str_replace(' Prefecture', ' ', $aRecord['name']));
-                // intentionally no break
-            case 'state':
-            case '#us state':
-            case 'county':
-            case 'u.s. state':
-            case 'u.s. state symbols':
-            case 'german state':
-            case 'province or territory of canada':
-            case 'indian jurisdiction':
-            case 'province':
-            case 'french region':
-            case 'region of italy':
-            case 'kommune':
-            case '#australia state or territory':
-            case 'russian federal subject':
-                $fMaxDist = 4;
-                $sURL .= '&featuretype=state';
-                $sURL .= '&viewbox='.($aRecord['lon']-$fMaxDist).','.($aRecord['lat']+$fMaxDist).','.($aRecord['lon']+$fMaxDist).','.($aRecord['lat']-$fMaxDist);
-                break;
-            case 'protected area':
-                $fMaxDist = 1;
-                $sURL .= '&nearlat='.$aRecord['lat'];
-                $sURL .= '&nearlon='.$aRecord['lon'];
-                $sURL .= '&viewbox='.($aRecord['lon']-$fMaxDist).','.($aRecord['lat']+$fMaxDist).','.($aRecord['lon']+$fMaxDist).','.($aRecord['lat']-$fMaxDist);
-                break;
-            case 'settlement':
-                $bUnknown = true;
-                // intentionally no break
-            case 'french commune':
-            case 'italian comune':
-            case 'uk place':
-            case 'italian comune':
-            case 'australian place':
-            case 'german place':
-            case '#geobox':
-            case 'u.s. county':
-            case 'municipality':
-            case 'city japan':
-            case 'russian inhabited locality':
-            case 'finnish municipality/land area':
-            case 'england county':
-            case 'israel municipality':
-            case 'russian city':
-            case 'city':
-                $fMaxDist = 0.2;
-                $sURL .= '&featuretype=settlement';
-                $sURL .= '&viewbox='.($aRecord['lon']-0.5).','.($aRecord['lat']+0.5).','.($aRecord['lon']+0.5).','.($aRecord['lat']-0.5);
-                break;
-            case 'mountain':
-            case 'mountain pass':
-            case 'river':
-            case 'lake':
-            case 'airport':
-                $fMaxDist = 0.2;
-                $sURL .= '&viewbox='.($aRecord['lon']-0.5).','.($aRecord['lat']+0.5).','.($aRecord['lon']+0.5).','.($aRecord['lat']-0.5);
-                break;
-            case 'ship begin':
-                $fMaxDist = 0.1;
-                $aTypes = array('wreck');
-                $sURL .= '&viewbox='.($aRecord['lon']-0.01).','.($aRecord['lat']+0.01).','.($aRecord['lon']+0.01).','.($aRecord['lat']-0.01);
-                $sURL .= '&nearlat='.$aRecord['lat'];
-                $sURL .= '&nearlon='.$aRecord['lon'];
-                break;
-            case 'road':
-            case 'university':
-            case 'company':
-            case 'department':
-                $fMaxDist = 0.005;
-                $sURL .= '&viewbox='.($aRecord['lon']-0.01).','.($aRecord['lat']+0.01).','.($aRecord['lon']+0.01).','.($aRecord['lat']-0.01);
-                $sURL .= '&bounded=1';
-                $sURL .= '&nearlat='.$aRecord['lat'];
-                $sURL .= '&nearlon='.$aRecord['lon'];
-                break;
-            default:
-                $bUnknown = true;
-                $fMaxDist = 0.005;
-                $sURL .= '&viewbox='.($aRecord['lon']-0.01).','.($aRecord['lat']+0.01).','.($aRecord['lon']+0.01).','.($aRecord['lat']-0.01);
-                // $sURL .= "&bounded=1";
-                $sURL .= '&nearlat='.$aRecord['lat'];
-                $sURL .= '&nearlon='.$aRecord['lon'];
-                echo '-- Unknown: '.$aRecord['infobox_type']."\n";
-                break;
-        }
-        $sNameURL = $sURL.'&q='.urlencode($aRecord['name']);
-
-        var_Dump($sNameURL);
-        $sXML = file_get_contents($sNameURL);
-
-        $aNominatRecords = array();
-        $hXMLParser = xml_parser_create();
-        xml_set_element_handler($hXMLParser, 'nominatimXMLStart', 'nominatimXMLEnd');
-        xml_parse($hXMLParser, $sXML, true);
-        xml_parser_free($hXMLParser);
-
-        if (!isset($aNominatRecords[0])) {
-            $aNameParts = preg_split('#[(,]#', $aRecord['name']);
-            if (count($aNameParts) > 1) {
-                $sNameURL = $sURL.'&q='.urlencode(trim($aNameParts[0]));
-                var_Dump($sNameURL);
-                $sXML = file_get_contents($sNameURL);
-
-                $aNominatRecords = array();
-                $hXMLParser = xml_parser_create();
-                xml_set_element_handler($hXMLParser, 'nominatimXMLStart', 'nominatimXMLEnd');
-                xml_parse($hXMLParser, $sXML, true);
-                xml_parser_free($hXMLParser);
-            }
-        }
-
-        // assume first is best/right
-        for ($i = 0; $i < count($aNominatRecords); $i++) {
-            $fDiff = ($aRecord['lat']-$aNominatRecords[$i]['LAT']) * ($aRecord['lat']-$aNominatRecords[$i]['LAT']);
-            $fDiff += ($aRecord['lon']-$aNominatRecords[$i]['LON']) * ($aRecord['lon']-$aNominatRecords[$i]['LON']);
-            $fDiff = sqrt($fDiff);
-            if ($bUnknown) {
-                // If it was an unknown type base it on the rank of the found result
-                $iRank = (int)$aNominatRecords[$i]['PLACE_RANK'];
-                if ($iRank <= 4) $fMaxDist = 2;
-                elseif ($iRank <= 8) $fMaxDist = 1;
-                elseif ($iRank <= 10) $fMaxDist = 0.8;
-                elseif ($iRank <= 12) $fMaxDist = 0.6;
-                elseif ($iRank <= 17) $fMaxDist = 0.2;
-                elseif ($iRank <= 18) $fMaxDist = 0.1;
-                elseif ($iRank <= 22) $fMaxDist = 0.02;
-                elseif ($iRank <= 26) $fMaxDist = 0.001;
-                else $fMaxDist = 0.001;
-            }
-            echo '-- FOUND "'.substr($aNominatRecords[$i]['DISPLAY_NAME'], 0, 50);
-            echo '", '.$aNominatRecords[$i]['CLASS'].', '.$aNominatRecords[$i]['TYPE'];
-            echo ', '.$aNominatRecords[$i]['PLACE_RANK'].', '.$aNominatRecords[$i]['OSM_TYPE'];
-            echo " (dist:$fDiff, max:$fMaxDist)\n";
-            if ($fDiff > $fMaxDist) {
-                echo "-- Diff too big $fDiff (max: $fMaxDist)".$aRecord['lat'].','.$aNominatRecords[$i]['LAT'].' & '.$aRecord['lon'].','.$aNominatRecords[$i]['LON']." \n";
-            } else {
-                $sSQL = 'update wikipedia_article set osm_type=';
-                switch ($aNominatRecords[$i]['OSM_TYPE']) {
-                    case 'relation':
-                        $sSQL .= "'R'";
-                        break;
-                    case 'way':
-                        $sSQL .= "'W'";
-                        break;
-                    case 'node':
-                        $sSQL .= "'N'";
-                        break;
-                }
-                $sSQL .= ', osm_id='.$aNominatRecords[$i]['OSM_ID']." where language = '".pg_escape_string($aRecord['language'])."' and title = '".pg_escape_string($aRecord['title'])."'";
-                $oDB->query($sSQL);
-                break;
-            }
-        }
-    }
-}
diff --git a/utils/import_multiple_regions.sh b/utils/import_multiple_regions.sh
new file mode 100644 (file)
index 0000000..83323c2
--- /dev/null
@@ -0,0 +1,91 @@
+#!/bin/bash -xv
+
+# Script to set up Nominatim database for multiple countries
+
+# Steps to follow:
+
+#     *) Get the pbf files from server
+
+#     *) Set up sequence.state for updates
+
+#     *) Merge the pbf files into a single file.
+
+#     *) Setup nominatim db using 'setup.php --osm-file'
+
+# Hint:
+#
+# Use "bashdb ./update_database.sh" and bashdb's "next" command for step-by-step
+# execution.
+
+# ******************************************************************************
+
+touch2() { mkdir -p "$(dirname "$1")" && touch "$1" ; }
+
+# ******************************************************************************
+# Configuration section: Variables in this section should be set according to your requirements
+
+# REPLACE WITH LIST OF YOUR "COUNTRIES":
+
+COUNTRIES="europe/monaco europe/andorra"
+
+# SET TO YOUR NOMINATIM build FOLDER PATH:
+
+NOMINATIMBUILD="/srv/nominatim/build"
+SETUPFILE="$NOMINATIMBUILD/utils/setup.php"
+UPDATEFILE="$NOMINATIMBUILD/utils/update.php"
+
+# SET TO YOUR update FOLDER PATH:
+
+UPDATEDIR="/srv/nominatim/update"
+
+# SET TO YOUR replication server URL:
+
+BASEURL="https://download.geofabrik.de"
+DOWNCOUNTRYPOSTFIX="-latest.osm.pbf"
+
+# End of configuration section
+# ******************************************************************************
+
+COMBINEFILES="osmium merge"
+
+mkdir -p ${UPDATEDIR}
+cd ${UPDATEDIR}
+rm -rf tmp
+mkdir -p tmp
+cd tmp
+
+for COUNTRY in $COUNTRIES;
+do
+    
+    echo "===================================================================="
+    echo "$COUNTRY"
+    echo "===================================================================="
+    DIR="$UPDATEDIR/$COUNTRY"
+    FILE="$DIR/configuration.txt"
+    DOWNURL="$BASEURL/$COUNTRY$DOWNCOUNTRYPOSTFIX"
+    IMPORTFILE=$COUNTRY$DOWNCOUNTRYPOSTFIX
+    IMPORTFILEPATH=${UPDATEDIR}/tmp/${IMPORTFILE}
+    FILENAME=${COUNTRY//[\/]/_}
+    
+
+    touch2 $IMPORTFILEPATH
+    wget ${DOWNURL} -O $IMPORTFILEPATH
+
+    touch2 ${DIR}/sequence.state
+    pyosmium-get-changes -O $IMPORTFILEPATH -f ${DIR}/sequence.state -v
+
+    COMBINEFILES="${COMBINEFILES} ${IMPORTFILEPATH}"
+    echo $IMPORTFILE
+    echo "===================================================================="
+done
+
+
+echo "${COMBINEFILES} -o combined.osm.pbf"
+${COMBINEFILES} -o combined.osm.pbf
+
+echo "===================================================================="
+echo "Setting up nominatim db"
+${SETUPFILE} --osm-file ${UPDATEDIR}/tmp/combined.osm.pbf --all 2>&1
+
+# ${UPDATEFILE} --import-file ${UPDATEDIR}/tmp/combined.osm.pbf 2>&1
+echo "===================================================================="
\ No newline at end of file
diff --git a/utils/import_wikipedia.sh b/utils/import_wikipedia.sh
deleted file mode 100755 (executable)
index f053499..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/bash
-
-psqlcmd=psql wikipedia2013
-mysql2pgsqlcmd=./mysql2pgsql.perl /dev/stdin /dev/stdout
-
-language=( "ar" "bg" "ca" "cs" "da" "de" "en" "es" "eo" "eu" "fa" "fr" "ko" "hi" "hr" "id" "it" "he" "lt" "hu" "ms" "nl" "ja" "no" "pl" "pt" "kk" "ro" "ru" "sk" "sl" "sr" "fi" "sv" "tr" "uk" "vi" "vo" "war" "zh" )
-
-# wikipedia pages and links
-echo "CREATE TABLE linkcounts (language text, title text, count integer, sumcount integer, lat double, lon double );"  | $psqlcmd
-echo "CREATE TABLE wikipedia_redirect (language text, from_title text, to_title text );"  | $psqlcmd
-
-for i in "${language[@]}"
-do
-    wget http://dumps.wikimedia.org/${i}wiki/latest/${i}wiki-latest-page.sql.gz
-    wget http://dumps.wikimedia.org/${i}wiki/latest/${i}wiki-latest-pagelinks.sql.gz
-    wget http://dumps.wikimedia.org/${i}wiki/latest/${i}wiki-latest-langlinks.sql.gz
-    wget http://dumps.wikimedia.org/${i}wiki/latest/${i}wiki-latest-redirect.sql.gz
-done
-
-for i in "${language[@]}"
-do
-    gzip -dc ${i}wiki-latest-pagelinks.sql.gz | sed "s/\`pagelinks\`/\`${i}pagelinks\`/g" | $mysql2pgsqlcmd | $psqlcmd
-    gzip -dc ${i}wiki-latest-page.sql.gz | sed "s/\`page\`/\`${i}page\`/g" | $mysql2pgsqlcmd | $psqlcmd
-    gzip -dc ${i}wiki-latest-langlinks.sql.gz | sed "s/\`langlinks\`/\`${i}langlinks\`/g" | $mysql2pgsqlcmd | $psqlcmd
-    gzip -dc ${i}wiki-latest-redirect.sql.gz | sed "s/\`redirect\`/\`${i}redirect\`/g" | $mysql2pgsqlcmd | $psqlcmd
-done
-
-for i in "${language[@]}"
-do
-    echo "create table ${i}pagelinkcount as select pl_title as title,count(*) as count from ${i}pagelinks where pl_namespace = 0 group by pl_title;" | $psqlcmd
-    echo "insert into linkcounts select '${i}',pl_title,count(*) from ${i}pagelinks where pl_namespace = 0 group by pl_title;" | $psqlcmd
-    echo "insert into wikipedia_redirect select '${i}',page_title,rd_title from ${i}redirect join ${i}page on (rd_from = page_id) where page_namespace = 0 and rd_namespace = 0;" | $psqlcmd
-    echo "alter table ${i}pagelinkcount add column othercount integer;" | $psqlcmd
-    echo "update ${i}pagelinkcount set othercount = 0;" | $psqlcmd
-    for j in "${language[@]}"
-    do
-        echo "update ${i}pagelinkcount set othercount = ${i}pagelinkcount.othercount + x.count from (select page_title as title,count from ${i}langlinks join ${i}page on (ll_from = page_id) join ${j}pagelinkcount on (ll_lang = '${j}' and ll_title = title)) as x where x.title = ${i}pagelinkcount.title;" | $psqlcmd
-    done
-    echo "insert into wikipedia_article select '${i}', title, count, othercount, count+othercount from ${i}pagelinkcount;" | $psqlcmd
-done
-
-echo "update wikipedia_article set importance = log(totalcount)/log((select max(totalcount) from wikipedia_article))" | $psqlcmd
-
-# precalculated lat,lon from dbpedia
-wget http://downloads.dbpedia.org/current/en/geo_coordinates_en.nq.bz2
-bzip2 -dc geo_coordinates_en.nq.bz2 | grep http://www.georss.org/georss/point | sed 's|<http://dbpedia.org/resource/[^>]*> *<http://www.georss.org/georss/point> "\(-\?[-0-9.E]\+\) \(-\?[-0-9.E]\+\)"@en <http://\([a-z][a-z]\).wikipedia.org/wiki/\([^#]\+\)#> .|update pagelinks set lat=\1, lon=\2 where language = '"'"'\3'"'"' and title = decode_url_part('"'"'\4'"'"');|g' | $psqlcmd
-
-# media wiki dumper
-wget https://github.com/bcollier/mwdumper/blob/master/build/mwdumper.jar
-
-# latest english wikipedia articles
-wget http://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles.xml.bz2
-java -jar mwdumper.jar --format=sql:1.5 enwiki-latest-pages-articles.xml.bz2 | ./mysql2pgsql.perl /dev/stdin /dev/stdout | sed 's/"text (/text ("/g' | sed 's/"old_flags)"/"old_flags")/g' | sed 's/"revision (/revision ("/g' | sed 's/"rev_deleted)"/"rev_deleted")/g' | sed 's/"page (/page ("/g' | sed 's/"page_len)"/"page_len")/g' | sed "s/DATE_ADD(E'1970-01-01', INTERVAL UNIX_TIMESTAMP() SECOND)[+]//g" | sed 's/RAND()/0/g' | $psqlcmd
diff --git a/utils/imports.php b/utils/imports.php
deleted file mode 100755 (executable)
index 9d1085f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#!@PHP_BIN@ -Cq
-<?php
-
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
-require_once(CONST_BasePath.'/lib/init-cmd.php');
-ini_set('memory_limit', '800M');
-
-$aCMDOptions
- = array(
-    'Create and setup nominatim search system',
-    array('help', 'h', 0, 1, 0, 0, false, 'Show Help'),
-    array('quiet', 'q', 0, 1, 0, 0, 'bool', 'Quiet output'),
-    array('verbose', 'v', 0, 1, 0, 0, 'bool', 'Verbose output'),
-
-    array('parse-tiger', '', 0, 1, 1, 1, 'realpath', 'Convert tiger edge files to nominatim sql import - datafiles from 2011 or later (source: edges directory of tiger data)'),
-   );
-getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
-
-
-if (isset($aCMDResult['parse-tiger'])) {
-    if (!file_exists(CONST_Tiger_Data_Path)) mkdir(CONST_Tiger_Data_Path);
-
-    $sTempDir = tempnam('/tmp', 'tiger');
-    unlink($sTempDir);
-    mkdir($sTempDir);
-
-    foreach (glob($aCMDResult['parse-tiger'].'/tl_20??_?????_edges.zip', 0) as $sImportFile) {
-        set_time_limit(30);
-        preg_match('#([0-9]{5})_(.*)#', basename($sImportFile), $aMatch);
-        $sCountyID = $aMatch[1];
-
-        echo 'Processing '.$sCountyID."...\n";
-        $sUnzipCmd = "unzip -d $sTempDir $sImportFile";
-        exec($sUnzipCmd);
-
-        $sShapeFilename = $sTempDir.'/'.basename($sImportFile, '.zip').'.shp';
-        $sSqlFilenameTmp = $sTempDir.'/'.$sCountyID.'.sql';
-        $sSqlFilename = CONST_Tiger_Data_Path.'/'.$sCountyID.'.sql';
-
-        if (!file_exists($sShapeFilename)) {
-            echo "Failed unzip ($sImportFile)\n";
-        } else {
-            $sParseCmd = CONST_BasePath.'/utils/tigerAddressImport.py '.$sShapeFilename.' '.$sSqlFilenameTmp;
-            exec($sParseCmd);
-            if (!file_exists($sSqlFilenameTmp)) {
-                echo "Failed parse ($sImportFile)\n";
-            } else {
-                copy($sSqlFilenameTmp, $sSqlFilename);
-            }
-        }
-        // Cleanup
-        foreach (glob($sTempDir.'/*') as $sTmpFile) {
-            unlink($sTmpFile);
-        }
-    }
-}
index 88d0a4c0a6a46a4acb185f06b1fc8d70897af224..0443e6ace4f5df6f9778b85427fa17641c6232b0 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
 
 import osmium
 import sys
old mode 100755 (executable)
new mode 100644 (file)
index e3e2e7b..956bb56
@@ -1,7 +1,5 @@
-#!@PHP_BIN@ -Cq
 <?php
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-cmd.php');
 require_once(CONST_BasePath.'/lib/Geocode.php');
 require_once(CONST_BasePath.'/lib/ParameterParser.php');
@@ -15,6 +13,13 @@ $aCMDOptions
    array('verbose', 'v', 0, 1, 0, 0, 'bool', 'Verbose output'),
 
    array('search', '', 0, 1, 1, 1, 'string', 'Search for given term or coordinate'),
+   array('country', '', 0, 1, 1, 1, 'string', 'Structured search: country'),
+   array('state', '', 0, 1, 1, 1, 'string', 'Structured search: state'),
+   array('county', '', 0, 1, 1, 1, 'string', 'Structured search: county'),
+   array('city', '', 0, 1, 1, 1, 'string', 'Structured search: city'),
+   array('street', '', 0, 1, 1, 1, 'string', 'Structured search: street'),
+   array('amenity', '', 0, 1, 1, 1, 'string', 'Structured search: amenity'),
+   array('postalcode', '', 0, 1, 1, 1, 'string', 'Structured search: postal code'),
 
    array('accept-language', '', 0, 1, 1, 1, 'string', 'Preferred language order for showing search results'),
    array('bounded', '', 0, 1, 0, 0, 'bool', 'Restrict results to given viewbox'),
@@ -27,25 +32,40 @@ $aCMDOptions
   );
 getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
 
-$oDB =& getDB();
+$oDB = new Nominatim\DB;
+$oDB->connect();
+
+if (isset($aCMDResult['nodedupe'])) $aCMDResult['dedupe'] = 'false';
+
 $oParams = new Nominatim\ParameterParser($aCMDResult);
 
-if ($oParams->getBool('search')) {
-    if (isset($aCMDResult['nodedupe'])) $aCMDResult['dedupe'] = 'false';
+$aSearchParams = array(
+                     'search',
+                     'amenity',
+                     'street',
+                     'city',
+                     'county',
+                     'state',
+                     'country',
+                     'postalcode'
+                 );
 
-    $oGeocode = new Nominatim\Geocode($oDB);
+if (!$oParams->hasSetAny($aSearchParams)) {
+    showUsage($aCMDOptions, true);
+    return 1;
+}
 
-    $oGeocode->setLanguagePreference($oParams->getPreferredLanguages(false));
-    $oGeocode->loadParamArray($oParams);
-    $oGeocode->setQuery($aCMDResult['search']);
+$oGeocode = new Nominatim\Geocode($oDB);
 
-    $aSearchResults = $oGeocode->lookup();
+$oGeocode->setLanguagePreference($oParams->getPreferredLanguages(false));
+$oGeocode->loadParamArray($oParams);
 
-    if (version_compare(phpversion(), '5.4.0', '<')) {
-        echo json_encode($aSearchResults);
-    } else {
-        echo json_encode($aSearchResults, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)."\n";
-    }
+if ($oParams->getBool('search')) {
+    $oGeocode->setQuery($aCMDResult['search']);
 } else {
-    showUsage($aCMDOptions, true);
+    $oGeocode->setQueryFromParams($oParams);
 }
+
+$aSearchResults = $oGeocode->lookup();
+
+echo json_encode($aSearchResults, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)."\n";
index 0a27c484914fddb169b11dfe47184848d754bbc9..39016d072a17522b741bbb84bffb2c51fc048d37 100755 (executable)
@@ -1,4 +1,4 @@
-#!@PHP_BIN@ -Cq
+#!/usr/bin/php -Cq
 <?php
 
 $sFile = 'sample.log.txt'; // Apache log file
old mode 100755 (executable)
new mode 100644 (file)
index b9c0166..3015f13
@@ -1,12 +1,13 @@
-#!@PHP_BIN@ -Cq
 <?php
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-cmd.php');
+require_once(CONST_BasePath.'/lib/setup/SetupClass.php');
+require_once(CONST_BasePath.'/lib/setup_functions.php');
 ini_set('memory_limit', '800M');
 
-# (long-opt, short-opt, min-occurs, max-occurs, num-arguments, num-arguments, type, help)
+use Nominatim\Setup\SetupFunctions as SetupFunctions;
 
+// (long-opt, short-opt, min-occurs, max-occurs, num-arguments, num-arguments, type, help)
 $aCMDOptions
 = array(
    'Create and setup nominatim search system',
@@ -23,6 +24,7 @@ $aCMDOptions
    array('setup-db', '', 0, 1, 0, 0, 'bool', 'Build a blank nominatim db'),
    array('import-data', '', 0, 1, 0, 0, 'bool', 'Import a osm file'),
    array('osm2pgsql-cache', '', 0, 1, 1, 1, 'int', 'Cache size used by osm2pgsql'),
+   array('reverse-only', '', 0, 1, 0, 0, 'bool', 'Do not create search tables and indexes'),
    array('create-functions', '', 0, 1, 0, 0, 'bool', 'Create functions'),
    array('enable-diff-updates', '', 0, 1, 0, 0, 'bool', 'Turn on the code required to make diff updates work'),
    array('enable-debug-statements', '', 0, 1, 0, 0, 'bool', 'Include debug warning statements in pgsql commands'),
@@ -43,711 +45,116 @@ $aCMDOptions
    array('create-country-names', '', 0, 1, 0, 0, 'bool', 'Create default list of searchable country names'),
    array('drop', '', 0, 1, 0, 0, 'bool', 'Drop tables needed for updates, making the database readonly (EXPERIMENTAL)'),
   );
+
+// $aCMDOptions passed to getCmdOpt by reference
 getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
 
 $bDidSomething = false;
 
-// Check if osm-file is set and points to a valid file if --all or --import-data is given
+//*******************************************************
+// Making some sanity check:
+// Check if osm-file is set and points to a valid file
 if ($aCMDResult['import-data'] || $aCMDResult['all']) {
-    if (!isset($aCMDResult['osm-file'])) {
-        fail('missing --osm-file for data import');
-    }
-
-    if (!file_exists($aCMDResult['osm-file'])) {
-        fail('the path supplied to --osm-file does not exist');
-    }
-
-    if (!is_readable($aCMDResult['osm-file'])) {
-        fail('osm-file "'.$aCMDResult['osm-file'].'" not readable');
-    }
-}
-
-// by default, use all but one processor, but never more than 15.
-$iInstances = isset($aCMDResult['threads'])
-              ? $aCMDResult['threads']
-              : (min(16, getProcessorCount()) - 1);
-
-if ($iInstances < 1) {
-    $iInstances = 1;
-    warn("resetting threads to $iInstances");
+    // to remain in /lib/setup_functions.php function
+    checkInFile($aCMDResult['osm-file']);
 }
 
-// Assume we can steal all the cache memory in the box (unless told otherwise)
-if (isset($aCMDResult['osm2pgsql-cache'])) {
-    $iCacheMemory = $aCMDResult['osm2pgsql-cache'];
-} else {
-    $iCacheMemory = getCacheMemoryMB();
+// osmosis init is no longer supported
+if ($aCMDResult['osmosis-init']) {
+    $bDidSomething = true;
+    echo "Command 'osmosis-init' no longer available, please use utils/update.php --init-updates.\n";
 }
 
-$sModulePath = CONST_Database_Module_Path;
-info('module path: ' . $sModulePath);
-
-$aDSNInfo = DB::parseDSN(CONST_Database_DSN);
-if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432;
+// ******************************************************
+// instantiate Setup class
+$oSetup = new SetupFunctions($aCMDResult);
 
+// *******************************************************
+// go through complete process if 'all' is selected or start selected functions
 if ($aCMDResult['create-db'] || $aCMDResult['all']) {
-    info('Create DB');
     $bDidSomething = true;
-    $oDB = DB::connect(CONST_Database_DSN, false);
-    if (!PEAR::isError($oDB)) {
-        fail('database already exists ('.CONST_Database_DSN.')');
-    }
-
-    $sCreateDBCmd = 'createdb -E UTF-8 -p '.$aDSNInfo['port'].' '.$aDSNInfo['database'];
-    if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
-        $sCreateDBCmd .= ' -U ' . $aDSNInfo['username'];
-    }
-    if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
-        $sCreateDBCmd .= ' -h ' . $aDSNInfo['hostspec'];
-    }
-
-    $aProcEnv = null;
-    if (isset($aDSNInfo['password']) && $aDSNInfo['password']) {
-        $aProcEnv = array_merge(array('PGPASSWORD' => $aDSNInfo['password']), $_ENV);
-    }
-
-    $result = runWithEnv($sCreateDBCmd, $aProcEnv);
-    if ($result != 0) fail('Error executing external command: '.$sCreateDBCmd);
+    $oSetup->createDB();
 }
 
+$oSetup->connect();
+
 if ($aCMDResult['setup-db'] || $aCMDResult['all']) {
-    info('Setup DB');
     $bDidSomething = true;
-
-    $oDB =& getDB();
-
-    $fPostgresVersion = getPostgresVersion($oDB);
-    echo 'Postgres version found: '.$fPostgresVersion."\n";
-
-    if ($fPostgresVersion < 9.1) {
-        fail('Minimum supported version of Postgresql is 9.1.');
-    }
-
-    pgsqlRunScript('CREATE EXTENSION IF NOT EXISTS hstore');
-    pgsqlRunScript('CREATE EXTENSION IF NOT EXISTS postgis');
-
-    // For extratags and namedetails the hstore_to_json converter is
-    // needed which is only available from Postgresql 9.3+. For older
-    // versions add a dummy function that returns nothing.
-    $iNumFunc = chksql($oDB->getOne("select count(*) from pg_proc where proname = 'hstore_to_json'"));
-
-    if ($iNumFunc == 0) {
-        pgsqlRunScript("create function hstore_to_json(dummy hstore) returns text AS 'select null::text' language sql immutable");
-        warn('Postgresql is too old. extratags and namedetails API not available.');
-    }
-
-    $fPostgisVersion = getPostgisVersion($oDB);
-    echo 'Postgis version found: '.$fPostgisVersion."\n";
-
-    if ($fPostgisVersion < 2.1) {
-        // Functions were renamed in 2.1 and throw an annoying deprecation warning
-        pgsqlRunScript('ALTER FUNCTION st_line_interpolate_point(geometry, double precision) RENAME TO ST_LineInterpolatePoint');
-        pgsqlRunScript('ALTER FUNCTION ST_Line_Locate_Point(geometry, geometry) RENAME TO ST_LineLocatePoint');
-    }
-    if ($fPostgisVersion < 2.2) {
-        pgsqlRunScript('ALTER FUNCTION ST_Distance_Spheroid(geometry, geometry, spheroid) RENAME TO ST_DistanceSpheroid');
-    }
-
-    $i = chksql($oDB->getOne("select count(*) from pg_user where usename = '".CONST_Database_Web_User."'"));
-    if ($i == 0) {
-        echo "\nERROR: Web user '".CONST_Database_Web_User."' does not exist. Create it with:\n";
-        echo "\n          createuser ".CONST_Database_Web_User."\n\n";
-        exit(1);
-    }
-
-    if (!checkModulePresence()) {
-        fail('error loading nominatim.so module');
-    }
-
-    if (!file_exists(CONST_ExtraDataPath.'/country_osm_grid.sql.gz')) {
-        echo 'Error: you need to download the country_osm_grid first:';
-        echo "\n    wget -O ".CONST_ExtraDataPath."/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz\n";
-        exit(1);
-    }
-
-    pgsqlRunScriptFile(CONST_BasePath.'/data/country_name.sql');
-    pgsqlRunScriptFile(CONST_BasePath.'/data/country_naturalearthdata.sql');
-    pgsqlRunScriptFile(CONST_BasePath.'/data/country_osm_grid.sql.gz');
-    pgsqlRunScriptFile(CONST_BasePath.'/data/gb_postcode_table.sql');
-    if (file_exists(CONST_BasePath.'/data/gb_postcode_data.sql.gz')) {
-        pgsqlRunScriptFile(CONST_BasePath.'/data/gb_postcode_data.sql.gz');
-    } else {
-        warn('external UK postcode table not found.');
-    }
-    if (CONST_Use_Extra_US_Postcodes) {
-        pgsqlRunScriptFile(CONST_BasePath.'/data/us_postcode.sql');
-    }
-
-    if ($aCMDResult['no-partitions']) {
-        pgsqlRunScript('update country_name set partition = 0');
-    }
-
-    // the following will be needed by create_functions later but
-    // is only defined in the subsequently called create_tables.
-    // Create dummies here that will be overwritten by the proper
-    // versions in create-tables.
-    pgsqlRunScript('CREATE TABLE IF NOT EXISTS place_boundingbox ()');
-    pgsqlRunScript('CREATE TYPE wikipedia_article_match AS ()', false);
+    $oSetup->setupDB();
 }
 
+// Try accessing the C module, so we know early if something is wrong
+checkModulePresence(); // raises exception on failure
+
 if ($aCMDResult['import-data'] || $aCMDResult['all']) {
-    info('Import data');
     $bDidSomething = true;
-
-    $osm2pgsql = CONST_Osm2pgsql_Binary;
-    if (!file_exists($osm2pgsql)) {
-        echo "Check CONST_Osm2pgsql_Binary in your local settings file.\n";
-        echo "Normally you should not need to set this manually.\n";
-        fail("osm2pgsql not found in '$osm2pgsql'");
-    }
-
-    if (!is_null(CONST_Osm2pgsql_Flatnode_File) && CONST_Osm2pgsql_Flatnode_File) {
-        $osm2pgsql .= ' --flat-nodes '.CONST_Osm2pgsql_Flatnode_File;
-    }
-    if (CONST_Tablespace_Osm2pgsql_Data)
-        $osm2pgsql .= ' --tablespace-slim-data '.CONST_Tablespace_Osm2pgsql_Data;
-    if (CONST_Tablespace_Osm2pgsql_Index)
-        $osm2pgsql .= ' --tablespace-slim-index '.CONST_Tablespace_Osm2pgsql_Index;
-    if (CONST_Tablespace_Place_Data)
-        $osm2pgsql .= ' --tablespace-main-data '.CONST_Tablespace_Place_Data;
-    if (CONST_Tablespace_Place_Index)
-        $osm2pgsql .= ' --tablespace-main-index '.CONST_Tablespace_Place_Index;
-    $osm2pgsql .= ' -lsc -O gazetteer --hstore --number-processes 1';
-    $osm2pgsql .= ' -C '.$iCacheMemory;
-    $osm2pgsql .= ' -P '.$aDSNInfo['port'];
-    if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
-        $osm2pgsql .= ' -U ' . $aDSNInfo['username'];
-    }
-    if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
-        $osm2pgsql .= ' -H ' . $aDSNInfo['hostspec'];
-    }
-
-    $aProcEnv = null;
-    if (isset($aDSNInfo['password']) && $aDSNInfo['password']) {
-        $aProcEnv = array_merge(array('PGPASSWORD' => $aDSNInfo['password']), $_ENV);
-    }
-
-    $osm2pgsql .= ' -d '.$aDSNInfo['database'].' '.$aCMDResult['osm-file'];
-    runWithEnv($osm2pgsql, $aProcEnv);
-
-    $oDB =& getDB();
-    if (!$aCMDResult['ignore-errors'] && !chksql($oDB->getRow('select * from place limit 1'))) {
-        fail('No Data');
-    }
+    $oSetup->importData($aCMDResult['osm-file']);
 }
 
 if ($aCMDResult['create-functions'] || $aCMDResult['all']) {
-    info('Create Functions');
     $bDidSomething = true;
-
-    if (!checkModulePresence()) {
-        fail('error loading nominatim.so module');
-    }
-
-    create_sql_functions($aCMDResult);
+    $oSetup->createFunctions();
 }
 
 if ($aCMDResult['create-tables'] || $aCMDResult['all']) {
-    info('Create Tables');
     $bDidSomething = true;
-
-    $sTemplate = file_get_contents(CONST_BasePath.'/sql/tables.sql');
-    $sTemplate = str_replace('{www-user}', CONST_Database_Web_User, $sTemplate);
-    $sTemplate = replace_tablespace(
-        '{ts:address-data}',
-        CONST_Tablespace_Address_Data,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:address-index}',
-        CONST_Tablespace_Address_Index,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:search-data}',
-        CONST_Tablespace_Search_Data,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:search-index}',
-        CONST_Tablespace_Search_Index,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:aux-data}',
-        CONST_Tablespace_Aux_Data,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:aux-index}',
-        CONST_Tablespace_Aux_Index,
-        $sTemplate
-    );
-    pgsqlRunScript($sTemplate, false);
-
-    // re-run the functions
-    info('Recreate Functions');
-    create_sql_functions($aCMDResult);
+    $oSetup->createTables($aCMDResult['reverse-only']);
+    $oSetup->createFunctions();
+    $oSetup->createTableTriggers();
 }
 
 if ($aCMDResult['create-partition-tables'] || $aCMDResult['all']) {
-    info('Create Partition Tables');
     $bDidSomething = true;
-
-    $sTemplate = file_get_contents(CONST_BasePath.'/sql/partition-tables.src.sql');
-    $sTemplate = replace_tablespace(
-        '{ts:address-data}',
-        CONST_Tablespace_Address_Data,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:address-index}',
-        CONST_Tablespace_Address_Index,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:search-data}',
-        CONST_Tablespace_Search_Data,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:search-index}',
-        CONST_Tablespace_Search_Index,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:aux-data}',
-        CONST_Tablespace_Aux_Data,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:aux-index}',
-        CONST_Tablespace_Aux_Index,
-        $sTemplate
-    );
-
-    pgsqlRunPartitionScript($sTemplate);
+    $oSetup->createPartitionTables();
 }
 
-
 if ($aCMDResult['create-partition-functions'] || $aCMDResult['all']) {
-    info('Create Partition Functions');
     $bDidSomething = true;
-
-    $sTemplate = file_get_contents(CONST_BasePath.'/sql/partition-functions.src.sql');
-
-    pgsqlRunPartitionScript($sTemplate);
+    $oSetup->createPartitionFunctions();
 }
 
 if ($aCMDResult['import-wikipedia-articles'] || $aCMDResult['all']) {
     $bDidSomething = true;
-    $sWikiArticlesFile = CONST_Wikipedia_Data_Path.'/wikipedia_article.sql.bin';
-    $sWikiRedirectsFile = CONST_Wikipedia_Data_Path.'/wikipedia_redirect.sql.bin';
-    if (file_exists($sWikiArticlesFile)) {
-        info('Importing wikipedia articles');
-        pgsqlRunDropAndRestore($sWikiArticlesFile);
-    } else {
-        warn('wikipedia article dump file not found - places will have default importance');
-    }
-    if (file_exists($sWikiRedirectsFile)) {
-        info('Importing wikipedia redirects');
-        pgsqlRunDropAndRestore($sWikiRedirectsFile);
-    } else {
-        warn('wikipedia redirect dump file not found - some place importance values may be missing');
-    }
+    $oSetup->importWikipediaArticles();
 }
 
-
 if ($aCMDResult['load-data'] || $aCMDResult['all']) {
-    info('Drop old Data');
     $bDidSomething = true;
-
-    $oDB =& getDB();
-    if (!pg_query($oDB->connection, 'TRUNCATE word')) fail(pg_last_error($oDB->connection));
-    echo '.';
-    if (!pg_query($oDB->connection, 'TRUNCATE placex')) fail(pg_last_error($oDB->connection));
-    echo '.';
-    if (!pg_query($oDB->connection, 'TRUNCATE location_property_osmline')) fail(pg_last_error($oDB->connection));
-    echo '.';
-    if (!pg_query($oDB->connection, 'TRUNCATE place_addressline')) fail(pg_last_error($oDB->connection));
-    echo '.';
-    if (!pg_query($oDB->connection, 'TRUNCATE place_boundingbox')) fail(pg_last_error($oDB->connection));
-    echo '.';
-    if (!pg_query($oDB->connection, 'TRUNCATE location_area')) fail(pg_last_error($oDB->connection));
-    echo '.';
-    if (!pg_query($oDB->connection, 'TRUNCATE search_name')) fail(pg_last_error($oDB->connection));
-    echo '.';
-    if (!pg_query($oDB->connection, 'TRUNCATE search_name_blank')) fail(pg_last_error($oDB->connection));
-    echo '.';
-    if (!pg_query($oDB->connection, 'DROP SEQUENCE seq_place')) fail(pg_last_error($oDB->connection));
-    echo '.';
-    if (!pg_query($oDB->connection, 'CREATE SEQUENCE seq_place start 100000')) fail(pg_last_error($oDB->connection));
-    echo '.';
-
-    $sSQL = 'select distinct partition from country_name';
-    $aPartitions = chksql($oDB->getCol($sSQL));
-    if (!$aCMDResult['no-partitions']) $aPartitions[] = 0;
-    foreach ($aPartitions as $sPartition) {
-        if (!pg_query($oDB->connection, 'TRUNCATE location_road_'.$sPartition)) fail(pg_last_error($oDB->connection));
-        echo '.';
-    }
-
-    // used by getorcreate_word_id to ignore frequent partial words
-    $sSQL = 'CREATE OR REPLACE FUNCTION get_maxwordfreq() RETURNS integer AS ';
-    $sSQL .= '$$ SELECT '.CONST_Max_Word_Frequency.' as maxwordfreq; $$ LANGUAGE SQL IMMUTABLE';
-    if (!pg_query($oDB->connection, $sSQL)) {
-        fail(pg_last_error($oDB->connection));
-    }
-    echo ".\n";
-
-    // pre-create the word list
-    if (!$aCMDResult['disable-token-precalc']) {
-        info('Loading word list');
-        pgsqlRunScriptFile(CONST_BasePath.'/data/words.sql');
-    }
-
-    info('Load Data');
-    $sColumns = 'osm_type, osm_id, class, type, name, admin_level, address, extratags, geometry';
-
-    $aDBInstances = array();
-    $iLoadThreads = max(1, $iInstances - 1);
-    for ($i = 0; $i < $iLoadThreads; $i++) {
-        $aDBInstances[$i] =& getDB(true);
-        $sSQL = "INSERT INTO placex ($sColumns) SELECT $sColumns FROM place WHERE osm_id % $iLoadThreads = $i";
-        $sSQL .= " and not (class='place' and type='houses' and osm_type='W'";
-        $sSQL .= "          and ST_GeometryType(geometry) = 'ST_LineString')";
-        $sSQL .= ' and ST_IsValid(geometry)';
-        if ($aCMDResult['verbose']) echo "$sSQL\n";
-        if (!pg_send_query($aDBInstances[$i]->connection, $sSQL)) {
-            fail(pg_last_error($aDBInstances[$i]->connection));
-        }
-    }
-    // last thread for interpolation lines
-    $aDBInstances[$iLoadThreads] =& getDB(true);
-    $sSQL = 'insert into location_property_osmline';
-    $sSQL .= ' (osm_id, address, linegeo)';
-    $sSQL .= ' SELECT osm_id, address, geometry from place where ';
-    $sSQL .= "class='place' and type='houses' and osm_type='W' and ST_GeometryType(geometry) = 'ST_LineString'";
-    if ($aCMDResult['verbose']) echo "$sSQL\n";
-    if (!pg_send_query($aDBInstances[$iLoadThreads]->connection, $sSQL)) {
-        fail(pg_last_error($aDBInstances[$iLoadThreads]->connection));
-    }
-
-    $bFailed = false;
-    for ($i = 0; $i <= $iLoadThreads; $i++) {
-        while (($hPGresult = pg_get_result($aDBInstances[$i]->connection)) !== false) {
-            $resultStatus = pg_result_status($hPGresult);
-            // PGSQL_EMPTY_QUERY, PGSQL_COMMAND_OK, PGSQL_TUPLES_OK,
-            // PGSQL_COPY_OUT, PGSQL_COPY_IN, PGSQL_BAD_RESPONSE,
-            // PGSQL_NONFATAL_ERROR and PGSQL_FATAL_ERROR
-            if ($resultStatus != PGSQL_COMMAND_OK && $resultStatus != PGSQL_TUPLES_OK) {
-                $resultError = pg_result_error($hPGresult);
-                echo '-- error text ' . $i . ': ' . $resultError . "\n";
-                $bFailed = true;
-            }
-        }
-    }
-    if ($bFailed) {
-        fail('SQL errors loading placex and/or location_property_osmline tables');
-    }
-    echo "\n";
-    info('Reanalysing database');
-    pgsqlRunScript('ANALYSE');
-
-    $sDatabaseDate = getDatabaseDate($oDB);
-    pg_query($oDB->connection, 'TRUNCATE import_status');
-    if ($sDatabaseDate === false) {
-        warn('could not determine database date.');
-    } else {
-        $sSQL = "INSERT INTO import_status (lastimportdate) VALUES('".$sDatabaseDate."')";
-        pg_query($oDB->connection, $sSQL);
-        echo "Latest data imported from $sDatabaseDate.\n";
-    }
+    $oSetup->loadData($aCMDResult['disable-token-precalc']);
 }
 
 if ($aCMDResult['import-tiger-data']) {
-    info('Import Tiger data');
     $bDidSomething = true;
-
-    $sTemplate = file_get_contents(CONST_BasePath.'/sql/tiger_import_start.sql');
-    $sTemplate = str_replace('{www-user}', CONST_Database_Web_User, $sTemplate);
-    $sTemplate = replace_tablespace(
-        '{ts:aux-data}',
-        CONST_Tablespace_Aux_Data,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:aux-index}',
-        CONST_Tablespace_Aux_Index,
-        $sTemplate
-    );
-    pgsqlRunScript($sTemplate, false);
-
-    $aDBInstances = array();
-    for ($i = 0; $i < $iInstances; $i++) {
-        $aDBInstances[$i] =& getDB(true);
-    }
-
-    foreach (glob(CONST_Tiger_Data_Path.'/*.sql') as $sFile) {
-        echo $sFile.': ';
-        $hFile = fopen($sFile, 'r');
-        $sSQL = fgets($hFile, 100000);
-        $iLines = 0;
-
-        while (true) {
-            for ($i = 0; $i < $iInstances; $i++) {
-                if (!pg_connection_busy($aDBInstances[$i]->connection)) {
-                    while (pg_get_result($aDBInstances[$i]->connection));
-                    $sSQL = fgets($hFile, 100000);
-                    if (!$sSQL) break 2;
-                    if (!pg_send_query($aDBInstances[$i]->connection, $sSQL)) fail(pg_last_error($oDB->connection));
-                    $iLines++;
-                    if ($iLines == 1000) {
-                        echo '.';
-                        $iLines = 0;
-                    }
-                }
-            }
-            usleep(10);
-        }
-
-        fclose($hFile);
-
-        $bAnyBusy = true;
-        while ($bAnyBusy) {
-            $bAnyBusy = false;
-            for ($i = 0; $i < $iInstances; $i++) {
-                if (pg_connection_busy($aDBInstances[$i]->connection)) $bAnyBusy = true;
-            }
-            usleep(10);
-        }
-        echo "\n";
-    }
-
-    info('Creating indexes on Tiger data');
-    $sTemplate = file_get_contents(CONST_BasePath.'/sql/tiger_import_finish.sql');
-    $sTemplate = str_replace('{www-user}', CONST_Database_Web_User, $sTemplate);
-    $sTemplate = replace_tablespace(
-        '{ts:aux-data}',
-        CONST_Tablespace_Aux_Data,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:aux-index}',
-        CONST_Tablespace_Aux_Index,
-        $sTemplate
-    );
-    pgsqlRunScript($sTemplate, false);
+    $oSetup->importTigerData();
 }
 
 if ($aCMDResult['calculate-postcodes'] || $aCMDResult['all']) {
-    info('Calculate Postcodes');
     $bDidSomething = true;
-    $oDB =& getDB();
-    if (!pg_query($oDB->connection, 'TRUNCATE location_postcode')) {
-        fail(pg_last_error($oDB->connection));
-    }
-
-    $sSQL  = 'INSERT INTO location_postcode';
-    $sSQL .= ' (place_id, indexed_status, country_code, postcode, geometry) ';
-    $sSQL .= "SELECT nextval('seq_place'), 1, country_code,";
-    $sSQL .= "       upper(trim (both ' ' from address->'postcode')) as pc,";
-    $sSQL .= '       ST_Centroid(ST_Collect(ST_Centroid(geometry)))';
-    $sSQL .= '  FROM placex';
-    $sSQL .= " WHERE address ? 'postcode' AND address->'postcode' NOT SIMILAR TO '%(,|;)%'";
-    $sSQL .= '       AND geometry IS NOT null';
-    $sSQL .= ' GROUP BY country_code, pc';
-
-    if (!pg_query($oDB->connection, $sSQL)) {
-        fail(pg_last_error($oDB->connection));
-    }
-
-    if (CONST_Use_Extra_US_Postcodes) {
-        // only add postcodes that are not yet available in OSM
-        $sSQL  = 'INSERT INTO location_postcode';
-        $sSQL .= ' (place_id, indexed_status, country_code, postcode, geometry) ';
-        $sSQL .= "SELECT nextval('seq_place'), 1, 'us', postcode,";
-        $sSQL .= '       ST_SetSRID(ST_Point(x,y),4326)';
-        $sSQL .= '  FROM us_postcode WHERE postcode NOT IN';
-        $sSQL .= '        (SELECT postcode FROM location_postcode';
-        $sSQL .= "          WHERE country_code = 'us')";
-        if (!pg_query($oDB->connection, $sSQL)) fail(pg_last_error($oDB->connection));
-    }
-
-    // add missing postcodes for GB (if available)
-    $sSQL  = 'INSERT INTO location_postcode';
-    $sSQL .= ' (place_id, indexed_status, country_code, postcode, geometry) ';
-    $sSQL .= "SELECT nextval('seq_place'), 1, 'gb', postcode, geometry";
-    $sSQL .= '  FROM gb_postcode WHERE postcode NOT IN';
-    $sSQL .= '           (SELECT postcode FROM location_postcode';
-    $sSQL .= "             WHERE country_code = 'gb')";
-    if (!pg_query($oDB->connection, $sSQL)) fail(pg_last_error($oDB->connection));
-
-    if (!$aCMDResult['all']) {
-        $sSQL = "DELETE FROM word WHERE class='place' and type='postcode'";
-        $sSQL .= 'and word NOT IN (SELECT postcode FROM location_postcode)';
-        if (!pg_query($oDB->connection, $sSQL)) {
-            fail(pg_last_error($oDB->connection));
-        }
-    }
-    $sSQL = 'SELECT count(getorcreate_postcode_id(v)) FROM ';
-    $sSQL .= '(SELECT distinct(postcode) as v FROM location_postcode) p';
-
-    if (!pg_query($oDB->connection, $sSQL)) {
-        fail(pg_last_error($oDB->connection));
-    }
+    $oSetup->calculatePostcodes($aCMDResult['all']);
 }
 
-if ($aCMDResult['osmosis-init']) {
+if ($aCMDResult['index'] || $aCMDResult['all']) {
     $bDidSomething = true;
-    echo "Command 'osmosis-init' no longer available, please use utils/update.php --init-updates.\n";
+    $oSetup->index($aCMDResult['index-noanalyse']);
 }
 
-if ($aCMDResult['index'] || $aCMDResult['all']) {
+if ($aCMDResult['drop']) {
     $bDidSomething = true;
-    $sOutputFile = '';
-    $sBaseCmd = CONST_InstallPath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'].' -t '.$iInstances.$sOutputFile;
-    if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
-        $sBaseCmd .= ' -H ' . $aDSNInfo['hostspec'];
-    }
-    if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
-        $sBaseCmd .= ' -U ' . $aDSNInfo['username'];
-    }
-    $aProcEnv = null;
-    if (isset($aDSNInfo['password']) && $aDSNInfo['password']) {
-        $aProcEnv = array_merge(array('PGPASSWORD' => $aDSNInfo['password']), $_ENV);
-    }
-
-    info('Index ranks 0 - 4');
-    $iStatus = runWithEnv($sBaseCmd.' -R 4', $aProcEnv);
-    if ($iStatus != 0) {
-        fail('error status ' . $iStatus . ' running nominatim!');
-    }
-    if (!$aCMDResult['index-noanalyse']) pgsqlRunScript('ANALYSE');
-    info('Index ranks 5 - 25');
-    $iStatus = runWithEnv($sBaseCmd.' -r 5 -R 25', $aProcEnv);
-    if ($iStatus != 0) {
-        fail('error status ' . $iStatus . ' running nominatim!');
-    }
-    if (!$aCMDResult['index-noanalyse']) pgsqlRunScript('ANALYSE');
-    info('Index ranks 26 - 30');
-    $iStatus = runWithEnv($sBaseCmd.' -r 26', $aProcEnv);
-    if ($iStatus != 0) {
-        fail('error status ' . $iStatus . ' running nominatim!');
-    }
-
-    info('Index postcodes');
-    $oDB =& getDB();
-    $sSQL = 'UPDATE location_postcode SET indexed_status = 0';
-    if (!pg_query($oDB->connection, $sSQL)) fail(pg_last_error($oDB->connection));
+    $oSetup->drop($aCMDResult);
 }
 
 if ($aCMDResult['create-search-indices'] || $aCMDResult['all']) {
-    info('Create Search indices');
     $bDidSomething = true;
-
-    $sTemplate = file_get_contents(CONST_BasePath.'/sql/indices.src.sql');
-    $sTemplate = str_replace('{www-user}', CONST_Database_Web_User, $sTemplate);
-    $sTemplate = replace_tablespace(
-        '{ts:address-index}',
-        CONST_Tablespace_Address_Index,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:search-index}',
-        CONST_Tablespace_Search_Index,
-        $sTemplate
-    );
-    $sTemplate = replace_tablespace(
-        '{ts:aux-index}',
-        CONST_Tablespace_Aux_Index,
-        $sTemplate
-    );
-
-    pgsqlRunScript($sTemplate);
+    $oSetup->createSearchIndices();
 }
 
 if ($aCMDResult['create-country-names'] || $aCMDResult['all']) {
-    info('Create search index for default country names');
     $bDidSomething = true;
-
-    pgsqlRunScript("select getorcreate_country(make_standard_name('uk'), 'gb')");
-    pgsqlRunScript("select getorcreate_country(make_standard_name('united states'), 'us')");
-    pgsqlRunScript('select count(*) from (select getorcreate_country(make_standard_name(country_code), country_code) from country_name where country_code is not null) as x');
-    pgsqlRunScript("select count(*) from (select getorcreate_country(make_standard_name(name->'name'), country_code) from country_name where name ? 'name') as x");
-
-    $sSQL = 'select count(*) from (select getorcreate_country(make_standard_name(v), country_code) from (select country_code, skeys(name) as k, svals(name) as v from country_name) x where k ';
-    if (CONST_Languages) {
-        $sSQL .= 'in ';
-        $sDelim = '(';
-        foreach (explode(',', CONST_Languages) as $sLang) {
-            $sSQL .= $sDelim."'name:$sLang'";
-            $sDelim = ',';
-        }
-        $sSQL .= ')';
-    } else {
-        // all include all simple name tags
-        $sSQL .= "like 'name:%'";
-    }
-    $sSQL .= ') v';
-    pgsqlRunScript($sSQL);
-}
-
-if ($aCMDResult['drop']) {
-    info('Drop tables only required for updates');
-    // The implementation is potentially a bit dangerous because it uses
-    // a positive selection of tables to keep, and deletes everything else.
-    // Including any tables that the unsuspecting user might have manually
-    // created. USE AT YOUR OWN PERIL.
-    $bDidSomething = true;
-
-    // tables we want to keep. everything else goes.
-    $aKeepTables = array(
-                    '*columns',
-                    'import_polygon_*',
-                    'import_status',
-                    'place_addressline',
-                    'location_postcode',
-                    'location_property*',
-                    'placex',
-                    'search_name',
-                    'seq_*',
-                    'word',
-                    'query_log',
-                    'new_query_log',
-                    'spatial_ref_sys',
-                    'country_name',
-                    'place_classtype_*'
-                   );
-
-    $oDB =& getDB();
-    $aDropTables = array();
-    $aHaveTables = chksql($oDB->getCol("SELECT tablename FROM pg_tables WHERE schemaname='public'"));
-
-    foreach ($aHaveTables as $sTable) {
-        $bFound = false;
-        foreach ($aKeepTables as $sKeep) {
-            if (fnmatch($sKeep, $sTable)) {
-                $bFound = true;
-                break;
-            }
-        }
-        if (!$bFound) array_push($aDropTables, $sTable);
-    }
-
-    foreach ($aDropTables as $sDrop) {
-        if ($aCMDResult['verbose']) echo "dropping table $sDrop\n";
-        @pg_query($oDB->connection, "DROP TABLE $sDrop CASCADE");
-        // ignore warnings/errors as they might be caused by a table having
-        // been deleted already by CASCADE
-    }
-
-    if (!is_null(CONST_Osm2pgsql_Flatnode_File) && CONST_Osm2pgsql_Flatnode_File) {
-        if ($aCMDResult['verbose']) echo 'deleting '.CONST_Osm2pgsql_Flatnode_File."\n";
-        unlink(CONST_Osm2pgsql_Flatnode_File);
-    }
+    $oSetup->createCountryNames($aCMDResult);
 }
 
+// ******************************************************
+// If we did something, repeat the warnings
 if (!$bDidSomething) {
     showUsage($aCMDOptions, true);
 } else {
@@ -756,210 +163,3 @@ if (!$bDidSomething) {
     echo "\n";
     info('Setup finished.');
 }
-
-
-function pgsqlRunScriptFile($sFilename)
-{
-    global $aCMDResult;
-    if (!file_exists($sFilename)) fail('unable to find '.$sFilename);
-
-    // Convert database DSN to psql parameters
-    $aDSNInfo = DB::parseDSN(CONST_Database_DSN);
-    if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432;
-    $sCMD = 'psql -p '.$aDSNInfo['port'].' -d '.$aDSNInfo['database'];
-    if (!$aCMDResult['verbose']) {
-        $sCMD .= ' -q';
-    }
-    if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
-        $sCMD .= ' -h ' . $aDSNInfo['hostspec'];
-    }
-    if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
-        $sCMD .= ' -U ' . $aDSNInfo['username'];
-    }
-    $aProcEnv = null;
-    if (isset($aDSNInfo['password']) && $aDSNInfo['password']) {
-        $aProcEnv = array_merge(array('PGPASSWORD' => $aDSNInfo['password']), $_ENV);
-    }
-
-    $ahGzipPipes = null;
-    if (preg_match('/\\.gz$/', $sFilename)) {
-        $aDescriptors = array(
-                         0 => array('pipe', 'r'),
-                         1 => array('pipe', 'w'),
-                         2 => array('file', '/dev/null', 'a')
-                        );
-        $hGzipProcess = proc_open('zcat '.$sFilename, $aDescriptors, $ahGzipPipes);
-        if (!is_resource($hGzipProcess)) fail('unable to start zcat');
-        $aReadPipe = $ahGzipPipes[1];
-        fclose($ahGzipPipes[0]);
-    } else {
-        $sCMD .= ' -f '.$sFilename;
-        $aReadPipe = array('pipe', 'r');
-    }
-
-    $aDescriptors = array(
-                     0 => $aReadPipe,
-                     1 => array('pipe', 'w'),
-                     2 => array('file', '/dev/null', 'a')
-                    );
-    $ahPipes = null;
-    $hProcess = proc_open($sCMD, $aDescriptors, $ahPipes, null, $aProcEnv);
-    if (!is_resource($hProcess)) fail('unable to start pgsql');
-
-    // TODO: error checking
-    while (!feof($ahPipes[1])) {
-        echo fread($ahPipes[1], 4096);
-    }
-    fclose($ahPipes[1]);
-
-    $iReturn = proc_close($hProcess);
-    if ($iReturn > 0) {
-        fail("pgsql returned with error code ($iReturn)");
-    }
-    if ($ahGzipPipes) {
-        fclose($ahGzipPipes[1]);
-        proc_close($hGzipProcess);
-    }
-}
-
-function pgsqlRunScript($sScript, $bfatal = true)
-{
-    global $aCMDResult;
-    runSQLScript(
-        $sScript,
-        $bfatal,
-        $aCMDResult['verbose'],
-        $aCMDResult['ignore-errors']
-    );
-}
-
-function pgsqlRunPartitionScript($sTemplate)
-{
-    global $aCMDResult;
-    $oDB =& getDB();
-
-    $sSQL = 'select distinct partition from country_name';
-    $aPartitions = chksql($oDB->getCol($sSQL));
-    if (!$aCMDResult['no-partitions']) $aPartitions[] = 0;
-
-    preg_match_all('#^-- start(.*?)^-- end#ms', $sTemplate, $aMatches, PREG_SET_ORDER);
-    foreach ($aMatches as $aMatch) {
-        $sResult = '';
-        foreach ($aPartitions as $sPartitionName) {
-            $sResult .= str_replace('-partition-', $sPartitionName, $aMatch[1]);
-        }
-        $sTemplate = str_replace($aMatch[0], $sResult, $sTemplate);
-    }
-
-    pgsqlRunScript($sTemplate);
-}
-
-function pgsqlRunRestoreData($sDumpFile)
-{
-    // Convert database DSN to psql parameters
-    $aDSNInfo = DB::parseDSN(CONST_Database_DSN);
-    if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432;
-    $sCMD = 'pg_restore -p '.$aDSNInfo['port'].' -d '.$aDSNInfo['database'].' -Fc -a '.$sDumpFile;
-
-    $aDescriptors = array(
-                     0 => array('pipe', 'r'),
-                     1 => array('pipe', 'w'),
-                     2 => array('file', '/dev/null', 'a')
-                    );
-    $ahPipes = null;
-    $hProcess = proc_open($sCMD, $aDescriptors, $ahPipes);
-    if (!is_resource($hProcess)) fail('unable to start pg_restore');
-
-    fclose($ahPipes[0]);
-
-    // TODO: error checking
-    while (!feof($ahPipes[1])) {
-        echo fread($ahPipes[1], 4096);
-    }
-    fclose($ahPipes[1]);
-
-    $iReturn = proc_close($hProcess);
-}
-
-function pgsqlRunDropAndRestore($sDumpFile)
-{
-    // Convert database DSN to psql parameters
-    $aDSNInfo = DB::parseDSN(CONST_Database_DSN);
-    if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432;
-    $sCMD = 'pg_restore -p '.$aDSNInfo['port'].' -d '.$aDSNInfo['database'].' -Fc --clean '.$sDumpFile;
-    if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
-        $sCMD .= ' -h ' . $aDSNInfo['hostspec'];
-    }
-    if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
-        $sCMD .= ' -U ' . $aDSNInfo['username'];
-    }
-    $aProcEnv = null;
-    if (isset($aDSNInfo['password']) && $aDSNInfo['password']) {
-        $aProcEnv = array_merge(array('PGPASSWORD' => $aDSNInfo['password']), $_ENV);
-    }
-
-    $iReturn = runWithEnv($sCMD, $aProcEnv);
-}
-
-function passthruCheckReturn($sCmd)
-{
-    $iResult = -1;
-    passthru($sCmd, $iResult);
-}
-
-function replace_tablespace($sTemplate, $sTablespace, $sSql)
-{
-    if ($sTablespace) {
-        $sSql = str_replace($sTemplate, 'TABLESPACE "'.$sTablespace.'"', $sSql);
-    } else {
-        $sSql = str_replace($sTemplate, '', $sSql);
-    }
-
-    return $sSql;
-}
-
-function create_sql_functions($aCMDResult)
-{
-    global $sModulePath;
-    $sTemplate = file_get_contents(CONST_BasePath.'/sql/functions.sql');
-    $sTemplate = str_replace('{modulepath}', $sModulePath, $sTemplate);
-    if ($aCMDResult['enable-diff-updates']) {
-        $sTemplate = str_replace('RETURN NEW; -- %DIFFUPDATES%', '--', $sTemplate);
-    }
-    if ($aCMDResult['enable-debug-statements']) {
-        $sTemplate = str_replace('--DEBUG:', '', $sTemplate);
-    }
-    if (CONST_Limit_Reindexing) {
-        $sTemplate = str_replace('--LIMIT INDEXING:', '', $sTemplate);
-    }
-    if (!CONST_Use_US_Tiger_Data) {
-        $sTemplate = str_replace('-- %NOTIGERDATA% ', '', $sTemplate);
-    }
-    if (!CONST_Use_Aux_Location_data) {
-        $sTemplate = str_replace('-- %NOAUXDATA% ', '', $sTemplate);
-    }
-    pgsqlRunScript($sTemplate);
-}
-
-function checkModulePresence()
-{
-    // Try accessing the C module, so we know early if something is wrong
-    // and can simply error out.
-    global $sModulePath;
-    $sSQL = "CREATE FUNCTION nominatim_test_import_func(text) RETURNS text AS '";
-    $sSQL .= $sModulePath."/nominatim.so', 'transliteration' LANGUAGE c IMMUTABLE STRICT";
-    $sSQL .= ';DROP FUNCTION nominatim_test_import_func(text);';
-
-    $oDB =& getDB();
-    $oResult = $oDB->query($sSQL);
-
-    $bResult = true;
-
-    if (PEAR::isError($oResult)) {
-        echo "\nERROR: Failed to load nominatim module. Reason:\n";
-        echo $oResult->userinfo."\n\n";
-        $bResult = false;
-    }
-
-    return $bResult;
-}
old mode 100755 (executable)
new mode 100644 (file)
index 7d22df5..9e6c9d7
@@ -1,7 +1,5 @@
-#!@PHP_BIN@ -Cq
 <?php
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-cmd.php');
 ini_set('memory_limit', '800M');
 ini_set('display_errors', 'stderr');
@@ -16,7 +14,7 @@ $aCMDOptions
   );
 getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
 
-include(CONST_InstallPath.'/settings/phrase_settings.php');
+include(CONST_Phrase_Config);
 
 if ($aCMDResult['wiki-import']) {
     $oNormalizer = Transliterator::createFromRules(CONST_Term_Normalization_Rules);
@@ -29,77 +27,127 @@ if ($aCMDResult['wiki-import']) {
     foreach (explode(',', $sLanguageIn) as $sLanguage) {
         $sURL = 'https://wiki.openstreetmap.org/wiki/Special:Export/Nominatim/Special_Phrases/'.strtoupper($sLanguage);
         $sWikiPageXML = file_get_contents($sURL);
-        if (preg_match_all('#\\| ([^|]+) \\|\\| ([^|]+) \\|\\| ([^|]+) \\|\\| ([^|]+) \\|\\| ([\\-YN])#', $sWikiPageXML, $aMatches, PREG_SET_ORDER)) {
-            foreach ($aMatches as $aMatch) {
-                $sLabel = trim($aMatch[1]);
-                if ($oNormalizer !== null) {
-                    $sTrans = pg_escape_string($oNormalizer->transliterate($sLabel));
-                } else {
-                    $sTrans = null;
-                }
-                $sClass = trim($aMatch[2]);
-                $sType = trim($aMatch[3]);
-                // hack around a bug where building=yes was imported with
-                // quotes into the wiki
-                $sType = preg_replace('/&quot;/', '', $sType);
-                // sanity check, in case somebody added garbage in the wiki
-                if (preg_match('/^\\w+$/', $sClass) < 1
-                    || preg_match('/^\\w+$/', $sType) < 1
-                ) {
-                    trigger_error("Bad class/type for language $sLanguage: $sClass=$sType");
-                    exit;
-                }
-                // blacklisting: disallow certain class/type combinations
-                if (isset($aTagsBlacklist[$sClass]) && in_array($sType, $aTagsBlacklist[$sClass])) {
-                    // fwrite(STDERR, "Blacklisted: ".$sClass."/".$sType."\n");
-                    continue;
-                }
-                // whitelisting: if class is in whitelist, allow only tags in the list
-                if (isset($aTagsWhitelist[$sClass]) && !in_array($sType, $aTagsWhitelist[$sClass])) {
-                    // fwrite(STDERR, "Non-Whitelisted: ".$sClass."/".$sType."\n");
-                    continue;
-                }
-                $aPairs[$sClass.'|'.$sType] = array($sClass, $sType);
-
-                switch (trim($aMatch[4])) {
-                    case 'near':
-                        echo "select getorcreate_amenityoperator(make_standard_name('".pg_escape_string($sLabel)."'), '$sTrans', '$sClass', '$sType', 'near');\n";
-                        break;
-                    case 'in':
-                        echo "select getorcreate_amenityoperator(make_standard_name('".pg_escape_string($sLabel)."'), '$sTrans', '$sClass', '$sType', 'in');\n";
-                        break;
-                    default:
-                        echo "select getorcreate_amenity(make_standard_name('".pg_escape_string($sLabel)."'), '$sTrans', '$sClass', '$sType');\n";
-                        break;
-                }
+
+        if (!preg_match_all(
+            '#\\| ([^|]+) \\|\\| ([^|]+) \\|\\| ([^|]+) \\|\\| ([^|]+) \\|\\| ([\\-YN])#',
+            $sWikiPageXML,
+            $aMatches,
+            PREG_SET_ORDER
+        )) {
+            continue;
+        }
+
+        foreach ($aMatches as $aMatch) {
+            $sLabel = trim($aMatch[1]);
+            if ($oNormalizer !== null) {
+                $sTrans = pg_escape_string($oNormalizer->transliterate($sLabel));
+            } else {
+                $sTrans = null;
+            }
+            $sClass = trim($aMatch[2]);
+            $sType = trim($aMatch[3]);
+            // hack around a bug where building=yes was imported with
+            // quotes into the wiki
+            $sType = preg_replace('/(&quot;|")/', '', $sType);
+            // sanity check, in case somebody added garbage in the wiki
+            if (preg_match('/^\\w+$/', $sClass) < 1
+                || preg_match('/^\\w+$/', $sType) < 1
+            ) {
+                trigger_error("Bad class/type for language $sLanguage: $sClass=$sType");
+                exit;
+            }
+            // blacklisting: disallow certain class/type combinations
+            if (isset($aTagsBlacklist[$sClass]) && in_array($sType, $aTagsBlacklist[$sClass])) {
+                // fwrite(STDERR, "Blacklisted: ".$sClass."/".$sType."\n");
+                continue;
+            }
+            // whitelisting: if class is in whitelist, allow only tags in the list
+            if (isset($aTagsWhitelist[$sClass]) && !in_array($sType, $aTagsWhitelist[$sClass])) {
+                // fwrite(STDERR, "Non-Whitelisted: ".$sClass."/".$sType."\n");
+                continue;
+            }
+            $aPairs[$sClass.'|'.$sType] = array($sClass, $sType);
+
+            switch (trim($aMatch[4])) {
+                case 'near':
+                    printf(
+                        "SELECT getorcreate_amenityoperator(make_standard_name('%s'), '%s', '%s', '%s', 'near');\n",
+                        pg_escape_string($sLabel),
+                        $sTrans,
+                        $sClass,
+                        $sType
+                    );
+                    break;
+                case 'in':
+                    printf(
+                        "SELECT getorcreate_amenityoperator(make_standard_name('%s'), '%s', '%s', '%s', 'in');\n",
+                        pg_escape_string($sLabel),
+                        $sTrans,
+                        $sClass,
+                        $sType
+                    );
+                    break;
+                default:
+                    printf(
+                        "SELECT getorcreate_amenity(make_standard_name('%s'), '%s', '%s', '%s');\n",
+                        pg_escape_string($sLabel),
+                        $sTrans,
+                        $sClass,
+                        $sType
+                    );
+                    break;
             }
         }
     }
 
-    echo 'create index idx_placex_classtype on placex (class, type);';
+    echo 'CREATE INDEX idx_placex_classtype ON placex (class, type);';
 
     foreach ($aPairs as $aPair) {
-        echo 'create table place_classtype_'.pg_escape_string($aPair[0]).'_'.pg_escape_string($aPair[1]);
-        if (CONST_Tablespace_Aux_Data)
-            echo ' tablespace '.CONST_Tablespace_Aux_Data;
-        echo ' as select place_id as place_id,st_centroid(geometry) as centroid from placex where ';
-        echo "class = '".pg_escape_string($aPair[0])."' and type = '".pg_escape_string($aPair[1])."'";
-        echo ";\n";
-
-        echo 'CREATE INDEX idx_place_classtype_'.pg_escape_string($aPair[0]).'_'.pg_escape_string($aPair[1]).'_centroid ';
-        echo 'ON place_classtype_'.pg_escape_string($aPair[0]).'_'.pg_escape_string($aPair[1]).' USING GIST (centroid)';
-        if (CONST_Tablespace_Aux_Index)
-            echo ' tablespace '.CONST_Tablespace_Aux_Index;
-        echo ";\n";
-
-        echo 'CREATE INDEX idx_place_classtype_'.pg_escape_string($aPair[0]).'_'.pg_escape_string($aPair[1]).'_place_id ';
-        echo 'ON place_classtype_'.pg_escape_string($aPair[0]).'_'.pg_escape_string($aPair[1]).' USING btree(place_id)';
-        if (CONST_Tablespace_Aux_Index)
-            echo ' tablespace '.CONST_Tablespace_Aux_Index;
-        echo ";\n";
-
-        echo 'GRANT SELECT ON place_classtype_'.pg_escape_string($aPair[0]).'_'.pg_escape_string($aPair[1]).' TO "'.CONST_Database_Web_User."\";\n";
+        $sql_tablespace = CONST_Tablespace_Aux_Data ? ' TABLESPACE '.CONST_Tablespace_Aux_Data : '';
+
+        printf(
+            'CREATE TABLE place_classtype_%s_%s'
+            . $sql_tablespace
+            . ' AS'
+            . ' SELECT place_id AS place_id,st_centroid(geometry) AS centroid FROM placex'
+            . " WHERE class = '%s' AND type = '%s'"
+            . ";\n",
+            pg_escape_string($aPair[0]),
+            pg_escape_string($aPair[1]),
+            pg_escape_string($aPair[0]),
+            pg_escape_string($aPair[1])
+        );
+
+        printf(
+            'CREATE INDEX idx_place_classtype_%s_%s_centroid'
+            . ' ON place_classtype_%s_%s USING GIST (centroid)'
+            . $sql_tablespace
+            . ";\n",
+            pg_escape_string($aPair[0]),
+            pg_escape_string($aPair[1]),
+            pg_escape_string($aPair[0]),
+            pg_escape_string($aPair[1])
+        );
+
+        printf(
+            'CREATE INDEX idx_place_classtype_%s_%s_place_id'
+            . ' ON place_classtype_%s_%s USING btree(place_id)'
+            . $sql_tablespace
+            . ";\n",
+            pg_escape_string($aPair[0]),
+            pg_escape_string($aPair[1]),
+            pg_escape_string($aPair[0]),
+            pg_escape_string($aPair[1])
+        );
+
+        printf(
+            'GRANT SELECT ON place_classtype_%s_%s TO "%s"'
+            . ";\n",
+            pg_escape_string($aPair[0]),
+            pg_escape_string($aPair[1]),
+            CONST_Database_Web_User
+        );
     }
 
-    echo 'drop index idx_placex_classtype;';
+    echo 'DROP INDEX idx_placex_classtype;';
 }
old mode 100755 (executable)
new mode 100644 (file)
index 414fadb..d03cbed
@@ -1,12 +1,15 @@
-#!@PHP_BIN@ -Cq
 <?php
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-cmd.php');
+require_once(CONST_BasePath.'/lib/setup_functions.php');
+require_once(CONST_BasePath.'/lib/setup/SetupClass.php');
+require_once(CONST_BasePath.'/lib/setup/AddressLevelParser.php');
+
 ini_set('memory_limit', '800M');
 
-# (long-opt, short-opt, min-occurs, max-occurs, num-arguments, num-arguments, type, help)
+use Nominatim\Setup\SetupFunctions as SetupFunctions;
 
+// (long-opt, short-opt, min-occurs, max-occurs, num-arguments, num-arguments, type, help)
 $aCMDOptions
 = array(
    'Import / update / index osm data',
@@ -38,8 +41,11 @@ $aCMDOptions
 
    array('deduplicate', '', 0, 1, 0, 0, 'bool', 'Deduplicate tokens'),
    array('recompute-word-counts', '', 0, 1, 0, 0, 'bool', 'Compute frequency of full-word search terms'),
+   array('update-address-levels', '', 0, 1, 0, 0, 'bool', 'Reimport address level configuration (EXPERT)'),
+   array('recompute-importance', '', 0, 1, 0, 0, 'bool', 'Recompute place importances'),
    array('no-npi', '', 0, 1, 0, 0, 'bool', '(obsolete)'),
   );
+
 getCmdOpt($_SERVER['argv'], $aCMDOptions, $aResult, true, true);
 
 if (!isset($aResult['index-instances'])) $aResult['index-instances'] = 1;
@@ -47,9 +53,10 @@ if (!isset($aResult['index-rank'])) $aResult['index-rank'] = 0;
 
 date_default_timezone_set('Etc/UTC');
 
-$oDB =& getDB();
+$oDB = new Nominatim\DB();
+$oDB->connect();
 
-$aDSNInfo = DB::parseDSN(CONST_Database_DSN);
+$aDSNInfo = Nominatim\DB::parseDSN(CONST_Database_DSN);
 if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432;
 
 // cache memory to be used by osm2pgsql, should not be more than the available memory
@@ -58,21 +65,51 @@ if ($iCacheMemory + 500 > getTotalMemoryMB()) {
     $iCacheMemory = getCacheMemoryMB();
     echo "WARNING: resetting cache memory to $iCacheMemory\n";
 }
-$sOsm2pgsqlCmd = CONST_Osm2pgsql_Binary.' -klas --number-processes 1 -C '.$iCacheMemory.' -O gazetteer -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'];
+
+$oOsm2pgsqlCmd = (new \Nominatim\Shell(CONST_Osm2pgsql_Binary))
+                 ->addParams('--hstore')
+                 ->addParams('--latlong')
+                 ->addParams('--append')
+                 ->addParams('--slim')
+                 ->addParams('--number-processes', 1)
+                 ->addParams('--cache', $iCacheMemory)
+                 ->addParams('--output', 'gazetteer')
+                 ->addParams('--style', CONST_Import_Style)
+                 ->addParams('--database', $aDSNInfo['database'])
+                 ->addParams('--port', $aDSNInfo['port']);
+
+if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
+    $oOsm2pgsqlCmd->addParams('--host', $aDSNInfo['hostspec']);
+}
 if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
-    $sOsm2pgsqlCmd .= ' -U ' . $aDSNInfo['username'];
+    $oOsm2pgsqlCmd->addParams('--user', $aDSNInfo['username']);
+}
+if (isset($aDSNInfo['password']) && $aDSNInfo['password']) {
+    $oOsm2pgsqlCmd->addEnvPair('PGPASSWORD', $aDSNInfo['password']);
+}
+if (!is_null(CONST_Osm2pgsql_Flatnode_File) && CONST_Osm2pgsql_Flatnode_File) {
+    $oOsm2pgsqlCmd->addParams('--flat-nodes', CONST_Osm2pgsql_Flatnode_File);
+}
+
+
+$oIndexCmd = (new \Nominatim\Shell(CONST_BasePath.'/nominatim/nominatim.py'))
+             ->addParams('--database', $aDSNInfo['database'])
+             ->addParams('--port', $aDSNInfo['port'])
+             ->addParams('--threads', $aResult['index-instances']);
+
+if ($aResult['verbose']) {
+    $oIndexCmd->addParams('--verbose');
 }
 if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
-    $sOsm2pgsqlCmd .= ' -H ' . $aDSNInfo['hostspec'];
+    $oIndexCmd->addParams('--host', $aDSNInfo['hostspec']);
+}
+if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
+    $oIndexCmd->addParams('--username', $aDSNInfo['username']);
 }
-$aProcEnv = null;
 if (isset($aDSNInfo['password']) && $aDSNInfo['password']) {
-    $aProcEnv = array_merge(array('PGPASSWORD' => $aDSNInfo['password']), $_ENV);
+    $oIndexCmd->addEnvPair('PGPASSWORD', $aDSNInfo['password']);
 }
 
-if (!is_null(CONST_Osm2pgsql_Flatnode_File) && CONST_Osm2pgsql_Flatnode_File) {
-    $sOsm2pgsqlCmd .= ' --flat-nodes '.CONST_Osm2pgsql_Flatnode_File;
-}
 
 if ($aResult['init-updates']) {
     // sanity check that the replication URL is correct
@@ -89,42 +126,52 @@ if ($aResult['init-updates']) {
         echo "in your local settings file.\n\n";
         fail('CONST_Pyosmium_Binary not configured');
     }
+
     $aOutput = 0;
-    $sCmd = CONST_Pyosmium_Binary.' --help';
-    exec($sCmd, $aOutput, $iRet);
+    $oCMD = new \Nominatim\Shell(CONST_Pyosmium_Binary, '--help');
+    exec($oCMD->escapedCmd(), $aOutput, $iRet);
+
     if ($iRet != 0) {
         echo "Cannot execute pyosmium-get-changes.\n";
         echo "Make sure you have pyosmium installed correctly\n";
         echo "and have set up CONST_Pyosmium_Binary to point to pyosmium-get-changes.\n";
         fail('pyosmium-get-changes not found or not usable');
     }
+
     if (!$aResult['no-update-functions']) {
-        $sSetup ='@PHP_BIN@ '. CONST_InstallPath.'/utils/setup.php';
-        $iRet = -1;
-        passthru($sSetup.' --create-functions --enable-diff-updates', $iRet);
-        if ($iRet != 0) {
-            fail('Error running setup script');
-        }
+        // instantiate setupClass to use the function therein
+        $cSetup = new SetupFunctions(array(
+                                      'enable-diff-updates' => true,
+                                      'verbose' => $aResult['verbose']
+                                     ));
+        $cSetup->connect();
+        $cSetup->createFunctions();
     }
 
     $sDatabaseDate = getDatabaseDate($oDB);
-    if ($sDatabaseDate === false) {
+    if (!$sDatabaseDate) {
         fail('Cannot determine date of database.');
     }
     $sWindBack = strftime('%Y-%m-%dT%H:%M:%SZ', strtotime($sDatabaseDate) - (3*60*60));
 
     // get the appropriate state id
     $aOutput = 0;
-    $sCmd = CONST_Pyosmium_Binary.' -D '.$sWindBack.' --server '.CONST_Replication_Url;
-    exec($sCmd, $aOutput, $iRet);
+    $oCMD = (new \Nominatim\Shell(CONST_Pyosmium_Binary))
+            ->addParams('--start-date', $sWindBack)
+            ->addParams('--server', CONST_Replication_Url);
+
+    exec($oCMD->escapedCmd(), $aOutput, $iRet);
     if ($iRet != 0 || $aOutput[0] == 'None') {
         fail('Error running pyosmium tools');
     }
 
-    pg_query($oDB->connection, 'TRUNCATE import_status');
+    $oDB->exec('TRUNCATE import_status');
     $sSQL = "INSERT INTO import_status (lastimportdate, sequence_id, indexed) VALUES('";
     $sSQL .= $sDatabaseDate."',".$aOutput[0].', true)';
-    if (!pg_query($oDB->connection, $sSQL)) {
+
+    try {
+        $oDB->exec($sSQL);
+    } catch (\Nominatim\DatabaseError $e) {
         fail('Could not enter sequence into database.');
     }
 
@@ -132,13 +179,17 @@ if ($aResult['init-updates']) {
 }
 
 if ($aResult['check-for-updates']) {
-    $aLastState = chksql($oDB->getRow('SELECT sequence_id FROM import_status'));
+    $aLastState = $oDB->getRow('SELECT sequence_id FROM import_status');
 
     if (!$aLastState['sequence_id']) {
         fail('Updates not set up. Please run ./utils/update.php --init-updates.');
     }
 
-    system(CONST_BasePath.'/utils/check_server_for_updates.py '.CONST_Replication_Url.' '.$aLastState['sequence_id'], $iRet);
+    $oCmd = (new \Nominatim\Shell(CONST_BasePath.'/utils/check_server_for_updates.py'))
+            ->addParams(CONST_Replication_Url)
+            ->addParams($aLastState['sequence_id']);
+    $iRet = $oCmd->run();
+
     exit($iRet);
 }
 
@@ -151,12 +202,12 @@ if (isset($aResult['import-diff']) || isset($aResult['import-file'])) {
     }
 
     // Import the file
-    $sCMD = $sOsm2pgsqlCmd.' '.$sNextFile;
-    echo $sCMD."\n";
-    $iErrorLevel = runWithEnv($sCMD, $aProcEnv);
+    $oCMD = (clone $oOsm2pgsqlCmd)->addParams($sNextFile);
+    echo $oCMD->escapedCmd()."\n";
+    $iRet = $oCMD->run();
 
-    if ($iErrorLevel) {
-        fail("Error from osm2pgsql, $iErrorLevel\n");
+    if ($iRet) {
+        fail("Error from osm2pgsql, $iRet\n");
     }
 
     // Don't update the import status - we don't know what this file contains
@@ -203,29 +254,32 @@ if ($sContentURL) {
 
 if ($bHaveDiff) {
     // import generated change file
-    $sCMD = $sOsm2pgsqlCmd.' '.$sTemporaryFile;
-    echo $sCMD."\n";
-    $iErrorLevel = runWithEnv($sCMD, $aProcEnv);
-    if ($iErrorLevel) {
-        fail("osm2pgsql exited with error level $iErrorLevel\n");
+
+    $oCMD = (clone $oOsm2pgsqlCmd)->addParams($sTemporaryFile);
+    echo $oCMD->escapedCmd()."\n";
+
+    $iRet = $oCMD->run();
+    if ($iRet) {
+        fail("osm2pgsql exited with error level $iRet\n");
     }
 }
 
 if ($aResult['deduplicate']) {
-    $oDB =& getDB();
+    $oDB = new Nominatim\DB();
+    $oDB->connect();
 
-    if (getPostgresVersion($oDB) < 9.3) {
+    if ($oDB->getPostgresVersion() < 9.3) {
         fail('ERROR: deduplicate is only currently supported in postgresql 9.3');
     }
 
     $sSQL = 'select partition from country_name order by country_code';
-    $aPartitions = chksql($oDB->getCol($sSQL));
+    $aPartitions = $oDB->getCol($sSQL);
     $aPartitions[] = 0;
 
     // we don't care about empty search_name_* partitions, they can't contain mentions of duplicates
     foreach ($aPartitions as $i => $sPartition) {
         $sSQL = 'select count(*) from search_name_'.$sPartition;
-        $nEntries = chksql($oDB->getOne($sSQL));
+        $nEntries = $oDB->getOne($sSQL);
         if ($nEntries == 0) {
             unset($aPartitions[$i]);
         }
@@ -234,7 +288,7 @@ if ($aResult['deduplicate']) {
     $sSQL = "select word_token,count(*) from word where substr(word_token, 1, 1) = ' '";
     $sSQL .= ' and class is null and type is null and country_code is null';
     $sSQL .= ' group by word_token having count(*) > 1 order by word_token';
-    $aDuplicateTokens = chksql($oDB->getAll($sSQL));
+    $aDuplicateTokens = $oDB->getAll($sSQL);
     foreach ($aDuplicateTokens as $aToken) {
         if (trim($aToken['word_token']) == '' || trim($aToken['word_token']) == '-') continue;
         echo 'Deduping '.$aToken['word_token']."\n";
@@ -242,7 +296,7 @@ if ($aResult['deduplicate']) {
         $sSQL .= ' (select count(*) from search_name where nameaddress_vector @> ARRAY[word_id]) as num';
         $sSQL .= " from word where word_token = '".$aToken['word_token'];
         $sSQL .= "' and class is null and type is null and country_code is null order by num desc";
-        $aTokenSet = chksql($oDB->getAll($sSQL));
+        $aTokenSet = $oDB->getAll($sSQL);
 
         $aKeep = array_shift($aTokenSet);
         $iKeepID = $aKeep['word_id'];
@@ -252,32 +306,32 @@ if ($aResult['deduplicate']) {
             $sSQL .= ' name_vector = array_replace(name_vector,'.$aRemove['word_id'].','.$iKeepID.'),';
             $sSQL .= ' nameaddress_vector = array_replace(nameaddress_vector,'.$aRemove['word_id'].','.$iKeepID.')';
             $sSQL .= ' where name_vector @> ARRAY['.$aRemove['word_id'].']';
-            chksql($oDB->query($sSQL));
+            $oDB->exec($sSQL);
 
             $sSQL = 'update search_name set';
             $sSQL .= ' nameaddress_vector = array_replace(nameaddress_vector,'.$aRemove['word_id'].','.$iKeepID.')';
             $sSQL .= ' where nameaddress_vector @> ARRAY['.$aRemove['word_id'].']';
-            chksql($oDB->query($sSQL));
+            $oDB->exec($sSQL);
 
             $sSQL = 'update location_area_country set';
             $sSQL .= ' keywords = array_replace(keywords,'.$aRemove['word_id'].','.$iKeepID.')';
             $sSQL .= ' where keywords @> ARRAY['.$aRemove['word_id'].']';
-            chksql($oDB->query($sSQL));
+            $oDB->exec($sSQL);
 
             foreach ($aPartitions as $sPartition) {
                 $sSQL = 'update search_name_'.$sPartition.' set';
                 $sSQL .= ' name_vector = array_replace(name_vector,'.$aRemove['word_id'].','.$iKeepID.')';
                 $sSQL .= ' where name_vector @> ARRAY['.$aRemove['word_id'].']';
-                chksql($oDB->query($sSQL));
+                $oDB->exec($sSQL);
 
                 $sSQL = 'update location_area_country set';
                 $sSQL .= ' keywords = array_replace(keywords,'.$aRemove['word_id'].','.$iKeepID.')';
                 $sSQL .= ' where keywords @> ARRAY['.$aRemove['word_id'].']';
-                chksql($oDB->query($sSQL));
+                $oDB->exec($sSQL);
             }
 
             $sSQL = 'delete from word where word_id = '.$aRemove['word_id'];
-            chksql($oDB->query($sSQL));
+            $oDB->exec($sSQL);
         }
     }
 }
@@ -289,38 +343,57 @@ if ($aResult['recompute-word-counts']) {
 }
 
 if ($aResult['index']) {
-    $sCmd = CONST_InstallPath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'].' -t '.$aResult['index-instances'].' -r '.$aResult['index-rank'];
-    if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
-        $sCmd .= ' -H ' . $aDSNInfo['hostspec'];
-    }
-    if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
-        $sCmd .= ' -U ' . $aDSNInfo['username'];
-    }
+    $oCmd = (clone $oIndexCmd)
+            ->addParams('--minrank', $aResult['index-rank']);
+
+    // echo $oCmd->escapedCmd()."\n";
+    $oCmd->run();
 
-    runWithEnv($sCmd, $aProcEnv);
+    $oDB->exec('update import_status set indexed = true');
+}
+
+if ($aResult['update-address-levels']) {
+    echo 'Updating address levels from '.CONST_Address_Level_Config.".\n";
+    $oAlParser = new \Nominatim\Setup\AddressLevelParser(CONST_Address_Level_Config);
+    $oAlParser->createTable($oDB, 'address_levels');
+}
+
+if ($aResult['recompute-importance']) {
+    echo "Updating importance values for database.\n";
+    $oDB = new Nominatim\DB();
+    $oDB->connect();
+
+    $sSQL = 'ALTER TABLE placex DISABLE TRIGGER ALL;';
+    $sSQL .= 'UPDATE placex SET (wikipedia, importance) =';
+    $sSQL .= '   (SELECT wikipedia, importance';
+    $sSQL .= '    FROM compute_importance(extratags, country_code, osm_type, osm_id));';
+    $sSQL .= 'UPDATE placex s SET wikipedia = d.wikipedia, importance = d.importance';
+    $sSQL .= ' FROM placex d';
+    $sSQL .= ' WHERE s.place_id = d.linked_place_id and d.wikipedia is not null';
+    $sSQL .= '       and (s.wikipedia is null or s.importance < d.importance);';
+    $sSQL .= 'ALTER TABLE placex ENABLE TRIGGER ALL;';
+    $oDB->exec($sSQL);
 }
 
 if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) {
     //
     if (strpos(CONST_Replication_Url, 'download.geofabrik.de') !== false && CONST_Replication_Update_Interval < 86400) {
         fail('Error: Update interval too low for download.geofabrik.de. ' .
-             "Please check install documentation (http://nominatim.org/release-docs/latest/Import-and-Update#setting-up-the-update-process)\n");
+             "Please check install documentation (https://nominatim.org/release-docs/latest/admin/Import-and-Update#setting-up-the-update-process)\n");
     }
 
     $sImportFile = CONST_InstallPath.'/osmosischange.osc';
-    $sCMDDownload = CONST_Pyosmium_Binary.' --server '.CONST_Replication_Url.' -o '.$sImportFile.' -s '.CONST_Replication_Max_Diff_size;
-    $sCMDImport = $sOsm2pgsqlCmd.' '.$sImportFile;
-    $sCMDIndex = CONST_InstallPath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'].' -t '.$aResult['index-instances'];
-    if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
-        $sCMDIndex .= ' -H ' . $aDSNInfo['hostspec'];
-    }
-    if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
-        $sCMDIndex .= ' -U ' . $aDSNInfo['username'];
-    }
+
+    $oCMDDownload = (new \Nominatim\Shell(CONST_Pyosmium_Binary))
+                    ->addParams('--server', CONST_Replication_Url)
+                    ->addParams('--outfile', $sImportFile)
+                    ->addParams('--size', CONST_Replication_Max_Diff_size);
+
+    $oCMDImport = (clone $oOsm2pgsqlCmd)->addParams($sImportFile);
 
     while (true) {
         $fStartTime = time();
-        $aLastState = chksql($oDB->getRow('SELECT *, EXTRACT (EPOCH FROM lastimportdate) as unix_ts FROM import_status'));
+        $aLastState = $oDB->getRow('SELECT *, EXTRACT (EPOCH FROM lastimportdate) as unix_ts FROM import_status');
 
         if (!$aLastState['sequence_id']) {
             echo "Updates not set up. Please run ./utils/update.php --init-updates.\n";
@@ -332,7 +405,7 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) {
         $sBatchEnd = $aLastState['lastimportdate'];
         $iEndSequence = $aLastState['sequence_id'];
 
-        if ($aLastState['indexed'] == 't') {
+        if ($aLastState['indexed']) {
             // Sleep if the update interval has not yet been reached.
             $fNextUpdate = $aLastState['unix_ts'] + CONST_Replication_Update_Interval;
             if ($fNextUpdate > $fStartTime) {
@@ -346,11 +419,13 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) {
                 $fCMDStartTime = time();
                 $iNextSeq = (int) $aLastState['sequence_id'];
                 unset($aOutput);
-                echo "$sCMDDownload -I $iNextSeq\n";
+
+                $oCMD = (clone $oCMDDownload)->addParams('--start-id', $iNextSeq);
+                echo $oCMD->escapedCmd()."\n";
                 if (file_exists($sImportFile)) {
                     unlink($sImportFile);
                 }
-                exec($sCMDDownload.' -I '.$iNextSeq, $aOutput, $iResult);
+                exec($oCMD->escapedCmd(), $aOutput, $iResult);
 
                 if ($iResult == 3) {
                     echo 'No new updates. Sleeping for '.CONST_Replication_Recheck_Interval." sec.\n";
@@ -366,7 +441,8 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) {
             // get the newest object from the diff file
             $sBatchEnd = 0;
             $iRet = 0;
-            exec(CONST_BasePath.'/utils/osm_file_date.py '.$sImportFile, $sBatchEnd, $iRet);
+            $oCMD = new \Nominatim\Shell(CONST_BasePath.'/utils/osm_file_date.py', $sImportFile);
+            exec($oCMD->escapedCmd(), $sBatchEnd, $iRet);
             if ($iRet == 5) {
                 echo "Diff file is empty. skipping import.\n";
                 if (!$aResult['import-osmosis-all']) {
@@ -382,9 +458,11 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) {
 
             // Import the file
             $fCMDStartTime = time();
-            echo $sCMDImport."\n";
+
+
+            echo $oCMDImport->escapedCmd()."\n";
             unset($sJunk);
-            $iErrorLevel = runWithEnv($sCMDImport, $aProcEnv);
+            $iErrorLevel = $oCMDImport->run();
             if ($iErrorLevel) {
                 echo "Error executing osm2pgsql: $iErrorLevel\n";
                 exit($iErrorLevel);
@@ -398,22 +476,22 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) {
             $sSQL .= date('Y-m-d H:i:s', $fCMDStartTime)."','";
             $sSQL .= date('Y-m-d H:i:s')."','import')";
             var_Dump($sSQL);
-            chksql($oDB->query($sSQL));
+            $oDB->exec($sSQL);
 
             // update the status
             $sSQL = "UPDATE import_status SET lastimportdate = '$sBatchEnd', indexed=false, sequence_id = $iEndSequence";
             var_Dump($sSQL);
-            chksql($oDB->query($sSQL));
+            $oDB->exec($sSQL);
             echo date('Y-m-d H:i:s')." Completed download step for $sBatchEnd in ".round((time()-$fCMDStartTime)/60, 2)." minutes\n";
         }
 
         // Index file
         if (!$aResult['no-index']) {
-            $sThisIndexCmd = $sCMDIndex;
+            $oThisIndexCmd = clone($oIndexCmd);
             $fCMDStartTime = time();
 
-            echo "$sThisIndexCmd\n";
-            $iErrorLevel = runWithEnv($sThisIndexCmd, $aProcEnv);
+            echo $oThisIndexCmd->escapedCmd()."\n";
+            $iErrorLevel = $oThisIndexCmd->run();
             if ($iErrorLevel) {
                 echo "Error: $iErrorLevel\n";
                 exit($iErrorLevel);
@@ -421,15 +499,20 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) {
 
             $sSQL = 'INSERT INTO import_osmosis_log';
             $sSQL .= '(batchend, batchseq, batchsize, starttime, endtime, event)';
-            $sSQL .= " values ('$sBatchEnd',$iEndSequence,$iFileSize,'";
+            $sSQL .= " values ('$sBatchEnd',$iEndSequence,NULL,'";
             $sSQL .= date('Y-m-d H:i:s', $fCMDStartTime)."','";
             $sSQL .= date('Y-m-d H:i:s')."','index')";
             var_Dump($sSQL);
-            $oDB->query($sSQL);
+            $oDB->exec($sSQL);
             echo date('Y-m-d H:i:s')." Completed index step for $sBatchEnd in ".round((time()-$fCMDStartTime)/60, 2)." minutes\n";
 
             $sSQL = 'update import_status set indexed = true';
-            $oDB->query($sSQL);
+            $oDB->exec($sSQL);
+        } else {
+            if ($aResult['import-osmosis-all']) {
+                echo "Error: --no-index cannot be used with continuous imports (--import-osmosis-all).\n";
+                exit(1);
+            }
         }
 
         $fDuration = time() - $fStartTime;
diff --git a/utils/update_database.sh b/utils/update_database.sh
new file mode 100644 (file)
index 0000000..75d0de5
--- /dev/null
@@ -0,0 +1,80 @@
+#!/bin/bash -xv
+
+# Derived from https://gist.github.com/RhinoDevel/8a35ebd2a08166f328eca01ab005c6de and edited to work with Pyosmium
+# Related to https://github.com/osm-search/Nominatim/issues/1683
+
+# Steps being followed:
+
+#     *) Get the diff file from server
+#         1) pyosmium-get-changes (with -f sequence.state for getting sequenceNumber)
+
+#     *) Import diff
+#         1) utils/update.php --import-diff
+
+#     *) Index for all the countries at the end
+
+# Hint:
+#
+# Use "bashdb ./update_database.sh" and bashdb's "next" command for step-by-step
+# execution.
+
+# ******************************************************************************
+
+# REPLACE WITH LIST OF YOUR "COUNTRIES":
+#
+
+
+COUNTRIES="europe/monaco europe/andorra"
+
+# SET TO YOUR NOMINATIM build FOLDER PATH:
+#
+NOMINATIMBUILD="/srv/nominatim/build"
+UPDATEFILE="$NOMINATIMBUILD/utils/update.php"
+
+# SET TO YOUR update data FOLDER PATH:
+#
+UPDATEDIR="/srv/nominatim/update"
+
+UPDATEBASEURL="https://download.geofabrik.de"
+UPDATECOUNTRYPOSTFIX="-updates"
+
+# If you do not use Photon, let Nominatim handle (re-)indexing:
+#
+FOLLOWUP="$UPDATEFILE --index"
+#
+# If you use Photon, update Photon and let it handle the index
+# (Photon server must be running and must have been started with "-database",
+# "-user" and "-password" parameters):
+#
+#FOLLOWUP="curl http://localhost:2322/nominatim-update"
+
+# ******************************************************************************
+
+
+for COUNTRY in $COUNTRIES;
+do
+    
+    echo "===================================================================="
+    echo "$COUNTRY"
+    echo "===================================================================="
+    DIR="$UPDATEDIR/$COUNTRY"
+    FILE="$DIR/sequence.state"
+    BASEURL="$UPDATEBASEURL/$COUNTRY$UPDATECOUNTRYPOSTFIX"
+    FILENAME=${COUNTRY//[\/]/_}
+    
+    # mkdir -p ${DIR}
+    cd ${DIR}
+
+    echo "Attempting to get changes"
+    pyosmium-get-changes -o ${DIR}/${FILENAME}.osc.gz -f ${FILE} --server $BASEURL -v
+
+    echo "Attempting to import diffs"
+    ${NOMINATIMBUILD}/utils/update.php --import-diff ${DIR}/${FILENAME}.osc.gz
+    rm ${DIR}/${FILENAME}.osc.gz
+
+done
+
+echo "===================================================================="
+echo "Reindexing" 
+${FOLLOWUP}
+echo "===================================================================="
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 653bcf1..5476eae
@@ -1,7 +1,5 @@
-#!@PHP_BIN@ -Cq
 <?php
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-cmd.php');
 ini_set('memory_limit', '800M');
 
@@ -20,10 +18,24 @@ require_once(CONST_BasePath.'/lib/Geocode.php');
 require_once(CONST_BasePath.'/lib/PlaceLookup.php');
 require_once(CONST_BasePath.'/lib/ReverseGeocode.php');
 
-$oDB =& getDB();
+$oDB = new Nominatim\DB();
+$oDB->connect();
 
 $bVerbose = $aResult['verbose'];
 
+function print_results($aResults, $bVerbose)
+{
+    if ($bVerbose) {
+        if ($aResults && count($aResults)) {
+            echo $aResults[0]['langaddress']."\n";
+        } else {
+            echo "<not found>\n";
+        }
+    } else {
+        echo '.';
+    }
+}
+
 if (!$aResult['search-only']) {
     $oReverseGeocode = new Nominatim\ReverseGeocode($oDB);
     $oReverseGeocode->setZoom(20);
@@ -37,17 +49,10 @@ if (!$aResult['search-only']) {
         $fLat = rand(-9000, 9000) / 100;
         $fLon = rand(-18000, 18000) / 100;
         if ($bVerbose) echo "$fLat, $fLon = ";
-        $aLookup = $oReverseGeocode->lookup($fLat, $fLon);
-        if ($aLookup && $aLookup['place_id']) {
-            $aDetails = $oPlaceLookup->lookup(
-                (int)$aLookup['place_id'],
-                $aLookup['type'],
-                $aLookup['fraction']
-            );
-            if ($bVerbose) echo $aDetails['langaddress']."\n";
-        } else {
-            echo '.';
-        }
+
+        $oLookup = $oReverseGeocode->lookup($fLat, $fLon);
+        $aSearchResults = $oLookup ? $oPlaceLookup->lookup(array($oLookup->iId => $oLookup)) : null;
+        print_results($aSearchResults, $bVerbose);
     }
     echo "\n";
 }
@@ -57,13 +62,14 @@ if (!$aResult['reverse-only']) {
 
     echo 'Warm search: ';
     if ($bVerbose) echo "\n";
-    $sSQL = 'select word from word where word is not null order by search_name_count desc limit 1000';
+    $sSQL = 'SELECT word FROM word WHERE word is not null ORDER BY search_name_count DESC LIMIT 1000';
     foreach ($oDB->getCol($sSQL) as $sWord) {
         if ($bVerbose) echo "$sWord = ";
+
         $oGeocode->setLanguagePreference(array('en'));
         $oGeocode->setQuery($sWord);
         $aSearchResults = $oGeocode->lookup();
-        if ($bVerbose) echo $aSearchResults[0]['langaddress']."\n";
-        else echo '.';
+        print_results($aSearchResults, $bVerbose);
     }
+    echo "\n";
 }
index 50eeaaec96c0365cd4fdf70b90688d8e28c5ac7b..e2592f6591412f3cf9284a14564a87c667821b10 100755 (executable)
 
     sudo yum install -y epel-release
 
+# More repositories for postgresql 11 (CentOS default 'postgresql' is 9.2), postgis
+# and llvm-toolset (https://github.com/theory/pg-semver/issues/35)
+
+    sudo yum install -y https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
+    sudo yum install -y centos-release-scl-rh
+
+# More repositories for PHP 7 (default is PHP 5.4)
+
+    sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
+    sudo yum-config-manager --enable remi-php72
+    sudo yum update -y
+
 # Now you can install all packages needed for Nominatim:
 
 #DOCS:    :::sh
-    sudo yum install -y postgresql-server postgresql-contrib postgresql-devel \
-                        postgis postgis-utils \
+
+    sudo yum install -y postgresql11-server postgresql11-contrib postgresql11-devel \
+                        postgis25_11 postgis25_11-utils \
                         wget git cmake make gcc gcc-c++ libtool policycoreutils-python \
-                        php-pgsql php php-pear php-pear-DB php-intl libpqxx-devel \
-                        proj-epsg bzip2-devel proj-devel libxml2-devel boost-devel \
+                        devtoolset-7 llvm-toolset-7 \
+                        php-pgsql php php-intl libpqxx-devel \
+                        proj-epsg bzip2-devel proj-devel boost-devel \
+                        python3-pip python3-setuptools python3-devel \
                         expat-devel zlib-devel
 
+    # make sure pg_config gets found
+    echo 'PATH=/usr/pgsql-11/bin/:$PATH' >> ~/.bash_profile
+    source ~/.bash_profile
+
+    pip3 install --user psycopg2 pytidylib
+
 # If you want to run the test suite, you need to install the following
 # additional packages:
 
 #DOCS:    :::sh
-    sudo yum install -y python34-pip python34-setuptools python34-devel \
-                        php-phpunit-PHPUnit
-    pip3 install --user behave nose pytidylib psycopg2
-    sudo pear install PHP_CodeSniffer
+    sudo yum install -y php-dom php-mbstring
+    pip3 install --user behave nose
+
+    composer global require "squizlabs/php_codesniffer=*"
+    sudo ln -s ~/.config/composer/vendor/bin/phpcs /usr/bin/
+
+    composer global require "phpunit/phpunit=7.*"
+    sudo ln -s ~/.config/composer/vendor/bin/phpunit /usr/bin/
 
 #
 # System Configuration
@@ -75,8 +100,8 @@ sudo chown vagrant /srv/nominatim  #DOCS:
 # CentOS does not automatically create a database cluster. Therefore, start
 # with initializing the database, then enable the server to start at boot:
 
-    sudo postgresql-setup initdb
-    sudo systemctl enable postgresql
+    sudo /usr/pgsql-11/bin/postgresql-11-setup initdb
+    sudo systemctl enable postgresql-11
 
 #
 # Next tune the postgresql configuration, which is located in 
@@ -86,7 +111,7 @@ sudo chown vagrant /srv/nominatim  #DOCS:
 #
 # Now start the postgresql service after updating this config file.
 
-    sudo systemctl restart postgresql
+    sudo systemctl restart postgresql-11
 
 #
 # Finally, we need to add two postgres users: one for the user that does
@@ -148,7 +173,7 @@ fi                                 #DOCS:
 # download the country grid:
 
 if [ ! -f data/country_osm_grid.sql.gz ]; then       #DOCS:    :::sh
-    wget -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
+    wget --no-verbose -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
 fi                                 #DOCS:
 
 # The code must be built in a separate directory. Create this directory,
diff --git a/vagrant/Install-on-Centos-8.sh b/vagrant/Install-on-Centos-8.sh
new file mode 100755 (executable)
index 0000000..fdfec24
--- /dev/null
@@ -0,0 +1,211 @@
+#!/bin/bash
+#
+# *Note:* these installation instructions are also available in executable
+#         form for use with vagrant under `vagrant/Install-on-Centos-8.sh`.
+#
+# Installing the Required Software
+# ================================
+#
+# These instructions expect that you have a freshly installed CentOS version 8.
+# Make sure all packages are up-to-date by running:
+#
+    sudo dnf update -y
+
+# The standard CentOS repositories don't contain all the required packages,
+# you need to enable the EPEL repository as well. For example for SELinux
+# related redhat-hardened-cc1 package. To enable it on CentOS run:
+
+    sudo dnf install -y epel-release redhat-rpm-config
+
+# EPEL contains Postgres 9.6 and 10, but not PostGIS. Postgres 9.4+/10/11/12
+# and PostGIS 2.4/2.5/3.0 are availble from postgresql.org
+
+    sudo dnf -qy module disable postgresql
+    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
+
+# Now you can install all packages needed for Nominatim:
+
+#DOCS:    :::sh
+    sudo dnf --enablerepo=PowerTools install -y postgresql10-server \
+                        postgresql10-contrib postgresql10-devel postgis25_10 \
+                        wget git cmake make gcc gcc-c++ libtool policycoreutils-python-utils \
+                        llvm-toolset ccache clang-tools-extra \
+                        php-pgsql php php-intl php-json libpq-devel \
+                        proj52-epsg bzip2-devel proj-devel boost-devel \
+                        python3-pip python3-setuptools python3-devel \
+                        expat-devel zlib-devel
+
+    # make sure pg_config gets found
+    echo 'PATH=/usr/pgsql-10/bin:$PATH' >> ~/.bash_profile
+    source ~/.bash_profile
+
+    pip3 install --user psycopg2 pytidylib
+
+# If you want to run the test suite, you need to install the following
+# additional packages:
+
+#DOCS:    :::sh
+    sudo dnf install -y php-dom php-mbstring
+    pip3 install --user behave nose
+
+    composer global require "squizlabs/php_codesniffer=*"
+    sudo ln -s ~/.config/composer/vendor/bin/phpcs /usr/bin/
+
+    composer global require "phpunit/phpunit=^7"
+    sudo ln -s ~/.config/composer/vendor/bin/phpunit /usr/bin/
+
+#
+# System Configuration
+# ====================
+#
+# The following steps are meant to configure a fresh CentOS installation
+# for use with Nominatim. You may skip some of the steps if you have your
+# OS already configured.
+#
+# Creating Dedicated User Accounts
+# --------------------------------
+#
+# Nominatim will run as a global service on your machine. It is therefore
+# best to install it under its own separate user account. In the following
+# we assume this user is called nominatim and the installation will be in
+# /srv/nominatim. To create the user and directory run:
+#
+sudo mkdir -p /srv/nominatim       #DOCS:    sudo useradd -d /srv/nominatim -s /bin/bash -m nominatim
+sudo chown vagrant /srv/nominatim  #DOCS:
+#
+# You may find a more suitable location if you wish.
+#
+# To be able to copy and paste instructions from this manual, export
+# user name and home directory now like this:
+#
+    export USERNAME=vagrant        #DOCS:    export USERNAME=nominatim
+    export USERHOME=/srv/nominatim
+#
+# **Never, ever run the installation as a root user.** You have been warned.
+#
+# Make sure that system servers can read from the home directory:
+
+    chmod a+x $USERHOME
+
+# Setting up PostgreSQL
+# ---------------------
+#
+# CentOS does not automatically create a database cluster. Therefore, start
+# with initializing the database, then enable the server to start at boot:
+
+
+    sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
+    sudo systemctl enable postgresql-10
+
+#
+# Next tune the postgresql configuration, which is located in 
+# `/var/lib/pgsql/data/postgresql.conf`. See section *Postgres Tuning* in
+# [the installation page](../admin/Installation.md#postgresql-tuning)
+# for the parameters to change.
+#
+# Now start the postgresql service after updating this config file.
+
+    sudo systemctl restart postgresql-10
+
+#
+# Finally, we need to add two postgres users: one for the user that does
+# the import and another for the webserver which should access the database
+# only for reading:
+#
+
+    sudo -u postgres createuser -s $USERNAME
+    sudo -u postgres createuser apache
+
+#
+# Setting up the Apache Webserver
+# -------------------------------
+#
+# You need to create an alias to the website directory in your apache
+# configuration. Add a separate nominatim configuration to your webserver:
+
+#DOCS:```sh
+sudo tee /etc/httpd/conf.d/nominatim.conf << EOFAPACHECONF
+<Directory "$USERHOME/build/website">
+  Options FollowSymLinks MultiViews
+  AddType text/html   .php
+  DirectoryIndex search.php
+  Require all granted
+</Directory>
+
+Alias /nominatim $USERHOME/build/website
+EOFAPACHECONF
+#DOCS:```
+
+sudo sed -i 's:#.*::' /etc/httpd/conf.d/nominatim.conf #DOCS:
+
+#
+# Then reload apache
+#
+
+    sudo systemctl enable httpd
+    sudo systemctl restart httpd
+
+
+#
+# Installing Nominatim
+# ====================
+#
+# Building and Configuration
+# --------------------------
+#
+# Get the source code from Github and change into the source directory
+#
+if [ "x$1" == "xyes" ]; then  #DOCS:    :::sh
+    cd $USERHOME
+    git clone --recursive git://github.com/openstreetmap/Nominatim.git
+    cd Nominatim
+else                               #DOCS:
+    cd $USERHOME/Nominatim         #DOCS:
+fi                                 #DOCS:
+
+# When installing the latest source from github, you also need to
+# download the country grid:
+
+if [ ! -f data/country_osm_grid.sql.gz ]; then       #DOCS:    :::sh
+    wget --no-verbose -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
+fi                                 #DOCS:
+
+# The code must be built in a separate directory. Create this directory,
+# then configure and build Nominatim in there:
+
+#DOCS:    :::sh
+    cd $USERHOME
+    mkdir build
+    cd build
+    cmake $USERHOME/Nominatim
+    make
+
+#
+# Adding SELinux Security Settings
+# --------------------------------
+#
+# It is a good idea to leave SELinux enabled and enforcing, particularly
+# with a web server accessible from the Internet. At a minimum the
+# following SELinux labeling should be done for Nominatim:
+
+    sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/Nominatim/(website|lib|settings)(/.*)?"
+    sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/build/(website|lib|settings)(/.*)?"
+    sudo semanage fcontext -a -t lib_t "$USERHOME/build/module/nominatim.so"
+    sudo restorecon -R -v $USERHOME/Nominatim
+    sudo restorecon -R -v $USERHOME/build
+
+
+# You need to create a minimal configuration file that tells nominatim
+# the name of your webserver user and the URL of the website:
+
+#DOCS:```sh
+tee settings/local.php << EOF
+<?php
+ @define('CONST_Database_Web_User', 'apache');
+ @define('CONST_Website_BaseURL', '/nominatim/');
+EOF
+#DOCS:```
+
+
+# Nominatim is now ready to use. Continue with
+# [importing a database from OSM data](../admin/Import-and-Update.md).
diff --git a/vagrant/Install-on-Ubuntu-18-nginx.sh b/vagrant/Install-on-Ubuntu-18-nginx.sh
new file mode 100755 (executable)
index 0000000..382df6b
--- /dev/null
@@ -0,0 +1,121 @@
+#!/bin/bash
+
+#
+# This is variation of Install-on-Ubuntu.sh showcasing how to use the
+# nginx webserver instead of Apache2. We might eventually merge both
+# files. Right now expect this file to become outdated/unmaintained
+# over time.
+#
+# This file lacks many comments found in Install-on-Ubuntu.sh, you
+# should check that file first to get a basic understanding.
+#
+
+# hacks for broken vagrant box
+sudo rm -f /var/lib/dpkg/lock
+sudo update-locale LANG=en_US.UTF-8
+export APT_LISTCHANGES_FRONTEND=none
+export DEBIAN_FRONTEND=noninteractive
+
+    sudo apt-get update -qq
+    sudo apt-get install -y build-essential cmake g++ libboost-dev libboost-system-dev \
+                            libboost-filesystem-dev libexpat1-dev zlib1g-dev\
+                            libbz2-dev libpq-dev libproj-dev \
+                            postgresql-server-dev-10 postgresql-10-postgis-2.4 \
+                            postgresql-contrib-10 \
+                            nginx php-fpm php php-pgsql \
+                            php-intl python3-setuptools python3-dev python3-pip \
+                            python3-psycopg2 python3-tidylib git
+
+    export USERNAME=vagrant
+    export USERHOME=/home/vagrant
+
+    chmod a+x $USERHOME
+
+# Setting up PostgreSQL
+# ---------------------
+#
+# Tune the postgresql configuration, see same section in Install-on-Ubuntu.sh
+
+    sudo systemctl restart postgresql
+
+    sudo -u postgres createuser -s $USERNAME
+    sudo -u postgres createuser www-data
+
+#
+# Setting up the Nginx Webserver
+# -------------------------------
+#
+# You need to configure php-fpm to listen on a Unix socket. Then create Nginx
+# configuration to forward localhost:80 requests to that socket.
+#
+
+
+sudo tee /etc/php/7.2/fpm/pool.d/www.conf << EOF_PHP_FPM_CONF
+[www]
+; Comment out the tcp listener and add the unix socket
+;listen = 127.0.0.1:9000
+listen = /var/run/php7.2-fpm.sock
+
+; Ensure that the daemon runs as the correct user
+listen.owner = www-data
+listen.group = www-data
+listen.mode = 0666
+
+; Unix user of FPM processes
+user = www-data
+group = www-data
+
+; Choose process manager type (static, dynamic, ondemand)
+pm = ondemand
+pm.max_children = 5
+EOF_PHP_FPM_CONF
+
+
+
+
+sudo tee /etc/nginx/sites-available/default << EOF_NGINX_CONF
+server {
+    listen 80 default_server;
+    listen [::]:80 default_server;
+
+    root $USERHOME/build/website;
+    index search.php index.html;
+    location / {
+        try_files \$uri \$uri/ @php;
+    }
+
+    location @php {
+        fastcgi_param SCRIPT_FILENAME "\$document_root\$uri.php";
+        fastcgi_param PATH_TRANSLATED "\$document_root\$uri.php";
+        fastcgi_param QUERY_STRING    \$args;
+        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
+        fastcgi_index index.php;
+        include fastcgi_params;
+    }
+
+    location ~ [^/]\.php(/|$) {
+        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
+        if (!-f \$document_root\$fastcgi_script_name) {
+            return 404;
+        }
+        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
+        fastcgi_index search.php;
+        include fastcgi.conf;
+    }
+}
+EOF_NGINX_CONF
+
+
+sudo sed -i 's:#.*::' /etc/nginx/sites-available/default
+
+
+#
+# Enable the configuration and restart Nginx
+#
+
+    sudo systemctl stop apache2 # just in case it's installed as well
+    sudo systemctl restart php7.2-fpm nginx
+
+# From here continue in the 'Installing Nominatim' section in
+# Install-on-Ubuntu.sh
+
index 062d7ceebe26a66e34e388e9ee6f44202cf965a8..02a1c738158dc66aa6560bb6f553e45946c0dc2a 100755 (executable)
@@ -25,21 +25,26 @@ export DEBIAN_FRONTEND=noninteractive #DOCS:
 # Now you can install all packages needed for Nominatim:
 
     sudo apt-get install -y build-essential cmake g++ libboost-dev libboost-system-dev \
-                            libboost-filesystem-dev libexpat1-dev zlib1g-dev libxml2-dev\
+                            libboost-filesystem-dev libexpat1-dev zlib1g-dev\
                             libbz2-dev libpq-dev libproj-dev \
                             postgresql-server-dev-10 postgresql-10-postgis-2.4 \
-                            postgresql-contrib-10 \
-                            apache2 php php-pgsql libapache2-mod-php php-pear php-db \
-                            php-intl git
+                            postgresql-contrib-10 postgresql-10-postgis-scripts \
+                            apache2 php php-pgsql libapache2-mod-php \
+                            php-intl python3-setuptools python3-dev python3-pip \
+                            python3-psycopg2 python3-tidylib git
 
 # If you want to run the test suite, you need to install the following
-# additional packages:
-
-    sudo apt-get install -y python3-setuptools python3-dev python3-pip \
-                            python3-psycopg2 python3-tidylib phpunit php-cgi
+# additional packages including the PHP package manager composer:
 
     pip3 install --user behave nose
-    sudo pear install PHP_CodeSniffer
+
+    sudo apt-get install -y composer php-cgi php-cli php-mbstring php-xml zip unzip
+
+    composer global require "squizlabs/php_codesniffer=*"
+    sudo ln -s ~/.config/composer/vendor/bin/phpcs /usr/bin/
+
+    composer global require "phpunit/phpunit=8.*"
+    sudo ln -s ~/.config/composer/vendor/bin/phpunit /usr/bin/
 
 #
 # System Configuration
@@ -77,7 +82,7 @@ export DEBIAN_FRONTEND=noninteractive #DOCS:
 # ---------------------
 #
 # Tune the postgresql configuration, which is located in 
-# `/etc/postgresql/9.5/main/postgresql.conf`. See section *Postgres Tuning* in
+# `/etc/postgresql/10/main/postgresql.conf`. See section *Postgres Tuning* in
 # [the installation page](../admin/Installation.md#postgresql-tuning)
 # for the parameters to change.
 #
old mode 100755 (executable)
new mode 100644 (file)
similarity index 84%
rename from vagrant/Install-on-Ubuntu-16.sh
rename to vagrant/Install-on-Ubuntu-20.sh
index c93cbca..9b79add
@@ -6,41 +6,47 @@ sudo update-locale LANG=en_US.UTF-8 #DOCS:
 export APT_LISTCHANGES_FRONTEND=none #DOCS:
 export DEBIAN_FRONTEND=noninteractive #DOCS:
 
+#
+# !!! danger "Important"
+#     Ubuntu 20.04 uses Postgresql 12 and Postgis 3, which are known to cause
+#     performance issues. They are not recommended for a production
+#     installation at the moment.
 #
 # *Note:* these installation instructions are also available in executable
-#         form for use with vagrant under vagrant/Install-on-Ubuntu-16.sh.
+#         form for use with vagrant under vagrant/Install-on-Ubuntu-20.sh.
 #
 # Installing the Required Software
 # ================================
 #
-# These instructions expect that you have a freshly installed Ubuntu 16.04.
+# These instructions expect that you have a freshly installed Ubuntu 20.04.
 #
 # Make sure all packages are are up-to-date by running:
 #
 
 #DOCS:    :::sh
-    sudo apt-get -o DPkg::options::="--force-confdef" -o DPkg::options::="--force-confold" --force-yes -fuy install grub-pc #DOCS:
+    sudo apt-get \ #DOCS:
+        -o DPkg::options::="--force-confdef" -o DPkg::options::="--force-confold" \ #DOCS:
+        --allow-downgrades --allow-remove-essential --allow-change-held-packages \ #DOCS:
+        -fuy install grub-pc #DOCS:
     sudo apt-get update -qq
 
 # Now you can install all packages needed for Nominatim:
 
     sudo apt-get install -y build-essential cmake g++ libboost-dev libboost-system-dev \
-                            libboost-filesystem-dev libexpat1-dev zlib1g-dev libxml2-dev\
+                            libboost-filesystem-dev libexpat1-dev zlib1g-dev \
                             libbz2-dev libpq-dev libproj-dev \
-                            postgresql-server-dev-9.5 postgresql-9.5-postgis-2.2 \
-                            postgresql-contrib-9.5 \
-                            apache2 php php-pgsql libapache2-mod-php php-pear php-db \
-                            php-intl git
+                            postgresql-server-dev-12 postgresql-12-postgis-3 \
+                            postgresql-contrib postgresql-12-postgis-3-scripts \
+                            apache2 php php-pgsql libapache2-mod-php \
+                            php-intl python3-setuptools python3-dev python3-pip \
+                            python3-psycopg2 python3-tidylib git
 
 # If you want to run the test suite, you need to install the following
 # additional packages:
 
-    sudo apt-get install -y python3-setuptools python3-dev python3-pip \
-                            python3-psycopg2 python3-tidylib phpunit php-cgi
+    sudo apt-get install -y phpunit php-codesniffer php-cgi
 
     pip3 install --user behave nose
-    sudo pear install PHP_CodeSniffer
-
 #
 # System Configuration
 # ====================
@@ -77,7 +83,7 @@ export DEBIAN_FRONTEND=noninteractive #DOCS:
 # ---------------------
 #
 # Tune the postgresql configuration, which is located in 
-# `/etc/postgresql/9.5/main/postgresql.conf`. See section *Postgres Tuning* in
+# `/etc/postgresql/12/main/postgresql.conf`. See section *Postgres Tuning* in
 # [the installation page](../admin/Installation.md#postgresql-tuning)
 # for the parameters to change.
 #
index ef9f03c4bd2b648b0c587f92fa1ea186f674daf7..2522f05f3e9bba408ed7c024c6499c5fd2e0a020 100755 (executable)
@@ -1,8 +1,8 @@
 #!/bin/bash
 
 # This script runs in a travis-ci.org virtual machine
-# https://docs.travis-ci.com/user/trusty-ci-environment/
-# Ubuntu 14 (trusty)
+# https://docs.travis-ci.com/user/reference/xenial/
+# Ubuntu 16 (xenial)
 # user 'travis'
 # $TRAVIS_BUILD_DIR is /home/travis/build/openstreetmap/Nominatim/, for others see
 #   https://docs.travis-ci.com/user/environment-variables/#Default-Environment-Variables
 
 sudo apt-get update -qq
 sudo apt-get install -y -qq libboost-dev libboost-system-dev \
-                            libboost-filesystem-dev libexpat1-dev zlib1g-dev libxml2-dev\
-                            libbz2-dev libpq-dev libgeos-c1 libgeos++-dev libproj-dev \
-                            postgresql-server-dev-9.6 postgresql-9.6-postgis-2.3 postgresql-contrib-9.6 \
-                            apache2 php5 php5-pgsql php5-intl php-pear
+                            libboost-filesystem-dev libexpat1-dev zlib1g-dev\
+                            libbz2-dev libpq-dev libproj-dev \
+                            postgresql-server-dev-9.6 postgresql-9.6-postgis-2.4 postgresql-contrib-9.6 \
+                            apache2 php php-pgsql php-intl
 
-sudo apt-get install -y -qq python3-dev python3-pip python3-psycopg2 php5-cgi
+sudo apt-get install -y -qq python3-dev python3-pip php-cgi
 
 pip3 install --quiet behave nose pytidylib psycopg2-binary
 
-# Travis uses phpenv to support multiple PHP versions. We need to make sure
-# these packages get installed to the phpenv-set PHP (below /home/travis/.phpenv/),
-# not the system PHP (/usr/bin/php)
-sudo PHP_PEAR_PHP_BIN=`which php` pear -q install pear/PEAR-1.10.0
-sudo PHP_PEAR_PHP_BIN=`which php` pear -q install DB
-sudo PHP_PEAR_PHP_BIN=`which php` pear -q install PHP_CodeSniffer
-sudo PHP_PEAR_PHP_BIN=`which php` pear list
-# re-populate the shims/ directory, e.g. adds phpcs
-phpenv rehash
-ls -la /home/travis/.phpenv/shims/
-
-# $PHPENV_VERSION and $TRAVIS_PHP_VERSION are unset.
-export PHPENV_VERSION=$(cat /home/travis/.phpenv/version)
-
-# add lib/php/pear to the PHP include path
-tee /tmp/travis.php.ini << EOF
-include_path = .:/home/travis/.phpenv/versions/$PHPENV_VERSION/share/pear:/home/travis/.phpenv/versions/$PHPENV_VERSION/lib/php/pear
-EOF
-phpenv config-add /tmp/travis.php.ini
+# https://github.com/squizlabs/PHP_CodeSniffer
+composer global require "squizlabs/php_codesniffer=*"
+sudo ln -s /home/travis/.config/composer/vendor/bin/phpcs /usr/bin/
 
+composer global require "phpunit/phpunit=7.*"
+sudo ln -s /home/travis/.config/composer/vendor/bin/phpunit /usr/bin/
 
 sudo -u postgres createuser -S www-data
 
@@ -76,7 +62,7 @@ make
 tee settings/local.php << EOF
 <?php
  @define('CONST_Website_BaseURL', '/nominatim/');
- @define('CONST_Database_DSN', 'pgsql://@/test_api_nominatim');
+ @define('CONST_Database_DSN', 'pgsql:dbname=test_api_nominatim');
  @define('CONST_Wikipedia_Data_Path', CONST_BasePath.'/test/testdb');
 EOF
 
index d83baa24e70acc4b608ffb5f5859baedcea76ca7..28869436e07afb943c4ab90402aa54c9f52699fd 100644 (file)
@@ -1 +1 @@
-.leaflet-control-minimap{border:rgba(255,255,255,1) solid;box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:3px;background:#f8f8f9;transition:all .6s}.leaflet-control-minimap a{background-color:rgba(255,255,255,1);background-repeat:no-repeat;z-index:99999;transition:all .6s}.leaflet-control-minimap a.minimized-bottomright{-webkit-transform:rotate(180deg);transform:rotate(180deg);border-radius:0}.leaflet-control-minimap a.minimized-topleft{-webkit-transform:rotate(0deg);transform:rotate(0deg);border-radius:0}.leaflet-control-minimap a.minimized-bottomleft{-webkit-transform:rotate(270deg);transform:rotate(270deg);border-radius:0}.leaflet-control-minimap a.minimized-topright{-webkit-transform:rotate(90deg);transform:rotate(90deg);border-radius:0}.leaflet-control-minimap-toggle-display{background-image:url(images/toggle.svg);background-size:cover;position:absolute;border-radius:3px 0 0}.leaflet-oldie .leaflet-control-minimap-toggle-display{background-image:url(images/toggle.png)}.leaflet-control-minimap-toggle-display-bottomright{bottom:0;right:0}.leaflet-control-minimap-toggle-display-topleft{top:0;left:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.leaflet-control-minimap-toggle-display-bottomleft{bottom:0;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.leaflet-control-minimap-toggle-display-topright{top:0;right:0;-webkit-transform:rotate(270deg);transform:rotate(270deg)}.leaflet-oldie .leaflet-control-minimap{border:1px solid #999}.leaflet-oldie .leaflet-control-minimap a{background-color:#fff}.leaflet-oldie .leaflet-control-minimap a.minimized{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}
+.leaflet-control-minimap{border:rgba(255,255,255,1) solid;box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:3px;background:#f8f8f9;transition:all .6s}.leaflet-control-minimap a{background-color:rgba(255,255,255,1);background-repeat:no-repeat;z-index:99999;transition:all .6s}.leaflet-control-minimap a.minimized-bottomright{-webkit-transform:rotate(180deg);transform:rotate(180deg);border-radius:0}.leaflet-control-minimap a.minimized-topleft{-webkit-transform:rotate(0deg);transform:rotate(0deg);border-radius:0}.leaflet-control-minimap a.minimized-bottomleft{-webkit-transform:rotate(270deg);transform:rotate(270deg);border-radius:0}.leaflet-control-minimap a.minimized-topright{-webkit-transform:rotate(90deg);transform:rotate(90deg);border-radius:0}.leaflet-control-minimap-toggle-display{background-image:url(images/toggle.svg);background-size:cover;position:absolute;border-radius:3px 0 0}.leaflet-oldie .leaflet-control-minimap-toggle-display{background-image:url(images/toggle.png)}.leaflet-control-minimap-toggle-display-bottomright{bottom:0;right:0}.leaflet-control-minimap-toggle-display-topleft{top:0;left:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.leaflet-control-minimap-toggle-display-bottomleft{bottom:0;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.leaflet-control-minimap-toggle-display-topright{top:0;right:0;-webkit-transform:rotate(270deg);transform:rotate(270deg)}.leaflet-oldie .leaflet-control-minimap{border:1px solid #999}.leaflet-oldie .leaflet-control-minimap a{background-color:#fff}.leaflet-oldie .leaflet-control-minimap a.minimized{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}
\ No newline at end of file
index 171de42acaa6ca3694b5619d53510894583133db..8f21c310aaa9b265b0b76e1960fef4ec342a18e0 100644 (file)
@@ -52,6 +52,17 @@ tr.all-columns td {
   margin: 10px 0;
 }
 
+#details-index-page .search-form {
+  padding: 20px 10px;
+  margin: 2em 0;
+}
+#details-index-page .search-form h4 {
+  margin-top: 0;
+}
+#details-index-page .search-form .form-control{
+  width: 30em;
+}
+
 footer {
   text-align: center;  
   padding: 2em 0;
index 230e5bad14f3494ce152dc69634b24c232f76462..983d60592b03fde5c798b4933e9419f9f1f885ba 100644 (file)
                user-select: none;\r
          -webkit-user-drag: none;\r
        }\r
+/* Prevents IE11 from highlighting tiles in blue */\r
+.leaflet-tile::selection {\r
+       background: transparent;\r
+}\r
 /* Safari renders non-retina tile on retina better with this, but Chrome is worse */\r
 .leaflet-safari .leaflet-tile {\r
        image-rendering: -webkit-optimize-contrast;\r
@@ -45,7 +49,8 @@
 .leaflet-container .leaflet-marker-pane img,\r
 .leaflet-container .leaflet-shadow-pane img,\r
 .leaflet-container .leaflet-tile-pane img,\r
-.leaflet-container img.leaflet-image-layer {\r
+.leaflet-container img.leaflet-image-layer,\r
+.leaflet-container .leaflet-tile {\r
        max-width: none !important;\r
        max-height: none !important;\r
        }\r
        opacity: 0;\r
        -webkit-transition: opacity 0.2s linear;\r
           -moz-transition: opacity 0.2s linear;\r
-            -o-transition: opacity 0.2s linear;\r
                transition: opacity 0.2s linear;\r
        }\r
 .leaflet-fade-anim .leaflet-map-pane .leaflet-popup {\r
 .leaflet-zoom-anim .leaflet-zoom-animated {\r
        -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);\r
           -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);\r
-            -o-transition:      -o-transform 0.25s cubic-bezier(0,0,0.25,1);\r
                transition:         transform 0.25s cubic-bezier(0,0,0.25,1);\r
        }\r
 .leaflet-zoom-anim .leaflet-tile,\r
 .leaflet-pan-anim .leaflet-tile {\r
        -webkit-transition: none;\r
           -moz-transition: none;\r
-            -o-transition: none;\r
                transition: none;\r
        }\r
 \r
 .leaflet-grab {\r
        cursor: -webkit-grab;\r
        cursor:    -moz-grab;\r
+       cursor:         grab;\r
        }\r
 .leaflet-crosshair,\r
 .leaflet-crosshair .leaflet-interactive {\r
        cursor: move;\r
        cursor: -webkit-grabbing;\r
        cursor:    -moz-grabbing;\r
+       cursor:         grabbing;\r
        }\r
 \r
 /* marker & overlays interactivity */\r
 \r
 .leaflet-marker-icon.leaflet-interactive,\r
 .leaflet-image-layer.leaflet-interactive,\r
-.leaflet-pane > svg path.leaflet-interactive {\r
+.leaflet-pane > svg path.leaflet-interactive,\r
+svg.leaflet-image-layer.leaflet-interactive path {\r
        pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r
        pointer-events: auto;\r
        }\r
        -webkit-transform: rotate(45deg);\r
           -moz-transform: rotate(45deg);\r
            -ms-transform: rotate(45deg);\r
-            -o-transform: rotate(45deg);\r
                transform: rotate(45deg);\r
        }\r
 .leaflet-popup-content-wrapper,\r
index 9215a1d770a4c8e070d69e37a904041b45855d2e..1f139fe4470e9dfb2e1c7908ec1d9b8fa7414fb3 100644 (file)
@@ -1,11 +1,11 @@
 
-
-form {
+.top-bar {
   width: 100%;
   padding: 1em 15px;
 }
-form #q {
-  min-width: 500px;
+
+.top-bar #q {
+  max-width: 500px;
 }
 @media (max-width: 850px) {
   form #q {
@@ -147,6 +147,17 @@ footer p {
     width: 100%;
   }
   .search-button-group {
-    display: inline
+    display: inline;
   }
 }
+
+.search-button-group {
+  margin-top: 3px;
+  box-sizing: content-box;
+  margin-bottom: 3px;
+}
+
+label {
+  font-weight: normal;
+}
+
old mode 100755 (executable)
new mode 100644 (file)
index 6e9178e..2d7ee7e
 <?php
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-website.php');
 require_once(CONST_BasePath.'/lib/log.php');
 require_once(CONST_BasePath.'/lib/output.php');
 ini_set('memory_limit', '200M');
 
-$sOutputFormat = 'html';
+$oParams = new Nominatim\ParameterParser();
+$sOutputFormat = $oParams->getSet('format', array('html', 'json'), 'html');
+set_exception_handler_by_format($sOutputFormat);
 
-$oDB =& getDB();
+$oDB = new Nominatim\DB();
+$oDB->connect();
 
 $sSQL = 'select placex.place_id, country_code,';
 $sSQL .= " name->'name' as name, i.* from placex, import_polygon_delete i";
 $sSQL .= ' where placex.osm_id = i.osm_id and placex.osm_type = i.osm_type';
 $sSQL .= ' and placex.class = i.class and placex.type = i.type';
-$aPolygons = chksql($oDB->getAll($sSQL), 'Could not get list of deleted OSM elements.');
+$aPolygons = $oDB->getAll($sSQL, null, 'Could not get list of deleted OSM elements.');
 
 if (CONST_Debug) {
     var_dump($aPolygons);
     exit;
 }
 
-?>
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8"/>
-    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
-    
-    <title>Nominatim Deleted Data</title>
-    
-    <meta name="description" content="List of OSM data that has been deleted" lang="en-US" />
-
-</head>
-
-<body>
-<style type="text/css">
-table {
-    border-width: 1px;
-    border-spacing: 0px;
-    border-style: solid;
-    border-color: gray;
-    border-collapse: collapse;
-    background-color: white;
-    margin: 10px;
-}
-table th {
-    border-width: 1px;
-    padding: 2px;
-    border-style: inset;
-    border-color: gray;
-    border-left-color: #ddd;
-    border-right-color: #ddd;
-    background-color: #eee;
-    -moz-border-radius: 0px 0px 0px 0px;
-}
-table td {
-    border-width: 1px;
-    padding: 2px;
-    border-style: inset;
-    border-color: gray;
-    border-left-color: #ddd;
-    border-right-color: #ddd;
-    background-color: white;
-    -moz-border-radius: 0px 0px 0px 0px;
-}
-</style>
-
-<p>Objects in this table have been deleted in OSM but are still in the Nominatim database.</p>
-
-<table>
-<?php
-
-if (!$aPolygons) exit;
-echo '<tr>';
-// var_dump($aPolygons[0]);
-foreach ($aPolygons[0] as $sCol => $sVal) {
-    echo '<th>'.$sCol.'</th>';
+if ($sOutputFormat == 'json') {
+    echo javascript_renderData($aPolygons);
+} else {
+    include(CONST_BasePath.'/lib/template/deletable-html.php');
 }
-echo '</tr>';
-foreach ($aPolygons as $aRow) {
-    echo '<tr>';
-    foreach ($aRow as $sCol => $sVal) {
-        switch ($sCol) {
-            case 'osm_id':
-                echo '<td>'.osmLink($aRow).'</td>';
-                break;
-            case 'place_id':
-                echo '<td>'.detailsLink($aRow).'</td>';
-                break;
-            default:
-                echo '<td>'.($sVal?$sVal:'&nbsp;').'</td>';
-                break;
-        }
-    }
-    echo '</tr>';
-}
-
-?>
-</table>
-
-
-
-</body>
-</html>
old mode 100755 (executable)
new mode 100644 (file)
index c9e8631..6f7c807
@@ -1,7 +1,5 @@
 <?php
-@define('CONST_ConnectionBucket_PageType', 'Details');
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-website.php');
 require_once(CONST_BasePath.'/lib/log.php');
 require_once(CONST_BasePath.'/lib/output.php');
@@ -11,9 +9,9 @@ ini_set('memory_limit', '200M');
 $oParams = new Nominatim\ParameterParser();
 
 $sOutputFormat = $oParams->getSet('format', array('html', 'json'), 'html');
+set_exception_handler_by_format($sOutputFormat);
 
 $aLangPrefOrder = $oParams->getPreferredLanguages();
-$sLanguagePrefArraySQL = 'ARRAY['.join(',', array_map('getDBQuoted', $aLangPrefOrder)).']';
 
 $sPlaceId = $oParams->getString('place_id');
 $sOsmType = $oParams->getSet('osmtype', array('N', 'W', 'R'));
@@ -27,20 +25,36 @@ $bIncludeHierarchy = $oParams->getBool('hierarchy', $sOutputFormat == 'html');
 $bGroupHierarchy = $oParams->getBool('group_hierarchy', false);
 $bIncludePolygonAsGeoJSON = $oParams->getBool('polygon_geojson', $sOutputFormat == 'html');
 
-$oDB =& getDB();
+$oDB = new Nominatim\DB();
+$oDB->connect();
+
+$sLanguagePrefArraySQL = $oDB->getArraySQL($oDB->getDBQuotedList($aLangPrefOrder));
+
+if ($sOutputFormat == 'html' && !$sPlaceId && !$sOsmType) {
+    include(CONST_BasePath.'/lib/template/details-index-html.php');
+    exit;
+}
 
 if ($sOsmType && $iOsmId > 0) {
-    $sSQL = sprintf(
-        "SELECT place_id FROM placex WHERE osm_type='%s' AND osm_id=%d",
-        $sOsmType,
-        $iOsmId
-    );
+    $sSQL = 'SELECT place_id FROM placex WHERE osm_type = :type AND osm_id = :id';
+    $aSQLParams = array(':type' => $sOsmType, ':id' => $iOsmId);
     // osm_type and osm_id are not unique enough
     if ($sClass) {
-        $sSQL .= " AND class='".$sClass."'";
+        $sSQL .= ' AND class= :class';
+        $aSQLParams[':class'] = $sClass;
     }
     $sSQL .= ' ORDER BY class ASC';
-    $sPlaceId = chksql($oDB->getOne($sSQL));
+    $sPlaceId = $oDB->getOne($sSQL, $aSQLParams);
+
+
+    // Nothing? Maybe it's an interpolation.
+    // XXX Simply returns the first parent street it finds. It should
+    //     get a house number and get the right interpolation.
+    if (!$sPlaceId && $sOsmType == 'W' && (!$sClass || $sClass == 'place')) {
+        $sSQL = 'SELECT place_id FROM location_property_osmline'
+                .' WHERE osm_id = :id LIMIT 1';
+        $sPlaceId = $oDB->getOne($sSQL, array(':id' => $iOsmId));
+    }
 
     // Be nice about our error messages for broken geometry
 
@@ -55,12 +69,12 @@ if ($sOsmType && $iOsmId > 0) {
         $sSQL .= '    ST_AsText(prevgeometry) AS prevgeom, ';
         $sSQL .= '    ST_AsText(newgeometry) AS newgeom';
         $sSQL .= ' FROM import_polygon_error ';
-        $sSQL .= " WHERE osm_type = '".$sOsmType."'";
-        $sSQL .= '  AND osm_id = '.$iOsmId;
+        $sSQL .= ' WHERE osm_type = :type';
+        $sSQL .= '   AND osm_id = :id';
         $sSQL .= ' ORDER BY updated DESC';
         $sSQL .= ' LIMIT 1';
-        $aPointDetails = chksql($oDB->getRow($sSQL));
-        if (!PEAR::isError($aPointDetails) && $aPointDetails) {
+        $aPointDetails = $oDB->getRow($sSQL, array(':type' => $sOsmType, ':id' => $iOsmId));
+        if ($aPointDetails) {
             if (preg_match('/\[(-?\d+\.\d+) (-?\d+\.\d+)\]/', $aPointDetails['errormessage'], $aMatches)) {
                 $aPointDetails['error_x'] = $aMatches[1];
                 $aPointDetails['error_y'] = $aMatches[2];
@@ -75,25 +89,25 @@ if ($sOsmType && $iOsmId > 0) {
 }
 
 
-if (!$sPlaceId) userError('Please select a place id');
+if ($sPlaceId === false) userError('Please select a place id');
 
 $iPlaceID = (int)$sPlaceId;
 
 if (CONST_Use_US_Tiger_Data) {
-    $iParentPlaceID = chksql($oDB->getOne('SELECT parent_place_id FROM location_property_tiger WHERE place_id = '.$iPlaceID));
+    $iParentPlaceID = $oDB->getOne('SELECT parent_place_id FROM location_property_tiger WHERE place_id = '.$iPlaceID);
     if ($iParentPlaceID) $iPlaceID = $iParentPlaceID;
 }
 
 // interpolated house numbers
-$iParentPlaceID = chksql($oDB->getOne('SELECT parent_place_id FROM location_property_osmline WHERE place_id = '.$iPlaceID));
+$iParentPlaceID = $oDB->getOne('SELECT parent_place_id FROM location_property_osmline WHERE place_id = '.$iPlaceID);
 if ($iParentPlaceID) $iPlaceID = $iParentPlaceID;
 
 // artificial postcodes
-$iParentPlaceID = chksql($oDB->getOne('SELECT parent_place_id FROM location_postcode WHERE place_id = '.$iPlaceID));
+$iParentPlaceID = $oDB->getOne('SELECT parent_place_id FROM location_postcode WHERE place_id = '.$iPlaceID);
 if ($iParentPlaceID) $iPlaceID = $iParentPlaceID;
 
 if (CONST_Use_Aux_Location_data) {
-    $iParentPlaceID = chksql($oDB->getOne('SELECT parent_place_id FROM location_property_aux WHERE place_id = '.$iPlaceID));
+    $iParentPlaceID = $oDB->getOne('SELECT parent_place_id FROM location_property_aux WHERE place_id = '.$iPlaceID);
     if ($iParentPlaceID) $iPlaceID = $iParentPlaceID;
 }
 
@@ -107,7 +121,6 @@ $sSQL .= '    ROUND(EXTRACT(epoch FROM indexed_date)) AS indexed_epoch,';
 $sSQL .= '    parent_place_id, ';
 $sSQL .= '    rank_address, ';
 $sSQL .= '    rank_search, ';
-$sSQL .= '    get_searchrank_label(rank_search) AS rank_search_label,'; // only used in HTML output
 $sSQL .= "    get_name_by_language(name,$sLanguagePrefArraySQL) AS localname, ";
 $sSQL .= "    ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') AS isarea, ";
 $sSQL .= '    ST_y(centroid) AS lat, ';
@@ -129,7 +142,7 @@ if ($bIncludePolygonAsGeoJSON) {
 $sSQL .= ' FROM placex ';
 $sSQL .= " WHERE place_id = $iPlaceID";
 
-$aPointDetails = chksql($oDB->getRow($sSQL), 'Could not get details of place object.');
+$aPointDetails = $oDB->getRow($sSQL, null, 'Could not get details of place object.');
 
 if (!$aPointDetails) {
     userError('Unknown place id.');
@@ -137,30 +150,22 @@ if (!$aPointDetails) {
 
 $aPointDetails['localname'] = $aPointDetails['localname']?$aPointDetails['localname']:$aPointDetails['housenumber'];
 $aPointDetails['icon'] = Nominatim\ClassTypes\getProperty($aPointDetails, 'icon', false);
+$aPointDetails['rank_search_label'] = getSearchRankLabel($aPointDetails['rank_search']); // only used in HTML format
 
 // Get all alternative names (languages, etc)
 $sSQL = 'SELECT (each(name)).key,(each(name)).value FROM placex ';
 $sSQL .= "WHERE place_id = $iPlaceID ORDER BY (each(name)).key";
 $aPointDetails['aNames'] = $oDB->getAssoc($sSQL);
-if (PEAR::isError($aPointDetails['aNames'])) { // possible timeout
-    $aPointDetails['aNames'] = array();
-}
 
 // Address tags
 $sSQL = 'SELECT (each(address)).key as key,(each(address)).value FROM placex ';
 $sSQL .= "WHERE place_id = $iPlaceID ORDER BY key";
 $aPointDetails['aAddressTags'] = $oDB->getAssoc($sSQL);
-if (PEAR::isError($aPointDetails['aAddressTags'])) { // possible timeout
-    $aPointDetails['aAddressTags'] = array();
-}
 
 // Extra tags
 $sSQL = 'SELECT (each(extratags)).key,(each(extratags)).value FROM placex ';
 $sSQL .= "WHERE place_id = $iPlaceID ORDER BY (each(extratags)).key";
 $aPointDetails['aExtraTags'] = $oDB->getAssoc($sSQL);
-if (PEAR::isError($aPointDetails['aExtraTags'])) { // possible timeout
-    $aPointDetails['aExtraTags'] = array();
-}
 
 // Address
 $aAddressLines = false;
@@ -192,9 +197,6 @@ if ($bIncludeLinkedPlaces) {
     $sSQL .= "   get_name_by_language(name, $sLanguagePrefArraySQL), ";
     $sSQL .= '   housenumber';
     $aLinkedLines = $oDB->getAll($sSQL);
-    if (PEAR::isError($aLinkedLines)) { // possible timeout
-        $aLinkedLines = array();
-    }
 }
 
 // All places this is an imediate parent of
@@ -226,31 +228,25 @@ if ($bIncludeHierarchy) {
     $sSQL .= '    localname, ';
     $sSQL .= '    housenumber';
     $aHierarchyLines = $oDB->getAll($sSQL);
-    if (PEAR::isError($aHierarchyLines)) { // possible timeout
-        $aHierarchyLines = array();
-    }
 }
 
 $aPlaceSearchNameKeywords = false;
 $aPlaceSearchAddressKeywords = false;
 if ($bIncludeKeywords) {
     $sSQL = "SELECT * FROM search_name WHERE place_id = $iPlaceID";
-    $aPlaceSearchName = $oDB->getRow($sSQL); // can be null
-    if (!$aPlaceSearchName || PEAR::isError($aPlaceSearchName)) { // possible timeout
-        $aPlaceSearchName = array();
-    }
+    $aPlaceSearchName = $oDB->getRow($sSQL);
 
     if (!empty($aPlaceSearchName)) {
-        $sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['name_vector'], 1, -1).')';
-        $aPlaceSearchNameKeywords = $oDB->getAll($sSQL);
-        if (PEAR::isError($aPlaceSearchNameKeywords)) { // possible timeout
-            $aPlaceSearchNameKeywords = array();
+        $sWordIds = substr($aPlaceSearchName['name_vector'], 1, -1);
+        if (!empty($sWordIds)) {
+            $sSQL = 'SELECT * FROM word WHERE word_id in ('.$sWordIds.')';
+            $aPlaceSearchNameKeywords = $oDB->getAll($sSQL);
         }
 
-        $sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['nameaddress_vector'], 1, -1).')';
-        $aPlaceSearchAddressKeywords = $oDB->getAll($sSQL);
-        if (PEAR::isError($aPlaceSearchAddressKeywords)) { // possible timeout
-            $aPlaceSearchAddressKeywords = array();
+        $sWordIds = substr($aPlaceSearchName['nameaddress_vector'], 1, -1);
+        if (!empty($sWordIds)) {
+            $sSQL = 'SELECT * FROM word WHERE word_id in ('.$sWordIds.')';
+            $aPlaceSearchAddressKeywords = $oDB->getAll($sSQL);
         }
     }
 }
@@ -259,7 +255,7 @@ logEnd($oDB, $hLog, 1);
 
 if ($sOutputFormat=='html') {
     $sSQL = "SELECT TO_CHAR(lastimportdate,'YYYY/MM/DD HH24:MI')||' GMT' FROM import_status LIMIT 1";
-    $sDataDate = chksql($oDB->getOne($sSQL));
+    $sDataDate = $oDB->getOne($sSQL);
     $sTileURL = CONST_Map_Tile_URL;
     $sTileAttribution = CONST_Map_Tile_Attribution;
 }
old mode 100755 (executable)
new mode 100644 (file)
index 3ac4f32..e2db3ed
@@ -1,7 +1,5 @@
 <?php
-@define('CONST_ConnectionBucket_PageType', 'Details');
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-website.php');
 require_once(CONST_BasePath.'/lib/log.php');
 require_once(CONST_BasePath.'/lib/AddressDetails.php');
@@ -12,16 +10,19 @@ $oParams = new Nominatim\ParameterParser();
 
 $sOutputFormat = $oParams->getSet('format', array('html', 'json'), 'html');
 $aLangPrefOrder = $oParams->getPreferredLanguages();
-$sLanguagePrefArraySQL = 'ARRAY['.join(',', array_map('getDBQuoted', $aLangPrefOrder)).']';
+
 
 $sPlaceId = $oParams->getString('place_id');
 $sOsmType = $oParams->getSet('osmtype', array('N', 'W', 'R'));
 $iOsmId = $oParams->getInt('osmid', -1);
 
-$oDB =& getDB();
+$oDB = new Nominatim\DB();
+$oDB->connect();
+
+$sLanguagePrefArraySQL = $oDB->getArraySQL($oDB->getDBQuotedList($aLangPrefOrder));
 
 if ($sOsmType && $iOsmId > 0) {
-    $sPlaceId = chksql($oDB->getOne("select place_id from placex where osm_type = '".$sOsmType."' and osm_id = ".$iOsmId." order by type = 'postcode' asc"));
+    $sPlaceId = $oDB->getOne("select place_id from placex where osm_type = '".$sOsmType."' and osm_id = ".$iOsmId." order by type = 'postcode' asc");
 
     // Be nice about our error messages for broken geometry
     if (!$sPlaceId) {
@@ -30,7 +31,7 @@ if ($sOsmType && $iOsmId > 0) {
         $sSQL .= ' ST_AsText(prevgeometry) as prevgeom, ST_AsText(newgeometry) as newgeom';
         $sSQL .= " from import_polygon_error where osm_type = '".$sOsmType;
         $sSQL .= "' and osm_id = ".$iOsmId.' order by updated desc limit 1';
-        $aPointDetails = chksql($oDB->getRow($sSQL));
+        $aPointDetails = $oDB->getRow($sSQL);
         if ($aPointDetails) {
             if (preg_match('/\[(-?\d+\.\d+) (-?\d+\.\d+)\]/', $aPointDetails['errormessage'], $aMatches)) {
                 $aPointDetails['error_x'] = $aMatches[1];
@@ -47,17 +48,17 @@ if (!$sPlaceId) userError('Please select a place id');
 $iPlaceID = (int)$sPlaceId;
 
 if (CONST_Use_US_Tiger_Data) {
-    $iParentPlaceID = chksql($oDB->getOne('select parent_place_id from location_property_tiger where place_id = '.$iPlaceID));
+    $iParentPlaceID = $oDB->getOne('select parent_place_id from location_property_tiger where place_id = '.$iPlaceID);
     if ($iParentPlaceID) $iPlaceID = $iParentPlaceID;
 }
 
 if (CONST_Use_Aux_Location_data) {
-    $iParentPlaceID = chksql($oDB->getOne('select parent_place_id from location_property_aux where place_id = '.$iPlaceID));
+    $iParentPlaceID = $oDB->getOne('select parent_place_id from location_property_aux where place_id = '.$iPlaceID);
     if ($iParentPlaceID) $iPlaceID = $iParentPlaceID;
 }
 
 
-$oAddressLookup = new AddressDetails($oDB, $iPlaceID, -1, $aLangPrefOrder);
+$oAddressLookup = new Nominatim\AddressDetails($oDB, $iPlaceID, -1, $aLangPrefOrder);
 $aPlaceAddress = array_reverse($oAddressLookup->getAddressDetails());
 
 if (empty($aPlaceAddress)) userError('Unknown place id.');
@@ -88,7 +89,7 @@ if ($sOutputFormat == 'json') {
     exit;
 }
 
-$aRelatedPlaceIDs = chksql($oDB->getCol($sSQL = "select place_id from placex where linked_place_id = $iPlaceID or place_id = $iPlaceID"));
+$aRelatedPlaceIDs = $oDB->getCol("select place_id from placex where linked_place_id = $iPlaceID or place_id = $iPlaceID");
 
 $sSQL = 'select obj.place_id, osm_type, osm_id, class, type, housenumber, admin_level,';
 $sSQL .= " rank_address, ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') as isarea,  st_area(geometry) as area, ";
@@ -96,7 +97,7 @@ $sSQL .= " get_name_by_language(name,$sLanguagePrefArraySQL) as localname, lengt
 $sSQL .= ' from (select placex.place_id, osm_type, osm_id, class, type, housenumber, admin_level, rank_address, rank_search, geometry, name from placex ';
 $sSQL .= ' where parent_place_id in ('.join(',', $aRelatedPlaceIDs).') and name is not null order by rank_address asc,rank_search asc limit 500) as obj';
 $sSQL .= ' order by rank_address asc,rank_search asc,localname,class, type,housenumber';
-$aParentOfLines = chksql($oDB->getAll($sSQL));
+$aParentOfLines = $oDB->getAll($sSQL);
 
 if (!empty($aParentOfLines)) {
     echo '<h2>Parent Of:</h2>';
@@ -120,7 +121,7 @@ if (!empty($aParentOfLines)) {
             echo '<div class="line">';
             echo '<span class="name">'.(trim($aAddressLine['localname'])?$aAddressLine['localname']:'<span class="noname">No Name</span>').'</span>';
             echo ' (';
-            echo '<span class="area">'.($aAddressLine['isarea']=='t'?'Polygon':'Point').'</span>';
+            echo '<span class="area">'.($aAddressLine['isarea']?'Polygon':'Point').'</span>';
             if ($sOSMType) echo ', <span class="osm"><span class="label"></span>'.$sOSMType.' '.osmLink($aAddressLine).'</span>';
             echo ', <a href="hierarchy.php?place_id='.$aAddressLine['place_id'].'">GOTO</a>';
             echo ', '.$aAddressLine['area'];
index 4b3cbca92629aaf96cf57b54b3d9962c01882f23..9158b1f45879cf3858ea43c8bb78029c873d150a 100644 (file)
@@ -1 +1 @@
-(function(factory,window){if(typeof define==="function"&&define.amd){define(["leaflet"],factory)}else if(typeof exports==="object"){module.exports=factory(require("leaflet"))}if(typeof window!=="undefined"&&window.L){window.L.Control.MiniMap=factory(L);window.L.control.minimap=function(layer,options){return new window.L.Control.MiniMap(layer,options)}}})(function(L){var MiniMap=L.Control.extend({includes:L.Mixin.Events,options:{position:"bottomright",toggleDisplay:false,zoomLevelOffset:-5,zoomLevelFixed:false,centerFixed:false,zoomAnimation:false,autoToggleDisplay:false,minimized:false,width:150,height:150,collapsedWidth:19,collapsedHeight:19,aimingRectOptions:{color:"#ff7800",weight:1,clickable:false},shadowRectOptions:{color:"#000000",weight:1,clickable:false,opacity:0,fillOpacity:0},strings:{hideText:"Hide MiniMap",showText:"Show MiniMap"},mapOptions:{}},initialize:function(layer,options){L.Util.setOptions(this,options);this.options.aimingRectOptions.clickable=false;this.options.shadowRectOptions.clickable=false;this._layer=layer},onAdd:function(map){this._mainMap=map;this._container=L.DomUtil.create("div","leaflet-control-minimap");this._container.style.width=this.options.width+"px";this._container.style.height=this.options.height+"px";L.DomEvent.disableClickPropagation(this._container);L.DomEvent.on(this._container,"mousewheel",L.DomEvent.stopPropagation);var mapOptions={attributionControl:false,dragging:!this.options.centerFixed,zoomControl:false,zoomAnimation:this.options.zoomAnimation,autoToggleDisplay:this.options.autoToggleDisplay,touchZoom:this.options.centerFixed?"center":!this._isZoomLevelFixed(),scrollWheelZoom:this.options.centerFixed?"center":!this._isZoomLevelFixed(),doubleClickZoom:this.options.centerFixed?"center":!this._isZoomLevelFixed(),boxZoom:!this._isZoomLevelFixed(),crs:map.options.crs};mapOptions=L.Util.extend(this.options.mapOptions,mapOptions);this._miniMap=new L.Map(this._container,mapOptions);this._miniMap.addLayer(this._layer);this._mainMapMoving=false;this._miniMapMoving=false;this._userToggledDisplay=false;this._minimized=false;if(this.options.toggleDisplay){this._addToggleButton()}this._miniMap.whenReady(L.Util.bind(function(){this._aimingRect=L.rectangle(this._mainMap.getBounds(),this.options.aimingRectOptions).addTo(this._miniMap);this._shadowRect=L.rectangle(this._mainMap.getBounds(),this.options.shadowRectOptions).addTo(this._miniMap);this._mainMap.on("moveend",this._onMainMapMoved,this);this._mainMap.on("move",this._onMainMapMoving,this);this._miniMap.on("movestart",this._onMiniMapMoveStarted,this);this._miniMap.on("move",this._onMiniMapMoving,this);this._miniMap.on("moveend",this._onMiniMapMoved,this)},this));return this._container},addTo:function(map){L.Control.prototype.addTo.call(this,map);var center=this.options.centerFixed||this._mainMap.getCenter();this._miniMap.setView(center,this._decideZoom(true));this._setDisplay(this.options.minimized);return this},onRemove:function(map){this._mainMap.off("moveend",this._onMainMapMoved,this);this._mainMap.off("move",this._onMainMapMoving,this);this._miniMap.off("moveend",this._onMiniMapMoved,this);this._miniMap.removeLayer(this._layer)},changeLayer:function(layer){this._miniMap.removeLayer(this._layer);this._layer=layer;this._miniMap.addLayer(this._layer)},_addToggleButton:function(){this._toggleDisplayButton=this.options.toggleDisplay?this._createButton("",this._toggleButtonInitialTitleText(),"leaflet-control-minimap-toggle-display leaflet-control-minimap-toggle-display-"+this.options.position,this._container,this._toggleDisplayButtonClicked,this):undefined;this._toggleDisplayButton.style.width=this.options.collapsedWidth+"px";this._toggleDisplayButton.style.height=this.options.collapsedHeight+"px"},_toggleButtonInitialTitleText:function(){if(this.options.minimized){return this.options.strings.showText}else{return this.options.strings.hideText}},_createButton:function(html,title,className,container,fn,context){var link=L.DomUtil.create("a",className,container);link.innerHTML=html;link.href="#";link.title=title;var stop=L.DomEvent.stopPropagation;L.DomEvent.on(link,"click",stop).on(link,"mousedown",stop).on(link,"dblclick",stop).on(link,"click",L.DomEvent.preventDefault).on(link,"click",fn,context);return link},_toggleDisplayButtonClicked:function(){this._userToggledDisplay=true;if(!this._minimized){this._minimize()}else{this._restore()}},_setDisplay:function(minimize){if(minimize!==this._minimized){if(!this._minimized){this._minimize()}else{this._restore()}}},_minimize:function(){if(this.options.toggleDisplay){this._container.style.width=this.options.collapsedWidth+"px";this._container.style.height=this.options.collapsedHeight+"px";this._toggleDisplayButton.className+=" minimized-"+this.options.position;this._toggleDisplayButton.title=this.options.strings.showText}else{this._container.style.display="none"}this._minimized=true;this._onToggle()},_restore:function(){if(this.options.toggleDisplay){this._container.style.width=this.options.width+"px";this._container.style.height=this.options.height+"px";this._toggleDisplayButton.className=this._toggleDisplayButton.className.replace("minimized-"+this.options.position,"");this._toggleDisplayButton.title=this.options.strings.hideText}else{this._container.style.display="block"}this._minimized=false;this._onToggle()},_onMainMapMoved:function(e){if(!this._miniMapMoving){var center=this.options.centerFixed||this._mainMap.getCenter();this._mainMapMoving=true;this._miniMap.setView(center,this._decideZoom(true));this._setDisplay(this._decideMinimized())}else{this._miniMapMoving=false}this._aimingRect.setBounds(this._mainMap.getBounds())},_onMainMapMoving:function(e){this._aimingRect.setBounds(this._mainMap.getBounds())},_onMiniMapMoveStarted:function(e){if(!this.options.centerFixed){var lastAimingRect=this._aimingRect.getBounds();var sw=this._miniMap.latLngToContainerPoint(lastAimingRect.getSouthWest());var ne=this._miniMap.latLngToContainerPoint(lastAimingRect.getNorthEast());this._lastAimingRectPosition={sw:sw,ne:ne}}},_onMiniMapMoving:function(e){if(!this.options.centerFixed){if(!this._mainMapMoving&&this._lastAimingRectPosition){this._shadowRect.setBounds(new L.LatLngBounds(this._miniMap.containerPointToLatLng(this._lastAimingRectPosition.sw),this._miniMap.containerPointToLatLng(this._lastAimingRectPosition.ne)));this._shadowRect.setStyle({opacity:1,fillOpacity:.3})}}},_onMiniMapMoved:function(e){if(!this._mainMapMoving){this._miniMapMoving=true;this._mainMap.setView(this._miniMap.getCenter(),this._decideZoom(false));this._shadowRect.setStyle({opacity:0,fillOpacity:0})}else{this._mainMapMoving=false}},_isZoomLevelFixed:function(){var zoomLevelFixed=this.options.zoomLevelFixed;return this._isDefined(zoomLevelFixed)&&this._isInteger(zoomLevelFixed)},_decideZoom:function(fromMaintoMini){if(!this._isZoomLevelFixed()){if(fromMaintoMini){return this._mainMap.getZoom()+this.options.zoomLevelOffset}else{var currentDiff=this._miniMap.getZoom()-this._mainMap.getZoom();var proposedZoom=this._miniMap.getZoom()-this.options.zoomLevelOffset;var toRet;if(currentDiff>this.options.zoomLevelOffset&&this._mainMap.getZoom()<this._miniMap.getMinZoom()-this.options.zoomLevelOffset){if(this._miniMap.getZoom()>this._lastMiniMapZoom){toRet=this._mainMap.getZoom()+1;this._miniMap.setZoom(this._miniMap.getZoom()-1)}else{toRet=this._mainMap.getZoom()}}else{toRet=proposedZoom}this._lastMiniMapZoom=this._miniMap.getZoom();return toRet}}else{if(fromMaintoMini){return this.options.zoomLevelFixed}else{return this._mainMap.getZoom()}}},_decideMinimized:function(){if(this._userToggledDisplay){return this._minimized}if(this.options.autoToggleDisplay){if(this._mainMap.getBounds().contains(this._miniMap.getBounds())){return true}return false}return this._minimized},_isInteger:function(value){return typeof value==="number"},_isDefined:function(value){return typeof value!=="undefined"},_onToggle:function(){L.Util.requestAnimFrame(function(){L.DomEvent.on(this._container,"transitionend",this._fireToggleEvents,this);if(!L.Browser.any3d){L.Util.requestAnimFrame(this._fireToggleEvents,this)}},this)},_fireToggleEvents:function(){L.DomEvent.off(this._container,"transitionend",this._fireToggleEvents,this);var data={minimized:this._minimized};this.fire(this._minimized?"minimize":"restore",data);this.fire("toggle",data)}});L.Map.mergeOptions({miniMapControl:false});L.Map.addInitHook(function(){if(this.options.miniMapControl){this.miniMapControl=(new MiniMap).addTo(this)}});return MiniMap},window);
+(function(factory,window){if(typeof define==="function"&&define.amd){define(["leaflet"],factory)}else if(typeof exports==="object"){module.exports=factory(require("leaflet"))}if(typeof window!=="undefined"&&window.L){window.L.Control.MiniMap=factory(L);window.L.control.minimap=function(layer,options){return new window.L.Control.MiniMap(layer,options)}}})(function(L){var MiniMap=L.Control.extend({includes:L.Evented?L.Evented.prototype:L.Mixin.Events,options:{position:"bottomright",toggleDisplay:false,zoomLevelOffset:-5,zoomLevelFixed:false,centerFixed:false,zoomAnimation:false,autoToggleDisplay:false,minimized:false,width:150,height:150,collapsedWidth:19,collapsedHeight:19,aimingRectOptions:{color:"#ff7800",weight:1,clickable:false},shadowRectOptions:{color:"#000000",weight:1,clickable:false,opacity:0,fillOpacity:0},strings:{hideText:"Hide MiniMap",showText:"Show MiniMap"},mapOptions:{}},initialize:function(layer,options){L.Util.setOptions(this,options);this.options.aimingRectOptions.clickable=false;this.options.shadowRectOptions.clickable=false;this._layer=layer},onAdd:function(map){this._mainMap=map;this._container=L.DomUtil.create("div","leaflet-control-minimap");this._container.style.width=this.options.width+"px";this._container.style.height=this.options.height+"px";L.DomEvent.disableClickPropagation(this._container);L.DomEvent.on(this._container,"mousewheel",L.DomEvent.stopPropagation);var mapOptions={attributionControl:false,dragging:!this.options.centerFixed,zoomControl:false,zoomAnimation:this.options.zoomAnimation,autoToggleDisplay:this.options.autoToggleDisplay,touchZoom:this.options.centerFixed?"center":!this._isZoomLevelFixed(),scrollWheelZoom:this.options.centerFixed?"center":!this._isZoomLevelFixed(),doubleClickZoom:this.options.centerFixed?"center":!this._isZoomLevelFixed(),boxZoom:!this._isZoomLevelFixed(),crs:map.options.crs};mapOptions=L.Util.extend(this.options.mapOptions,mapOptions);this._miniMap=new L.Map(this._container,mapOptions);this._miniMap.addLayer(this._layer);this._mainMapMoving=false;this._miniMapMoving=false;this._userToggledDisplay=false;this._minimized=false;if(this.options.toggleDisplay){this._addToggleButton()}this._miniMap.whenReady(L.Util.bind(function(){this._aimingRect=L.rectangle(this._mainMap.getBounds(),this.options.aimingRectOptions).addTo(this._miniMap);this._shadowRect=L.rectangle(this._mainMap.getBounds(),this.options.shadowRectOptions).addTo(this._miniMap);this._mainMap.on("moveend",this._onMainMapMoved,this);this._mainMap.on("move",this._onMainMapMoving,this);this._miniMap.on("movestart",this._onMiniMapMoveStarted,this);this._miniMap.on("move",this._onMiniMapMoving,this);this._miniMap.on("moveend",this._onMiniMapMoved,this)},this));return this._container},addTo:function(map){L.Control.prototype.addTo.call(this,map);var center=this.options.centerFixed||this._mainMap.getCenter();this._miniMap.setView(center,this._decideZoom(true));this._setDisplay(this.options.minimized);return this},onRemove:function(map){this._mainMap.off("moveend",this._onMainMapMoved,this);this._mainMap.off("move",this._onMainMapMoving,this);this._miniMap.off("moveend",this._onMiniMapMoved,this);this._miniMap.removeLayer(this._layer)},changeLayer:function(layer){this._miniMap.removeLayer(this._layer);this._layer=layer;this._miniMap.addLayer(this._layer)},_addToggleButton:function(){this._toggleDisplayButton=this.options.toggleDisplay?this._createButton("",this._toggleButtonInitialTitleText(),"leaflet-control-minimap-toggle-display leaflet-control-minimap-toggle-display-"+this.options.position,this._container,this._toggleDisplayButtonClicked,this):undefined;this._toggleDisplayButton.style.width=this.options.collapsedWidth+"px";this._toggleDisplayButton.style.height=this.options.collapsedHeight+"px"},_toggleButtonInitialTitleText:function(){if(this.options.minimized){return this.options.strings.showText}else{return this.options.strings.hideText}},_createButton:function(html,title,className,container,fn,context){var link=L.DomUtil.create("a",className,container);link.innerHTML=html;link.href="#";link.title=title;var stop=L.DomEvent.stopPropagation;L.DomEvent.on(link,"click",stop).on(link,"mousedown",stop).on(link,"dblclick",stop).on(link,"click",L.DomEvent.preventDefault).on(link,"click",fn,context);return link},_toggleDisplayButtonClicked:function(){this._userToggledDisplay=true;if(!this._minimized){this._minimize()}else{this._restore()}},_setDisplay:function(minimize){if(minimize!==this._minimized){if(!this._minimized){this._minimize()}else{this._restore()}}},_minimize:function(){if(this.options.toggleDisplay){this._container.style.width=this.options.collapsedWidth+"px";this._container.style.height=this.options.collapsedHeight+"px";this._toggleDisplayButton.className+=" minimized-"+this.options.position;this._toggleDisplayButton.title=this.options.strings.showText}else{this._container.style.display="none"}this._minimized=true;this._onToggle()},_restore:function(){if(this.options.toggleDisplay){this._container.style.width=this.options.width+"px";this._container.style.height=this.options.height+"px";this._toggleDisplayButton.className=this._toggleDisplayButton.className.replace("minimized-"+this.options.position,"");this._toggleDisplayButton.title=this.options.strings.hideText}else{this._container.style.display="block"}this._minimized=false;this._onToggle()},_onMainMapMoved:function(e){if(!this._miniMapMoving){var center=this.options.centerFixed||this._mainMap.getCenter();this._mainMapMoving=true;this._miniMap.setView(center,this._decideZoom(true));this._setDisplay(this._decideMinimized())}else{this._miniMapMoving=false}this._aimingRect.setBounds(this._mainMap.getBounds())},_onMainMapMoving:function(e){this._aimingRect.setBounds(this._mainMap.getBounds())},_onMiniMapMoveStarted:function(e){if(!this.options.centerFixed){var lastAimingRect=this._aimingRect.getBounds();var sw=this._miniMap.latLngToContainerPoint(lastAimingRect.getSouthWest());var ne=this._miniMap.latLngToContainerPoint(lastAimingRect.getNorthEast());this._lastAimingRectPosition={sw:sw,ne:ne}}},_onMiniMapMoving:function(e){if(!this.options.centerFixed){if(!this._mainMapMoving&&this._lastAimingRectPosition){this._shadowRect.setBounds(new L.LatLngBounds(this._miniMap.containerPointToLatLng(this._lastAimingRectPosition.sw),this._miniMap.containerPointToLatLng(this._lastAimingRectPosition.ne)));this._shadowRect.setStyle({opacity:1,fillOpacity:.3})}}},_onMiniMapMoved:function(e){if(!this._mainMapMoving){this._miniMapMoving=true;this._mainMap.setView(this._miniMap.getCenter(),this._decideZoom(false));this._shadowRect.setStyle({opacity:0,fillOpacity:0})}else{this._mainMapMoving=false}},_isZoomLevelFixed:function(){var zoomLevelFixed=this.options.zoomLevelFixed;return this._isDefined(zoomLevelFixed)&&this._isInteger(zoomLevelFixed)},_decideZoom:function(fromMaintoMini){if(!this._isZoomLevelFixed()){if(fromMaintoMini){return this._mainMap.getZoom()+this.options.zoomLevelOffset}else{var currentDiff=this._miniMap.getZoom()-this._mainMap.getZoom();var proposedZoom=this._miniMap.getZoom()-this.options.zoomLevelOffset;var toRet;if(currentDiff>this.options.zoomLevelOffset&&this._mainMap.getZoom()<this._miniMap.getMinZoom()-this.options.zoomLevelOffset){if(this._miniMap.getZoom()>this._lastMiniMapZoom){toRet=this._mainMap.getZoom()+1;this._miniMap.setZoom(this._miniMap.getZoom()-1)}else{toRet=this._mainMap.getZoom()}}else{toRet=proposedZoom}this._lastMiniMapZoom=this._miniMap.getZoom();return toRet}}else{if(fromMaintoMini){return this.options.zoomLevelFixed}else{return this._mainMap.getZoom()}}},_decideMinimized:function(){if(this._userToggledDisplay){return this._minimized}if(this.options.autoToggleDisplay){if(this._mainMap.getBounds().contains(this._miniMap.getBounds())){return true}return false}return this._minimized},_isInteger:function(value){return typeof value==="number"},_isDefined:function(value){return typeof value!=="undefined"},_onToggle:function(){L.Util.requestAnimFrame(function(){L.DomEvent.on(this._container,"transitionend",this._fireToggleEvents,this);if(!L.Browser.any3d){L.Util.requestAnimFrame(this._fireToggleEvents,this)}},this)},_fireToggleEvents:function(){L.DomEvent.off(this._container,"transitionend",this._fireToggleEvents,this);var data={minimized:this._minimized};this.fire(this._minimized?"minimize":"restore",data);this.fire("toggle",data)}});L.Map.mergeOptions({miniMapControl:false});L.Map.addInitHook(function(){if(this.options.miniMapControl){this.miniMapControl=(new MiniMap).addTo(this)}});return MiniMap},window);
\ No newline at end of file
index fad9ab1237c61d675c38599bcaaa063b7de5bb12..47b639702ccbb7cc5ce9c38556560b617e604fcd 100644 (file)
@@ -1,5 +1,2 @@
-/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){
-return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)),
-void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n});
-//# sourceMappingURL=jquery.min.map
\ No newline at end of file
+/*! jQuery v3.5.0 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(D).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t=Object.create(null),V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Ae(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,Ce)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click",Ce),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ce:Ee,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ce,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ce,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ce,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&be.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&we.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Ae(this,e,Se),!1},trigger:function(){return Ae(this,e),!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ee),this.each(function(){S.event.remove(this,e,n,t)})}});var Ne=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,je=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function Pe(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&De.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Pe(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),Le)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,He),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(je,""),u,l))}return n}function Re(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Oe(o[r],a[r]);else Oe(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Pe(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Ie=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},We=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Fe=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||Ie(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Me.test(a)&&Fe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px",t.style.height="1px",n.style.height="9px",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=3<parseInt(r.height),re.removeChild(e)),a}}))}();var _e=["Webkit","Moz","ms"],ze=E.createElement("div").style,Ue={};function Xe(e){var t=S.cssProps[e]||Ue[e];return t||(e in ze?e:Ue[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in ze)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Ge=/^--/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ve.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):We(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Ie(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=$e(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Je)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ct(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=ft(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",y.checkOn=""!==rt.value,y.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",y.radioValue="t"===rt.value;var pt,dt=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,yt(this)))});if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,yt(this)))});if(!arguments.length)return this.attr("class","");if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,yt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=mt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=yt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+vt(yt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:vt(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||S.error("Invalid XML: "+e),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)Dt(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Bt(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function $t(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,S.ajaxSettings),t):$t(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Bt(Rt,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ot.test(v.type),f=v.url.replace(qt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(jt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Et.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+It+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Bt(Mt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=S.ajaxSettings.xhr();y.cors=!!zt&&"withCredentials"in zt,y.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(y.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=vt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
index 764fbb887df5a26c3411272f9eb5f2b9aefe94fb..13e8b1e0b743ac7f15db896a3a02d0c7db60d0d4 100644 (file)
@@ -1,5 +1,5 @@
 /* @preserve
- * Leaflet 1.3.1+Detached: ba6f97fff8647e724e4dfe66d2ed7da11f908989.ba6f97f, a JS library for interactive maps. http://leafletjs.com
- * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade
+ * Leaflet 1.6.0, a JS library for interactive maps. http://leafletjs.com
+ * (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade
  */
-!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++){o=arguments[e];for(i in o)t[i]=o[i]}return t}function e(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}function n(t){return t._leaflet_id=t._leaflet_id||++ti,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function s(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function r(){return!1}function a(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function h(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function u(t){return h(t).split(/\s+/)}function l(t,i){t.hasOwnProperty("options")||(t.options=t.options?Qt(t.options):{});for(var e in i)t.options[e]=i[e];return t.options}function c(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}function _(t,i){return t.replace(ii,function(t,e){var n=i[e];if(void 0===n)throw new Error("No value provided for variable "+t);return"function"==typeof n&&(n=n(i)),n})}function d(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}function p(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}function m(t){var i=+new Date,e=Math.max(0,16-(i-oi));return oi=i+e,window.setTimeout(t,e)}function f(t,i,n){if(!n||si!==m)return si.call(window,e(t,i));t.call(i)}function g(t){t&&ri.call(window,t)}function v(){}function y(t){if("undefined"!=typeof L&&L&&L.Mixin){t=ei(t)?t:[t];for(var i=0;i<t.length;i++)t[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}function x(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}function w(t,i,e){return t instanceof x?t:ei(t)?new x(t[0],t[1]):void 0===t||null===t?t:"object"==typeof t&&"x"in t&&"y"in t?new x(t.x,t.y):new x(t,i,e)}function P(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function b(t,i){return!t||t instanceof P?t:new P(t,i)}function T(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function z(t,i){return t instanceof T?t:new T(t,i)}function M(t,i,e){if(isNaN(t)||isNaN(i))throw new Error("Invalid LatLng object: ("+t+", "+i+")");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function C(t,i,e){return t instanceof M?t:ei(t)&&"object"!=typeof t[0]?3===t.length?new M(t[0],t[1],t[2]):2===t.length?new M(t[0],t[1]):null:void 0===t||null===t?t:"object"==typeof t&&"lat"in t?new M(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===i?null:new M(t,i,e)}function Z(t,i,e,n){if(ei(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function S(t,i,e,n){return new Z(t,i,e,n)}function E(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function k(t,i){var e,n,o,s,r,a,h="";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)a=r[n],h+=(n?"L":"M")+a.x+" "+a.y;h+=i?Xi?"z":"x":""}return h||"M0 0"}function A(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}function I(t,i,e,n){return"touchstart"===i?O(t,e,n):"touchmove"===i?W(t,e,n):"touchend"===i&&H(t,e,n),this}function B(t,i,e){var n=t["_leaflet_"+i+e];return"touchstart"===i?t.removeEventListener(Qi,n,!1):"touchmove"===i?t.removeEventListener(te,n,!1):"touchend"===i&&(t.removeEventListener(ie,n,!1),t.removeEventListener(ee,n,!1)),this}function O(t,i,n){var o=e(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(ne.indexOf(t.target.tagName)<0))return;$(t)}j(t,i)});t["_leaflet_touchstart"+n]=o,t.addEventListener(Qi,o,!1),se||(document.documentElement.addEventListener(Qi,R,!0),document.documentElement.addEventListener(te,D,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,N,!0),se=!0)}function R(t){oe[t.pointerId]=t,re++}function D(t){oe[t.pointerId]&&(oe[t.pointerId]=t)}function N(t){delete oe[t.pointerId],re--}function j(t,i){t.touches=[];for(var e in oe)t.touches.push(oe[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&j(t,i)};t["_leaflet_touchmove"+e]=n,t.addEventListener(te,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t["_leaflet_touchend"+e]=n,t.addEventListener(ie,n,!1),t.addEventListener(ee,n,!1)}function F(t,i,e){function n(t){var i;if(Ui){if(!Pi||"mouse"===t.pointerType)return;i=re}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Ui){if(!Pi||"mouse"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type="dblclick",i(r),s=null}}var s,r,a=!1,h=250;return t[ue+ae+e]=n,t[ue+he+e]=o,t[ue+"dblclick"+e]=i,t.addEventListener(ae,n,!1),t.addEventListener(he,o,!1),t.addEventListener("dblclick",i,!1),this}function U(t,i){var e=t[ue+ae+i],n=t[ue+he+i],o=t[ue+"dblclick"+i];return t.removeEventListener(ae,e,!1),t.removeEventListener(he,n,!1),Pi||t.removeEventListener("dblclick",o,!1),this}function V(t,i,e,n){if("object"==typeof i)for(var o in i)G(t,o,i[o],e);else for(var s=0,r=(i=u(i)).length;s<r;s++)G(t,i[s],e,n);return this}function q(t,i,e,n){if("object"==typeof i)for(var o in i)K(t,o,i[o],e);else if(i)for(var s=0,r=(i=u(i)).length;s<r;s++)K(t,i[s],e,n);else{for(var a in t[le])K(t,a,t[le][a]);delete t[le]}return this}function G(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):"");if(t[le]&&t[le][s])return this;var r=function(i){return e.call(o||t,i||window.event)},a=r;Ui&&0===i.indexOf("touch")?I(t,i,r,s):!Vi||"dblclick"!==i||!F||Ui&&Si?"addEventListener"in t?"mousewheel"===i?t.addEventListener("onwheel"in t?"wheel":"mousewheel",r,!1):"mouseenter"===i||"mouseleave"===i?(r=function(i){i=i||window.event,ot(t,i)&&a(i)},t.addEventListener("mouseenter"===i?"mouseover":"mouseout",r,!1)):("click"===i&&Ti&&(r=function(t){st(t,a)}),t.addEventListener(i,r,!1)):"attachEvent"in t&&t.attachEvent("on"+i,r):F(t,r,s),t[le]=t[le]||{},t[le][s]=r}function K(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):""),r=t[le]&&t[le][s];if(!r)return this;Ui&&0===i.indexOf("touch")?B(t,i,s):!Vi||"dblclick"!==i||!U||Ui&&Si?"removeEventListener"in t?"mousewheel"===i?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",r,!1):t.removeEventListener("mouseenter"===i?"mouseover":"mouseleave"===i?"mouseout":i,r,!1):"detachEvent"in t&&t.detachEvent("on"+i,r):U(t,s),t[le][s]=null}function Y(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,nt(t),this}function X(t){return G(t,"mousewheel",Y),this}function J(t){return V(t,"mousedown touchstart dblclick",Y),G(t,"click",et),this}function $(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Q(t){return $(t),Y(t),this}function tt(t,i){if(!i)return new x(t.clientX,t.clientY);var e=i.getBoundingClientRect(),n=e.width/i.offsetWidth||1,o=e.height/i.offsetHeight||1;return new x(t.clientX/n-e.left-i.clientLeft,t.clientY/o-e.top-i.clientTop)}function it(t){return Pi?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/ce:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function et(t){_e[t.type]=!0}function nt(t){var i=_e[t.type];return _e[t.type]=!1,i}function ot(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}function st(t,i){var e=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,n=pi&&e-pi;n&&n>100&&n<500||t.target._simulatedClick&&!t._simulated?Q(t):(pi=e,i(t))}function rt(t){return"string"==typeof t?document.getElementById(t):t}function at(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function ht(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function ut(t){var i=t.parentNode;i&&i.removeChild(t)}function lt(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function ct(t){var i=t.parentNode;i.lastChild!==t&&i.appendChild(t)}function _t(t){var i=t.parentNode;i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function dt(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=gt(t);return e.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function pt(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;n<o;n++)t.classList.add(e[n]);else if(!dt(t,i)){var s=gt(t);ft(t,(s?s+" ":"")+i)}}function mt(t,i){void 0!==t.classList?t.classList.remove(i):ft(t,h((" "+gt(t)+" ").replace(" "+i+" "," ")))}function ft(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function gt(t){return void 0===t.className.baseVal?t.className:t.className.baseVal}function vt(t,i){"opacity"in t.style?t.style.opacity=i:"filter"in t.style&&yt(t,i)}function yt(t,i){var e=!1,n="DXImageTransform.Microsoft.Alpha";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=" progid:"+n+"(opacity="+i+")"}function xt(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function wt(t,i,e){var n=i||new x(0,0);t.style[pe]=(Oi?"translate("+n.x+"px,"+n.y+"px)":"translate3d("+n.x+"px,"+n.y+"px,0)")+(e?" scale("+e+")":"")}function Lt(t,i){t._leaflet_pos=i,Ni?wt(t,i):(t.style.left=i.x+"px",t.style.top=i.y+"px")}function Pt(t){return t._leaflet_pos||new x(0,0)}function bt(){V(window,"dragstart",$)}function Tt(){q(window,"dragstart",$)}function zt(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Mt(),ve=t,ye=t.style.outline,t.style.outline="none",V(window,"keydown",Mt))}function Mt(){ve&&(ve.style.outline=ye,ve=void 0,ye=void 0,q(window,"keydown",Mt))}function Ct(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=kt(t,e),t=St(t,e)}function Zt(t,i,e){return Math.sqrt(Rt(t,i,e,!0))}function St(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(e);n[0]=n[e-1]=1,Et(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}function Et(t,i,e,n,o){var s,r,a,h=0;for(r=n+1;r<=o-1;r++)(a=Rt(t[r],t[n],t[o],!0))>h&&(s=r,h=a);h>e&&(i[s]=1,Et(t,i,e,n,s),Et(t,i,e,s,o))}function kt(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;n<s;n++)Ot(t[n],t[o])>i&&(e.push(t[n]),o=n);return o<s-1&&e.push(t[s-1]),e}function At(t,i,e,n,o){var s,r,a,h=n?Se:Bt(t,e),u=Bt(i,e);for(Se=u;;){if(!(h|u))return[t,i];if(h&u)return!1;a=Bt(r=It(t,i,s=h||u,e,o),e),s===h?(t=r,h=a):(i=r,u=a)}}function It(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,u=n.min,l=n.max;return 8&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&e?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&e&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new x(s,r,o)}function Bt(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.max.y&&(e|=8),e}function Ot(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Rt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function Dt(t){return!ei(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Nt(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),Dt(t)}function jt(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o<u;o++)t[o]._code=Bt(t[o],i);for(r=0;r<4;r++){for(l=_[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=It(h,a,l,i,e))._code=Bt(c,i),n.push(c)):(h._code&l&&((c=It(h,a,l,i,e))._code=Bt(c,i),n.push(c)),n.push(a));t=n}return t}function Wt(t,i){var e,n,o,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=i&&i.pointToLayer,l=i&&i.coordsToLatLng||Ht;if(!a&&!r)return null;switch(r.type){case"Point":return e=l(a),u?u(t,e):new Xe(e);case"MultiPoint":for(o=0,s=a.length;o<s;o++)e=l(a[o]),h.push(u?u(t,e):new Xe(e));return new qe(h);case"LineString":case"MultiLineString":return n=Ft(a,"LineString"===r.type?0:1,l),new tn(n,i);case"Polygon":case"MultiPolygon":return n=Ft(a,"Polygon"===r.type?1:2,l),new en(n,i);case"GeometryCollection":for(o=0,s=r.geometries.length;o<s;o++){var c=Wt({geometry:r.geometries[o],type:"Feature",properties:t.properties},i);c&&h.push(c)}return new qe(h);default:throw new Error("Invalid GeoJSON object.")}}function Ht(t){return new M(t[1],t[0],t[2])}function Ft(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?Ft(t[s],i-1,e):(e||Ht)(t[s]),o.push(n);return o}function Ut(t,i){return i="number"==typeof i?i:6,void 0!==t.alt?[a(t.lng,i),a(t.lat,i),a(t.alt,i)]:[a(t.lng,i),a(t.lat,i)]}function Vt(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?Vt(t[s],i-1,e,n):Ut(t[s],n));return!i&&e&&o.push(o[0]),o}function qt(t,e){return t.feature?i({},t.feature,{geometry:e}):Gt(e)}function Gt(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}function Kt(t,i){return new nn(t,i)}function Yt(t,i){return new dn(t,i)}function Xt(t){return Yi?new fn(t):null}function Jt(t){return Xi||Ji?new xn(t):null}var $t=Object.freeze;Object.freeze=function(t){return t};var Qt=Object.create||function(){function t(){}return function(i){return t.prototype=i,new t}}(),ti=0,ii=/\{ *([\w_-]+) *\}/g,ei=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},ni="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",oi=0,si=window.requestAnimationFrame||p("RequestAnimationFrame")||m,ri=window.cancelAnimationFrame||p("CancelAnimationFrame")||p("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)},ai=(Object.freeze||Object)({freeze:$t,extend:i,create:Qt,bind:e,lastId:ti,stamp:n,throttle:o,wrapNum:s,falseFn:r,formatNum:a,trim:h,splitWords:u,setOptions:l,getParamString:c,template:_,isArray:ei,indexOf:d,emptyImageUrl:ni,requestFn:si,cancelFn:ri,requestAnimFrame:f,cancelAnimFrame:g});v.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},n=e.__super__=this.prototype,o=Qt(n);o.constructor=e,e.prototype=o;for(var s in this)this.hasOwnProperty(s)&&"prototype"!==s&&"__super__"!==s&&(e[s]=this[s]);return t.statics&&(i(e,t.statics),delete t.statics),t.includes&&(y(t.includes),i.apply(null,[o].concat(t.includes)),delete t.includes),o.options&&(t.options=i(Qt(o.options),t.options)),i(o,t),o._initHooks=[],o.callInitHooks=function(){if(!this._initHooksCalled){n.callInitHooks&&n.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=o._initHooks.length;t<i;t++)o._initHooks[t].call(this)}},e},v.include=function(t){return i(this.prototype,t),this},v.mergeOptions=function(t){return i(this.prototype.options,t),this},v.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e="function"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var hi={on:function(t,i,e){if("object"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if("object"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var a=n[o];if(a.ctx===e&&a.fn===i)return a.fn=r,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=r;delete this._events[t]}},fire:function(t,e,n){if(!this.listens(t,n))return this;var o=i({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var h=s[r];h.fn.call(h.ctx||this,o)}this._firingCount--}}return n&&this._propagateEvent(o),this},listens:function(t,i){var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,n){if("object"==typeof t){for(var o in t)this.once(o,t[o],i);return this}var s=e(function(){this.off(t,i,n).off(t,s,n)},this);return this.on(t,i,n).on(t,s,n)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[n(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[n(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,i({layer:t.target,propagatedFrom:t.target},t),!0)}};hi.addEventListener=hi.on,hi.removeEventListener=hi.clearAllEventListeners=hi.off,hi.addOneTimeEventListener=hi.once,hi.fireEvent=hi.fire,hi.hasEventListeners=hi.listens;var ui=v.extend(hi),li=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=li(this.x),this.y=li(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+a(this.x)+", "+a(this.y)+")"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t="number"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.x<e.x,r=o.y>i.y&&n.y<e.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},T.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof M)i=t,e=t;else{if(!(t instanceof T))return t?this.extend(C(t)||z(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new M(i.lat,i.lng),this._northEast=new M(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,o=Math.abs(i.lng-e.lng)*t;return new T(new M(i.lat-n,i.lng-o),new M(e.lat+n,e.lng+o))},getCenter:function(){return new M((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new M(this.getNorth(),this.getWest())},getSouthEast:function(){return new M(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof M||"lat"in t?C(t):z(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof T?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lat<e.lat,r=o.lng>i.lng&&n.lng<e.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,i){return!!t&&(t=z(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}},M.prototype={equals:function(t,i){return!!t&&(t=C(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return"LatLng("+a(this.lat,t)+", "+a(this.lng,t)+")"},distanceTo:function(t){return _i.distance(this,C(t))},wrap:function(){return _i.wrapLatLng(this)},toBounds:function(t){var i=180*t/40075017,e=i/Math.cos(Math.PI/180*this.lat);return z([this.lat-i,this.lng-e],[this.lat+i,this.lng+e])},clone:function(){return new M(this.lat,this.lng,this.alt)}};var ci={latLngToPoint:function(t,i){var e=this.projection.project(t),n=this.scale(i);return this.transformation._transform(e,n)},pointToLatLng:function(t,i){var e=this.scale(i),n=this.transformation.untransform(t,e);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var i=this.projection.bounds,e=this.scale(t);return new P(this.transformation.transform(i.min,e),this.transformation.transform(i.max,e))},infinite:!1,wrapLatLng:function(t){var i=this.wrapLng?s(t.lng,this.wrapLng,!0):t.lng;return new M(this.wrapLat?s(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,o=i.lng-e.lng;if(0===n&&0===o)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new T(new M(s.lat-n,s.lng-o),new M(r.lat-n,r.lng-o))}},_i=i({},ci,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),r=Math.sin((i.lng-t.lng)*e/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),di={R:6378137,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,n=Math.max(Math.min(e,t.lat),-e),o=Math.sin(n*i);return new x(this.R*t.lng*i,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var i=180/Math.PI;return new M((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:function(){var t=6378137*Math.PI;return new P([-t,-t],[t,t])}()};Z.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return i=i||1,t.x=i*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return i=i||1,new x((t.x/i-this._b)/this._a,(t.y/i-this._d)/this._c)}};var pi,mi,fi,gi,vi=i({},_i,{code:"EPSG:3857",projection:di,transformation:function(){var t=.5/(Math.PI*di.R);return S(t,.5,-t,.5)}()}),yi=i({},vi,{code:"EPSG:900913"}),xi=document.documentElement.style,wi="ActiveXObject"in window,Li=wi&&!document.addEventListener,Pi="msLaunchUri"in navigator&&!("documentMode"in document),bi=A("webkit"),Ti=A("android"),zi=A("android 2")||A("android 3"),Mi=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),Ci=Ti&&A("Google")&&Mi<537&&!("AudioNode"in window),Zi=!!window.opera,Si=A("chrome"),Ei=A("gecko")&&!bi&&!Zi&&!wi,ki=!Si&&A("safari"),Ai=A("phantom"),Ii="OTransition"in xi,Bi=0===navigator.platform.indexOf("Win"),Oi=wi&&"transition"in xi,Ri="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!zi,Di="MozPerspective"in xi,Ni=!window.L_DISABLE_3D&&(Oi||Ri||Di)&&!Ii&&!Ai,ji="undefined"!=typeof orientation||A("mobile"),Wi=ji&&bi,Hi=ji&&Ri,Fi=!window.PointerEvent&&window.MSPointerEvent,Ui=!(!window.PointerEvent&&!Fi),Vi=!window.L_NO_TOUCH&&(Ui||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),qi=ji&&Zi,Gi=ji&&Ei,Ki=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Yi=!!document.createElement("canvas").getContext,Xi=!(!document.createElementNS||!E("svg").createSVGRect),Ji=!Xi&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}(),$i=(Object.freeze||Object)({ie:wi,ielt9:Li,edge:Pi,webkit:bi,android:Ti,android23:zi,androidStock:Ci,opera:Zi,chrome:Si,gecko:Ei,safari:ki,phantom:Ai,opera12:Ii,win:Bi,ie3d:Oi,webkit3d:Ri,gecko3d:Di,any3d:Ni,mobile:ji,mobileWebkit:Wi,mobileWebkit3d:Hi,msPointer:Fi,pointer:Ui,touch:Vi,mobileOpera:qi,mobileGecko:Gi,retina:Ki,canvas:Yi,svg:Xi,vml:Ji}),Qi=Fi?"MSPointerDown":"pointerdown",te=Fi?"MSPointerMove":"pointermove",ie=Fi?"MSPointerUp":"pointerup",ee=Fi?"MSPointerCancel":"pointercancel",ne=["INPUT","SELECT","OPTION"],oe={},se=!1,re=0,ae=Fi?"MSPointerDown":Ui?"pointerdown":"touchstart",he=Fi?"MSPointerUp":Ui?"pointerup":"touchend",ue="_leaflet_",le="_leaflet_events",ce=Bi&&Si?2*window.devicePixelRatio:Ei?window.devicePixelRatio:1,_e={},de=(Object.freeze||Object)({on:V,off:q,stopPropagation:Y,disableScrollPropagation:X,disableClickPropagation:J,preventDefault:$,stop:Q,getMousePosition:tt,getWheelDelta:it,fakeStop:et,skipped:nt,isExternalTarget:ot,addListener:V,removeListener:q}),pe=xt(["transform","WebkitTransform","OTransform","MozTransform","msTransform"]),me=xt(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),fe="webkitTransition"===me||"OTransition"===me?me+"End":"transitionend";if("onselectstart"in document)mi=function(){V(window,"selectstart",$)},fi=function(){q(window,"selectstart",$)};else{var ge=xt(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);mi=function(){if(ge){var t=document.documentElement.style;gi=t[ge],t[ge]="none"}},fi=function(){ge&&(document.documentElement.style[ge]=gi,gi=void 0)}}var ve,ye,xe=(Object.freeze||Object)({TRANSFORM:pe,TRANSITION:me,TRANSITION_END:fe,get:rt,getStyle:at,create:ht,remove:ut,empty:lt,toFront:ct,toBack:_t,hasClass:dt,addClass:pt,removeClass:mt,setClass:ft,getClass:gt,setOpacity:vt,testProp:xt,setTransform:wt,setPosition:Lt,getPosition:Pt,disableTextSelection:mi,enableTextSelection:fi,disableImageDrag:bt,enableImageDrag:Tt,preventOutline:zt,restoreOutline:Mt}),we=ui.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Pt(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){var e=this._startPos.add(this._offset.multiplyBy(t));i&&e._round(),Lt(this._el,e),this.fire("step")},_complete:function(){g(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),Le=ui.extend({options:{crs:vi,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,i){i=l(this,i),this._initContainer(t),this._initLayout(),this._onResize=e(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(C(i.center),i.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this.callInitHooks(),this._zoomAnimated=me&&Ni&&!qi&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),V(this._proxy,fe,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,n){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(C(t),e,this.options.maxBounds),n=n||{},this._stop(),this._loaded&&!n.reset&&!0!==n&&(void 0!==n.animate&&(n.zoom=i({animate:n.animate},n.zoom),n.pan=i({animate:n.animate,duration:n.duration},n.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),s=(t instanceof x?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():z(t);var e=w(i.paddingTopLeft||i.padding||[0,0]),n=w(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o="number"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(e).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,i){if(!(t=z(t)).isValid())throw new Error("Bounds are not valid.");var e=this._getBoundsCenterZoom(t,i);return this.setView(e.center,e.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){if(t=w(t).round(),i=i||{},!t.x&&!t.y)return this.fire("moveend");if(!0!==i.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new we,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire("movestart"),!1!==i.animate){pt(this._mapPane,"leaflet-pan-anim");var e=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(t,i,e){function n(t){var i=(g*g-m*m+(t?-1:1)*x*x*v*v)/(2*(t?g:m)*x*v),e=Math.sqrt(i*i+1)-i;return e<1e-9?-18:Math.log(e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function s(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/s(t)}function a(t){return m*(s(w)/s(w+y*t))}function h(t){return m*(s(w)*r(w+y*t)-o(w))/x}function u(t){return 1-Math.pow(1-t,1.5)}function l(){var e=(Date.now()-L)/b,n=u(e)*P;e<=1?(this._flyToFrame=f(l,this),this._move(this.unproject(c.add(_.subtract(c).multiplyBy(h(n)/v)),p),this.getScaleZoom(m/a(n),p),{flyTo:!0})):this._move(t,i)._moveEnd(!0)}if(!1===(e=e||{}).animate||!Ni)return this.setView(t,i,e);this._stop();var c=this.project(this.getCenter()),_=this.project(t),d=this.getSize(),p=this._zoom;t=C(t),i=void 0===i?p:i;var m=Math.max(d.x,d.y),g=m*this.getZoomScale(p,i),v=_.distanceTo(c)||1,y=1.42,x=y*y,w=n(0),L=Date.now(),P=(n(1)-w)/y,b=e.duration?1e3*e.duration:1e3*P*.8;return this._moveStart(!0,e.noMoveStart),l.call(this),this},flyToBounds:function(t,i){var e=this._getBoundsCenterZoom(t,i);return this.flyTo(e.center,e.zoom,i)},setMaxBounds:function(t){return(t=z(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ut(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this._loaded&&this.fire("unload");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)ut(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=ht("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=Ni?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return tt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=rt(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");V(i,"scroll",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Ni,pt(t,"leaflet-container"+(Vi?" leaflet-touch":"")+(Ki?" leaflet-retina":"")+(Li?" leaflet-oldie":"")+(ki?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=at(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Lt(this._mapPane,new x(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(pt(t.markerPane,"leaflet-zoom-hide"),pt(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i){Lt(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire("viewreset"),e&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Lt(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?q:V;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),Ni&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s="mouseout"===i||"mouseover"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&("click"===i||"preclick"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!ot(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!ot(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!nt(t)){var i=t.type;"mousedown"!==i&&"keypress"!==i||zt(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,n){if("click"===t.type){var o=i({},t);o.type="preclick",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];"contextmenu"===e&&s.listens(e,!0)&&$(t);var r={originalEvent:t};if("keypress"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h<n.length;h++)if(n[h].fire(e,r,!0),r.originalEvent._stopped||!1===n[h].options.bubblingMouseEvents&&-1!==d(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on("load",t,i),this},_getMapPanePos:function(){return Pt(this._mapPane)||new x(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return b([this.project(t.getSouthWest(),i)._subtract(n),this.project(t.getNorthWest(),i)._subtract(n),this.project(t.getSouthEast(),i)._subtract(n),this.project(t.getNorthEast(),i)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),s=new P(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,e,i);return r.round().equals([0,0])?t:this.unproject(n.add(r),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),n=new P(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(n,i))},_getBoundsOffset:function(t,i,e){var n=b(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new x(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,i){return t+i>0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=Ni?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){mt(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=ht("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=pe,e=this._proxy.style[i];wt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var t=this.getCenter(),i=this.getZoom();wt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ut(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,pt(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&mt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Pe=v.extend({options:{position:"topright"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return pt(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(ut(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),be=function(t){return new Pe(t)};Le.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+" "+e+o;i[t+o]=ht("div",s,n)}var i=this._controlCorners={},e="leaflet-",n=this._controlContainer=ht("div",e+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ut(this._controlCorners[t]);ut(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Te=Pe.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e<n?-1:n<e?1:0}},initialize:function(t,i,e){l(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on("zoomend",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return Pe.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var i=this._getLayer(n(t));return i&&this._layers.splice(this._layers.indexOf(i),1),this._map?this._update():this},expand:function(){pt(this._container,"leaflet-control-layers-expanded"),this._form.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._form.clientHeight?(pt(this._form,"leaflet-control-layers-scrollbar"),this._form.style.height=t+"px"):mt(this._form,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return mt(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",i=this._container=ht("div",t),e=this.options.collapsed;i.setAttribute("aria-haspopup",!0),J(i),X(i);var n=this._form=ht("form",t+"-list");e&&(this._map.on("click",this.collapse,this),Ti||V(i,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=ht("a",t+"-toggle",i);o.href="#",o.title="Layers",Vi?(V(o,"click",Q),V(o,"click",this.expand,this)):V(o,"focus",this.expand,this),e||this.expand(),this._baseLayersList=ht("div",t+"-base",n),this._separator=ht("div",t+"-separator",n),this._overlaysList=ht("div",t+"-overlays",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&n(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,n){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:n}),this.options.sortLayers&&this._layers.sort(e(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;lt(this._baseLayersList),lt(this._overlaysList),this._layerControlInputs=[];var t,i,e,n,o=0;for(e=0;e<this._layers.length;e++)n=this._layers[e],this._addItem(n),i=i||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&o>1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(i?' checked="checked"':"")+"/>",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=o):i=this._createRadioElement("leaflet-base-layers",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),V(i,"click",this._onInputClick,this);var s=document.createElement("span");s.innerHTML=" "+t.name;var r=document.createElement("div");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;o>=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ze=Pe.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"&#x2212;",zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=ht("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=ht("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),J(s),V(s,"click",Q),V(s,"click",o,this),V(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";mt(this._zoomInButton,i),mt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&pt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&pt(this._zoomInButton,i)}});Le.mergeOptions({zoomControl:!0}),Le.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new ze,this.addControl(this.zoomControl))});var Me=Pe.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=ht("div","leaflet-control-scale"),e=this.options;return this._addScales(e,"leaflet-control-scale-line",i),t.on(e.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=ht("div",i,e)),t.imperial&&(this._iScale=ht("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ce=Pe.extend({options:{position:"bottomright",prefix:'<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=ht("div","leaflet-control-attribution"),J(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(" | ")}}});Le.mergeOptions({attributionControl:!0}),Le.addInitHook(function(){this.options.attributionControl&&(new Ce).addTo(this)});Pe.Layers=Te,Pe.Zoom=ze,Pe.Scale=Me,Pe.Attribution=Ce,be.layers=function(t,i,e){return new Te(t,i,e)},be.zoom=function(t){return new ze(t)},be.scale=function(t){return new Me(t)},be.attribution=function(t){return new Ce(t)};var Ze=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ze.addTo=function(t,i){return t.addHandler(i,this),this};var Se,Ee={Events:hi},ke=Vi?"touchstart mousedown":"mousedown",Ae={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},Ie={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},Be=ui.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(V(this._dragStartTarget,ke,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Be._dragging===this&&this.finishDrag(),q(this._dragStartTarget,ke,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!dt(this._element,"leaflet-zoom-anim")&&!(Be._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Be._dragging=this,this._preventOutline&&zt(this._element),bt(),mi(),this._moving)))){this.fire("down");var i=t.touches?t.touches[0]:t;this._startPoint=new x(i.clientX,i.clientY),V(document,Ie[t.type],this._onMove,this),V(document,Ae[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY).subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)<this.options.clickTolerance||($(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=Pt(this._element).subtract(e),pt(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),pt(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(e),this._moving=!0,g(this._animRequest),this._lastEvent=t,this._animRequest=f(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),Lt(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){mt(document.body,"leaflet-dragging"),this._lastTarget&&(mt(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in Ie)q(document,Ie[t],this._onMove,this),q(document,Ae[t],this._onUp,this);Tt(),fi(),this._moved&&this._moving&&(g(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,Be._dragging=!1}}),Oe=(Object.freeze||Object)({simplify:Ct,pointToSegmentDistance:Zt,closestPointOnSegment:function(t,i,e){return Rt(t,i,e)},clipSegment:At,_getEdgeIntersection:It,_getBitCode:Bt,_sqClosestPointOnSegment:Rt,isFlat:Dt,_flat:Nt}),Re=(Object.freeze||Object)({clipPolygon:jt}),De={project:function(t){return new x(t.lng,t.lat)},unproject:function(t){return new M(t.y,t.x)},bounds:new P([-180,-90],[180,90])},Ne={R:6378137,R_MINOR:6356752.314245179,bounds:new P([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new x(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,u=.1;h<15&&Math.abs(u)>1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},je=(Object.freeze||Object)({LonLat:De,Mercator:Ne,SphericalMercator:di}),We=i({},_i,{code:"EPSG:3395",projection:Ne,transformation:function(){var t=.5/(Math.PI*Ne.R);return S(t,.5,-t,.5)}()}),He=i({},_i,{code:"EPSG:4326",projection:De,transformation:S(1/180,1,-1/180,.5)}),Fe=i({},ci,{projection:De,transformation:S(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});ci.Earth=_i,ci.EPSG3395=We,ci.EPSG3857=vi,ci.EPSG900913=yi,ci.EPSG4326=He,ci.Simple=Fe;var Ue=ui.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),i.fire("layeradd",{layer:this})}}});Le.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?ei(t)?t:[t]:[]).length;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[n(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var i=n(t);this._zoomBoundLayers[i]&&(delete this._zoomBoundLayers[i],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,i=-1/0,e=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),i=void 0===o.maxZoom?i:Math.max(i,o.maxZoom)}this._layersMaxZoom=i===-1/0?void 0:i,this._layersMinZoom=t===1/0?void 0:t,e!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Ve=Ue.extend({initialize:function(t,i){l(this,i),this._layers={};var e,n;if(t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var i=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[i]&&this._map.removeLayer(this._layers[i]),delete this._layers[i],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return n(t)}}),qe=Ve.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Ve.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Ve.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new T;for(var i in this._layers){var e=this._layers[i];t.extend(e.getBounds?e.getBounds():e.getLatLng())}return t}}),Ge=v.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){l(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n=this._createImg(e,i&&"IMG"===i.tagName?i:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,i){var e=this.options,n=e[i+"Size"];"number"==typeof n&&(n=[n,n]);var o=w(n),s=w("shadow"===i&&e.shadowAnchor||e.iconAnchor||o&&o.divideBy(2,!0));t.className="leaflet-marker-"+i+" "+(e.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),o&&(t.style.width=o.x+"px",t.style.height=o.y+"px")},_createImg:function(t,i){return i=i||document.createElement("img"),i.src=t,i},_getIconUrl:function(t){return Ki&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}}),Ke=Ge.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Ke.imagePath||(Ke.imagePath=this._detectIconPath()),(this.options.imagePath||Ke.imagePath)+Ge.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=ht("div","leaflet-default-icon-path",document.body),i=at(t,"background-image")||at(t,"backgroundImage");return document.body.removeChild(t),i=null===i||0!==i.indexOf("url")?"":i.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Ye=Ze.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new Be(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),pt(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&mt(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=L.DomUtil.getPosition(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),h=b(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=w((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);e.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),L.DomUtil.setPosition(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=f(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&(g(this._panRequest),this._panRequest=f(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=Pt(i._icon),o=i._map.layerPointToLatLng(n);e&&Lt(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire("move",t).fire("drag",t)},_onDragEnd:function(t){g(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),Xe=Ue.extend({options:{icon:new Ke,interactive:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",bubblingMouseEvents:!1},initialize:function(t,i){l(this,i),this._latlng=C(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var i=this._latlng;return this._latlng=C(t),this.update(),this.fire("move",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,i="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),e=t.icon.createIcon(this._icon),n=!1;e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),"IMG"===e.tagName&&(e.alt=t.alt||"")),pt(e,i),t.keyboard&&(e.tabIndex="0"),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(pt(o,i),o.alt=""),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane("shadowPane").appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ut(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ut(this._shadow),this._shadow=null},_setPos:function(t){Lt(this._icon,t),this._shadow&&Lt(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(i)},_initInteraction:function(){if(this.options.interactive&&(pt(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Ye)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Ye(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;vt(this._icon,t),this._shadow&&vt(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}}),Je=Ue.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return l(this,t),this._renderer&&this._renderer._updateStyle(this),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),$e=Je.extend({options:{fill:!0,radius:10},initialize:function(t,i){l(this,i),this._latlng=C(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=C(t),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var i=t&&t.radius||this._radius;return Je.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),n=[t+e,i+e];this._pxBounds=new P(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}}),Qe=$e.extend({initialize:function(t,e,n){if("number"==typeof e&&(e=i({},n,{radius:e})),l(this,e),this._latlng=C(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new T(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Je.prototype.setStyle,_project:function(){var t=this._latlng.lng,i=this._latlng.lat,e=this._map,n=e.options.crs;if(n.distance===_i.distance){var o=Math.PI/180,s=this._mRadius/_i.R/o,r=e.project([i+s,t]),a=e.project([i-s,t]),h=r.add(a).divideBy(2),u=e.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(i*o)*Math.sin(u*o))/(Math.cos(i*o)*Math.cos(u*o)))/o;(isNaN(l)||0===l)&&(l=s/Math.cos(Math.PI/180*i)),this._point=h.subtract(e.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-e.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(c).x}this._updateBounds()}}),tn=Je.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){l(this,i),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var i,e,n=1/0,o=null,s=Rt,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,i=h[u-1],e=h[u],!0);c<n&&(n=c,o=s(t,i,e))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(t=0,i=0;t<h-1;t++)i+=a[t].distanceTo(a[t+1])/2;if(0===i)return this._map.layerPointToLatLng(a[0]);for(t=0,n=0;t<h-1;t++)if(o=a[t],s=a[t+1],e=o.distanceTo(s),(n+=e)>i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return Dt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=Dt(t),n=0,o=t.length;n<o;n++)e?(i[n]=C(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new P;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t);var i=this._clickTolerance(),e=new x(i,i);this._bounds.isValid()&&t.isValid()&&(t.min._subtract(e),t.max._add(e),this._pxBounds=t)},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof M,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var i,e,n,o,s,r,a,h=this._parts;for(i=0,n=0,o=this._rings.length;i<o;i++)for(e=0,s=(a=this._rings[i]).length;e<s-1;e++)(r=At(a[e],a[e+1],t,e,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[e+1]&&e!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=Ct(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&Zt(t,a[o],a[n])<=h)return!0;return!1}});tn._flat=Nt;var en=tn.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,i=l-1;t<l;i=t++)e=u[t],n=u[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var i=tn.prototype._convertLatLngs.call(this,t),e=i.length;return e>=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){tn.prototype._setLatLngs.call(this,t),Dt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Dt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;o<s;o++)(n=jt(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,u=!1;if(!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>t.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||tn.prototype._containsPoint.call(this,t,!0)}}),nn=qe.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=ei(t)?t:t.features;if(o){for(i=0,e=o.length;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=Wt(t,s);return r?(r.feature=Gt(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=i({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer(function(i){this._setLayerStyle(i,t)},this)},_setLayerStyle:function(t,i){"function"==typeof i&&(i=i(t.feature)),t.setStyle&&t.setStyle(i)}}),on={toGeoJSON:function(t){return qt(this,{type:"Point",coordinates:Ut(this.getLatLng(),t)})}};Xe.include(on),Qe.include(on),$e.include(on),tn.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=Vt(this._latlngs,i?1:0,!1,t);return qt(this,{type:(i?"Multi":"")+"LineString",coordinates:e})}}),en.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=i&&!Dt(this._latlngs[0]),n=Vt(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),qt(this,{type:(e?"Multi":"")+"Polygon",coordinates:n})}}),Ve.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(e){i.push(e.toGeoJSON(t).geometry.coordinates)}),qt(this,{type:"MultiPoint",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===i)return this.toMultiPoint(t);var e="GeometryCollection"===i,n=[];return this.eachLayer(function(i){if(i.toGeoJSON){var o=i.toGeoJSON(t);if(e)n.push(o.geometry);else{var s=Gt(o);"FeatureCollection"===s.type?n.push.apply(n,s.features):n.push(s)}}}),e?qt(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}});var sn=Kt,rn=Ue.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,e){this._url=t,this._bounds=z(i),l(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(pt(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ut(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&ct(this._image),this},bringToBack:function(){return this._map&&_t(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=z(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,i=this._image=t?this._url:ht("img");pt(i,"leaflet-image-layer"),this._zoomAnimated&&pt(i,"leaflet-zoom-animated"),this.options.className&&pt(i,this.options.className),i.onselectstart=r,i.onmousemove=r,i.onload=e(this.fire,this,"load"),i.onerror=e(this._overlayOnError,this,"error"),this.options.crossOrigin&&(i.crossOrigin=""),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;wt(this._image,e,i)},_reset:function(){var t=this._image,i=new P(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();Lt(t,i.min),t.style.width=e.x+"px",t.style.height=e.y+"px"},_updateOpacity:function(){vt(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),an=rn.extend({options:{autoplay:!0,loop:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,i=this._image=t?this._url:ht("video");if(pt(i,"leaflet-image-layer"),this._zoomAnimated&&pt(i,"leaflet-zoom-animated"),i.onselectstart=r,i.onmousemove=r,i.onloadeddata=e(this.fire,this,"load"),t){for(var n=i.getElementsByTagName("source"),o=[],s=0;s<n.length;s++)o.push(n[s].src);this._url=n.length>0?o:[i.src]}else{ei(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;a<this._url.length;a++){var h=ht("source");h.src=this._url[a],i.appendChild(h)}}}}),hn=Ue.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,i){l(this,t),this._source=i},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&vt(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&vt(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(vt(this._container,0),this._removeTimeout=setTimeout(e(ut,void 0,this._container),200)):ut(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=C(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&ct(this._container),this},bringToBack:function(){return this._map&&_t(this._container),this},_updateContent:function(){if(this._content){var t=this._contentNode,i="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),i=w(this.options.offset),e=this._getAnchor();this._zoomAnimated?Lt(this._container,t.add(e)):i=i.add(t).add(e);var n=this._containerBottom=-i.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+i.x;this._container.style.bottom=n+"px",this._container.style.left=o+"px"}},_getAnchor:function(){return[0,0]}}),un=hn.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){hn.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Je||this._source.on("preclick",Y))},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Je||this._source.off("preclick",Y))},getEvents:function(){var t=hn.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",i=this._container=ht("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),e=this._wrapper=ht("div",t+"-content-wrapper",i);if(this._contentNode=ht("div",t+"-content",e),J(e),X(this._contentNode),V(e,"contextmenu",Y),this._tipContainer=ht("div",t+"-tip-container",i),this._tip=ht("div",t+"-tip",this._tipContainer),this.options.closeButton){var n=this._closeButton=ht("a",t+"-close-button",i);n.href="#close",n.innerHTML="&#215;",V(n,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,i=t.style;i.width="",i.whiteSpace="nowrap";var e=t.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),i.width=e+1+"px",i.whiteSpace="",i.height="";var n=t.offsetHeight,o=this.options.maxHeight;o&&n>o?(i.height=o+"px",pt(t,"leaflet-popup-scrolled")):mt(t,"leaflet-popup-scrolled"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();Lt(this._container,i.add(e))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,i=parseInt(at(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(Pt(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire("autopanstart").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Q(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Le.mergeOptions({closePopupOnClick:!0}),Le.include({openPopup:function(t,i,e){return t instanceof un||(t=new un(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Ue.include({bindPopup:function(t,i){return t instanceof un?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new un(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Q(t),i instanceof Je?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var ln=hn.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){hn.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=hn.prototype.getEvents.call(this);return Vi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=ht("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();"top"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):"bottom"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):"center"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):"right"===s||"auto"===s&&o.x<n.x?(s="right",t=t.add(w(h.x+u.x,u.y-a/2+h.y,!0))):(s="left",t=t.subtract(w(r+u.x-h.x,a/2-u.y-h.y,!0))),mt(e,"leaflet-tooltip-right"),mt(e,"leaflet-tooltip-left"),mt(e,"leaflet-tooltip-top"),mt(e,"leaflet-tooltip-bottom"),pt(e,"leaflet-tooltip-"+s),Lt(e,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&vt(this._container,t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(i)},_getAnchor:function(){return w(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});Le.include({openTooltip:function(t,i,e){return t instanceof ln||(t=new ln(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),Ue.include({bindTooltip:function(t,i){return t instanceof ln?(l(t,i),this._tooltip=t,t._source=this):(this._tooltip&&!i||(this._tooltip=new ln(i,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var i=t?"off":"on",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),Vi&&(e.click=this._openTooltip)),this[i](e),this._tooltipHandlersAdded=!t}},openTooltip:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._tooltip&&this._map&&(this._tooltip._source=t,this._tooltip.update(),this._map.openTooltip(this._tooltip,i),this._tooltip.options.interactive&&this._tooltip._container&&(pt(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(mt(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var i=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(i,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var i,e,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(i=this._map.mouseEventToContainerPoint(t.originalEvent),e=this._map.containerPointToLayerPoint(i),n=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(n)}});var cn=Ge.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:document.createElement("div"),e=this.options;if(i.innerHTML=!1!==e.html?e.html:"",e.bgPos){var n=w(e.bgPos);i.style.backgroundPosition=-n.x+"px "+-n.y+"px"}return this._setIconStyles(i,"icon"),i},createShadow:function(){return null}});Ge.Default=Ke;var _n=Ue.extend({options:{tileSize:256,opacity:1,updateWhenIdle:ji,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){l(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ut(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(ct(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(_t(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=o(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof x?t:new x(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Li){vt(this._container,this.options.opacity);var t=+new Date,i=!1,e=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);vt(o.el,s),s<1?i=!0:(o.active?e=!0:this._onOpaqueTile(o),o.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),i&&(g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this))}},_onOpaqueTile:r,_initContainer:function(){this._container||(this._container=ht("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(ut(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=ht("div","leaflet-tile-container leaflet-zoom-animated",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n,n}},_onUpdateLevel:r,_onRemoveLevel:r,_onCreateLevel:r,_pruneTiles:function(){if(this._map){var t,i,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(i=this._tiles[t]).retain=i.current;for(t in this._tiles)if((i=this._tiles[t]).current&&!i.active){var n=i.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ut(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var o=Math.floor(t/2),s=Math.floor(i/2),r=e-1,a=new x(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?(u.retain=!0,!0):(u&&u.loaded&&(u.retain=!0),r>n&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){var i=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),i,i)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=this._clampZoom(Math.round(i));(void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom)&&(o=void 0);var s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();Ni?wt(t.el,o,n):Lt(t.el,o)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),n=i.getZoomScale(e,this._tileZoom),o=i.project(t,this._tileZoom).floor(),s=i.getSize().divideBy(2*n);return new P(o.subtract(s),o.add(s))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new P(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new x(l.x,l.y))||(this._tiles[u].current=!1)}if(Math.abs(e-this._tileZoom)>1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_<r.length;_++)this._addTile(r[_],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(Ci||i.el.setAttribute("src",ni),ut(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){pt(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&vt(t,this.options.opacity),Ti&&!zi&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),Lt(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire("tileloadstart",{tile:s,coords:t})},_tileReady:function(t,i,n){if(this._map){i&&this.fire("tileerror",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(vt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(pt(n.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),dn=_n.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Ki&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),Ti||this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement("img");return V(n,"load",e(this._tileOnLoad,this,i,n)),V(n,"error",e(this._tileOnError,this,i,n)),this.options.crossOrigin&&(n.crossOrigin=""),n.alt="",n.setAttribute("role","presentation"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Ki?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e["-y"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=ni,ut(i),delete this._tiles[t]))}}),pn=dn.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Ki?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,dn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===He?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=L.TileLayer.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});dn.WMS=pn,Yt.wms=function(t,i){return new pn(t,i)};var mn=Ue.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&pt(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=Pt(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);Ni?wt(this._container,a,e):Lt(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),fn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){mn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");V(t,"mousemove",o(this._onMouseMove,32,this),this),V(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),V(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){delete this._ctx,ut(this._container),q(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},mn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Ki?2:1;Lt(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Ki&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){mn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[L.stamp(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(t.options.dashArray){var i,e=t.options.dashArray.split(","),n=[];for(i=0;i<e.length;i++)n.push(Number(e[i]));t.options._dashArray=n}},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||f(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var i=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new P,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var i=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,i.x,i.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,i=this._redrawBounds;if(this._ctx.save(),i){var e=i.getSize();this._ctx.beginPath(),this._ctx.rect(i.min.x,i.min.y,e.x,e.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!i||t._pxBounds&&t._pxBounds.intersects(i))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(this._drawnLayers[t._leaflet_id]=t,h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?"lineTo":"moveTo"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;this._drawnLayers[t._leaflet_id]=t,1!==o&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!==o&&e.restore(),this._fillStroke(e,t)}},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||"evenodd")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&!this._map._draggableMoved(i)&&(e=i);e&&(et(t),this._fireEvent([e],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var i=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,i)}},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(mt(this._container,"leaflet-interactive"),this._fireEvent([i],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,i){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(pt(this._container,"leaflet-interactive"),this._fireEvent([n],t,"mouseover"),this._hoveredLayer=n)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i=t._order,e=i.next,n=i.prev;e&&(e.prev=n,n?n.next=e:e&&(this._drawFirst=e),i.prev=this._drawLast,this._drawLast.next=i,i.next=null,this._drawLast=i,this._requestRedraw(t))},_bringToBack:function(t){var i=t._order,e=i.next,n=i.prev;n&&(n.next=e,e?e.prev=n:n&&(this._drawLast=n),i.prev=null,i.next=this._drawFirst,this._drawFirst.prev=i,this._drawFirst=i,this._requestRedraw(t))}}),gn=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),vn={_initContainer:function(){this._container=ht("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(mn.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=gn("shape");pt(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=gn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ut(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=gn("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=ei(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=gn("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){ct(t._container)},_bringToBack:function(t){_t(t._container)}},yn=Ji?gn:E,xn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=yn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=yn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ut(this._container),q(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){mn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),Lt(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=yn("path");t.options.className&&pt(i,t.options.className),t.options.interactive&&pt(i,"leaflet-interactive"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ut(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){ct(t._path)},_bringToBack:function(t){_t(t._path)}});Ji&&xn.include(vn),Le.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this.options.preferCanvas&&Xt()||Jt()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=xn&&Jt({pane:t})||fn&&Xt({pane:t}),this._paneRenderers[t]=i),i}});var wn=en.extend({initialize:function(t,i){en.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});xn.create=yn,xn.pointsToPath=k,nn.geometryToLayer=Wt,nn.coordsToLatLng=Ht,nn.coordsToLatLngs=Ft,nn.latLngToCoords=Ut,nn.latLngsToCoords=Vt,nn.getFeature=qt,nn.asFeature=Gt,Le.mergeOptions({boxZoom:!0});var Ln=Ze.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){V(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){q(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ut(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),mi(),bt(),this._startPoint=this._map.mouseEventToContainerPoint(t),V(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ht("div","leaflet-zoom-box",this._container),pt(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();Lt(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(ut(this._box),mt(this._container,"leaflet-crosshair")),fi(),Tt(),q(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Le.addInitHook("addHandler","boxZoom",Ln),Le.mergeOptions({doubleClickZoom:!0});var Pn=Ze.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Le.addInitHook("addHandler","doubleClickZoom",Pn),Le.mergeOptions({dragging:!0,inertia:!zi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var bn=Ze.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Be(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}pt(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){mt(this._map._container,"leaflet-grab"),mt(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)<Math.abs(s+e)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var i=this._map,e=i.options,n=!e.inertia||this._times.length<2;if(i.fire("dragend",t),n)i.fire("moveend");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=e.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(e.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(e.inertiaDeceleration*r),_=l.multiplyBy(-c/2).round();_.x||_.y?(_=i._limitOffset(_,i.options.maxBounds),f(function(){i.panBy(_,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})})):i.fire("moveend")}}});Le.addInitHook("addHandler","dragging",bn),Le.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Tn=Ze.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),V(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),q(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,i=document.documentElement,e=t.scrollTop||i.scrollTop,n=t.scrollLeft||i.scrollLeft;this._map._container.focus(),window.scrollTo(n,e)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var i,e,n=this._panKeys={},o=this.keyCodes;for(i=0,e=o.left.length;i<e;i++)n[o.left[i]]=[-1*t,0];for(i=0,e=o.right.length;i<e;i++)n[o.right[i]]=[t,0];for(i=0,e=o.down.length;i<e;i++)n[o.down[i]]=[0,t];for(i=0,e=o.up.length;i<e;i++)n[o.up[i]]=[0,-1*t]},_setZoomDelta:function(t){var i,e,n=this._zoomKeys={},o=this.keyCodes;for(i=0,e=o.zoomIn.length;i<e;i++)n[o.zoomIn[i]]=t;for(i=0,e=o.zoomOut.length;i<e;i++)n[o.zoomOut[i]]=-t},_addHooks:function(){V(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){q(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys){if(n._panAnim&&n._panAnim._inProgress)return;i=this._panKeys[e],t.shiftKey&&(i=w(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds)}else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Q(t)}}});Le.addInitHook("addHandler","keyboard",Tn),Le.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var zn=Ze.extend({addHooks:function(){V(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){q(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=it(t),n=this._map.options.wheelDebounceTime;this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(n-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(e(this._performZoom,this),o),Q(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=e?Math.ceil(o/e)*e:o,r=t._limitZoom(i+(this._delta>0?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Le.addInitHook("addHandler","scrollWheelZoom",zn),Le.mergeOptions({tap:!0,tapTolerance:15});var Mn=Ze.extend({addHooks:function(){V(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){q(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if($(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&pt(n,"leaflet-active"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),this._simulateEvent("mousedown",i),V(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),q(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&"a"===e.tagName.toLowerCase()&&mt(e,"leaflet-active"),this._simulateEvent("mouseup",i),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent("mousemove",i)},_simulateEvent:function(t,i){var e=document.createEvent("MouseEvents");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});Vi&&!Ui&&Le.addInitHook("addHandler","tap",Mn),Le.mergeOptions({touchZoom:Vi&&!zi,bounceAtZoomLimits:!0});var Cn=Ze.extend({addHooks:function(){pt(this._map._container,"leaflet-touch-zoom"),V(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){mt(this._map._container,"leaflet-touch-zoom"),q(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),V(document,"touchmove",this._onTouchMove,this),V(document,"touchend",this._onTouchEnd,this),$(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoom<i.getMinZoom()&&s<1||this._zoom>i.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),$(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),q(document,"touchmove",this._onTouchMove),q(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Le.addInitHook("addHandler","touchZoom",Cn),Le.BoxZoom=Ln,Le.DoubleClickZoom=Pn,Le.Drag=bn,Le.Keyboard=Tn,Le.ScrollWheelZoom=zn,Le.Tap=Mn,Le.TouchZoom=Cn;var Zn=window.L;window.L=t,Object.freeze=$t,t.version="1.3.1+HEAD.ba6f97f",t.noConflict=function(){return window.L=Zn,this},t.Control=Pe,t.control=be,t.Browser=$i,t.Evented=ui,t.Mixin=Ee,t.Util=ai,t.Class=v,t.Handler=Ze,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=de,t.DomUtil=xe,t.PosAnimation=we,t.Draggable=Be,t.LineUtil=Oe,t.PolyUtil=Re,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=Z,t.transformation=S,t.Projection=je,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=ci,t.GeoJSON=nn,t.geoJSON=Kt,t.geoJson=sn,t.Layer=Ue,t.LayerGroup=Ve,t.layerGroup=function(t,i){return new Ve(t,i)},t.FeatureGroup=qe,t.featureGroup=function(t){return new qe(t)},t.ImageOverlay=rn,t.imageOverlay=function(t,i,e){return new rn(t,i,e)},t.VideoOverlay=an,t.videoOverlay=function(t,i,e){return new an(t,i,e)},t.DivOverlay=hn,t.Popup=un,t.popup=function(t,i){return new un(t,i)},t.Tooltip=ln,t.tooltip=function(t,i){return new ln(t,i)},t.Icon=Ge,t.icon=function(t){return new Ge(t)},t.DivIcon=cn,t.divIcon=function(t){return new cn(t)},t.Marker=Xe,t.marker=function(t,i){return new Xe(t,i)},t.TileLayer=dn,t.tileLayer=Yt,t.GridLayer=_n,t.gridLayer=function(t){return new _n(t)},t.SVG=xn,t.svg=Jt,t.Renderer=mn,t.Canvas=fn,t.canvas=Xt,t.Path=Je,t.CircleMarker=$e,t.circleMarker=function(t,i){return new $e(t,i)},t.Circle=Qe,t.circle=function(t,i,e){return new Qe(t,i,e)},t.Polyline=tn,t.polyline=function(t,i){return new tn(t,i)},t.Polygon=en,t.polygon=function(t,i){return new en(t,i)},t.Rectangle=wn,t.rectangle=function(t,i){return new wn(t,i)},t.Map=Le,t.map=function(t,i){return new Le(t,i)}});
\ No newline at end of file
+!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";var i=Object.freeze;function h(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++)for(i in o=arguments[e])t[i]=o[i];return t}Object.freeze=function(t){return t};var s=Object.create||function(t){return e.prototype=t,new e};function e(){}function a(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}var n=0;function u(t){return t._leaflet_id=t._leaflet_id||++n,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function r(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function l(){return!1}function c(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function _(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function d(t){return _(t).split(/\s+/)}function p(t,i){for(var e in t.hasOwnProperty("options")||(t.options=t.options?s(t.options):{}),i)t.options[e]=i[e];return t.options}function m(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}var f=/\{ *([\w_-]+) *\}/g;function g(t,n){return t.replace(f,function(t,i){var e=n[i];if(void 0===e)throw new Error("No value provided for variable "+t);return"function"==typeof e&&(e=e(n)),e})}var v=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function y(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}var x="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function w(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}var P=0;function b(t){var i=+new Date,e=Math.max(0,16-(i-P));return P=i+e,window.setTimeout(t,e)}var T=window.requestAnimationFrame||w("RequestAnimationFrame")||b,z=window.cancelAnimationFrame||w("CancelAnimationFrame")||w("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)};function M(t,i,e){if(!e||T!==b)return T.call(window,a(t,i));t.call(i)}function C(t){t&&z.call(window,t)}var S=(Object.freeze||Object)({freeze:i,extend:h,create:s,bind:a,lastId:n,stamp:u,throttle:o,wrapNum:r,falseFn:l,formatNum:c,trim:_,splitWords:d,setOptions:p,getParamString:m,template:g,isArray:v,indexOf:y,emptyImageUrl:x,requestFn:T,cancelFn:z,requestAnimFrame:M,cancelAnimFrame:C});function E(){}E.extend=function(t){function i(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()}var e=i.__super__=this.prototype,n=s(e);for(var o in(n.constructor=i).prototype=n,this)this.hasOwnProperty(o)&&"prototype"!==o&&"__super__"!==o&&(i[o]=this[o]);return t.statics&&(h(i,t.statics),delete t.statics),t.includes&&(function(t){if("undefined"==typeof L||!L||!L.Mixin)return;t=v(t)?t:[t];for(var i=0;i<t.length;i++)t[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}(t.includes),h.apply(null,[n].concat(t.includes)),delete t.includes),n.options&&(t.options=h(s(n.options),t.options)),h(n,t),n._initHooks=[],n.callInitHooks=function(){if(!this._initHooksCalled){e.callInitHooks&&e.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=n._initHooks.length;t<i;t++)n._initHooks[t].call(this)}},i},E.include=function(t){return h(this.prototype,t),this},E.mergeOptions=function(t){return h(this.prototype.options,t),this},E.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e="function"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var Z={on:function(t,i,e){if("object"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=d(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if("object"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=d(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var r=n[o];if(r.ctx===e&&r.fn===i)return r.fn=l,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=l;delete this._events[t]}},fire:function(t,i,e){if(!this.listens(t,e))return this;var n=h({},i,{type:t,target:this,sourceTarget:i&&i.sourceTarget||this});if(this._events){var o=this._events[t];if(o){this._firingCount=this._firingCount+1||1;for(var s=0,r=o.length;s<r;s++){var a=o[s];a.fn.call(a.ctx||this,n)}this._firingCount--}}return e&&this._propagateEvent(n),this},listens:function(t,i){var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,e){if("object"==typeof t){for(var n in t)this.once(n,t[n],i);return this}var o=a(function(){this.off(t,i,e).off(t,o,e)},this);return this.on(t,i,e).on(t,o,e)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[u(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[u(t)],this},_propagateEvent:function(t){for(var i in this._eventParents)this._eventParents[i].fire(t.type,h({layer:t.target,propagatedFrom:t.target},t),!0)}};Z.addEventListener=Z.on,Z.removeEventListener=Z.clearAllEventListeners=Z.off,Z.addOneTimeEventListener=Z.once,Z.fireEvent=Z.fire,Z.hasEventListeners=Z.listens;var k=E.extend(Z);function B(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}var A=Math.trunc||function(t){return 0<t?Math.floor(t):Math.ceil(t)};function I(t,i,e){return t instanceof B?t:v(t)?new B(t[0],t[1]):null==t?t:"object"==typeof t&&"x"in t&&"y"in t?new B(t.x,t.y):new B(t,i,e)}function O(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function R(t,i){return!t||t instanceof O?t:new O(t,i)}function N(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function D(t,i){return t instanceof N?t:new N(t,i)}function j(t,i,e){if(isNaN(t)||isNaN(i))throw new Error("Invalid LatLng object: ("+t+", "+i+")");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function W(t,i,e){return t instanceof j?t:v(t)&&"object"!=typeof t[0]?3===t.length?new j(t[0],t[1],t[2]):2===t.length?new j(t[0],t[1]):null:null==t?t:"object"==typeof t&&"lat"in t?new j(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===i?null:new j(t,i,e)}B.prototype={clone:function(){return new B(this.x,this.y)},add:function(t){return this.clone()._add(I(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(I(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new B(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new B(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=A(this.x),this.y=A(this.y),this},distanceTo:function(t){var i=(t=I(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=I(t)).x===this.x&&t.y===this.y},contains:function(t){return t=I(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+c(this.x)+", "+c(this.y)+")"}},O.prototype={extend:function(t){return t=I(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new B((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new B(this.min.x,this.max.y)},getTopRight:function(){return new B(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t="number"==typeof t[0]||t instanceof B?I(t):R(t))instanceof O?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=R(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=R(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.x<e.x,r=o.y>i.y&&n.y<e.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},N.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof j)e=i=t;else{if(!(t instanceof N))return t?this.extend(W(t)||D(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new j(i.lat,i.lng),this._northEast=new j(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,o=Math.abs(i.lng-e.lng)*t;return new N(new j(i.lat-n,i.lng-o),new j(e.lat+n,e.lng+o))},getCenter:function(){return new j((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new j(this.getNorth(),this.getWest())},getSouthEast:function(){return new j(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof j||"lat"in t?W(t):D(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof N?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=D(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=D(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lat<e.lat,r=o.lng>i.lng&&n.lng<e.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,i){return!!t&&(t=D(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}};var H,F={latLngToPoint:function(t,i){var e=this.projection.project(t),n=this.scale(i);return this.transformation._transform(e,n)},pointToLatLng:function(t,i){var e=this.scale(i),n=this.transformation.untransform(t,e);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var i=this.projection.bounds,e=this.scale(t);return new O(this.transformation.transform(i.min,e),this.transformation.transform(i.max,e))},infinite:!(j.prototype={equals:function(t,i){return!!t&&(t=W(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return"LatLng("+c(this.lat,t)+", "+c(this.lng,t)+")"},distanceTo:function(t){return U.distance(this,W(t))},wrap:function(){return U.wrapLatLng(this)},toBounds:function(t){var i=180*t/40075017,e=i/Math.cos(Math.PI/180*this.lat);return D([this.lat-i,this.lng-e],[this.lat+i,this.lng+e])},clone:function(){return new j(this.lat,this.lng,this.alt)}}),wrapLatLng:function(t){var i=this.wrapLng?r(t.lng,this.wrapLng,!0):t.lng;return new j(this.wrapLat?r(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,o=i.lng-e.lng;if(0==n&&0==o)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new N(new j(s.lat-n,s.lng-o),new j(r.lat-n,r.lng-o))}},U=h({},F,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),r=Math.sin((i.lng-t.lng)*e/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),V=6378137,q={R:V,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,n=Math.max(Math.min(e,t.lat),-e),o=Math.sin(n*i);return new B(this.R*t.lng*i,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var i=180/Math.PI;return new j((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:(H=V*Math.PI,new O([-H,-H],[H,H]))};function G(t,i,e,n){if(v(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function K(t,i,e,n){return new G(t,i,e,n)}G.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return i=i||1,t.x=i*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return i=i||1,new B((t.x/i-this._b)/this._a,(t.y/i-this._d)/this._c)}};var Y,X=h({},U,{code:"EPSG:3857",projection:q,transformation:(Y=.5/(Math.PI*q.R),K(Y,.5,-Y,.5))}),J=h({},X,{code:"EPSG:900913"});function $(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function Q(t,i){var e,n,o,s,r,a,h="";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)h+=(n?"L":"M")+(a=r[n]).x+" "+a.y;h+=i?Zt?"z":"x":""}return h||"M0 0"}var tt=document.documentElement.style,it="ActiveXObject"in window,et=it&&!document.addEventListener,nt="msLaunchUri"in navigator&&!("documentMode"in document),ot=Bt("webkit"),st=Bt("android"),rt=Bt("android 2")||Bt("android 3"),at=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),ht=st&&Bt("Google")&&at<537&&!("AudioNode"in window),ut=!!window.opera,lt=Bt("chrome"),ct=Bt("gecko")&&!ot&&!ut&&!it,_t=!lt&&Bt("safari"),dt=Bt("phantom"),pt="OTransition"in tt,mt=0===navigator.platform.indexOf("Win"),ft=it&&"transition"in tt,gt="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!rt,vt="MozPerspective"in tt,yt=!window.L_DISABLE_3D&&(ft||gt||vt)&&!pt&&!dt,xt="undefined"!=typeof orientation||Bt("mobile"),wt=xt&&ot,Pt=xt&&gt,Lt=!window.PointerEvent&&window.MSPointerEvent,bt=!(ot||!window.PointerEvent&&!Lt),Tt=!window.L_NO_TOUCH&&(bt||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),zt=xt&&ut,Mt=xt&&ct,Ct=1<(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI),St=function(){var t=!1;try{var i=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassiveEventSupport",l,i),window.removeEventListener("testPassiveEventSupport",l,i)}catch(t){}return t},Et=!!document.createElement("canvas").getContext,Zt=!(!document.createElementNS||!$("svg").createSVGRect),kt=!Zt&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}();function Bt(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var At=(Object.freeze||Object)({ie:it,ielt9:et,edge:nt,webkit:ot,android:st,android23:rt,androidStock:ht,opera:ut,chrome:lt,gecko:ct,safari:_t,phantom:dt,opera12:pt,win:mt,ie3d:ft,webkit3d:gt,gecko3d:vt,any3d:yt,mobile:xt,mobileWebkit:wt,mobileWebkit3d:Pt,msPointer:Lt,pointer:bt,touch:Tt,mobileOpera:zt,mobileGecko:Mt,retina:Ct,passiveEvents:St,canvas:Et,svg:Zt,vml:kt}),It=Lt?"MSPointerDown":"pointerdown",Ot=Lt?"MSPointerMove":"pointermove",Rt=Lt?"MSPointerUp":"pointerup",Nt=Lt?"MSPointerCancel":"pointercancel",Dt=["INPUT","SELECT","OPTION"],jt={},Wt=!1,Ht=0;function Ft(t,i,e,n){return"touchstart"===i?function(t,i,e){var n=a(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(Dt.indexOf(t.target.tagName)<0))return;ji(t)}Gt(t,i)});t["_leaflet_touchstart"+e]=n,t.addEventListener(It,n,!1),Wt||(document.documentElement.addEventListener(It,Ut,!0),document.documentElement.addEventListener(Ot,Vt,!0),document.documentElement.addEventListener(Rt,qt,!0),document.documentElement.addEventListener(Nt,qt,!0),Wt=!0)}(t,e,n):"touchmove"===i?function(t,i,e){function n(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&Gt(t,i)}t["_leaflet_touchmove"+e]=n,t.addEventListener(Ot,n,!1)}(t,e,n):"touchend"===i&&function(t,i,e){function n(t){Gt(t,i)}t["_leaflet_touchend"+e]=n,t.addEventListener(Rt,n,!1),t.addEventListener(Nt,n,!1)}(t,e,n),this}function Ut(t){jt[t.pointerId]=t,Ht++}function Vt(t){jt[t.pointerId]&&(jt[t.pointerId]=t)}function qt(t){delete jt[t.pointerId],Ht--}function Gt(t,i){for(var e in t.touches=[],jt)t.touches.push(jt[e]);t.changedTouches=[t],i(t)}var Kt=Lt?"MSPointerDown":bt?"pointerdown":"touchstart",Yt=Lt?"MSPointerUp":bt?"pointerup":"touchend",Xt="_leaflet_";function Jt(t,o,i){var s,r,a=!1;function e(t){var i;if(bt){if(!nt||"mouse"===t.pointerType)return;i=Ht}else i=t.touches.length;if(!(1<i)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=0<n&&n<=250,s=e}}function n(t){if(a&&!r.cancelBubble){if(bt){if(!nt||"mouse"===t.pointerType)return;var i,e,n={};for(e in r)i=r[e],n[e]=i&&i.bind?i.bind(r):i;r=n}r.type="dblclick",r.button=0,o(r),s=null}}return t[Xt+Kt+i]=e,t[Xt+Yt+i]=n,t[Xt+"dblclick"+i]=o,t.addEventListener(Kt,e,!!St&&{passive:!1}),t.addEventListener(Yt,n,!!St&&{passive:!1}),t.addEventListener("dblclick",o,!1),this}function $t(t,i){var e=t[Xt+Kt+i],n=t[Xt+Yt+i],o=t[Xt+"dblclick"+i];return t.removeEventListener(Kt,e,!!St&&{passive:!1}),t.removeEventListener(Yt,n,!!St&&{passive:!1}),nt||t.removeEventListener("dblclick",o,!1),this}var Qt,ti,ii,ei,ni,oi=xi(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),si=xi(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),ri="webkitTransition"===si||"OTransition"===si?si+"End":"transitionend";function ai(t){return"string"==typeof t?document.getElementById(t):t}function hi(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function ui(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function li(t){var i=t.parentNode;i&&i.removeChild(t)}function ci(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function _i(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function di(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function pi(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=vi(t);return 0<e.length&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function mi(t,i){if(void 0!==t.classList)for(var e=d(i),n=0,o=e.length;n<o;n++)t.classList.add(e[n]);else if(!pi(t,i)){var s=vi(t);gi(t,(s?s+" ":"")+i)}}function fi(t,i){void 0!==t.classList?t.classList.remove(i):gi(t,_((" "+vi(t)+" ").replace(" "+i+" "," ")))}function gi(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function vi(t){return t.correspondingElement&&(t=t.correspondingElement),void 0===t.className.baseVal?t.className:t.className.baseVal}function yi(t,i){"opacity"in t.style?t.style.opacity=i:"filter"in t.style&&function(t,i){var e=!1,n="DXImageTransform.Microsoft.Alpha";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=" progid:"+n+"(opacity="+i+")"}(t,i)}function xi(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function wi(t,i,e){var n=i||new B(0,0);t.style[oi]=(ft?"translate("+n.x+"px,"+n.y+"px)":"translate3d("+n.x+"px,"+n.y+"px,0)")+(e?" scale("+e+")":"")}function Pi(t,i){t._leaflet_pos=i,yt?wi(t,i):(t.style.left=i.x+"px",t.style.top=i.y+"px")}function Li(t){return t._leaflet_pos||new B(0,0)}if("onselectstart"in document)Qt=function(){ki(window,"selectstart",ji)},ti=function(){Ai(window,"selectstart",ji)};else{var bi=xi(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);Qt=function(){if(bi){var t=document.documentElement.style;ii=t[bi],t[bi]="none"}},ti=function(){bi&&(document.documentElement.style[bi]=ii,ii=void 0)}}function Ti(){ki(window,"dragstart",ji)}function zi(){Ai(window,"dragstart",ji)}function Mi(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Ci(),ni=(ei=t).style.outline,t.style.outline="none",ki(window,"keydown",Ci))}function Ci(){ei&&(ei.style.outline=ni,ni=ei=void 0,Ai(window,"keydown",Ci))}function Si(t){for(;!((t=t.parentNode).offsetWidth&&t.offsetHeight||t===document.body););return t}function Ei(t){var i=t.getBoundingClientRect();return{x:i.width/t.offsetWidth||1,y:i.height/t.offsetHeight||1,boundingClientRect:i}}var Zi=(Object.freeze||Object)({TRANSFORM:oi,TRANSITION:si,TRANSITION_END:ri,get:ai,getStyle:hi,create:ui,remove:li,empty:ci,toFront:_i,toBack:di,hasClass:pi,addClass:mi,removeClass:fi,setClass:gi,getClass:vi,setOpacity:yi,testProp:xi,setTransform:wi,setPosition:Pi,getPosition:Li,disableTextSelection:Qt,enableTextSelection:ti,disableImageDrag:Ti,enableImageDrag:zi,preventOutline:Mi,restoreOutline:Ci,getSizedParentNode:Si,getScale:Ei});function ki(t,i,e,n){if("object"==typeof i)for(var o in i)Ii(t,o,i[o],e);else for(var s=0,r=(i=d(i)).length;s<r;s++)Ii(t,i[s],e,n);return this}var Bi="_leaflet_events";function Ai(t,i,e,n){if("object"==typeof i)for(var o in i)Oi(t,o,i[o],e);else if(i)for(var s=0,r=(i=d(i)).length;s<r;s++)Oi(t,i[s],e,n);else{for(var a in t[Bi])Oi(t,a,t[Bi][a]);delete t[Bi]}return this}function Ii(i,t,e,n){var o=t+u(e)+(n?"_"+u(n):"");if(i[Bi]&&i[Bi][o])return this;var s=function(t){return e.call(n||i,t||window.event)},r=s;bt&&0===t.indexOf("touch")?Ft(i,t,s,o):!Tt||"dblclick"!==t||bt&&lt?"addEventListener"in i?"mousewheel"===t?i.addEventListener("onwheel"in i?"wheel":"mousewheel",s,!!St&&{passive:!1}):"mouseenter"===t||"mouseleave"===t?(s=function(t){t=t||window.event,Yi(i,t)&&r(t)},i.addEventListener("mouseenter"===t?"mouseover":"mouseout",s,!1)):("click"===t&&st&&(s=function(t){!function(t,i){var e=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,n=Vi&&e-Vi;if(n&&100<n&&n<500||t.target._simulatedClick&&!t._simulated)return Wi(t);Vi=e,i(t)}(t,r)}),i.addEventListener(t,s,!1)):"attachEvent"in i&&i.attachEvent("on"+t,s):Jt(i,s,o),i[Bi]=i[Bi]||{},i[Bi][o]=s}function Oi(t,i,e,n){var o=i+u(e)+(n?"_"+u(n):""),s=t[Bi]&&t[Bi][o];if(!s)return this;bt&&0===i.indexOf("touch")?function(t,i,e){var n=t["_leaflet_"+i+e];"touchstart"===i?t.removeEventListener(It,n,!1):"touchmove"===i?t.removeEventListener(Ot,n,!1):"touchend"===i&&(t.removeEventListener(Rt,n,!1),t.removeEventListener(Nt,n,!1))}(t,i,o):!Tt||"dblclick"!==i||bt&&lt?"removeEventListener"in t?"mousewheel"===i?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",s,!!St&&{passive:!1}):t.removeEventListener("mouseenter"===i?"mouseover":"mouseleave"===i?"mouseout":i,s,!1):"detachEvent"in t&&t.detachEvent("on"+i,s):$t(t,o),t[Bi][o]=null}function Ri(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,Ki(t),this}function Ni(t){return Ii(t,"mousewheel",Ri),this}function Di(t){return ki(t,"mousedown touchstart dblclick",Ri),Ii(t,"click",Gi),this}function ji(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Wi(t){return ji(t),Ri(t),this}function Hi(t,i){if(!i)return new B(t.clientX,t.clientY);var e=Ei(i),n=e.boundingClientRect;return new B((t.clientX-n.left)/e.x-i.clientLeft,(t.clientY-n.top)/e.y-i.clientTop)}var Fi=mt&&lt?2*window.devicePixelRatio:ct?window.devicePixelRatio:1;function Ui(t){return nt?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/Fi:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}var Vi,qi={};function Gi(t){qi[t.type]=!0}function Ki(t){var i=qi[t.type];return qi[t.type]=!1,i}function Yi(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}var Xi=(Object.freeze||Object)({on:ki,off:Ai,stopPropagation:Ri,disableScrollPropagation:Ni,disableClickPropagation:Di,preventDefault:ji,stop:Wi,getMousePosition:Hi,getWheelDelta:Ui,fakeStop:Gi,skipped:Ki,isExternalTarget:Yi,addListener:ki,removeListener:Ai}),Ji=k.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Li(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=M(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){var e=this._startPos.add(this._offset.multiplyBy(t));i&&e._round(),Pi(this._el,e),this.fire("step")},_complete:function(){C(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),$i=k.extend({options:{crs:X,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,i){i=p(this,i),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(t),this._initLayout(),this._onResize=a(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(W(i.center),i.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=si&&yt&&!zt&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),ki(this._proxy,ri,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,i,e){if((i=void 0===i?this._zoom:this._limitZoom(i),t=this._limitCenter(W(t),i,this.options.maxBounds),e=e||{},this._stop(),this._loaded&&!e.reset&&!0!==e)&&(void 0!==e.animate&&(e.zoom=h({animate:e.animate},e.zoom),e.pan=h({animate:e.animate,duration:e.duration},e.pan)),this._zoom!==i?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,i,e.zoom):this._tryAnimatedPan(t,e.pan)))return clearTimeout(this._sizeTimer),this;return this._resetView(t,i),this},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(yt?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(yt?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),s=(t instanceof B?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():D(t);var e=I(i.paddingTopLeft||i.padding||[0,0]),n=I(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o="number"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(e).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,i){if(!(t=D(t)).isValid())throw new Error("Bounds are not valid.");var e=this._getBoundsCenterZoom(t,i);return this.setView(e.center,e.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){if(i=i||{},!(t=I(t).round()).x&&!t.y)return this.fire("moveend");if(!0!==i.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new Ji,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire("movestart"),!1!==i.animate){mi(this._mapPane,"leaflet-pan-anim");var e=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(n,o,t){if(!1===(t=t||{}).animate||!yt)return this.setView(n,o,t);this._stop();var s=this.project(this.getCenter()),r=this.project(n),i=this.getSize(),a=this._zoom;n=W(n),o=void 0===o?a:o;var h=Math.max(i.x,i.y),u=h*this.getZoomScale(a,o),l=r.distanceTo(s)||1,c=1.42,_=c*c;function e(t){var i=(u*u-h*h+(t?-1:1)*_*_*l*l)/(2*(t?u:h)*_*l),e=Math.sqrt(i*i+1)-i;return e<1e-9?-18:Math.log(e)}function d(t){return(Math.exp(t)-Math.exp(-t))/2}function p(t){return(Math.exp(t)+Math.exp(-t))/2}var m=e(0);function f(t){return h*(p(m)*function(t){return d(t)/p(t)}(m+c*t)-d(m))/_}var g=Date.now(),v=(e(1)-m)/c,y=t.duration?1e3*t.duration:1e3*v*.8;return this._moveStart(!0,t.noMoveStart),function t(){var i=(Date.now()-g)/y,e=function(t){return 1-Math.pow(1-t,1.5)}(i)*v;i<=1?(this._flyToFrame=M(t,this),this._move(this.unproject(s.add(r.subtract(s).multiplyBy(f(e)/l)),a),this.getScaleZoom(h/function(t){return h*(p(m)/p(m+c*t))}(e),a),{flyTo:!0})):this._move(n,o)._moveEnd(!0)}.call(this),this},flyToBounds:function(t,i){var e=this._getBoundsCenterZoom(t,i);return this.flyTo(e.center,e.zoom,i)},setMaxBounds:function(t){return(t=D(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,D(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},panInside:function(t,i){var e=I((i=i||{}).paddingTopLeft||i.padding||[0,0]),n=I(i.paddingBottomRight||i.padding||[0,0]),o=this.getCenter(),s=this.project(o),r=this.project(t),a=this.getPixelBounds(),h=a.getSize().divideBy(2),u=R([a.min.add(e),a.max.subtract(n)]);if(!u.contains(r)){this._enforcingBounds=!0;var l=s.subtract(r),c=I(r.x+l.x,r.y+l.y);(r.x<u.min.x||r.x>u.max.x)&&(c.x=s.x-l.x,0<l.x?c.x+=h.x-e.x:c.x-=h.x-n.x),(r.y<u.min.y||r.y>u.max.y)&&(c.y=s.y-l.y,0<l.y?c.y+=h.y-e.y:c.y-=h.y-n.y),this.panTo(this.unproject(c),i),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=h({animate:!1,pan:!0},!0===t?{animate:!0}:t);var i=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var e=this.getSize(),n=i.divideBy(2).round(),o=e.divideBy(2).round(),s=n.subtract(o);return s.x||s.y?(t.animate&&t.pan?this.panBy(s):(t.pan&&this._rawPanBy(s),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(a(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:i,newSize:e})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=h({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var i=a(this._handleGeolocationResponse,this),e=a(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(i,e,t):navigator.geolocation.getCurrentPosition(i,e,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})},_handleGeolocationResponse:function(t){var i=new j(t.coords.latitude,t.coords.longitude),e=i.toBounds(2*t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}var t;for(t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),li(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(C(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)li(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=ui("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new N(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=D(t),e=I(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=R(this.project(a,n),this.project(r,n)).getSize(),l=yt?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new B(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new O(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(W(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(I(t),i)},layerPointToLatLng:function(t){var i=I(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(W(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(W(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(D(t))},distance:function(t,i){return this.options.crs.distance(W(t),W(i))},containerPointToLayerPoint:function(t){return I(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return I(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(I(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(W(t)))},mouseEventToContainerPoint:function(t){return Hi(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=ai(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");ki(i,"scroll",this._onScroll,this),this._containerId=u(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&yt,mi(t,"leaflet-container"+(Tt?" leaflet-touch":"")+(Ct?" leaflet-retina":"")+(et?" leaflet-oldie":"")+(_t?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=hi(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Pi(this._mapPane,new B(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(mi(t.markerPane,"leaflet-zoom-hide"),mi(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i){Pi(this._mapPane,new B(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire("viewreset"),e&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return C(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Pi(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={};var i=t?Ai:ki;i((this._targets[u(this._container)]=this)._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),yt&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){C(this._resizeRequest),this._resizeRequest=M(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,n=[],o="mouseout"===i||"mouseover"===i,s=t.target||t.srcElement,r=!1;s;){if((e=this._targets[u(s)])&&("click"===i||"preclick"===i)&&!t._simulated&&this._draggableMoved(e)){r=!0;break}if(e&&e.listens(i,!0)){if(o&&!Yi(s,t))break;if(n.push(e),o)break}if(s===this._container)break;s=s.parentNode}return n.length||r||o||!Yi(s,t)||(n=[this]),n},_handleDOMEvent:function(t){if(this._loaded&&!Ki(t)){var i=t.type;"mousedown"!==i&&"keypress"!==i&&"keyup"!==i&&"keydown"!==i||Mi(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,i,e){if("click"===t.type){var n=h({},t);n.type="preclick",this._fireDOMEvent(n,n.type,e)}if(!t._stopped&&(e=(e||[]).concat(this._findEventTargets(t,i))).length){var o=e[0];"contextmenu"===i&&o.listens(i,!0)&&ji(t);var s={originalEvent:t};if("keypress"!==t.type&&"keydown"!==t.type&&"keyup"!==t.type){var r=o.getLatLng&&(!o._radius||o._radius<=10);s.containerPoint=r?this.latLngToContainerPoint(o.getLatLng()):this.mouseEventToContainerPoint(t),s.layerPoint=this.containerPointToLayerPoint(s.containerPoint),s.latlng=r?o.getLatLng():this.layerPointToLatLng(s.layerPoint)}for(var a=0;a<e.length;a++)if(e[a].fire(i,s,!0),s.originalEvent._stopped||!1===e[a].options.bubblingMouseEvents&&-1!==y(this._mouseEvents,i))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on("load",t,i),this},_getMapPanePos:function(){return Li(this._mapPane)||new B(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return R([this.project(t.getSouthWest(),i)._subtract(n),this.project(t.getNorthWest(),i)._subtract(n),this.project(t.getSouthEast(),i)._subtract(n),this.project(t.getNorthEast(),i)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),s=new O(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,e,i);return r.round().equals([0,0])?t:this.unproject(n.add(r),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),n=new O(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(n,i))},_getBoundsOffset:function(t,i,e){var n=R(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new B(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,i){return 0<t+i?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=yt?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){fi(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=ui("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=oi,e=this._proxy.style[i];wi(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){li(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var t=this.getCenter(),i=this.getZoom();wi(this._proxy,this.project(t,i),this.getZoomScale(i,1))},_catchTransitionEnd:function(t){this._animatingZoom&&0<=t.propertyName.indexOf("transform")&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(M(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,e,n){this._mapPane&&(e&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,mi(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:n}),setTimeout(a(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&fi(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),M(function(){this._moveEnd(!0)},this))}});function Qi(t){return new te(t)}var te=E.extend({options:{position:"topright"},initialize:function(t){p(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return mi(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(li(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0<t.screenX&&0<t.screenY&&this._map.getContainer().focus()}});$i.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var n=this._controlCorners={},o="leaflet-",s=this._controlContainer=ui("div",o+"control-container",this._container);function t(t,i){var e=o+t+" "+o+i;n[t+i]=ui("div",e,s)}t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)li(this._controlCorners[t]);li(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var ie=te.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e<n?-1:n<e?1:0}},initialize:function(t,i,e){for(var n in p(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),(this._map=t).on("zoomend",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return te.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var i=this._getLayer(u(t));return i&&this._layers.splice(this._layers.indexOf(i),1),this._map?this._update():this},expand:function(){mi(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._section.clientHeight?(mi(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=t+"px"):fi(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return fi(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",i=this._container=ui("div",t),e=this.options.collapsed;i.setAttribute("aria-haspopup",!0),Di(i),Ni(i);var n=this._section=ui("section",t+"-list");e&&(this._map.on("click",this.collapse,this),st||ki(i,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=ui("a",t+"-toggle",i);o.href="#",o.title="Layers",Tt?(ki(o,"click",Wi),ki(o,"click",this.expand,this)):ki(o,"focus",this.expand,this),e||this.expand(),this._baseLayersList=ui("div",t+"-base",n),this._separator=ui("div",t+"-separator",n),this._overlaysList=ui("div",t+"-overlays",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&u(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,e){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:e}),this.options.sortLayers&&this._layers.sort(a(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;ci(this._baseLayersList),ci(this._overlaysList),this._layerControlInputs=[];var t,i,e,n,o=0;for(e=0;e<this._layers.length;e++)n=this._layers[e],this._addItem(n),i=i||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&1<o,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(u(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(i?' checked="checked"':"")+"/>",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),n=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=n):i=this._createRadioElement("leaflet-base-layers_"+u(this),n),this._layerControlInputs.push(i),i.layerId=u(t.layer),ki(i,"click",this._onInputClick,this);var o=document.createElement("span");o.innerHTML=" "+t.name;var s=document.createElement("div");return e.appendChild(s),s.appendChild(i),s.appendChild(o),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;0<=s;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;0<=o;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ee=te.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"&#x2212;",zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=ui("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=ui("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),Di(s),ki(s,"click",Wi),ki(s,"click",o,this),ki(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";fi(this._zoomInButton,i),fi(this._zoomOutButton,i),!this._disabled&&t._zoom!==t.getMinZoom()||mi(this._zoomOutButton,i),!this._disabled&&t._zoom!==t.getMaxZoom()||mi(this._zoomInButton,i)}});$i.mergeOptions({zoomControl:!0}),$i.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new ee,this.addControl(this.zoomControl))});var ne=te.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i="leaflet-control-scale",e=ui("div",i),n=this.options;return this._addScales(n,i+"-line",e),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),e},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=ui("div",i,e)),t.imperial&&(this._iScale=ui("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;5280<o?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return i*(e=10<=e?10:5<=e?5:3<=e?3:2<=e?2:1)}}),oe=te.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){p(this,t),this._attributions={}},onAdd:function(t){for(var i in(t.attributionControl=this)._container=ui("div","leaflet-control-attribution"),Di(this._container),t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(" | ")}}});$i.mergeOptions({attributionControl:!0}),$i.addInitHook(function(){this.options.attributionControl&&(new oe).addTo(this)});te.Layers=ie,te.Zoom=ee,te.Scale=ne,te.Attribution=oe,Qi.layers=function(t,i,e){return new ie(t,i,e)},Qi.zoom=function(t){return new ee(t)},Qi.scale=function(t){return new ne(t)},Qi.attribution=function(t){return new oe(t)};var se=E.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}});se.addTo=function(t,i){return t.addHandler(i,this),this};var re,ae={Events:Z},he=Tt?"touchstart mousedown":"mousedown",ue={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},le={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},ce=k.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){p(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(ki(this._dragStartTarget,he,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(ce._dragging===this&&this.finishDrag(),Ai(this._dragStartTarget,he,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!pi(this._element,"leaflet-zoom-anim")&&!(ce._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((ce._dragging=this)._preventOutline&&Mi(this._element),Ti(),Qt(),this._moving)))){this.fire("down");var i=t.touches?t.touches[0]:t,e=Si(this._element);this._startPoint=new B(i.clientX,i.clientY),this._parentScale=Ei(e),ki(document,le[t.type],this._onMove,this),ki(document,ue[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&1<t.touches.length)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new B(i.clientX,i.clientY)._subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)<this.options.clickTolerance||(e.x/=this._parentScale.x,e.y/=this._parentScale.y,ji(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=Li(this._element).subtract(e),mi(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),mi(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(e),this._moving=!0,C(this._animRequest),this._lastEvent=t,this._animRequest=M(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),Pi(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){for(var t in fi(document.body,"leaflet-dragging"),this._lastTarget&&(fi(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),le)Ai(document,le[t],this._onMove,this),Ai(document,ue[t],this._onUp,this);zi(),ti(),this._moved&&this._moving&&(C(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,ce._dragging=!1}});function _e(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=function(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(e);n[0]=n[e-1]=1,function t(i,e,n,o,s){var r,a,h,u=0;for(a=o+1;a<=s-1;a++)h=ge(i[a],i[o],i[s],!0),u<h&&(r=a,u=h);n<u&&(e[r]=1,t(i,e,n,o,r),t(i,e,n,r,s))}(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}(t=function(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;n<s;n++)r=t[n],a=t[o],void 0,h=a.x-r.x,u=a.y-r.y,i<h*h+u*u&&(e.push(t[n]),o=n);var r,a,h,u;o<s-1&&e.push(t[s-1]);return e}(t,e),e)}function de(t,i,e){return Math.sqrt(ge(t,i,e,!0))}function pe(t,i,e,n,o){var s,r,a,h=n?re:fe(t,e),u=fe(i,e);for(re=u;;){if(!(h|u))return[t,i];if(h&u)return!1;a=fe(r=me(t,i,s=h||u,e,o),e),s===h?(t=r,h=a):(i=r,u=a)}}function me(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,u=n.min,l=n.max;return 8&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&e?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&e&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new B(s,r,o)}function fe(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.max.y&&(e|=8),e}function ge(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return 0<u&&(1<(o=((t.x-s)*a+(t.y-r)*h)/u)?(s=e.x,r=e.y):0<o&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new B(s,r)}function ve(t){return!v(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function ye(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),ve(t)}var xe=(Object.freeze||Object)({simplify:_e,pointToSegmentDistance:de,closestPointOnSegment:function(t,i,e){return ge(t,i,e)},clipSegment:pe,_getEdgeIntersection:me,_getBitCode:fe,_sqClosestPointOnSegment:ge,isFlat:ve,_flat:ye});function we(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o<u;o++)t[o]._code=fe(t[o],i);for(r=0;r<4;r++){for(l=_[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=me(h,a,l,i,e))._code=fe(c,i),n.push(c)):(h._code&l&&((c=me(h,a,l,i,e))._code=fe(c,i),n.push(c)),n.push(a));t=n}return t}var Pe,Le=(Object.freeze||Object)({clipPolygon:we}),be={project:function(t){return new B(t.lng,t.lat)},unproject:function(t){return new j(t.y,t.x)},bounds:new O([-180,-90],[180,90])},Te={R:6378137,R_MINOR:6356752.314245179,bounds:new O([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new B(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,u=.1;h<15&&1e-7<Math.abs(u);h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new j(a*e,t.x*e/n)}},ze=(Object.freeze||Object)({LonLat:be,Mercator:Te,SphericalMercator:q}),Me=h({},U,{code:"EPSG:3395",projection:Te,transformation:(Pe=.5/(Math.PI*Te.R),K(Pe,.5,-Pe,.5))}),Ce=h({},U,{code:"EPSG:4326",projection:be,transformation:K(1/180,1,-1/180,.5)}),Se=h({},F,{projection:be,transformation:K(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});F.Earth=U,F.EPSG3395=Me,F.EPSG3857=X,F.EPSG900913=J,F.EPSG4326=Ce,F.Simple=Se;var Ee=k.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[u(t)]=this},removeInteractiveTarget:function(t){return delete this._map._targets[u(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),i.fire("layeradd",{layer:this})}}});$i.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=u(t);return this._layers[i]||((this._layers[i]=t)._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t)),this},removeLayer:function(t){var i=u(t);return this._layers[i]&&(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null),this},hasLayer:function(t){return!!t&&u(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?v(t)?t:[t]:[]).length;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[u(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var i=u(t);this._zoomBoundLayers[i]&&(delete this._zoomBoundLayers[i],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,i=-1/0,e=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),i=void 0===o.maxZoom?i:Math.max(i,o.maxZoom)}this._layersMaxZoom=i===-1/0?void 0:i,this._layersMinZoom=t===1/0?void 0:t,e!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Ze=Ee.extend({initialize:function(t,i){var e,n;if(p(this,i),this._layers={},t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var i=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[i]&&this._map.removeLayer(this._layers[i]),delete this._layers[i],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return u(t)}}),ke=Ze.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Ze.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Ze.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new N;for(var i in this._layers){var e=this._layers[i];t.extend(e.getBounds?e.getBounds():e.getLatLng())}return t}}),Be=E.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){p(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n=this._createImg(e,i&&"IMG"===i.tagName?i:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,i){var e=this.options,n=e[i+"Size"];"number"==typeof n&&(n=[n,n]);var o=I(n),s=I("shadow"===i&&e.shadowAnchor||e.iconAnchor||o&&o.divideBy(2,!0));t.className="leaflet-marker-"+i+" "+(e.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),o&&(t.style.width=o.x+"px",t.style.height=o.y+"px")},_createImg:function(t,i){return(i=i||document.createElement("img")).src=t,i},_getIconUrl:function(t){return Ct&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}});var Ae=Be.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Ae.imagePath||(Ae.imagePath=this._detectIconPath()),(this.options.imagePath||Ae.imagePath)+Be.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=ui("div","leaflet-default-icon-path",document.body),i=hi(t,"background-image")||hi(t,"backgroundImage");return document.body.removeChild(t),i=null===i||0!==i.indexOf("url")?"":i.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Ie=se.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new ce(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),mi(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&fi(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=Li(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),h=R(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=I((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);e.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),Pi(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=M(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&(C(this._panRequest),this._panRequest=M(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=Li(i._icon),o=i._map.layerPointToLatLng(n);e&&Pi(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire("move",t).fire("drag",t)},_onDragEnd:function(t){C(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),Oe=Ee.extend({options:{icon:new Ae,interactive:!0,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",shadowPane:"shadowPane",bubblingMouseEvents:!1,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(t,i){p(this,i),this._latlng=W(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var i=this._latlng;return this._latlng=W(t),this.update(),this.fire("move",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},getIcon:function(){return this.options.icon},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,i="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),e=t.icon.createIcon(this._icon),n=!1;e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),"IMG"===e.tagName&&(e.alt=t.alt||"")),mi(e,i),t.keyboard&&(e.tabIndex="0"),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(mi(o,i),o.alt=""),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane(t.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),li(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&li(this._shadow),this._shadow=null},_setPos:function(t){this._icon&&Pi(this._icon,t),this._shadow&&Pi(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon&&(this._icon.style.zIndex=this._zIndex+t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(i)},_initInteraction:function(){if(this.options.interactive&&(mi(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Ie)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Ie(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;this._icon&&yi(this._icon,t),this._shadow&&yi(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});var Re=Ee.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return p(this,t),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&t&&t.hasOwnProperty("weight")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),Ne=Re.extend({options:{fill:!0,radius:10},initialize:function(t,i){p(this,i),this._latlng=W(t),this._radius=this.options.radius},setLatLng:function(t){var i=this._latlng;return this._latlng=W(t),this.redraw(),this.fire("move",{oldLatLng:i,latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var i=t&&t.radius||this._radius;return Re.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),n=[t+e,i+e];this._pxBounds=new O(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}});var De=Ne.extend({initialize:function(t,i,e){if("number"==typeof i&&(i=h({},e,{radius:i})),p(this,i),this._latlng=W(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new N(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Re.prototype.setStyle,_project:function(){var t=this._latlng.lng,i=this._latlng.lat,e=this._map,n=e.options.crs;if(n.distance===U.distance){var o=Math.PI/180,s=this._mRadius/U.R/o,r=e.project([i+s,t]),a=e.project([i-s,t]),h=r.add(a).divideBy(2),u=e.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(i*o)*Math.sin(u*o))/(Math.cos(i*o)*Math.cos(u*o)))/o;!isNaN(l)&&0!==l||(l=s/Math.cos(Math.PI/180*i)),this._point=h.subtract(e.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-e.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(c).x}this._updateBounds()}});var je=Re.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){p(this,i),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var i,e,n=1/0,o=null,s=ge,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,i=h[u-1],e=h[u],!0);c<n&&(n=c,o=s(t,i,e))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(i=t=0;t<h-1;t++)i+=a[t].distanceTo(a[t+1])/2;if(0===i)return this._map.layerPointToLatLng(a[0]);for(n=t=0;t<h-1;t++)if(o=a[t],s=a[t+1],i<(n+=e=o.distanceTo(s)))return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=W(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new N,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return ve(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=ve(t),n=0,o=t.length;n<o;n++)e?(i[n]=W(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new O;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t),this._bounds.isValid()&&t.isValid()&&(this._rawPxBounds=t,this._updateBounds())},_updateBounds:function(){var t=this._clickTolerance(),i=new B(t,t);this._pxBounds=new O([this._rawPxBounds.min.subtract(i),this._rawPxBounds.max.add(i)])},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof j,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var i,e,n,o,s,r,a,h=this._parts;for(n=i=0,o=this._rings.length;i<o;i++)for(e=0,s=(a=this._rings[i]).length;e<s-1;e++)(r=pe(a[e],a[e+1],t,e,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[e+1]&&e!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=_e(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&de(t,a[o],a[n])<=h)return!0;return!1}});je._flat=ye;var We=je.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,i=l-1;t<l;i=t++)e=u[t],n=u[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var i=je.prototype._convertLatLngs.call(this,t),e=i.length;return 2<=e&&i[0]instanceof j&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){je.prototype._setLatLngs.call(this,t),ve(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return ve(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new B(i,i);if(t=new O(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;o<s;o++)(n=we(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,u=!1;if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>t.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||je.prototype._containsPoint.call(this,t,!0)}});var He=ke.extend({initialize:function(t,i){p(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=v(t)?t:t.features;if(o){for(i=0,e=o.length;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=Fe(t,s);return r?(r.feature=Xe(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return void 0===t?this.eachLayer(this.resetStyle,this):(t.options=h({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this)},setStyle:function(i){return this.eachLayer(function(t){this._setLayerStyle(t,i)},this)},_setLayerStyle:function(t,i){t.setStyle&&("function"==typeof i&&(i=i(t.feature)),t.setStyle(i))}});function Fe(t,i){var e,n,o,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=i&&i.pointToLayer,l=i&&i.coordsToLatLng||Ve;if(!a&&!r)return null;switch(r.type){case"Point":return Ue(u,t,e=l(a),i);case"MultiPoint":for(o=0,s=a.length;o<s;o++)e=l(a[o]),h.push(Ue(u,t,e,i));return new ke(h);case"LineString":case"MultiLineString":return n=qe(a,"LineString"===r.type?0:1,l),new je(n,i);case"Polygon":case"MultiPolygon":return n=qe(a,"Polygon"===r.type?1:2,l),new We(n,i);case"GeometryCollection":for(o=0,s=r.geometries.length;o<s;o++){var c=Fe({geometry:r.geometries[o],type:"Feature",properties:t.properties},i);c&&h.push(c)}return new ke(h);default:throw new Error("Invalid GeoJSON object.")}}function Ue(t,i,e,n){return t?t(i,e):new Oe(e,n&&n.markersInheritOptions&&n)}function Ve(t){return new j(t[1],t[0],t[2])}function qe(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?qe(t[s],i-1,e):(e||Ve)(t[s]),o.push(n);return o}function Ge(t,i){return i="number"==typeof i?i:6,void 0!==t.alt?[c(t.lng,i),c(t.lat,i),c(t.alt,i)]:[c(t.lng,i),c(t.lat,i)]}function Ke(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?Ke(t[s],i-1,e,n):Ge(t[s],n));return!i&&e&&o.push(o[0]),o}function Ye(t,i){return t.feature?h({},t.feature,{geometry:i}):Xe(i)}function Xe(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}var Je={toGeoJSON:function(t){return Ye(this,{type:"Point",coordinates:Ge(this.getLatLng(),t)})}};function $e(t,i){return new He(t,i)}Oe.include(Je),De.include(Je),Ne.include(Je),je.include({toGeoJSON:function(t){var i=!ve(this._latlngs);return Ye(this,{type:(i?"Multi":"")+"LineString",coordinates:Ke(this._latlngs,i?1:0,!1,t)})}}),We.include({toGeoJSON:function(t){var i=!ve(this._latlngs),e=i&&!ve(this._latlngs[0]),n=Ke(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),Ye(this,{type:(e?"Multi":"")+"Polygon",coordinates:n})}}),Ze.include({toMultiPoint:function(i){var e=[];return this.eachLayer(function(t){e.push(t.toGeoJSON(i).geometry.coordinates)}),Ye(this,{type:"MultiPoint",coordinates:e})},toGeoJSON:function(n){var t=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===t)return this.toMultiPoint(n);var o="GeometryCollection"===t,s=[];return this.eachLayer(function(t){if(t.toGeoJSON){var i=t.toGeoJSON(n);if(o)s.push(i.geometry);else{var e=Xe(i);"FeatureCollection"===e.type?s.push.apply(s,e.features):s.push(e)}}}),o?Ye(this,{geometries:s,type:"GeometryCollection"}):{type:"FeatureCollection",features:s}}});var Qe=$e,tn=Ee.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,e){this._url=t,this._bounds=D(i),p(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(mi(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){li(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&_i(this._image),this},bringToBack:function(){return this._map&&di(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=D(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,i=this._image=t?this._url:ui("img");mi(i,"leaflet-image-layer"),this._zoomAnimated&&mi(i,"leaflet-zoom-animated"),this.options.className&&mi(i,this.options.className),i.onselectstart=l,i.onmousemove=l,i.onload=a(this.fire,this,"load"),i.onerror=a(this._overlayOnError,this,"error"),!this.options.crossOrigin&&""!==this.options.crossOrigin||(i.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;wi(this._image,e,i)},_reset:function(){var t=this._image,i=new O(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();Pi(t,i.min),t.style.width=e.x+"px",t.style.height=e.y+"px"},_updateOpacity:function(){yi(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),en=tn.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,i=this._image=t?this._url:ui("video");if(mi(i,"leaflet-image-layer"),this._zoomAnimated&&mi(i,"leaflet-zoom-animated"),this.options.className&&mi(i,this.options.className),i.onselectstart=l,i.onmousemove=l,i.onloadeddata=a(this.fire,this,"load"),t){for(var e=i.getElementsByTagName("source"),n=[],o=0;o<e.length;o++)n.push(e[o].src);this._url=0<e.length?n:[i.src]}else{v(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&i.style.hasOwnProperty("objectFit")&&(i.style.objectFit="fill"),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var s=0;s<this._url.length;s++){var r=ui("source");r.src=this._url[s],i.appendChild(r)}}}});var nn=tn.extend({_initImage:function(){var t=this._image=this._url;mi(t,"leaflet-image-layer"),this._zoomAnimated&&mi(t,"leaflet-zoom-animated"),this.options.className&&mi(t,this.options.className),t.onselectstart=l,t.onmousemove=l}});var on=Ee.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,i){p(this,t),this._source=i},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&yi(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&yi(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(yi(this._container,0),this._removeTimeout=setTimeout(a(li,void 0,this._container),200)):li(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=W(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&_i(this._container),this},bringToBack:function(){return this._map&&di(this._container),this},_prepareOpen:function(t,i,e){if(i instanceof Ee||(e=i,i=t),i instanceof ke)for(var n in t._layers){i=t._layers[n];break}if(!e)if(i.getCenter)e=i.getCenter();else{if(!i.getLatLng)throw new Error("Unable to get source layer LatLng.");e=i.getLatLng()}return this._source=i,this.update(),e},_updateContent:function(){if(this._content){var t=this._contentNode,i="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),i=I(this.options.offset),e=this._getAnchor();this._zoomAnimated?Pi(this._container,t.add(e)):i=i.add(t).add(e);var n=this._containerBottom=-i.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+i.x;this._container.style.bottom=n+"px",this._container.style.left=o+"px"}},_getAnchor:function(){return[0,0]}}),sn=on.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){on.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Re||this._source.on("preclick",Ri))},onRemove:function(t){on.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Re||this._source.off("preclick",Ri))},getEvents:function(){var t=on.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",i=this._container=ui("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),e=this._wrapper=ui("div",t+"-content-wrapper",i);if(this._contentNode=ui("div",t+"-content",e),Di(e),Ni(this._contentNode),ki(e,"contextmenu",Ri),this._tipContainer=ui("div",t+"-tip-container",i),this._tip=ui("div",t+"-tip",this._tipContainer),this.options.closeButton){var n=this._closeButton=ui("a",t+"-close-button",i);n.href="#close",n.innerHTML="&#215;",ki(n,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,i=t.style;i.width="",i.whiteSpace="nowrap";var e=t.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),i.width=e+1+"px",i.whiteSpace="",i.height="";var n=t.offsetHeight,o=this.options.maxHeight,s="leaflet-popup-scrolled";o&&o<n?(i.height=o+"px",mi(t,s)):fi(t,s),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();Pi(this._container,i.add(e))},_adjustPan:function(){if(this.options.autoPan){this._map._panAnim&&this._map._panAnim.stop();var t=this._map,i=parseInt(hi(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new B(this._containerLeft,-e-this._containerBottom);o._add(Li(this._container));var s=t.layerPointToContainerPoint(o),r=I(this.options.autoPanPadding),a=I(this.options.autoPanPaddingTopLeft||r),h=I(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire("autopanstart").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Wi(t)},_getAnchor:function(){return I(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});$i.mergeOptions({closePopupOnClick:!0}),$i.include({openPopup:function(t,i,e){return t instanceof sn||(t=new sn(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Ee.include({bindPopup:function(t,i){return t instanceof sn?(p(t,i),(this._popup=t)._source=this):(this._popup&&!i||(this._popup=new sn(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){return this._popup&&this._map&&(i=this._popup._prepareOpen(this,t,i),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Wi(t),i instanceof Re?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var rn=on.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){on.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){on.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=on.prototype.getEvents.call(this);return Tt&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=ui("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=I(this.options.offset),u=this._getAnchor();t="top"===s?t.add(I(-r/2+h.x,-a+h.y+u.y,!0)):"bottom"===s?t.subtract(I(r/2-h.x,-h.y,!0)):"center"===s?t.subtract(I(r/2+h.x,a/2-u.y+h.y,!0)):"right"===s||"auto"===s&&o.x<n.x?(s="right",t.add(I(h.x+u.x,u.y-a/2+h.y,!0))):(s="left",t.subtract(I(r+u.x-h.x,a/2-u.y-h.y,!0))),fi(e,"leaflet-tooltip-right"),fi(e,"leaflet-tooltip-left"),fi(e,"leaflet-tooltip-top"),fi(e,"leaflet-tooltip-bottom"),mi(e,"leaflet-tooltip-"+s),Pi(e,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&yi(this._container,t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(i)},_getAnchor:function(){return I(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});$i.include({openTooltip:function(t,i,e){return t instanceof rn||(t=new rn(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),Ee.include({bindTooltip:function(t,i){return t instanceof rn?(p(t,i),(this._tooltip=t)._source=this):(this._tooltip&&!i||(this._tooltip=new rn(i,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var i=t?"off":"on",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),Tt&&(e.click=this._openTooltip)),this[i](e),this._tooltipHandlersAdded=!t}},openTooltip:function(t,i){return this._tooltip&&this._map&&(i=this._tooltip._prepareOpen(this,t,i),this._map.openTooltip(this._tooltip,i),this._tooltip.options.interactive&&this._tooltip._container&&(mi(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(fi(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var i=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(i,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var i,e,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(i=this._map.mouseEventToContainerPoint(t.originalEvent),e=this._map.containerPointToLayerPoint(i),n=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(n)}});var an=Be.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:document.createElement("div"),e=this.options;if(e.html instanceof Element?(ci(i),i.appendChild(e.html)):i.innerHTML=!1!==e.html?e.html:"",e.bgPos){var n=I(e.bgPos);i.style.backgroundPosition=-n.x+"px "+-n.y+"px"}return this._setIconStyles(i,"icon"),i},createShadow:function(){return null}});Be.Default=Ae;var hn=Ee.extend({options:{tileSize:256,opacity:1,updateWhenIdle:xt,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){p(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),li(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(_i(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(di(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=o(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof B?t:new B(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!et){yi(this._container,this.options.opacity);var t=+new Date,i=!1,e=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);yi(o.el,s),s<1?i=!0:(o.active?e=!0:this._onOpaqueTile(o),o.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),i&&(C(this._fadeFrame),this._fadeFrame=M(this._updateOpacity,this))}},_onOpaqueTile:l,_initContainer:function(){this._container||(this._container=ui("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(li(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=ui("div","leaflet-tile-container leaflet-zoom-animated",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n}},_onUpdateLevel:l,_onRemoveLevel:l,_onCreateLevel:l,_pruneTiles:function(){if(this._map){var t,i,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(i=this._tiles[t]).retain=i.current;for(t in this._tiles)if((i=this._tiles[t]).current&&!i.active){var n=i.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)li(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var o=Math.floor(t/2),s=Math.floor(i/2),r=e-1,a=new B(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?u.retain=!0:(u&&u.loaded&&(u.retain=!0),n<r&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new B(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){var i=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),i,i)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=this._clampZoom(Math.round(i));(void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom)&&(o=void 0);var s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();yt?wi(t.el,o,n):Pi(t.el,o)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),n=i.getZoomScale(e,this._tileZoom),o=i.project(t,this._tileZoom).floor(),s=i.getSize().divideBy(2*n);return new O(o.subtract(s),o.add(s))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new O(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new B(l.x,l.y))||(this._tiles[u].current=!1)}if(1<Math.abs(e-this._tileZoom))this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new B(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_<r.length;_++)this._addTile(r[_],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return D(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new N(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new B(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(li(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){mi(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=l,t.onmousemove=l,et&&this.options.opacity<1&&yi(t,this.options.opacity),st&&!rt&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,i){var e=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),a(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&M(a(this._tileReady,this,t,null,o)),Pi(o,e),this._tiles[n]={el:o,coords:t,current:!0},i.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,i,e){i&&this.fire("tileerror",{error:i,tile:e,coords:t});var n=this._tileCoordsToKey(t);(e=this._tiles[n])&&(e.loaded=+new Date,this._map._fadeAnimated?(yi(e.el,0),C(this._fadeFrame),this._fadeFrame=M(this._updateOpacity,this)):(e.active=!0,this._pruneTiles()),i||(mi(e.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:e.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),et||!this._map._fadeAnimated?M(this._pruneTiles,this):setTimeout(a(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new B(this._wrapX?r(t.x,this._wrapX):t.x,this._wrapY?r(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new O(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var un=hn.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=p(this,i)).detectRetina&&Ct&&0<i.maxZoom&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),st||this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url===t&&void 0===i&&(i=!0),this._url=t,i||this.redraw(),this},createTile:function(t,i){var e=document.createElement("img");return ki(e,"load",a(this._tileOnLoad,this,i,e)),ki(e,"error",a(this._tileOnError,this,i,e)),!this.options.crossOrigin&&""!==this.options.crossOrigin||(e.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),e.alt="",e.setAttribute("role","presentation"),e.src=this.getTileUrl(t),e},getTileUrl:function(t){var i={r:Ct?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var e=this._globalTileRange.max.y-t.y;this.options.tms&&(i.y=e),i["-y"]=e}return g(this._url,h(i,this.options))},_tileOnLoad:function(t,i){et?setTimeout(a(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom;return this.options.zoomReverse&&(t=i-t),t+this.options.zoomOffset},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=l,i.onerror=l,i.complete||(i.src=x,li(i),delete this._tiles[t]))},_removeTile:function(t){var i=this._tiles[t];if(i)return ht||i.el.setAttribute("src",x),hn.prototype._removeTile.call(this,t)},_tileReady:function(t,i,e){if(this._map&&(!e||e.getAttribute("src")!==x))return hn.prototype._tileReady.call(this,t,i,e)}});function ln(t,i){return new un(t,i)}var cn=un.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,i){this._url=t;var e=h({},this.defaultWmsParams);for(var n in i)n in this.options||(e[n]=i[n]);var o=(i=p(this,i)).detectRetina&&Ct?2:1,s=this.getTileSize();e.width=s.x*o,e.height=s.y*o,this.wmsParams=e},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=1.3<=this._wmsVersion?"crs":"srs";this.wmsParams[i]=this._crs.code,un.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=R(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(1.3<=this._wmsVersion&&this._crs===Ce?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=un.prototype.getTileUrl.call(this,t);return a+m(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,i){return h(this.wmsParams,t),i||this.redraw(),this}});un.WMS=cn,ln.wms=function(t,i){return new cn(t,i)};var _n=Ee.extend({options:{padding:.1,tolerance:0},initialize:function(t){p(this,t),u(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&mi(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=Li(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);yt?wi(this._container,a,e):Pi(this._container,a)},_reset:function(){for(var t in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new O(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),dn=_n.extend({getEvents:function(){var t=_n.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){_n.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");ki(t,"mousemove",this._onMouseMove,this),ki(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),ki(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){C(this._redrawRequest),delete this._ctx,li(this._container),Ai(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var t in this._redrawBounds=null,this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){_n.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Ct?2:1;Pi(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Ct&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){_n.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t);var i=(this._layers[u(t)]=t)._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[u(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if("string"==typeof t.options.dashArray){var i,e,n=t.options.dashArray.split(/[, ]+/),o=[];for(e=0;e<n.length;e++){if(i=Number(n[e]),isNaN(i))return;o.push(i)}t.options._dashArray=o}else t.options._dashArray=t.options.dashArray},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||M(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var i=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new O,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var i=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,i.x,i.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,i=this._redrawBounds;if(this._ctx.save(),i){var e=i.getSize();this._ctx.beginPath(),this._ctx.rect(i.min.x,i.min.y,e.x,e.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!i||t._pxBounds&&t._pxBounds.intersects(i))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?"lineTo":"moveTo"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;1!=o&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!=o&&e.restore(),this._fillStroke(e,t)}},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||"evenodd")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&!this._map._draggableMoved(i)&&(e=i);e&&(Gi(t),this._fireEvent([e],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var i=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,i)}},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(fi(this._container,"leaflet-interactive"),this._fireEvent([i],t,"mouseout"),this._hoveredLayer=null,this._mouseHoverThrottled=!1)},_handleMouseHover:function(t,i){if(!this._mouseHoverThrottled){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(mi(this._container,"leaflet-interactive"),this._fireEvent([n],t,"mouseover"),this._hoveredLayer=n)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t),this._mouseHoverThrottled=!0,setTimeout(L.bind(function(){this._mouseHoverThrottled=!1},this),32)}},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i=t._order;if(i){var e=i.next,n=i.prev;e&&((e.prev=n)?n.next=e:e&&(this._drawFirst=e),i.prev=this._drawLast,(this._drawLast.next=i).next=null,this._drawLast=i,this._requestRedraw(t))}},_bringToBack:function(t){var i=t._order;if(i){var e=i.next,n=i.prev;n&&((n.next=e)?e.prev=n:n&&(this._drawLast=n),i.prev=null,i.next=this._drawFirst,this._drawFirst.prev=i,this._drawFirst=i,this._requestRedraw(t))}}});function pn(t){return Et?new dn(t):null}var mn=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),fn={_initContainer:function(){this._container=ui("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(_n.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=mn("shape");mi(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=mn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[u(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;li(i),t.removeInteractiveTarget(i),delete this._layers[u(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=mn("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=v(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=mn("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){_i(t._container)},_bringToBack:function(t){di(t._container)}},gn=kt?mn:$,vn=_n.extend({getEvents:function(){var t=_n.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=gn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=gn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){li(this._container),Ai(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){_n.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),Pi(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=gn("path");t.options.className&&mi(i,t.options.className),t.options.interactive&&mi(i,"leaflet-interactive"),this._updateStyle(t),this._layers[u(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){li(t._path),t.removeInteractiveTarget(t._path),delete this._layers[u(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,Q(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){_i(t._path)},_bringToBack:function(t){di(t._path)}});function yn(t){return Zt||kt?new vn(t):null}kt&&vn.include(fn),$i.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this._createRenderer()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&pn(t)||yn(t)}});var xn=We.extend({initialize:function(t,i){We.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=D(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});vn.create=gn,vn.pointsToPath=Q,He.geometryToLayer=Fe,He.coordsToLatLng=Ve,He.coordsToLatLngs=qe,He.latLngToCoords=Ge,He.latLngsToCoords=Ke,He.getFeature=Ye,He.asFeature=Xe,$i.mergeOptions({boxZoom:!0});var wn=se.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){ki(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Ai(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){li(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),Qt(),Ti(),this._startPoint=this._map.mouseEventToContainerPoint(t),ki(document,{contextmenu:Wi,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ui("div","leaflet-zoom-box",this._container),mi(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new O(this._point,this._startPoint),e=i.getSize();Pi(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(li(this._box),fi(this._container,"leaflet-crosshair")),ti(),zi(),Ai(document,{contextmenu:Wi,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(a(this._resetState,this),0);var i=new N(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});$i.addInitHook("addHandler","boxZoom",wn),$i.mergeOptions({doubleClickZoom:!0});var Pn=se.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});$i.addInitHook("addHandler","doubleClickZoom",Pn),$i.mergeOptions({dragging:!0,inertia:!rt,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var Ln=se.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new ce(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}mi(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){fi(this._map._container,"leaflet-grab"),fi(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=D(this._map.options.maxBounds);this._offsetLimit=R(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1<this._positions.length&&50<t-this._times[0];)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)<Math.abs(s+e)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var i=this._map,e=i.options,n=!e.inertia||this._times.length<2;if(i.fire("dragend",t),n)i.fire("moveend");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=e.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(e.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(e.inertiaDeceleration*r),_=l.multiplyBy(-c/2).round();_.x||_.y?(_=i._limitOffset(_,i.options.maxBounds),M(function(){i.panBy(_,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})})):i.fire("moveend")}}});$i.addInitHook("addHandler","dragging",Ln),$i.mergeOptions({keyboard:!0,keyboardPanDelta:80});var bn=se.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),ki(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),Ai(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,i=document.documentElement,e=t.scrollTop||i.scrollTop,n=t.scrollLeft||i.scrollLeft;this._map._container.focus(),window.scrollTo(n,e)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var i,e,n=this._panKeys={},o=this.keyCodes;for(i=0,e=o.left.length;i<e;i++)n[o.left[i]]=[-1*t,0];for(i=0,e=o.right.length;i<e;i++)n[o.right[i]]=[t,0];for(i=0,e=o.down.length;i<e;i++)n[o.down[i]]=[0,t];for(i=0,e=o.up.length;i<e;i++)n[o.up[i]]=[0,-1*t]},_setZoomDelta:function(t){var i,e,n=this._zoomKeys={},o=this.keyCodes;for(i=0,e=o.zoomIn.length;i<e;i++)n[o.zoomIn[i]]=t;for(i=0,e=o.zoomOut.length;i<e;i++)n[o.zoomOut[i]]=-t},_addHooks:function(){ki(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){Ai(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys)n._panAnim&&n._panAnim._inProgress||(i=this._panKeys[e],t.shiftKey&&(i=I(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds));else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Wi(t)}}});$i.addInitHook("addHandler","keyboard",bn),$i.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var Tn=se.extend({addHooks:function(){ki(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){Ai(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=Ui(t),e=this._map.options.wheelDebounceTime;this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var n=Math.max(e-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(a(this._performZoom,this),n),Wi(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=e?Math.ceil(o/e)*e:o,r=t._limitZoom(i+(0<this._delta?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});$i.addInitHook("addHandler","scrollWheelZoom",Tn),$i.mergeOptions({tap:!0,tapTolerance:15});var zn=se.extend({addHooks:function(){ki(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Ai(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(ji(t),this._fireClick=!0,1<t.touches.length)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],e=i.target;this._startPos=this._newPos=new B(i.clientX,i.clientY),e.tagName&&"a"===e.tagName.toLowerCase()&&mi(e,"leaflet-active"),this._holdTimeout=setTimeout(a(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),this._simulateEvent("mousedown",i),ki(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),Ai(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&"a"===e.tagName.toLowerCase()&&fi(e,"leaflet-active"),this._simulateEvent("mouseup",i),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new B(i.clientX,i.clientY),this._simulateEvent("mousemove",i)},_simulateEvent:function(t,i){var e=document.createEvent("MouseEvents");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});Tt&&!bt&&$i.addInitHook("addHandler","tap",zn),$i.mergeOptions({touchZoom:Tt&&!rt,bounceAtZoomLimits:!0});var Mn=se.extend({addHooks:function(){mi(this._map._container,"leaflet-touch-zoom"),ki(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){fi(this._map._container,"leaflet-touch-zoom"),Ai(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),ki(document,"touchmove",this._onTouchMove,this),ki(document,"touchend",this._onTouchEnd,this),ji(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]),o=e.distanceTo(n)/this._startDist;if(this._zoom=i.getScaleZoom(o,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoom<i.getMinZoom()&&o<1||this._zoom>i.getMaxZoom()&&1<o)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1==o)return}else{var s=e._add(n)._divideBy(2)._subtract(this._centerPoint);if(1==o&&0===s.x&&0===s.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(s),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),C(this._animRequest);var r=a(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=M(r,this,!0),ji(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,C(this._animRequest),Ai(document,"touchmove",this._onTouchMove),Ai(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});$i.addInitHook("addHandler","touchZoom",Mn),$i.BoxZoom=wn,$i.DoubleClickZoom=Pn,$i.Drag=Ln,$i.Keyboard=bn,$i.ScrollWheelZoom=Tn,$i.Tap=zn,$i.TouchZoom=Mn,Object.freeze=i,t.version="1.6.0",t.Control=te,t.control=Qi,t.Browser=At,t.Evented=k,t.Mixin=ae,t.Util=S,t.Class=E,t.Handler=se,t.extend=h,t.bind=a,t.stamp=u,t.setOptions=p,t.DomEvent=Xi,t.DomUtil=Zi,t.PosAnimation=Ji,t.Draggable=ce,t.LineUtil=xe,t.PolyUtil=Le,t.Point=B,t.point=I,t.Bounds=O,t.bounds=R,t.Transformation=G,t.transformation=K,t.Projection=ze,t.LatLng=j,t.latLng=W,t.LatLngBounds=N,t.latLngBounds=D,t.CRS=F,t.GeoJSON=He,t.geoJSON=$e,t.geoJson=Qe,t.Layer=Ee,t.LayerGroup=Ze,t.layerGroup=function(t,i){return new Ze(t,i)},t.FeatureGroup=ke,t.featureGroup=function(t){return new ke(t)},t.ImageOverlay=tn,t.imageOverlay=function(t,i,e){return new tn(t,i,e)},t.VideoOverlay=en,t.videoOverlay=function(t,i,e){return new en(t,i,e)},t.SVGOverlay=nn,t.svgOverlay=function(t,i,e){return new nn(t,i,e)},t.DivOverlay=on,t.Popup=sn,t.popup=function(t,i){return new sn(t,i)},t.Tooltip=rn,t.tooltip=function(t,i){return new rn(t,i)},t.Icon=Be,t.icon=function(t){return new Be(t)},t.DivIcon=an,t.divIcon=function(t){return new an(t)},t.Marker=Oe,t.marker=function(t,i){return new Oe(t,i)},t.TileLayer=un,t.tileLayer=ln,t.GridLayer=hn,t.gridLayer=function(t){return new hn(t)},t.SVG=vn,t.svg=yn,t.Renderer=_n,t.Canvas=dn,t.canvas=pn,t.Path=Re,t.CircleMarker=Ne,t.circleMarker=function(t,i){return new Ne(t,i)},t.Circle=De,t.circle=function(t,i,e){return new De(t,i,e)},t.Polyline=je,t.polyline=function(t,i){return new je(t,i)},t.Polygon=We,t.polygon=function(t,i){return new We(t,i)},t.Rectangle=xn,t.rectangle=function(t,i){return new xn(t,i)},t.Map=$i,t.map=function(t,i){return new $i(t,i)};var Cn=window.L;t.noConflict=function(){return window.L=Cn,this},window.L=t});
\ No newline at end of file
index 337ceb25bf6d16913b96659f46cd854785906291..9c8dee55048d1387da883e3a7c354f4d409adf6a 100644 (file)
@@ -20,11 +20,27 @@ function parse_and_normalize_geojson_string(raw_string){
 jQuery(document).ready(function(){
 
     if ( !$('#search-page,#reverse-page').length ){ return; }
-    
+
     var is_reverse_search = !!( $('#reverse-page').length );
 
     $('#q').focus();
 
+        $(document).ready(function() {
+                $("input[name='query-selector']").click(function(){
+                var query_val = $("input[name='query-selector']:checked").val() ;
+                if (query_val == "simple") {
+                    $("div.form-group-structured").hide();
+                    $("div.form-group-simple").show();
+                    $('.form-group-structured').find('input:text').val('');
+                }
+                else if (query_val == "structured") {
+                    $("div.form-group-simple").hide();
+                    $("div.form-group-structured").show();
+                    $('.form-group-simple').find('input:text').val('');
+                }
+        });
+    });
+
     map = new L.map('map', {
                 attributionControl: (nominatim_map_init.tile_attribution && nominatim_map_init.tile_attribution.length),
                 scrollWheelZoom:    true, // !L.Browser.touch,
@@ -32,7 +48,6 @@ jQuery(document).ready(function(){
             });
 
     L.tileLayer(nominatim_map_init.tile_url, {
-        noWrap: true, // otherwise we end up with click coordinates like latitude -728
         // moved to footer
         attribution: (nominatim_map_init.tile_attribution || null ) //'&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
     }).addTo(map);
@@ -78,6 +93,9 @@ jQuery(document).ready(function(){
 
     function display_map_position(mouse_lat_lng){
 
+        if (mouse_lat_lng) {
+            mouse_lat_lng = map.wrapLatLng(mouse_lat_lng);
+        }
         html_mouse = "mouse position " + (mouse_lat_lng ? [mouse_lat_lng.lat.toFixed(5), mouse_lat_lng.lng.toFixed(5)].join(',') : '-');
         html_click = "last click: " + (last_click_latlng ? [last_click_latlng.lat.toFixed(5),last_click_latlng.lng.toFixed(5)].join(',') : '-');
 
@@ -92,10 +110,11 @@ jQuery(document).ready(function(){
 
         $('#map-position-inner').html([html_center,html_zoom,html_viewbox,html_click,html_mouse].join('<br/>'));
 
+        var center_lat_lng = map.wrapLatLng(map.getCenter());
         var reverse_params = {
-            // lat: map.getCenter().lat.toFixed(5),
-            // lon: map.getCenter().lng.toFixed(5),
-            // zoom: 2,
+            lat: center_lat_lng.lat.toFixed(5),
+            lon: center_lat_lng.lng.toFixed(5),
+            zoom: map.getZoom(),
             format: 'html'
         }
         $('#switch-to-reverse').attr('href', 'reverse.php?' + $.param(reverse_params));
@@ -134,12 +153,22 @@ jQuery(document).ready(function(){
 
 
     function map_viewbox_as_string() {
-        // since .toBBoxString() doesn't round numbers
+        var bounds = map.getBounds();
+        var west = bounds.getWest();
+        var east = bounds.getEast();
+
+        if ((east - west) >= 360) { // covers more than whole planet
+            west = map.getCenter().lng-179.999;
+            east = map.getCenter().lng+179.999;
+        }
+        east = L.latLng(77, east).wrap().lng;
+        west = L.latLng(77, west).wrap().lng;
+
         return [
-            map.getBounds().getSouthWest().lng.toFixed(5), // left
-            map.getBounds().getNorthEast().lat.toFixed(5), // top
-            map.getBounds().getNorthEast().lng.toFixed(5), // right
-            map.getBounds().getSouthWest().lat.toFixed(5)  // bottom
+            west.toFixed(5), // left
+            bounds.getNorth().toFixed(5), // top
+            east.toFixed(5), // right
+            bounds.getSouth().toFixed(5) // bottom
         ].join(',');
     }
     function map_link_to_osm(){
@@ -172,7 +201,7 @@ jQuery(document).ready(function(){
             circle.on('click', function(){
                 highlight_result(position);
             });
-            layerGroup.addLayer(circle);            
+            layerGroup.addLayer(circle);
         }
         if (result.aBoundingBox){
 
@@ -236,7 +265,7 @@ jQuery(document).ready(function(){
     if ( is_reverse_search ){
         map.on('click', function(e){
             $('form input[name=lat]').val( e.latlng.lat);
-            $('form input[name=lon]').val( e.latlng.lng);
+            $('form input[name=lon]').val( e.latlng.wrap().lng);
             $('form').submit();
         });
 
@@ -273,6 +302,30 @@ jQuery(document).ready(function(){
 });
 
 
+jQuery(document).ready(function(){
+
+    if ( !$('#details-index-page').length ){ return; }
+
+    $('#form-by-type-and-id,#form-by-osm-url').on('submit', function(e){
+        e.preventDefault();
+
+        var val = $(this).find('input[type=edit]').val();
+        var matches = val.match(/^\s*([NWR])(\d+)\s*$/i);
+
+        if (!matches) {
+            matches = val.match(/\/(relation|way|node)\/(\d+)\s*$/);
+        }
+
+        if (matches) {
+            $(this).find('input[name=osmtype]').val(matches[1].charAt(0).toUpperCase());
+            $(this).find('input[name=osmid]').val(matches[2]);
+            $(this).get(0).submit();
+        } else {
+            alert('invalid input');
+        }
+    });
+});
+
 jQuery(document).ready(function(){
 
     if ( !$('#details-page').length ){ return; }
old mode 100755 (executable)
new mode 100644 (file)
index f09506a..7675ae1
@@ -1,7 +1,5 @@
 <?php
-@define('CONST_ConnectionBucket_PageType', 'Reverse');
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-website.php');
 require_once(CONST_BasePath.'/lib/log.php');
 require_once(CONST_BasePath.'/lib/PlaceLookup.php');
@@ -11,12 +9,14 @@ ini_set('memory_limit', '200M');
 $oParams = new Nominatim\ParameterParser();
 
 // Format for output
-$sOutputFormat = $oParams->getSet('format', array('xml', 'json', 'geojson'), 'xml');
+$sOutputFormat = $oParams->getSet('format', array('xml', 'json', 'jsonv2', 'geojson', 'geocodejson'), 'xml');
+set_exception_handler_by_format($sOutputFormat);
 
 // Preferred language
 $aLangPrefOrder = $oParams->getPreferredLanguages();
 
-$oDB =& getDB();
+$oDB = new Nominatim\DB();
+$oDB->connect();
 
 $hLog = logStart($oDB, 'place', $_SERVER['QUERY_STRING'], $aLangPrefOrder);
 
@@ -49,8 +49,22 @@ foreach ($aOsmIds as $sItem) {
             $oResult = $oPlace;
             unset($oResult['aAddress']);
             if (isset($oPlace['aAddress'])) $oResult['address'] = $oPlace['aAddress'];
-            unset($oResult['langaddress']);
-            $oResult['name'] = $oPlace['langaddress'];
+            if ($sOutputFormat != 'geocodejson') {
+                unset($oResult['langaddress']);
+                $oResult['name'] = $oPlace['langaddress'];
+            }
+
+            $aOutlineResult = $oPlaceLookup->getOutlines(
+                $oPlace['place_id'],
+                $oPlace['lon'],
+                $oPlace['lat'],
+                Nominatim\ClassTypes\getProperty($oPlace, 'defdiameter', 0.0001)
+            );
+
+            if ($aOutlineResult) {
+                $oResult = array_merge($oResult, $aOutlineResult);
+            }
+
             $aSearchResults[] = $oResult;
         }
     }
@@ -67,5 +81,7 @@ $bShowPolygons = '';
 $aExcludePlaceIDs = array();
 $sMoreURL = '';
 
+logEnd($oDB, $hLog, 1);
+
 $sOutputTemplate = ($sOutputFormat == 'jsonv2') ? 'json' : $sOutputFormat;
 include(CONST_BasePath.'/lib/template/search-'.$sOutputTemplate.'.php');
old mode 100755 (executable)
new mode 100644 (file)
index 0f49183..c5fbafc
@@ -1,27 +1,28 @@
 <?php
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-website.php');
 require_once(CONST_BasePath.'/lib/log.php');
 require_once(CONST_BasePath.'/lib/output.php');
 ini_set('memory_limit', '200M');
 
 $oParams = new Nominatim\ParameterParser();
+$sOutputFormat = $oParams->getSet('format', array('html', 'json'), 'html');
+set_exception_handler_by_format($sOutputFormat);
 
-$sOutputFormat = 'html';
 $iDays = $oParams->getInt('days', false);
 $bReduced = $oParams->getBool('reduced', false);
 $sClass = $oParams->getString('class', false);
 
-$oDB =& getDB();
+$oDB = new Nominatim\DB();
+$oDB->connect();
 
-$iTotalBroken = (int) chksql($oDB->getOne('select count(*) from import_polygon_error'));
+$iTotalBroken = (int) $oDB->getOne('SELECT count(*) FROM import_polygon_error');
 
 $aPolygons = array();
 while ($iTotalBroken && empty($aPolygons)) {
-    $sSQL = 'select osm_type as "type",osm_id as "id",class as "key",type as "value",name->\'name\' as "name",';
-    $sSQL .= 'country_code as "country",errormessage as "error message",updated';
-    $sSQL .= ' from import_polygon_error';
+    $sSQL = 'SELECT osm_type, osm_id, class, type, name->\'name\' as "name",';
+    $sSQL .= 'country_code, errormessage, updated';
+    $sSQL .= ' FROM import_polygon_error';
 
     $aWhere = array();
     if ($iDays) {
@@ -33,11 +34,11 @@ while ($iTotalBroken && empty($aPolygons)) {
     if ($sClass) $sWhere[] = "class = '".pg_escape_string($sClass)."'";
 
     if (!empty($aWhere)) {
-        $sSQL .= ' where '.join(' and ', $aWhere);
+        $sSQL .= ' WHERE '.join(' and ', $aWhere);
     }
 
-    $sSQL .= ' order by updated desc limit 1000';
-    $aPolygons = chksql($oDB->getAll($sSQL));
+    $sSQL .= ' ORDER BY updated desc LIMIT 1000';
+    $aPolygons = $oDB->getAll($sSQL);
 }
 
 if (CONST_Debug) {
@@ -45,93 +46,8 @@ if (CONST_Debug) {
     exit;
 }
 
-?>
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8"/>
-    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
-    
-    <title>Nominatim Broken Polygon Data</title>
-    
-    <meta name="description" content="List of broken OSM polygon data by date" lang="en-US" />
-
-</head>
-
-<body>
-<style type="text/css">
-table {
-    border-width: 1px;
-    border-spacing: 0px;
-    border-style: solid;
-    border-color: gray;
-    border-collapse: collapse;
-    background-color: white;
-    margin: 10px;
-}
-table th {
-    border-width: 1px;
-    padding: 2px;
-    border-style: inset;
-    border-color: gray;
-    border-left-color: #ddd;
-    border-right-color: #ddd;
-    background-color: #eee;
-    -moz-border-radius: 0px 0px 0px 0px;
+if ($sOutputFormat == 'json') {
+    echo javascript_renderData($aPolygons);
+} else {
+    include(CONST_BasePath.'/lib/template/polygons-html.php');
 }
-table td {
-    border-width: 1px;
-    padding: 2px;
-    border-style: inset;
-    border-color: gray;
-    border-left-color: #ddd;
-    border-right-color: #ddd;
-    background-color: white;
-    -moz-border-radius: 0px 0px 0px 0px;
-}
-</style>
-
-<?php
-
-echo "<p>Total number of broken polygons: $iTotalBroken</p>";
-if (!$aPolygons) exit;
-echo '<table>';
-echo '<tr>';
-//var_dump($aPolygons[0]);
-foreach ($aPolygons[0] as $sCol => $sVal) {
-    echo '<th>'.$sCol.'</th>';
-}
-echo '<th>&nbsp;</th>';
-echo '</tr>';
-$aSeen = array();
-foreach ($aPolygons as $aRow) {
-    if (isset($aSeen[$aRow['type'].$aRow['id']])) continue;
-    $aSeen[$aRow['type'].$aRow['id']] = 1;
-    echo '<tr>';
-    foreach ($aRow as $sCol => $sVal) {
-        switch ($sCol) {
-            case 'error message':
-                if (preg_match('/Self-intersection\\[([0-9.\\-]+) ([0-9.\\-]+)\\]/', $sVal, $aMatch)) {
-                    $aRow['lat'] = $aMatch[2];
-                    $aRow['lon'] = $aMatch[1];
-                    echo '<td><a href="https://www.openstreetmap.org/?lat='.$aMatch[2].'&lon='.$aMatch[1].'&zoom=18&layers=M&'.$sOSMType.'='.$aRow['id'].'">'.($sVal?$sVal:'&nbsp;').'</a></td>';
-                } else {
-                    echo '<td>'.($sVal?$sVal:'&nbsp;').'</td>';
-                }
-                break;
-            case 'id':
-                echo '<td>'.osmLink($aRow).'</td>';
-                break;
-            default:
-                echo '<td>'.($sVal?$sVal:'&nbsp;').'</td>';
-                break;
-        }
-    }
-    echo '<td><a href="http://localhost:8111/import?url=https://www.openstreetmap.org/api/0.6/'.$sOSMType.'/'.$aRow['id'].'/full" target="josm">josm</a></td>';
-    echo '</tr>';
-}
-echo '</table>';
-
-?>
-</body>
-</html>
old mode 100755 (executable)
new mode 100644 (file)
index a726180..7b9ef3b
@@ -1,7 +1,5 @@
 <?php
-@define('CONST_ConnectionBucket_PageType', 'Reverse');
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-website.php');
 require_once(CONST_BasePath.'/lib/log.php');
 require_once(CONST_BasePath.'/lib/PlaceLookup.php');
@@ -13,11 +11,13 @@ $oParams = new Nominatim\ParameterParser();
 
 // Format for output
 $sOutputFormat = $oParams->getSet('format', array('html', 'xml', 'json', 'jsonv2', 'geojson', 'geocodejson'), 'xml');
+set_exception_handler_by_format($sOutputFormat);
 
 // Preferred language
 $aLangPrefOrder = $oParams->getPreferredLanguages();
 
-$oDB =& getDB();
+$oDB = new Nominatim\DB();
+$oDB->connect();
 
 $hLog = logStart($oDB, 'reverse', $_SERVER['QUERY_STRING'], $aLangPrefOrder);
 
@@ -67,6 +67,7 @@ if (isset($aPlace)) {
     $aPlace = array();
 }
 
+logEnd($oDB, $hLog, count($aPlace) ? 1 : 0);
 
 if (CONST_Debug) {
     var_dump($aPlace);
@@ -74,13 +75,16 @@ if (CONST_Debug) {
 }
 
 if ($sOutputFormat == 'html') {
-    $sDataDate = chksql($oDB->getOne("select TO_CHAR(lastimportdate,'YYYY/MM/DD HH24:MI')||' GMT' from import_status limit 1"));
+    $sDataDate = $oDB->getOne("select TO_CHAR(lastimportdate,'YYYY/MM/DD HH24:MI')||' GMT' from import_status limit 1");
     $sTileURL = CONST_Map_Tile_URL;
     $sTileAttribution = CONST_Map_Tile_Attribution;
 } elseif ($sOutputFormat == 'geocodejson') {
     $sQuery = $fLat.','.$fLon;
     if (isset($aPlace['place_id'])) {
-        $fDistance = chksql($oDB->getOne('SELECT ST_Distance(ST_SetSRID(ST_Point('.$fLon.','.$fLat.'),4326), centroid) FROM placex where place_id='.$aPlace['place_id']));
+        $fDistance = $oDB->getOne(
+            'SELECT ST_Distance(ST_SetSRID(ST_Point(:lon,:lat),4326), centroid) FROM placex where place_id = :placeid',
+            array(':lon' => $fLon, ':lat' => $fLat, ':placeid' => $aPlace['place_id'])
+        );
     }
 }
 
old mode 100755 (executable)
new mode 100644 (file)
index 0ebf181..5570565
@@ -1,14 +1,13 @@
 <?php
-@define('CONST_ConnectionBucket_PageType', 'Search');
 
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-website.php');
 require_once(CONST_BasePath.'/lib/log.php');
 require_once(CONST_BasePath.'/lib/Geocode.php');
 require_once(CONST_BasePath.'/lib/output.php');
 ini_set('memory_limit', '200M');
 
-$oDB =& getDB();
+$oDB = new Nominatim\DB();
+$oDB->connect();
 $oParams = new Nominatim\ParameterParser();
 
 $oGeocode = new Nominatim\Geocode($oDB);
@@ -27,6 +26,7 @@ if (CONST_Search_ReversePlanForAll
 
 // Format for output
 $sOutputFormat = $oParams->getSet('format', array('html', 'xml', 'json', 'jsonv2', 'geojson', 'geocodejson'), 'html');
+set_exception_handler_by_format($sOutputFormat);
 
 $sForcedGeometry = ($sOutputFormat == 'html') ? 'geojson' : null;
 $oGeocode->loadParamArray($oParams, $sForcedGeometry);
@@ -50,6 +50,7 @@ $oGeocode->setQueryFromParams($oParams);
 
 if (!$oGeocode->getQueryString()
     && isset($_SERVER['PATH_INFO'])
+    && strlen($_SERVER['PATH_INFO']) > 0
     && $_SERVER['PATH_INFO'][0] == '/'
 ) {
     $sQuery = substr(rawurldecode($_SERVER['PATH_INFO']), 1);
@@ -66,7 +67,7 @@ $hLog = logStart($oDB, 'search', $oGeocode->getQueryString(), $aLangPrefOrder);
 $aSearchResults = $oGeocode->lookup();
 
 if ($sOutputFormat=='html') {
-    $sDataDate = chksql($oDB->getOne("select TO_CHAR(lastimportdate,'YYYY/MM/DD HH24:MI')||' GMT' from import_status limit 1"));
+    $sDataDate = $oDB->getOne("select TO_CHAR(lastimportdate,'YYYY/MM/DD HH24:MI')||' GMT' from import_status limit 1");
 }
 logEnd($oDB, $hLog, count($aSearchResults));
 
index c0c379d0a983e6dd6d331d5a0089a75866570952..0d48354492b7155602edffa369ef8f05f97cc783 100644 (file)
@@ -1,8 +1,5 @@
 <?php
 
-@define('CONST_ConnectionBucket_PageType', 'Status');
-
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
 require_once(CONST_BasePath.'/lib/init-website.php');
 require_once(CONST_BasePath.'/lib/ParameterParser.php');
 require_once(CONST_BasePath.'/lib/Status.php');
@@ -10,9 +7,7 @@ require_once(CONST_BasePath.'/lib/Status.php');
 $oParams = new Nominatim\ParameterParser();
 $sOutputFormat = $oParams->getSet('format', array('text', 'json'), 'text');
 
-$oDB = DB::connect(CONST_Database_DSN, false);
-$oStatus = new Nominatim\Status($oDB);
-
+$oDB = new Nominatim\DB();
 
 if ($sOutputFormat == 'json') {
     header('content-type: application/json; charset=UTF-8');
@@ -20,6 +15,7 @@ if ($sOutputFormat == 'json') {
 
 
 try {
+    $oStatus = new Nominatim\Status($oDB);
     $oStatus->status();
 } catch (Exception $oErr) {
     if ($sOutputFormat == 'json') {
diff --git a/wikidata/create.sql b/wikidata/create.sql
deleted file mode 100644 (file)
index f6327bd..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-DROP TABLE entity;
-DROP TABLE entity_label;
-DROP TABLE entity_description;
-DROP TABLE entity_alias;
-DROP TABLE entity_link;
-DROP TABLE entity_property;
-
-CREATE TABLE entity (
-    entity_id           bigint,
-    title               text,
-    pid                 bigint,
-    qid                 bigint,
-    datatype            text,
-    CONSTRAINT pk_entity PRIMARY KEY(entity_id)
-);
-
-CREATE TABLE entity_label  (
-    entity_id           bigint,
-    language            text,
-    label               text,
-    CONSTRAINT pk_entity_label PRIMARY KEY(entity_id,language)
-);
-
-CREATE TABLE entity_description  (
-    entity_id           bigint,
-    language            text,
-    description         text,
-    CONSTRAINT pk_entity_description PRIMARY KEY(entity_id,language)
-);
-
-CREATE TABLE entity_alias  (
-    entity_id           bigint,
-    language            text,
-    alias               text,
-    CONSTRAINT pk_entity_alias PRIMARY KEY(entity_id,language,alias)
-);
-
-CREATE TABLE entity_link  (
-    entity_id           bigint,
-    target              text,
-    value               text,
-    CONSTRAINT pk_entity_link PRIMARY KEY(entity_id,target)
-);
-
-CREATE TABLE entity_link_hit  (
-    entity_id           bigint,
-    target              text,
-    value               text,
-    hits               bigint,
-    CONSTRAINT pk_entity_link_hit PRIMARY KEY(entity_id,target)
-);
-
-CREATE TABLE link_hit  (
-    target              text,
-    value               text,
-    hits               bigint,
-    CONSTRAINT pk_link_hit PRIMARY KEY(target,value)
-);
-
-CREATE TABLE entity_property  (
-    entity_id           bigint,
-    order_id            bigint,
-    pid                 bigint,
-    string              text,
-    toqid               bigint,
-    location            geometry,
-    datetime           timestamp with time zone,
-    CONSTRAINT pk_entity_property PRIMARY KEY(entity_id, order_id)
-);
-
-CREATE TABLE import_link_hit  (
-    target              text,
-    value               text,
-    hits               bigint
-);
diff --git a/wikidata/import.sh b/wikidata/import.sh
deleted file mode 100755 (executable)
index 97621f1..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-PSQL=/usr/lib/postgresql/9.2/bin/psql -d wikidata
-
-cat create.sql | $PSQL
-
-cat entity.csv | $PSQL -c "COPY entity from STDIN WITH CSV"
-cat entity_label.csv | $PSQL -c "COPY entity_label from STDIN WITH CSV"
-cat entity_description.csv | $PSQL -c "COPY entity_description from STDIN WITH CSV"
-cat entity_alias.csv | $PSQL -c "COPY entity_alias from STDIN WITH CSV"
-cat entity_link.csv | $PSQL -c "COPY entity_link from STDIN WITH CSV"
-cat entity_property.csv | $PSQL -c "COPY entity_property from STDIN WITH CSV"
-
-$PSQL -c "create index idx_entity_link_target on entity_link using btree (target,value)"
-$PSQL -c "create index idx_entity_qid on entity using btree (qid)"
-$PSQL -c "create table property_label_en as select pid,null::text as label from entity where pid is not null"
-$PSQL -c "update property_label_en set label = x.label from (select pid,label,language from entity join entity_label using (entity_id) where pid is not null and language = 'en') as x where x.pid = property_label_en.pid"
-$PSQL -c "create unique index idx_property_label_en on property_label_en using btree (pid)"
-$PSQL -c "alter table entity add column label_en text"
-$PSQL -c "update entity set label_en = label from entity_label where entity.entity_id = entity_label.entity_id and language = 'en'"
-$PSQL -c "alter table entity add column description_en text"
-$PSQL -c "update entity set description_en = description from entity_description where entity.entity_id = entity_description.entity_id and language = 'en'"
-
-cat totals.txt | $PSQL -c "COPY import_link_hit from STDIN WITH CSV DELIMITER ' '"
-$PSQL -c "truncate link_hit"
-$PSQL -c "insert into link_hit select target||'wiki', replace(catch_decode_url_part(value), '_', ' '), sum(hits) from import_link_hit where replace(catch_decode_url_part(value), '_', ' ') is not null group by target||'wiki', replace(dcatch_decode_url_part(value), '_', ' ')"
-$PSQL -c "truncate entity_link_hit"
-$PSQL -c "insert into entity_link_hit select entity_id, target, value, coalesce(hits,0) from entity_link left outer join link_hit using (target, value)"
-$PSQL -c "create table entity_hit as select entity_id,sum(hits) as hits from entity_link_hit group by entity_id"
-$PSQL -c "create unique index idx_entity_hit on entity_hit using btree (entity_id)"
diff --git a/wikidata/parse.php b/wikidata/parse.php
deleted file mode 100755 (executable)
index 1bef50e..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/usr/bin/php -Cq
-<?php
-
-$hFile = @fopen('wikidatawiki-20130623-pages-articles.xml', 'r');
-
-$hFileEntity = fopen('entity.csv', 'w');
-$hFileEntityLabel = fopen('entity_label.csv', 'w');
-$hFileEntityDescription = fopen('entity_description.csv', 'w');
-$hFileEntityAlias = fopen('entity_alias.csv', 'w');
-$hFileEntityLink = fopen('entity_link.csv', 'w');
-$hFileEntityProperty = fopen('entity_property.csv', 'w');
-
-$iCount = 0;
-
-$sTitle = '';
-$iNS = false;
-$iID = false;
-
-if ($hFile) {
-    while (($sLine = fgets($hFile, 4000000)) !== false) {
-        if (substr($sLine, 0, 11) == '    <title>') {
-            $sTitle = substr($sLine, 11, -9);
-        } elseif (substr($sLine, 0, 8) == '    <ns>') {
-            $iNS = (int)substr($sLine, 8, -6);
-        } elseif (substr($sLine, 0, 8) == '    <id>') {
-            $iID = (int)substr($sLine, 8, -6);
-        } elseif (substr($sLine, 0, 33) == '      <text xml:space="preserve">') {
-            if ($iNS == -2) continue;
-            if ($iNS == -1) continue;
-            if ($iNS == 1) continue;
-            if ($iNS == 2) continue;
-            if ($iNS == 3) continue;
-            if ($iNS == 4) continue;
-            if ($iNS == 5) continue;
-            if ($iNS == 6) continue;
-            if ($iNS == 7) continue;
-            if ($iNS == 8) continue;
-            if ($iNS == 9) continue;
-            if ($iNS == 10) continue;
-            if ($iNS == 11) continue;
-            if ($iNS == 12) continue;
-            if ($iNS == 13) continue;
-            if ($iNS == 14) continue;
-            if ($iNS == 15) continue;
-            if ($iNS == 121) continue;
-            if ($iNS == 123) continue;
-            if ($iNS == 829) continue;
-            if ($iNS == 1198) continue;
-            if ($iNS == 1199) continue;
-            $sText = html_entity_decode(substr($sLine, 33, -8), ENT_COMPAT, 'UTF-8');
-            $aArticle = json_decode($sText, true);
-
-            if (array_diff(array_keys($aArticle), array('label', 'description', 'aliases', 'links', 'entity', 'claims', 'datatype')) != array()) {
-                // DEBUG
-                var_dump($sTitle);
-                var_dump(array_keys($aArticle));
-                var_dump($aArticle);
-                exit;
-            }
-
-            $iPID = $iQID = null;
-            if ($aArticle['entity'][0] == 'p') {
-                $iPID = (int) substr($aArticle['entity'], 1);
-            } elseif ($aArticle['entity'][0] == 'q') {
-                $iQID = (int) substr($aArticle['entity'], 1);
-            } else {
-                continue;
-            }
-
-            echo '.';
-
-            fputcsv($hFileEntity, array($iID, $sTitle, $iPID, $iQID, @$aArticle['datatype']));
-
-            foreach ($aArticle['label'] as $sLang => $sLabel) {
-                fputcsv($hFileEntityLabel, array($iID, $sLang, $sLabel));
-                // echo "insert into entity_label values (".$iID.",'".pg_escape_string($sLang)."','".pg_escape_string($sLabel)."');\n";
-            }
-
-            foreach ($aArticle['description'] as $sLang => $sLabel) {
-                fputcsv($hFileEntityDescription, array($iID, $sLang, $sLabel));
-                // echo "insert into entity_description values (".$iID.",'".pg_escape_string($sLang)."','".pg_escape_string($sLabel)."');\n";
-            }
-
-            foreach ($aArticle['aliases'] as $sLang => $aLabels) {
-                $aUniqueAlias = array();
-                foreach ($aLabels as $sLabel) {
-                    if (!isset($aUniqueAlias[$sLabel]) && $sLabel) {
-                        fputcsv($hFileEntityAlias, array($iID, $sLang, $sLabel));
-                        // echo "insert into entity_alias values (".$iID.",'".pg_escape_string($sLang)."','".pg_escape_string($sLabel)."');\n";
-                        $aUniqueAlias[$sLabel] = true;
-                    }
-                }
-            }
-
-            foreach ($aArticle['links'] as $sLang => $sLabel) {
-                fputcsv($hFileEntityLink, array($iID, $sLang, $sLabel));
-                // echo "insert into entity_link values (".$iID.",'".pg_escape_string($sLang)."','".pg_escape_string($sLabel)."');\n";
-            }
-
-
-            if (isset($aArticle['claims'])) {
-                //
-                foreach ($aArticle['claims'] as $iClaim => $aClaim) {
-                    //
-                    $bFail = false;
-                    if ($aClaim['m'][0] == 'novalue') continue;
-                    if ($aClaim['m'][0] == 'somevalue') continue;
-                    $iPID = (int)$aClaim['m'][1];
-                    if ($aClaim['m'][0] != 'value') $bFail = true;
-                    if ($aClaim['m'][2]== 'wikibase-entityid') {
-                        //
-                        if ($aClaim['m'][3]['entity-type'] != 'item') $bFail = true;
-                        fputcsv($hFileEntityProperty, array($iID, $iClaim, $iPID, null, $aClaim['m'][3]['numeric-id'], null, null));
-                        // echo "insert into entity_property values (nextval('seq_entity_property'),".$iID.",".$iPID.",null,".$aClaim['m'][3]['numeric-id'].",null);\n";
-                    } elseif ($aClaim['m'][2] == 'globecoordinate') {
-                        //
-                        if ($aClaim['m'][3]['globe'] != 'http://www.wikidata.org/entity/Q2') $bFail = true;
-                        fputcsv(
-                            $hFileEntityProperty,
-                            array(
-                             $iID,
-                             $iClaim,
-                             $iPID,
-                             null,
-                             null,
-                             'SRID=4326;POINT('.((float) $aClaim['m'][3]['longitude']).' '.((float)$aClaim['m'][3]['latitude']).')', null
-                            )
-                        );
-                        /* echo "insert into entity_property values (nextval('seq_entity_property'),";
-                         * echo $iID.",".$iPID.",null,null,ST_SetSRID(ST_MakePoint(".((float)$aClaim['m'][3]['longitude']);
-                         * echo ", ".((float)$aClaim['m'][3]['latitude'])."),4326));\n";
-                         */
-                    } elseif ($aClaim['m'][2] == 'time') {
-                        // TODO!
-                        /*
-                        if ($aClaim['m'][3]['calendarmodel'] == 'http://www.wikidata.org/entity/Q1985727') {
-                            // Gregorian
-                            if (preg_match('#(\\+|-)0*([0-9]{4})-([0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2})Z#', $aClaim['m'][3]['time'], $aMatch)) {
-                                if ((int)$aMatch[2] < 4700 && ) {
-                                    $sDateString = $aMatch[2].'-'.$aMatch[3].($aClaim['m'][3]['timezone']>=0?'+':'').$aClaim['m'][3]['timezone'].($aMatch[1]=='-'?' bc':'');
-                                    fputcsv($hFileEntityProperty, array($iID,$iClaim,$iPID,null,null,null,$sDateString));
-                                }
-                            } else {
-                                // $bFail = true;
-                            }
-                        } elseif ( $aClaim['m'][3]['calendarmodel'] != 'http://www.wikidata.org/entity/Q1985786') {
-                            // Julian
-                            if (preg_match('#(\\+|-)0*([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}:[0-9]{2}:[0-9]{2})Z#', $aClaim['m'][3]['time'], $aMatch)) {
-                                var_dump($aMatch);
-                                exit;
-                                $iDayCount = juliantojd(2, 11, 1732);
-                                var_dump($iDayCount, jdtogregorian($iDayCount));
-                        } else {
-                            $bFail = true;
-                            exit;
-                        }
-                        exit;
-                    } else {
-                        // $bFail = true;
-                    }
-                    */
-                    } elseif ($aClaim['m'][2] == 'string') {
-                        // echo "insert into entity_property values (nextval('seq_entity_property'),".$iID.",".$iPID.",'".pg_escape_string($aClaim['m'][3])."',null,null);\n";
-                        fputcsv($hFileEntityProperty, array($iID, $iClaim, $iPID, $aClaim['m'][3], null, null, null));
-                    } else {
-                        $bFail = true;
-                    }
-
-                    // Don't care about sources:    if ($aClaim['refs'] != array()) $bFail = true;
-
-                    if ($bFail) {
-                        var_dump($sTitle);
-                        var_dump($aClaim);
-                    } else {
-                        // process
-                    }
-                }
-            }
-        }
-    }
-    fclose($hFile);
-    fclose($hFileEntity);
-    fclose($hFileEntityLabel);
-    fclose($hFileEntityDescription);
-    fclose($hFileEntityAlias);
-    fclose($hFileEntityLink);
-    fclose($hFileEntityProperty);
-}
diff --git a/wikidata/pull_wikipedia_logs.php b/wikidata/pull_wikipedia_logs.php
deleted file mode 100644 (file)
index 3e17206..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-for ($iTimestamp = mktime(0, 0, 0, 5, 1, 2013); $iTimestamp < mktime(0, 0, 0, 6, 15, 2013); $iTimestamp += 24*60*60) {
-    $sYear = date('Y', $iTimestamp);
-    $sMonth = date('Y-m', $iTimestamp);
-    $sDay = date('Ymd', $iTimestamp);
-
-    for ($iHour = 0; $iHour < 24; $iHour++) {
-        $sFilename = sprintf('pagecounts-'.$sDay.'-%02d0000', $iHour);
-        echo $sFilename."\n";
-        if (!file_exists($sFilename.'.gz')) {
-            exec('wget http://dumps.wikimedia.org/other/pagecounts-raw/'.$sYear.'/'.$sMonth.'/'.$sFilename.'.gz');
-        }
-
-        exec('gzip -dc '.$sFilename.'.gz'.' | grep -e "^[a-z]\{2\} [^ :]\+ [0-9]\+" > hour.txt');
-
-        $hPrevTotals = @fopen('totals.txt', 'r');
-        $hDayTotals = @fopen('hour.txt', 'r');
-        $hNewTotals = @fopen('newtotals.txt', 'w');
-
-        $sPrevKey = $sDayKey = true;
-        $sPrevLine = true;
-        $sDayLine = true;
-
-        do {
-            if ($sPrevKey === $sDayKey) {
-                if ($sPrevLine !== true) fputs($hNewTotals, "$sPrevKey ".($iPrevValue+$iDayValue)."\n");
-                $sPrevLine = true;
-                $sDayLine = true;
-            } elseif ($sDayKey !== false && ($sPrevKey > $sDayKey || $sPrevKey === false)) {
-                fputs($hNewTotals, "$sDayKey ".($iDayValue)."\n");
-                $sDayLine = true;
-            } elseif ($sPrevKey !== false && ($sDayKey > $sPrevKey || $sDayKey === false)) {
-                fputs($hNewTotals, "$sPrevKey ".($iPrevValue)."\n");
-                $sPrevLine = true;
-            }
-
-            if ($sPrevLine === true) {
-                $sPrevLine = $hPrevTotals?fgets($hPrevTotals, 4096):false;
-                if ($sPrevLine !== false) {
-                    $aPrevLine = explode(' ', $sPrevLine);
-                    $sPrevKey = $aPrevLine[0].' '.$aPrevLine[1];
-                    $iPrevValue = (int)$aPrevLine[2];
-                } else {
-                    $sPrevKey = false;
-                    $iPrevValue =  0;
-                }
-            }
-
-            if ($sDayLine === true) {
-                $sDayLine = $hDayTotals?fgets($hDayTotals, 4096):false;
-                if ($sDayLine !== false) {
-                    preg_match('#^([a-z]{2}) ([^ :]+) ([0-9]+) [0-9]+$#', $sDayLine, $aMatch);
-                    $sDayKey = $aMatch[1].' '.$aMatch[2];
-                    $iDayValue = (int)$aMatch[3];
-                } else {
-                    $sDayKey = false;
-                    $iDayValue = 0;
-                }
-            }
-        } while ($sPrevLine !== false || $sDayLine !== false);
-
-        @fclose($hPrevTotals);
-        @fclose($hDayTotals);
-        @fclose($hNewTotals);
-
-        @unlink('totals.txt');
-        rename('newtotals.txt', 'totals.txt');
-    }
-}
-
-// Notes:
-/*
-    gzip -dc $FILE.gz | grep -e "^en [^ :]\+ [0-9]\+" |
-    sed "s#\(^[a-z]\{2\}\) \([^ :]\+\) \([0-9]\+\) [0-9]\+#update wikipedia_article set hit_count = coalesce(hit_count,0) + \3 where language = '\1'
-      and title = catch_decode_url_part('\2');#g" | /opt/mapquest/stdbase-dev$
- cat totals.txt | sed "s#\(^[a-z]\{2\}\) \([^ ]\+\) \([0-9]\+\)\$#update entity_link set hits = s,0) + \3 where target = '\1wiki' and value = catch_decode_url_part('\2');#g"
- cat totals.txt | sed "s#\(^[a-z]\{2\}\) \([^ ]\+\) \([0-9]\+\)\$#update entity_link set hits = coalesce(hits,0) + \3 where target = '\1wiki' and value = catch_decode_url_part('\2');#g"
-*/