From 092537b4543278bf0b9ce8d181d1930660a06be8 Mon Sep 17 00:00:00 2001 From: Sherjeel Shabih Date: Fri, 7 Oct 2022 10:29:09 +0200 Subject: [PATCH] Better dependency management for dev, standalone, and a Nomad install (#50) * Added a pip-compile locked requirements for devs * Reverted nomad-lab install back * Fixed missing astroid version * cleanup + ease on dev reqs * Added a relaxed requirements.txt for installation with Nomad * Unrelaxed pyproject.toml dev reqs and reverted xarray to older version * Allowed python3.7 and fixed dask[array] version * Merge adapt-nexus-to-metainfo-changes and CI updates * cleanup * Brought in requirements.txt * draft refactoring and reorganizing of nomad-parser-nexus, decide first how tests should finally before structured, then the tests and absolute paths in the ipynbs and code sections should be changed * renaming tools; adding and fixing unit tests * fix some linting issues * addig reference data for testing nexus checker * fixing linting issues; adding test reference file * bringing Example to front * tested ipynb notebooks, added jupyterlab_h5web to the environment * improved descriptions, and placed jupyterlab in pyproject toml, tested compiling a dev-requirements locally successfully * updating readme.md as a result of testing * Added nexus definitions to the module package * fixing README files and the ipynb for APM * use dataconverter alias from command line * harmonising EM and MPES notebooks * Updated YAML file * Updated jupyter notebook for ellipsometry + DAT and YAML file * Delete ELLIPSOMETRY.NeXus.READER.EXAMPLE.02.ipynb * Delete test.yaml * fix data file locations Co-authored-by: Adam Fekete Co-authored-by: Adam Fekete Co-authored-by: kuehbachm Co-authored-by: sanbrock Co-authored-by: sanbrock <45483558+sanbrock@users.noreply.github.com> Co-authored-by: Carola Emminger Co-authored-by: cmmngr <98404894+cmmngr@users.noreply.github.com> --- .github/workflows/pylint.yml | 14 +- .gitignore | 197 + .gitmodules | 7 +- .vscode/settings.json | 2 +- DEVELOPER.md | 209 - LICENSE.txt => LICENSE | 0 MANIFEST.in | 8 +- README.md | 191 +- dev-requirements.txt | 446 + .../readers/apm => examples}/README.md | 42 +- examples/apm/Apm.NeXus.Apm.Example.1.ipynb | 844 ++ .../apm/eln_data_apm.yaml | 0 .../Ellipsometry.NeXus.Example.ipynb | 453 + examples/ellipsometry/eln_data.yaml | 71 + .../ellipsometry}/test-data.dat | 0 .../EmSpctrscpy.NeXus.NXem.Example.1.ipynb | 78 +- .../em}/eln_data_em.yaml | 0 examples/mpes/mpes.NeXus.mpes.Example.1.ipynb | 223 + ...es.WSe2.Binning2NeXus.mpes.Example.2.ipynb | 0 nexusparser.yaml | 7 - nexusparser/metadata.yaml | 64 - nexusparser/metainfo/nexus.py | 544 - nexusparser/parser.py | 288 - nexusparser/tools/__init__.py | 1 - .../tools/dataconverter/readers/README.md | 87 - {nexusparser => nexusutils}/__init__.py | 0 .../dataconverter/README.md | 34 +- .../dataconverter/__init__.py | 0 .../dataconverter/convert.py | 18 +- .../dataconverter/convert_routine.svg | 2 +- .../dataconverter/helpers.py | 8 +- nexusutils/dataconverter/readers/README.md | 45 + .../dataconverter/readers/__init__.py | 0 .../dataconverter/readers/apm/README.md | 47 +- .../dataconverter/readers/apm/__init__.py | 0 .../dataconverter/readers/apm/reader.py | 12 +- .../utils/NXapmInformationSourcesToNeXus.ods | Bin .../readers/apm/utils/__init__.py | 0 .../apm/utils/apm_nexus_base_classes.py | 0 .../readers/apm/utils/apm_nexus_plots.py | 0 .../apm/utils/apm_nomad_oasis_eln_io.py | 4 +- .../readers/apm/utils/apm_ranging_io.py | 6 +- .../apm/utils/apm_reconstruction_io.py | 6 +- .../apm/utils/apm_use_case_selector.py | 0 .../readers/apm/utils/apm_versioning.py | 0 .../apm/utils/aptfim_io_apt6_headers.py | 2 +- .../apm/utils/aptfim_io_apt6_reader.py | 10 +- .../apm/utils/aptfim_io_apt6_sections.py | 2 +- .../utils/aptfim_io_apt6_sections_branches.py | 2 +- .../readers/apm/utils/aptfim_io_apt6_utils.py | 0 .../apm/utils/aptfim_io_epos_reader.py | 2 +- .../apm/utils/aptfim_io_ods2metadata.py | 0 .../readers/apm/utils/aptfim_io_pos_reader.py | 2 +- .../readers/apm/utils/aptfim_io_rng_reader.py | 2 +- .../apm/utils/aptfim_io_rrng_reader.py | 2 +- .../readers/apm/utils/aptfim_io_utils.py | 0 .../dataconverter/readers/base/README.md | 4 + .../dataconverter/readers/base/__init__.py | 0 .../dataconverter/readers/base/reader.py | 0 .../dataconverter/readers/ellips/README.md | 4 + .../dataconverter/readers/ellips/__init__.py | 0 .../dataconverter/readers/ellips/reader.py | 2 +- .../dataconverter/readers/em_nion/README.md | 12 + .../dataconverter/readers/em_nion/__init__.py | 0 .../dataconverter/readers/em_nion/reader.py | 6 +- .../NionSwiftJsonToNexusTranslationTable.ods | Bin .../readers/em_nion/utils/em_io_utils_misc.py | 0 .../em_nion/utils/em_io_utils_ods2dct.py | 0 .../readers/em_spctrscpy/README.md | 97 +- .../readers/em_spctrscpy/__init__.py | 0 .../readers/em_spctrscpy/reader.py | 16 +- .../utils/em_nexus_base_classes.py | 2 +- .../em_spctrscpy/utils/em_nomad_oasis_eln.py | 2 +- .../utils/em_use_case_selector.py | 0 .../em_spctrscpy/utils/em_versioning.py | 0 .../em_spctrscpy/utils/hspy/em_hspy_adf.py | 2 +- .../utils/hspy/em_hspy_comments.py | 0 .../em_spctrscpy/utils/hspy/em_hspy_eels.py | 2 +- .../em_spctrscpy/utils/hspy/em_hspy_xray.py | 2 +- .../em_spctrscpy/utils/oina/em_oina_xray.py | 2 +- .../dataconverter/readers/example/README.md | 5 + .../dataconverter/readers/example/__init__.py | 0 .../dataconverter/readers/example/reader.py | 15 +- .../dataconverter/readers/hall/README.md | 4 + .../dataconverter/readers/hall/__init__.py | 0 .../dataconverter/readers/hall/helpers.py | 0 .../dataconverter/readers/hall/reader.py | 6 +- .../dataconverter/readers/json_map/README.md | 5 +- .../readers/json_map/__init__.py | 0 .../dataconverter/readers/json_map/reader.py | 6 +- .../dataconverter/readers/json_yml/README.md | 4 + .../readers/json_yml/__init__.py | 0 .../dataconverter/readers/json_yml/reader.py | 2 +- .../dataconverter/readers/mpes/README.md | 4 + .../dataconverter/readers/mpes/__init__.py | 0 .../dataconverter/readers/mpes/reader.py | 4 +- .../readers/transmission/README.md | 4 + .../readers/transmission/__init__.py | 0 .../readers/transmission/metadata_parsers.py | 0 .../readers/transmission/reader.py | 6 +- .../dataconverter/readers/utils.py | 0 .../dataconverter/template.py | 2 +- .../dataconverter/writer.py | 14 +- {nexusparser => nexusutils}/definitions | 0 nexusutils/nexus/README.md | 12 + .../metainfo => nexusutils/nexus}/__init__.py | 3 +- .../tools => nexusutils/nexus}/nexus.py | 19 +- .../nyaml2nxdl}/README.md | 20 +- .../nyaml2nxdl}/__init__.py | 0 .../nyaml2nxdl/nyaml2nxdl.py | 60 +- .../nyaml2nxdl/nyaml2nxdl_backward_tools.py | 0 .../nyaml2nxdl/nyaml2nxdl_forward_tools.py | 4 +- pyproject.toml | 57 + requirements.txt | 11 +- setup.py | 88 +- .../{tools => }/dataconverter/NXtest.nxdl.xml | 0 .../data/dataconverter/readers/apm/README.md | 2 + .../nxapm.schema.archive.yaml | 0 .../dataconverter/readers/ellips/README.md | 0 .../readers/ellips/eln_data.yaml | 71 + .../readers/ellips/test-data.dat | 9795 +++++++++++++++++ .../em_nion/EmNion.NeXus.NXem.Example.1.ipynb | 0 .../readers/em_nion/HAADF_01.ELabFTW.dat | 0 .../readers/em_nion/HAADF_01.json | 0 .../readers/em_nion/HAADF_01.npy | Bin .../readers/em_nion/eln_data.yaml | 0 .../readers/em_spctrscpy/README.md | 2 + .../eln_data_em.yaml | 0 .../nxem.schema.archive.yaml | 0 .../readers/example/testdata.json | 0 .../dataconverter/readers/json_map/data.json | 0 .../readers/json_map/data.mapping.json | 0 .../readers/mpes/ELN_metadata_example.yaml | 0 .../readers/mpes/Ref_nexus_mpes.log | 0 .../readers/mpes/config_file.json | 0 .../mpes/xarray_saved_small_calibration.h5 | Bin .../readers/transmission/KTF-9_1_A.asc | 0 .../readers/transmission/KTF-9_1_A.sp | Bin .../readers/transmission/metadata.json | 0 .../201805_WSe2_arpes.nxs | Bin .../Ref_nexus_test.log | 1 - tests/data/{ => nexus}/nexus.out | 0 .../NXattributes.yml | 0 .../NXellipsometry-docCheck.yaml | 0 .../NXfilelineError1.yml | 0 .../NXfilelineError2.yml | 0 .../NXfilelineError3.yml | 0 .../NXmytests.yml | 0 .../NXnested_symbols.yml | 0 .../NXtest_links.yml | 0 .../Ref_NXattributes.nxdl.xml | 0 .../Ref_NXellips.nxdl.xml | 0 .../Ref_NXellipsometry-docCheck.nxdl.xml | 0 .../Ref_NXellipsometry.yml | 0 .../Ref_NXentry.nxdl.xml | 0 .../Ref_NXentry.yml | 0 .../Ref_NXmytests.nxdl.xml | 0 .../Ref_NXnested_symbols.nxdl.xml | 0 .../Ref_NXtest_links.nxdl.xml | 0 .../readers/apm/Apm.NeXus.Apm.Example.1.ipynb | 419 - ...ELLIPSOMETRY.NeXus.READER.EXAMPLE.02.ipynb | 307 - .../dataconverter/readers/ellips/test.yaml | 91 - .../readers/em_spctrscpy/README.md | 82 - .../mpes/mpes.NeXus.mpes.Example.1.ipynb | 331 - tests/dataconverter/README.md | 4 + tests/{tools => }/dataconverter/__init__.py | 0 .../{tools => }/dataconverter/test_convert.py | 41 +- .../{tools => }/dataconverter/test_helpers.py | 14 +- .../{tools => }/dataconverter/test_readers.py | 14 +- .../dataconverter/test_template.py | 0 .../{tools => }/dataconverter/test_writer.py | 4 +- tests/nexus/README.md | 9 + .../__main__.py => tests/nexus/__init__.py | 18 - tests/nexus/test_nexus.py | 94 + tests/nyaml2nxdl/README.md | 4 + .../test_nyaml2nxdl.py} | 113 +- tests/test_nexus.py | 192 - tests/test_parser.py | 160 - 178 files changed, 12926 insertions(+), 3332 deletions(-) delete mode 100644 DEVELOPER.md rename LICENSE.txt => LICENSE (100%) create mode 100644 dev-requirements.txt rename {tests/data/tools/dataconverter/readers/apm => examples}/README.md (50%) create mode 100644 examples/apm/Apm.NeXus.Apm.Example.1.ipynb rename {tests/data/tools/dataconverter/readers => examples}/apm/eln_data_apm.yaml (100%) create mode 100644 examples/ellipsometry/Ellipsometry.NeXus.Example.ipynb create mode 100644 examples/ellipsometry/eln_data.yaml rename {tests/data/tools/dataconverter/readers/ellips => examples/ellipsometry}/test-data.dat (100%) rename {tests/data/tools/dataconverter/readers/em_spctrscpy => examples/em}/EmSpctrscpy.NeXus.NXem.Example.1.ipynb (79%) rename {tests/data/tools/dataconverter/readers/em_spctrscpy => examples/em}/eln_data_em.yaml (100%) create mode 100644 examples/mpes/mpes.NeXus.mpes.Example.1.ipynb rename {tests/data/tools/dataconverter/readers => examples}/mpes/mpes.WSe2.Binning2NeXus.mpes.Example.2.ipynb (100%) delete mode 100644 nexusparser.yaml delete mode 100644 nexusparser/metadata.yaml delete mode 100644 nexusparser/metainfo/nexus.py delete mode 100644 nexusparser/parser.py delete mode 100644 nexusparser/tools/__init__.py delete mode 100644 nexusparser/tools/dataconverter/readers/README.md rename {nexusparser => nexusutils}/__init__.py (100%) rename nexusparser/tools/dataconverter/Readme.md => nexusutils/dataconverter/README.md (77%) rename {nexusparser/tools => nexusutils}/dataconverter/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/convert.py (93%) rename {nexusparser/tools => nexusutils}/dataconverter/convert_routine.svg (99%) rename {nexusparser/tools => nexusutils}/dataconverter/helpers.py (98%) create mode 100644 nexusutils/dataconverter/readers/README.md rename {nexusparser/tools => nexusutils}/dataconverter/readers/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/README.md (73%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/reader.py (89%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/NXapmInformationSourcesToNeXus.ods (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/apm_nexus_base_classes.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/apm_nexus_plots.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/apm_nomad_oasis_eln_io.py (99%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/apm_ranging_io.py (97%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/apm_reconstruction_io.py (96%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/apm_use_case_selector.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/apm_versioning.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/aptfim_io_apt6_headers.py (98%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/aptfim_io_apt6_reader.py (96%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/aptfim_io_apt6_sections.py (99%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/aptfim_io_apt6_sections_branches.py (99%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/aptfim_io_apt6_utils.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/aptfim_io_epos_reader.py (99%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/aptfim_io_ods2metadata.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/aptfim_io_pos_reader.py (97%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/aptfim_io_rng_reader.py (98%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/aptfim_io_rrng_reader.py (99%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/apm/utils/aptfim_io_utils.py (100%) create mode 100644 nexusutils/dataconverter/readers/base/README.md rename {nexusparser/tools => nexusutils}/dataconverter/readers/base/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/base/reader.py (100%) create mode 100644 nexusutils/dataconverter/readers/ellips/README.md rename {nexusparser/tools => nexusutils}/dataconverter/readers/ellips/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/ellips/reader.py (99%) create mode 100644 nexusutils/dataconverter/readers/em_nion/README.md rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_nion/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_nion/reader.py (98%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_nion/utils/NionSwiftJsonToNexusTranslationTable.ods (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_nion/utils/em_io_utils_misc.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_nion/utils/em_io_utils_ods2dct.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/README.md (73%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/reader.py (94%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/utils/em_nexus_base_classes.py (99%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/utils/em_nomad_oasis_eln.py (99%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/utils/em_use_case_selector.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/utils/em_versioning.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_adf.py (99%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_comments.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_eels.py (99%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_xray.py (99%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/em_spctrscpy/utils/oina/em_oina_xray.py (91%) create mode 100644 nexusutils/dataconverter/readers/example/README.md rename {nexusparser/tools => nexusutils}/dataconverter/readers/example/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/example/reader.py (94%) create mode 100644 nexusutils/dataconverter/readers/hall/README.md rename {nexusparser/tools => nexusutils}/dataconverter/readers/hall/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/hall/helpers.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/hall/reader.py (95%) rename nexusparser/tools/dataconverter/readers/json_map/Readme.md => nexusutils/dataconverter/readers/json_map/README.md (92%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/json_map/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/json_map/reader.py (96%) create mode 100644 nexusutils/dataconverter/readers/json_yml/README.md rename {nexusparser/tools => nexusutils}/dataconverter/readers/json_yml/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/json_yml/reader.py (96%) create mode 100644 nexusutils/dataconverter/readers/mpes/README.md rename {nexusparser/tools => nexusutils}/dataconverter/readers/mpes/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/mpes/reader.py (98%) create mode 100644 nexusutils/dataconverter/readers/transmission/README.md rename {nexusparser/tools => nexusutils}/dataconverter/readers/transmission/__init__.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/transmission/metadata_parsers.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/transmission/reader.py (97%) rename {nexusparser/tools => nexusutils}/dataconverter/readers/utils.py (100%) rename {nexusparser/tools => nexusutils}/dataconverter/template.py (99%) rename {nexusparser/tools => nexusutils}/dataconverter/writer.py (96%) rename {nexusparser => nexusutils}/definitions (100%) create mode 100644 nexusutils/nexus/README.md rename {nexusparser/metainfo => nexusutils/nexus}/__init__.py (88%) rename {nexusparser/tools => nexusutils/nexus}/nexus.py (98%) rename {nexusparser/tools/yaml2nxdl => nexusutils/nyaml2nxdl}/README.md (75%) rename {nexusparser/tools/yaml2nxdl => nexusutils/nyaml2nxdl}/__init__.py (100%) rename nexusparser/tools/yaml2nxdl/yaml2nxdl.py => nexusutils/nyaml2nxdl/nyaml2nxdl.py (90%) rename nexusparser/tools/yaml2nxdl/yaml2nxdl_backward_tools.py => nexusutils/nyaml2nxdl/nyaml2nxdl_backward_tools.py (100%) rename nexusparser/tools/yaml2nxdl/yaml2nxdl_forward_tools.py => nexusutils/nyaml2nxdl/nyaml2nxdl_forward_tools.py (99%) create mode 100644 pyproject.toml rename tests/data/{tools => }/dataconverter/NXtest.nxdl.xml (100%) create mode 100644 tests/data/dataconverter/readers/apm/README.md rename tests/data/{tools => }/dataconverter/readers/apm/nomad_oasis_eln_schema_for_nx_apm/nxapm.schema.archive.yaml (100%) rename tests/data/{tools => }/dataconverter/readers/ellips/README.md (100%) create mode 100644 tests/data/dataconverter/readers/ellips/eln_data.yaml create mode 100644 tests/data/dataconverter/readers/ellips/test-data.dat rename tests/data/{tools => }/dataconverter/readers/em_nion/EmNion.NeXus.NXem.Example.1.ipynb (100%) rename tests/data/{tools => }/dataconverter/readers/em_nion/HAADF_01.ELabFTW.dat (100%) rename tests/data/{tools => }/dataconverter/readers/em_nion/HAADF_01.json (100%) rename tests/data/{tools => }/dataconverter/readers/em_nion/HAADF_01.npy (100%) rename tests/data/{tools => }/dataconverter/readers/em_nion/eln_data.yaml (100%) create mode 100644 tests/data/dataconverter/readers/em_spctrscpy/README.md rename tests/data/{tools => }/dataconverter/readers/em_spctrscpy/nomad_oasis_eln_schema_for_nx_em/eln_data_em.yaml (100%) rename tests/data/{tools => }/dataconverter/readers/em_spctrscpy/nomad_oasis_eln_schema_for_nx_em/nxem.schema.archive.yaml (100%) rename tests/data/{tools => }/dataconverter/readers/example/testdata.json (100%) rename tests/data/{tools => }/dataconverter/readers/json_map/data.json (100%) rename tests/data/{tools => }/dataconverter/readers/json_map/data.mapping.json (100%) rename tests/data/{tools => }/dataconverter/readers/mpes/ELN_metadata_example.yaml (100%) rename tests/data/{tools => }/dataconverter/readers/mpes/Ref_nexus_mpes.log (100%) rename tests/data/{tools => }/dataconverter/readers/mpes/config_file.json (100%) rename tests/data/{tools => }/dataconverter/readers/mpes/xarray_saved_small_calibration.h5 (100%) rename tests/data/{tools => }/dataconverter/readers/transmission/KTF-9_1_A.asc (100%) rename tests/data/{tools => }/dataconverter/readers/transmission/KTF-9_1_A.sp (100%) rename tests/data/{tools => }/dataconverter/readers/transmission/metadata.json (100%) rename tests/data/{nexus_test_data => nexus}/201805_WSe2_arpes.nxs (100%) rename tests/data/{nexus_test_data => nexus}/Ref_nexus_test.log (99%) rename tests/data/{ => nexus}/nexus.out (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/NXattributes.yml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/NXellipsometry-docCheck.yaml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/NXfilelineError1.yml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/NXfilelineError2.yml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/NXfilelineError3.yml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/NXmytests.yml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/NXnested_symbols.yml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/NXtest_links.yml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/Ref_NXattributes.nxdl.xml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/Ref_NXellips.nxdl.xml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/Ref_NXellipsometry-docCheck.nxdl.xml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/Ref_NXellipsometry.yml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/Ref_NXentry.nxdl.xml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/Ref_NXentry.yml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/Ref_NXmytests.nxdl.xml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/Ref_NXnested_symbols.nxdl.xml (100%) rename tests/data/{tools/yaml2nxdl_test_data => nyaml2nxdl}/Ref_NXtest_links.nxdl.xml (100%) delete mode 100644 tests/data/tools/dataconverter/readers/apm/Apm.NeXus.Apm.Example.1.ipynb delete mode 100644 tests/data/tools/dataconverter/readers/ellips/ELLIPSOMETRY.NeXus.READER.EXAMPLE.02.ipynb delete mode 100644 tests/data/tools/dataconverter/readers/ellips/test.yaml delete mode 100644 tests/data/tools/dataconverter/readers/em_spctrscpy/README.md delete mode 100644 tests/data/tools/dataconverter/readers/mpes/mpes.NeXus.mpes.Example.1.ipynb create mode 100644 tests/dataconverter/README.md rename tests/{tools => }/dataconverter/__init__.py (100%) rename tests/{tools => }/dataconverter/test_convert.py (83%) rename tests/{tools => }/dataconverter/test_helpers.py (96%) rename tests/{tools => }/dataconverter/test_readers.py (89%) rename tests/{tools => }/dataconverter/test_template.py (100%) rename tests/{tools => }/dataconverter/test_writer.py (93%) create mode 100644 tests/nexus/README.md rename nexusparser/__main__.py => tests/nexus/__init__.py (60%) create mode 100644 tests/nexus/test_nexus.py create mode 100644 tests/nyaml2nxdl/README.md rename tests/{tools/yaml2nxdl/test_yml2nxdl.py => nyaml2nxdl/test_nyaml2nxdl.py} (61%) delete mode 100644 tests/test_nexus.py delete mode 100644 tests/test_parser.py diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 44b9d1f9f..e988fbed4 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -16,21 +16,21 @@ jobs: git submodule sync --recursive git submodule update --init --recursive --jobs=4 python -m pip install --upgrade pip - pip install nomad-lab==1.1.3 --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - pip install astroid==2.5.1 - name: Install package run: | - python -m pip install . + python -m pip install --no-deps . + - name: Install dev requirements + run: | + python -m pip install -r dev-requirements.txt - name: pycodestyle run: | - python -m pycodestyle --ignore=E501,E701,E731 nexusparser tests --exclude=nexusparser/definitions + python -m pycodestyle --ignore=E501,E701,E731 nexusutils tests --exclude=nexusutils/definitions - name: pylint run: | - python -m pylint --load-plugins=pylint_mongoengine,nomad.metainfo.pylint_plugin nexusparser tests + python -m pylint nexusutils tests - name: mypy run: | - python -m mypy --ignore-missing-imports --follow-imports=silent --no-strict-optional --exclude='nexusparser/definitions/' tests + python -m mypy --ignore-missing-imports --follow-imports=silent --no-strict-optional nexusutils tests - name: Test with pytest if: ${{ always() }} run: | diff --git a/.gitignore b/.gitignore index 3e0aa677a..d15843202 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,204 @@ +# https://github.com/github/gitignore/blob/main/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# https://github.com/github/gitignore/blob/main/Python.gitignore + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + + +# Custom settings + .mypy_cache/ .pyenv *.pyc *.txt +!requirements.txt +!dev-requirements.txt build/ nexusparser.egg-info/PKG-INFO .python-version diff --git a/.gitmodules b/.gitmodules index 4f013b42c..8c87edb2c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ -[submodule "nexusparser/definitions"] - path = nexusparser/definitions +[submodule "nexusutils/definitions"] + path = nexusutils/definitions + url = https://github.com/FAIRmat-Experimental/nexus_definitions.git +[submodule "nexusutils/nexus_definitions"] + path = nexusutils/definitions url = https://github.com/FAIRmat-Experimental/nexus_definitions.git diff --git a/.vscode/settings.json b/.vscode/settings.json index 3bae8ae7a..480310ae5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -20,7 +20,7 @@ "python.linting.enabled": true, "python.linting.pylintArgs": [ "--load-plugins=nomad.metainfo.pylint_plugin", - "nexusparser", + "nexusutils", "tests" ], "python.testing.pytestArgs": [ diff --git a/DEVELOPER.md b/DEVELOPER.md deleted file mode 100644 index fdbc3d3ba..000000000 --- a/DEVELOPER.md +++ /dev/null @@ -1,209 +0,0 @@ -This is a NOMAD parser for [NEXUS](https://www.nexusformat.org/). It will read input in NEXUS format and output files and provide all information in NOMAD's unified Metainfo based Archive format. - -## Get started - -You should create a virtual environment. This is optional, but highly recommended as -the required nomad-lab pypi package requires many dependencies with specific versions -that might conflict with other libraries that you have installed. This was tested -with Python 3.7. - -If you don't have Python 3.7 installed on your computer, follow these commands: -``` -sudo add-apt-repository ppa:deadsnakes/ppa -sudo apt install python3.7 python3-dev libpython3.7-dev python-numpy - -``` - -You can now install your virtual environment with python3.7 interpreter - -``` -mkdir -cd -pip install virtualenv -virtualenv --python=python3.7 .pyenv -source .pyenv/bin/activate -``` - -Simply install our pypi package with pip: -``` -pip install --upgrade pip -pip install nomad-lab==1.1.1 --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple -``` - -Clone this project (or fork and then clone the fork). Go into the cloned directory and -directly run the parser from there: -``` -git clone https://github.com/nomad-coe/nomad-parser-nexus.git --branch master --recursive parser-nexus -cd parser-nexus -git submodule sync --recursive -git submodule update --init --recursive - -``` - -Install the remaining dev dependencies and install the package with: -``` -pip install -r requirements.txt -pip install -e .[all] -``` - -There are also a basic test framework written in [pytest](https://docs.pytest.org/en/stable/). -Run the test with: - -``` -pytest -sv tests -``` - -## Modules and their functions -### **Metainfo** - -First go to the nexus metainfo directory: -``` -cd nexusparser/metainfo -``` -This directory have several modules/files as following: - -| file | function| -|---|---| -|[generate.py](nexusparser/metainfo/generate.py)| This module contains functionality to generate metainfo source-code from metainfo definitions.| -|[templates/package.j2](nexusparser/metainfo/templates/package.j2)| A template to create/convert NEXUS classes with NOMAD schema.| -|[generate_nexus.py](nexusparser/metainfo/generate_nexus.py)|This module uses the `generate.py` module and the `package.j2` template to create classes in NOMAD format, with inheritance and extension of bases classes. It will create a `meta_nexus.py` file after running.| -|[meta_nexus.py](nexusparser/metainfo/meta_nexus.py)| This file is being created every time the generate_nexus.py script runs. It contains all base classes, application definitions, and contributed classes converted from NEXUS schema to NOMAD schema.| -|[test_nexus.py](nexusparser/metainfo/test_nexus.py)| After the meta_nexus.py file has been created, test_nexus.py can be run to test if it is correctly structured and working as desired.| -|[nexus.py](nexusparser/metainfo/nexus.py)| If the meta_nexus.py passes the above test, then run the following command to create/replace the current nexus.py file: ```cp meta_nexus.py nexus.py```. It is important that only, after testing meta_nexus.py and being sure that it is working appropriately, create nexus.py. Because nexus_py will be used by the actual parser later.| - -### **Tools** -This module contains several tools that are necessary to read user-specific experimental data and parse them into NOMAD. - -**1. Read nexus** - -First go to the nexus tools directory: -``` -cd nexusparser/tools -``` - -The module `nexus.py` reads HDF5 data file (i.e it is a user-specific data file, which contains numerical and metadata about the experiment. And it is formatted in NEXUS style.) - -*The environmental variable called "NEXUS_DEF_PATH" should be set to the directory, which contains application definitions as XML files. If this environmental variable is not defined, then code will first clone a directory from GitHub, which contains application definitions.* - -To set environmental variable, you can do: -``` -export 'NEXUS_DEF_PATH'= -``` - -***Testing nexus*** - -Following example dataset can be used to test `nexus.py` module `tests/data/nexus_test_data/201805_WSe2_arpes.nxs`. This is angular resolved photoelectron spectroscopy (ARPES) dataset and it is formatted according to the [NXarpes application definition of NEXUS](https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes). Run the following command to test the `nexus.py` using example ARPES dataset: -``` -python test_parser.py -``` -*You should get "Testing of nexus.py is SUCCESSFUL." message, if everything goes as expected!* - - - -## Next steps - -Our documentation provides several resources that might be interesting: -- [How to write a parser](https://nomad-lab.eu/prod/rae/docs/parser.html). Provides - a more detailed tutorial on how to write a parser. -- [Introduction to the NOMAD Metainfo](https://nomad-lab.eu/prod/rae/docs/metainfo.html). - This explains how NOMAD data schema and can be extended and used within your parser. - -To get you parser included in NOMAD or ask further questions, you can: -- Use our forums at [matsci.org](https://matsci.org/c/nomad/32) -- Open an issue on the [nexus-parser GitHub project](https://github.com/nomad-coe/nomad-parser-nexus/issues) -- Write to [support@nomad-lab.eu](mailto:support@nomad-lab.eu) - -**Note!** The rest of this README.md is the usual text that applies to all NOMAD parsers. - - -This is a NOMAD parser for [EXAMPLE](https://www.nexus.eu/). It will read EXAMPLE input and -output files and provide all information in NOMAD's unified Metainfo based Archive format. - -## Preparing code input and output file for uploading to NOMAD - -NOMAD accepts `.zip` and `.tar.gz` archives as uploads. Each upload can contain arbitrary -files and directories. NOMAD will automatically try to choose the right parser for you files. -For each parser (i.e. for each supported code) there is one type of file that the respective -parser can recognize. We call these files `mainfiles` as they typically are the main -output file a code. For each `mainfile` that NOMAD discovers it will create an entry -in the database that users can search, view, and download. NOMAD will associate all files -in the same directory as files that also belong to that entry. Parsers -might also read information from these auxillary files. This way you can add more files -to an entry, even if the respective parser/code might not directly support it. - -For EXAMPLE please provide at least the files from this table if applicable to your -calculations (remember that you can provide more files if you want): - -|Input Filename| Description| -|--- | --- | -|`nexus.out` | **Mainfile** in EXAMPLE specific plain-text | - - -To create an upload with all calculations in a directory structure: - -``` -zip -r .zip /* -``` - -Go to the [NOMAD upload page](https://nomad-lab.eu/prod/rae/gui/uploads) to upload files -or find instructions about how to upload files from the command line. - -## Using the parser - -You can use NOMAD's parsers and normalizers locally on your computer. You need to install -NOMAD's pypi package: - -``` -pip install nomad-lab -``` - -To parse code input/output from the command line, you can use NOMAD's command line -interface (CLI) and print the processing results output to stdout: - -``` -nomad parse --show-archive -``` - -To parse a file in Python, you can program something like this: -```python -import sys -from nomad.cli.parse import parse, normalize_all - -# match and run the parser -archive = parse(sys.argv[1]) -# run all normalizers -normalize_all(archive) - -# get the 'main section' section_run as a metainfo object -section_run = archive.section_run[0] - -# get the same data as JSON serializable Python dict -python_dict = section_run.m_to_dict() -``` - -## Developing the parser - -Create a virtual environment to install the parser in development mode: - -``` -pip install virtualenv -virtualenv -p `which python3` .pyenv -source .pyenv/bin/activate -``` - -Install NOMAD's pypi package: - -``` -pip install nomad-lab -``` - -Clone the parser project and install it in development mode: - -``` -git clone https://github.com/nomad-coe/nomad-parser-nexus.git parser-nexus -pip install -e parser-nexus -``` - -Running the parser now, will use the parser's Python code from the clone project. - -$parserSpecific$ diff --git a/LICENSE.txt b/LICENSE similarity index 100% rename from LICENSE.txt rename to LICENSE diff --git a/MANIFEST.in b/MANIFEST.in index 6deec5eb5..126d8db70 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,4 +1,4 @@ -recursive-include nexusparser/definitions/base_classes/ *.xml -recursive-include nexusparser/definitions/applications/ *.xml -recursive-include nexusparser/definitions/contributed_definitions/ *.xml -include nexusparser/definitions/ *.xsd +recursive-include nexusutils/definitions/base_classes/ *.xml +recursive-include nexusutils/definitions/applications/ *.xml +recursive-include nexusutils/definitions/contributed_definitions/ *.xml +include nexusutils/definitions/ *.xsd diff --git a/README.md b/README.md index 12ac62265..41fc0ab33 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,104 @@ -This is a NOMAD parser for [NEXUS](https://www.nexusformat.org/). It will read input in NEXUS format and output files and provide all information in NOMAD's unified Metainfo based Archive format. +This is a software for developing ontologies and instances of ontologies with +[NeXus](https://www.nexusformat.org/). The software serves two aims. + +First, it offers users a tool with which they can +create specific data files packaging together numerical data and metadata from +experiments which can originate from technology partners and/or text file output +from an electronic lab notebook (ELN). + +Second, the software is used in the German National Research Data Infrastructure +(German NFDI) project FAIRmat, here specifically in the NOMAD OASIS research data +management (RDM) system, to serve as a set of parsers which enable users of a NOMAD +Oasis instance to create data and metadata entries from experiments so that NOMAD Oasis +understands the specific logic and terminology of the scientific field. + +The software tools are located inside the module subdirectory 'nexusutils'and they are +shipped with unit tests located in the subdirectory 'tests'. +Some examples with real datasets are also provided in the subdirectory 'examples' +in which Jupyter Notebooks are guiding through the process of converting instrument raw +data into the NeXus standard and then aloow the visualisation of the hierarchical contents +of the generated NeXus file in JupyterLab. ## Getting started +You should create a virtual environment. We tested on Ubuntu with Python 3.7. -Install the nexusparser as a standalone tool: +If you don't have Python 3.7 installed on your computer, follow these commands: +``` +sudo add-apt-repository ppa:deadsnakes/ppa +sudo apt install python3.7 python3-dev libpython3.7-dev python-numpy + +``` + +You can now install your virtual environment with a python3.7 interpreter + +``` +mkdir +cd +pip install virtualenv +virtualenv --python=python3.7 .pyenv +source .pyenv/bin/activate +pip install pip-tools ``` -pip install nexusparser --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple + +This software can be used independently of a NOMAD or NOMAD Oasis instance. +Clone this project (or fork and then clone the fork). +Go into the cloned directory and directly run the parser from there: + +Now you have to decide your role. Are you a user or a developer? + +### I want to use nexusutils as a user +If you are a user you should install nexusutils as a standalone tool: +``` +pip install nexusutils --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple ``` -This project also includes standalone tools that can be used without installing Nomad. +### I am a developer and want to explore or contribute -***If you want to use it as a Nomad parser, see [below](#using-the-project-as-a-parser-in-nomad).*** +Install package with its dependencies: -## YAML2NXDL +``` +git clone https://github.com/nomad-coe/nomad-parser-nexus.git --branch master --recursive nexusutils +cd nexusutils +git submodule sync --recursive +git submodule update --init --recursive --jobs=4 +python -m pip install --upgrade pip +python -m pip install -e . +python -m pip install -e .[dev] +``` + +To be able to run jupyerlab with the NeXus file viewer H5Web, you also need the foolwing packages + +``` +python -m pip install jupyterlab +python -m pip install jupyterlab_h5web[full]==6.0.1 +``` + +## Test this software +Especially relevant for developers, there exists a basic test framework written in +[pytest](https://docs.pytest.org/en/stable/) which can be used as follows: + +``` +python -m pytest -sv tests +``` + +## Individual modules of this software and their functions + +### **nyaml2nxdl** +This module is a tool which automatically converts YAML files containing specifications for NeXus +base classes and/or application definitions, i.e. data schemes, into specifically formatted XML files +that follow the conventions used in NeXus. The tool works in two directions: Either a YAML file can +be converted to a NXDL XML file or a NXDL XML file can be converted into a YAML. +NXDL XML files have an own XML and XSD rule set that was developed and is maintained +by the NeXus International Advisory Committee (NIAC). The nyaml2nxdl converter implements this rule set. + +The main purpose of the tool is to support developers with a simplified +editing and writing experience when they wish to explore, modified, i.e. work with +NeXus base classes and application definitions. ```console -user@box:~$ python -m nexusparser.tools.yaml2nxdl.yaml2nxdl +user@box:~$ nyaml2nxdl --help -Usage: python yaml2nxdl.py [OPTIONS] +Usage: nyaml2nxdl.py [OPTIONS] Options: --input-file TEXT The path to the input data file to read. @@ -24,17 +106,39 @@ Options: write the base class name with no extension. --verbose Addictional std output info is printed to help debugging. --help Show this message and exit. - ``` -Further documentation: [README.md](nexusparser/tools/yaml2nxdl/README.md) +Further documentation: [README.md](nyaml2nxdl/README.md) + -## Dataconverter +### **dataconverter** +This module is a tool which enables users to create instances of NeXus/HDF5 files. +The instances are specific for the experiment and technique. +Each instance supports a combination of specifically-versioned software components: +A NeXus application definition, an associated referred to set of base classes, +and an experiment/technique-specific dataconverter (aka parser). -Converts experimental data to Nexus/HDF5 files based on any provided NXDL. +The main purpose of these parsers is to create an instance of a NeXus/HDF5 file that is +formatted in accordance with the respective NeXus application definition. +This means the parser eventually transcodes and copies data and metadata within specifically +formatted file and representations, like ELNs, of a scientific community and/or +technology partner. + +The dataconverter implements a concept of a generic parser, which internally calls +the above-mentioned experimental-method-specific parser. +Currently, the generic parser maintains one dictionary object in which all +data and metadata to be written are collected and exported to HDF5 afterwards. +The role of the generic parser is to resolve the structure of the NeXus application +definition and decorate the HDF5 files with attributes, fields, and groups +as it is required by NeXus, so that the dataconverter can yield a properly +formatted NeXus/HDF5 file. + +The role of the specific parsers is to fill this dictionary. Parsers are separated +to avoid that a single parser becomes too complex in its implementation. ```console -user@box:~$ python -m nexusparser.tools.dataconverter.convert --help +user@box:~$ dataconverter --help + Usage: convert.py [OPTIONS] Options: @@ -43,49 +147,50 @@ Options: --reader TEXT The reader to use. --nxdl TEXT The name of the NXDL file to use without extension. [required] - --output TEXT The path to the output Nexus file to be generated. + --output TEXT The path to the output NeXus file to be generated. --generate-template Just print out the template generated from given NXDL file. --help Show this message and exit. ``` -Further documentation: [README.md](nexusparser/tools/dataconverter/README.md) +Further documentation: [README.md](dataconverter/README.md) -## Nexus Checker +Inspect also specific README.md of the respective parser(s) you wish to use +or contribute to so that you can learn how these parser(s) work, which input data +they expect, and what which output they yield. -Outputs a debug log for a given Nexus file. +### **read_nexus** +This utility outputs a debug log for a given NeXus file by annotating the data and +metadata entries with the schema definitions from the respective base classes and +application definitions the file content is referring to. ```console -user@box:~$ python -m nexusparser.tools.nexus +user@box:~$ read_nexus ``` +*The environmental variable called "NEXUS_DEF_PATH" can be set to +a directory, which contains the NeXus definitions as XML files. If this environmental +variable is not defined, the module will use the dinfitions in its bundle.* -# Using the project as a parser in Nomad -You should create a virtual environment. This is optional, but highly recommended as -the required nomad-lab pypi package requires many dependencies with specific versions -that might conflict with other libraries that you have installed. This was tested -with Python 3.7. - -If you don't have Python 3.7 installed on your computer, follow these commands: +An environmental variable can be set as follows: ``` -sudo add-apt-repository ppa:deadsnakes/ppa -sudo apt install python3.7 python3-dev libpython3.7-dev python-numpy - -``` - -You can now install your virtual environment with python3.7 interpreter - -``` -mkdir -cd -pip install virtualenv -virtualenv --python=python3.7 .pyenv -source .pyenv/bin/activate +export 'NEXUS_DEF_PATH'= ``` -Simply install the nexusparser pypi package with all dependencies: -``` -pip install --upgrade pip -pip install nexusparser[nomad] --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple -``` \ No newline at end of file +## Next steps + +Our documentation provides several resources that might be interesting for developers of NOMAD (Oasis): +- [How to write a parser](https://nomad-lab.eu/prod/rae/docs/parser.html). + Provides a more detailed tutorial on how to write a parser for NOMAD. +- [Introduction to the NOMAD Metainfo](https://nomad-lab.eu/prod/rae/docs/metainfo.html). + This explains how the NOMAD data schema, the so-called NOMAD MetaInfo, can be extended + and used within your parser. A contextualization of the NOMAD MetaInfo is available + in the scientific literature https://doi.org/10.1038/s41524-017-0048-5. + +## Questions, suggestions? +To ask further questions, to make suggestions how we can improve these tools, to +get advice on how to build on this work, or to get your parser included into NOMAD, you can: +- Open an issue on the [nexus-parser GitHub project](https://github.com/nomad-coe/nomad-parser-nexus/issues) +- Use our forums at [matsci.org](https://matsci.org/c/nomad/32) +- Write to [support@nomad-lab.eu](mailto:support@nomad-lab.eu) diff --git a/dev-requirements.txt b/dev-requirements.txt new file mode 100644 index 000000000..5031cd274 --- /dev/null +++ b/dev-requirements.txt @@ -0,0 +1,446 @@ +# +# This file is autogenerated by pip-compile with python 3.7 +# To update, run: +# +# pip-compile --extra=dev --output-file=dev-requirements.txt pyproject.toml +# +anyio==3.6.1 + # via jupyter-server +argon2-cffi==21.3.0 + # via jupyter-server +argon2-cffi-bindings==21.2.0 + # via argon2-cffi +asciitree==0.3.3 + # via zarr +ase==3.22.1 + # via nexusutils (pyproject.toml) +astroid==2.12.10 + # via + # nexusutils (pyproject.toml) + # pylint +attrs==22.1.0 + # via + # jsonschema + # pytest +backcall==0.2.0 + # via ipython +beautifulsoup4==4.11.1 + # via nbconvert +bleach==5.0.1 + # via nbconvert +certifi==2022.9.24 + # via requests +cffi==1.15.1 + # via argon2-cffi-bindings +charset-normalizer==2.1.1 + # via requests +click==8.1.3 + # via nexusutils (pyproject.toml) +cloudpickle==2.2.0 + # via dask +coverage[toml]==6.5.0 + # via pytest-cov +cycler==0.11.0 + # via matplotlib +dask[array]==2022.2.0 + # via hyperspy +debugpy==1.6.3 + # via ipykernel +decorator==5.1.1 + # via + # ipyparallel + # ipython +defusedxml==0.7.1 + # via nbconvert +dill==0.3.5.1 + # via + # hyperspy + # pylint +entrypoints==0.4 + # via + # ipyparallel + # jupyter-client + # numcodecs +fasteners==0.18 + # via zarr +fastjsonschema==2.16.2 + # via nbformat +flatdict==4.0.1 + # via nexusutils (pyproject.toml) +fonttools==4.37.4 + # via matplotlib +fsspec==2022.8.2 + # via + # dask + # hyperspy +h5grove==1.1.0 + # via jupyterlab-h5web +h5py==3.7.0 + # via + # h5grove + # hyperspy + # nexusutils (pyproject.toml) +hyperspy==1.7.2 + # via nexusutils (pyproject.toml) +idna==3.4 + # via + # anyio + # requests +imageio==2.22.1 + # via + # hyperspy + # scikit-image +importlib-metadata==5.0.0 + # via + # click + # hyperspy + # jsonschema + # nbconvert + # nbformat + # numba + # pint + # pluggy + # prettytable + # pytest + # xarray +importlib-resources==5.9.0 + # via jsonschema +iniconfig==1.1.1 + # via pytest +ipykernel==6.16.0 + # via ipyparallel +ipyparallel==8.4.1 + # via hyperspy +ipython==7.34.0 + # via + # hyperspy + # ipykernel + # ipyparallel +isort==5.10.1 + # via pylint +jedi==0.18.1 + # via ipython +jinja2==3.1.2 + # via + # hyperspy + # jupyter-server + # nbconvert +jsonschema==4.16.0 + # via nbformat +jupyter-client==7.3.5 + # via + # ipykernel + # ipyparallel + # jupyter-server + # nbclient +jupyter-core==4.11.1 + # via + # jupyter-client + # jupyter-server + # nbconvert + # nbformat +jupyter-server==1.19.1 + # via jupyterlab-h5web +jupyterlab-h5web==6.0.1 + # via nexusutils (pyproject.toml) +jupyterlab-pygments==0.2.2 + # via nbconvert +kiwisolver==1.4.4 + # via matplotlib +lazy-object-proxy==1.7.1 + # via astroid +llvmlite==0.39.1 + # via numba +locket==1.0.0 + # via partd +markupsafe==2.1.1 + # via + # jinja2 + # nbconvert +matplotlib==3.5.3 + # via + # ase + # hyperspy +matplotlib-inline==0.1.6 + # via + # ipykernel + # ipython +mccabe==0.7.0 + # via pylint +mistune==2.0.4 + # via nbconvert +mpmath==1.2.1 + # via sympy +mypy==0.982 + # via nexusutils (pyproject.toml) +mypy-extensions==0.4.3 + # via mypy +natsort==8.2.0 + # via hyperspy +nbclient==0.6.8 + # via nbconvert +nbconvert==7.1.0 + # via jupyter-server +nbformat==5.6.1 + # via + # jupyter-server + # nbclient + # nbconvert +nest-asyncio==1.5.6 + # via + # ipykernel + # jupyter-client + # nbclient +networkx==2.6.3 + # via scikit-image +numba==0.56.2 + # via + # hyperspy + # sparse +numcodecs==0.10.2 + # via zarr +numexpr==2.8.3 + # via hyperspy +numpy==1.21.6 + # via + # ase + # dask + # h5grove + # h5py + # hyperspy + # imageio + # matplotlib + # nexusutils (pyproject.toml) + # numba + # numcodecs + # numexpr + # pandas + # pywavelets + # scikit-image + # scipy + # sparse + # tifffile + # xarray + # zarr +orjson==3.8.0 + # via h5grove +packaging==21.3 + # via + # dask + # hyperspy + # ipykernel + # jupyter-server + # matplotlib + # nbconvert + # numexpr + # pint + # pytest + # scikit-image +pandas==1.3.5 + # via + # nexusutils (pyproject.toml) + # xarray +pandocfilters==1.5.0 + # via nbconvert +parso==0.8.3 + # via jedi +partd==1.3.0 + # via dask +pexpect==4.8.0 + # via ipython +pickleshare==0.7.5 + # via ipython +pillow==9.2.0 + # via + # imageio + # matplotlib + # scikit-image +pint==0.18 + # via hyperspy +pkgutil-resolve-name==1.3.10 + # via jsonschema +platformdirs==2.5.2 + # via pylint +pluggy==1.0.0 + # via pytest +prettytable==3.4.1 + # via hyperspy +prometheus-client==0.14.1 + # via jupyter-server +prompt-toolkit==3.0.31 + # via ipython +psutil==5.9.2 + # via + # ipykernel + # ipyparallel +ptyprocess==0.7.0 + # via + # pexpect + # terminado +py==1.11.0 + # via pytest +pycodestyle==2.9.1 + # via nexusutils (pyproject.toml) +pycparser==2.21 + # via cffi +pygments==2.13.0 + # via + # ipython + # nbconvert +pylint==2.15.3 + # via nexusutils (pyproject.toml) +pyparsing==3.0.9 + # via + # matplotlib + # packaging +pyrsistent==0.18.1 + # via jsonschema +pytest==7.1.3 + # via + # nexusutils (pyproject.toml) + # pytest-cov + # pytest-timeout +pytest-cov==4.0.0 + # via nexusutils (pyproject.toml) +pytest-timeout==2.1.0 + # via nexusutils (pyproject.toml) +python-dateutil==2.8.2 + # via + # hyperspy + # ipyparallel + # jupyter-client + # matplotlib + # pandas +pytz==2022.4 + # via pandas +pywavelets==1.3.0 + # via scikit-image +pyyaml==6.0 + # via + # dask + # hyperspy + # nexusutils (pyproject.toml) +pyzmq==24.0.1 + # via + # ipykernel + # ipyparallel + # jupyter-client + # jupyter-server +requests==2.28.1 + # via hyperspy +scikit-image==0.19.3 + # via hyperspy +scipy==1.7.3 + # via + # ase + # hyperspy + # scikit-image + # sparse +send2trash==1.8.0 + # via jupyter-server +six==1.16.0 + # via + # bleach + # python-dateutil +sniffio==1.3.0 + # via anyio +soupsieve==2.3.2.post1 + # via beautifulsoup4 +sparse==0.13.0 + # via hyperspy +structlog==22.1.0 + # via nexusutils (pyproject.toml) +sympy==1.10.1 + # via hyperspy +terminado==0.16.0 + # via jupyter-server +tifffile==2021.11.2 + # via + # h5grove + # hyperspy + # scikit-image +tinycss2==1.1.1 + # via nbconvert +tomli==2.0.1 + # via + # coverage + # mypy + # pylint + # pytest +tomlkit==0.11.5 + # via pylint +toolz==0.12.0 + # via + # dask + # hyperspy + # partd +tornado==6.2 + # via + # ipykernel + # ipyparallel + # jupyter-client + # jupyter-server + # terminado +tqdm==4.64.1 + # via + # hyperspy + # ipyparallel +traitlets==5.4.0 + # via + # ipykernel + # ipyparallel + # ipython + # jupyter-client + # jupyter-core + # jupyter-server + # matplotlib-inline + # nbclient + # nbconvert + # nbformat +traits==6.4.1 + # via hyperspy +typed-ast==1.5.4 + # via + # astroid + # mypy + # nexusutils (pyproject.toml) +types-pyyaml==6.0.12 + # via nexusutils (pyproject.toml) +typing-extensions==4.3.0 + # via + # anyio + # argon2-cffi + # astroid + # importlib-metadata + # jsonschema + # kiwisolver + # mypy + # numcodecs + # pylint + # structlog + # xarray +urllib3==1.26.12 + # via requests +wcwidth==0.2.5 + # via + # prettytable + # prompt-toolkit +webencodings==0.5.1 + # via + # bleach + # tinycss2 +websocket-client==1.4.1 + # via jupyter-server +wrapt==1.14.1 + # via astroid +xarray==0.20.2 + # via nexusutils (pyproject.toml) +zarr==2.12.0 + # via hyperspy +zipp==3.8.1 + # via + # importlib-metadata + # importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/tests/data/tools/dataconverter/readers/apm/README.md b/examples/README.md similarity index 50% rename from tests/data/tools/dataconverter/readers/apm/README.md rename to examples/README.md index 220777f58..0e59629cd 100644 --- a/tests/data/tools/dataconverter/readers/apm/README.md +++ b/examples/README.md @@ -1,38 +1,14 @@ -The tools of the NOMAD parser for [NEXUS](https://www.nexusformat.org/) can also be used -without a NOMAD OASIS installation. There are two main use cases: -- Use the DATACONVERTER/apm for transcoding vendor and community files to +The tools can be used with the following two main use cases: +- Use the DATACONVERTER/apm for transcoding vendor and community files to NeXus files so that these are compliant with a specific NeXus application definition [NEXUS-FAIRMAT-PROPOSAL](https://fairmat-experimental.github.io/nexus-fairmat-proposal/). In this example NXapm. -- Use the YAML2NXDL converter during editing and developing +- Use the NYAML2NXDL converter during editing and developing NeXus base classes and application definitions. ## Getting started - prepare your environment -It is recommended to install the tool in an own virtual environment as -some installation steps will install specific versions of packages which -might be in conflict with existent ones in your environment. -You can install the tools as standalone tools. We make the following assumptions: -- You have python in version 3.7 installed. Higher versions can be used but might - need modifications for specific packages on which nomad-parser-nexus depends. -- You can but do not need to be inside a conda environment. - -``` -pip install virtualenv && virtualenv --python=python3.7 .nexusenv && source .nexusenv/bin/activate -pip install --upgrade pip==22.2.2 && pip install --upgrade nodejs==0.1.1 -pip install jupyterlab_h5web[full]==6.0.1 -``` - -## Getting started - install the nomad-parser-nexus tool - -``` -git clone https://github.com/nomad-coe/nomad-parser-nexus.git --recursive -cd nomad-parser-nexus/ -git branch -a -pip install -e . -``` - -With these two steps the installation is complete. +Please follow the **installation guide for developers** in the main README ### Using the tool @@ -68,13 +44,3 @@ cleaner for the chrome browser than for firefox. There is a jupyter notebook (ipynb) for each technique which you should use to interact with the tool. - -## Where should one place the files -For the dataconverter, you can find the respective notebooks in - -``` -tests/data/tools/dataconverter/readers/apm/ -``` - -Go one directory deeper to explore the specific jupyter notebook for your method of choice. - diff --git a/examples/apm/Apm.NeXus.Apm.Example.1.ipynb b/examples/apm/Apm.NeXus.Apm.Example.1.ipynb new file mode 100644 index 000000000..66ff27335 --- /dev/null +++ b/examples/apm/Apm.NeXus.Apm.Example.1.ipynb @@ -0,0 +1,844 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## NOMAD-PARSER-NEXUS/DATACONVERTER demo for Atom Probe Microscopy (APM) data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### **Step 1:** Check that everything is ready to go and download example data for APM. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "check the result of the query below if the modules `jupyterlab_h5web` and `nexusutils` are installed in your environement. Note that next to the name nexusutils you should see the directory in which it is installed. Otherwise make sure that you followed the instructions in the `README` files: \n", + "- how to set up a development environment as in the main README \n", + "- lauch the jupyter lab from this environement as in the README of folder `examples`" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "h5py 3.7.0\n", + "jupyter_client 7.3.5\n", + "jupyter-core 4.11.1\n", + "jupyter-server 1.19.1\n", + "jupyterlab-h5web 6.0.1\n", + "jupyterlab-pygments 0.2.2\n", + "nexusutils 0.0.1\n", + "config dir: /home/mkuehbach/.jupyter\n", + " jupyterlab_h5web \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab_h5web 5.0.0 \u001b[32mOK\u001b[0m\n", + " jupyter_nbextensions_configurator \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyter_nbextensions_configurator 0.4.1 \u001b[32mOK\u001b[0m\n", + "config dir: /home/mkuehbach/.local/etc/jupyter\n", + " jupyterlab \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab 3.4.3 \u001b[32mOK\u001b[0m\n", + " jupyterlab_h5web \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab_h5web 5.0.0 \u001b[32mOK\u001b[0m\n", + "JupyterLab v3.4.3\n", + "/home/mkuehbach/.local/share/jupyter/labextensions\n", + " jupyterlab_pygments v0.2.2 \u001b[32menabled\u001b[0m \u001b[32mOK\u001b[0m (python, jupyterlab_pygments)\n", + " jupyterlab-h5web v5.0.0 \u001b[32menabled\u001b[0m \u001b[32mOK\u001b[0m (python, jupyterlab_h5web)\n", + " @jupyter-widgets/jupyterlab-manager v3.1.0 \u001b[32menabled\u001b[0m \u001b[32mOK\u001b[0m (python, jupyterlab_widgets)\n", + "\n", + "Python 3.7.14\n" + ] + } + ], + "source": [ + "! pip list | grep 'h5py\\|nexus\\|jupyter' && jupyter serverextension list && jupyter labextension list && python -V" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Set the nexusutils directory." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current working directory\n", + "/home/mkuehbach/SPRINT-9/20221006_refactor_nomad_parser_nexus/nomad-parser-nexus/examples/apm\n", + "Base/home/root directory of the nomad-parser-nexus\n", + "/home/mkuehbach/SPRINT-9/20221006_refactor_nomad_parser_nexus/nomad-parser-nexus\n" + ] + } + ], + "source": [ + "import os\n", + "print('Current working directory')\n", + "print(os.getcwd())\n", + "nexus_dir = os.getcwd().replace('/examples/apm', '')\n", + "# import nexusutils\n", + "# nexus_dir = os.path.dirname(nexusutils.__file__)\n", + "print('Base/home/root directory of the nexusutils')\n", + "print(nexus_dir)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Step 2:** Download APM-specific example data." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "For this case, the data can be found in zenodo." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import shutil # unpacks in current path unless an additional path argument is provided" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " % Total % Received % Xferd Average Speed Time Time Time Current\n", + " Dload Upload Total Spent Left Speed\n", + "100 127M 100 127M 0 0 1507k 0 0:01:26 0:01:26 --:--:-- 1059k\n" + ] + } + ], + "source": [ + "# http://dx.doi.org/10.5281/zenodo.6808516\n", + "! curl --output APM.LEAP.Datasets.1.zip https://zenodo.org/record/6808516/files/APM.LEAP.Datasets.1.zip\n", + "shutil.unpack_archive('APM.LEAP.Datasets.1.zip')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These files should serve exclusively as examples. The dataconverter for APM always requires a triplet of files:\n", + "* A **community or vendor file** with the ion positions and mass-to-charge state ratio values for the tomographic reconstruction. POS, ePOS, or APT are allowed.\n", + "* A file with **ranging definitions**, i.e. how mass-to-charge-state ratio values map on ion species. RNG or RRNG are allowed.\n", + "* A **file with additional metadata (edited manually or via an ELN) in YAML format**. The eln_data_apm.yaml file in the example can be edited with a text editor.\n", + "For GUI-based editing, a NOMAD OASIS instance is needed.
\n", + "Please note that the metadata inside the provided eln_data_apm.yaml file has example data in it.\n", + "These reflect not necessarily the conditions when the raw data for the example were given. The file is meant to be edited!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### **Step 3:** Run your APM-specific dataconverter/readers/ on the example data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we run our parser. The --reader flag takes the atom probe microscopy reader (apm), the --nxdl flag takes the application definition for this technique.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Inspect what can/should be in the NeXus file." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/mkuehbach/SPRINT-9/20221006_refactor_nomad_parser_nexus/nomad-parser-nexus\n" + ] + } + ], + "source": [ + "! echo {nexus_dir}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Step 3a:** Optionally see the command line help of the dataconverter." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Usage: convert.py [OPTIONS]\n", + "\n", + " The CLI entrypoint for the convert function\n", + "\n", + "Options:\n", + " --input-file TEXT The path to the input data file to read.\n", + " (Repeat for more than one file.)\n", + " --reader [example|apm|transmission|json_map|json_yml|em_nion|ellips|em_spctrscpy|mpes|hall]\n", + " The reader to use. default=\"example\"\n", + " --nxdl TEXT The name of the NXDL file to use without\n", + " extension.\n", + " --output TEXT The path to the output NeXus file to be\n", + " generated.\n", + " --generate-template Just print out the template generated from\n", + " given NXDL file.\n", + " --fair Let the converter know to be stricter in\n", + " checking the documentation.\n", + " --params-file FILENAME Allows to pass a .yaml file with all the\n", + " parameters the converter supports.\n", + " --help Show this message and exit.\n" + ] + } + ], + "source": [ + "! dataconverter --help" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Step 3b:** Optionally explore all paths which NXapm provides." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"/ENTRY[entry]/@version\": \"None\",\n", + " \"/ENTRY[entry]/COORDINATE_SYSTEM_SET[coordinate_system_set]\": \"None\",\n", + " \"/ENTRY[entry]/COORDINATE_SYSTEM_SET[coordinate_system_set]/TRANSFORMATIONS[transformations]\": \"None\",\n", + " \"/ENTRY[entry]/DATA[data]\": \"None\",\n", + " \"/ENTRY[entry]/MONITOR[monitor]\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/address\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/affiliation\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/email\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/name\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/orcid\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/orcid_platform\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/role\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/social_media_name\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/social_media_platform\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/telephone_number\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/FABRICATION[fabrication]/capabilities\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/FABRICATION[fabrication]/identifier\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/REFLECTRON[reflectron]/FABRICATION[fabrication]/capabilities\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/REFLECTRON[reflectron]/FABRICATION[fabrication]/identifier\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/REFLECTRON[reflectron]/applied\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/REFLECTRON[reflectron]/description\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/REFLECTRON[reflectron]/name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/analysis_chamber/FABRICATION[fabrication]/capabilities\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/analysis_chamber/FABRICATION[fabrication]/identifier\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/analysis_chamber/description\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/analysis_chamber/name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/analysis_chamber/pressure\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/analysis_chamber/pressure/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/buffer_chamber/FABRICATION[fabrication]/capabilities\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/buffer_chamber/FABRICATION[fabrication]/identifier\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/buffer_chamber/description\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/buffer_chamber/name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/buffer_chamber/pressure\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/buffer_chamber/pressure/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/control_software/analysis_chamber\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/control_software/buffer_chamber\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/control_software/load_lock_chamber\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/control_software/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/control_software/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/field_of_view\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/field_of_view/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/flight_path_length\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/flight_path_length/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/getter_pump/FABRICATION[fabrication]/capabilities\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/getter_pump/FABRICATION[fabrication]/identifier\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/getter_pump/design\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/hit_multiplicity/hit_multiplicity\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/hit_multiplicity/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/hit_multiplicity/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/hit_multiplicity/pulse_id\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/hit_multiplicity/pulses_since_last_ion\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/instrument_name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_detector/manufacturer_name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_detector/model\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_detector/name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_detector/serial_number\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_detector/signal_amplitude\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_detector/signal_amplitude/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_detector/type\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_filtering/evaporation_id_included\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_filtering/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_filtering/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_impact_positions/arrival_time_pairs\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_impact_positions/arrival_time_pairs/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_impact_positions/hit_positions\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_impact_positions/hit_positions/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_impact_positions/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ion_impact_positions/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/load_lock_chamber/FABRICATION[fabrication]/capabilities\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/load_lock_chamber/FABRICATION[fabrication]/identifier\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/load_lock_chamber/description\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/load_lock_chamber/name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/load_lock_chamber/pressure\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/load_lock_chamber/pressure/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/local_electrode/APERTURE_EM[aperture_em]/FABRICATION[fabrication]/capabilities\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/local_electrode/APERTURE_EM[aperture_em]/FABRICATION[fabrication]/identifier\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/local_electrode/APERTURE_EM[aperture_em]/name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/local_electrode/APERTURE_EM[aperture_em]/value\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/local_electrode/name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/location\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/mass_to_charge_conversion/mass_to_charge\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/mass_to_charge_conversion/mass_to_charge/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/mass_to_charge_conversion/parameter\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/mass_to_charge_conversion/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/mass_to_charge_conversion/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/laser_beam\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/laser_beam/pinhole_position\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/laser_beam/spot_position\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/laser_gun/FABRICATION[fabrication]/capabilities\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/laser_gun/FABRICATION[fabrication]/identifier\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/laser_gun/name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/laser_gun/power\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/laser_gun/pulse_energy\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/laser_gun/wavelength\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/pulse_fraction\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/pulse_frequency\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/pulse_mode\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/pulsed_voltage\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/pulser/standing_voltage\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/background_quantification/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/background_quantification/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/mass_to_charge_distribution/mass_spectrum/@long_name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/mass_to_charge_distribution/mass_spectrum/bin_ends\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/mass_to_charge_distribution/mass_spectrum/bin_ends/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/mass_to_charge_distribution/mass_spectrum/counts\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/mass_to_charge_distribution/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/mass_to_charge_distribution/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/mass_to_charge_distribution/range_increment\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/mass_to_charge_distribution/range_increment/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/mass_to_charge_distribution/range_minmax\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/mass_to_charge_distribution/range_minmax/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/maximum_number_of_atoms_per_molecular_ion\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/number_of_ion_types\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/peak_identification/ION[ion]/charge_state\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/peak_identification/ION[ion]/isotope_vector\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/peak_identification/ION[ion]/mass_to_charge_range\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/peak_identification/ION[ion]/nuclid_list\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/peak_identification/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/peak_identification/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/peak_search_and_deconvolution/PEAK[peak]/label\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/peak_search_and_deconvolution/PEAK[peak]/peak_model\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/peak_search_and_deconvolution/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/peak_search_and_deconvolution/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/ranging/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/crystallographic_calibration\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/DATA[data]/@long_name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/DATA[data]/counts\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/DATA[data]/xpos\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/DATA[data]/xpos/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/DATA[data]/ypos\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/DATA[data]/ypos/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/DATA[data]/zpos\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/DATA[data]/zpos/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/parameter\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/protocol_name\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/reconstructed_positions\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/reconstruction/reconstructed_positions/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/roughening_pump/FABRICATION[fabrication]/capabilities\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/roughening_pump/FABRICATION[fabrication]/identifier\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/roughening_pump/design\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/specimen_monitoring/detection_rate\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/specimen_monitoring/detection_rate/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/specimen_monitoring/initial_radius\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/specimen_monitoring/initial_radius/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/specimen_monitoring/shank_angle\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/specimen_monitoring/shank_angle/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/stage_lab/base_temperature\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/stage_lab/base_temperature/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/turbomolecular_pump/FABRICATION[fabrication]/capabilities\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/turbomolecular_pump/FABRICATION[fabrication]/identifier\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/turbomolecular_pump/design\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/voltage_and_bowl_correction/calibrated_tof\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/voltage_and_bowl_correction/calibrated_tof/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/voltage_and_bowl_correction/program\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/voltage_and_bowl_correction/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/voltage_and_bowl_correction/raw_tof\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/voltage_and_bowl_correction/raw_tof/@units\": \"None\",\n", + " \"/ENTRY[entry]/atom_probe/voltage_and_bowl_correction/tof_calibration\": \"None\",\n", + " \"/ENTRY[entry]/definition\": \"None\",\n", + " \"/ENTRY[entry]/end_time\": \"None\",\n", + " \"/ENTRY[entry]/experiment_description\": \"None\",\n", + " \"/ENTRY[entry]/experiment_documentation\": \"None\",\n", + " \"/ENTRY[entry]/experiment_identifier\": \"None\",\n", + " \"/ENTRY[entry]/operation_mode\": \"None\",\n", + " \"/ENTRY[entry]/program\": \"None\",\n", + " \"/ENTRY[entry]/program/@version\": \"None\",\n", + " \"/ENTRY[entry]/run_number\": \"None\",\n", + " \"/ENTRY[entry]/specimen/atom_types\": \"None\",\n", + " \"/ENTRY[entry]/specimen/description\": \"None\",\n", + " \"/ENTRY[entry]/specimen/name\": \"None\",\n", + " \"/ENTRY[entry]/specimen/preparation_date\": \"None\",\n", + " \"/ENTRY[entry]/specimen/sample_history\": \"None\",\n", + " \"/ENTRY[entry]/specimen/short_title\": \"None\",\n", + " \"/ENTRY[entry]/start_time\": \"None\",\n", + " \"/ENTRY[entry]/thumbnail/@type\": \"None\"\n", + "}\n" + ] + } + ], + "source": [ + "# to inspect what can/should all be in the NeXus file\n", + "! dataconverter --nxdl NXapm --generate-template" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Step 3c**: Convert the files in the example into an NXapm-compliant NeXus HDF5 file." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using apm reader to convert the given files: \n", + "• R31_06365-v02.pos\n", + "• R31_06365-v02.rrng\n", + "• eln_data_apm.yaml \n", + "Parsing numerical data and metadata from reconstructed dataset...\n", + "Extracting data from POS file: R31_06365-v02.pos\n", + "Parsing numerical data and metadata from ranging definitions file...\n", + "Extracting data from RRNG file: R31_06365-v02.rrng\n", + "Parsing metadata as well as numerical data from NOMAD OASIS ELN...\n", + "Parsing entry...\n", + "Parsing user...\n", + "Parsing sample...\n", + "Parsing instrument header...\n", + "Parsing fabrication...\n", + "Parsing analysis chamber...\n", + "Parsing reflectron...\n", + "Parsing local electrode...\n", + "Parsing detector...\n", + "Parsing stage_lab...\n", + "Parsing specimen_monitoring...\n", + "Parsing control software...\n", + "Parsing pulser...\n", + "Parsing reconstruction...\n", + "Parsing ranging...\n", + "Creating default plottable data...\n", + "Create default plots on-the-fly...\n", + "--> Enter histogram computation \n", + "(4868202, 3)\n", + "Default plot 3D discretized reconstruction at 1nm binning.\n", + "--> Enter mass spectrum computation \n", + "(4868202, 1)\n", + "Plot mass spectrum at 0.01Da binning was created.\n", + "Forwarding the instantiated template to the NXS writer...\n", + "The path, /ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/DATA[data]/@xpos_indices, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/DATA[data]/@ypos_indices, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/atom_probe/reconstruction/naive_point_cloud_density_map/DATA[data]/@zpos_indices, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/atom_probe/ranging/mass_to_charge_distribution/mass_spectrum/@bin_ends_indices, is being written but has no documentation.\n", + "The output file generated: usa_pos.nxs\n" + ] + } + ], + "source": [ + "! dataconverter \\\n", + "--reader apm \\\n", + "--nxdl NXapm \\\n", + "--input-file R31_06365-v02.pos \\\n", + "--input-file R31_06365-v02.rrng \\\n", + "--input-file eln_data_apm.yaml \\\n", + "--output usa_pos.nxs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The key take home message is that the command above-specified triggers the automatic creation of the HDF5 file. This *.nxs file, is an HDF5 file." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### **Step 4:** Inspect the HDF5/NeXus file apm*.test.nxs using H5Web." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "from jupyterlab_h5web import H5Web" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "h5_file_name = 'usa_pos.nxs'" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "application/x-hdf5": "/home/mkuehbach/SPRINT-9/20221006_refactor_nomad_parser_nexus/nomad-parser-nexus/examples/apm/usa_pos.nxs", + "text/plain": [ + "" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "H5Web(h5_file_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also visualize the .nxs file by double clicking on it in the file explorer panel to the left side of your jupyter lab screen in the browser." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### **Step 5:** Optionally, do some post-processing with the generated usa_pos.nxs file." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To compute a mass-to-charge histogram and explore eventual ranging definitions that have also been carried over in the conversion step (step 6)." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.collections import PatchCollection\n", + "from matplotlib.patches import Rectangle\n", + "plt.rcParams['figure.figsize'] = [20, 10]\n", + "plt.rcParams['figure.dpi'] = 300\n", + "import h5py as h5\n", + "#needs shutils for decompressing zip archives, which is a default module/package in Python since >=v3.6" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Read mass-to-charge-state ratio values, create a histogram (\"mass spectrum\"), and mark ranges." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Array with mass-to-charge-state ratios loaded\n", + "27 iontypes were distinguished\n" + ] + } + ], + "source": [ + "# load data and ranges\n", + "hf = h5.File(h5_file_name, 'r')\n", + "mq = hf['entry/atom_probe/mass_to_charge_conversion/mass_to_charge'][:]\n", + "nions = np.uint32(hf['entry/atom_probe/ranging/number_of_ion_types'])\n", + "print('Array with mass-to-charge-state ratios loaded')\n", + "print(str(nions) + ' iontypes were distinguished')" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dataset ranging from [0.0, 100.0] Da.\n", + "Using a mass-to-charge-state ratio resolution of 0.01 Da.\n" + ] + } + ], + "source": [ + "# define binning\n", + "[mqmin, mqmax] = [0., 100.0] # Da np.max(mq)]\n", + "print('Dataset ranging from [' + str(mqmin) + ', ' + str(mqmax) +'] Da.')\n", + "mqincr = 0.01 #Da\n", + "print('Using a mass-to-charge-state ratio resolution of '+str(mqincr)+' Da.')" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Histogram has 10001 bins.\n" + ] + } + ], + "source": [ + "# transform collection of mass-to-charge-state ratios into a histogram\n", + "hst1d = np.unique(np.uint64(np.floor((mq[np.logical_and(mq >= mqmin, mq <= mqmax)] - mqmin) / mqincr)), return_counts=True)\n", + "nbins = np.uint64((mqmax - mqmin) / mqincr + 1)\n", + "print('Histogram has ' + str(nbins) + ' bins.')" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mass-to-charge-state histogram created.\n" + ] + } + ], + "source": [ + "# use matplotlib and numpy to plot histogram data \n", + "xy = np.zeros([nbins, 2], np.float64)\n", + "xy[:,0] = np.linspace(mqmin + mqincr, mqmax + mqincr, nbins, endpoint=True)\n", + "xy[:,1] = 0.5 # * np.ones([nbins], np.float64) # 0.5 to be able to plot logarithm you can not measure half an atom\n", + "for i in np.arange(0, len(hst1d[0])):\n", + " binidx = hst1d[0][i]\n", + " xy[binidx, 1] = hst1d[1][i]\n", + "print('Mass-to-charge-state histogram created.')" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mass-to-charge-state histogram visualized.\n" + ] + }, + { + "data": { + "text/plain": [ + "(0.5, 10099999.995)" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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/5TLrrjiClx99dUAUCZc1Y5QjYP4feWVV5Z1VqxY4frqb0NDQ1k3Foshm80iEong4YcfxgMPPGDzO5fLIRKJoLGxsWL8g7N+ADj99NPx4x//uKJOtT0rVqwot/m73/0ujjjiCJx22mm2uLrF0PmaNmPMtU7VnmiDgFdbq0FnZydWr16NP//5zwB4Z3HYYYfh5z//eSDbzErtHHLIIdi2rXI5nZ///Of4yEc+AgCYMWMGNmyQqyxs3LgRM2bMqNAJKhcU69atQzQaxbRp01yPU10R9lFkJH1qnYYSKRLxCSrvRKFQYAMDA+XHcZ3cwMAA27ZtW3lff3+/q4667bTt549bmahPfDvL1PKBgQH24osvsmKx6PoR6RwvGeenVCoxxph2nxsaGxtZsVhkGzZsYJdeeiljjJXTUHfeeSdbsmQJY4yxl19+mTU0NLCHHnqIvfvuuyyTyTDGGLv77rvZiSeeyDZu3Mj6+vpYqVRid911F/voRz9a4Vd7ezvbaaedyv6sWbOG7bnnnmzbtm2sp6eHzZ8/n61Zs6bC7+eff57NmTOnnBYQaaj58+eX5X7605+y7373u6xYLJb9LhaL7KWXXmINDQ3sgQceYG+++aZN54knnmB777036+vrYz09PWzOnDnspz/9KVu7di2bPXs227x5MysWi6yjo4OtW7eu7I8gljdu3MgymQwrFovsr3/9KzvxxBPZli1b2E477VQ+DnfccQdbsmQJK5VK7MUXXyzHUJVjjLEXX3yRzZ49m7333nusWCyy9vZ2tn79+orjKtog4NZWp31xrBlj7KmnnmJ77rkn6+vrY729vWz+/PkVaairrrqKnXbaabayD37wg+yhhx4q+1Mr5PN5tssuu7B169aVieu1a9eGlguThtqyZQs78sgjywS327mug0lD1QE9PT22337jLIS8U25gYMA2FkIn19PT4znOQtVRt522/fxxKxtJ4yyKxaJtv/MpxolisYiZM2fii1/8oq38mGOOwW9/+1vssccemDt3bjn18cILL+DrX/86IpEI4vE4rrzySjz33HO46KKLyq/9/vrXv7a1IRqNYsqUKTjwwAOx55574rjjjsPFF1+MU089Ffvvz9fqOuuss7Dnnnva/I9EIth9991x0UUX4bDDDkM0GsXee++NZdZjk5AVRH+xWMQxxxyDK6+8EvPmzSv7LfYJ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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "[xmi, xmx, ymi, ymx] = [mqmin, 10**np.ceil(np.log10(mqmax)), 0.5, 10**np.ceil(np.log10(np.max(xy[:,1])))]\n", + "[xmi, xmx, ymi, ymx] = [mqmin, mqmax, 0.5, 10**np.ceil(np.log10(np.max(xy[:,1])))]\n", + "fig, cnts_over_mq = plt.subplots(1, 1)\n", + "plt.plot(xy[:, 0], xy[:, 1], color='blue', alpha=0.5, linewidth=1.0)\n", + "for i in np.arange(1,nions + 1):\n", + " # load ranges and plot them\n", + " ranges = hf['entry/atom_probe/ranging/peak_identification/ion' + str(i) + '/mass_to_charge_range'][:]\n", + " for min_max in ranges:\n", + " cnts_over_mq.vlines(min_max[0], 0, 1, transform=cnts_over_mq.get_xaxis_transform(), alpha=0.1, color='grey', linestyles='dotted')\n", + " cnts_over_mq.vlines(min_max[1], 0, 1, transform=cnts_over_mq.get_xaxis_transform(), alpha=0.1, color='grey', linestyles='dotted')\n", + " #rng = Rectangle((min_max[0], ymi), min_max[1] - min_max[0], ymx - ymi, edgecolor='r', facecolor=\"none\")\n", + "# plt.xticks([1, 2, 3, 4, 5, 6, 7, 8, 9], ['Min', '0.0025', '0.025', '0.25', '0.50', '0.75', '0.975', '0.9975', 'Max'])\n", + "plt.yscale('log')\n", + "plt.legend( [r'Mass-to-charge-state ratio $\\Delta\\frac{m}{q} = $'+str(mqincr)+' Da'], loc='upper right')\n", + "plt.xlabel(r'Mass-to-charge-state-ratio (Da)')\n", + "plt.ylabel(r'Counts')\n", + "print('Mass-to-charge-state histogram visualized.')\n", + "# scale bar with add margin to the bottom and top of the yaxis to avoid that lines fall on x axis\n", + "margin=0.01 # polishing the margins\n", + "plt.xlim([-margin * (xmx - xmi) + xmi, +margin * (xmx - xmi) + xmx])\n", + "plt.ylim([ymi, +margin * (ymx - ymi) + ymx])" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "usa_pos.nxs.MassToChargeStateRatios.png stored to disk.\n" + ] + } + ], + "source": [ + "#save the figure\n", + "figfn = h5_file_name + '.MassToChargeStateRatios.png'\n", + "fig.savefig(figfn, dpi=300, facecolor='w', edgecolor='w', orientation='landscape', format='png', \n", + " transparent=False, bbox_inches='tight', pad_inches=0.1, metadata=None)\n", + "#plt.close('all')\n", + "print(figfn + ' stored to disk.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Further comments:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Feel free to explore our atom probe microscopy containers in the north branch for more advanced processing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "### Contact person for this example in FAIRmat:\n", + "Markus Kühbach" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tests/data/tools/dataconverter/readers/apm/eln_data_apm.yaml b/examples/apm/eln_data_apm.yaml similarity index 100% rename from tests/data/tools/dataconverter/readers/apm/eln_data_apm.yaml rename to examples/apm/eln_data_apm.yaml diff --git a/examples/ellipsometry/Ellipsometry.NeXus.Example.ipynb b/examples/ellipsometry/Ellipsometry.NeXus.Example.ipynb new file mode 100644 index 000000000..8930a358c --- /dev/null +++ b/examples/ellipsometry/Ellipsometry.NeXus.Example.ipynb @@ -0,0 +1,453 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## DATACONVERTER Demo for Ellipsometry" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### **Step 1:** Check that everything is ready to go and download example data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "check the result of the query below if the modules `jupyterlab_h5web` and `nexusutils` are installed in your environement. Note that next to the name nexusutils you should see the directory in which it is installed. Otherwise make sure that you followed the instructions in the `README` files: \n", + "- how to set up a development environment as in the main README \n", + "- lauch the jupyter lab from this environement as in the README of folder `examples`" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "h5py 3.7.0\n", + "jupyter_client 7.3.5\n", + "jupyter-core 4.11.1\n", + "jupyter-server 1.19.1\n", + "jupyterlab 3.4.8\n", + "jupyterlab-h5web 6.0.1\n", + "jupyterlab-pygments 0.2.2\n", + "jupyterlab_server 2.15.2\n", + "nexusutils 0.0.1 /home/carola/NOMAD/test/nexusutils\n", + "config dir: /home/carola/.jupyter\n", + " jupyterlab_h5web \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab_h5web 6.0.1 \u001b[32mOK\u001b[0m\n", + "config dir: /home/carola/NOMAD/npn-test/.pyenv/etc/jupyter\n", + " ipyparallel \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " ipyparallel 8.4.1 \u001b[32mOK\u001b[0m\n", + " jupyterlab \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab 3.4.8 \u001b[32mOK\u001b[0m\n", + " jupyterlab_h5web \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab_h5web 6.0.1 \u001b[32mOK\u001b[0m\n", + "JupyterLab v3.4.8\n", + "/home/carola/.local/share/jupyter/labextensions\n", + " jupyterlab-plotly v5.6.0 \u001b[32menabled\u001b[0m \u001b[32mOK\u001b[0m\n", + "\n", + "/home/carola/NOMAD/npn-test/.pyenv/share/jupyter/labextensions\n", + " jupyterlab_pygments v0.2.2 \u001b[32menabled\u001b[0m \u001b[32mOK\u001b[0m (python, jupyterlab_pygments)\n", + " ipyparallel-labextension v8.4.1 \u001b[32menabled\u001b[0m \u001b[32mOK\u001b[0m\n", + " jupyterlab-h5web v6.0.1 \u001b[32menabled\u001b[0m \u001b[32mOK\u001b[0m (python, jupyterlab_h5web)\n", + "\n", + "Python 3.7.14\n" + ] + } + ], + "source": [ + "! pip list | grep 'h5py\\|nexus\\|jupyter' && jupyter serverextension list && jupyter labextension list && python -V" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Set the nexusutils directory." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current working directory\n", + "/home/carola/NOMAD/test/nexusutils/examples/ellipsometry\n", + "Base/home/root directory of the nexusutils\n", + "/home/carola/NOMAD/test/nexusutils\n" + ] + } + ], + "source": [ + "import os\n", + "print('Current working directory')\n", + "print(os.getcwd())\n", + "nexus_dir = os.getcwd().replace('/examples/ellipsometry', '')\n", + "# import nexusutils\n", + "# nexus_dir = os.path.dirname(nexusutils.__file__)\n", + "print('Base/home/root directory of the nexusutils')\n", + "print(nexus_dir)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### **Step 2:** Run your example-specific dataconverter/readers/ on the example data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we run our parser. The --reader flag takes the atom probe microscopy reader (ellips), the --nxdl flag takes the application definition for this technique.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Inspect what can/should be in the NeXus file." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/carola/NOMAD/test/nexusutils\n" + ] + } + ], + "source": [ + "! echo {nexus_dir}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Step 2a:** Optionally see the command line help of the dataconverter." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Usage: dataconverter [OPTIONS]\n", + "\n", + " The CLI entrypoint for the convert function\n", + "\n", + "Options:\n", + " --input-file TEXT The path to the input data file to read.\n", + " (Repeat for more than one file.)\n", + " --reader [apm|ellips|em_nion|em_spctrscpy|example|hall|json_map|json_yml|mpes|transmission]\n", + " The reader to use. default=\"example\"\n", + " --nxdl TEXT The name of the NXDL file to use without\n", + " extension.\n", + " --output TEXT The path to the output NeXus file to be\n", + " generated.\n", + " --generate-template Just print out the template generated from\n", + " given NXDL file.\n", + " --fair Let the converter know to be stricter in\n", + " checking the documentation.\n", + " --params-file FILENAME Allows to pass a .yaml file with all the\n", + " parameters the converter supports.\n", + " --help Show this message and exit.\n" + ] + } + ], + "source": [ + "! dataconverter --help" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Step 2b:** Optionally explore all paths which the application definition provides." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/DETECTOR[detector]/detector_type\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/DETECTOR[detector]/fixed_revolution\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/DETECTOR[detector]/fixed_revolution/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/DETECTOR[detector]/intensity_threshold\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/DETECTOR[detector]/min_intensity\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/DETECTOR[detector]/other_detector\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/DETECTOR[detector]/revolution\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/DETECTOR[detector]/revolution/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/DETECTOR[detector]/rotating_element\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/DETECTOR[detector]/variable_revolution\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/angle_of_incidence\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/angle_of_incidence/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/angular_spread\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/angular_spread/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/calibration/calibration_data/calibration_angle_of_incidence\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/calibration/calibration_data/calibration_angle_of_incidence/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/calibration/calibration_data/calibration_data\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/calibration/calibration_data/calibration_data_type\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/calibration/calibration_data/calibration_wavelength\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/calibration/calibration_sample\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/calibration/calibration_time\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/calibration_status\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/company\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/construction_year\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/data_correction\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/ellipsometry_type\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/firmware\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/firmware/@url\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/firmware/@version\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/focussing_probes\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/light_source\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/model\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/model/@version\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/GRATING[grating]/angular_dispersion\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/GRATING[grating]/grating_wavelength_max\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/GRATING[grating]/grating_wavelength_max/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/GRATING[grating]/grating_wavelength_min\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/GRATING[grating]/grating_wavelength_min/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/SLIT[slit]/fixed_slit\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/SLIT[slit]/max_gap\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/SLIT[slit]/max_gap/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/spectral_resolution\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/spectral_resolution/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/wavelength\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/spectrometer/wavelength/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/stage/TRANSFORMATIONS[transformations]/alternative\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/stage/description\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/stage/stage_type\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/window/material\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/window/orientation_angle\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/window/orientation_angle/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/window/other_material\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/window/reference_data/data\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/window/reference_data/reference_sample\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/window/reference_data/reference_wavelength\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/window/reference_data/reference_wavelength/@units\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/window/thickness\": \"None\",\n", + " \"/ENTRY[entry]/INSTRUMENT[instrument]/window/thickness/@units\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/atom_types\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/column_names\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/data_error\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/data_identifier\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/data_type\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/SENSOR[sensor]\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/medium\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/medium_refractive_indices\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/number_of_runs\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/number_of_runs/@units\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/optical_excitation/broadening\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/optical_excitation/broadening/@units\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/optical_excitation/duration\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/optical_excitation/duration/@units\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/optical_excitation/pulse_energy\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/optical_excitation/pulse_energy/@units\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/optical_excitation/wavelength\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/optical_excitation/wavelength/@units\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/environment_conditions/varied_parameters\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/layer_structure\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/measured_data\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/preparation_date\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/sample_history\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/sample_name\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/time_points\": \"None\",\n", + " \"/ENTRY[entry]/SAMPLE[sample]/time_points/@units\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/address\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/affiliation\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/email\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/name\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/orcid\": \"None\",\n", + " \"/ENTRY[entry]/USER[user]/telephone_number\": \"None\",\n", + " \"/ENTRY[entry]/acquisition_program/@url\": \"None\",\n", + " \"/ENTRY[entry]/acquisition_program/program\": \"None\",\n", + " \"/ENTRY[entry]/acquisition_program/version\": \"None\",\n", + " \"/ENTRY[entry]/definition\": \"None\",\n", + " \"/ENTRY[entry]/definition/@url\": \"None\",\n", + " \"/ENTRY[entry]/definition/@version\": \"None\",\n", + " \"/ENTRY[entry]/derived_parameters/depolarization\": \"None\",\n", + " \"/ENTRY[entry]/experiment_description\": \"None\",\n", + " \"/ENTRY[entry]/experiment_identifier\": \"None\",\n", + " \"/ENTRY[entry]/plot/@axes\": \"None\",\n", + " \"/ENTRY[entry]/start_time\": \"None\"\n", + "}\n" + ] + } + ], + "source": [ + "# to inspect what can/should all be in the NeXus file\n", + "! dataconverter --nxdl NXellipsometry --generate-template" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Step 2c**: Convert the files in the example into a NeXus HDF5 file." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using ellips reader to convert the given files: \n", + "• eln_data.yaml \n", + "The path, /ENTRY[entry]/plot/wavelength, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/wavelength/@units, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/psi_50deg, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/psi_50deg/@units, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/psi_60deg, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/psi_60deg/@units, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/psi_70deg, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/psi_70deg/@units, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/delta_50deg, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/delta_50deg/@units, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/delta_60deg, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/delta_60deg/@units, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/delta_70deg, is being written but has no documentation.\n", + "The path, /ENTRY[entry]/plot/delta_70deg/@units, is being written but has no documentation.\n", + "The output file generated: SiO2onSi.nxs\n" + ] + } + ], + "source": [ + "! dataconverter \\\n", + "--reader ellips \\\n", + "--nxdl NXellipsometry \\\n", + "--input-file eln_data.yaml \\\n", + "--output SiO2onSi.nxs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The key take home message is that the command above-specified triggers the automatic creation of the HDF5 file. This *.nxs file, is an HDF5 file." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### **Step 3:** Inspect the HDF5/NeXus file using H5Web." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from jupyterlab_h5web import H5Web" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "h5_file_name = 'SiO2onSi.nxs'" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "application/x-hdf5": "/home/carola/NOMAD/test/nexusutils/examples/ellipsometry/SiO2onSi.nxs", + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "H5Web(h5_file_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also visualize the .nxs file by double clicking on it in the file explorer panel to the left side of your jupyter lab screen in the browser." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/ellipsometry/eln_data.yaml b/examples/ellipsometry/eln_data.yaml new file mode 100644 index 000000000..6b0c7e733 --- /dev/null +++ b/examples/ellipsometry/eln_data.yaml @@ -0,0 +1,71 @@ +acquisition_program/\@url: https://www.jawoollam.com/ellipsometry-software/wvase +acquisition_program/program: WVASE +acquisition_program/version: '3.882' +address: Zum Großen Windkanal 2, 12489 Berlin, Germany +affiliation: Humboldt-Universität zu Berlin +angle_of_incidence_unit: degrees +angular_spread: + unit: rad ** 2 + value: 0.2 +atom_types: Si, O +blocks: +- type +- angle_of_incidence +calibration_status: no calibration +colnames: +- type +- wavelength +- angle_of_incidence +- psi +- delta +- err.psi +- err.delta +column_names: +- psi +- delta +company: J. A. Woollam Co. +count_time: + unit: s + value: 1 +data_identifier: 1 +data_type: psi/delta +definition: NXellipsometry +definition/\@url: https://github.com/FAIRmat-Experimental/nexus_definitions/tree/fairmat-ellips/contributed_definitions/NXellipsometry.nxdl.xml +definition/\@version: 0.0.2 +detector_type: CCD spectrometer +ellipsometry_type: dual compensator +email: surname.name@physik.hu-berlin.de +err-var: +- err.psi +- err.delta +experiment_description: RC2 scan on 2nm SiO2 on Si in air +experiment_identifier: exp-ID +filename: test-data.dat +firmware: CompleteEASE +firmware/\@url: https://www.jawoollam.com/ellipsometry-software/completeease +firmware/\@version: '6.37' +focussing_probes: false +integration_time: + unit: s + value: 0 +layer_structure: 2nm SiO2 on Si +light_source: arc lamp +medium: air +model: RC2 +model/\@version: 0.0.1 +name: Name Surname +parameters: +- type +- angle +rotating_element: compensator (source side) +sample_history: Commercially purchased sample +sample_name: 2nm SiO2 on Si +sep: \t +skip: 3 +stage_type: manual stage +start_time: '2022-01-27T04:35:00+00:00' +wavelength_unit: angstrom +x-var: wavelength +y-var: +- psi +- delta diff --git a/tests/data/tools/dataconverter/readers/ellips/test-data.dat b/examples/ellipsometry/test-data.dat similarity index 100% rename from tests/data/tools/dataconverter/readers/ellips/test-data.dat rename to examples/ellipsometry/test-data.dat diff --git a/tests/data/tools/dataconverter/readers/em_spctrscpy/EmSpctrscpy.NeXus.NXem.Example.1.ipynb b/examples/em/EmSpctrscpy.NeXus.NXem.Example.1.ipynb similarity index 79% rename from tests/data/tools/dataconverter/readers/em_spctrscpy/EmSpctrscpy.NeXus.NXem.Example.1.ipynb rename to examples/em/EmSpctrscpy.NeXus.NXem.Example.1.ipynb index 9b7306690..d5c832bdb 100644 --- a/tests/data/tools/dataconverter/readers/em_spctrscpy/EmSpctrscpy.NeXus.NXem.Example.1.ipynb +++ b/examples/em/EmSpctrscpy.NeXus.NXem.Example.1.ipynb @@ -16,15 +16,45 @@ "### **Step 1:** Check that everything is ready to go and download example data for EDS/STEM, EELS/TEM." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "check the result of the query below if the modules `jupyterlab_h5web` and `nexusutils` are installed in your environement. Note that next to the name nexusutils you should see the directory in which it is installed. Otherwise make sure that you followed the instructions in the `README` files: \n", + "- how to set up a development environment as in the main README \n", + "- lauch the jupyter lab from this environement as in the README of folder `examples`" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "! pip list | grep 'nomad\\|nexus'\n", - "! jupyter serverextension list\n", - "! jupyter labextension list" + "! pip list | grep 'h5py\\|nexus\\|jupyter' && jupyter serverextension list && jupyter labextension list && python -V" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Set nexus directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "print('Current working directory')\n", + "print(os.getcwd())\n", + "nexus_dir = os.getcwd().replace('/examples/em', '')\n", + "# import nexusutils\n", + "# nexus_dir = os.path.dirname(nexusutils.__file__)\n", + "print('Base/home/root directory of the nomad-parser-nexus')\n", + "print(nexus_dir)" ] }, { @@ -76,25 +106,6 @@ "### **Step 3:** Run your EM-spectroscopy-specific dataconverter/readers/ on the example data." ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Set the nexusparser directory." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import nexusparser\n", - "nexus_dir = os.path.dirname(nexusparser.__file__)\n", - "print(nexus_dir)" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -108,7 +119,7 @@ "metadata": {}, "outputs": [], "source": [ - "! python3 {nexus_dir}/tools/dataconverter/convert.py --help" + "! dataconverter --help" ] }, { @@ -124,7 +135,7 @@ "metadata": {}, "outputs": [], "source": [ - "! python3 {nexus_dir}/tools/dataconverter/convert.py --nxdl NXem --reader em_spctrscpy --generate-template" + "! dataconverter --nxdl NXem --reader em_spctrscpy --generate-template" ] }, { @@ -143,7 +154,7 @@ "#parser-nexus/tests/data/tools/dataconverter/readers/em/\n", "numerical_data = [\"46_ES-LP_L1_brg.bcf\", \"1613_Si_HAADF_610_kx.emd\", \"EELS_map_2_ROI_1_location_4.dm3\"]\n", "output_file_name = [\"epfl_bcf.nxs\", \"epfl_emd.nxs\", \"hu_dm3.nxs\"]\n", - "! python3 {nexus_dir}/tools/dataconverter/convert.py \\\n", + "! dataconverter \\\n", "--reader em_spctrscpy \\\n", "--nxdl NXem \\\n", "--input-file EELS_map_2_ROI_1_location_4.dm3 \\\n", @@ -208,6 +219,14 @@ "***" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Contact person for this example in FAIRmat:\n", + "Markus Kühbach" + ] + }, { "cell_type": "code", "execution_count": null, @@ -218,7 +237,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.7.11 ('nomad_north')", "language": "python", "name": "python3" }, @@ -232,7 +251,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.7.11" + }, + "vscode": { + "interpreter": { + "hash": "fb9c1bd38c7663f011bf442e740f4844d912585f80182885cfafffa0a1ff37a6" + } } }, "nbformat": 4, diff --git a/tests/data/tools/dataconverter/readers/em_spctrscpy/eln_data_em.yaml b/examples/em/eln_data_em.yaml similarity index 100% rename from tests/data/tools/dataconverter/readers/em_spctrscpy/eln_data_em.yaml rename to examples/em/eln_data_em.yaml diff --git a/examples/mpes/mpes.NeXus.mpes.Example.1.ipynb b/examples/mpes/mpes.NeXus.mpes.Example.1.ipynb new file mode 100644 index 000000000..dc05ad89d --- /dev/null +++ b/examples/mpes/mpes.NeXus.mpes.Example.1.ipynb @@ -0,0 +1,223 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## nexusutils demo for Multidimensional Photoemission Spectroscopy (MPES)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jupyter notebook displaying parsing from FHI preprocessing software output (x-array based .h5) to NXmpes formatted nexus" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### **Step 1:** Check that everything is ready to go and download example data. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "check the result of the query below if the modules `jupyterlab_h5web` and `nexusutils` are installed in your environement. Note that next to the name nexusutils you should see the directory in which it is installed. Otherwise make sure that you followed the instructions in the `README` files: \n", + "- how to set up a development environment as in the main README \n", + "- lauch the jupyter lab from this environement as in the README of folder `examples`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! pip list | grep 'h5py\\|nexus\\|jupyter' && jupyter serverextension list && jupyter labextension list && python -V" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Download mpes example data from Zenodo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! curl -o MoTe_xarray_final.h5 https://zenodo.org/record/5913599/files/MoTe_xarray_final.h5?download=1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### **Step 2:** Run your mpes-specific parser on the example data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Set the nexusparser directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "print('Current working directory')\n", + "print(os.getcwd())\n", + "nexus_dir = os.getcwd().replace('/examples/mpes', '')\n", + "# import nexusutils\n", + "# nexus_dir = os.path.dirname(nexusutils.__file__)\n", + "print('Base/home/root directory of the nexusutils')\n", + "print(nexus_dir)\n", + "data_dir = nexus_dir + '/tests/data/dataconverter/readers/mpes/'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we run our parser. The --reader flag takes the mpes reader (mpes), the --nxdl flag takes the application definition for this technique.
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "! dataconverter \\\n", + "--reader mpes \\\n", + "--nxdl NXmpes \\\n", + "--input-file MoTe_xarray_final.h5 \\\n", + "--input-file {data_dir}config_file.json \\\n", + "--input-file {data_dir}ELN_metadata_example.yaml \\\n", + "--output mpes.test.nxs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run the same parser alternatively using a function " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from nexusutils.dataconverter.convert import convert" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "convert(input_file=[\"MoTe_xarray_final.h5\", data_dir + \"config_file.json\", data_dir + \"ELN_metadata_example.yaml\"],\n", + " reader='mpes',\n", + " nxdl='NXmpes',\n", + " output='mpes.test.nxs')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The key take home message is that the command above-specified triggers the automatic creation of the HDF5 file.
\n", + "This *.nxs file, is an HDF5 file." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### **Step 3:** Inspect the HDF5/NeXus file using H5Web" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from jupyterlab_h5web import H5Web" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "h5_file_name = 'mpes.test.nxs'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H5Web(h5_file_name)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.11" + }, + "vscode": { + "interpreter": { + "hash": "fb9c1bd38c7663f011bf442e740f4844d912585f80182885cfafffa0a1ff37a6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tests/data/tools/dataconverter/readers/mpes/mpes.WSe2.Binning2NeXus.mpes.Example.2.ipynb b/examples/mpes/mpes.WSe2.Binning2NeXus.mpes.Example.2.ipynb similarity index 100% rename from tests/data/tools/dataconverter/readers/mpes/mpes.WSe2.Binning2NeXus.mpes.Example.2.ipynb rename to examples/mpes/mpes.WSe2.Binning2NeXus.mpes.Example.2.ipynb diff --git a/nexusparser.yaml b/nexusparser.yaml deleted file mode 100644 index 0bfd855b3..000000000 --- a/nexusparser.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# NexusParser Parameter File - v0.0.1 - -dataconverter: - reader: mpes - output: output.nxs - nxdl: NXmpes - input-file: ['config_file.json', 'ELN_metadata_example.yaml', 'xarray_saved_small_calibration.h5'] \ No newline at end of file diff --git a/nexusparser/metadata.yaml b/nexusparser/metadata.yaml deleted file mode 100644 index 3b918850d..000000000 --- a/nexusparser/metadata.yaml +++ /dev/null @@ -1,64 +0,0 @@ -codeName: nexus -codeLabel: NeXus -codeCategory: Database manager -status: production -codeLabelStyle: 'capitals: N, X.' -codeUrl: https://www.nexusformat.org/ -parserDirName: dependencies/parsers/nexus/ -parserGitUrl: https://github.com/nomad-coe/nomad-parser-nexus.git -preamble: | - This is not a real parser, but an example template on how to write one. You can fork this repository to create actual parsers. - - ## Get started - - You should create a virtual environment. This is optional, but highly recommended as - the required nomad-lab pypi package requires many dependencies with specific versions - that might conflict with other libraries that you have installed. This was tested - with Python 3.7. - - ``` - pip install virtualenv - virtualenv -p `which python3` .pyenv - source .pyenv/bin/activate - ``` - - Simply install our pypi package with pip: - ``` - pip install --upgrade pip - pip install nomad-lab - ``` - - Clone this project (or fork and then clone the fork). Go into the cloned directly and - directly run the parser from there: - ``` - git clone https://github.com/nomad-coe/nomad-parser-nexus.git parser-nexus - cd parser-nexus - python -m nexusparser tests/data/nexus.out - ``` - - There are also a basic test framework written in [pytest](https://docs.pytest.org/en/stable/). - Install the remaining dev dependencies and run the tests with: - ``` - pip install -r requirements.txt - pytest -sv tests - ``` - - ## Next steps - - Our documentation provides several resources that might be interesting: - - [How to write a parser](https://nomad-lab.eu/prod/rae/docs/parser.html). Provides - a more detailed tutorial on how to write a parser. - - [Introduction to the NOMAD Metainfo](https://nomad-lab.eu/prod/rae/docs/metainfo.html). - This explains how NOMAD data schema and can be extended and used within your parser. - - To get you parser included in NOMAD or ask further questions, you can: - - Use our forums at [matsci.org](https://matsci.org/c/nomad/32) - - Open an issue on the [nexus-parser GitHub project](https://github.com/nomad-coe/nomad-parser-nexus/issues) - - Write to [support@nomad-lab.eu](mailto:support@nomad-lab.eu) - - **Note!** The rest of this README.md is the usual text that applies to all NOMAD parsers. - -tableOfFiles: | - |Input Filename| Description| - |--- | --- | - |`nexus.out` | **Mainfile** in NEXUS specific plain-text | diff --git a/nexusparser/metainfo/nexus.py b/nexusparser/metainfo/nexus.py deleted file mode 100644 index 38e8ae425..000000000 --- a/nexusparser/metainfo/nexus.py +++ /dev/null @@ -1,544 +0,0 @@ -"""This tool is reading the xml file - -""" -# -# Copyright The NOMAD Authors. -# -# This file is part of NOMAD. See https://nomad-lab.eu for further info. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -import re -import os -import os.path -import sys -from typing import Dict, Any -import xml.etree.ElementTree as ET -import numpy as np -from nomad.utils import strip -from nomad.metainfo import ( - Section, Package, SubSection, Definition, Datetime, Bytes, Unit, MEnum, Quantity) -from nomad.datamodel import EntryArchive -from nexusparser.tools import nexus - -# URL_REGEXP from -# https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url -URL_REGEXP = re.compile(r'(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]' - r'{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*))') -XML_NAMESPACES = {'nx': 'http://definition.nexusformat.org/nxdl/3.1'} - -# TO DO the validation still show some problems. Most notably there are a few higher -# dimensional fields with non number types, which the metainfo does not support -VALIDATE = False -CURRENT_PACKAGE: Package = None -_definition_sections: Dict[str, Section] = dict() -_XML_PARENT_MAP: Dict[ET.Element, ET.Element] = None -_NX_DOC_BASE = 'https://manual.nexusformat.org/classes' -_NX_TYPES = { # Primitive Types, 'ISO8601' is the only type not defined here - 'NX_COMPLEX': np.dtype(np.float64), - 'NX_FLOAT': np.dtype(np.float64), - 'NX_CHAR': str, - 'NX_BOOLEAN': bool, - 'NX_INT': np.dtype(np.int64), - 'NX_UINT': np.dtype(np.uint64), - 'NX_NUMBER': np.dtype(np.number), - 'NX_POSINT': np.dtype(np.uint64), - 'NX_BINARY': Bytes, - 'NX_DATE_TIME': Datetime} - - -def to_camel_case(snake_str: str, upper: bool = False): - """Take as input a snake case variable and return a camel case one - -""" - components = snake_str.split('_') - - if upper: - return ''.join(f'{x[0].upper()}{x[1:]}' for x in components) - - return components[0] + ''.join(f'{x[0].upper()}{x[1:]}' for x in components[1:]) - - -def nx_documenation_url(xml_node: ET.Element, nx_type: str): - """Get documentation url - -""" - anchor_segments = [] - if nx_type != 'class': - anchor_segments.append(nx_type) - - while xml_node is not None: - xml_parent = xml_node - if 'name' in xml_node.attrib: - anchor_segments.append(xml_node.attrib['name'].replace('_', '-')) - else: - anchor_segments.append(xml_node.attrib['type'][2:].replace('_', '-')) - - xml_node = _XML_PARENT_MAP.get(xml_node) - - anchor = "-".join([name.lower() for name in reversed(anchor_segments)]) - nx_package = xml_parent.get('nxdl_base').split('/')[-1] - doc_url = f'{_NX_DOC_BASE}/{nx_package}/{anchor_segments[-1]}.html#{anchor}' - return doc_url - - -def get_or_create_section(name: str, **kwargs) -> Section: - """Returns the 'existing' metainfo section for a given top-level nexus base-class name. - - This function ensures that sections for these base-classes are only created one. - This allows to access the metainfo section even before it is generated from the base-class - nexus definition. - -""" - if name in _definition_sections: - section = _definition_sections[name] - section.more.update(**kwargs) - return section - - section = Section(validate=VALIDATE, name=name, **kwargs) - CURRENT_PACKAGE.section_definitions.append(section) - _definition_sections[section.name] = section - - return section - - -def get_enum(xml_node: ET.Element): - """Get the enumeration field from xml node - -""" - enumeration = xml_node.find('nx:enumeration', XML_NAMESPACES) - if enumeration is not None: - enum_values = [] - for enum_value in enumeration.findall('nx:item', XML_NAMESPACES): - enum_values.append(enum_value.attrib['value']) - return MEnum(*enum_values) - return None - - -def add_common_properties_helper(base_section, definition): - """Define definition var from base_section var - -""" - if base_section.description: - definition.description = base_section.description - if base_section.deprecated: - definition.deprecated = base_section.deprecated - if base_section.more: - definition.more.update(**base_section.more) - - -def get_nexus_category(xml_node: ET.Element): - ''' - retrieves the category from the root element - ''' - elem = xml_node - parent = elem - while parent is not None: - elem = parent - parent = _XML_PARENT_MAP.get(elem) - return elem.attrib['category'] - - -def add_common_properties(xml_node: ET.Element, definition: Definition): - ''' - Adds general metainfo definition properties (e.g. deprecated, docs, optional, ...) - from the given nexus XML node to the given metainfo definition. - ''' - nx_kind = definition.more.get('nx_kind') - nx_category = get_nexus_category(xml_node) - xml_attrs = xml_node.attrib - - # Read properties from potential base section. Those are not inherited, but we - # duplicate them for a nicer presentation - if isinstance(definition, Section) and definition.base_sections: - base_section = definition.base_sections[0] - add_common_properties_helper(base_section, definition) - links = [] - if nx_kind is not None: - doc_url = nx_documenation_url(xml_node, nx_kind) - if doc_url: - links.append(doc_url) - - doc = xml_node.find('nx:doc', XML_NAMESPACES) - if doc is not None and doc.text is not None: - definition.description = strip(doc.text) - for match in URL_REGEXP.findall(definition.description): - links.append(match[0]) - - if links: - definition.links = links - - if 'deprecated' in xml_attrs: - definition.deprecated = xml_attrs['deprecated'] - - definition.more['nx_optional'] = xml_attrs.get( - 'optional', nx_category == 'base') - - if 'minOccurs' in xml_attrs: - definition.more['nx_min_occurs'] = xml_attrs['minOccurs'] - if 'maxOccurs' in xml_attrs: - definition.more['nx_max_occurs'] = xml_attrs['maxOccurs'] - if 'required' in xml_attrs: - definition.more['nx_required'] = xml_attrs['required'] - if 'recommended' in xml_attrs: - definition.more['nx_recommended'] = xml_attrs['recommended'] - - if 'category' in xml_attrs: - definition.more['nx_category'] = xml_attrs['category'] - - # TO DO there are probably even more nxdl attributes? - - -def add_attributes(xml_node: ET.Element, section: Section): - ''' - Adds quantities for all attributes in the given nexus XML node to the given - section. - ''' - for attribute in xml_node.findall('nx:attribute', XML_NAMESPACES): - attribute_section = create_attribute_section(attribute, section) - - name = attribute.attrib["name"] - max_occurs = attribute.attrib.get('maxOccurs', '0') - repeats = any(name_char.isupper() - for name_char in name) or max_occurs == 'unbounded' or int(max_occurs) > 1 - - section.sub_sections.append(SubSection( - section_def=attribute_section, nx_kind='attribute', - name=f'nx_attribute_{name}', repeats=repeats)) - - -def add_group_properties(xml_node: ET.Element, section: Section): - ''' - Adds all properties that can be generated from the given nexus group XML node to - the given (empty) metainfo section definition. - ''' - for group in xml_node.findall('nx:group', XML_NAMESPACES): - group_section = create_group_section(group, section) - section.inner_section_definitions.append(group_section) - if 'name' in group.attrib: - name = f'nx_group_{group.attrib["name"]}' - else: - name = f'nx_group_{group.attrib["type"].replace("NX", "").upper()}' - max_occurs = group.attrib.get('maxOccurs', '0') - repeats = any(name_char.isupper() - for name_char in name) or max_occurs == 'unbounded' or int(max_occurs) > 1 - section.sub_sections.append(SubSection( - section_def=group_section, nx_kind='group', name=name, repeats=repeats)) - for field in xml_node.findall('nx:field', XML_NAMESPACES): - field_section = create_field_section(field, section) - name = field.attrib["name"] - max_occurs = field.attrib.get('maxOccurs', '0') - repeats = any(name_char.isupper() - for name_char in name) or max_occurs == 'unbounded' or int(max_occurs) > 1 - - section.sub_sections.append(SubSection( - section_def=field_section, nx_kind='field', - name=f'nx_field_{name}', repeats=repeats)) - - add_attributes(xml_node, section) - - -def add_template_properties(xml_node: ET.Element, section: Section): - ''' - Adds potential abilities of a group or field section to act as a TEMPLATE or - nameType="any" definition. - ''' - is_template = section.name.lower() != section.name or 'name' not in xml_node.attrib - if is_template: - section.quantities.append(Quantity( - name='nx_name', type=str, default=xml_node.attrib.get('name'), description=''' - This is a nexus template property. This quantity holds the actual name used - in the nexus data.''')) - - -def add_base_section(section: Section, container: Section, default_base_section: Section = None): - ''' - Potentially adds a base section to the given section, if the given container has - a base-section with a suitable base. - ''' - base_section = container.all_inner_section_definitions.get(section.name, None) - if base_section: - assert base_section.nx_kind == section.nx_kind, 'base section has wrong nexus kind' - else: - base_section = default_base_section - - if base_section: - section.base_sections = [base_section] - - -def create_attribute_section(xml_node: ET.Element, container: Section) -> Section: - ''' - Creates a metainfo section from the nexus attribute given as xml node. - ''' - xml_attrs = xml_node.attrib - assert 'name' in xml_attrs, 'attribute has not name' - - attribute_section = Section( - validate=VALIDATE, nx_kind='attribute', - name=xml_attrs['name'] + 'Attribute') - add_base_section(attribute_section, container) - container.inner_section_definitions.append(attribute_section) - - base_value_quantity = attribute_section.all_quantities.get('nx_value') - if base_value_quantity is None: - value_quantity = Quantity( - name='nx_value', description='The value for this nexus attribute') - else: - value_quantity = base_value_quantity.m_copy() - attribute_section.quantities.append(value_quantity) - - enum_type = get_enum(xml_node) - if enum_type is not None: - value_quantity.type = enum_type - - if value_quantity.type is None: - value_quantity.type = str - - add_common_properties(xml_node, attribute_section) - add_template_properties(xml_node, attribute_section) - - return attribute_section - - -def add_units(xml_attrs, field_section): - """add units to section""" - if 'units' in xml_attrs: - field_section.more['nx_units'] = xml_attrs['units'] - if xml_attrs['units'] != 'NX_UNITLESS': - # TO DO a default could be created from the nx_units value - field_section.quantities.append(Quantity( - name='nx_unit', type=Unit, - # a_elasticsearch=Elasticsearch(), - description='The specific unit for that this fields data has.')) - return field_section - - -def create_field_section(xml_node: ET.Element, container: Section): - ''' - Creates a metainfo section from the nexus field given as xml node. - ''' - xml_attrs = xml_node.attrib - - assert 'name' in xml_attrs, 'field has not name' - name = xml_attrs['name'] + 'Field' - field_section = Section(validate=VALIDATE, nx_kind='field', name=name) - add_base_section(field_section, container) - container.inner_section_definitions.append(field_section) - - add_template_properties(xml_node, field_section) - - base_value_quantity = field_section.all_quantities.get('nx_value') - if base_value_quantity: - value_quantity = base_value_quantity.m_copy() - else: - value_quantity = Quantity(name='nx_value', description='The value for this nexus field') - field_section.quantities.append(value_quantity) - - if 'type' in xml_attrs: - nx_type = xml_attrs['type'] - else: - nx_type = 'NX_CHAR' - if nx_type not in _NX_TYPES: - raise NotImplementedError(f'type {nx_type} is not supported for {name}') - field_section.more['nx_type'] = nx_type - - if value_quantity.type is None or value_quantity.type is Any or nx_type != 'NX_CHAR': - value_quantity.type = _NX_TYPES[nx_type] - - enum_type = get_enum(xml_node) - if enum_type: - value_quantity.type = enum_type - - if value_quantity.type is None: - value_quantity.type = Any - - field_section = add_units(xml_attrs, field_section) - - dimensions = xml_node.find('nx:dimensions', XML_NAMESPACES) - if dimensions is not None: - shape = [] - for dimension in dimensions.findall('nx:dim', XML_NAMESPACES): - dimension_value: Any = dimension.attrib.get('value', '*') - try: - dimension_value = int(dimension_value) - except ValueError: - pass - shape.append(dimension_value) - value_quantity.shape = shape - - add_common_properties(xml_node, field_section) - add_attributes(xml_node, field_section) - - return field_section - - -def create_group_section(xml_node: ET.Element, container: Section) -> Section: - ''' - Creates a metainfo section from the nexus group given as xml node. - ''' - xml_attrs = xml_node.attrib - typ = xml_attrs['type'] - - if 'name' in xml_attrs: - name = xml_attrs['name'] + 'Group' - else: - name = typ + 'Group' - - group_section = Section(validate=VALIDATE, nx_kind='group', name=name) - add_base_section(group_section, container, get_or_create_section(typ)) - - add_common_properties(xml_node, group_section) - add_template_properties(xml_node, group_section) - add_group_properties(xml_node, group_section) - - return group_section - - -def create_class_section(xml_node: ET.Element) -> Section: - ''' - Creates a metainfo section from the top-level nexus definition given as xml node. - ''' - xml_attrs = xml_node.attrib - assert 'name' in xml_attrs - assert 'category' in xml_attrs - - class_section = get_or_create_section(xml_attrs['name'], - nx_kind=xml_attrs['type'], - nx_category=xml_attrs['category']) - - if 'extends' in xml_attrs: - base_section = get_or_create_section(xml_attrs['extends']) - class_section.base_sections = [base_section] - - add_common_properties(xml_node, class_section) - add_group_properties(xml_node, class_section) - - return class_section - - -def sort_nxdl_files(paths): - '''sorting all definitions based on dependencies''' - def compare_dependencies(nxdl1, nxdl2): - if 'extends' in nxdl1.attrib and nxdl1.attrib['extends'] == nxdl2.attrib['name']: - return True - for group1 in nxdl1.iter("*"): - if group1.tag[group1.tag.rindex("}") + 1:] == 'group' and \ - group1.attrib['type'] == nxdl2.attrib['name']: - break - else: - return False - for group2 in nxdl2.iter("*"): - if group2.tag[group2.tag.rindex("}") + 1:] == 'group' and \ - group2.attrib['type'] == nxdl1.attrib['name']: - return False - return True - - list_of_nxdl = [] - for path in paths: - for nxdl_file in sorted(os.listdir(path)): - if not nxdl_file.endswith('.nxdl.xml'): - continue - if nxdl_file in [el.attrib["name"] + '.nxdl.xml' for el in list_of_nxdl]: - continue - xml_tree = ET.parse(os.path.join(path, nxdl_file)) - xml_node = xml_tree.getroot() - xml_node.set('nxdl_base', path) - assert xml_node.attrib.get('type') == 'group', 'definition is not a group' - list_of_nxdl.append(xml_node) - sorted_index = 0 - while sorted_index < len(list_of_nxdl): - current_index = sorted_index + 1 - while current_index < len(list_of_nxdl): - if compare_dependencies(list_of_nxdl[sorted_index], list_of_nxdl[current_index]): - list_of_nxdl.append(list_of_nxdl[sorted_index]) - list_of_nxdl.__delitem__(sorted_index) - break - current_index = current_index + 1 - if current_index == len(list_of_nxdl): - sorted_index = sorted_index + 1 - # print('\n'.join([(nxdl.attrib['name'],p.attrib["nxdl_base"]) for nxdl in list_of_nxdl])) - return list_of_nxdl - - -def add_section_from_nxdl(xml_node): - ''' - Creates a metainfo section from an nxdl file. - ''' - try: - global _XML_PARENT_MAP # pylint: disable=global-statement - _XML_PARENT_MAP = { - child: parent for parent in xml_node.iter() for child in parent} - - # The section gets already implicitly added to CURRENT_PACKAGE by get_or_create_section - create_class_section(xml_node) - - except NotImplementedError as err: - print('Exception while mapping ' + xml_node.attrib["name"] + ':', err, file=sys.stderr) - - -def create_package_from_nxdl_directories(paths) -> Package: - ''' - Creates a metainfo package from the given nexus directory. Will generate the respective - metainfo definitions from all the nxdl files in that directory. - ''' - global CURRENT_PACKAGE # pylint: disable=global-statement - CURRENT_PACKAGE = Package(name=f'nexus') - - sorted_files = sort_nxdl_files(paths) - for nxdl_file in sorted_files: - add_section_from_nxdl(nxdl_file) - - return CURRENT_PACKAGE - - -# separated metainfo package for the nexus base classes, application defs and contributed classes. -DIRS = [os.path.join(nexus.get_nexus_definitions_path(), 'contributed_definitions')] -DIRS.append(os.path.join(nexus.get_nexus_definitions_path(), 'base_classes')) -DIRS.append(os.path.join(nexus.get_nexus_definitions_path(), 'applications')) -APPLICATIONS = create_package_from_nxdl_directories(DIRS) -PACKAGES = (APPLICATIONS,) # , APPLICATIONS, CONTRIBUTED) - -# We take the application definitions and create a common parent section that allows to -# include nexus in an EntryArchive. -NEXUS_SECTION = Section(validate=VALIDATE, name='Nexus') - -for application_section in APPLICATIONS.section_definitions: # pylint: disable=not-an-iterable - if application_section.more.get('nx_category') == 'application': - sub_section = SubSection( - section_def=application_section, - name=application_section.name.replace('NX', 'nx_application_')) - NEXUS_SECTION.sub_sections.append(sub_section) - -APPLICATIONS.section_definitions.append(NEXUS_SECTION) - -ENTRY_ARCHIVE_NEXUS_SUB_SECTION = \ - SubSection(name='nexus', - section_def=NEXUS_SECTION) -EntryArchive.nexus = ENTRY_ARCHIVE_NEXUS_SUB_SECTION # type: ignore -EntryArchive.m_def.sub_sections.append(ENTRY_ARCHIVE_NEXUS_SUB_SECTION) -ENTRY_ARCHIVE_NEXUS_SUB_SECTION.init_metainfo() - - -# We need to initialize the metainfo definitions. This is usually done automatically, -# when the metainfo schema is defined though MSection Python classes. -for package in PACKAGES: - package.init_metainfo() - - -# We skip the Python code generation for now and offer Python classes as variables -# TO DO not necessary right now, could also be done case-by-case by the nexus parser -PYTHON_MODULE = sys.modules[__name__] -for package in PACKAGES: - for sektion in package.section_definitions: # pylint: disable=not-an-iterable - setattr(PYTHON_MODULE, sektion.name, sektion.section_cls) diff --git a/nexusparser/parser.py b/nexusparser/parser.py deleted file mode 100644 index c926578c9..000000000 --- a/nexusparser/parser.py +++ /dev/null @@ -1,288 +0,0 @@ -"""parser doc - -""" -# -# Copyright The NOMAD Authors. -# -# This file is part of NOMAD. See https://nomad-lab.eu for further info. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -from typing import Iterable, Union -import os -import pathlib -import numpy as np -from nomad.datamodel import EntryArchive -from nomad.parsing import MatchingParser -# from . import metainfo # pylint: disable=unused-import -from nexusparser.tools import nexus as read_nexus -from nexusparser.metainfo import nexus - - -def get_to_new_subsection(hdf_name, nxdef, nxdl_node, act_section): - """hdf_name name of the hdf group/field/attribute (None for definition) - nxdef application definition - nxdl_node node in the nxdl.xml - act_class actual class - act_section actual section in which the new entry needs to be picked up from - Note that if the new element did not exists, it is created now - return (new_class, new_section) - TODO: try to find also in the base section??? - -""" - if hdf_name is None: - nomad_def_name = 'nx_application_' + nxdef[2:] - # nomad_class_name = nxdef - elif nxdl_node.tag.endswith('field'): - nxdl_f_a_name = nxdl_node.attrib['name'] if 'name' in nxdl_node.attrib else hdf_name - nomad_def_name = 'nx_field_' + nxdl_f_a_name - # nomad_class_name = self.get_nomad_classname(nxdl_f_a_name, None, "Field") - elif nxdl_node.tag.endswith('group'): - nxdl_g_name = nxdl_node.attrib['name'] \ - if 'name' in nxdl_node.attrib else nxdl_node.attrib['type'][2:].upper() - nomad_def_name = 'nx_group_' + nxdl_g_name - # nomad_class_name = self.get_nomad_classname(read_nexus.get_node_name(nxdl_node), - # nxdl_node.attrib['type'], "Group") - else: - nxdl_f_a_name = nxdl_node.attrib['name'] if 'name' in nxdl_node.attrib else hdf_name - nomad_def_name = 'nx_attribute_' + nxdl_f_a_name - # nomad_class_name = self.get_nomad_classname(nxdl_f_a_name, None, "Attribute") - - new_def = act_section.m_def.all_sub_sections[nomad_def_name] - new_class = new_def.section_def.section_cls - new_section = None - for section in act_section.m_get_sub_sections(new_def): - if hdf_name is None or (getattr(section, "nx_name") and section.nx_name == hdf_name): - new_section = section - break - if new_section is None: - act_section.m_create(new_class) - new_section = act_section.m_get_sub_section(new_def, -1) - if hdf_name is not None: - new_section.nx_name = hdf_name - return (new_class, new_section) - - -def get_value(hdf_node): - """Get value from hdl5 node - -""" - hdf_value = hdf_node[...] - if str(hdf_value.dtype) == 'bool': - val = bool(hdf_value) - elif hdf_value.dtype.kind in 'iufc': - val = hdf_value - else: - try: - val = str(hdf_value.astype(str)) - except UnicodeDecodeError: - val = str(hdf_node[()].decode()) - return val - - -def helper_nexus_populate(nxdl_attribute, act_section, val, logger): - """Handle info of units attribute, raise error if default or something else is found - -""" - try: - if nxdl_attribute == "units": - act_section.nx_unit = val[0] - elif nxdl_attribute == "default": - Exception("Quantity 'default' is not yet added by default to groups in Nomad schema") - except Exception as exc: # pylint: disable=broad-except - logger.debug("Problem with storage!!!\n" + str(exc)) - - -def nexus_populate_helper(params): - """helper for nexus_populate""" - (path_level, nxdl_path, act_section, logstr, val, loglev, nxdef, hdf_node) = params - if path_level < len(nxdl_path): - nxdl_attribute = nxdl_path[path_level] - if isinstance(nxdl_attribute, str): - # conventional attribute not in schema. Only necessary, - # if schema is not populated according - # helper_nexus_populate(nxdl_attribute, act_section, val, logger) - try: - if nxdl_attribute == "units": - act_section.nx_unit = val[0] - elif nxdl_attribute == "default": - Exception( - "'default' is not yet added by default to groups in Nomad schema") - except Exception as exc: # pylint: disable=broad-except - logstr += ("Problem with storage!!!\n" + str(exc)) + '\n' - loglev = 'error' - else: - # attribute in schema - act_section = \ - get_to_new_subsection(nxdl_attribute.attrib['name'], nxdef, - nxdl_attribute, act_section)[1] - try: - act_section.nx_value = val[0] - except (AttributeError, TypeError, ValueError) as exc: - logstr += ("Problem with storage!!!\n" + str(exc)) + '\n' - loglev = 'error' - else: - try: - data_field = get_value(hdf_node) - if hdf_node[...].dtype.kind in 'iufc' and \ - isinstance(data_field, np.ndarray) and \ - data_field.size > 1: - data_field = np.array([ - np.mean(data_field), - np.var(data_field), - np.min(data_field), - np.max(data_field) - ]) - act_section.nx_value = data_field - except (TypeError, ValueError) as exc: - logstr += ("Problem with storage!!!\n" + str(exc)) + '\n' - loglev = 'error' - return [logstr, loglev] - - -def add_log(params, logstr): - """adds log entry for the given node""" - if params["nxdef"] is not None: - logstr += params["nxdef"] - else: - logstr += '???' - logstr += ':' - first = True - for p_node in params["nxdl_path"]: - if first: - first = False - else: - logstr += '.' - if isinstance(p_node, str): - logstr += p_node - else: - read_nexus.get_node_name(p_node) - logstr += ' - ' + params["val"][0] - if len(params["val"]) > 1: - logstr += '...' - logstr += '\n' - return logstr - - -class NexusParser(MatchingParser): - ''' - NexusParser doc - ''' - - def __init__(self): - super().__init__( - metadata_path=f'{pathlib.Path(__file__).parent.resolve()}/metadata.yaml', - mainfile_mime_re=r'(application/.*)|(text/.*)', - mainfile_name_re=(r'.*\.nxs'), - supported_compressions=['gz', 'bz2', 'xz'] - ) - self.archive = None - self.nxroot = None - - def is_mainfile( # pylint: disable=too-many-arguments - self, filename: str, mime: str, buffer: bytes, decoded_buffer: str, - compression: str = None) -> Union[bool, Iterable[str]]: - accepted_extensions = (".nxs", ".yaml", ".yml") - extension = pathlib.Path(filename).suffix - if extension in accepted_extensions: - if buffer[0:8] == b'\x89HDF\r\n\x1a\n': - return True - if buffer[0:30] == b"# NexusParser Parameter File -": - return True - return False - -# def get_nomad_classname(self, xml_name, xml_type, suffix): -# """Get nomad classname from xml file - -# """ -# if suffix == 'Attribute' or suffix == 'Field' or xml_type[2:].upper() != xml_name: -# name = xml_name + suffix -# else: -# name = xml_type + suffix -# return name - - def nexus_populate(self, params, attr=None): - """Walks through hdf_namelist and generate nxdl nodes - (hdf_info, nxdef, nxdl_path, val, logger) = params""" - hdf_path = params["hdf_info"]['hdf_path'] - hdf_node = params["hdf_info"]['hdf_node'] - logstr = hdf_path + (("@" + attr) if attr else '') + '\n' - loglev = 'info' - if params["nxdl_path"] is not None: - logstr = add_log(params, logstr) - act_section = self.nxroot - hdf_namelist = hdf_path.split('/')[1:] - act_section = get_to_new_subsection(None, params["nxdef"], None, act_section)[1] - path_level = 1 - for hdf_name in hdf_namelist: - if path_level < len(params["nxdl_path"]): - nxdl_node = params["nxdl_path"][path_level] - else: - nxdl_node = hdf_name - act_section = get_to_new_subsection(hdf_name, params["nxdef"], - nxdl_node, act_section)[1] - path_level += 1 - helper_params = (path_level, params["nxdl_path"], act_section, logstr, params["val"], - loglev, params["nxdef"], hdf_node) - (logstr, loglev) = nexus_populate_helper(helper_params) - else: - logstr += ('NOT IN SCHEMA - skipped') + '\n' - loglev = 'warning' - if loglev == 'info': - params["logger"].info('Parsing', nexusparser=logstr) - elif loglev == 'warning': - params["logger"].warning('Parsing', nexusparser=logstr) - elif loglev == 'error': - params["logger"].error('Parsing', nexusparser=logstr) - else: - params["logger"].critical('Parsing', nexusparser=logstr + 'NOT HANDLED\n') - - def parse(self, mainfile: str, archive: EntryArchive, logger=None, child_archives=None): - self.archive = archive - self.archive.m_create(nexus.Nexus) # type: ignore[attr-defined] # pylint: disable=no-member - self.nxroot = self.archive.nexus - - extension = pathlib.Path(mainfile).suffix - if extension in (".yaml", ".yml"): - base_dir = os.path.dirname(mainfile) - from nexusparser.tools.dataconverter.convert import convert, parse_params_file - with open(mainfile) as file: - conv_params = parse_params_file(file) - - def check_path(path: str): - """Return true if path supplied by the user is not absolute or has a ../""" - if os.path.isabs(path) or ".." in path: - raise Exception("The user provided an invalid path in the parameter YAML.") - return path - - if isinstance(conv_params["input_file"], list): - conv_params["input_file"] = [f"{base_dir}{os.sep}{check_path(file)}" - for file in conv_params["input_file"]] - else: - conv_params["input_file"] = (f"{base_dir}{os.sep}" - f"{check_path(conv_params['input_file'])}") - conv_params["output"] = f"{base_dir}{os.sep}{check_path(conv_params['output'])}" - convert(**conv_params) - mainfile = conv_params["output"] - - nexus_helper = read_nexus.HandleNexus(logger, [mainfile]) - nexus_helper.process_nexus_master_file(self.nexus_populate) - - appdef = "" - for var in dir(archive.nexus): - if var.startswith("nx_application") and getattr(archive.nexus, var) is not None: - appdef = var[len("nx_application_"):] - - if archive.metadata is not None: - archive.metadata.entry_type = f"NX{appdef}" diff --git a/nexusparser/tools/__init__.py b/nexusparser/tools/__init__.py deleted file mode 100644 index 792d60054..000000000 --- a/nexusparser/tools/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# diff --git a/nexusparser/tools/dataconverter/readers/README.md b/nexusparser/tools/dataconverter/readers/README.md deleted file mode 100644 index c82b5e28e..000000000 --- a/nexusparser/tools/dataconverter/readers/README.md +++ /dev/null @@ -1,87 +0,0 @@ -# File/Metadata and Data Format Reader Plug-ins aka ``reader`` - -The purpose of the dataconverter is to create HDF5 files with content that matches a specific NeXus application definition. -Such application definitions are useful for collecting a set of pieces of information about a specific experiment in a given -scientific field. The pieces of information are metadata and numerical data. The application definition is used to provide -these data in a format that the duties of a data delivery contract can be fulfilled: The HDF5 file, or so-called NeXus file, -delivers all those pieces of information which the application definition specifies. - -The here developed and so-called readers, are effectively software tools (plug-ins) which the converter calls to -accomplish this task for a specific set of application definition (NXDL file) plus a set of experiment/method-specific file(s). -These files can be files in a proprietary format, or of a certain format used in the respective scientific community, or -text files. Only in combination these files hold at least all the required pieces of information which the -application definition demands. - -## Project structure - -- `tbd` - Maybe further explanations are useful here. - -## Getting started - -The readers get cloned as plug-in dependencies while cloning the dataconverter. -Therefore, please follow the instructions for cloning the reader as a complete package. - -## Download the example data for testing and development purposes - -Before using your own data we strongly encourage you to download a set of open-source -test data for testing the plug-ins. There are specific jupyter-notebook examples (where??) which -detail how these tests can be executed for each of the specific readers which are listed below. - -Once you have practised with these tools how to convert these examples, feel free to -use the tools for converting your own data. You should feel invited to contact the respective -corresponding author(s) of each plug-in if you run into issues with the plug-in or feel there -is a necessity to include additional data into the NeXus file for the respective application. - -We are looking forward for learning from your experience and see the interesting use cases. - -## Current readers/plug-ins - -Details to the individual readers follow. Each reader is documented with a description -of its primary target audience, its scientific field and corresponding author. In addition, -individual support is given on how each reader can be executed. - -## apm - -`targets:` atom probe microscopy -`accepts:` NXapm.nxdl.xml -`offers:` generic reader for atom probe tomography and some related field-ion microscopy experiments. -`supports:` pos, epos, apt (the one introduced with AP Suite), rng, rrng, json -`statusquo:` single experiment + single range file + single file with additional metadata as a json document. -`contact:` Markus Kühbach (Humboldt-Universität zu Berlin) - -```sh -python converter.py --reader apm --nxdl ../../definitions/applications/NXapm.nxdl.xml --input-file 70_50_50.apt --input-file SeHoKim_R5076_44076_v02.rng --input-file ManuallyCollectedMetadata.json --output apm.test.nxs -``` - -## arpes - -`targets:` photo-emission spectroscopy -`accepts:` ?? -`offers:` ?? -`supports:` ?? -`statusquo:` ?? -`contact:` Tommaso Pincelli, Laurenz Rettig, Abeer Arora (Fritz-Haber-Institute of the Max-Planck Society) - -## em_nion - -`targets:` electron microscopy -`accepts:` NXem_nion.nxdl.xml -`offers:` initial reader for results from Nion microscopes and results achieved with nionswift software. -`supports:` npy, json -`statusquo:` single experiment and two json file(s) with additional metadata -`contact:` Markus Kühbach, Benedikt Haas, Sherjeel Shabih (Humboldt-Universität zu Berlin) - -```sh -python converter.py --reader em_nion --nxdl ../../definitions/applications/NXem_nion.nxdl.xml --input-file HAADF_01.npy --input-file HAADF_01.json --input-file HAADF_01.ELabFTW.dat --output em.test.nxs -``` - -## ellipsometry - -`targets:` ellipsometry -`accepts:` ?? -`offers:` ?? -`supports:` ?? -`statusquo:` ?? -`contact:` Carola Emminger, Tamas Haraszti, Chris Sturm (add affiliations) - - diff --git a/nexusparser/__init__.py b/nexusutils/__init__.py similarity index 100% rename from nexusparser/__init__.py rename to nexusutils/__init__.py diff --git a/nexusparser/tools/dataconverter/Readme.md b/nexusutils/dataconverter/README.md similarity index 77% rename from nexusparser/tools/dataconverter/Readme.md rename to nexusutils/dataconverter/README.md index 3590349da..2c16acee6 100644 --- a/nexusparser/tools/dataconverter/Readme.md +++ b/nexusutils/dataconverter/README.md @@ -1,6 +1,6 @@ -# Data Converter +# Dataconverter -Converts experimental data to Nexus/HDF5 files based on any provided NXDL. +Converts experimental data to NeXus/HDF5 files based on any provided NXDL. ```console user@box:~$ python convert.py @@ -12,7 +12,7 @@ Options: --reader TEXT The reader to use. --nxdl TEXT The name of the NXDL file to use without extension. [required] - --output TEXT The path to the output Nexus file to be generated. + --output TEXT The path to the output NeXus file to be generated. --generate-template Just print out the template generated from given NXDL file. @@ -30,6 +30,7 @@ user@box:~$ python convert.py --nxdl nxdl --input_file metadata --input_file dat 1, Clone the repo using: `git clone https://github.com/nomad-coe/nomad-parser-nexus.git --recursive`\ 2. From the root folder where the setup.py exists, run: pip install -e . +Sherjeel, check here the correct repo to checkout, should not be data-converter as this may no longer exist ```console user@box:~$ git clone https://github.com/nomad-coe/nomad-parser-nexus.git --recursive user@box:~$ cd nomad-parser-nexus @@ -38,13 +39,14 @@ user@box:~$ pip install -e . user@box:~$ cd nexusparser/tools/dataconverter ``` -For now, I have made sure that this tools works on this branch. - ## Writing a Reader -This converter allows extending support to other data formats by allowing extensions called readers. The converter provides a dev platform to build a Nexus compatible reader by providing checking against a chosen Nexus Application Definition. +This converter allows extending support to other data formats by allowing extensions called readers. +The converter provides a dev platform to build a NeXus compatible reader by providing checking +against a chosen NeXus Application Definition. -Readers have to be placed in the **readers** folder in there own subfolder. The reader folder should be named with the reader's name and contain a `reader.py`.\ +Readers have to be placed in the **readers** folder in there own subfolder. +The reader folder should be named with the reader's name and contain a `reader.py`.\ For example: The reader `Example Reader` is placed under `dataconverter/readers/example/reader.py`. Copy and rename `readers/example/reader.py` to your own `readers/mydatareader/reader.py`. @@ -52,14 +54,14 @@ Copy and rename `readers/example/reader.py` to your own `readers/mydatareader/re Then implement the reader function: ```python -"""MyDataReader implementation for the DataConverter to convert mydata to Nexus.""" +"""MyDataReader implementation for the DataConverter to convert mydata to NeXus.""" from typing import Tuple, Any -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader +from dataconverter.readers.base.reader import BaseReader class MyDataReader(BaseReader): - """MyDataReader implementation for the DataConverter to convert mydata to Nexus.""" + """MyDataReader implementation for the DataConverter to convert mydata to NeXus.""" def read( self, @@ -82,10 +84,14 @@ READER = MyDataReader ``` -The read function takes a template dictionary based on the provided NXDL file (similar to `--generate-template`) and the list of all the file paths the user provides with `--input`. -The returned dictionary should contain keys that exist in the template as defined below. The values of these keys have to be data objects to be populated in the output Nexus file. They can be lists, numpy arrays, numpy bytes, numpy floats, numpy ints. Practically you can pass any value that can be handled by `h5py` package. +The read function takes a template dictionary based on the provided NXDL file (similar to `--generate-template`) +and the list of all the file paths the user provides with `--input`. +The returned dictionary should contain keys that exist in the template as defined below. +The values of these keys have to be data objects to be populated in the output NeXus file. +They can be lists, numpy arrays, numpy bytes, numpy floats, numpy ints. Practically you can pass any value +that can be handled by the `h5py` package. -Then you can then call this using: +The dataconverter can be executed using: ```console user@box:~$ dataconverter --reader mydata --nxdl NXmynxdl --output path_to_output.nxs @@ -111,7 +117,7 @@ Example: ``` In case the NXDL does not define a `name` for the group the requested data belongs to, the template dictionary will list it as `/NAME_IN_NXDL[name_in_output_nexus]` -You can choose any name you prefer instead of the suggested name. This allows the reader function to repeat groups defined in the NXDL to be outputted to the Nexus file. +You can choose any name you prefer instead of the suggested name. This allows the reader function to repeat groups defined in the NXDL to be outputted to the NeXus file. ```json { diff --git a/nexusparser/tools/dataconverter/__init__.py b/nexusutils/dataconverter/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/__init__.py rename to nexusutils/dataconverter/__init__.py diff --git a/nexusparser/tools/dataconverter/convert.py b/nexusutils/dataconverter/convert.py similarity index 93% rename from nexusparser/tools/dataconverter/convert.py rename to nexusutils/dataconverter/convert.py index 3d2c46c5b..054e886b6 100644 --- a/nexusparser/tools/dataconverter/convert.py +++ b/nexusutils/dataconverter/convert.py @@ -15,7 +15,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -"""This script runs the conversion routine using a selected reader and write out a Nexus file.""" +"""This script runs the conversion routine using a selected reader and write out a NeXus file.""" import glob import importlib.machinery import importlib.util @@ -28,11 +28,11 @@ import click import yaml -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader -from nexusparser.tools.dataconverter import helpers -from nexusparser.tools.dataconverter.writer import Writer -from nexusparser.tools.dataconverter.template import Template -from nexusparser.tools import nexus +from nexusutils.dataconverter.readers.base.reader import BaseReader +from nexusutils.dataconverter import helpers +from nexusutils.dataconverter.writer import Writer +from nexusutils.dataconverter.template import Template +from nexusutils.nexus import nexus logger = logging.getLogger(__name__) # pylint: disable=C0103 @@ -75,7 +75,7 @@ def convert(input_file: Tuple[str], # Reading in the NXDL and generating a template definitions_path = nexus.get_nexus_definitions_path() if nxdl == "NXtest": - nxdl_path = os.path.join("tests", "data", "tools", "dataconverter", "NXtest.nxdl.xml") + nxdl_path = os.path.join("tests", "data", "dataconverter", "NXtest.nxdl.xml") elif nxdl == "NXroot": nxdl_path = os.path.join(definitions_path, "base_classes", "NXroot.nxdl.xml") else: @@ -160,7 +160,7 @@ def parse_params_file(params_file): @click.option( '--output', default='output.nxs', - help='The path to the output Nexus file to be generated.' + help='The path to the output NeXus file to be generated.' ) @click.option( '--generate-template', @@ -194,7 +194,7 @@ def convert_cli(input_file: Tuple[str], except TypeError: sys.tracebacklimit = 0 raise Exception(("Please make sure you have the following entries in your " - "parameter file:\n\n# NexusParser Parameter File - v0.0.1" + "parameter file:\n\n# NeXusParser Parameter File - v0.0.1" "\n\ndataconverter:\n\treader: value\n\tnxdl: value\n\tin" "put-file: value")) else: diff --git a/nexusparser/tools/dataconverter/convert_routine.svg b/nexusutils/dataconverter/convert_routine.svg similarity index 99% rename from nexusparser/tools/dataconverter/convert_routine.svg rename to nexusutils/dataconverter/convert_routine.svg index b8de1ffd6..3cf339023 100644 --- a/nexusparser/tools/dataconverter/convert_routine.svg +++ b/nexusutils/dataconverter/convert_routine.svg @@ -1,3 +1,3 @@ -
convert.py
convert.py
Generate Template
Generate Template
--nxdl
--nxdl
The NXDL used for conversion.
The NXDL used for...
Select Reader
Select Reader
--reader
--reader
The reader ID sent in from the command line.
The reader ID sent...
Reader Data
Reader Data
The flat dictionary sent back by the read func.
The flat dictionar...
Call the writer function
Call the writer funct...
--input_file (1..n)
--input_file (1....
The input data file paths sent in from the command line.
The input data fil...
--output
--output
The output filename
The output filen...
Output Nexus file
Output Nexus file
Call the read func of selected reader
Call the read func of...
Viewer does not support full SVG 1.1
\ No newline at end of file +
convert.py
convert.py
Generate Template
Generate Template
--nxdl
--nxdl
The NXDL used for conversion.
The NXDL used for...
Select Reader
Select Reader
--reader
--reader
The reader ID sent in from the command line.
The reader ID sent...
Reader Data
Reader Data
The flat dictionary sent back by the read func.
The flat dictionar...
Call the writer function
Call the writer funct...
--input_file (1..n)
--input_file (1....
The input data file paths sent in from the command line.
The input data fil...
--output
--output
The output filename
The output filen...
Output NeXus file
Output NeXus file
Call the read func of selected reader
Call the read func of...
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/nexusparser/tools/dataconverter/helpers.py b/nexusutils/dataconverter/helpers.py similarity index 98% rename from nexusparser/tools/dataconverter/helpers.py rename to nexusutils/dataconverter/helpers.py index 43565d3b3..d46b5862c 100644 --- a/nexusparser/tools/dataconverter/helpers.py +++ b/nexusutils/dataconverter/helpers.py @@ -23,8 +23,8 @@ import numpy as np -from nexusparser.tools import nexus -from nexusparser.tools.nexus import NxdlAttributeError +from nexusutils.nexus import nexus +from nexusutils.nexus.nexus import NxdlAttributeError def is_a_lone_group(xml_element) -> bool: @@ -90,12 +90,12 @@ def get_required_string(elem): def convert_nexus_to_caps(nexus_name): - """Helper function to convert a Nexus class from to .""" + """Helper function to convert a NeXus class from to .""" return nexus_name[2:].upper() def convert_nexus_to_suggested_name(nexus_name): - """Helper function to suggest a name for a group from its Nexus class.""" + """Helper function to suggest a name for a group from its NeXus class.""" return nexus_name[2:] diff --git a/nexusutils/dataconverter/readers/README.md b/nexusutils/dataconverter/readers/README.md new file mode 100644 index 000000000..f9a8c08f0 --- /dev/null +++ b/nexusutils/dataconverter/readers/README.md @@ -0,0 +1,45 @@ +# File/Metadata and Data Format Reader Plug-ins aka ``reader`` + +The purpose of the dataconverter is to create NeXus/HDF5 files with content that +matches a specific NeXus application definition. +Such application definitions are useful for collecting a set of pieces of information +about a specific experiment in a given scientific field. The pieces of information +are metadata and numerical data. The application definition is used to provide +these data in a format that serves a data delivery contract: The HDF5 file, +or so-called NeXus file, delivers all those pieces of information which the +application definition specifies. Required and optional pieces of information are +distinguished. NeXus classes can recommend the inclusion of certain pieces of information. +Recommended data are essentially optional. The idea is that flagging these data as +recommended motivates users to collect them but does not require to write dummy +or nonsense data if the user is unable to collect recommended data. + +The here developed and so-called readers, are effectively software tools (plug-ins) +which the converter calls to accomplish this task for a specific set of application +definition (NXDL XML file) plus a set of experiment/method-specific file(s). +These files can be files in a proprietary format, or of a certain format used in the +respective scientific community, or text files. Only in combination, these files hold +all the required pieces of information which the application definition demands and which +are thus required to make a NeXus/HDF5 file compliant. Users can store additional +pieces of information in an NeXus/HDF5 file. In this case readers will issue a warning +that these data are not properly documented from the perspective of NeXus. + +## Getting started + +The readers get cloned as plug-in dependencies while cloning the dataconverter. +Therefore, please follow the instructions for cloning the reader as a complete package. + +## Download the example data for testing and development purposes + +Before using your own data we strongly encourage you to download a set of open-source +test data for testing the plug-ins. For this purpose the nomad-parser-nexus comes with +a tests directory with a data/dataconverter sub-directory including reader-specific jupyter-notebook +examples. These examples can be used for downloading test data and use specific readers +as a standalone converter to translate given data into a NeXus/HDF5 file. + +Once you have practised with these tools how to convert these examples, feel free to +use the tools for converting your own data. You should feel invited to contact the respective +corresponding author(s) of each reader if you run into issues with the reader or feel there +is a necessity to include additional data into the NeXus file for the respective application. + +We are looking forward for learning from your experience and see the interesting use cases. +You can find the contact persons in the respective README.md of each reader. diff --git a/nexusparser/tools/dataconverter/readers/__init__.py b/nexusutils/dataconverter/readers/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/__init__.py rename to nexusutils/dataconverter/readers/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/apm/README.md b/nexusutils/dataconverter/readers/apm/README.md similarity index 73% rename from nexusparser/tools/dataconverter/readers/apm/README.md rename to nexusutils/dataconverter/readers/apm/README.md index 0845921b2..de457fd42 100644 --- a/nexusparser/tools/dataconverter/readers/apm/README.md +++ b/nexusutils/dataconverter/readers/apm/README.md @@ -1,16 +1,18 @@ # APM reader ## Purpose -Translate diverse vendor and community file formats from atom probe microscopy into -a standardized representation using the NeXus application definition NXapm. -This parser does not copy over all of the data and metadata in the vendor file(s) -but the particular subset which is understood and useful inside a NOMAD OASIS instance. +Translate diverse file formats from the scientific community and technology partners +within the field of atom probe microscopy into a standardized representation using the +NeXus application definition NXapm. +This parser does not copy over all of the data and metadata in file(s) from technology +partners like Cameca/AMETEK but only the particular subset which is understood and +useful inside a NOMAD OASIS instance. ## What this apm reader supports The main idea behind the parser is to offer users of the OASIS a diverse example of how a parser for specific file formats can be written and designed. We would like to encourage the APM community to share example files with us. These can be small and come from diverse use cases. -Ideally, these should represent data in vendor file formats other than the already supported +Ideally, these should represent data in files other than the already supported ones, so that we can broaden the applicability of this parser. Specifically, the implementation shows how data and metadata in different file formats can @@ -27,21 +29,21 @@ provided also these export a YAML file using the same formatting. ## Getting started - usage related to NOMAD OASIS This parser can be used to map numerical data and metadata inside frequently -used vendor file formats of electron microscopy software tools into a NeXus +used file formats of electron microscopy software tools into a NeXus HDF5 file which complies with a specific version of the NXapm application definition. If you are using a NOMAD OASIS, you can use this tool as follows. 1. Log-in to a NOMAD OASIS and navigate to the *Create Upload* tab. 2. Select APM example from the list of available options. -3. Drag-and-drop your files in vendor-specific formats, i.e. pos, epos, apt +3. Drag-and-drop your files in specific formats, i.e. pos, epos, apt (for reconstructed datasets) and rrng or rng (for ranging definitions/range files). 3. Edit the electronic lab notebook (ELN) schema inside the NOMAD OASIS and click the save button in the NOMAD OASIS GUI to save the data that you have entered into the ELN template. Clicking *save* will trigger the automatic generation of an eln_data.yaml file. Second, the clicking will trigger a run of the dataconverter/apm parser which generates a NXapm NeXus file based on the data - in the vendor file and the eln_data.yaml file. Afterwards, the file will be + in the file and the eln_data.yaml file. Afterwards, the file will be displayed in the GUI and upload section of your OASIS. By default the converter performs a strong loss-less compression on the input as many of the stack data store integers with a low entropy. @@ -56,7 +58,7 @@ If you are using a NOMAD OASIS, you can use this tool as follows. ## Getting started - standalone usage If you use this dataconverter/apm parser as a standalone tool, 1. You should follow the interactive jupyter notebook that is stored in - *nomad-parser-nexus\tests\data\tools\dataconverter\readers\apm*. + *nomad-parser-nexus/tests/data/dataconverter/readers\apm*. 2. As the standalone usage of this parser does not require a NOMAD OASIS instance, you have to edit the ELN manually or via another ELN. For this you can edit the example eln_data_apm.yaml which comes shipped with this example. Alternatively, @@ -68,25 +70,24 @@ If you use this dataconverter/apm parser as a standalone tool, into an instance of a NeXus HDF5 file that is formatted according to the NXapm application definition. -## A request to take action by the vendors -In fact, while the above-mentioned vendor file formats and corresponding vendor software is routinely +## A request to take action by the technology partners +In fact, while the above-mentioned file formats and corresponding commercial software is routinely used by numerous atom probers every day, the actual knowledge about the I/O routines has always -been on a few developers shoulders. In fact many of the open-source readers for vendor file formats were -reverse-engineered. This is challenging because the amount of documentation that is especially -for some vendor file formats available is neither exhaustive nor detailed enough. This limits developers +been on a few developers shoulders. In fact many of the open-source readers for file formats were +reverse-engineered. This is challenging because the amount of documentation that is available +for some file formats is neither exhaustive nor documented enough in detail. This limits developers to decide and design how to best implement possible mappings of specific binary numerical data and metadata -into specifically named fields. We wish that intensified exchange between vendors and the community -can help to improve the situation. Everybody is very welcomed to leave us comments in the issue -list to exchange specifically about this topic. +into specifically named fields. We wish that intensified exchange between technology partners like +AMETEK/Cameca and the atom probe community can help to improve the situation. +Everybody is very welcomed to leave us comments in the issue list (or drop us an email) +to exchange specifically about this topic. -Limited technical documentation of some vendor file formats stands in strong contrast -to the powerful GUI-based tools and the in fact continuous efforts of the vendors -to make the barriers for working with microscopy data simpler and becoming more -aligned with the FAIR principles. - -## Known limitations of this parser +## Known limitations of this reader Currently the apm parser reads the following quantities: reconstructed ion positions, and mass-to-charge-state ratio values. The readers are technically capable to read also all other fields in ePOS and APT files to the extent as these have been documented. + +## Contact person in FAIRmat for this reader +Markus Kühbach diff --git a/nexusparser/tools/dataconverter/readers/apm/__init__.py b/nexusutils/dataconverter/readers/apm/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/apm/__init__.py rename to nexusutils/dataconverter/readers/apm/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/apm/reader.py b/nexusutils/dataconverter/readers/apm/reader.py similarity index 89% rename from nexusparser/tools/dataconverter/readers/apm/reader.py rename to nexusutils/dataconverter/readers/apm/reader.py index 347081698..7ea98748d 100644 --- a/nexusparser/tools/dataconverter/readers/apm/reader.py +++ b/nexusutils/dataconverter/readers/apm/reader.py @@ -24,21 +24,21 @@ from typing import Tuple, Any -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader +from nexusutils.dataconverter.readers.base.reader import BaseReader -from nexusparser.tools.dataconverter.readers.apm.utils.apm_use_case_selector \ +from nexusutils.dataconverter.readers.apm.utils.apm_use_case_selector \ import ApmUseCaseSelector -from nexusparser.tools.dataconverter.readers.apm.utils.apm_reconstruction_io \ +from nexusutils.dataconverter.readers.apm.utils.apm_reconstruction_io \ import ApmReconstructionParser -from nexusparser.tools.dataconverter.readers.apm.utils.apm_ranging_io \ +from nexusutils.dataconverter.readers.apm.utils.apm_ranging_io \ import ApmRangingDefinitionsParser -from nexusparser.tools.dataconverter.readers.apm.utils.apm_nomad_oasis_eln_io \ +from nexusutils.dataconverter.readers.apm.utils.apm_nomad_oasis_eln_io \ import NxApmNomadOasisElnSchemaParser -from nexusparser.tools.dataconverter.readers.apm.utils.apm_nexus_plots \ +from nexusutils.dataconverter.readers.apm.utils.apm_nexus_plots \ import apm_default_plot_generator # each reconstruction should be stored as an own file because for commercial diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/NXapmInformationSourcesToNeXus.ods b/nexusutils/dataconverter/readers/apm/utils/NXapmInformationSourcesToNeXus.ods similarity index 100% rename from nexusparser/tools/dataconverter/readers/apm/utils/NXapmInformationSourcesToNeXus.ods rename to nexusutils/dataconverter/readers/apm/utils/NXapmInformationSourcesToNeXus.ods diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/__init__.py b/nexusutils/dataconverter/readers/apm/utils/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/apm/utils/__init__.py rename to nexusutils/dataconverter/readers/apm/utils/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/apm_nexus_base_classes.py b/nexusutils/dataconverter/readers/apm/utils/apm_nexus_base_classes.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/apm/utils/apm_nexus_base_classes.py rename to nexusutils/dataconverter/readers/apm/utils/apm_nexus_base_classes.py diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/apm_nexus_plots.py b/nexusutils/dataconverter/readers/apm/utils/apm_nexus_plots.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/apm/utils/apm_nexus_plots.py rename to nexusutils/dataconverter/readers/apm/utils/apm_nexus_plots.py diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/apm_nomad_oasis_eln_io.py b/nexusutils/dataconverter/readers/apm/utils/apm_nomad_oasis_eln_io.py similarity index 99% rename from nexusparser/tools/dataconverter/readers/apm/utils/apm_nomad_oasis_eln_io.py rename to nexusutils/dataconverter/readers/apm/utils/apm_nomad_oasis_eln_io.py index 0372a78fe..a6bc69cff 100644 --- a/nexusparser/tools/dataconverter/readers/apm/utils/apm_nomad_oasis_eln_io.py +++ b/nexusutils/dataconverter/readers/apm/utils/apm_nomad_oasis_eln_io.py @@ -32,10 +32,10 @@ from ase.data import chemical_symbols -# from nexusparser.tools.dataconverter.readers.apm.utils.apm_nexus_base_classes \ +# from nexusutils.dataconverter.readers.apm.utils.apm_nexus_base_classes \ # import NxObject -from nexusparser.tools.dataconverter.readers.apm.utils.apm_versioning \ +from nexusutils.dataconverter.readers.apm.utils.apm_versioning \ import NX_APM_ADEF_NAME, NX_APM_ADEF_VERSION, NX_APM_EXEC_NAME, NX_APM_EXEC_VERSION diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/apm_ranging_io.py b/nexusutils/dataconverter/readers/apm/utils/apm_ranging_io.py similarity index 97% rename from nexusparser/tools/dataconverter/readers/apm/utils/apm_ranging_io.py rename to nexusutils/dataconverter/readers/apm/utils/apm_ranging_io.py index fcb0777b9..24aeba334 100644 --- a/nexusparser/tools/dataconverter/readers/apm/utils/apm_ranging_io.py +++ b/nexusutils/dataconverter/readers/apm/utils/apm_ranging_io.py @@ -26,13 +26,13 @@ import numpy as np -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_utils \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_utils \ import unhash_isotope # , hash_isotope -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_rng_reader \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_rng_reader \ import ReadRngFileFormat -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_rrng_reader \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_rrng_reader \ import ReadRrngFileFormat diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/apm_reconstruction_io.py b/nexusutils/dataconverter/readers/apm/utils/apm_reconstruction_io.py similarity index 96% rename from nexusparser/tools/dataconverter/readers/apm/utils/apm_reconstruction_io.py rename to nexusutils/dataconverter/readers/apm/utils/apm_reconstruction_io.py index a98c41d69..3290dbf5c 100644 --- a/nexusparser/tools/dataconverter/readers/apm/utils/apm_reconstruction_io.py +++ b/nexusutils/dataconverter/readers/apm/utils/apm_reconstruction_io.py @@ -24,13 +24,13 @@ import numpy as np -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_reader \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_apt6_reader \ import ReadAptFileFormat -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_pos_reader \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_pos_reader \ import ReadPosFileFormat -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_epos_reader \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_epos_reader \ import ReadEposFileFormat diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/apm_use_case_selector.py b/nexusutils/dataconverter/readers/apm/utils/apm_use_case_selector.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/apm/utils/apm_use_case_selector.py rename to nexusutils/dataconverter/readers/apm/utils/apm_use_case_selector.py diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/apm_versioning.py b/nexusutils/dataconverter/readers/apm/utils/apm_versioning.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/apm/utils/apm_versioning.py rename to nexusutils/dataconverter/readers/apm/utils/apm_versioning.py diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_headers.py b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_headers.py similarity index 98% rename from nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_headers.py rename to nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_headers.py index dc8475f5d..77935cc22 100644 --- a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_headers.py +++ b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_headers.py @@ -24,7 +24,7 @@ import numpy as np -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_utils \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_apt6_utils \ import string_to_typed_nparray # , np_uint16_to_string diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_reader.py b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_reader.py similarity index 96% rename from nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_reader.py rename to nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_reader.py index 7a40a4e30..5e23ff468 100644 --- a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_reader.py +++ b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_reader.py @@ -32,15 +32,15 @@ # from pint import UnitRegistry -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_utils \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_apt6_utils \ import np_uint16_to_string -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_headers \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_apt6_headers \ import AptFileHeaderMetadata -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_sections \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_apt6_sections \ import AptFileSectionMetadata -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_sections_branches \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_apt6_sections_branches \ import EXPECTED_SECTIONS -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_utils \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_utils \ import NxField, get_memory_mapped_data diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections.py b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_sections.py similarity index 99% rename from nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections.py rename to nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_sections.py index 737555975..26434a4ac 100644 --- a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections.py +++ b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_sections.py @@ -26,7 +26,7 @@ # from pint import UnitRegistry -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_utils \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_apt6_utils \ import np_uint16_to_string, string_to_typed_nparray diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections_branches.py b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_sections_branches.py similarity index 99% rename from nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections_branches.py rename to nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_sections_branches.py index 73aebdfcf..0067819af 100644 --- a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections_branches.py +++ b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_sections_branches.py @@ -22,7 +22,7 @@ # pylint: disable=E1101 -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_sections \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_apt6_sections \ import AptFileSectionMetadata diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_utils.py b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_utils.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_utils.py rename to nexusutils/dataconverter/readers/apm/utils/aptfim_io_apt6_utils.py diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_epos_reader.py b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_epos_reader.py similarity index 99% rename from nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_epos_reader.py rename to nexusutils/dataconverter/readers/apm/utils/aptfim_io_epos_reader.py index 8ce7d4dc2..11cb5fd68 100644 --- a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_epos_reader.py +++ b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_epos_reader.py @@ -26,7 +26,7 @@ import numpy as np -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_utils \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_utils \ import NxField, get_memory_mapped_data diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_ods2metadata.py b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_ods2metadata.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_ods2metadata.py rename to nexusutils/dataconverter/readers/apm/utils/aptfim_io_ods2metadata.py diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_pos_reader.py b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_pos_reader.py similarity index 97% rename from nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_pos_reader.py rename to nexusutils/dataconverter/readers/apm/utils/aptfim_io_pos_reader.py index bb37b9377..825fbfb3b 100644 --- a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_pos_reader.py +++ b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_pos_reader.py @@ -26,7 +26,7 @@ import numpy as np -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_utils \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_utils \ import NxField, get_memory_mapped_data diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rng_reader.py b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_rng_reader.py similarity index 98% rename from nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rng_reader.py rename to nexusutils/dataconverter/readers/apm/utils/aptfim_io_rng_reader.py index 9bbf426ce..a7f174021 100644 --- a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rng_reader.py +++ b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_rng_reader.py @@ -25,7 +25,7 @@ import re import numpy as np -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_utils \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_utils \ import NxField, NxIon, significant_range, create_isotope_vector, \ isotope_vector_to_dict_keyword diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rrng_reader.py b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_rrng_reader.py similarity index 99% rename from nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rrng_reader.py rename to nexusutils/dataconverter/readers/apm/utils/aptfim_io_rrng_reader.py index 1a7ef19f5..bbb2adc46 100644 --- a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rrng_reader.py +++ b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_rrng_reader.py @@ -26,7 +26,7 @@ import numpy as np -from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_utils \ +from nexusutils.dataconverter.readers.apm.utils.aptfim_io_utils \ import NxField, NxIon, significant_range, create_isotope_vector, \ isotope_vector_to_dict_keyword diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_utils.py b/nexusutils/dataconverter/readers/apm/utils/aptfim_io_utils.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_utils.py rename to nexusutils/dataconverter/readers/apm/utils/aptfim_io_utils.py diff --git a/nexusutils/dataconverter/readers/base/README.md b/nexusutils/dataconverter/readers/base/README.md new file mode 100644 index 000000000..eb3bf3404 --- /dev/null +++ b/nexusutils/dataconverter/readers/base/README.md @@ -0,0 +1,4 @@ +# base reader + +## Contact person in FAIRmat for this reader +Sherjeel Shabih \ No newline at end of file diff --git a/nexusparser/tools/dataconverter/readers/base/__init__.py b/nexusutils/dataconverter/readers/base/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/base/__init__.py rename to nexusutils/dataconverter/readers/base/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/base/reader.py b/nexusutils/dataconverter/readers/base/reader.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/base/reader.py rename to nexusutils/dataconverter/readers/base/reader.py diff --git a/nexusutils/dataconverter/readers/ellips/README.md b/nexusutils/dataconverter/readers/ellips/README.md new file mode 100644 index 000000000..09e0eba92 --- /dev/null +++ b/nexusutils/dataconverter/readers/ellips/README.md @@ -0,0 +1,4 @@ +# ellips(ometry) reader + +## Contact person in FAIRmat for this reader +Carola Emminger \ No newline at end of file diff --git a/nexusparser/tools/dataconverter/readers/ellips/__init__.py b/nexusutils/dataconverter/readers/ellips/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/ellips/__init__.py rename to nexusutils/dataconverter/readers/ellips/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/ellips/reader.py b/nexusutils/dataconverter/readers/ellips/reader.py similarity index 99% rename from nexusparser/tools/dataconverter/readers/ellips/reader.py rename to nexusutils/dataconverter/readers/ellips/reader.py index 7f6a7094d..e3192d3d8 100644 --- a/nexusparser/tools/dataconverter/readers/ellips/reader.py +++ b/nexusutils/dataconverter/readers/ellips/reader.py @@ -22,7 +22,7 @@ import pandas as pd import numpy as np # import h5py -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader +from nexusutils.dataconverter.readers.base.reader import BaseReader DEFAULT_HEADER = {'sep': '\t', 'skip': 0} diff --git a/nexusutils/dataconverter/readers/em_nion/README.md b/nexusutils/dataconverter/readers/em_nion/README.md new file mode 100644 index 000000000..6d2153837 --- /dev/null +++ b/nexusutils/dataconverter/readers/em_nion/README.md @@ -0,0 +1,12 @@ +# em_nion reader + +## Status +This reader is considered deprecated for two reasons: First, the NeXus application definition +NXem_nion has been superseeded by NXem, which is functionally and conceptually much more covering +and most importantly not restricted to users of Nion microscopes. Second, we have been working on an export +functionality inside nionswift. Nionswift is the control software for users of Nion microscopes. + +In effect, this reader will be removed with one of the next updates of nomad-parser-nexus. + +## Contact persons in FAIRmat for this reader and related functionality +Markus Kühbach and Sherjeel Shabih \ No newline at end of file diff --git a/nexusparser/tools/dataconverter/readers/em_nion/__init__.py b/nexusutils/dataconverter/readers/em_nion/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/em_nion/__init__.py rename to nexusutils/dataconverter/readers/em_nion/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/em_nion/reader.py b/nexusutils/dataconverter/readers/em_nion/reader.py similarity index 98% rename from nexusparser/tools/dataconverter/readers/em_nion/reader.py rename to nexusutils/dataconverter/readers/em_nion/reader.py index 111eafaba..dd301b09b 100644 --- a/nexusparser/tools/dataconverter/readers/em_nion/reader.py +++ b/nexusutils/dataconverter/readers/em_nion/reader.py @@ -30,12 +30,12 @@ import numpy as np -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader +from nexusutils.dataconverter.readers.base.reader import BaseReader -from nexusparser.tools.dataconverter.readers.em_nion.utils.em_io_utils_misc \ +from nexusutils.dataconverter.readers.em_nion.utils.em_io_utils_misc \ import recursive_query_nested_dict, assess_situation_with_input_files, NION_ERROR_CODES -from nexusparser.tools.dataconverter.readers.em_nion.utils.em_io_utils_ods2dct \ +from nexusutils.dataconverter.readers.em_nion.utils.em_io_utils_ods2dct \ import ods_to_json_routing_dict # each experiment on a given sample should be stored in an own file diff --git a/nexusparser/tools/dataconverter/readers/em_nion/utils/NionSwiftJsonToNexusTranslationTable.ods b/nexusutils/dataconverter/readers/em_nion/utils/NionSwiftJsonToNexusTranslationTable.ods similarity index 100% rename from nexusparser/tools/dataconverter/readers/em_nion/utils/NionSwiftJsonToNexusTranslationTable.ods rename to nexusutils/dataconverter/readers/em_nion/utils/NionSwiftJsonToNexusTranslationTable.ods diff --git a/nexusparser/tools/dataconverter/readers/em_nion/utils/em_io_utils_misc.py b/nexusutils/dataconverter/readers/em_nion/utils/em_io_utils_misc.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/em_nion/utils/em_io_utils_misc.py rename to nexusutils/dataconverter/readers/em_nion/utils/em_io_utils_misc.py diff --git a/nexusparser/tools/dataconverter/readers/em_nion/utils/em_io_utils_ods2dct.py b/nexusutils/dataconverter/readers/em_nion/utils/em_io_utils_ods2dct.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/em_nion/utils/em_io_utils_ods2dct.py rename to nexusutils/dataconverter/readers/em_nion/utils/em_io_utils_ods2dct.py diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/README.md b/nexusutils/dataconverter/readers/em_spctrscpy/README.md similarity index 73% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/README.md rename to nexusutils/dataconverter/readers/em_spctrscpy/README.md index 7be93a608..61f479841 100644 --- a/nexusparser/tools/dataconverter/readers/em_spctrscpy/README.md +++ b/nexusutils/dataconverter/readers/em_spctrscpy/README.md @@ -1,19 +1,22 @@ # em_spctrscpy reader ## Purpose -Translate diverse vendor and community file formats from atom probe microscopy into -a standardized representation using the NeXus application definition NXem. -This parser does not copy over all of the data and metadata in the vendor file(s) -but the particular subset which is understood and useful inside a NOMAD OASIS instance. +Translate diverse files from the scientific community and technology partners within +the electron microscopy community into a standardized representation using the NeXus +application definition NXem. +This parser does not copy over all of the data and metadata in files from especially +commercial software but that particular subset which is understood and useful +inside a NOMAD OASIS instance. ## What this em reader supports The main idea behind the parser is to offer users of the OASIS a diverse example of how a parser for specific file formats can be written and designed. We would like to encourage the EM community to share example files with us. These can be small and come from diverse use cases. -Ideally, these should represent data in vendor file formats other than the already supported ones, -so that we can broaden the applicability of this parser. +Ideally, these should represent data in file formats from technology partners other than the +already here supported and implemented ones. This would support us to broaden the applicability +of this parser. -Specifically, the implementation shows how I/O functionalities of hyperspy can be used +Specifically, the implementation shows how I/O functionalities of hyperspy can be used to load data of spectroscopy experiments from three exemplar file formats: Bruker BCF, Velox EMD, and DigitalMicrograph DM3. The implementation shows how instances of NeXus base classes like NXspectrum_set_em_xray, NXspectrum_set_em_eels, and NXimage_set_em_adf @@ -26,20 +29,20 @@ scanning electron microscopy (SEM) EDS/EDX, transmission electron microscopy ## Getting started - usage related to NOMAD OASIS This parser can be used to map numerical data and metadata inside frequently -used vendor file formats of electron microscopy software tools into a NeXus -HDF5 file which complies with a specific version of the NXem application +used file formats from technology partners of electron microscopy software tools +into a NeXus/HDF5 file which complies with a specific version of the NXem application definition. If you are using a NOMAD OASIS you can use this tool as follows. 1. Log-in to a NOMAD OASIS and navigate to the *Create Upload* tab. 2. Select EM example from the list of available options. -3. Drag-and-drop your files in vendor-specific formats, i.e. bcf, emd, dm3. +3. Drag-and-drop your files in specific file formats, i.e. bcf, emd, dm3. 3. Edit the electronic lab notebook (ELN) schema inside the NOMAD OASIS and click the save button in the NOMAD OASIS GUI to save the data that you have entered into the ELN template. Clicking *save* will trigger the automatic generation of an eln_data.yaml file. Second, the clicking will trigger a run of the dataconverter/em_spctrscpy parser which generates a NXem NeXus file based on the data - in the vendor file and the eln_data.yaml file. Afterwards, the file will be + file(s) from technology partners and the eln_data.yaml file. Afterwards, the file will be displayed in the GUI and upload section of your OASIS. By default the converter performs a strong loss-less compression on the input as many of the stack data store integers with a low entropy. @@ -51,17 +54,16 @@ If you are using a NOMAD OASIS you can use this tool as follows. its content with the H5Web tools inside the NOMAD OASIS GUI and click interactively through the data including default plots. For electron microscopy these are the EDS/EDX spectra stack, eventually an sum spectrum, annular dark field) overview images - of the material region-of-interest (ROI) characterized, and if present in the vendor - file composition maps. + of the material region-of-interest (ROI) characterized, and if present in composition maps. If unsuccessful, the data logger can help you to identify if problems occurred. Clearly as microscopy software tools differ, users should not expect that every required field in the application definition can be served by the data and metadata -from an arbitrary such microscopy tool and its often vendor-specific output (file -formats). Therefore, the em_spctrscpy reader takes the additional metadata from the -eln_data.yaml file. Specifically, this file can be created with the ELN schema creation -and customization functionalities offered through NOMAD OASIS or via any other ELN -or solution which can edit yaml files. +from an arbitrary such microscopy tool and its often specific formatting. Therefore, +the em_spctrscpy reader takes such additional metadata from the eln_data.yaml file. +Specifically, this file can be created with the ELN schema creation and customization +functionalities are offered through NOMAD OASIS or via any other ELN +or solution with which users can edit yaml files. ## Getting started - standalone usage If you use this dataconverter/em_spctrscpy parser as a standalone tool, @@ -87,7 +89,7 @@ for electron microscopy data inside NOMAD OASIS. ## Technical background details for developers and data scientists The em_spctrscpy reader serves as a parser with multiple parts/readers/and sub-parser components because data and metadata in electron microscopy come from such a diverse number of file -formats and use cases, from results of interactions with different GUIs, vendor scripts +formats and use cases, from results of interactions with different GUIs, scripts running inside GUIs, or user-customized/-written scripts using open-source microscopy software tools that it is essentially to keep things organized. These subtilities make the development of a general enough parser challenging. @@ -99,11 +101,13 @@ is breadth- rather than depth-first. Our approach is driven by examples. Breadth first means we would like to offer the user first an overview of the rather large number of NeXus base classes within the design of the NXem application definition. -Practically, the process needs to be driven by examples as many I/O routines of especially -vendor file formats in open-source software was designed by reverse engineering. In fact, -there is currently no joint knowledge base how all possible vendor files can be safely and -robustly parsed so that each field and entry is not only binarily readable but can also +Practically, the process needs to be driven by examples because many I/O routines for especially +file formats from technology partners inside open-source software was designed by reverse engineering. +Hyperspy is a good example of these developments and efforts. +In fact, there is currently no joint knowledge base how all possible file formats can be safely +and robustly parsed so that each field and entry is not only binarily readable but can also confidently be mapped on specific terms using a controlled vocabulary. +Interestingly this challenge is independent of the ontology used. Currently the example implements for: * NXspectrum_set_em_xray @@ -123,9 +127,8 @@ microscopy data. Our starting point in FAIRmat for EM was thus different compared to the situation in e.g. the field of atom probe microscopy. In the field of atom probe, only a few file formats exists and have been in use when the FAIRmat project started. -This is why dataconverter/apm has its own subroutines for loading intricate -details of vendor and open-source-documented file formats, which we have implemented -and offer as a reference implementation. +This is why dataconverter/em_spctrscpy has its own subroutines for loading intricate +details of files from the open-source community or technology partners. By contrast, for electron microscopy developing these many file format readers on our own is not a feasible approach for the FAIRmat project for two reasons: @@ -134,8 +137,8 @@ First, there is a very limited use of writing again readers for a specific EM fi because the EM community has developed already many of such a number of these by now. Many of them are mature in that they offer internal readers for several file formats. The strength of the existent readers is that many users already work with such software. -Thus, supporting the development and working together on I/O functions for vendor files -and discussing open issues is in our opinion the preferred approach. +Thus, supporting the development and working together on I/O functions for files +from technology partners and discussing open issues is in our opinion the preferred approach. Specific examples of such community tools are: **hyperspy** for analyses of spectra such as EDX/EDS and EELS, used in SEM/TEM communities @@ -149,32 +152,29 @@ should be used by even more people to support the respective open-source project The other reason why we are not convinced that it is a sustainable approach for a National Research Data Infrastructure that each project implements own formats is that there are already two important challenges with the current status quo in electron microscopy: -Format constraints and limited documentation of the content and details behind -some of the vendor file formats. We should make clear that we acknowledge the -significant momentum and effort which is ongoing at microscopy manufacturing companies -on implementing strategies for their software tools to store and document metadata. -We would like to see though that more of these efforts become documented in the literature -and the public domain. - -## A request to take action by the vendors -While vendor software is used by numerous of microscopists every day it is interesting to note +Format constraints and limited documentation of the content and details behind +some of the file formats from technology partners. We should make clear that we acknowledge +the significant momentum and effort microscopy manufacturers as technology partners invest +into the storing of metadata in their (commercial) software solutions. +We would like to see though that more of these efforts become documented in the +literature and the public domain. + +## A request to take action by technology partners and the scientific community +While commercial software is used by numerous microscopists every day it is interesting to note that the detailed knowledge about the I/O routines has always been on a few developers shoulders. We have realized that many of the file format readers in open-source software were reverse-engineered. This is challenging because the amount of documentation that is available -especially for some vendor file formats is neither exhaustive nor detailed enough. +especially for some file formats is neither exhaustive nor documented in detail enough. This limits developers when they have to decide and design how to best implement the mapping of specific binary numerical data and metadata into specifically named fields. -Here we hope that intensified exchange between vendors and the community can help to -improve the situation. You are very welcome to leave us comments in the issue list to -exchange specifically about this topic. Even better would be if commercial software tools -evolve into a state that they offer complementary options for exporting detailed metadata -and numerical data through publicly documented formats. +Here we hope that intensified exchange between technology partners and the scientific community +can help to improve the situation. -In fact, limited technical documentation of some vendor file formats stands in strong -contrast to the powerful GUI-based tools and the in fact continuous efforts of the vendors -to make the barriers for working with microscopy data simpler and become more aligned with the -FAIR principles. +You are very welcome to leave us comments in the issue list (or drop us an email) to exchange +specifically about this topic. Even better would be if commercial software tools evolve +into a state that they offer complementary options for exporting detailed metadata +and numerical data through publicly documented formats. ## A starting point to harmonize metadata and numerical data from scripting based solutions It is noteworthy that internally many of tools, whether it be commercial or open source tools, @@ -184,3 +184,6 @@ Therefore, even though users of tools like mtex or hyperspy may in practice crea different scripts, they still interact with a restricted set of class instances and methods. In effect, having these classes offers a possibility for developing more generic parsers like what is here exemplified with the dataconverter/em_spctrscpy parser. + +## Contact person in FAIRmat for this reader +Markus Kühbach \ No newline at end of file diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/__init__.py b/nexusutils/dataconverter/readers/em_spctrscpy/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/__init__.py rename to nexusutils/dataconverter/readers/em_spctrscpy/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/reader.py b/nexusutils/dataconverter/readers/em_spctrscpy/reader.py similarity index 94% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/reader.py rename to nexusutils/dataconverter/readers/em_spctrscpy/reader.py index 305680345..2ad1e4672 100644 --- a/nexusparser/tools/dataconverter/readers/em_spctrscpy/reader.py +++ b/nexusutils/dataconverter/readers/em_spctrscpy/reader.py @@ -30,27 +30,27 @@ import hyperspy.api as hs -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader +from nexusutils.dataconverter.readers.base.reader import BaseReader -from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.em_use_case_selector \ +from nexusutils.dataconverter.readers.em_spctrscpy.utils.em_use_case_selector \ import EmUseCaseSelector -from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.em_nexus_base_classes \ +from nexusutils.dataconverter.readers.em_spctrscpy.utils.em_nexus_base_classes \ import NxObject -from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.em_nomad_oasis_eln \ +from nexusutils.dataconverter.readers.em_spctrscpy.utils.em_nomad_oasis_eln \ import NxEmNomadOasisElnSchemaParser -# from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.oina.em_oina_xray \ +# from nexusutils.dataconverter.readers.em_spctrscpy.utils.oina.em_oina_xray \ # import NxOinaSpectrumSetEmXray -from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.hspy.em_hspy_xray \ +from nexusutils.dataconverter.readers.em_spctrscpy.utils.hspy.em_hspy_xray \ import NxSpectrumSetEmXray -from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.hspy.em_hspy_eels \ +from nexusutils.dataconverter.readers.em_spctrscpy.utils.hspy.em_hspy_eels \ import NxSpectrumSetEmEels -from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.hspy.em_hspy_adf \ +from nexusutils.dataconverter.readers.em_spctrscpy.utils.hspy.em_hspy_adf \ import NxImageSetEmAdf diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/em_nexus_base_classes.py b/nexusutils/dataconverter/readers/em_spctrscpy/utils/em_nexus_base_classes.py similarity index 99% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/em_nexus_base_classes.py rename to nexusutils/dataconverter/readers/em_spctrscpy/utils/em_nexus_base_classes.py index c2cd7848e..2aac71015 100644 --- a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/em_nexus_base_classes.py +++ b/nexusutils/dataconverter/readers/em_spctrscpy/utils/em_nexus_base_classes.py @@ -24,7 +24,7 @@ from typing import Dict -from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.em_versioning \ +from nexusutils.dataconverter.readers.em_spctrscpy.utils.em_versioning \ import NX_EM_ADEF_NAME, NX_EM_ADEF_VERSION, \ NX_EM_EXEC_NAME, NX_EM_EXEC_VERSION diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/em_nomad_oasis_eln.py b/nexusutils/dataconverter/readers/em_spctrscpy/utils/em_nomad_oasis_eln.py similarity index 99% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/em_nomad_oasis_eln.py rename to nexusutils/dataconverter/readers/em_spctrscpy/utils/em_nomad_oasis_eln.py index 3a4757670..b52a82bc5 100644 --- a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/em_nomad_oasis_eln.py +++ b/nexusutils/dataconverter/readers/em_spctrscpy/utils/em_nomad_oasis_eln.py @@ -30,7 +30,7 @@ from ase.data import chemical_symbols -from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.em_versioning \ +from nexusutils.dataconverter.readers.em_spctrscpy.utils.em_versioning \ import NX_EM_ADEF_NAME, NX_EM_ADEF_VERSION, NX_EM_EXEC_NAME, NX_EM_EXEC_VERSION diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/em_use_case_selector.py b/nexusutils/dataconverter/readers/em_spctrscpy/utils/em_use_case_selector.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/em_use_case_selector.py rename to nexusutils/dataconverter/readers/em_spctrscpy/utils/em_use_case_selector.py diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/em_versioning.py b/nexusutils/dataconverter/readers/em_spctrscpy/utils/em_versioning.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/em_versioning.py rename to nexusutils/dataconverter/readers/em_spctrscpy/utils/em_versioning.py diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_adf.py b/nexusutils/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_adf.py similarity index 99% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_adf.py rename to nexusutils/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_adf.py index 10c5bc007..e2bd0b8f9 100644 --- a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_adf.py +++ b/nexusutils/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_adf.py @@ -28,7 +28,7 @@ import hyperspy.api as hs -from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.em_nexus_base_classes \ +from nexusutils.dataconverter.readers.em_spctrscpy.utils.em_nexus_base_classes \ import NxObject diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_comments.py b/nexusutils/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_comments.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_comments.py rename to nexusutils/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_comments.py diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_eels.py b/nexusutils/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_eels.py similarity index 99% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_eels.py rename to nexusutils/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_eels.py index 89e45975a..655f31b68 100644 --- a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_eels.py +++ b/nexusutils/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_eels.py @@ -28,7 +28,7 @@ import hyperspy.api as hs -from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.em_nexus_base_classes \ +from nexusutils.dataconverter.readers.em_spctrscpy.utils.em_nexus_base_classes \ import NxObject diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_xray.py b/nexusutils/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_xray.py similarity index 99% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_xray.py rename to nexusutils/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_xray.py index 3652f36b4..7e189afda 100644 --- a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_xray.py +++ b/nexusutils/dataconverter/readers/em_spctrscpy/utils/hspy/em_hspy_xray.py @@ -28,7 +28,7 @@ import hyperspy.api as hs -from nexusparser.tools.dataconverter.readers.em_spctrscpy.utils.em_nexus_base_classes \ +from nexusutils.dataconverter.readers.em_spctrscpy.utils.em_nexus_base_classes \ import NxObject diff --git a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/oina/em_oina_xray.py b/nexusutils/dataconverter/readers/em_spctrscpy/utils/oina/em_oina_xray.py similarity index 91% rename from nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/oina/em_oina_xray.py rename to nexusutils/dataconverter/readers/em_spctrscpy/utils/oina/em_oina_xray.py index 8d4e15a9f..d514a0b8d 100644 --- a/nexusparser/tools/dataconverter/readers/em_spctrscpy/utils/oina/em_oina_xray.py +++ b/nexusutils/dataconverter/readers/em_spctrscpy/utils/oina/em_oina_xray.py @@ -26,5 +26,5 @@ # import numpy as np -# from nexusparser.tools.dataconverter.readers.em.utils.em_nexus_base_classes \ +# from nexusutils.dataconverter.readers.em.utils.em_nexus_base_classes \ # import NxObject diff --git a/nexusutils/dataconverter/readers/example/README.md b/nexusutils/dataconverter/readers/example/README.md new file mode 100644 index 000000000..e188717b1 --- /dev/null +++ b/nexusutils/dataconverter/readers/example/README.md @@ -0,0 +1,5 @@ +# example reader + +## Contact person in FAIRmat for this reader +Sherjeel Shabih +Andrea Albino \ No newline at end of file diff --git a/nexusparser/tools/dataconverter/readers/example/__init__.py b/nexusutils/dataconverter/readers/example/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/example/__init__.py rename to nexusutils/dataconverter/readers/example/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/example/reader.py b/nexusutils/dataconverter/readers/example/reader.py similarity index 94% rename from nexusparser/tools/dataconverter/readers/example/reader.py rename to nexusutils/dataconverter/readers/example/reader.py index d12284ab6..3d33c72a8 100644 --- a/nexusparser/tools/dataconverter/readers/example/reader.py +++ b/nexusutils/dataconverter/readers/example/reader.py @@ -14,6 +14,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + # """An example reader implementation for the DataConverter.""" import os @@ -21,7 +22,7 @@ import json import numpy as np -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader +from nexusutils.dataconverter.readers.base.reader import BaseReader class ExampleReader(BaseReader): @@ -74,14 +75,14 @@ def read(self, template[("/ENTRY" "[entry]/test_link" "/external_link")] = {"link": - f"{os.path.dirname(__file__)}/../../../../../tests/" - f"data/tools/dataconverter/readers/mpes/" + f"{os.path.dirname(__file__)}/../../../../tests/" + f"data/dataconverter/readers/mpes/" f"xarray_saved_small_calibration.h5:/axes/ax3" } # virtual datasets concatenation - my_path = str(f"{os.path.dirname(__file__)}/../../../../../tests/" - f"data/tools/dataconverter/readers/mpes") + my_path = str(f"{os.path.dirname(__file__)}/../../../../tests/" + f"data/dataconverter/readers/mpes") my_datasets = {"link": [f"{my_path}/xarray_saved_small_calibration.h5:/axes/ax0", f"{my_path}/xarray_saved_small_calibration.h5:/axes/ax1", @@ -91,8 +92,8 @@ def read(self, template["/ENTRY[entry]/test_virtual_dataset/concatenate_datasets"] = my_datasets # virtual datasets slicing - my_path = str(f"{os.path.dirname(__file__)}/../../../../../tests/" - f"data/tools/dataconverter/readers/mpes") + my_path = str(f"{os.path.dirname(__file__)}/../../../../tests/" + f"data/dataconverter/readers/mpes") template[("/ENTRY[entry]" "/test_virtual" "_dataset/sliced" diff --git a/nexusutils/dataconverter/readers/hall/README.md b/nexusutils/dataconverter/readers/hall/README.md new file mode 100644 index 000000000..4c39ca3a0 --- /dev/null +++ b/nexusutils/dataconverter/readers/hall/README.md @@ -0,0 +1,4 @@ +# hall reader + +## Contact person in FAIRmat for this reader +Florian Dobner \ No newline at end of file diff --git a/nexusparser/tools/dataconverter/readers/hall/__init__.py b/nexusutils/dataconverter/readers/hall/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/hall/__init__.py rename to nexusutils/dataconverter/readers/hall/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/hall/helpers.py b/nexusutils/dataconverter/readers/hall/helpers.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/hall/helpers.py rename to nexusutils/dataconverter/readers/hall/helpers.py diff --git a/nexusparser/tools/dataconverter/readers/hall/reader.py b/nexusutils/dataconverter/readers/hall/reader.py similarity index 95% rename from nexusparser/tools/dataconverter/readers/hall/reader.py rename to nexusutils/dataconverter/readers/hall/reader.py index de72d8a6a..4f2a57787 100644 --- a/nexusparser/tools/dataconverter/readers/hall/reader.py +++ b/nexusutils/dataconverter/readers/hall/reader.py @@ -21,9 +21,9 @@ import numpy as np import pandas as pd -from nexusparser.tools.dataconverter.readers.json_yml.reader import YamlJsonReader -import nexusparser.tools.dataconverter.readers.hall.helpers as helpers -from nexusparser.tools.dataconverter.readers.utils import parse_json, parse_yml +from nexusutils.dataconverter.readers.json_yml.reader import YamlJsonReader +import nexusutils.dataconverter.readers.hall.helpers as helpers +from nexusutils.dataconverter.readers.utils import parse_json, parse_yml # Replacement dict for section names SECTION_REPLACEMENTS = { diff --git a/nexusparser/tools/dataconverter/readers/json_map/Readme.md b/nexusutils/dataconverter/readers/json_map/README.md similarity index 92% rename from nexusparser/tools/dataconverter/readers/json_map/Readme.md rename to nexusutils/dataconverter/readers/json_map/README.md index 6fa0de5c0..4b4820c49 100644 --- a/nexusparser/tools/dataconverter/readers/json_map/Readme.md +++ b/nexusutils/dataconverter/readers/json_map/README.md @@ -18,4 +18,7 @@ There are some example files you can use: ```console user@box:~$ python convert.py --nxdl NXtest --input-file data.json --input-file data.mapping.json --reader json_map -``` \ No newline at end of file +``` + +## Contact person in FAIRmat for this reader +Sherjeel Shabih \ No newline at end of file diff --git a/nexusparser/tools/dataconverter/readers/json_map/__init__.py b/nexusutils/dataconverter/readers/json_map/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/json_map/__init__.py rename to nexusutils/dataconverter/readers/json_map/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/json_map/reader.py b/nexusutils/dataconverter/readers/json_map/reader.py similarity index 96% rename from nexusparser/tools/dataconverter/readers/json_map/reader.py rename to nexusutils/dataconverter/readers/json_map/reader.py index fa64571de..9d42516e7 100644 --- a/nexusparser/tools/dataconverter/readers/json_map/reader.py +++ b/nexusutils/dataconverter/readers/json_map/reader.py @@ -22,9 +22,9 @@ import numpy as np import xarray -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader -from nexusparser.tools.dataconverter.template import Template -from nexusparser.tools.dataconverter.helpers import ensure_all_required_fields_exist +from nexusutils.dataconverter.readers.base.reader import BaseReader +from nexusutils.dataconverter.template import Template +from nexusutils.dataconverter.helpers import ensure_all_required_fields_exist def parse_slice(slice_string): diff --git a/nexusutils/dataconverter/readers/json_yml/README.md b/nexusutils/dataconverter/readers/json_yml/README.md new file mode 100644 index 000000000..eb6ed4eef --- /dev/null +++ b/nexusutils/dataconverter/readers/json_yml/README.md @@ -0,0 +1,4 @@ +# JSON YAML reader + +## Contact person in FAIRmat for this reader +Sherjeel Shabih \ No newline at end of file diff --git a/nexusparser/tools/dataconverter/readers/json_yml/__init__.py b/nexusutils/dataconverter/readers/json_yml/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/json_yml/__init__.py rename to nexusutils/dataconverter/readers/json_yml/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/json_yml/reader.py b/nexusutils/dataconverter/readers/json_yml/reader.py similarity index 96% rename from nexusparser/tools/dataconverter/readers/json_yml/reader.py rename to nexusutils/dataconverter/readers/json_yml/reader.py index 707b51a8a..099aac401 100644 --- a/nexusparser/tools/dataconverter/readers/json_yml/reader.py +++ b/nexusutils/dataconverter/readers/json_yml/reader.py @@ -19,7 +19,7 @@ from typing import Tuple, Any, Callable, Dict, List import os -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader +from nexusutils.dataconverter.readers.base.reader import BaseReader class YamlJsonReader(BaseReader): diff --git a/nexusutils/dataconverter/readers/mpes/README.md b/nexusutils/dataconverter/readers/mpes/README.md new file mode 100644 index 000000000..c189d6a47 --- /dev/null +++ b/nexusutils/dataconverter/readers/mpes/README.md @@ -0,0 +1,4 @@ +# mpes reader + +## Contact person in FAIRmat for this reader +Florian Dobner diff --git a/nexusparser/tools/dataconverter/readers/mpes/__init__.py b/nexusutils/dataconverter/readers/mpes/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/mpes/__init__.py rename to nexusutils/dataconverter/readers/mpes/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/mpes/reader.py b/nexusutils/dataconverter/readers/mpes/reader.py similarity index 98% rename from nexusparser/tools/dataconverter/readers/mpes/reader.py rename to nexusutils/dataconverter/readers/mpes/reader.py index d004fcbb3..723f8dc41 100644 --- a/nexusparser/tools/dataconverter/readers/mpes/reader.py +++ b/nexusutils/dataconverter/readers/mpes/reader.py @@ -27,8 +27,8 @@ import xarray as xr import yaml -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader -from nexusparser.tools.dataconverter.readers.utils import flatten_and_replace +from nexusutils.dataconverter.readers.base.reader import BaseReader +from nexusutils.dataconverter.readers.utils import flatten_and_replace DEFAULT_UNITS = { "X": "step", diff --git a/nexusutils/dataconverter/readers/transmission/README.md b/nexusutils/dataconverter/readers/transmission/README.md new file mode 100644 index 000000000..0fd071f32 --- /dev/null +++ b/nexusutils/dataconverter/readers/transmission/README.md @@ -0,0 +1,4 @@ +# transmission reader + +## Contact person in FAIRmat for this reader +The FAIRmat Area B team \ No newline at end of file diff --git a/nexusparser/tools/dataconverter/readers/transmission/__init__.py b/nexusutils/dataconverter/readers/transmission/__init__.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/transmission/__init__.py rename to nexusutils/dataconverter/readers/transmission/__init__.py diff --git a/nexusparser/tools/dataconverter/readers/transmission/metadata_parsers.py b/nexusutils/dataconverter/readers/transmission/metadata_parsers.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/transmission/metadata_parsers.py rename to nexusutils/dataconverter/readers/transmission/metadata_parsers.py diff --git a/nexusparser/tools/dataconverter/readers/transmission/reader.py b/nexusutils/dataconverter/readers/transmission/reader.py similarity index 97% rename from nexusparser/tools/dataconverter/readers/transmission/reader.py rename to nexusutils/dataconverter/readers/transmission/reader.py index ac1622b44..919dc4bb7 100644 --- a/nexusparser/tools/dataconverter/readers/transmission/reader.py +++ b/nexusutils/dataconverter/readers/transmission/reader.py @@ -20,9 +20,9 @@ from typing import Callable, List, Any, Dict import pandas as pd -from nexusparser.tools.dataconverter.readers.json_yml.reader import YamlJsonReader -import nexusparser.tools.dataconverter.readers.transmission.metadata_parsers as mpars -from nexusparser.tools.dataconverter.readers.utils import parse_json, parse_yml +from nexusutils.dataconverter.readers.json_yml.reader import YamlJsonReader +import nexusutils.dataconverter.readers.transmission.metadata_parsers as mpars +from nexusutils.dataconverter.readers.utils import parse_json, parse_yml # Dictionary mapping metadata in the asc file to the paths in the NeXus file. diff --git a/nexusparser/tools/dataconverter/readers/utils.py b/nexusutils/dataconverter/readers/utils.py similarity index 100% rename from nexusparser/tools/dataconverter/readers/utils.py rename to nexusutils/dataconverter/readers/utils.py diff --git a/nexusparser/tools/dataconverter/template.py b/nexusutils/dataconverter/template.py similarity index 99% rename from nexusparser/tools/dataconverter/template.py rename to nexusutils/dataconverter/template.py index 7a02f324f..143b03e45 100644 --- a/nexusparser/tools/dataconverter/template.py +++ b/nexusutils/dataconverter/template.py @@ -20,7 +20,7 @@ import copy import json -from nexusparser.tools.dataconverter import helpers +from nexusutils.dataconverter import helpers class Template(dict): diff --git a/nexusparser/tools/dataconverter/writer.py b/nexusutils/dataconverter/writer.py similarity index 96% rename from nexusparser/tools/dataconverter/writer.py rename to nexusutils/dataconverter/writer.py index 3552f544e..a09b51238 100644 --- a/nexusparser/tools/dataconverter/writer.py +++ b/nexusutils/dataconverter/writer.py @@ -15,7 +15,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -"""The writer class for writing a Nexus file in accordance with a given NXDL.""" +"""The writer class for writing a NeXus file in accordance with a given NXDL.""" import copy import logging @@ -25,8 +25,8 @@ import h5py import numpy as np -from nexusparser.tools.dataconverter import helpers -from nexusparser.tools import nexus +from nexusutils.dataconverter import helpers +from nexusutils.nexus import nexus logger = logging.getLogger(__name__) # pylint: disable=C0103 logger.setLevel(logging.INFO) @@ -160,17 +160,17 @@ def handle_dicts_entries(data, grp, entry_name, output_path): class Writer: - """The writer class for writing a Nexus file in accordance with a given NXDL. + """The writer class for writing a NeXus file in accordance with a given NXDL. Args: data (dict): Dictionary containing the data to convert. nxdl_path (str): Path to the nxdl file to use during conversion. - output_path (str): Path to the output Nexus file. + output_path (str): Path to the output NeXus file. Attributes: data (dict): Dictionary containing the data to convert. nxdl_path (str): Path to the nxdl file to use during conversion. - output_path (str): Path to the output Nexus file. + output_path (str): Path to the output NeXus file. output_nexus (h5py.File): The h5py file object to manipulate output file. nxdl_data (dict): Stores xml data from given nxdl file to use during conversion. nxs_namespace (str): The namespace used in the NXDL tags. Helps search for XML children. @@ -222,7 +222,7 @@ def ensure_and_get_parent_node(self, path: str, undocumented_paths) -> h5py.Grou return self.output_nexus[parent_path_hdf5] def write(self): - """Writes the Nexus file with previously validated data from the reader with NXDL attrs.""" + """Writes the NeXus file with previously validated data from the reader with NXDL attrs.""" hdf5_links_for_later = [] for path, value in self.data.items(): diff --git a/nexusparser/definitions b/nexusutils/definitions similarity index 100% rename from nexusparser/definitions rename to nexusutils/definitions diff --git a/nexusutils/nexus/README.md b/nexusutils/nexus/README.md new file mode 100644 index 000000000..6d45bb380 --- /dev/null +++ b/nexusutils/nexus/README.md @@ -0,0 +1,12 @@ +The **nexus.py** tool can be used as a standalone tool **Testing nexus*** + +Following example dataset can be used to test `nexus.py` module `tests/data/nexus/201805_WSe2_arpes.nxs`. +This is an angular-resolved photoelectron spectroscopy (ARPES) dataset and it is formatted according to +the [NXarpes application definition of NEXUS](https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes). + +Run the following command to test the `nexus.py` using example ARPES dataset: +``` +python test_parser.py +``` + +You should get a message reading "Testing of nexus.py is SUCCESSFUL." if everything goes as expected! diff --git a/nexusparser/metainfo/__init__.py b/nexusutils/nexus/__init__.py similarity index 88% rename from nexusparser/metainfo/__init__.py rename to nexusutils/nexus/__init__.py index 83ea3639f..2290aef3b 100644 --- a/nexusparser/metainfo/__init__.py +++ b/nexusutils/nexus/__init__.py @@ -4,8 +4,7 @@ # # Copyright The NOMAD Authors. # -# This file is part of NOMAD. -# See https://nomad-lab.eu for further info. +# This file is part of NOMAD. See https://nomad-lab.eu for further info. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/nexusparser/tools/nexus.py b/nexusutils/nexus/nexus.py similarity index 98% rename from nexusparser/tools/nexus.py rename to nexusutils/nexus/nexus.py index 5181ba6c3..62cb91d14 100644 --- a/nexusparser/tools/nexus.py +++ b/nexusutils/nexus/nexus.py @@ -1,5 +1,5 @@ # pylint: disable=too-many-lines -"""Read files from different format and print it in a standard Nexus format +"""Read files from different format and print it in a standard NeXus format """ import os @@ -99,7 +99,7 @@ def get_nx_namefit(hdf_name, name): def get_nx_classes(): - """Read base classes from the Nexus definition folder. + """Read base classes from the NeXus definition folder. Check each file in base_classes, applications, contributed_definitions. If its category attribute is 'base', then it is added to the list. """ base_classes = glob(os.path.join(get_nexus_definitions_path(), @@ -119,7 +119,7 @@ def get_nx_classes(): def get_nx_units(): - """Read unit kinds from the Nexus definition/nxdlTypes.xsd file""" + """Read unit kinds from the NeXus definition/nxdlTypes.xsd file""" filepath = f"{get_nexus_definitions_path()}{os.sep}nxdlTypes.xsd" tree = ET.parse(filepath) root = tree.getroot() @@ -142,7 +142,7 @@ def get_nx_units(): def get_nx_attribute_type(): - """Read attribute types from the Nexus definition/nxdlTypes.xsd file""" + """Read attribute types from the NeXus definition/nxdlTypes.xsd file""" filepath = get_nexus_definitions_path() + '/nxdlTypes.xsd' tree = ET.parse(filepath) root = tree.getroot() @@ -786,7 +786,7 @@ def get_node_at_nxdl_path(nxdl_path: str = None, nx_name: str = None, elem: ET.Element = None, exc: bool = True): """Returns an ET.Element for the given path. - This function either takes the name for the Nexus Application Definition + This function either takes the name for the NeXus Application Definition we are looking for or the root elem from a previously loaded NXDL file and finds the corresponding XML element with the needed attributes.""" (class_path, nxdlpath, elist) = get_inherited_nodes(nxdl_path, nx_name, elem) @@ -1033,8 +1033,9 @@ class HandleNexus: """documentation""" def __init__(self, logger, args): self.logger = logger + local_dir = os.path.abspath(os.path.dirname(__file__)) self.input_file_name = args[0] if len( - args) >= 1 else 'tests/data/nexus_test_data/201805_WSe2_arpes.nxs' + args) >= 1 else os.path.join(local_dir, '../../tests/data/nexus/201805_WSe2_arpes.nxs') self.parser = None self.in_file = None @@ -1058,8 +1059,10 @@ def main(): logging_format = "%(levelname)s: %(message)s" stdout_handler = logging.StreamHandler(sys.stdout) stdout_handler.setLevel(logging.DEBUG) - logging.basicConfig(level=logging.DEBUG, format=logging_format, handlers=[stdout_handler]) - logger = logging.getLogger() + logging.basicConfig(level=logging.INFO, format=logging_format, handlers=[stdout_handler]) + logger = logging.getLogger(__name__) + logger.addHandler(stdout_handler) + logger.setLevel(logging.DEBUG) nexus_helper = HandleNexus(logger, sys.argv[1:]) nexus_helper.process_nexus_master_file(None) diff --git a/nexusparser/tools/yaml2nxdl/README.md b/nexusutils/nyaml2nxdl/README.md similarity index 75% rename from nexusparser/tools/yaml2nxdl/README.md rename to nexusutils/nyaml2nxdl/README.md index b1e93cad8..b720a1727 100644 --- a/nexusparser/tools/yaml2nxdl/README.md +++ b/nexusutils/nyaml2nxdl/README.md @@ -1,7 +1,8 @@ # YAML to NXDL converter and NXDL to YAML converter -**Tools purpose**: Offer a simple YAML-based schema and a XML-based schema to describe NeXus instances. These can be NeXus application definitions, or classes such as base or contributed classes. Users either create NeXus instances by writing a YAML file or a XML file which details a hierarchy of data/metadata elements. -The forward (YAML -> XML) and backward (XML -> YAML) conversions are implemented. +**Tools purpose**: Offer a simple YAML-based schema and a XML-based schema to describe NeXus instances. These can be NeXus application definitions or classes +such as base or contributed classes. Users either create NeXus instances by writing a YAML file or a XML file which details a hierarchy of data/metadata elements. +The forward (YAML -> NXDL.XML) and backward (NXDL.XML -> YAML) conversions are implemented. **How the tool works**: - yaml2nxdl.py @@ -11,8 +12,8 @@ The forward (YAML -> XML) and backward (XML -> YAML) conversions are implemented 3. Write the tree into a YAML file or a properly formatted NXDL XML schema file to disk. 4. Optionally, if --append argument is given, the XML or YAML input file is interpreted as an extension of a base class and the entries contained in it - are appended below a standard Nexus base class. - You need to specify both your input file (with YAML or XML extension) and Nexus class (with no extension). + are appended below a standard NeXus base class. + You need to specify both your input file (with YAML or XML extension) and NeXus class (with no extension). Both .yml and .nxdl.xml file of the extended class are printed. ```console @@ -29,6 +30,8 @@ Options: ``` +## Documentation + **Rule set**: From transcoding YAML files we need to follow several rules. * Named NeXus groups, which are instances of NeXus classes especially base or contributed classes. Creating (NXbeam) is a simple example of a request to define a group named according to NeXus default rules. mybeam1(NXbeam) or mybeam2(NXbeam) are examples how to create multiple named instances at the same hierarchy level. * Members of groups so-called fields. A simple example of a member is voltage. Here the datatype is implied automatically as the default NeXus NX_CHAR type. By contrast, voltage(NX_FLOAT) can be used to instantiate a member of class which should be of NeXus type NX_FLOAT. @@ -41,3 +44,12 @@ Options: * *units* A statement introducing NeXus-compliant NXDL units arguments, like NX_VOLTAGE * *dimensions* Details which dimensional arrays to expect * *enumeration* Python list of strings which are considered as recommended entries to choose from. + +## Next steps + +The NOMAD team is currently working on the establishing of a one-to-one mapping between +NeXus definitions and the NOMAD MetaInfo. As soon as this is in place the YAML files will +be annotated with further metadata so that they can serve two purposes. +On the one hand they can serve as an instance for a schema to create a GUI representation +of a NOMAD Oasis ELN schema. On the other hand the YAML to NXDL converter will skip all +those pieces of information which are irrelevant from a NeXus perspective. diff --git a/nexusparser/tools/yaml2nxdl/__init__.py b/nexusutils/nyaml2nxdl/__init__.py similarity index 100% rename from nexusparser/tools/yaml2nxdl/__init__.py rename to nexusutils/nyaml2nxdl/__init__.py diff --git a/nexusparser/tools/yaml2nxdl/yaml2nxdl.py b/nexusutils/nyaml2nxdl/nyaml2nxdl.py similarity index 90% rename from nexusparser/tools/yaml2nxdl/yaml2nxdl.py rename to nexusutils/nyaml2nxdl/nyaml2nxdl.py index 681d5fa1e..165e4bc4e 100755 --- a/nexusparser/tools/yaml2nxdl/yaml2nxdl.py +++ b/nexusutils/nyaml2nxdl/nyaml2nxdl.py @@ -35,8 +35,8 @@ import click from ..dataconverter import helpers -from . import yaml2nxdl_forward_tools -from . import yaml2nxdl_backward_tools +from . import nyaml2nxdl_forward_tools +from . import nyaml2nxdl_backward_tools def pretty_print_xml(xml_root, output_xml): @@ -73,13 +73,13 @@ def pretty_print_xml(xml_root, output_xml): os.remove('tmp.xml') -def yaml2nxdl(input_file: str, verbose: bool): - """Main of the yaml2nxdl converter, creates XML tree, +def nyaml2nxdl(input_file: str, verbose: bool): + """Main of the nyaml2nxdl converter, creates XML tree, namespace and schema, then evaluates a dictionary nest of groups recursively and fields or (their) attributes as childs of the groups """ - yml_appdef = yaml2nxdl_forward_tools.yml_reader(input_file) + yml_appdef = nyaml2nxdl_forward_tools.yml_reader(input_file) if verbose: sys.stdout.write(f'input-file: {input_file}\n') @@ -107,17 +107,17 @@ def yaml2nxdl(input_file: str, verbose: bool): del yml_appdef['category'] if 'symbols' in yml_appdef.keys(): - yaml2nxdl_forward_tools.xml_handle_symbols(yml_appdef, - xml_root, - 'symbols', - yml_appdef['symbols']) + nyaml2nxdl_forward_tools.xml_handle_symbols(yml_appdef, + xml_root, + 'symbols', + yml_appdef['symbols']) del yml_appdef['symbols'] assert isinstance(yml_appdef['doc'], str) and yml_appdef['doc'] != '', 'Doc \ has to be a non-empty string!' doctag = ET.SubElement(xml_root, 'doc') - doctag.text = yaml2nxdl_forward_tools.format_nxdl_doc(yml_appdef['doc']) + doctag.text = nyaml2nxdl_forward_tools.format_nxdl_doc(yml_appdef['doc']) del yml_appdef['doc'] @@ -143,7 +143,7 @@ def yaml2nxdl(input_file: str, verbose: bool): assert (keyword[0:2] == 'NX' and len(keyword) > 2), 'NX \ keyword has an invalid pattern, or is too short!' - yaml2nxdl_forward_tools.recursive_build(xml_root, yml_appdef[keyword], verbose) + nyaml2nxdl_forward_tools.recursive_build(xml_root, yml_appdef[keyword], verbose) pretty_print_xml(xml_root, input_file.rsplit(".", 1)[0] + '.nxdl.xml') if verbose: @@ -326,7 +326,7 @@ def xmlparse(self, output_yml, xml_tree, depth, verbose): parent = get_node_parent_info(tree, node)[0] doc_parent = helpers.remove_namespace_from_tag(parent.tag) if doc_parent != 'item': - yaml2nxdl_backward_tools.handle_not_root_level_doc(depth, node, file_out) + nyaml2nxdl_backward_tools.handle_not_root_level_doc(depth, node, file_out) if tag == ('symbols'): Nxdl2yaml.handle_symbols(self, depth, node) self.jump_symbol_child = True @@ -339,13 +339,13 @@ def xmlparse(self, output_yml, xml_tree, depth, verbose): Nxdl2yaml.print_root_level_info(self, depth, file_out) # End of print root-level definitions in file if tag in ('field', 'group') and depth != 0: - yaml2nxdl_backward_tools.handle_group_or_field(depth, node, file_out) + nyaml2nxdl_backward_tools.handle_group_or_field(depth, node, file_out) if tag == ('enumeration'): - yaml2nxdl_backward_tools.handle_enumeration(depth, node, file_out) + nyaml2nxdl_backward_tools.handle_enumeration(depth, node, file_out) if tag == ('attribute'): - yaml2nxdl_backward_tools.handle_attributes(depth, node, file_out) + nyaml2nxdl_backward_tools.handle_attributes(depth, node, file_out) if tag == ('dimensions'): - yaml2nxdl_backward_tools.handle_dimension(depth, node, file_out) + nyaml2nxdl_backward_tools.handle_dimension(depth, node, file_out) depth += 1 # Write nested nodes Nxdl2yaml.recursion_in_xml_tree(self, depth, xml_tree, output_yml, verbose) @@ -366,20 +366,20 @@ def print_yml(input_file, verbose): def append_yml(input_file, append, verbose): - """Append to an existing Nexus base class new elements provided in YML input file \ + """Append to an existing NeXus base class new elements provided in YML input file \ and print both an XML and YML file of the extended base class. """ nexus_def_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), '../../definitions') assert [s for s in os.listdir(os.path.join(nexus_def_path, 'base_classes') ) if append.strip() == s.replace('.nxdl.xml', '')], \ - 'Your base class extension does not match any existing Nexus base classes' + 'Your base class extension does not match any existing NeXus base classes' tree = ET.parse(os.path.join(nexus_def_path + '/base_classes', append + '.nxdl.xml')) root = tree.getroot() # warning: tmp files are printed on disk and removed at the ends!! pretty_print_xml(root, 'tmp.nxdl.xml') print_yml('tmp.nxdl.xml', verbose) - yaml2nxdl('tmp_parsed.yml', verbose) + nyaml2nxdl('tmp_parsed.yml', verbose) tree = ET.parse('tmp_parsed.nxdl.xml') tree2 = ET.parse(input_file) root_no_duplicates = ET.Element( @@ -398,21 +398,21 @@ def append_yml(input_file, append, verbose): root_doc.text = elems.text break group = '{http://definition.nexusformat.org/nxdl/3.1}group' - root_no_duplicates = yaml2nxdl_backward_tools.compare_niac_and_my(tree, tree2, verbose, - group, - root_no_duplicates) + root_no_duplicates = nyaml2nxdl_backward_tools.compare_niac_and_my(tree, tree2, verbose, + group, + root_no_duplicates) field = '{http://definition.nexusformat.org/nxdl/3.1}field' - root_no_duplicates = yaml2nxdl_backward_tools.compare_niac_and_my(tree, tree2, verbose, - field, - root_no_duplicates) + root_no_duplicates = nyaml2nxdl_backward_tools.compare_niac_and_my(tree, tree2, verbose, + field, + root_no_duplicates) attribute = '{http://definition.nexusformat.org/nxdl/3.1}attribute' - root_no_duplicates = yaml2nxdl_backward_tools.compare_niac_and_my(tree, tree2, verbose, - attribute, - root_no_duplicates) + root_no_duplicates = nyaml2nxdl_backward_tools.compare_niac_and_my(tree, tree2, verbose, + attribute, + root_no_duplicates) pretty_print_xml(root_no_duplicates, f"{input_file.replace('.nxdl.xml', '')}" f"_appended.nxdl.xml") print_yml(input_file.replace('.nxdl.xml', '') + "_appended.nxdl.xml", verbose) - yaml2nxdl(input_file.replace('.nxdl.xml', '') + "_appended_parsed.yml", verbose) + nyaml2nxdl(input_file.replace('.nxdl.xml', '') + "_appended_parsed.yml", verbose) os.rename(f"{input_file.replace('.nxdl.xml', '')}_appended_parsed.yml", f"{input_file.replace('.nxdl.xml', '')}_appended.yml") os.rename(f"{input_file.replace('.nxdl.xml', '')}_appended_parsed.nxdl.xml", @@ -446,7 +446,7 @@ def launch_tool(input_file, verbose, append): """ if input_file.rsplit(".", 1)[1] in ('yml', 'yaml'): - yaml2nxdl(input_file, verbose) + nyaml2nxdl(input_file, verbose) if append: append_yml(input_file.rsplit(".", 1)[0] + '.nxdl.xml', append, diff --git a/nexusparser/tools/yaml2nxdl/yaml2nxdl_backward_tools.py b/nexusutils/nyaml2nxdl/nyaml2nxdl_backward_tools.py similarity index 100% rename from nexusparser/tools/yaml2nxdl/yaml2nxdl_backward_tools.py rename to nexusutils/nyaml2nxdl/nyaml2nxdl_backward_tools.py diff --git a/nexusparser/tools/yaml2nxdl/yaml2nxdl_forward_tools.py b/nexusutils/nyaml2nxdl/nyaml2nxdl_forward_tools.py similarity index 99% rename from nexusparser/tools/yaml2nxdl/yaml2nxdl_forward_tools.py rename to nexusutils/nyaml2nxdl/nyaml2nxdl_forward_tools.py index c98567443..3046917c2 100644 --- a/nexusparser/tools/yaml2nxdl/yaml2nxdl_forward_tools.py +++ b/nexusutils/nyaml2nxdl/nyaml2nxdl_forward_tools.py @@ -33,7 +33,7 @@ from yaml.resolver import BaseResolver from yaml.loader import Loader -from nexusparser.tools import nexus +from nexusutils.nexus import nexus NX_CLSS = nexus.get_nx_classes() @@ -113,7 +113,7 @@ def nx_name_type_resolving(tmp): def format_nxdl_doc(string): - """Nexus format for doc string + """NeXus format for doc string """ formatted_doc = '' formatted_doc += f"\n" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..fc8fe17d0 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,57 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "nexusutils" +version = "0.0.1" +authors = [ + { name = "The NOMAD Authors" }, +] +description = "Extend NeXus for materials science experiment and serve as a NOMAD parser implementation for NeXus." +readme = "README.md" +license = { file = "LICENSE.txt" } +requires-python = ">=3.7" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: Apache Software License", + "Operating System :: OS Independent", +] +dependencies = [ + "click>=7.1.2", + "typed-ast>=1.4.2", + "astroid>=2.5.1", + "h5py>=3.6.0", + "xarray>=0.20.2", + "PyYAML>=6.0", + "numpy>=1.21.2", + "pandas>=1.3.2", + "ase>=3.19.0", + "flatdict>=4.0.1", + "hyperspy>=1.7.1", + "jupyterlab_h5web>=6.0.1" +] + +[project.urls] +"Homepage" = "https://github.com/nomad-coe/nomad-parser-nexus" +"Bug Tracker" = "https://github.com/nomad-coe/nomad-parser-nexus/issues" + +[project.optional-dependencies] +dev = [ + "mypy", + "pylint", + "pycodestyle", + "pytest", + "pytest-timeout", + "pytest-cov", + "structlog", + "types-pyyaml" +] + +[project.scripts] +read_nexus = "nexusutils.nexus.nexus:main" +dataconverter = "nexusutils.dataconverter.convert:convert_cli" +nyaml2nxdl = "nexusutils.nyaml2nxdl.nyaml2nxdl:launch_tool" + +[tool.setuptools.package-data] +nexusutils = ["definitions/**/*.xml", "definitions/**/*.xsd"] diff --git a/requirements.txt b/requirements.txt index 50f9c4f58..f87db7a85 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ click==7.1.2 -mypy==0.971 +lxml==4.7.1 +mypy==0.750 pylint==2.3.1 pylint_plugin_utils==0.5 typed-ast==1.4.2 @@ -14,7 +15,7 @@ pymongo==3.12.1 h5py==3.6.0 python-json-logger==2.0.2 -xarray==2022.6.0 +xarray==0.20.2 PyYAML==6.0 numpy==1.21.2 pandas==1.3.2 @@ -22,8 +23,4 @@ odfpy==1.4.1 ase==3.19.0 structlog==21.5.0 flatdict==4.0.1 -hyperspy==1.7.1 - -# [nomad] -nomad-lab>=1.1.3 - +hyperspy==1.7.1 \ No newline at end of file diff --git a/setup.py b/setup.py index 66bf48b3c..5fe567178 100644 --- a/setup.py +++ b/setup.py @@ -16,90 +16,6 @@ # limitations under the License. # -from setuptools import setup, find_packages -import os -import re +from setuptools import setup - -def parse_requirements(): - ''' - Parses the requirements.txt file to extras install and extra requirements. - Sections headed with # [extra] are assigned to the 'extra' extra. - - Returns: - Tuple with install and extra requires passible to :func:`setuptools.setup`. - ''' - with open('requirements.txt', 'rt') as f: - lines = f.readlines() - - extras_require = {} - requires = [] - all_requires = [] - current = None - for line in lines: - line = line.strip() - - if line == '': - continue - - match = re.match(r'^#\s*\[([a-zA-Z0-9_]+)\]$', line) - if match: - extra = match.group(1) - current = list() - extras_require[extra] = current - elif line.startswith('#'): - continue - else: - line = line.split('#')[0].strip() - if current is None: - requires.append(line) - else: - current.append(line) - all_requires.append(line) - - extras_require['all'] = all_requires - - return requires, extras_require - -def main(): - try: - for nexus_definition_dir in ("/./", "/base_classes/", "/applications/", "/contributed_definitions/"): - f = open(os.path.abspath(os.path.dirname(__file__)) + "/nexusparser/definitions/" + nexus_definition_dir + "__init__.py", "a") - f.close() - except FileNotFoundError: - pass - - with open("README.md", "r") as f: - long_description = f.read() - - requires, extras_require = parse_requirements() - - setup( - name='nexusparser', - version='0.0.1', - description='NOMAD parser implementation for Nexus.', - long_description=long_description, - long_description_content_type="text/markdown", - author='The NOMAD Authors', - license='APACHE 2.0', - packages=find_packages(exclude=['tests']), - package_data={ - 'nexusparser.definitions.base_classes': ['*.xml'], - 'nexusparser.definitions.applications': ['*.xml'], - 'nexusparser.definitions.contributed_definitions': ['*.xml'], - 'nexusparser.definitions': ['*.xsd'] - }, - include_package_data=True, - install_requires=requires, - extras_require=extras_require, - entry_points={ - 'console_scripts': [ - 'read_nexus = nexusparser.tools.nexus:main', - 'dataconverter = nexusparser.tools.dataconverter.convert:convert_cli', - 'yaml2nxdl = nexusparser.tools.yaml2nxdl.yaml2nxdl:launch_tool' - ] - }) - - -if __name__ == '__main__': - main() +setup() \ No newline at end of file diff --git a/tests/data/tools/dataconverter/NXtest.nxdl.xml b/tests/data/dataconverter/NXtest.nxdl.xml similarity index 100% rename from tests/data/tools/dataconverter/NXtest.nxdl.xml rename to tests/data/dataconverter/NXtest.nxdl.xml diff --git a/tests/data/dataconverter/readers/apm/README.md b/tests/data/dataconverter/readers/apm/README.md new file mode 100644 index 000000000..3d6bc0db8 --- /dev/null +++ b/tests/data/dataconverter/readers/apm/README.md @@ -0,0 +1,2 @@ +This is a place for storing data for tests which verify the functionality of the apm reader. +An example for how to use the apm reader is available in *nomad-parser-nexus/examples/apm*. \ No newline at end of file diff --git a/tests/data/tools/dataconverter/readers/apm/nomad_oasis_eln_schema_for_nx_apm/nxapm.schema.archive.yaml b/tests/data/dataconverter/readers/apm/nomad_oasis_eln_schema_for_nx_apm/nxapm.schema.archive.yaml similarity index 100% rename from tests/data/tools/dataconverter/readers/apm/nomad_oasis_eln_schema_for_nx_apm/nxapm.schema.archive.yaml rename to tests/data/dataconverter/readers/apm/nomad_oasis_eln_schema_for_nx_apm/nxapm.schema.archive.yaml diff --git a/tests/data/tools/dataconverter/readers/ellips/README.md b/tests/data/dataconverter/readers/ellips/README.md similarity index 100% rename from tests/data/tools/dataconverter/readers/ellips/README.md rename to tests/data/dataconverter/readers/ellips/README.md diff --git a/tests/data/dataconverter/readers/ellips/eln_data.yaml b/tests/data/dataconverter/readers/ellips/eln_data.yaml new file mode 100644 index 000000000..6b0c7e733 --- /dev/null +++ b/tests/data/dataconverter/readers/ellips/eln_data.yaml @@ -0,0 +1,71 @@ +acquisition_program/\@url: https://www.jawoollam.com/ellipsometry-software/wvase +acquisition_program/program: WVASE +acquisition_program/version: '3.882' +address: Zum Großen Windkanal 2, 12489 Berlin, Germany +affiliation: Humboldt-Universität zu Berlin +angle_of_incidence_unit: degrees +angular_spread: + unit: rad ** 2 + value: 0.2 +atom_types: Si, O +blocks: +- type +- angle_of_incidence +calibration_status: no calibration +colnames: +- type +- wavelength +- angle_of_incidence +- psi +- delta +- err.psi +- err.delta +column_names: +- psi +- delta +company: J. A. Woollam Co. +count_time: + unit: s + value: 1 +data_identifier: 1 +data_type: psi/delta +definition: NXellipsometry +definition/\@url: https://github.com/FAIRmat-Experimental/nexus_definitions/tree/fairmat-ellips/contributed_definitions/NXellipsometry.nxdl.xml +definition/\@version: 0.0.2 +detector_type: CCD spectrometer +ellipsometry_type: dual compensator +email: surname.name@physik.hu-berlin.de +err-var: +- err.psi +- err.delta +experiment_description: RC2 scan on 2nm SiO2 on Si in air +experiment_identifier: exp-ID +filename: test-data.dat +firmware: CompleteEASE +firmware/\@url: https://www.jawoollam.com/ellipsometry-software/completeease +firmware/\@version: '6.37' +focussing_probes: false +integration_time: + unit: s + value: 0 +layer_structure: 2nm SiO2 on Si +light_source: arc lamp +medium: air +model: RC2 +model/\@version: 0.0.1 +name: Name Surname +parameters: +- type +- angle +rotating_element: compensator (source side) +sample_history: Commercially purchased sample +sample_name: 2nm SiO2 on Si +sep: \t +skip: 3 +stage_type: manual stage +start_time: '2022-01-27T04:35:00+00:00' +wavelength_unit: angstrom +x-var: wavelength +y-var: +- psi +- delta diff --git a/tests/data/dataconverter/readers/ellips/test-data.dat b/tests/data/dataconverter/readers/ellips/test-data.dat new file mode 100644 index 000000000..211871453 --- /dev/null +++ b/tests/data/dataconverter/readers/ellips/test-data.dat @@ -0,0 +1,9795 @@ +2nm SiO2 on Si on RC2 +VASEmethod[EllipsometerType=4 , CompleteEASE=6.37, AcqTime=15.000, ZoneAve=1, Acq. Parameters=DEFAULT.parms,WinCorrected=1] +Angstroms +E 1930.000000 50.000000 40.014217 142.127655 0.008585 0.034774 +E 1940.000000 50.000000 40.026409 142.307449 0.007827 0.031627 +E 1950.000000 50.000000 40.031204 142.483231 0.007221 0.029106 +E 1960.000000 50.000000 40.045902 142.679901 0.006813 0.027399 +E 1970.000000 50.000000 40.065468 142.866608 0.006478 0.025995 +E 1980.000000 50.000000 40.077728 143.102463 0.006224 0.024925 +E 1990.000000 50.000000 40.080673 143.409317 0.006016 0.024045 +E 2000.000000 50.000000 40.082367 143.746017 0.005829 0.023258 +E 2010.000000 50.000000 40.072388 143.990952 0.005649 0.022496 +E 2020.000000 50.000000 40.073170 144.279099 0.005475 0.021767 +E 2030.000000 50.000000 40.069405 144.611435 0.005311 0.021084 +E 2040.000000 50.000000 40.066757 144.883820 0.005150 0.020417 +E 2050.000000 50.000000 40.061028 145.150055 0.004993 0.019760 +E 2060.000000 50.000000 40.055706 145.396118 0.004843 0.019128 +E 2070.000000 50.000000 40.036533 145.661514 0.004703 0.018531 +E 2080.000000 50.000000 40.017166 145.896454 0.004572 0.017967 +E 2090.000000 50.000000 40.025864 146.114670 0.004443 0.017414 +E 2100.000000 50.000000 40.028156 146.370560 0.004322 0.016892 +E 2110.000000 50.000000 40.012478 146.607407 0.004227 0.016464 +E 2120.000000 50.000000 40.007420 146.799438 0.004136 0.016055 +E 2130.000000 50.000000 40.005928 147.055832 0.004045 0.015653 +E 2140.000000 50.000000 40.001190 147.294281 0.003968 0.015308 +E 2150.000000 50.000000 39.999153 147.531891 0.003896 0.014983 +E 2160.000000 50.000000 39.998287 147.757156 0.003830 0.014690 +E 2170.000000 50.000000 39.997860 147.958969 0.003769 0.014416 +E 2180.000000 50.000000 40.001450 148.183533 0.003709 0.014154 +E 2190.000000 50.000000 39.995445 148.426010 0.003648 0.013888 +E 2200.000000 50.000000 39.998291 148.655228 0.003589 0.013635 +E 2210.000000 50.000000 39.994427 148.901932 0.003533 0.013393 +E 2220.000000 50.000000 39.996326 149.173447 0.003476 0.013150 +E 2230.000000 50.000000 40.008663 149.415985 0.003422 0.012924 +E 2240.000000 50.000000 39.993584 149.634827 0.003373 0.012715 +E 2250.000000 50.000000 39.976269 149.894104 0.003326 0.012516 +E 2260.000000 50.000000 39.961422 150.199326 0.003285 0.012341 +E 2270.000000 50.000000 39.936958 150.453156 0.003245 0.012170 +E 2280.000000 50.000000 39.887856 150.692032 0.003205 0.012001 +E 2290.000000 50.000000 39.843830 150.939880 0.003166 0.011832 +E 2300.000000 50.000000 39.790047 151.197968 0.003131 0.011682 +E 2310.000000 50.000000 39.718216 151.398865 0.003097 0.011536 +E 2320.000000 50.000000 39.650379 151.570877 0.003065 0.011396 +E 2330.000000 50.000000 39.578545 151.704727 0.003040 0.011282 +E 2340.000000 50.000000 39.516590 151.776459 0.003016 0.011177 +E 2350.000000 50.000000 39.465984 151.847092 0.002991 0.011067 +E 2360.000000 50.000000 39.431660 151.908035 0.002969 0.010968 +E 2370.000000 50.000000 39.422081 151.941544 0.002946 0.010871 +E 2380.000000 50.000000 39.417023 151.982651 0.002923 0.010774 +E 2390.000000 50.000000 39.422253 152.004868 0.002904 0.010696 +E 2400.000000 50.000000 39.452198 152.051620 0.002887 0.010625 +E 2410.000000 50.000000 39.490494 152.132095 0.002870 0.010556 +E 2420.000000 50.000000 39.535706 152.168243 0.002854 0.010491 +E 2430.000000 50.000000 39.580338 152.246582 0.002844 0.010446 +E 2440.000000 50.000000 39.634945 152.360504 0.002832 0.010399 +E 2450.000000 50.000000 39.692410 152.490509 0.002822 0.010354 +E 2460.000000 50.000000 39.755169 152.634766 0.002814 0.010319 +E 2470.000000 50.000000 39.813477 152.760513 0.002807 0.010287 +E 2480.000000 50.000000 39.871521 152.897903 0.002800 0.010256 +E 2490.000000 50.000000 39.936161 153.070190 0.002796 0.010234 +E 2500.000000 50.000000 39.989059 153.222900 0.002794 0.010223 +E 2510.000000 50.000000 40.051128 153.431931 0.002795 0.010219 +E 2520.000000 50.000000 40.117176 153.628113 0.002793 0.010206 +E 2530.000000 50.000000 40.174896 153.816116 0.002795 0.010208 +E 2540.000000 50.000000 40.230507 154.022125 0.002803 0.010232 +E 2550.000000 50.000000 40.291935 154.220810 0.002811 0.010253 +E 2560.000000 50.000000 40.348503 154.457199 0.002821 0.010285 +E 2570.000000 50.000000 40.409046 154.663589 0.002832 0.010321 +E 2580.000000 50.000000 40.468143 154.894424 0.002846 0.010363 +E 2590.000000 50.000000 40.519966 155.147614 0.002861 0.010413 +E 2600.000000 50.000000 40.567379 155.406998 0.002880 0.010475 +E 2610.000000 50.000000 40.617954 155.660889 0.002901 0.010543 +E 2620.000000 50.000000 40.666866 155.911163 0.002922 0.010612 +E 2630.000000 50.000000 40.725704 156.188797 0.002943 0.010685 +E 2640.000000 50.000000 40.780777 156.469666 0.002967 0.010766 +E 2650.000000 50.000000 40.836395 156.748627 0.002995 0.010861 +E 2660.000000 50.000000 40.883255 157.057495 0.003026 0.010967 +E 2670.000000 50.000000 40.922371 157.383133 0.003058 0.011076 +E 2680.000000 50.000000 40.966640 157.706467 0.003089 0.011183 +E 2690.000000 50.000000 40.998135 158.048111 0.003121 0.011288 +E 2700.000000 50.000000 41.032158 158.406967 0.003152 0.011395 +E 2710.000000 50.000000 41.058334 158.775909 0.003188 0.011518 +E 2720.000000 50.000000 41.071541 159.117783 0.003224 0.011640 +E 2730.000000 50.000000 41.081215 159.480453 0.003257 0.011751 +E 2740.000000 50.000000 41.071716 159.856735 0.003293 0.011870 +E 2750.000000 50.000000 41.051399 160.225784 0.003328 0.011986 +E 2760.000000 50.000000 41.031219 160.599701 0.003365 0.012111 +E 2770.000000 50.000000 40.996609 160.953598 0.003414 0.012274 +E 2780.000000 50.000000 40.965870 161.285217 0.003444 0.012370 +E 2790.000000 50.000000 40.932110 161.638748 0.003470 0.012452 +E 2800.000000 50.000000 40.886234 161.993454 0.003500 0.012548 +E 2810.000000 50.000000 40.836842 162.321747 0.003534 0.012659 +E 2820.000000 50.000000 40.789928 162.643646 0.003571 0.012779 +E 2830.000000 50.000000 40.746315 162.951172 0.003610 0.012905 +E 2840.000000 50.000000 40.697300 163.257889 0.003643 0.013011 +E 2850.000000 50.000000 40.641205 163.590118 0.003685 0.013151 +E 2860.000000 50.000000 40.589268 163.929962 0.003729 0.013293 +E 2870.000000 50.000000 40.521923 164.278595 0.003769 0.013421 +E 2880.000000 50.000000 40.420925 164.634720 0.003817 0.013577 +E 2890.000000 50.000000 40.328045 164.954636 0.003873 0.013757 +E 2900.000000 50.000000 40.215271 165.289719 0.003929 0.013941 +E 2910.000000 50.000000 40.085327 165.590683 0.003987 0.014125 +E 2920.000000 50.000000 39.949558 165.848618 0.004047 0.014318 +E 2930.000000 50.000000 39.814732 166.057159 0.004105 0.014503 +E 2940.000000 50.000000 39.681282 166.243378 0.004165 0.014694 +E 2950.000000 50.000000 39.559025 166.403976 0.004224 0.014881 +E 2960.000000 50.000000 39.424557 166.545700 0.004281 0.015061 +E 2970.000000 50.000000 39.284615 166.702316 0.004339 0.015242 +E 2980.000000 50.000000 39.176281 166.800934 0.004400 0.015438 +E 2990.000000 50.000000 39.070713 166.863754 0.004461 0.015633 +E 3000.000000 50.000000 38.975414 166.938889 0.004524 0.015836 +E 3010.000000 50.000000 38.878563 167.028732 0.004582 0.016020 +E 3020.000000 50.000000 38.785034 167.112335 0.004641 0.016210 +E 3030.000000 50.000000 38.701351 167.190033 0.004706 0.016422 +E 3040.000000 50.000000 38.622021 167.238129 0.004768 0.016623 +E 3050.000000 50.000000 38.540707 167.255814 0.004840 0.016855 +E 3060.000000 50.000000 38.473972 167.313309 0.004910 0.017083 +E 3070.000000 50.000000 38.416367 167.336746 0.004974 0.017294 +E 3080.000000 50.000000 38.352753 167.337173 0.005046 0.017531 +E 3090.000000 50.000000 38.296818 167.415207 0.005117 0.017763 +E 3100.000000 50.000000 38.234535 167.441376 0.005179 0.017965 +E 3110.000000 50.000000 38.183598 167.477051 0.005243 0.018175 +E 3120.000000 50.000000 38.136162 167.540756 0.005313 0.018406 +E 3130.000000 50.000000 38.092407 167.538284 0.005372 0.018598 +E 3140.000000 50.000000 38.067379 167.591751 0.005435 0.018811 +E 3150.000000 50.000000 38.038094 167.658295 0.005501 0.019030 +E 3160.000000 50.000000 37.972755 167.700485 0.005564 0.019233 +E 3170.000000 50.000000 37.940628 167.764511 0.005628 0.019443 +E 3180.000000 50.000000 37.922256 167.802231 0.005690 0.019650 +E 3190.000000 50.000000 37.879593 167.853348 0.005761 0.019885 +E 3200.000000 50.000000 37.864590 167.880615 0.005822 0.020089 +E 3210.000000 50.000000 37.832973 167.882980 0.005892 0.020323 +E 3220.000000 50.000000 37.801411 167.955002 0.005960 0.020549 +E 3230.000000 50.000000 37.786137 168.017609 0.006024 0.020762 +E 3240.000000 50.000000 37.760193 168.072266 0.006087 0.020973 +E 3250.000000 50.000000 37.734486 168.142548 0.006147 0.021171 +E 3260.000000 50.000000 37.722507 168.166138 0.006246 0.021506 +E 3270.000000 50.000000 37.717068 168.195221 0.006377 0.021952 +E 3280.000000 50.000000 37.697788 168.251404 0.006512 0.022414 +E 3290.000000 50.000000 37.679295 168.307480 0.006618 0.022770 +E 3300.000000 50.000000 37.667194 168.353973 0.006715 0.023097 +E 3310.000000 50.000000 37.655422 168.415344 0.006815 0.023438 +E 3320.000000 50.000000 37.650436 168.450485 0.006888 0.023685 +E 3330.000000 50.000000 37.617416 168.545044 0.006947 0.023879 +E 3340.000000 50.000000 37.599232 168.592285 0.007002 0.024062 +E 3350.000000 50.000000 37.613369 168.608994 0.007046 0.024212 +E 3360.000000 50.000000 37.604439 168.624405 0.007099 0.024388 +E 3370.000000 50.000000 37.584930 168.719299 0.007153 0.024568 +E 3380.000000 50.000000 37.575653 168.810394 0.007181 0.024660 +E 3390.000000 50.000000 37.577919 168.860031 0.007183 0.024664 +E 3400.000000 50.000000 37.574230 168.908295 0.007188 0.024676 +E 3410.000000 50.000000 37.567123 168.965469 0.007210 0.024749 +E 3420.000000 50.000000 37.570904 169.022476 0.007268 0.024944 +E 3430.000000 50.000000 37.571522 169.074249 0.007324 0.025134 +E 3440.000000 50.000000 37.579929 169.119156 0.007362 0.025266 +E 3450.000000 50.000000 37.588264 169.189346 0.007420 0.025461 +E 3460.000000 50.000000 37.608612 169.275452 0.007477 0.025659 +E 3470.000000 50.000000 37.614811 169.341476 0.007538 0.025869 +E 3480.000000 50.000000 37.603127 169.429504 0.007593 0.026051 +E 3490.000000 50.000000 37.625416 169.549103 0.007646 0.026234 +E 3500.000000 50.000000 37.648170 169.580002 0.007700 0.026422 +E 3510.000000 50.000000 37.663067 169.582596 0.007758 0.026622 +E 3520.000000 50.000000 37.691402 169.687897 0.007810 0.026803 +E 3530.000000 50.000000 37.723637 169.808685 0.007859 0.026976 +E 3540.000000 50.000000 37.754620 169.880295 0.007922 0.027195 +E 3550.000000 50.000000 37.797958 169.933289 0.007974 0.027379 +E 3560.000000 50.000000 37.849831 169.988098 0.008019 0.027542 +E 3570.000000 50.000000 37.891800 170.134659 0.008071 0.027726 +E 3580.000000 50.000000 37.922565 170.336197 0.008112 0.027872 +E 3590.000000 50.000000 37.982803 170.505707 0.008158 0.028038 +E 3600.000000 50.000000 38.024326 170.662445 0.008203 0.028199 +E 3610.000000 50.000000 38.081615 170.906219 0.008243 0.028348 +E 3620.000000 50.000000 38.135853 171.112473 0.008268 0.028442 +E 3630.000000 50.000000 38.168762 171.337967 0.008298 0.028550 +E 3640.000000 50.000000 38.186531 171.640808 0.008350 0.028732 +E 3650.000000 50.000000 38.216156 171.916595 0.008406 0.028926 +E 3660.000000 50.000000 38.236397 172.126495 0.008392 0.028883 +E 3670.000000 50.000000 38.225945 172.403900 0.008342 0.028708 +E 3680.000000 50.000000 38.210796 172.800613 0.008327 0.028650 +E 3690.000000 50.000000 38.197086 173.133560 0.008345 0.028707 +E 3700.000000 50.000000 38.148277 173.383606 0.008430 0.028991 +E 3710.000000 50.000000 38.095837 173.670364 0.008547 0.029380 +E 3720.000000 50.000000 38.032112 173.936890 0.008596 0.029535 +E 3730.000000 50.000000 37.943707 174.215485 0.008676 0.029793 +E 3740.000000 50.000000 37.874119 174.512573 0.008747 0.030020 +E 3750.000000 50.000000 37.790680 174.736328 0.008750 0.030015 +E 3760.000000 50.000000 37.704865 174.940979 0.008737 0.029950 +E 3770.000000 50.000000 37.596062 175.179947 0.008757 0.029995 +E 3780.000000 50.000000 37.498409 175.373993 0.008721 0.029854 +E 3790.000000 50.000000 37.405220 175.546112 0.008663 0.029635 +E 3800.000000 50.000000 37.297680 175.649109 0.008680 0.029671 +E 3810.000000 50.000000 37.188995 175.770126 0.008774 0.029968 +E 3820.000000 50.000000 37.098171 175.969315 0.008833 0.030152 +E 3830.000000 50.000000 37.014507 176.030502 0.008786 0.029973 +E 3840.000000 50.000000 36.924168 176.103317 0.008803 0.030013 +E 3850.000000 50.000000 36.822502 176.236786 0.008897 0.030311 +E 3860.000000 50.000000 36.713802 176.322525 0.008860 0.030164 +E 3870.000000 50.000000 36.646366 176.380890 0.008741 0.029745 +E 3880.000000 50.000000 36.579651 176.409058 0.008609 0.029281 +E 3890.000000 50.000000 36.502338 176.418198 0.008638 0.029366 +E 3900.000000 50.000000 36.425442 176.480194 0.008889 0.030202 +E 3910.000000 50.000000 36.363190 176.581223 0.009154 0.031090 +E 3920.000000 50.000000 36.286407 176.644211 0.009107 0.030913 +E 3930.000000 50.000000 36.201965 176.687149 0.008970 0.030434 +E 3940.000000 50.000000 36.144917 176.818680 0.008858 0.030042 +E 3950.000000 50.000000 36.085236 176.845322 0.008833 0.029945 +E 3960.000000 50.000000 36.016956 176.789017 0.008931 0.030262 +E 3970.000000 50.000000 35.941341 176.827469 0.009030 0.030582 +E 3980.000000 50.000000 35.879307 176.878983 0.008910 0.030164 +E 3990.000000 50.000000 35.826954 176.900101 0.008779 0.029710 +E 4000.000000 50.000000 35.776100 176.970474 0.008852 0.029949 +E 4010.000000 50.000000 35.719902 176.991760 0.009057 0.030632 +E 4020.000000 50.000000 35.655972 177.043228 0.009194 0.031082 +E 4030.000000 50.000000 35.577518 177.070251 0.009218 0.031146 +E 4040.000000 50.000000 35.545563 177.065491 0.009139 0.030876 +E 4050.000000 50.000000 35.495491 177.068817 0.008949 0.030224 +E 4060.000000 50.000000 35.432846 177.109039 0.008766 0.029594 +E 4070.000000 50.000000 35.403286 177.165970 0.008794 0.029685 +E 4080.000000 50.000000 35.355564 177.156006 0.009055 0.030555 +E 4090.000000 50.000000 35.301334 177.172852 0.009267 0.031261 +E 4100.000000 50.000000 35.237083 177.218109 0.009303 0.031370 +E 4110.000000 50.000000 35.188622 177.313171 0.009306 0.031371 +E 4120.000000 50.000000 35.170624 177.306259 0.009198 0.031005 +E 4130.000000 50.000000 35.104034 177.247772 0.008937 0.030113 +E 4140.000000 50.000000 35.043255 177.281006 0.008836 0.029762 +E 4150.000000 50.000000 35.005600 177.321503 0.008986 0.030261 +E 4160.000000 50.000000 34.955517 177.313873 0.009074 0.030548 +E 4170.000000 50.000000 34.916336 177.375992 0.009057 0.030485 +E 4180.000000 50.000000 34.901669 177.407135 0.009066 0.030514 +E 4190.000000 50.000000 34.863346 177.399170 0.009170 0.030856 +E 4200.000000 50.000000 34.817463 177.434555 0.009197 0.030940 +E 4210.000000 50.000000 34.781055 177.452011 0.008966 0.030155 +E 4220.000000 50.000000 34.733986 177.486618 0.008679 0.029185 +E 4230.000000 50.000000 34.682716 177.503265 0.008520 0.028640 +E 4240.000000 50.000000 34.650242 177.496902 0.008512 0.028607 +E 4250.000000 50.000000 34.633354 177.511581 0.008803 0.029584 +E 4260.000000 50.000000 34.596397 177.557800 0.009148 0.030738 +E 4270.000000 50.000000 34.553188 177.572067 0.009123 0.030648 +E 4280.000000 50.000000 34.513779 177.548859 0.008859 0.029754 +E 4290.000000 50.000000 34.475517 177.554794 0.008942 0.030026 +E 4300.000000 50.000000 34.435345 177.582626 0.009007 0.030240 +E 4310.000000 50.000000 34.421329 177.605835 0.008931 0.029982 +E 4320.000000 50.000000 34.376854 177.623672 0.009073 0.030452 +E 4330.000000 50.000000 34.334705 177.668076 0.009217 0.030928 +E 4340.000000 50.000000 34.314816 177.691925 0.009004 0.030212 +E 4350.000000 50.000000 34.284607 177.628281 0.008911 0.029897 +E 4360.000000 50.000000 34.273514 177.663055 0.009046 0.030349 +E 4370.000000 50.000000 34.238892 177.723129 0.009050 0.030356 +E 4380.000000 50.000000 34.181824 177.708572 0.009005 0.030195 +E 4390.000000 50.000000 34.145939 177.672760 0.008957 0.030031 +E 4400.000000 50.000000 34.116222 177.686172 0.008919 0.029899 +E 4410.000000 50.000000 34.100842 177.728271 0.008781 0.029435 +E 4420.000000 50.000000 34.075222 177.756226 0.008499 0.028484 +E 4430.000000 50.000000 34.050308 177.717880 0.008465 0.028369 +E 4440.000000 50.000000 34.015442 177.758835 0.008547 0.028640 +E 4450.000000 50.000000 33.988548 177.773682 0.008501 0.028481 +E 4460.000000 50.000000 33.954948 177.788895 0.008446 0.028292 +E 4470.000000 50.000000 33.934479 177.764709 0.008501 0.028474 +E 4480.000000 50.000000 33.914028 177.856125 0.008548 0.028629 +E 4490.000000 50.000000 33.878651 177.794785 0.008543 0.028609 +E 4500.000000 50.000000 33.854729 177.758743 0.008491 0.028434 +E 4510.000000 50.000000 33.820492 177.840668 0.008502 0.028463 +E 4520.000000 50.000000 33.776886 177.878494 0.008549 0.028616 +E 4530.000000 50.000000 33.759460 177.852875 0.008536 0.028569 +E 4540.000000 50.000000 33.735455 177.832672 0.008503 0.028457 +E 4550.000000 50.000000 33.714733 177.822540 0.008458 0.028306 +E 4560.000000 50.000000 33.704601 177.872452 0.008378 0.028035 +E 4570.000000 50.000000 33.678074 177.917725 0.008258 0.027632 +E 4580.000000 50.000000 33.636559 177.929611 0.008084 0.027044 +E 4590.000000 50.000000 33.626522 177.889389 0.007945 0.026581 +E 4600.000000 50.000000 33.593567 177.907730 0.008080 0.027029 +E 4610.000000 50.000000 33.553200 177.946259 0.008294 0.027738 +E 4620.000000 50.000000 33.555958 177.925949 0.008352 0.027933 +E 4630.000000 50.000000 33.526741 177.933365 0.008169 0.027319 +E 4640.000000 50.000000 33.501175 177.989868 0.007871 0.026321 +E 4650.000000 50.000000 33.486938 177.987671 0.007766 0.025970 +E 4660.000000 50.000000 33.454765 177.968781 0.007875 0.026329 +E 4670.000000 50.000000 33.423378 177.969543 0.008038 0.026870 +E 4680.000000 50.000000 33.424896 177.995758 0.008088 0.027038 +E 4690.000000 50.000000 33.397842 177.987778 0.008123 0.027155 +E 4700.000000 50.000000 33.370041 178.043732 0.008289 0.027704 +E 4710.000000 50.000000 33.371391 177.989059 0.008410 0.028110 +E 4720.000000 50.000000 33.349464 177.979721 0.008320 0.027810 +E 4730.000000 50.000000 33.303574 178.023407 0.008160 0.027270 +E 4740.000000 50.000000 33.277538 178.056015 0.008104 0.027080 +E 4750.000000 50.000000 33.270405 178.081085 0.008131 0.027170 +E 4760.000000 50.000000 33.254078 178.071442 0.008103 0.027074 +E 4770.000000 50.000000 33.221539 178.061813 0.008048 0.026887 +E 4780.000000 50.000000 33.193127 178.070435 0.007979 0.026654 +E 4790.000000 50.000000 33.195091 178.042831 0.007900 0.026393 +E 4800.000000 50.000000 33.166759 178.091614 0.007892 0.026364 +E 4810.000000 50.000000 33.138008 178.077972 0.007881 0.026324 +E 4820.000000 50.000000 33.122341 178.086288 0.007885 0.026338 +E 4830.000000 50.000000 33.094799 178.076431 0.007863 0.026261 +E 4840.000000 50.000000 33.079639 178.083008 0.007773 0.025960 +E 4850.000000 50.000000 33.052357 178.074081 0.007426 0.024798 +E 4860.000000 50.000000 33.053864 178.116150 0.006531 0.021810 +E 4870.000000 50.000000 33.058132 178.156006 0.006205 0.020724 +E 4880.000000 50.000000 33.017319 178.120804 0.007143 0.023852 +E 4890.000000 50.000000 33.003746 178.134476 0.007605 0.025395 +E 4900.000000 50.000000 32.984283 178.176758 0.007594 0.025357 +E 4910.000000 50.000000 32.978283 178.214996 0.007525 0.025128 +E 4920.000000 50.000000 32.956657 178.199829 0.007550 0.025209 +E 4930.000000 50.000000 32.933525 178.173294 0.007532 0.025147 +E 4940.000000 50.000000 32.913940 178.151413 0.007478 0.024967 +E 4950.000000 50.000000 32.911964 178.157059 0.007560 0.025242 +E 4960.000000 50.000000 32.881531 178.161972 0.007611 0.025408 +E 4970.000000 50.000000 32.858822 178.179855 0.007557 0.025225 +E 4980.000000 50.000000 32.864136 178.176926 0.007472 0.024945 +E 4990.000000 50.000000 32.834663 178.213440 0.007385 0.024651 +E 5000.000000 50.000000 32.815258 178.205078 0.007355 0.024551 +E 5010.000000 50.000000 32.805588 178.226822 0.007342 0.024509 +E 5020.000000 50.000000 32.784969 178.242462 0.007298 0.024360 +E 5030.000000 50.000000 32.769585 178.250000 0.007298 0.024359 +E 5040.000000 50.000000 32.760220 178.276047 0.007320 0.024434 +E 5050.000000 50.000000 32.740063 178.263199 0.007338 0.024492 +E 5060.000000 50.000000 32.739769 178.250778 0.007308 0.024392 +E 5070.000000 50.000000 32.711628 178.240463 0.007294 0.024346 +E 5080.000000 50.000000 32.683125 178.244003 0.007317 0.024419 +E 5090.000000 50.000000 32.666801 178.249939 0.007316 0.024415 +E 5100.000000 50.000000 32.655312 178.252335 0.007309 0.024391 +E 5110.000000 50.000000 32.653587 178.280502 0.007276 0.024284 +E 5120.000000 50.000000 32.633240 178.288803 0.007236 0.024150 +E 5130.000000 50.000000 32.620815 178.278183 0.007227 0.024118 +E 5140.000000 50.000000 32.612942 178.302292 0.007218 0.024088 +E 5150.000000 50.000000 32.608746 178.300354 0.007203 0.024040 +E 5160.000000 50.000000 32.593616 178.288010 0.007178 0.023958 +E 5170.000000 50.000000 32.565174 178.243484 0.007169 0.023924 +E 5180.000000 50.000000 32.541145 178.303680 0.007154 0.023874 +E 5190.000000 50.000000 32.541000 178.376343 0.007128 0.023789 +E 5200.000000 50.000000 32.530983 178.324631 0.007089 0.023657 +E 5210.000000 50.000000 32.503273 178.303894 0.007071 0.023596 +E 5220.000000 50.000000 32.500504 178.319885 0.007060 0.023561 +E 5230.000000 50.000000 32.490776 178.337082 0.007041 0.023498 +E 5240.000000 50.000000 32.474197 178.314697 0.007028 0.023452 +E 5250.000000 50.000000 32.454178 178.329391 0.007001 0.023364 +E 5260.000000 50.000000 32.433426 178.377777 0.006956 0.023212 +E 5270.000000 50.000000 32.432270 178.394836 0.006893 0.023001 +E 5280.000000 50.000000 32.416321 178.371719 0.006879 0.022956 +E 5290.000000 50.000000 32.397884 178.329987 0.006877 0.022948 +E 5300.000000 50.000000 32.386414 178.365219 0.006860 0.022890 +E 5310.000000 50.000000 32.389595 178.374222 0.006853 0.022872 +E 5320.000000 50.000000 32.365284 178.371201 0.006850 0.022858 +E 5330.000000 50.000000 32.349899 178.379410 0.006802 0.022698 +E 5340.000000 50.000000 32.332909 178.370285 0.006744 0.022504 +E 5350.000000 50.000000 32.331123 178.355042 0.006726 0.022445 +E 5360.000000 50.000000 32.339958 178.382767 0.006710 0.022394 +E 5370.000000 50.000000 32.321171 178.413589 0.006697 0.022351 +E 5380.000000 50.000000 32.305557 178.371643 0.006671 0.022263 +E 5390.000000 50.000000 32.284027 178.378860 0.006625 0.022109 +E 5400.000000 50.000000 32.265327 178.409409 0.006606 0.022045 +E 5410.000000 50.000000 32.254440 178.379242 0.006589 0.021991 +E 5420.000000 50.000000 32.247478 178.380157 0.006543 0.021837 +E 5430.000000 50.000000 32.230713 178.423462 0.006493 0.021669 +E 5440.000000 50.000000 32.222755 178.454376 0.006469 0.021590 +E 5450.000000 50.000000 32.211956 178.415009 0.006454 0.021540 +E 5460.000000 50.000000 32.204159 178.443283 0.006454 0.021540 +E 5470.000000 50.000000 32.189476 178.450058 0.006445 0.021512 +E 5480.000000 50.000000 32.174313 178.417694 0.006398 0.021353 +E 5490.000000 50.000000 32.167347 178.449020 0.006360 0.021226 +E 5500.000000 50.000000 32.159786 178.418228 0.006353 0.021204 +E 5510.000000 50.000000 32.154179 178.433014 0.006353 0.021206 +E 5520.000000 50.000000 32.131420 178.494858 0.006352 0.021202 +E 5530.000000 50.000000 32.117016 178.456589 0.006333 0.021137 +E 5540.000000 50.000000 32.111961 178.439270 0.006304 0.021042 +E 5550.000000 50.000000 32.090481 178.461349 0.006297 0.021017 +E 5560.000000 50.000000 32.070087 178.492432 0.006293 0.021005 +E 5570.000000 50.000000 32.084675 178.481674 0.006266 0.020916 +E 5580.000000 50.000000 32.075497 178.477325 0.006251 0.020867 +E 5590.000000 50.000000 32.058544 178.475708 0.006249 0.020862 +E 5600.000000 50.000000 32.049965 178.445801 0.006231 0.020802 +E 5610.000000 50.000000 32.045315 178.486755 0.006199 0.020694 +E 5620.000000 50.000000 32.034653 178.537750 0.006188 0.020658 +E 5630.000000 50.000000 32.024136 178.493912 0.006180 0.020631 +E 5640.000000 50.000000 32.017735 178.494827 0.006158 0.020558 +E 5650.000000 50.000000 31.994675 178.510040 0.006136 0.020484 +E 5660.000000 50.000000 31.980265 178.466705 0.006116 0.020418 +E 5670.000000 50.000000 31.981194 178.501358 0.006049 0.020195 +E 5680.000000 50.000000 31.962719 178.548798 0.005942 0.019837 +E 5690.000000 50.000000 31.954851 178.543839 0.005821 0.019435 +E 5700.000000 50.000000 31.949465 178.515366 0.005653 0.018873 +E 5710.000000 50.000000 31.932108 178.530457 0.005573 0.018608 +E 5720.000000 50.000000 31.926071 178.546982 0.005530 0.018463 +E 5730.000000 50.000000 31.921820 178.524109 0.005477 0.018288 +E 5740.000000 50.000000 31.910234 178.541550 0.005381 0.017969 +E 5750.000000 50.000000 31.897858 178.547363 0.005326 0.017784 +E 5760.000000 50.000000 31.892660 178.572769 0.005289 0.017662 +E 5770.000000 50.000000 31.893074 178.592056 0.005188 0.017324 +E 5780.000000 50.000000 31.881233 178.568100 0.005116 0.017085 +E 5790.000000 50.000000 31.871187 178.565811 0.005110 0.017066 +E 5800.000000 50.000000 31.858643 178.562546 0.005079 0.016961 +E 5810.000000 50.000000 31.851633 178.557404 0.004954 0.016545 +E 5820.000000 50.000000 31.845757 178.565018 0.004825 0.016116 +E 5830.000000 50.000000 31.832531 178.567398 0.004945 0.016514 +E 5840.000000 50.000000 31.824835 178.594696 0.005177 0.017292 +E 5850.000000 50.000000 31.804821 178.566086 0.005147 0.017189 +E 5860.000000 50.000000 31.802898 178.552200 0.005170 0.017267 +E 5870.000000 50.000000 31.798349 178.589111 0.005222 0.017441 +E 5880.000000 50.000000 31.785278 178.619278 0.005177 0.017293 +E 5890.000000 50.000000 31.783150 178.615356 0.005161 0.017240 +E 5900.000000 50.000000 31.773708 178.580750 0.005332 0.017812 +E 5910.000000 50.000000 31.761044 178.610580 0.005445 0.018188 +E 5920.000000 50.000000 31.753210 178.634888 0.005448 0.018201 +E 5930.000000 50.000000 31.749580 178.611038 0.005362 0.017912 +E 5940.000000 50.000000 31.738647 178.600250 0.005283 0.017649 +E 5950.000000 50.000000 31.739586 178.636856 0.005221 0.017443 +E 5960.000000 50.000000 31.728695 178.629730 0.005227 0.017463 +E 5970.000000 50.000000 31.707270 178.585663 0.005316 0.017761 +E 5980.000000 50.000000 31.705153 178.605759 0.005366 0.017928 +E 5990.000000 50.000000 31.707287 178.604828 0.005369 0.017939 +E 6000.000000 50.000000 31.701927 178.645386 0.005372 0.017949 +E 6010.000000 50.000000 31.673128 178.650726 0.005341 0.017846 +E 6020.000000 50.000000 31.670223 178.648499 0.005280 0.017644 +E 6030.000000 50.000000 31.669506 178.668716 0.005204 0.017388 +E 6040.000000 50.000000 31.657143 178.656250 0.005185 0.017327 +E 6050.000000 50.000000 31.665346 178.651489 0.005289 0.017676 +E 6060.000000 50.000000 31.645723 178.656143 0.005322 0.017786 +E 6070.000000 50.000000 31.630142 178.640732 0.005331 0.017814 +E 6080.000000 50.000000 31.635567 178.642136 0.005351 0.017884 +E 6090.000000 50.000000 31.631227 178.664139 0.005371 0.017951 +E 6100.000000 50.000000 31.616478 178.658173 0.005353 0.017890 +E 6110.000000 50.000000 31.606585 178.671616 0.005328 0.017807 +E 6120.000000 50.000000 31.595495 178.655640 0.005316 0.017767 +E 6130.000000 50.000000 31.588282 178.630539 0.005304 0.017729 +E 6140.000000 50.000000 31.581360 178.675568 0.005291 0.017684 +E 6150.000000 50.000000 31.576214 178.677567 0.005322 0.017791 +E 6160.000000 50.000000 31.562113 178.674561 0.005374 0.017963 +E 6170.000000 50.000000 31.563011 178.682999 0.005401 0.018054 +E 6180.000000 50.000000 31.564058 178.701416 0.005413 0.018097 +E 6190.000000 50.000000 31.550699 178.715561 0.005434 0.018167 +E 6200.000000 50.000000 31.530180 178.676895 0.005413 0.018096 +E 6210.000000 50.000000 31.535299 178.685272 0.005416 0.018107 +E 6220.000000 50.000000 31.525053 178.683365 0.005440 0.018188 +E 6230.000000 50.000000 31.511126 178.671997 0.005413 0.018096 +E 6240.000000 50.000000 31.504509 178.693909 0.005398 0.018046 +E 6250.000000 50.000000 31.516411 178.711594 0.005442 0.018195 +E 6260.000000 50.000000 31.519581 178.717346 0.005476 0.018312 +E 6270.000000 50.000000 31.495024 178.718262 0.005483 0.018334 +E 6280.000000 50.000000 31.482388 178.698730 0.005480 0.018324 +E 6290.000000 50.000000 31.495792 178.674896 0.005478 0.018321 +E 6300.000000 50.000000 31.486073 178.681992 0.005483 0.018337 +E 6310.000000 50.000000 31.473055 178.706879 0.005515 0.018442 +E 6320.000000 50.000000 31.463509 178.748154 0.005525 0.018477 +E 6330.000000 50.000000 31.461937 178.744781 0.005504 0.018409 +E 6340.000000 50.000000 31.455236 178.718063 0.005514 0.018441 +E 6350.000000 50.000000 31.442385 178.746262 0.005515 0.018446 +E 6360.000000 50.000000 31.434116 178.731537 0.005500 0.018396 +E 6370.000000 50.000000 31.428495 178.718735 0.005491 0.018366 +E 6380.000000 50.000000 31.430550 178.727661 0.005498 0.018389 +E 6390.000000 50.000000 31.415495 178.757584 0.005499 0.018394 +E 6400.000000 50.000000 31.416590 178.753250 0.005501 0.018401 +E 6410.000000 50.000000 31.401546 178.721848 0.005511 0.018435 +E 6420.000000 50.000000 31.396229 178.722305 0.005527 0.018488 +E 6430.000000 50.000000 31.400917 178.757202 0.005519 0.018465 +E 6440.000000 50.000000 31.390093 178.760239 0.005521 0.018471 +E 6450.000000 50.000000 31.394989 178.764816 0.005532 0.018510 +E 6460.000000 50.000000 31.389410 178.776215 0.005530 0.018503 +E 6470.000000 50.000000 31.373905 178.806900 0.005527 0.018493 +E 6480.000000 50.000000 31.367498 178.772614 0.005522 0.018477 +E 6490.000000 50.000000 31.373634 178.789993 0.005516 0.018457 +E 6500.000000 50.000000 31.358833 178.772156 0.005513 0.018449 +E 6510.000000 50.000000 31.348343 178.757248 0.005516 0.018457 +E 6520.000000 50.000000 31.350481 178.780930 0.005512 0.018445 +E 6530.000000 50.000000 31.337910 178.771011 0.005517 0.018461 +E 6540.000000 50.000000 31.335159 178.773285 0.005568 0.018635 +E 6550.000000 50.000000 31.317465 178.757309 0.004951 0.016570 +E 6560.000000 50.000000 31.313301 178.766769 0.003475 0.011629 +E 6570.000000 50.000000 31.312868 178.775757 0.003343 0.011187 +E 6580.000000 50.000000 31.313051 178.795670 0.004564 0.015276 +E 6590.000000 50.000000 31.299414 178.787643 0.005477 0.018330 +E 6600.000000 50.000000 31.294270 178.781158 0.005510 0.018444 +E 6610.000000 50.000000 31.293829 178.792282 0.005515 0.018459 +E 6620.000000 50.000000 31.288885 178.827194 0.005502 0.018417 +E 6630.000000 50.000000 31.280191 178.829041 0.005495 0.018393 +E 6640.000000 50.000000 31.280596 178.788666 0.005496 0.018398 +E 6650.000000 50.000000 31.276859 178.805725 0.005498 0.018405 +E 6660.000000 50.000000 31.273216 178.801697 0.005498 0.018406 +E 6670.000000 50.000000 31.263517 178.810226 0.005499 0.018410 +E 6680.000000 50.000000 31.257700 178.820465 0.005494 0.018394 +E 6690.000000 50.000000 31.252985 178.791031 0.005481 0.018352 +E 6700.000000 50.000000 31.237257 178.784622 0.005470 0.018315 +E 6710.000000 50.000000 31.233891 178.811981 0.005472 0.018321 +E 6720.000000 50.000000 31.246092 178.817032 0.005461 0.018286 +E 6730.000000 50.000000 31.242540 178.819656 0.005459 0.018281 +E 6740.000000 50.000000 31.224094 178.826248 0.005470 0.018319 +E 6750.000000 50.000000 31.227314 178.826965 0.005477 0.018341 +E 6760.000000 50.000000 31.222666 178.781754 0.005478 0.018347 +E 6770.000000 50.000000 31.208687 178.797501 0.005475 0.018334 +E 6780.000000 50.000000 31.195593 178.856873 0.005465 0.018302 +E 6790.000000 50.000000 31.197107 178.846725 0.005453 0.018263 +E 6800.000000 50.000000 31.204855 178.841309 0.005445 0.018237 +E 6810.000000 50.000000 31.191763 178.875397 0.005446 0.018242 +E 6820.000000 50.000000 31.182716 178.829514 0.005448 0.018248 +E 6830.000000 50.000000 31.181673 178.817566 0.005444 0.018235 +E 6840.000000 50.000000 31.195156 178.855270 0.005434 0.018203 +E 6850.000000 50.000000 31.188284 178.819061 0.005414 0.018138 +E 6860.000000 50.000000 31.168678 178.792755 0.005416 0.018143 +E 6870.000000 50.000000 31.162106 178.841248 0.005431 0.018193 +E 6880.000000 50.000000 31.143251 178.851349 0.005444 0.018239 +E 6890.000000 50.000000 31.159239 178.840332 0.005443 0.018237 +E 6900.000000 50.000000 31.155603 178.849121 0.005448 0.018254 +E 6910.000000 50.000000 31.135420 178.835342 0.005449 0.018256 +E 6920.000000 50.000000 31.137144 178.834732 0.005444 0.018240 +E 6930.000000 50.000000 31.126457 178.872818 0.005443 0.018239 +E 6940.000000 50.000000 31.120905 178.875870 0.005437 0.018218 +E 6950.000000 50.000000 31.117241 178.866974 0.005443 0.018237 +E 6960.000000 50.000000 31.112432 178.850266 0.005445 0.018247 +E 6970.000000 50.000000 31.123388 178.835358 0.005434 0.018211 +E 6980.000000 50.000000 31.104124 178.896210 0.005428 0.018192 +E 6990.000000 50.000000 31.098114 178.906235 0.005433 0.018208 +E 7000.000000 50.000000 31.095085 178.892853 0.005444 0.018244 +E 7010.000000 50.000000 31.081078 178.900528 0.005455 0.018282 +E 7020.000000 50.000000 31.074520 178.876419 0.005457 0.018288 +E 7030.000000 50.000000 31.070480 178.867905 0.005457 0.018288 +E 7040.000000 50.000000 31.064819 178.881714 0.005468 0.018328 +E 7050.000000 50.000000 31.055788 178.861679 0.005479 0.018363 +E 7060.000000 50.000000 31.059832 178.903122 0.005476 0.018357 +E 7070.000000 50.000000 31.063160 178.913803 0.005455 0.018287 +E 7080.000000 50.000000 31.048452 178.908035 0.005462 0.018310 +E 7090.000000 50.000000 31.045784 178.881073 0.005476 0.018357 +E 7100.000000 50.000000 31.034851 178.903595 0.005491 0.018408 +E 7110.000000 50.000000 31.028952 178.900787 0.005496 0.018423 +E 7120.000000 50.000000 31.040518 178.891785 0.005491 0.018410 +E 7130.000000 50.000000 31.037481 178.908737 0.005492 0.018415 +E 7140.000000 50.000000 31.022884 178.911209 0.005491 0.018410 +E 7150.000000 50.000000 31.013515 178.913055 0.005485 0.018388 +E 7160.000000 50.000000 31.029650 178.893204 0.005486 0.018395 +E 7170.000000 50.000000 31.021046 178.890305 0.005508 0.018467 +E 7180.000000 50.000000 31.014547 178.903992 0.005509 0.018472 +E 7190.000000 50.000000 31.013401 178.922165 0.005510 0.018475 +E 7200.000000 50.000000 31.013029 178.914078 0.005517 0.018501 +E 7210.000000 50.000000 30.987230 178.871231 0.005535 0.018560 +E 7220.000000 50.000000 30.987289 178.896912 0.005536 0.018565 +E 7230.000000 50.000000 30.995527 178.943802 0.005547 0.018602 +E 7240.000000 50.000000 30.992121 178.933716 0.005544 0.018593 +E 7250.000000 50.000000 30.997414 178.908096 0.005521 0.018516 +E 7260.000000 50.000000 30.986610 178.958221 0.005500 0.018448 +E 7270.000000 50.000000 30.976078 178.907928 0.005516 0.018502 +E 7280.000000 50.000000 30.985359 178.954025 0.005519 0.018512 +E 7290.000000 50.000000 30.958941 178.912079 0.005516 0.018502 +E 7300.000000 50.000000 30.955441 178.881165 0.005526 0.018534 +E 7310.000000 50.000000 30.970018 178.934326 0.005517 0.018508 +E 7320.000000 50.000000 30.967836 178.925491 0.005526 0.018537 +E 7330.000000 50.000000 30.942551 178.932831 0.005554 0.018631 +E 7340.000000 50.000000 30.942844 178.943832 0.005549 0.018616 +E 7350.000000 50.000000 30.944115 178.946564 0.005520 0.018518 +E 7360.000000 50.000000 30.958519 178.925674 0.005522 0.018526 +E 7370.000000 50.000000 30.949354 178.926773 0.005545 0.018603 +E 7380.000000 50.000000 30.937155 178.950180 0.005586 0.018741 +E 7390.000000 50.000000 30.918215 178.950317 0.005610 0.018820 +E 7400.000000 50.000000 30.925596 178.967773 0.005587 0.018745 +E 7410.000000 50.000000 30.929365 178.971481 0.005606 0.018811 +E 7420.000000 50.000000 30.913601 178.964386 0.005651 0.018961 +E 7430.000000 50.000000 30.912067 178.987091 0.005668 0.019020 +E 7440.000000 50.000000 30.908552 178.966232 0.005673 0.019035 +E 7450.000000 50.000000 30.904566 178.964752 0.005681 0.019063 +E 7460.000000 50.000000 30.905048 178.952591 0.005684 0.019075 +E 7470.000000 50.000000 30.882610 178.965622 0.005671 0.019030 +E 7480.000000 50.000000 30.888674 179.001068 0.005666 0.019013 +E 7490.000000 50.000000 30.900387 179.001816 0.005685 0.019079 +E 7500.000000 50.000000 30.888287 178.958954 0.005691 0.019101 +E 7510.000000 50.000000 30.879602 178.974899 0.005694 0.019108 +E 7520.000000 50.000000 30.897343 178.977722 0.005729 0.019228 +E 7530.000000 50.000000 30.867914 178.978622 0.005752 0.019306 +E 7540.000000 50.000000 30.862309 178.995621 0.005724 0.019212 +E 7550.000000 50.000000 30.867502 178.991394 0.005734 0.019245 +E 7560.000000 50.000000 30.870747 178.985535 0.005744 0.019281 +E 7570.000000 50.000000 30.885315 178.955658 0.005730 0.019234 +E 7580.000000 50.000000 30.873945 178.966553 0.005723 0.019211 +E 7590.000000 50.000000 30.865316 178.983231 0.005725 0.019217 +E 7600.000000 50.000000 30.862595 178.990982 0.005769 0.019367 +E 7610.000000 50.000000 30.852257 178.983643 0.005816 0.019523 +E 7620.000000 50.000000 30.852055 179.004578 0.005853 0.019648 +E 7630.000000 50.000000 30.847763 179.021774 0.005839 0.019602 +E 7640.000000 50.000000 30.853325 179.032272 0.005827 0.019563 +E 7650.000000 50.000000 30.849291 179.008224 0.005848 0.019635 +E 7660.000000 50.000000 30.840883 178.985535 0.005887 0.019767 +E 7670.000000 50.000000 30.817810 178.953033 0.005945 0.019961 +E 7680.000000 50.000000 30.833277 178.978348 0.005932 0.019918 +E 7690.000000 50.000000 30.846901 179.021576 0.005866 0.019698 +E 7700.000000 50.000000 30.823551 179.026459 0.005848 0.019637 +E 7710.000000 50.000000 30.815535 179.000061 0.005896 0.019797 +E 7720.000000 50.000000 30.825666 178.986099 0.005962 0.020020 +E 7730.000000 50.000000 30.828180 179.017868 0.006004 0.020164 +E 7740.000000 50.000000 30.818300 179.036270 0.006017 0.020206 +E 7750.000000 50.000000 30.807564 179.034576 0.006044 0.020298 +E 7760.000000 50.000000 30.808054 179.010422 0.006079 0.020416 +E 7770.000000 50.000000 30.816341 179.025467 0.006099 0.020484 +E 7780.000000 50.000000 30.806213 179.053818 0.006094 0.020467 +E 7790.000000 50.000000 30.803080 179.024551 0.006056 0.020341 +E 7800.000000 50.000000 30.811068 179.044952 0.006048 0.020315 +E 7810.000000 50.000000 30.794956 179.032745 0.006102 0.020495 +E 7820.000000 50.000000 30.781927 178.995163 0.006136 0.020611 +E 7830.000000 50.000000 30.783207 179.023819 0.006145 0.020639 +E 7840.000000 50.000000 30.780619 179.049408 0.006174 0.020737 +E 7850.000000 50.000000 30.779089 179.035019 0.006222 0.020899 +E 7860.000000 50.000000 30.790827 179.008118 0.006247 0.020987 +E 7870.000000 50.000000 30.782684 179.041885 0.006247 0.020985 +E 7880.000000 50.000000 30.778803 179.055252 0.006236 0.020948 +E 7890.000000 50.000000 30.771376 179.044342 0.006253 0.021005 +E 7900.000000 50.000000 30.753504 179.085953 0.006289 0.021125 +E 7910.000000 50.000000 30.758619 179.059601 0.006295 0.021146 +E 7920.000000 50.000000 30.767996 179.037964 0.006310 0.021198 +E 7930.000000 50.000000 30.762117 179.055832 0.006323 0.021245 +E 7940.000000 50.000000 30.754086 179.031799 0.006311 0.021202 +E 7950.000000 50.000000 30.751663 179.054153 0.006316 0.021220 +E 7960.000000 50.000000 30.756567 179.039108 0.006351 0.021340 +E 7970.000000 50.000000 30.766327 179.028778 0.006382 0.021446 +E 7980.000000 50.000000 30.734531 179.097366 0.006416 0.021556 +E 7990.000000 50.000000 30.733833 179.048767 0.006430 0.021603 +E 8000.000000 50.000000 30.739023 179.049118 0.006423 0.021584 +E 8010.000000 50.000000 30.737614 179.067413 0.006415 0.021557 +E 8020.000000 50.000000 30.736736 179.026779 0.006460 0.021707 +E 8030.000000 50.000000 30.741899 179.041321 0.006497 0.021835 +E 8040.000000 50.000000 30.729853 179.065460 0.006500 0.021844 +E 8050.000000 50.000000 30.728659 179.052490 0.006488 0.021802 +E 8060.000000 50.000000 30.724928 179.032715 0.006508 0.021873 +E 8070.000000 50.000000 30.718481 179.031311 0.006571 0.022082 +E 8080.000000 50.000000 30.707914 179.064285 0.006603 0.022190 +E 8090.000000 50.000000 30.712387 179.078629 0.006562 0.022053 +E 8100.000000 50.000000 30.699265 179.071930 0.006575 0.022096 +E 8110.000000 50.000000 30.703066 179.085846 0.006610 0.022215 +E 8120.000000 50.000000 30.703556 179.065674 0.006655 0.022367 +E 8130.000000 50.000000 30.690233 179.027130 0.006655 0.022369 +E 8140.000000 50.000000 30.705050 179.044785 0.006614 0.022232 +E 8150.000000 50.000000 30.701036 179.069855 0.006639 0.022315 +E 8160.000000 50.000000 30.700886 179.050354 0.006688 0.022480 +E 8170.000000 50.000000 30.686674 179.093216 0.006721 0.022591 +E 8180.000000 50.000000 30.686453 179.087189 0.006705 0.022540 +E 8190.000000 50.000000 30.692768 179.087189 0.006695 0.022507 +E 8200.000000 50.000000 30.678839 179.113998 0.006725 0.022607 +E 8210.000000 50.000000 30.687546 179.103195 0.006758 0.022717 +E 8220.000000 50.000000 30.693928 179.045837 0.006783 0.022804 +E 8230.000000 50.000000 30.682886 179.088181 0.006764 0.022741 +E 8240.000000 50.000000 30.694813 179.129837 0.006750 0.022694 +E 8250.000000 50.000000 30.677614 179.112198 0.006799 0.022858 +E 8260.000000 50.000000 30.671463 179.083237 0.006845 0.023014 +E 8270.000000 50.000000 30.671049 179.075500 0.006832 0.022971 +E 8280.000000 50.000000 30.660326 179.109497 0.006806 0.022882 +E 8290.000000 50.000000 30.661438 179.084335 0.006809 0.022892 +E 8300.000000 50.000000 30.661055 179.067902 0.006874 0.023113 +E 8310.000000 50.000000 30.670876 179.029739 0.006910 0.023236 +E 8320.000000 50.000000 30.660870 179.060242 0.006899 0.023198 +E 8330.000000 50.000000 30.657442 179.129333 0.006867 0.023089 +E 8340.000000 50.000000 30.655273 179.113113 0.006850 0.023034 +E 8350.000000 50.000000 30.648403 179.113770 0.006888 0.023161 +E 8360.000000 50.000000 30.645498 179.072220 0.006945 0.023353 +E 8370.000000 50.000000 30.634562 179.122345 0.006934 0.023315 +E 8380.000000 50.000000 30.630827 179.100021 0.006918 0.023262 +E 8390.000000 50.000000 30.646584 179.118225 0.006932 0.023313 +E 8400.000000 50.000000 30.629320 179.127304 0.006997 0.023530 +E 8410.000000 50.000000 30.635868 179.131744 0.007026 0.023628 +E 8420.000000 50.000000 30.636202 179.120728 0.007012 0.023583 +E 8430.000000 50.000000 30.620808 179.107208 0.006993 0.023516 +E 8440.000000 50.000000 30.626461 179.116043 0.006996 0.023529 +E 8450.000000 50.000000 30.621727 179.124130 0.007032 0.023651 +E 8460.000000 50.000000 30.629612 179.115128 0.007054 0.023723 +E 8470.000000 50.000000 30.618586 179.124008 0.007040 0.023676 +E 8480.000000 50.000000 30.617851 179.133652 0.007011 0.023581 +E 8490.000000 50.000000 30.617220 179.130280 0.007060 0.023746 +E 8500.000000 50.000000 30.621016 179.105408 0.007184 0.024163 +E 8510.000000 50.000000 30.607286 179.103149 0.007236 0.024338 +E 8520.000000 50.000000 30.613688 179.117966 0.007087 0.023839 +E 8530.000000 50.000000 30.615820 179.096146 0.006928 0.023303 +E 8540.000000 50.000000 30.600988 179.087463 0.006905 0.023226 +E 8550.000000 50.000000 30.598515 179.135849 0.007000 0.023546 +E 8560.000000 50.000000 30.582178 179.142242 0.007086 0.023836 +E 8570.000000 50.000000 30.577772 179.108612 0.007115 0.023932 +E 8580.000000 50.000000 30.595299 179.072876 0.007076 0.023804 +E 8590.000000 50.000000 30.584257 179.115494 0.007061 0.023753 +E 8600.000000 50.000000 30.591312 179.150436 0.007082 0.023825 +E 8610.000000 50.000000 30.585142 179.129028 0.007148 0.024045 +E 8620.000000 50.000000 30.583723 179.152725 0.007179 0.024151 +E 8630.000000 50.000000 30.582855 179.130951 0.007179 0.024150 +E 8640.000000 50.000000 30.563791 179.126892 0.007142 0.024025 +E 8650.000000 50.000000 30.568245 179.161285 0.007109 0.023917 +E 8660.000000 50.000000 30.585251 179.109329 0.007138 0.024015 +E 8670.000000 50.000000 30.573238 179.124008 0.007197 0.024213 +E 8680.000000 50.000000 30.563005 179.115128 0.007209 0.024253 +E 8690.000000 50.000000 30.543839 179.141129 0.007208 0.024247 +E 8700.000000 50.000000 30.567396 179.119522 0.007181 0.024159 +E 8710.000000 50.000000 30.570415 179.116257 0.007192 0.024197 +E 8720.000000 50.000000 30.562603 179.131226 0.007233 0.024336 +E 8730.000000 50.000000 30.568039 179.116669 0.007235 0.024344 +E 8740.000000 50.000000 30.562223 179.092163 0.007210 0.024259 +E 8750.000000 50.000000 30.591908 179.143906 0.007177 0.024152 +E 8760.000000 50.000000 30.569475 179.156967 0.007197 0.024216 +E 8770.000000 50.000000 30.542582 179.145096 0.007243 0.024371 +E 8780.000000 50.000000 30.537693 179.144455 0.007271 0.024463 +E 8790.000000 50.000000 30.550413 179.127014 0.007257 0.024418 +E 8800.000000 50.000000 30.544670 179.162796 0.007257 0.024420 +E 8810.000000 50.000000 30.540966 179.157425 0.007286 0.024517 +E 8820.000000 50.000000 30.536751 179.153641 0.007315 0.024616 +E 8830.000000 50.000000 30.531778 179.158188 0.007348 0.024725 +E 8840.000000 50.000000 30.527790 179.113327 0.007355 0.024749 +E 8850.000000 50.000000 30.522085 179.165833 0.007368 0.024793 +E 8860.000000 50.000000 30.541330 179.174347 0.007348 0.024726 +E 8870.000000 50.000000 30.532234 179.133408 0.007331 0.024670 +E 8880.000000 50.000000 30.534040 179.117844 0.007335 0.024686 +E 8890.000000 50.000000 30.532904 179.158615 0.007363 0.024778 +E 8900.000000 50.000000 30.530916 179.176270 0.007389 0.024866 +E 8910.000000 50.000000 30.533978 179.172134 0.007411 0.024943 +E 8920.000000 50.000000 30.530664 179.127396 0.007410 0.024940 +E 8930.000000 50.000000 30.519501 179.188400 0.007408 0.024933 +E 8940.000000 50.000000 30.508657 179.227509 0.007418 0.024965 +E 8950.000000 50.000000 30.508007 179.168793 0.007443 0.025048 +E 8960.000000 50.000000 30.515638 179.212845 0.007469 0.025138 +E 8970.000000 50.000000 30.523994 179.232330 0.007477 0.025165 +E 8980.000000 50.000000 30.498497 179.157867 0.007504 0.025257 +E 8990.000000 50.000000 30.509926 179.183640 0.007490 0.025209 +E 9000.000000 50.000000 30.513290 179.199265 0.007515 0.025294 +E 9010.000000 50.000000 30.509066 179.190979 0.007542 0.025384 +E 9020.000000 50.000000 30.511093 179.202515 0.007541 0.025381 +E 9030.000000 50.000000 30.497572 179.183090 0.007577 0.025502 +E 9040.000000 50.000000 30.511177 179.190094 0.007576 0.025502 +E 9050.000000 50.000000 30.502308 179.186401 0.007566 0.025466 +E 9060.000000 50.000000 30.494431 179.193176 0.007595 0.025566 +E 9070.000000 50.000000 30.497997 179.203308 0.007623 0.025661 +E 9080.000000 50.000000 30.481712 179.168427 0.007669 0.025813 +E 9090.000000 50.000000 30.474869 179.182693 0.007707 0.025942 +E 9100.000000 50.000000 30.477306 179.202789 0.007713 0.025962 +E 9110.000000 50.000000 30.473606 179.136215 0.007689 0.025881 +E 9120.000000 50.000000 30.474220 179.139252 0.007707 0.025942 +E 9130.000000 50.000000 30.470589 179.151428 0.007741 0.026057 +E 9140.000000 50.000000 30.474638 179.142715 0.007800 0.026258 +E 9150.000000 50.000000 30.482721 179.187149 0.007798 0.026251 +E 9160.000000 50.000000 30.460855 179.258652 0.007776 0.026176 +E 9170.000000 50.000000 30.441143 179.219116 0.007774 0.026167 +E 9180.000000 50.000000 30.465021 179.191498 0.007767 0.026148 +E 9190.000000 50.000000 30.484411 179.229477 0.007801 0.026264 +E 9200.000000 50.000000 30.458101 179.182724 0.007874 0.026509 +E 9210.000000 50.000000 30.473791 179.193680 0.007899 0.026594 +E 9220.000000 50.000000 30.462534 179.179825 0.007949 0.026760 +E 9230.000000 50.000000 30.457182 179.200012 0.007972 0.026839 +E 9240.000000 50.000000 30.469297 179.250504 0.007975 0.026850 +E 9250.000000 50.000000 30.443869 179.266052 0.007999 0.026929 +E 9260.000000 50.000000 30.460323 179.208130 0.008025 0.027020 +E 9270.000000 50.000000 30.444481 179.212692 0.008068 0.027164 +E 9280.000000 50.000000 30.445839 179.210403 0.008116 0.027327 +E 9290.000000 50.000000 30.455841 179.173477 0.008140 0.027407 +E 9300.000000 50.000000 30.444048 179.173386 0.008157 0.027464 +E 9310.000000 50.000000 30.442221 179.188797 0.008169 0.027503 +E 9320.000000 50.000000 30.446247 179.195267 0.008175 0.027524 +E 9330.000000 50.000000 30.442486 179.160645 0.008206 0.027631 +E 9340.000000 50.000000 30.414869 179.224701 0.008254 0.027791 +E 9350.000000 50.000000 30.436049 179.189468 0.008293 0.027925 +E 9360.000000 50.000000 30.431337 179.180878 0.008345 0.028097 +E 9370.000000 50.000000 30.455574 179.232025 0.008360 0.028151 +E 9380.000000 50.000000 30.428303 179.305588 0.008380 0.028217 +E 9390.000000 50.000000 30.416456 179.263458 0.008403 0.028294 +E 9400.000000 50.000000 30.418194 179.251511 0.008471 0.028524 +E 9410.000000 50.000000 30.420670 179.223785 0.008516 0.028676 +E 9420.000000 50.000000 30.407969 179.201721 0.008562 0.028829 +E 9430.000000 50.000000 30.429398 179.217667 0.008597 0.028950 +E 9440.000000 50.000000 30.439890 179.214020 0.008602 0.028968 +E 9450.000000 50.000000 30.398888 179.230911 0.008646 0.029114 +E 9460.000000 50.000000 30.398935 179.236938 0.008691 0.029267 +E 9470.000000 50.000000 30.420662 179.248352 0.008728 0.029391 +E 9480.000000 50.000000 30.408142 179.229370 0.008783 0.029578 +E 9490.000000 50.000000 30.378168 179.207001 0.008844 0.029780 +E 9500.000000 50.000000 30.392509 179.238129 0.008878 0.029896 +E 9510.000000 50.000000 30.390265 179.231155 0.008926 0.030060 +E 9520.000000 50.000000 30.429123 179.248169 0.008935 0.030094 +E 9530.000000 50.000000 30.399893 179.268631 0.008990 0.030277 +E 9540.000000 50.000000 30.390615 179.229980 0.009075 0.030563 +E 9550.000000 50.000000 30.390547 179.217697 0.009134 0.030762 +E 9560.000000 50.000000 30.392895 179.220276 0.009156 0.030837 +E 9570.000000 50.000000 30.389643 179.230133 0.009183 0.030927 +E 9580.000000 50.000000 30.377737 179.199310 0.009204 0.030997 +E 9590.000000 50.000000 30.380928 179.237137 0.009249 0.031149 +E 9600.000000 50.000000 30.405680 179.291565 0.009282 0.031264 +E 9610.000000 50.000000 30.403437 179.241318 0.009317 0.031380 +E 9620.000000 50.000000 30.383860 179.228180 0.009376 0.031579 +E 9630.000000 50.000000 30.399109 179.259308 0.009414 0.031709 +E 9640.000000 50.000000 30.405298 179.267120 0.009458 0.031857 +E 9650.000000 50.000000 30.402599 179.285736 0.009514 0.032047 +E 9660.000000 50.000000 30.368048 179.371231 0.009558 0.032190 +E 9670.000000 50.000000 30.381384 179.300720 0.009627 0.032428 +E 9680.000000 50.000000 30.388697 179.171829 0.009697 0.032663 +E 9690.000000 50.000000 30.367689 179.240372 0.009755 0.032857 +E 9700.000000 50.000000 30.368181 179.282715 0.009787 0.032966 +E 9710.000000 50.000000 30.350195 179.237717 0.009844 0.033156 +E 9720.000000 50.000000 30.372107 179.215729 0.009907 0.033369 +E 9730.000000 50.000000 30.368996 179.198013 0.009988 0.033643 +E 9740.000000 50.000000 30.375376 179.232712 0.010046 0.033839 +E 9750.000000 50.000000 30.391548 179.277451 0.010072 0.033931 +E 9760.000000 50.000000 30.364988 179.198975 0.010153 0.034199 +E 9770.000000 50.000000 30.326233 179.267090 0.010242 0.034498 +E 9780.000000 50.000000 30.337753 179.191101 0.010277 0.034618 +E 9790.000000 50.000000 30.351171 179.231247 0.010339 0.034828 +E 9800.000000 50.000000 30.371759 179.235565 0.010413 0.035080 +E 9810.000000 50.000000 30.358463 179.245346 0.010506 0.035392 +E 9820.000000 50.000000 30.375275 179.279587 0.010593 0.035685 +E 9830.000000 50.000000 30.354204 179.228912 0.010642 0.035850 +E 9840.000000 50.000000 30.355606 179.209183 0.010713 0.036092 +E 9850.000000 50.000000 30.335573 179.276886 0.010799 0.036379 +E 9860.000000 50.000000 30.354708 179.243774 0.010864 0.036599 +E 9870.000000 50.000000 30.328585 179.238968 0.010979 0.036985 +E 9880.000000 50.000000 30.325533 179.255768 0.011074 0.037306 +E 9890.000000 50.000000 30.343845 179.306137 0.011131 0.037499 +E 9900.000000 50.000000 30.316839 179.378387 0.011205 0.037747 +E 9910.000000 50.000000 30.322737 179.327591 0.011287 0.038025 +E 9920.000000 50.000000 30.334053 179.270538 0.011382 0.038345 +E 9930.000000 50.000000 30.349192 179.274521 0.011506 0.038765 +E 9940.000000 50.000000 30.335873 179.314056 0.011627 0.039174 +E 9950.000000 50.000000 30.341789 179.262772 0.011695 0.039403 +E 9960.000000 50.000000 30.343061 179.233398 0.011807 0.039780 +E 9970.000000 50.000000 30.329645 179.291138 0.011897 0.040083 +E 9980.000000 50.000000 30.328741 179.268341 0.012044 0.040578 +E 9990.000000 50.000000 30.328070 179.267197 0.012178 0.041030 +E 10000.000000 50.000000 30.328611 179.226379 0.012291 0.041411 +E 10025.000000 50.000000 30.339270 179.299973 0.006073 0.020474 +E 10050.000000 50.000000 30.339325 179.301315 0.005929 0.019987 +E 10075.000000 50.000000 30.333817 179.267303 0.005756 0.019403 +E 10100.000000 50.000000 30.322105 179.272110 0.005623 0.018957 +E 10125.000000 50.000000 30.309557 179.292755 0.005508 0.018568 +E 10150.000000 50.000000 30.315142 179.302734 0.005365 0.018085 +E 10175.000000 50.000000 30.313940 179.291092 0.005238 0.017658 +E 10200.000000 50.000000 30.305952 179.257767 0.005127 0.017282 +E 10225.000000 50.000000 30.307531 179.296371 0.004996 0.016841 +E 10250.000000 50.000000 30.307104 179.332489 0.004878 0.016444 +E 10275.000000 50.000000 30.299210 179.344360 0.004787 0.016137 +E 10300.000000 50.000000 30.292955 179.314941 0.004670 0.015743 +E 10325.000000 50.000000 30.288057 179.277786 0.004548 0.015332 +E 10350.000000 50.000000 30.287609 179.319748 0.004448 0.014995 +E 10375.000000 50.000000 30.285625 179.334183 0.004354 0.014678 +E 10400.000000 50.000000 30.282236 179.322983 0.004266 0.014382 +E 10425.000000 50.000000 30.283077 179.313507 0.004181 0.014095 +E 10450.000000 50.000000 30.283951 179.311157 0.004098 0.013815 +E 10475.000000 50.000000 30.284035 179.323105 0.004017 0.013541 +E 10500.000000 50.000000 30.275732 179.318069 0.003943 0.013293 +E 10525.000000 50.000000 30.265938 179.308975 0.003875 0.013061 +E 10550.000000 50.000000 30.265594 179.313553 0.003808 0.012836 +E 10575.000000 50.000000 30.266068 179.326279 0.003748 0.012636 +E 10600.000000 50.000000 30.267179 179.345642 0.003695 0.012457 +E 10625.000000 50.000000 30.262539 179.342224 0.003621 0.012207 +E 10650.000000 50.000000 30.258621 179.335022 0.003557 0.011990 +E 10675.000000 50.000000 30.256289 179.323181 0.003508 0.011825 +E 10700.000000 50.000000 30.253208 179.340134 0.003445 0.011614 +E 10725.000000 50.000000 30.250164 179.358612 0.003385 0.011411 +E 10750.000000 50.000000 30.247906 179.349945 0.003345 0.011276 +E 10775.000000 50.000000 30.245653 179.346436 0.003285 0.011073 +E 10800.000000 50.000000 30.243423 179.346420 0.003213 0.010832 +E 10825.000000 50.000000 30.242035 179.357773 0.003165 0.010669 +E 10850.000000 50.000000 30.235353 179.355301 0.003115 0.010499 +E 10875.000000 50.000000 30.221809 179.335159 0.003061 0.010316 +E 10900.000000 50.000000 30.223396 179.341934 0.003019 0.010174 +E 10925.000000 50.000000 30.225708 179.352997 0.002976 0.010031 +E 10950.000000 50.000000 30.222435 179.362488 0.002925 0.009858 +E 10975.000000 50.000000 30.219034 179.358246 0.002884 0.009721 +E 11000.000000 50.000000 30.215967 179.349670 0.002849 0.009603 +E 11025.000000 50.000000 30.216478 179.360062 0.002816 0.009492 +E 11050.000000 50.000000 30.212772 179.361710 0.002789 0.009400 +E 11075.000000 50.000000 30.205166 179.355301 0.002767 0.009324 +E 11100.000000 50.000000 30.203367 179.369217 0.002725 0.009184 +E 11125.000000 50.000000 30.203163 179.369629 0.002692 0.009074 +E 11150.000000 50.000000 30.205065 179.343216 0.002677 0.009023 +E 11175.000000 50.000000 30.202225 179.348404 0.002655 0.008949 +E 11200.000000 50.000000 30.198641 179.360519 0.002634 0.008878 +E 11225.000000 50.000000 30.197510 179.363876 0.002623 0.008839 +E 11250.000000 50.000000 30.193401 179.369156 0.002605 0.008777 +E 11275.000000 50.000000 30.187777 179.375504 0.002583 0.008705 +E 11300.000000 50.000000 30.188314 179.380249 0.002580 0.008694 +E 11325.000000 50.000000 30.186563 179.381668 0.002570 0.008659 +E 11350.000000 50.000000 30.182228 179.379333 0.002552 0.008598 +E 11375.000000 50.000000 30.180725 179.376755 0.002543 0.008569 +E 11400.000000 50.000000 30.178709 179.377731 0.002534 0.008537 +E 11425.000000 50.000000 30.174845 179.386353 0.002521 0.008493 +E 11450.000000 50.000000 30.172667 179.384583 0.002509 0.008452 +E 11475.000000 50.000000 30.171057 179.379791 0.002495 0.008407 +E 11500.000000 50.000000 30.169447 179.377579 0.002477 0.008344 +E 11525.000000 50.000000 30.168097 179.379593 0.002459 0.008286 +E 11550.000000 50.000000 30.166924 179.384338 0.002443 0.008231 +E 11575.000000 50.000000 30.166353 179.388702 0.002434 0.008198 +E 11600.000000 50.000000 30.163115 179.384354 0.002416 0.008140 +E 11625.000000 50.000000 30.156796 179.369919 0.002391 0.008053 +E 11650.000000 50.000000 30.156534 179.383987 0.002376 0.008003 +E 11675.000000 50.000000 30.155527 179.396530 0.002360 0.007951 +E 11700.000000 50.000000 30.151423 179.398697 0.002341 0.007884 +E 11725.000000 50.000000 30.149807 179.388351 0.002328 0.007842 +E 11750.000000 50.000000 30.147722 179.380066 0.002316 0.007799 +E 11775.000000 50.000000 30.140188 179.397934 0.002292 0.007720 +E 11800.000000 50.000000 30.140722 179.398956 0.002271 0.007648 +E 11825.000000 50.000000 30.145166 179.391068 0.002251 0.007582 +E 11850.000000 50.000000 30.134302 179.402481 0.002233 0.007520 +E 11875.000000 50.000000 30.129354 179.405533 0.002216 0.007460 +E 11900.000000 50.000000 30.130415 179.400070 0.002198 0.007402 +E 11925.000000 50.000000 30.130629 179.404663 0.002179 0.007336 +E 11950.000000 50.000000 30.130386 179.410660 0.002161 0.007276 +E 11975.000000 50.000000 30.129478 179.417801 0.002147 0.007229 +E 12000.000000 50.000000 30.124651 179.425766 0.002133 0.007181 +E 12025.000000 50.000000 30.120522 179.429428 0.002119 0.007133 +E 12050.000000 50.000000 30.121578 179.419128 0.002104 0.007084 +E 12075.000000 50.000000 30.121286 179.411514 0.002094 0.007049 +E 12100.000000 50.000000 30.119808 179.406479 0.002085 0.007018 +E 12125.000000 50.000000 30.114285 179.410980 0.002072 0.006974 +E 12150.000000 50.000000 30.111580 179.416412 0.002059 0.006932 +E 12175.000000 50.000000 30.111042 179.422562 0.002047 0.006890 +E 12200.000000 50.000000 30.109694 179.425049 0.002042 0.006874 +E 12225.000000 50.000000 30.108868 179.424820 0.002036 0.006853 +E 12250.000000 50.000000 30.108679 179.421219 0.002029 0.006828 +E 12275.000000 50.000000 30.102942 179.429855 0.002027 0.006820 +E 12300.000000 50.000000 30.099190 179.434479 0.002026 0.006819 +E 12325.000000 50.000000 30.100790 179.428040 0.002030 0.006830 +E 12350.000000 50.000000 30.101753 179.434891 0.002024 0.006811 +E 12375.000000 50.000000 30.100403 179.440170 0.002021 0.006799 +E 12400.000000 50.000000 30.091654 179.427048 0.002033 0.006841 +E 12425.000000 50.000000 30.089205 179.429413 0.002029 0.006826 +E 12450.000000 50.000000 30.089598 179.436981 0.002019 0.006793 +E 12475.000000 50.000000 30.088137 179.426987 0.002026 0.006817 +E 12500.000000 50.000000 30.087551 179.424042 0.002020 0.006796 +E 12525.000000 50.000000 30.087547 179.426575 0.002004 0.006742 +E 12550.000000 50.000000 30.083096 179.433182 0.001998 0.006720 +E 12575.000000 50.000000 30.081680 179.434418 0.001990 0.006693 +E 12600.000000 50.000000 30.083725 179.429581 0.001980 0.006658 +E 12625.000000 50.000000 30.080915 179.443893 0.001975 0.006642 +E 12650.000000 50.000000 30.079355 179.451416 0.001968 0.006618 +E 12675.000000 50.000000 30.080673 179.444504 0.001956 0.006577 +E 12700.000000 50.000000 30.076685 179.450378 0.001943 0.006533 +E 12725.000000 50.000000 30.070919 179.451370 0.001934 0.006502 +E 12750.000000 50.000000 30.063442 179.432236 0.001935 0.006506 +E 12775.000000 50.000000 30.065218 179.441727 0.001924 0.006470 +E 12800.000000 50.000000 30.068748 179.457916 0.001910 0.006422 +E 12825.000000 50.000000 30.064947 179.457123 0.001901 0.006390 +E 12850.000000 50.000000 30.063169 179.457260 0.001892 0.006361 +E 12875.000000 50.000000 30.062559 179.457626 0.001884 0.006334 +E 12900.000000 50.000000 30.062298 179.455124 0.001877 0.006309 +E 12925.000000 50.000000 30.058578 179.459946 0.001867 0.006276 +E 12950.000000 50.000000 30.052181 179.470428 0.001856 0.006237 +E 12975.000000 50.000000 30.054710 179.460846 0.001850 0.006217 +E 13000.000000 50.000000 30.054024 179.457184 0.001844 0.006196 +E 13025.000000 50.000000 30.049728 179.460144 0.001837 0.006173 +E 13050.000000 50.000000 30.050802 179.473831 0.001827 0.006139 +E 13075.000000 50.000000 30.050880 179.474670 0.001819 0.006112 +E 13100.000000 50.000000 30.048740 179.454163 0.001815 0.006097 +E 13125.000000 50.000000 30.047749 179.466904 0.001810 0.006081 +E 13150.000000 50.000000 30.046177 179.479095 0.001805 0.006064 +E 13175.000000 50.000000 30.042879 179.477142 0.001799 0.006044 +E 13200.000000 50.000000 30.042889 179.480957 0.001794 0.006026 +E 13225.000000 50.000000 30.042961 179.483276 0.001791 0.006016 +E 13250.000000 50.000000 30.040148 179.475464 0.001794 0.006024 +E 13275.000000 50.000000 30.038237 179.477036 0.001792 0.006018 +E 13300.000000 50.000000 30.036457 179.480713 0.001790 0.006010 +E 13325.000000 50.000000 30.033394 179.474716 0.001793 0.006020 +E 13350.000000 50.000000 30.033972 179.474991 0.001796 0.006030 +E 13375.000000 50.000000 30.036030 179.479111 0.001798 0.006038 +E 13400.000000 50.000000 30.032175 179.485306 0.001799 0.006041 +E 13425.000000 50.000000 30.030514 179.486816 0.001804 0.006055 +E 13450.000000 50.000000 30.030468 179.484711 0.001810 0.006077 +E 13475.000000 50.000000 30.028555 179.483109 0.001822 0.006115 +E 13500.000000 50.000000 30.027227 179.485214 0.001834 0.006155 +E 13525.000000 50.000000 30.026484 179.491074 0.001846 0.006198 +E 13550.000000 50.000000 30.024529 179.488251 0.001871 0.006281 +E 13575.000000 50.000000 30.023066 179.487198 0.001897 0.006367 +E 13600.000000 50.000000 30.022299 179.488770 0.001924 0.006456 +E 13625.000000 50.000000 30.017052 179.487427 0.001941 0.006513 +E 13650.000000 50.000000 30.014164 179.483307 0.001958 0.006569 +E 13675.000000 50.000000 30.015799 179.475098 0.001975 0.006628 +E 13700.000000 50.000000 30.014881 179.482162 0.002022 0.006783 +E 13725.000000 50.000000 30.013321 179.488419 0.002100 0.007046 +E 13750.000000 50.000000 30.011250 179.487076 0.002242 0.007522 +E 13775.000000 50.000000 30.007814 179.496078 0.002446 0.008206 +E 13800.000000 50.000000 30.005411 179.501831 0.002662 0.008928 +E 13825.000000 50.000000 30.007725 179.487244 0.002791 0.009360 +E 13850.000000 50.000000 30.010691 179.479370 0.002769 0.009286 +E 13875.000000 50.000000 30.012869 179.484161 0.002687 0.009013 +E 13900.000000 50.000000 30.012791 179.518799 0.002573 0.008629 +E 13925.000000 50.000000 30.005213 179.504425 0.002503 0.008393 +E 13950.000000 50.000000 29.998327 179.481781 0.002437 0.008171 +E 13975.000000 50.000000 30.004522 179.495712 0.002322 0.007786 +E 14000.000000 50.000000 30.001305 179.505890 0.002254 0.007556 +E 14025.000000 50.000000 29.995764 179.513641 0.002205 0.007391 +E 14050.000000 50.000000 29.999598 179.517258 0.002150 0.007207 +E 14075.000000 50.000000 29.999165 179.513794 0.002112 0.007078 +E 14100.000000 50.000000 29.996456 179.507538 0.002082 0.006977 +E 14125.000000 50.000000 29.994030 179.508728 0.002042 0.006844 +E 14150.000000 50.000000 29.991705 179.506042 0.002016 0.006756 +E 14175.000000 50.000000 29.989847 179.502808 0.001998 0.006695 +E 14200.000000 50.000000 29.992411 179.520416 0.001977 0.006624 +E 14225.000000 50.000000 29.989735 179.526520 0.001964 0.006580 +E 14250.000000 50.000000 29.983471 179.523926 0.001956 0.006554 +E 14275.000000 50.000000 29.983101 179.517593 0.001944 0.006511 +E 14300.000000 50.000000 29.982849 179.512878 0.001935 0.006482 +E 14325.000000 50.000000 29.982729 179.509705 0.001930 0.006464 +E 14350.000000 50.000000 29.983572 179.514709 0.001925 0.006445 +E 14375.000000 50.000000 29.982859 179.516998 0.001919 0.006426 +E 14400.000000 50.000000 29.980696 179.516724 0.001913 0.006406 +E 14425.000000 50.000000 29.980898 179.520294 0.001914 0.006408 +E 14450.000000 50.000000 29.978909 179.524521 0.001911 0.006396 +E 14475.000000 50.000000 29.974642 179.529419 0.001903 0.006369 +E 14500.000000 50.000000 29.976574 179.527008 0.001900 0.006361 +E 14525.000000 50.000000 29.976213 179.519394 0.001902 0.006364 +E 14550.000000 50.000000 29.973116 179.506012 0.001906 0.006380 +E 14575.000000 50.000000 29.976366 179.515472 0.001898 0.006352 +E 14600.000000 50.000000 29.974144 179.523346 0.001898 0.006350 +E 14625.000000 50.000000 29.965015 179.528336 0.001907 0.006381 +E 14650.000000 50.000000 29.966658 179.531723 0.001902 0.006362 +E 14675.000000 50.000000 29.967539 179.526535 0.001903 0.006365 +E 14700.000000 50.000000 29.966734 179.510452 0.001913 0.006398 +E 14725.000000 50.000000 29.968668 179.514587 0.001907 0.006379 +E 14750.000000 50.000000 29.968100 179.518570 0.001907 0.006378 +E 14775.000000 50.000000 29.963980 179.520584 0.001916 0.006406 +E 14800.000000 50.000000 29.965082 179.531891 0.001915 0.006401 +E 14825.000000 50.000000 29.962446 179.532944 0.001914 0.006400 +E 14850.000000 50.000000 29.954145 179.519028 0.001916 0.006407 +E 14875.000000 50.000000 29.957338 179.525589 0.001919 0.006415 +E 14900.000000 50.000000 29.957594 179.528061 0.001924 0.006431 +E 14925.000000 50.000000 29.952391 179.522415 0.001933 0.006459 +E 14950.000000 50.000000 29.955393 179.526550 0.001932 0.006455 +E 14975.000000 50.000000 29.954981 179.528641 0.001936 0.006469 +E 15000.000000 50.000000 29.948786 179.526718 0.001949 0.006513 +E 15025.000000 50.000000 29.953321 179.527344 0.001946 0.006502 +E 15050.000000 50.000000 29.953947 179.536316 0.001949 0.006510 +E 15075.000000 50.000000 29.947922 179.556595 0.001961 0.006550 +E 15100.000000 50.000000 29.948017 179.540634 0.001959 0.006544 +E 15125.000000 50.000000 29.946371 179.535309 0.001960 0.006546 +E 15150.000000 50.000000 29.941725 179.548325 0.001965 0.006562 +E 15175.000000 50.000000 29.941496 179.539444 0.001969 0.006573 +E 15200.000000 50.000000 29.942516 179.537521 0.001974 0.006592 +E 15225.000000 50.000000 29.944754 179.546753 0.001984 0.006623 +E 15250.000000 50.000000 29.942436 179.543625 0.001987 0.006634 +E 15275.000000 50.000000 29.938793 179.544434 0.001994 0.006656 +E 15300.000000 50.000000 29.933817 179.551086 0.002006 0.006694 +E 15325.000000 50.000000 29.938711 179.546188 0.002007 0.006698 +E 15350.000000 50.000000 29.938967 179.542130 0.002012 0.006714 +E 15375.000000 50.000000 29.933300 179.539658 0.002022 0.006747 +E 15400.000000 50.000000 29.931229 179.556473 0.002026 0.006760 +E 15425.000000 50.000000 29.930384 179.565002 0.002036 0.006790 +E 15450.000000 50.000000 29.930771 179.563950 0.002051 0.006841 +E 15475.000000 50.000000 29.938086 179.555161 0.002054 0.006851 +E 15500.000000 50.000000 29.938864 179.553223 0.002061 0.006874 +E 15525.000000 50.000000 29.933184 179.557907 0.002072 0.006908 +E 15550.000000 50.000000 29.931524 179.548126 0.002070 0.006902 +E 15575.000000 50.000000 29.928980 179.545761 0.002078 0.006926 +E 15600.000000 50.000000 29.925861 179.550339 0.002093 0.006976 +E 15625.000000 50.000000 29.927835 179.561096 0.002097 0.006989 +E 15650.000000 50.000000 29.926607 179.560883 0.002106 0.007019 +E 15675.000000 50.000000 29.923122 179.552933 0.002119 0.007060 +E 15700.000000 50.000000 29.923845 179.559723 0.002121 0.007069 +E 15725.000000 50.000000 29.922953 179.564621 0.002130 0.007097 +E 15750.000000 50.000000 29.921459 179.567734 0.002143 0.007139 +E 15775.000000 50.000000 29.924519 179.566864 0.002151 0.007166 +E 15800.000000 50.000000 29.923111 179.571686 0.002160 0.007196 +E 15825.000000 50.000000 29.919291 179.578995 0.002171 0.007230 +E 15850.000000 50.000000 29.917509 179.580063 0.002185 0.007277 +E 15875.000000 50.000000 29.916458 179.571503 0.002194 0.007307 +E 15900.000000 50.000000 29.916624 179.560913 0.002202 0.007330 +E 15925.000000 50.000000 29.920561 179.564209 0.002214 0.007370 +E 15950.000000 50.000000 29.919048 179.572739 0.002229 0.007419 +E 15975.000000 50.000000 29.916357 179.578796 0.002244 0.007469 +E 16000.000000 50.000000 29.917961 179.567841 0.002254 0.007503 +E 16025.000000 50.000000 29.920023 179.572235 0.002264 0.007536 +E 16050.000000 50.000000 29.920021 179.576477 0.002276 0.007576 +E 16075.000000 50.000000 29.913780 179.565414 0.002294 0.007634 +E 16100.000000 50.000000 29.908836 179.570587 0.002309 0.007684 +E 16125.000000 50.000000 29.906479 179.575302 0.002322 0.007726 +E 16150.000000 50.000000 29.909039 179.569382 0.002332 0.007759 +E 16175.000000 50.000000 29.907488 179.565125 0.002353 0.007826 +E 16200.000000 50.000000 29.906897 179.566666 0.002372 0.007890 +E 16225.000000 50.000000 29.909378 179.577866 0.002387 0.007937 +E 16250.000000 50.000000 29.912039 179.586533 0.002403 0.007991 +E 16275.000000 50.000000 29.911755 179.588699 0.002421 0.008051 +E 16300.000000 50.000000 29.907314 179.582184 0.002443 0.008121 +E 16325.000000 50.000000 29.904970 179.578934 0.002463 0.008188 +E 16350.000000 50.000000 29.905828 179.579453 0.002485 0.008262 +E 16375.000000 50.000000 29.910107 179.583878 0.002511 0.008346 +E 16400.000000 50.000000 29.909285 179.576080 0.002530 0.008410 +E 16425.000000 50.000000 29.907387 179.577789 0.002562 0.008514 +E 16450.000000 50.000000 29.904627 179.587250 0.002603 0.008649 +E 16475.000000 50.000000 29.902878 179.588730 0.002620 0.008707 +E 16500.000000 50.000000 29.904718 179.583328 0.002658 0.008832 +E 16525.000000 50.000000 29.907667 179.575714 0.002710 0.009003 +E 16550.000000 50.000000 29.901731 179.584335 0.002758 0.009163 +E 16575.000000 50.000000 29.896313 179.578873 0.002829 0.009397 +E 16600.000000 50.000000 29.893032 179.572754 0.002916 0.009685 +E 16625.000000 50.000000 29.897575 179.594009 0.003016 0.010018 +E 16650.000000 50.000000 29.899906 179.597870 0.003187 0.010585 +E 16675.000000 50.000000 29.900501 179.598389 0.003411 0.011328 +E 16700.000000 50.000000 29.897877 179.608627 0.003687 0.012243 +E 16725.000000 50.000000 29.900707 179.591629 0.004098 0.013605 +E 16750.000000 50.000000 29.904716 179.589706 0.004631 0.015373 +E 16775.000000 50.000000 29.907181 179.644882 0.005301 0.017596 +E 16800.000000 50.000000 29.895750 179.623108 0.006182 0.020522 +E 16825.000000 50.000000 29.893005 179.591934 0.007257 0.024086 +E 16850.000000 50.000000 29.912489 179.569946 0.008470 0.028111 +E 16875.000000 50.000000 29.904127 179.600922 0.009913 0.032898 +E 16900.000000 50.000000 29.893539 179.645523 0.011633 0.038601 +E 16925.000000 50.000000 29.882179 179.699280 0.013605 0.045141 +E 16950.000000 50.000000 29.876783 179.660049 0.015759 0.052284 +E 16975.000000 50.000000 29.872837 179.641144 0.018087 0.060003 +E 17000.000000 50.000000 29.875265 179.633972 0.020630 0.068434 +E 1930.000000 60.000000 38.278538 120.925606 0.008911 0.034066 +E 1940.000000 60.000000 38.289627 121.167152 0.008109 0.030967 +E 1950.000000 60.000000 38.272587 121.402153 0.007470 0.028480 +E 1960.000000 60.000000 38.260330 121.727058 0.007050 0.026845 +E 1970.000000 60.000000 38.263359 122.087471 0.006708 0.025519 +E 1980.000000 60.000000 38.250435 122.430313 0.006447 0.024495 +E 1990.000000 60.000000 38.254402 122.826157 0.006225 0.023632 +E 2000.000000 60.000000 38.248089 123.207130 0.006021 0.022838 +E 2010.000000 60.000000 38.208851 123.652802 0.005855 0.022184 +E 2020.000000 60.000000 38.201485 124.028328 0.005674 0.021483 +E 2030.000000 60.000000 38.186844 124.411926 0.005493 0.020786 +E 2040.000000 60.000000 38.146591 124.798195 0.005337 0.020175 +E 2050.000000 60.000000 38.125309 125.155060 0.005179 0.019562 +E 2060.000000 60.000000 38.112541 125.560593 0.005024 0.018960 +E 2070.000000 60.000000 38.073868 125.876305 0.004877 0.018376 +E 2080.000000 60.000000 38.041710 126.188416 0.004740 0.017830 +E 2090.000000 60.000000 38.023827 126.548409 0.004607 0.017304 +E 2100.000000 60.000000 37.994781 126.865059 0.004488 0.016825 +E 2110.000000 60.000000 37.979832 127.161507 0.004388 0.016416 +E 2120.000000 60.000000 37.957214 127.460625 0.004293 0.016024 +E 2130.000000 60.000000 37.933399 127.870689 0.004201 0.015650 +E 2140.000000 60.000000 37.917744 128.205978 0.004121 0.015320 +E 2150.000000 60.000000 37.906982 128.504715 0.004046 0.015011 +E 2160.000000 60.000000 37.893452 128.830780 0.003979 0.014737 +E 2170.000000 60.000000 37.878872 129.184280 0.003919 0.014485 +E 2180.000000 60.000000 37.867455 129.537735 0.003855 0.014228 +E 2190.000000 60.000000 37.860775 129.854584 0.003790 0.013964 +E 2200.000000 60.000000 37.847683 130.185211 0.003727 0.013712 +E 2210.000000 60.000000 37.830784 130.515106 0.003670 0.013479 +E 2220.000000 60.000000 37.816380 130.892395 0.003611 0.013244 +E 2230.000000 60.000000 37.801361 131.283890 0.003557 0.013029 +E 2240.000000 60.000000 37.778706 131.628616 0.003507 0.012828 +E 2250.000000 60.000000 37.743412 131.985764 0.003463 0.012646 +E 2260.000000 60.000000 37.702560 132.398148 0.003422 0.012478 +E 2270.000000 60.000000 37.650112 132.785751 0.003380 0.012309 +E 2280.000000 60.000000 37.578609 133.152740 0.003341 0.012146 +E 2290.000000 60.000000 37.500362 133.524399 0.003302 0.011982 +E 2300.000000 60.000000 37.402233 133.862473 0.003269 0.011841 +E 2310.000000 60.000000 37.286510 134.168198 0.003240 0.011713 +E 2320.000000 60.000000 37.176014 134.370193 0.003211 0.011586 +E 2330.000000 60.000000 37.065907 134.522812 0.003186 0.011474 +E 2340.000000 60.000000 36.972538 134.655243 0.003163 0.011370 +E 2350.000000 60.000000 36.899826 134.763580 0.003138 0.011264 +E 2360.000000 60.000000 36.847996 134.777390 0.003116 0.011170 +E 2370.000000 60.000000 36.820316 134.843552 0.003092 0.011073 +E 2380.000000 60.000000 36.813324 134.895035 0.003068 0.010978 +E 2390.000000 60.000000 36.829830 134.925934 0.003047 0.010899 +E 2400.000000 60.000000 36.873516 134.992889 0.003028 0.010825 +E 2410.000000 60.000000 36.921291 135.080475 0.003009 0.010757 +E 2420.000000 60.000000 36.972084 135.234268 0.002991 0.010691 +E 2430.000000 60.000000 37.040279 135.401321 0.002978 0.010644 +E 2440.000000 60.000000 37.111458 135.546844 0.002965 0.010595 +E 2450.000000 60.000000 37.185677 135.716415 0.002952 0.010548 +E 2460.000000 60.000000 37.267071 135.944778 0.002942 0.010512 +E 2470.000000 60.000000 37.349518 136.183685 0.002932 0.010480 +E 2480.000000 60.000000 37.428848 136.428253 0.002923 0.010446 +E 2490.000000 60.000000 37.515572 136.672287 0.002916 0.010421 +E 2500.000000 60.000000 37.599571 136.946274 0.002913 0.010412 +E 2510.000000 60.000000 37.672523 137.251846 0.002913 0.010409 +E 2520.000000 60.000000 37.751587 137.545654 0.002910 0.010397 +E 2530.000000 60.000000 37.829937 137.842560 0.002911 0.010401 +E 2540.000000 60.000000 37.906437 138.159271 0.002918 0.010424 +E 2550.000000 60.000000 37.980633 138.489120 0.002924 0.010445 +E 2560.000000 60.000000 38.052593 138.831039 0.002934 0.010477 +E 2570.000000 60.000000 38.130104 139.198883 0.002945 0.010518 +E 2580.000000 60.000000 38.199741 139.574127 0.002958 0.010560 +E 2590.000000 60.000000 38.265358 139.923981 0.002972 0.010609 +E 2600.000000 60.000000 38.340096 140.324966 0.002991 0.010674 +E 2610.000000 60.000000 38.403397 140.742645 0.003011 0.010743 +E 2620.000000 60.000000 38.471260 141.163712 0.003030 0.010809 +E 2630.000000 60.000000 38.548508 141.574554 0.003052 0.010887 +E 2640.000000 60.000000 38.605827 142.005463 0.003078 0.010977 +E 2650.000000 60.000000 38.674141 142.449142 0.003105 0.011070 +E 2660.000000 60.000000 38.742176 142.932846 0.003136 0.011180 +E 2670.000000 60.000000 38.801376 143.432236 0.003168 0.011291 +E 2680.000000 60.000000 38.849037 143.927231 0.003199 0.011399 +E 2690.000000 60.000000 38.892525 144.469009 0.003230 0.011502 +E 2700.000000 60.000000 38.927624 145.003006 0.003263 0.011617 +E 2710.000000 60.000000 38.938728 145.538116 0.003303 0.011751 +E 2720.000000 60.000000 38.951885 146.128418 0.003338 0.011870 +E 2730.000000 60.000000 38.948807 146.727997 0.003373 0.011986 +E 2740.000000 60.000000 38.924351 147.303818 0.003413 0.012119 +E 2750.000000 60.000000 38.890865 147.869202 0.003451 0.012243 +E 2760.000000 60.000000 38.849129 148.433777 0.003492 0.012376 +E 2770.000000 60.000000 38.786488 148.970932 0.003542 0.012540 +E 2780.000000 60.000000 38.711948 149.538452 0.003578 0.012652 +E 2790.000000 60.000000 38.637608 150.072784 0.003609 0.012747 +E 2800.000000 60.000000 38.561638 150.581985 0.003643 0.012852 +E 2810.000000 60.000000 38.491306 151.085861 0.003684 0.012983 +E 2820.000000 60.000000 38.407974 151.590714 0.003727 0.013119 +E 2830.000000 60.000000 38.316181 152.109497 0.003769 0.013248 +E 2840.000000 60.000000 38.230812 152.638489 0.003808 0.013368 +E 2850.000000 60.000000 38.129639 153.146362 0.003858 0.013528 +E 2860.000000 60.000000 38.022018 153.639267 0.003911 0.013692 +E 2870.000000 60.000000 37.907173 154.173355 0.003958 0.013837 +E 2880.000000 60.000000 37.756218 154.745682 0.004016 0.014018 +E 2890.000000 60.000000 37.594189 155.254028 0.004078 0.014209 +E 2900.000000 60.000000 37.404324 155.725388 0.004145 0.014412 +E 2910.000000 60.000000 37.198780 156.210236 0.004216 0.014629 +E 2920.000000 60.000000 36.982185 156.603745 0.004289 0.014851 +E 2930.000000 60.000000 36.750244 156.912109 0.004364 0.015075 +E 2940.000000 60.000000 36.525887 157.233994 0.004435 0.015289 +E 2950.000000 60.000000 36.322727 157.499176 0.004505 0.015499 +E 2960.000000 60.000000 36.112434 157.684692 0.004580 0.015724 +E 2970.000000 60.000000 35.914429 157.861572 0.004650 0.015933 +E 2980.000000 60.000000 35.721848 158.017960 0.004724 0.016159 +E 2990.000000 60.000000 35.556854 158.179062 0.004797 0.016383 +E 3000.000000 60.000000 35.397190 158.308258 0.004872 0.016612 +E 3010.000000 60.000000 35.242344 158.414810 0.004941 0.016822 +E 3020.000000 60.000000 35.087296 158.471970 0.005016 0.017053 +E 3030.000000 60.000000 34.942444 158.543625 0.005099 0.017312 +E 3040.000000 60.000000 34.823170 158.614563 0.005172 0.017541 +E 3050.000000 60.000000 34.712116 158.689301 0.005256 0.017807 +E 3060.000000 60.000000 34.584831 158.759933 0.005337 0.018060 +E 3070.000000 60.000000 34.494347 158.823944 0.005409 0.018289 +E 3080.000000 60.000000 34.409149 158.856583 0.005487 0.018536 +E 3090.000000 60.000000 34.320488 158.893677 0.005569 0.018798 +E 3100.000000 60.000000 34.220039 158.963379 0.005649 0.019049 +E 3110.000000 60.000000 34.131813 159.003479 0.005723 0.019284 +E 3120.000000 60.000000 34.078037 159.040726 0.005799 0.019528 +E 3130.000000 60.000000 34.008434 159.145584 0.005865 0.019737 +E 3140.000000 60.000000 33.922028 159.249649 0.005941 0.019979 +E 3150.000000 60.000000 33.860493 159.308792 0.006022 0.020238 +E 3160.000000 60.000000 33.809444 159.339249 0.006092 0.020465 +E 3170.000000 60.000000 33.743847 159.375107 0.006170 0.020712 +E 3180.000000 60.000000 33.700306 159.452164 0.006236 0.020925 +E 3190.000000 60.000000 33.636578 159.533142 0.006316 0.021184 +E 3200.000000 60.000000 33.597847 159.579269 0.006388 0.021417 +E 3210.000000 60.000000 33.570705 159.651001 0.006465 0.021667 +E 3220.000000 60.000000 33.527607 159.738968 0.006540 0.021909 +E 3230.000000 60.000000 33.492535 159.807205 0.006611 0.022142 +E 3240.000000 60.000000 33.454685 159.904587 0.006684 0.022378 +E 3250.000000 60.000000 33.408737 159.925537 0.006761 0.022628 +E 3260.000000 60.000000 33.386749 160.073517 0.006887 0.023043 +E 3270.000000 60.000000 33.349045 160.167694 0.007041 0.023548 +E 3280.000000 60.000000 33.320282 160.205780 0.007180 0.024009 +E 3290.000000 60.000000 33.310574 160.317963 0.007288 0.024366 +E 3300.000000 60.000000 33.272793 160.365402 0.007405 0.024748 +E 3310.000000 60.000000 33.239120 160.442200 0.007520 0.025124 +E 3320.000000 60.000000 33.248146 160.567780 0.007588 0.025350 +E 3330.000000 60.000000 33.221409 160.651962 0.007652 0.025559 +E 3340.000000 60.000000 33.190601 160.696381 0.007707 0.025736 +E 3350.000000 60.000000 33.160027 160.759171 0.007775 0.025954 +E 3360.000000 60.000000 33.157284 160.913376 0.007829 0.026131 +E 3370.000000 60.000000 33.151142 161.031982 0.007863 0.026244 +E 3380.000000 60.000000 33.128952 161.091217 0.007901 0.026365 +E 3390.000000 60.000000 33.123825 161.248840 0.007905 0.026375 +E 3400.000000 60.000000 33.121628 161.289963 0.007921 0.026424 +E 3410.000000 60.000000 33.117199 161.372971 0.007957 0.026541 +E 3420.000000 60.000000 33.136242 161.551849 0.008015 0.026734 +E 3430.000000 60.000000 33.118813 161.631927 0.008070 0.026916 +E 3440.000000 60.000000 33.120609 161.662888 0.008118 0.027073 +E 3450.000000 60.000000 33.127647 161.751862 0.008197 0.027336 +E 3460.000000 60.000000 33.129829 161.871964 0.008253 0.027521 +E 3470.000000 60.000000 33.143055 162.011581 0.008326 0.027765 +E 3480.000000 60.000000 33.182995 162.125031 0.008376 0.027934 +E 3490.000000 60.000000 33.178242 162.265320 0.008434 0.028125 +E 3500.000000 60.000000 33.208729 162.391495 0.008489 0.028310 +E 3510.000000 60.000000 33.270031 162.455765 0.008542 0.028495 +E 3520.000000 60.000000 33.287575 162.586380 0.008603 0.028698 +E 3530.000000 60.000000 33.324596 162.701187 0.008660 0.028892 +E 3540.000000 60.000000 33.388176 162.842087 0.008724 0.029116 +E 3550.000000 60.000000 33.437271 163.059845 0.008778 0.029299 +E 3560.000000 60.000000 33.500336 163.214371 0.008819 0.029447 +E 3570.000000 60.000000 33.572987 163.434769 0.008865 0.029608 +E 3580.000000 60.000000 33.646152 163.691727 0.008911 0.029775 +E 3590.000000 60.000000 33.727108 163.895004 0.008954 0.029929 +E 3600.000000 60.000000 33.781876 164.222900 0.009003 0.030099 +E 3610.000000 60.000000 33.860466 164.615067 0.009050 0.030268 +E 3620.000000 60.000000 33.944340 165.009338 0.009059 0.030313 +E 3630.000000 60.000000 33.995335 165.418808 0.009084 0.030405 +E 3640.000000 60.000000 34.033634 165.834747 0.009140 0.030598 +E 3650.000000 60.000000 34.030277 166.278992 0.009224 0.030877 +E 3660.000000 60.000000 34.045547 166.755280 0.009199 0.030794 +E 3670.000000 60.000000 34.054699 167.277054 0.009130 0.030562 +E 3680.000000 60.000000 34.021641 167.829895 0.009114 0.030504 +E 3690.000000 60.000000 33.948914 168.359634 0.009167 0.030667 +E 3700.000000 60.000000 33.886036 168.780380 0.009285 0.031048 +E 3710.000000 60.000000 33.799667 169.237854 0.009413 0.031460 +E 3720.000000 60.000000 33.718525 169.740021 0.009466 0.031623 +E 3730.000000 60.000000 33.590622 170.219986 0.009554 0.031894 +E 3740.000000 60.000000 33.436661 170.644150 0.009657 0.032211 +E 3750.000000 60.000000 33.298901 171.032684 0.009678 0.032258 +E 3760.000000 60.000000 33.148689 171.438858 0.009680 0.032237 +E 3770.000000 60.000000 32.987064 171.779633 0.009720 0.032345 +E 3780.000000 60.000000 32.813496 172.089767 0.009697 0.032243 +E 3790.000000 60.000000 32.649033 172.327026 0.009658 0.032089 +E 3800.000000 60.000000 32.504410 172.576401 0.009674 0.032120 +E 3810.000000 60.000000 32.324226 172.783401 0.009788 0.032476 +E 3820.000000 60.000000 32.169716 173.004089 0.009887 0.032784 +E 3830.000000 60.000000 32.045029 173.197052 0.009837 0.032602 +E 3840.000000 60.000000 31.887426 173.305191 0.009873 0.032701 +E 3850.000000 60.000000 31.747267 173.383835 0.009987 0.033065 +E 3860.000000 60.000000 31.593290 173.526245 0.009957 0.032948 +E 3870.000000 60.000000 31.457291 173.761185 0.009832 0.032519 +E 3880.000000 60.000000 31.337835 173.822891 0.009699 0.032070 +E 3890.000000 60.000000 31.201456 173.942535 0.009754 0.032240 +E 3900.000000 60.000000 31.086119 174.092270 0.010046 0.033195 +E 3910.000000 60.000000 30.981161 174.098099 0.010351 0.034194 +E 3920.000000 60.000000 30.857571 174.223724 0.010321 0.034084 +E 3930.000000 60.000000 30.752151 174.301712 0.010158 0.033539 +E 3940.000000 60.000000 30.653267 174.274979 0.010031 0.033113 +E 3950.000000 60.000000 30.538107 174.371429 0.010022 0.033077 +E 3960.000000 60.000000 30.419920 174.473465 0.010147 0.033485 +E 3970.000000 60.000000 30.315388 174.518097 0.010266 0.033872 +E 3980.000000 60.000000 30.223312 174.605606 0.010137 0.033443 +E 3990.000000 60.000000 30.146410 174.663269 0.009991 0.032958 +E 4000.000000 60.000000 30.048800 174.738602 0.010085 0.033266 +E 4010.000000 60.000000 29.952791 174.776459 0.010330 0.034074 +E 4020.000000 60.000000 29.856138 174.821655 0.010492 0.034605 +E 4030.000000 60.000000 29.761572 174.831024 0.010520 0.034698 +E 4040.000000 60.000000 29.693836 174.841888 0.010433 0.034410 +E 4050.000000 60.000000 29.618488 174.864624 0.010228 0.033733 +E 4060.000000 60.000000 29.524929 174.949417 0.010025 0.033064 +E 4070.000000 60.000000 29.432436 175.032135 0.010075 0.033229 +E 4080.000000 60.000000 29.368515 175.057571 0.010378 0.034231 +E 4090.000000 60.000000 29.302229 175.077499 0.010620 0.035031 +E 4100.000000 60.000000 29.227179 175.117371 0.010671 0.035201 +E 4110.000000 60.000000 29.139574 175.125824 0.010677 0.035223 +E 4120.000000 60.000000 29.073658 175.188690 0.010556 0.034825 +E 4130.000000 60.000000 29.017221 175.296875 0.010255 0.033836 +E 4140.000000 60.000000 28.928747 175.270020 0.010152 0.033497 +E 4150.000000 60.000000 28.849491 175.290283 0.010328 0.034084 +E 4160.000000 60.000000 28.766273 175.296829 0.010441 0.034460 +E 4170.000000 60.000000 28.711807 175.350739 0.010416 0.034381 +E 4180.000000 60.000000 28.663584 175.428833 0.010424 0.034412 +E 4190.000000 60.000000 28.568825 175.439590 0.010576 0.034919 +E 4200.000000 60.000000 28.518906 175.427872 0.010613 0.035044 +E 4210.000000 60.000000 28.465252 175.491501 0.010341 0.034152 +E 4220.000000 60.000000 28.393484 175.512482 0.010016 0.033083 +E 4230.000000 60.000000 28.333054 175.529251 0.009825 0.032457 +E 4240.000000 60.000000 28.296436 175.568710 0.009809 0.032408 +E 4250.000000 60.000000 28.235840 175.664185 0.010160 0.033572 +E 4260.000000 60.000000 28.162455 175.715546 0.010574 0.034947 +E 4270.000000 60.000000 28.088741 175.594986 0.010549 0.034873 +E 4280.000000 60.000000 28.031204 175.616592 0.010251 0.033893 +E 4290.000000 60.000000 28.008190 175.663742 0.010336 0.034176 +E 4300.000000 60.000000 27.946365 175.650665 0.010411 0.034431 +E 4310.000000 60.000000 27.897816 175.723389 0.010334 0.034184 +E 4320.000000 60.000000 27.851152 175.799011 0.010494 0.034717 +E 4330.000000 60.000000 27.802034 175.824066 0.010666 0.035292 +E 4340.000000 60.000000 27.741825 175.777390 0.010440 0.034554 +E 4350.000000 60.000000 27.707724 175.843536 0.010328 0.034188 +E 4360.000000 60.000000 27.655363 175.889053 0.010482 0.034704 +E 4370.000000 60.000000 27.593792 175.831848 0.010510 0.034807 +E 4380.000000 60.000000 27.568989 175.843643 0.010441 0.034580 +E 4390.000000 60.000000 27.497252 175.890350 0.010379 0.034386 +E 4400.000000 60.000000 27.432423 175.863876 0.010357 0.034324 +E 4410.000000 60.000000 27.402828 175.894363 0.010187 0.033763 +E 4420.000000 60.000000 27.351501 175.900925 0.009855 0.032673 +E 4430.000000 60.000000 27.305904 175.990524 0.009818 0.032557 +E 4440.000000 60.000000 27.257071 176.074188 0.009920 0.032903 +E 4450.000000 60.000000 27.211569 176.044205 0.009872 0.032751 +E 4460.000000 60.000000 27.175421 176.038147 0.009804 0.032530 +E 4470.000000 60.000000 27.145021 176.047882 0.009859 0.032719 +E 4480.000000 60.000000 27.107508 176.052765 0.009926 0.032946 +E 4490.000000 60.000000 27.057575 176.026657 0.009928 0.032963 +E 4500.000000 60.000000 27.015406 176.047501 0.009876 0.032798 +E 4510.000000 60.000000 26.976776 176.107620 0.009879 0.032815 +E 4520.000000 60.000000 26.933971 176.161606 0.009921 0.032963 +E 4530.000000 60.000000 26.873550 176.117493 0.009921 0.032973 +E 4540.000000 60.000000 26.841284 176.114029 0.009880 0.032841 +E 4550.000000 60.000000 26.810656 176.184128 0.009838 0.032711 +E 4560.000000 60.000000 26.763489 176.192047 0.009762 0.032466 +E 4570.000000 60.000000 26.728596 176.215195 0.009627 0.032023 +E 4580.000000 60.000000 26.702223 176.252228 0.009410 0.031307 +E 4590.000000 60.000000 26.676874 176.214218 0.009252 0.030785 +E 4600.000000 60.000000 26.646814 176.273590 0.009392 0.031259 +E 4610.000000 60.000000 26.619883 176.292831 0.009633 0.032067 +E 4620.000000 60.000000 26.555542 176.210007 0.009731 0.032405 +E 4630.000000 60.000000 26.506369 176.289368 0.009515 0.031697 +E 4640.000000 60.000000 26.474350 176.337646 0.009170 0.030553 +E 4650.000000 60.000000 26.455833 176.291962 0.009048 0.030151 +E 4660.000000 60.000000 26.408234 176.303009 0.009164 0.030547 +E 4670.000000 60.000000 26.380226 176.350204 0.009351 0.031178 +E 4680.000000 60.000000 26.374599 176.368271 0.009425 0.031427 +E 4690.000000 60.000000 26.341553 176.367615 0.009469 0.031581 +E 4700.000000 60.000000 26.293945 176.340240 0.009668 0.032254 +E 4710.000000 60.000000 26.244570 176.373627 0.009821 0.032778 +E 4720.000000 60.000000 26.194862 176.417282 0.009715 0.032437 +E 4730.000000 60.000000 26.190964 176.419846 0.009506 0.031740 +E 4740.000000 60.000000 26.149305 176.446381 0.009446 0.031549 +E 4750.000000 60.000000 26.101995 176.481750 0.009499 0.031738 +E 4760.000000 60.000000 26.088388 176.409637 0.009465 0.031627 +E 4770.000000 60.000000 26.063517 176.455139 0.009384 0.031362 +E 4780.000000 60.000000 26.032337 176.478882 0.009307 0.031114 +E 4790.000000 60.000000 25.999237 176.472275 0.009231 0.030867 +E 4800.000000 60.000000 25.980856 176.504532 0.009210 0.030804 +E 4810.000000 60.000000 25.926596 176.540421 0.009206 0.030802 +E 4820.000000 60.000000 25.901669 176.609268 0.009212 0.030828 +E 4830.000000 60.000000 25.859745 176.582977 0.009187 0.030754 +E 4840.000000 60.000000 25.850281 176.518616 0.009070 0.030366 +E 4850.000000 60.000000 25.826576 176.556473 0.008655 0.028982 +E 4860.000000 60.000000 25.761721 176.573395 0.007631 0.025568 +E 4870.000000 60.000000 25.742886 176.587372 0.007259 0.024324 +E 4880.000000 60.000000 25.733778 176.599365 0.008340 0.027951 +E 4890.000000 60.000000 25.700447 176.624100 0.008891 0.029806 +E 4900.000000 60.000000 25.680149 176.685089 0.008881 0.029778 +E 4910.000000 60.000000 25.651131 176.645981 0.008804 0.029529 +E 4920.000000 60.000000 25.613861 176.612991 0.008834 0.029638 +E 4930.000000 60.000000 25.595921 176.644302 0.008809 0.029558 +E 4940.000000 60.000000 25.572414 176.637589 0.008755 0.029384 +E 4950.000000 60.000000 25.557734 176.668549 0.008845 0.029692 +E 4960.000000 60.000000 25.532616 176.692612 0.008896 0.029869 +E 4970.000000 60.000000 25.488306 176.730316 0.008841 0.029696 +E 4980.000000 60.000000 25.456898 176.730347 0.008758 0.029427 +E 4990.000000 60.000000 25.453512 176.702972 0.008636 0.029017 +E 5000.000000 60.000000 25.423134 176.683350 0.008602 0.028912 +E 5010.000000 60.000000 25.365210 176.707062 0.008608 0.028947 +E 5020.000000 60.000000 25.354765 176.725418 0.008549 0.028754 +E 5030.000000 60.000000 25.368973 176.784119 0.008534 0.028701 +E 5040.000000 60.000000 25.323324 176.793213 0.008570 0.028834 +E 5050.000000 60.000000 25.298212 176.812592 0.008589 0.028903 +E 5060.000000 60.000000 25.266930 176.803223 0.008558 0.028809 +E 5070.000000 60.000000 25.232239 176.860031 0.008547 0.028783 +E 5080.000000 60.000000 25.216959 176.864853 0.008563 0.028842 +E 5090.000000 60.000000 25.189411 176.860596 0.008563 0.028849 +E 5100.000000 60.000000 25.165642 176.862946 0.008565 0.028863 +E 5110.000000 60.000000 25.160057 176.817871 0.008527 0.028738 +E 5120.000000 60.000000 25.131575 176.894211 0.008476 0.028573 +E 5130.000000 60.000000 25.111036 176.897339 0.008472 0.028566 +E 5140.000000 60.000000 25.094059 176.843063 0.008463 0.028542 +E 5150.000000 60.000000 25.063961 176.853561 0.008449 0.028504 +E 5160.000000 60.000000 25.046520 176.905777 0.008422 0.028418 +E 5170.000000 60.000000 25.035845 176.910019 0.008404 0.028363 +E 5180.000000 60.000000 24.996275 176.992508 0.008391 0.028328 +E 5190.000000 60.000000 24.961550 176.952682 0.008372 0.028275 +E 5200.000000 60.000000 24.953186 176.885071 0.008322 0.028110 +E 5210.000000 60.000000 24.939386 176.926926 0.008290 0.028006 +E 5220.000000 60.000000 24.928879 176.874023 0.008283 0.027986 +E 5230.000000 60.000000 24.896118 176.927261 0.008267 0.027941 +E 5240.000000 60.000000 24.874800 176.985977 0.008245 0.027873 +E 5250.000000 60.000000 24.852068 176.943390 0.008216 0.027785 +E 5260.000000 60.000000 24.844517 176.914932 0.008159 0.027593 +E 5270.000000 60.000000 24.826757 176.960922 0.008088 0.027360 +E 5280.000000 60.000000 24.795128 177.054306 0.008075 0.027326 +E 5290.000000 60.000000 24.771000 177.019272 0.008070 0.027318 +E 5300.000000 60.000000 24.737732 176.930389 0.008051 0.027263 +E 5310.000000 60.000000 24.724621 176.955475 0.008047 0.027252 +E 5320.000000 60.000000 24.731998 177.016464 0.008030 0.027194 +E 5330.000000 60.000000 24.708378 177.050461 0.007980 0.027034 +E 5340.000000 60.000000 24.689678 177.071442 0.007913 0.026812 +E 5350.000000 60.000000 24.665508 177.000092 0.007893 0.026751 +E 5360.000000 60.000000 24.649559 177.027817 0.007880 0.026711 +E 5370.000000 60.000000 24.615076 177.047516 0.007872 0.026695 +E 5380.000000 60.000000 24.601282 177.033585 0.007846 0.026614 +E 5390.000000 60.000000 24.594397 177.045776 0.007786 0.026413 +E 5400.000000 60.000000 24.570305 177.004883 0.007755 0.026314 +E 5410.000000 60.000000 24.541460 177.028702 0.007736 0.026259 +E 5420.000000 60.000000 24.516876 177.072250 0.007690 0.026110 +E 5430.000000 60.000000 24.504061 177.122177 0.007630 0.025913 +E 5440.000000 60.000000 24.487879 177.134186 0.007606 0.025837 +E 5450.000000 60.000000 24.479403 177.131561 0.007585 0.025767 +E 5460.000000 60.000000 24.461014 177.110443 0.007584 0.025772 +E 5470.000000 60.000000 24.449705 177.068253 0.007573 0.025736 +E 5480.000000 60.000000 24.431948 177.112625 0.007517 0.025551 +E 5490.000000 60.000000 24.420425 177.143066 0.007468 0.025388 +E 5500.000000 60.000000 24.403137 177.103607 0.007463 0.025378 +E 5510.000000 60.000000 24.365171 177.193512 0.007472 0.025420 +E 5520.000000 60.000000 24.361694 177.201309 0.007460 0.025382 +E 5530.000000 60.000000 24.354019 177.167175 0.007435 0.025302 +E 5540.000000 60.000000 24.331297 177.156281 0.007407 0.025213 +E 5550.000000 60.000000 24.310076 177.201019 0.007398 0.025189 +E 5560.000000 60.000000 24.286383 177.210907 0.007388 0.025164 +E 5570.000000 60.000000 24.273184 177.197266 0.007366 0.025092 +E 5580.000000 60.000000 24.253580 177.187195 0.007354 0.025058 +E 5590.000000 60.000000 24.235178 177.174820 0.007350 0.025051 +E 5600.000000 60.000000 24.244492 177.148453 0.007324 0.024961 +E 5610.000000 60.000000 24.223829 177.142838 0.007289 0.024848 +E 5620.000000 60.000000 24.192204 177.207062 0.007280 0.024828 +E 5630.000000 60.000000 24.192789 177.227020 0.007267 0.024782 +E 5640.000000 60.000000 24.158987 177.222855 0.007248 0.024730 +E 5650.000000 60.000000 24.145668 177.216568 0.007217 0.024628 +E 5660.000000 60.000000 24.147760 177.233765 0.007186 0.024520 +E 5670.000000 60.000000 24.122673 177.266022 0.007116 0.024290 +E 5680.000000 60.000000 24.098763 177.278015 0.006994 0.023883 +E 5690.000000 60.000000 24.084457 177.294998 0.006850 0.023395 +E 5700.000000 60.000000 24.068411 177.254730 0.006654 0.022730 +E 5710.000000 60.000000 24.056971 177.265717 0.006558 0.022406 +E 5720.000000 60.000000 24.049376 177.298965 0.006507 0.022235 +E 5730.000000 60.000000 24.038124 177.283401 0.006445 0.022028 +E 5740.000000 60.000000 24.033388 177.242554 0.006328 0.021630 +E 5750.000000 60.000000 24.016935 177.300812 0.006268 0.021428 +E 5760.000000 60.000000 24.013447 177.288345 0.006223 0.021277 +E 5770.000000 60.000000 23.986019 177.326172 0.006109 0.020895 +E 5780.000000 60.000000 23.954649 177.318146 0.006026 0.020619 +E 5790.000000 60.000000 23.937992 177.303497 0.006018 0.020599 +E 5800.000000 60.000000 23.927343 177.320862 0.005980 0.020470 +E 5810.000000 60.000000 23.910194 177.315750 0.005832 0.019970 +E 5820.000000 60.000000 23.902180 177.302551 0.005683 0.019460 +E 5830.000000 60.000000 23.898197 177.344376 0.005822 0.019938 +E 5840.000000 60.000000 23.890984 177.337479 0.006094 0.020874 +E 5850.000000 60.000000 23.867531 177.351898 0.006053 0.020741 +E 5860.000000 60.000000 23.862738 177.337570 0.006086 0.020854 +E 5870.000000 60.000000 23.841705 177.314804 0.006152 0.021085 +E 5880.000000 60.000000 23.818718 177.382614 0.006095 0.020899 +E 5890.000000 60.000000 23.815479 177.379471 0.006076 0.020835 +E 5900.000000 60.000000 23.781294 177.420197 0.006285 0.021562 +E 5910.000000 60.000000 23.773394 177.407562 0.006415 0.022011 +E 5920.000000 60.000000 23.788116 177.377213 0.006414 0.022003 +E 5930.000000 60.000000 23.763622 177.433228 0.006316 0.021674 +E 5940.000000 60.000000 23.749893 177.401764 0.006223 0.021361 +E 5950.000000 60.000000 23.744230 177.403946 0.006146 0.021097 +E 5960.000000 60.000000 23.732576 177.396774 0.006163 0.021161 +E 5970.000000 60.000000 23.711048 177.412292 0.006269 0.021531 +E 5980.000000 60.000000 23.695925 177.415863 0.006323 0.021722 +E 5990.000000 60.000000 23.695963 177.418259 0.006326 0.021733 +E 6000.000000 60.000000 23.678715 177.423752 0.006336 0.021772 +E 6010.000000 60.000000 23.655920 177.462936 0.006296 0.021642 +E 6020.000000 60.000000 23.660049 177.462341 0.006220 0.021380 +E 6030.000000 60.000000 23.650368 177.466461 0.006133 0.021085 +E 6040.000000 60.000000 23.633137 177.446121 0.006110 0.021012 +E 6050.000000 60.000000 23.623165 177.473923 0.006236 0.021448 +E 6060.000000 60.000000 23.595778 177.475403 0.006279 0.021605 +E 6070.000000 60.000000 23.590128 177.470291 0.006287 0.021632 +E 6080.000000 60.000000 23.586021 177.474121 0.006307 0.021703 +E 6090.000000 60.000000 23.579075 177.509659 0.006331 0.021791 +E 6100.000000 60.000000 23.561781 177.493469 0.006314 0.021738 +E 6110.000000 60.000000 23.542959 177.461365 0.006281 0.021629 +E 6120.000000 60.000000 23.533670 177.503754 0.006267 0.021586 +E 6130.000000 60.000000 23.529503 177.524384 0.006257 0.021551 +E 6140.000000 60.000000 23.523209 177.484436 0.006238 0.021489 +E 6150.000000 60.000000 23.507402 177.506241 0.006278 0.021631 +E 6160.000000 60.000000 23.480627 177.505173 0.006341 0.021857 +E 6170.000000 60.000000 23.485172 177.505722 0.006371 0.021961 +E 6180.000000 60.000000 23.481394 177.540756 0.006383 0.022003 +E 6190.000000 60.000000 23.465061 177.529129 0.006407 0.022091 +E 6200.000000 60.000000 23.448406 177.549957 0.006381 0.022008 +E 6210.000000 60.000000 23.434111 177.552704 0.006390 0.022046 +E 6220.000000 60.000000 23.440290 177.529083 0.006414 0.022125 +E 6230.000000 60.000000 23.433304 177.560608 0.006381 0.022013 +E 6240.000000 60.000000 23.407011 177.528931 0.006366 0.021972 +E 6250.000000 60.000000 23.401293 177.560349 0.006420 0.022160 +E 6260.000000 60.000000 23.393383 177.533539 0.006463 0.022311 +E 6270.000000 60.000000 23.374384 177.520966 0.006470 0.022341 +E 6280.000000 60.000000 23.360737 177.588531 0.006466 0.022334 +E 6290.000000 60.000000 23.359924 177.578293 0.006467 0.022339 +E 6300.000000 60.000000 23.355879 177.538879 0.006470 0.022349 +E 6310.000000 60.000000 23.333220 177.552902 0.006510 0.022496 +E 6320.000000 60.000000 23.330441 177.615753 0.006522 0.022540 +E 6330.000000 60.000000 23.313251 177.597107 0.006502 0.022475 +E 6340.000000 60.000000 23.329514 177.591232 0.006505 0.022484 +E 6350.000000 60.000000 23.306328 177.618011 0.006510 0.022509 +E 6360.000000 60.000000 23.279446 177.609741 0.006493 0.022459 +E 6370.000000 60.000000 23.271742 177.645523 0.006482 0.022422 +E 6380.000000 60.000000 23.262863 177.620682 0.006491 0.022458 +E 6390.000000 60.000000 23.269136 177.634247 0.006489 0.022449 +E 6400.000000 60.000000 23.257414 177.624039 0.006488 0.022450 +E 6410.000000 60.000000 23.237925 177.624390 0.006503 0.022510 +E 6420.000000 60.000000 23.241005 177.613876 0.006523 0.022577 +E 6430.000000 60.000000 23.225437 177.601883 0.006519 0.022570 +E 6440.000000 60.000000 23.225410 177.612579 0.006520 0.022575 +E 6450.000000 60.000000 23.210098 177.665863 0.006532 0.022621 +E 6460.000000 60.000000 23.202560 177.675339 0.006529 0.022615 +E 6470.000000 60.000000 23.201223 177.619400 0.006527 0.022609 +E 6480.000000 60.000000 23.189463 177.664993 0.006520 0.022588 +E 6490.000000 60.000000 23.179300 177.682999 0.006513 0.022568 +E 6500.000000 60.000000 23.169668 177.619186 0.006510 0.022561 +E 6510.000000 60.000000 23.166235 177.629623 0.006513 0.022574 +E 6520.000000 60.000000 23.147350 177.651215 0.006510 0.022569 +E 6530.000000 60.000000 23.121916 177.668320 0.006520 0.022613 +E 6540.000000 60.000000 23.098846 177.651459 0.006584 0.022844 +E 6550.000000 60.000000 23.116974 177.658005 0.005835 0.020242 +E 6560.000000 60.000000 23.119995 177.680695 0.004091 0.014192 +E 6570.000000 60.000000 23.105341 177.692612 0.003950 0.013706 +E 6580.000000 60.000000 23.100025 177.717133 0.005396 0.018724 +E 6590.000000 60.000000 23.098967 177.730362 0.006463 0.022426 +E 6600.000000 60.000000 23.086119 177.661743 0.006505 0.022578 +E 6610.000000 60.000000 23.064373 177.687378 0.006514 0.022616 +E 6620.000000 60.000000 23.049652 177.703949 0.006501 0.022578 +E 6630.000000 60.000000 23.052704 177.703857 0.006491 0.022543 +E 6640.000000 60.000000 23.047125 177.746490 0.006495 0.022558 +E 6650.000000 60.000000 23.044401 177.782654 0.006496 0.022565 +E 6660.000000 60.000000 23.042824 177.752090 0.006495 0.022561 +E 6670.000000 60.000000 23.038898 177.714905 0.006493 0.022557 +E 6680.000000 60.000000 23.020607 177.714157 0.006491 0.022556 +E 6690.000000 60.000000 23.009989 177.782150 0.006477 0.022512 +E 6700.000000 60.000000 22.996492 177.802322 0.006462 0.022464 +E 6710.000000 60.000000 22.981531 177.754059 0.006466 0.022486 +E 6720.000000 60.000000 22.974287 177.727036 0.006459 0.022465 +E 6730.000000 60.000000 22.975689 177.698898 0.006455 0.022448 +E 6740.000000 60.000000 22.975653 177.730789 0.006463 0.022480 +E 6750.000000 60.000000 22.945745 177.771194 0.006478 0.022541 +E 6760.000000 60.000000 22.942505 177.813614 0.006479 0.022545 +E 6770.000000 60.000000 22.940771 177.823914 0.006469 0.022513 +E 6780.000000 60.000000 22.932777 177.777344 0.006457 0.022475 +E 6790.000000 60.000000 22.922951 177.777313 0.006443 0.022431 +E 6800.000000 60.000000 22.912207 177.836395 0.006440 0.022424 +E 6810.000000 60.000000 22.919270 177.780273 0.006433 0.022399 +E 6820.000000 60.000000 22.912466 177.785614 0.006436 0.022410 +E 6830.000000 60.000000 22.887220 177.809402 0.006440 0.022433 +E 6840.000000 60.000000 22.896828 177.766602 0.006427 0.022385 +E 6850.000000 60.000000 22.887571 177.769440 0.006401 0.022298 +E 6860.000000 60.000000 22.882530 177.823517 0.006400 0.022298 +E 6870.000000 60.000000 22.857487 177.828461 0.006424 0.022392 +E 6880.000000 60.000000 22.846786 177.768524 0.006435 0.022435 +E 6890.000000 60.000000 22.846447 177.848480 0.006435 0.022434 +E 6900.000000 60.000000 22.849731 177.828506 0.006440 0.022450 +E 6910.000000 60.000000 22.833378 177.841690 0.006443 0.022467 +E 6920.000000 60.000000 22.817631 177.864685 0.006436 0.022451 +E 6930.000000 60.000000 22.815670 177.844238 0.006432 0.022437 +E 6940.000000 60.000000 22.813316 177.863388 0.006426 0.022416 +E 6950.000000 60.000000 22.802128 177.889282 0.006436 0.022456 +E 6960.000000 60.000000 22.791403 177.863434 0.006438 0.022469 +E 6970.000000 60.000000 22.779713 177.856445 0.006430 0.022447 +E 6980.000000 60.000000 22.772717 177.849625 0.006423 0.022425 +E 6990.000000 60.000000 22.765287 177.901627 0.006429 0.022448 +E 7000.000000 60.000000 22.758118 177.877548 0.006439 0.022484 +E 7010.000000 60.000000 22.753958 177.852234 0.006451 0.022530 +E 7020.000000 60.000000 22.731899 177.906143 0.006458 0.022563 +E 7030.000000 60.000000 22.724483 177.909561 0.006456 0.022559 +E 7040.000000 60.000000 22.714182 177.916306 0.006469 0.022607 +E 7050.000000 60.000000 22.721264 177.877258 0.006477 0.022633 +E 7060.000000 60.000000 22.718897 177.883606 0.006479 0.022643 +E 7070.000000 60.000000 22.699594 177.908157 0.006459 0.022582 +E 7080.000000 60.000000 22.709183 177.936523 0.006459 0.022576 +E 7090.000000 60.000000 22.716799 177.877060 0.006473 0.022623 +E 7100.000000 60.000000 22.692532 177.900482 0.006493 0.022703 +E 7110.000000 60.000000 22.692587 177.915924 0.006495 0.022710 +E 7120.000000 60.000000 22.696188 177.875168 0.006493 0.022705 +E 7130.000000 60.000000 22.681896 177.881073 0.006496 0.022721 +E 7140.000000 60.000000 22.651535 177.912521 0.006498 0.022740 +E 7150.000000 60.000000 22.640230 177.916962 0.006495 0.022732 +E 7160.000000 60.000000 22.659286 177.921967 0.006494 0.022724 +E 7170.000000 60.000000 22.660364 177.924316 0.006513 0.022790 +E 7180.000000 60.000000 22.633854 177.913361 0.006518 0.022818 +E 7190.000000 60.000000 22.631826 177.938492 0.006521 0.022828 +E 7200.000000 60.000000 22.631823 177.986740 0.006531 0.022865 +E 7210.000000 60.000000 22.625467 177.967117 0.006546 0.022921 +E 7220.000000 60.000000 22.627110 177.966080 0.006545 0.022918 +E 7230.000000 60.000000 22.618288 177.910858 0.006561 0.022976 +E 7240.000000 60.000000 22.601906 177.901291 0.006562 0.022988 +E 7250.000000 60.000000 22.600391 177.953644 0.006535 0.022893 +E 7260.000000 60.000000 22.581484 177.972794 0.006511 0.022815 +E 7270.000000 60.000000 22.575077 177.949448 0.006527 0.022873 +E 7280.000000 60.000000 22.580242 178.011246 0.006532 0.022892 +E 7290.000000 60.000000 22.563341 177.984741 0.006529 0.022888 +E 7300.000000 60.000000 22.566044 177.914383 0.006536 0.022910 +E 7310.000000 60.000000 22.581656 177.943008 0.006525 0.022868 +E 7320.000000 60.000000 22.561451 177.947510 0.006540 0.022929 +E 7330.000000 60.000000 22.541941 177.981613 0.006569 0.023037 +E 7340.000000 60.000000 22.545507 178.035965 0.006563 0.023014 +E 7350.000000 60.000000 22.535961 178.004929 0.006533 0.022914 +E 7360.000000 60.000000 22.541826 177.989120 0.006535 0.022920 +E 7370.000000 60.000000 22.533497 177.981964 0.006564 0.023027 +E 7380.000000 60.000000 22.520819 177.995850 0.006610 0.023193 +E 7390.000000 60.000000 22.527637 178.028534 0.006632 0.023268 +E 7400.000000 60.000000 22.515680 178.001816 0.006609 0.023194 +E 7410.000000 60.000000 22.516632 177.997742 0.006636 0.023288 +E 7420.000000 60.000000 22.511715 177.999191 0.006686 0.023466 +E 7430.000000 60.000000 22.507215 178.045364 0.006705 0.023532 +E 7440.000000 60.000000 22.487980 178.008713 0.006716 0.023579 +E 7450.000000 60.000000 22.483122 178.000549 0.006723 0.023609 +E 7460.000000 60.000000 22.493332 178.073715 0.006726 0.023613 +E 7470.000000 60.000000 22.483286 178.078110 0.006704 0.023543 +E 7480.000000 60.000000 22.485950 178.047211 0.006697 0.023517 +E 7490.000000 60.000000 22.477856 178.052338 0.006728 0.023629 +E 7500.000000 60.000000 22.466574 178.051498 0.006734 0.023654 +E 7510.000000 60.000000 22.461020 178.020828 0.006733 0.023655 +E 7520.000000 60.000000 22.462582 178.019623 0.006778 0.023812 +E 7530.000000 60.000000 22.443031 178.028366 0.006803 0.023907 +E 7540.000000 60.000000 22.439404 178.030609 0.006769 0.023790 +E 7550.000000 60.000000 22.426659 178.040207 0.006785 0.023852 +E 7560.000000 60.000000 22.428064 178.074707 0.006797 0.023895 +E 7570.000000 60.000000 22.422287 178.121841 0.006789 0.023870 +E 7580.000000 60.000000 22.416653 178.047180 0.006781 0.023844 +E 7590.000000 60.000000 22.408722 178.029800 0.006783 0.023854 +E 7600.000000 60.000000 22.412252 178.090332 0.006833 0.024028 +E 7610.000000 60.000000 22.410294 178.086914 0.006884 0.024209 +E 7620.000000 60.000000 22.411253 178.091995 0.006922 0.024345 +E 7630.000000 60.000000 22.402851 178.127304 0.006908 0.024298 +E 7640.000000 60.000000 22.391657 178.085999 0.006901 0.024278 +E 7650.000000 60.000000 22.385721 178.105148 0.006925 0.024365 +E 7660.000000 60.000000 22.373652 178.140991 0.006973 0.024541 +E 7670.000000 60.000000 22.385744 178.091293 0.007028 0.024730 +E 7680.000000 60.000000 22.374456 178.105667 0.007021 0.024712 +E 7690.000000 60.000000 22.364637 178.114838 0.006950 0.024466 +E 7700.000000 60.000000 22.374977 178.101624 0.006921 0.024359 +E 7710.000000 60.000000 22.369757 178.115387 0.006974 0.024549 +E 7720.000000 60.000000 22.349991 178.110718 0.007059 0.024856 +E 7730.000000 60.000000 22.337234 178.085754 0.007114 0.025057 +E 7740.000000 60.000000 22.346249 178.084793 0.007127 0.025099 +E 7750.000000 60.000000 22.342316 178.113373 0.007159 0.025214 +E 7760.000000 60.000000 22.335806 178.131699 0.007199 0.025359 +E 7770.000000 60.000000 22.331234 178.136078 0.007225 0.025452 +E 7780.000000 60.000000 22.321560 178.119537 0.007220 0.025437 +E 7790.000000 60.000000 22.322964 178.150238 0.007177 0.025288 +E 7800.000000 60.000000 22.308825 178.104187 0.007168 0.025263 +E 7810.000000 60.000000 22.312635 178.089493 0.007224 0.025459 +E 7820.000000 60.000000 22.293715 178.109055 0.007265 0.025610 +E 7830.000000 60.000000 22.310770 178.138260 0.007267 0.025613 +E 7840.000000 60.000000 22.299282 178.154770 0.007308 0.025762 +E 7850.000000 60.000000 22.301161 178.102005 0.007364 0.025957 +E 7860.000000 60.000000 22.290081 178.135117 0.007400 0.026091 +E 7870.000000 60.000000 22.279110 178.113815 0.007401 0.026101 +E 7880.000000 60.000000 22.282907 178.106873 0.007383 0.026034 +E 7890.000000 60.000000 22.265749 178.147705 0.007404 0.026117 +E 7900.000000 60.000000 22.264475 178.150223 0.007443 0.026256 +E 7910.000000 60.000000 22.270357 178.169449 0.007452 0.026286 +E 7920.000000 60.000000 22.267759 178.202713 0.007470 0.026352 +E 7930.000000 60.000000 22.260138 178.160355 0.007482 0.026398 +E 7940.000000 60.000000 22.243673 178.193069 0.007472 0.026369 +E 7950.000000 60.000000 22.255781 178.180283 0.007472 0.026365 +E 7960.000000 60.000000 22.247274 178.143692 0.007518 0.026531 +E 7970.000000 60.000000 22.226290 178.139160 0.007566 0.026711 +E 7980.000000 60.000000 22.239092 178.148804 0.007589 0.026785 +E 7990.000000 60.000000 22.227200 178.153000 0.007609 0.026863 +E 8000.000000 60.000000 22.221407 178.129761 0.007605 0.026853 +E 8010.000000 60.000000 22.216787 178.183044 0.007598 0.026829 +E 8020.000000 60.000000 22.207472 178.178635 0.007655 0.027035 +E 8030.000000 60.000000 22.211636 178.155670 0.007699 0.027190 +E 8040.000000 60.000000 22.220121 178.169495 0.007694 0.027168 +E 8050.000000 60.000000 22.219318 178.151688 0.007681 0.027125 +E 8060.000000 60.000000 22.233061 178.195190 0.007703 0.027196 +E 8070.000000 60.000000 22.205975 178.232544 0.007780 0.027480 +E 8080.000000 60.000000 22.177593 178.199966 0.007821 0.027639 +E 8090.000000 60.000000 22.192579 178.205048 0.007765 0.027433 +E 8100.000000 60.000000 22.180664 178.242676 0.007783 0.027504 +E 8110.000000 60.000000 22.172976 178.229630 0.007829 0.027671 +E 8120.000000 60.000000 22.168791 178.255569 0.007880 0.027855 +E 8130.000000 60.000000 22.169146 178.217239 0.007875 0.027838 +E 8140.000000 60.000000 22.165722 178.222824 0.007832 0.027687 +E 8150.000000 60.000000 22.174417 178.193665 0.007853 0.027758 +E 8160.000000 60.000000 22.158499 178.167007 0.007921 0.028007 +E 8170.000000 60.000000 22.167601 178.189270 0.007954 0.028118 +E 8180.000000 60.000000 22.167137 178.231918 0.007934 0.028048 +E 8190.000000 60.000000 22.137419 178.193207 0.007935 0.028066 +E 8200.000000 60.000000 22.139910 178.195160 0.007969 0.028187 +E 8210.000000 60.000000 22.122141 178.233658 0.008009 0.028338 +E 8220.000000 60.000000 22.137650 178.283386 0.008028 0.028399 +E 8230.000000 60.000000 22.128965 178.225677 0.008008 0.028330 +E 8240.000000 60.000000 22.146130 178.209824 0.007995 0.028279 +E 8250.000000 60.000000 22.129721 178.253845 0.008058 0.028509 +E 8260.000000 60.000000 22.120701 178.261139 0.008110 0.028698 +E 8270.000000 60.000000 22.110596 178.243576 0.008090 0.028633 +E 8280.000000 60.000000 22.108934 178.226852 0.008057 0.028518 +E 8290.000000 60.000000 22.101248 178.203430 0.008068 0.028560 +E 8300.000000 60.000000 22.117302 178.255890 0.008141 0.028810 +E 8310.000000 60.000000 22.109293 178.255783 0.008195 0.029008 +E 8320.000000 60.000000 22.097250 178.233124 0.008176 0.028945 +E 8330.000000 60.000000 22.085115 178.262283 0.008132 0.028798 +E 8340.000000 60.000000 22.081276 178.318878 0.008119 0.028752 +E 8350.000000 60.000000 22.082947 178.253342 0.008159 0.028895 +E 8360.000000 60.000000 22.079185 178.259857 0.008228 0.029142 +E 8370.000000 60.000000 22.070007 178.248550 0.008212 0.029088 +E 8380.000000 60.000000 22.059643 178.276672 0.008196 0.029038 +E 8390.000000 60.000000 22.064960 178.303162 0.008217 0.029111 +E 8400.000000 60.000000 22.075584 178.257080 0.008285 0.029348 +E 8410.000000 60.000000 22.058067 178.320221 0.008325 0.029499 +E 8420.000000 60.000000 22.055265 178.337006 0.008308 0.029438 +E 8430.000000 60.000000 22.047005 178.285797 0.008282 0.029351 +E 8440.000000 60.000000 22.058552 178.297897 0.008281 0.029344 +E 8450.000000 60.000000 22.060001 178.288757 0.008327 0.029506 +E 8460.000000 60.000000 22.059221 178.236862 0.008353 0.029598 +E 8470.000000 60.000000 22.059013 178.254166 0.008335 0.029536 +E 8480.000000 60.000000 22.046255 178.248657 0.008304 0.029433 +E 8490.000000 60.000000 22.041340 178.292999 0.008370 0.029670 +E 8500.000000 60.000000 22.034254 178.296921 0.008517 0.030196 +E 8510.000000 60.000000 22.034958 178.269608 0.008566 0.030369 +E 8520.000000 60.000000 22.029194 178.291779 0.008392 0.029754 +E 8530.000000 60.000000 22.005846 178.283936 0.008208 0.029114 +E 8540.000000 60.000000 22.005428 178.308716 0.008187 0.029040 +E 8550.000000 60.000000 22.026810 178.336319 0.008299 0.029426 +E 8560.000000 60.000000 22.012371 178.371979 0.008391 0.029763 +E 8570.000000 60.000000 22.006716 178.310272 0.008418 0.029861 +E 8580.000000 60.000000 21.983583 178.309738 0.008391 0.029779 +E 8590.000000 60.000000 22.001495 178.379669 0.008364 0.029673 +E 8600.000000 60.000000 21.996559 178.341400 0.008392 0.029775 +E 8610.000000 60.000000 21.981592 178.290634 0.008467 0.030049 +E 8620.000000 60.000000 21.994213 178.367874 0.008499 0.030158 +E 8630.000000 60.000000 21.990992 178.384766 0.008497 0.030153 +E 8640.000000 60.000000 21.996542 178.299515 0.008443 0.029958 +E 8650.000000 60.000000 21.979038 178.370605 0.008422 0.029893 +E 8660.000000 60.000000 21.973379 178.347839 0.008464 0.030046 +E 8670.000000 60.000000 21.964733 178.325546 0.008528 0.030279 +E 8680.000000 60.000000 21.958700 178.327301 0.008539 0.030322 +E 8690.000000 60.000000 21.956247 178.331818 0.008528 0.030284 +E 8700.000000 60.000000 21.966236 178.347031 0.008502 0.030185 +E 8710.000000 60.000000 21.972345 178.337418 0.008518 0.030238 +E 8720.000000 60.000000 21.983925 178.297623 0.008562 0.030392 +E 8730.000000 60.000000 21.968580 178.384735 0.008568 0.030420 +E 8740.000000 60.000000 21.948498 178.365723 0.008538 0.030324 +E 8750.000000 60.000000 21.949593 178.399323 0.008519 0.030258 +E 8760.000000 60.000000 21.942213 178.371964 0.008524 0.030279 +E 8770.000000 60.000000 21.949587 178.359360 0.008568 0.030433 +E 8780.000000 60.000000 21.944950 178.383377 0.008614 0.030599 +E 8790.000000 60.000000 21.942911 178.363388 0.008600 0.030550 +E 8800.000000 60.000000 21.951010 178.369354 0.008589 0.030508 +E 8810.000000 60.000000 21.947163 178.374283 0.008625 0.030638 +E 8820.000000 60.000000 21.939209 178.337433 0.008663 0.030776 +E 8830.000000 60.000000 21.937107 178.415131 0.008693 0.030884 +E 8840.000000 60.000000 21.919489 178.372940 0.008702 0.030929 +E 8850.000000 60.000000 21.920948 178.402130 0.008723 0.031000 +E 8860.000000 60.000000 21.900164 178.360748 0.008711 0.030970 +E 8870.000000 60.000000 21.900656 178.367233 0.008685 0.030878 +E 8880.000000 60.000000 21.900600 178.354385 0.008688 0.030891 +E 8890.000000 60.000000 21.892473 178.416412 0.008733 0.031054 +E 8900.000000 60.000000 21.899248 178.373550 0.008759 0.031143 +E 8910.000000 60.000000 21.901951 178.346756 0.008776 0.031204 +E 8920.000000 60.000000 21.885592 178.393448 0.008777 0.031217 +E 8930.000000 60.000000 21.875824 178.366333 0.008780 0.031232 +E 8940.000000 60.000000 21.894192 178.349716 0.008788 0.031251 +E 8950.000000 60.000000 21.882618 178.457840 0.008817 0.031361 +E 8960.000000 60.000000 21.885450 178.358368 0.008844 0.031455 +E 8970.000000 60.000000 21.888691 178.398315 0.008860 0.031512 +E 8980.000000 60.000000 21.860714 178.416428 0.008887 0.031625 +E 8990.000000 60.000000 21.848423 178.401764 0.008876 0.031592 +E 9000.000000 60.000000 21.851488 178.400177 0.008909 0.031708 +E 9010.000000 60.000000 21.865358 178.447693 0.008931 0.031778 +E 9020.000000 60.000000 21.848917 178.443222 0.008944 0.031835 +E 9030.000000 60.000000 21.859776 178.440460 0.008977 0.031948 +E 9040.000000 60.000000 21.871992 178.421265 0.008980 0.031952 +E 9050.000000 60.000000 21.856800 178.412506 0.008969 0.031920 +E 9060.000000 60.000000 21.827568 178.393066 0.009005 0.032067 +E 9070.000000 60.000000 21.836170 178.448639 0.009038 0.032180 +E 9080.000000 60.000000 21.839273 178.444199 0.009086 0.032350 +E 9090.000000 60.000000 21.835545 178.459427 0.009129 0.032505 +E 9100.000000 60.000000 21.854099 178.379639 0.009127 0.032485 +E 9110.000000 60.000000 21.828424 178.428101 0.009110 0.032439 +E 9120.000000 60.000000 21.817316 178.498428 0.009135 0.032538 +E 9130.000000 60.000000 21.812695 178.432693 0.009177 0.032690 +E 9140.000000 60.000000 21.849817 178.423492 0.009237 0.032882 +E 9150.000000 60.000000 21.846176 178.450516 0.009235 0.032877 +E 9160.000000 60.000000 21.845827 178.488297 0.009201 0.032756 +E 9170.000000 60.000000 21.816954 178.420578 0.009193 0.032745 +E 9180.000000 60.000000 21.800295 178.427536 0.009210 0.032817 +E 9190.000000 60.000000 21.824718 178.472015 0.009254 0.032958 +E 9200.000000 60.000000 21.795780 178.482681 0.009331 0.033250 +E 9210.000000 60.000000 21.806179 178.436310 0.009367 0.033373 +E 9220.000000 60.000000 21.815031 178.436234 0.009416 0.033543 +E 9230.000000 60.000000 21.814131 178.505341 0.009437 0.033620 +E 9240.000000 60.000000 21.814722 178.437851 0.009449 0.033663 +E 9250.000000 60.000000 21.796761 178.407089 0.009473 0.033759 +E 9260.000000 60.000000 21.802351 178.500381 0.009512 0.033895 +E 9270.000000 60.000000 21.802538 178.438553 0.009565 0.034084 +E 9280.000000 60.000000 21.791098 178.472015 0.009613 0.034263 +E 9290.000000 60.000000 21.788612 178.517960 0.009640 0.034361 +E 9300.000000 60.000000 21.788885 178.458649 0.009658 0.034425 +E 9310.000000 60.000000 21.775236 178.399750 0.009681 0.034516 +E 9320.000000 60.000000 21.785513 178.433090 0.009690 0.034541 +E 9330.000000 60.000000 21.776371 178.456390 0.009729 0.034686 +E 9340.000000 60.000000 21.774694 178.465744 0.009767 0.034822 +E 9350.000000 60.000000 21.753618 178.471664 0.009834 0.035075 +E 9360.000000 60.000000 21.761509 178.537064 0.009890 0.035273 +E 9370.000000 60.000000 21.777344 178.452057 0.009919 0.035363 +E 9380.000000 60.000000 21.765638 178.494293 0.009930 0.035410 +E 9390.000000 60.000000 21.749300 178.530975 0.009954 0.035507 +E 9400.000000 60.000000 21.756546 178.607651 0.010026 0.035761 +E 9410.000000 60.000000 21.772091 178.543015 0.010075 0.035927 +E 9420.000000 60.000000 21.726353 178.449493 0.010146 0.036208 +E 9430.000000 60.000000 21.748781 178.495346 0.010186 0.036340 +E 9440.000000 60.000000 21.755589 178.544983 0.010198 0.036377 +E 9450.000000 60.000000 21.755730 178.496674 0.010236 0.036512 +E 9460.000000 60.000000 21.734049 178.498550 0.010291 0.036723 +E 9470.000000 60.000000 21.718073 178.528732 0.010355 0.036965 +E 9480.000000 60.000000 21.746254 178.545120 0.010402 0.037112 +E 9490.000000 60.000000 21.733887 178.535629 0.010468 0.037355 +E 9500.000000 60.000000 21.730356 178.563721 0.010515 0.037528 +E 9510.000000 60.000000 21.740574 178.530548 0.010552 0.037651 +E 9520.000000 60.000000 21.754387 178.477295 0.010581 0.037747 +E 9530.000000 60.000000 21.712873 178.548370 0.010658 0.038050 +E 9540.000000 60.000000 21.716330 178.580536 0.010738 0.038336 +E 9550.000000 60.000000 21.697985 178.483093 0.010828 0.038670 +E 9560.000000 60.000000 21.713886 178.547333 0.010844 0.038713 +E 9570.000000 60.000000 21.700169 178.424988 0.010871 0.038822 +E 9580.000000 60.000000 21.703438 178.563400 0.010893 0.038900 +E 9590.000000 60.000000 21.715342 178.519913 0.010936 0.039045 +E 9600.000000 60.000000 21.696445 178.516678 0.010998 0.039280 +E 9610.000000 60.000000 21.692188 178.506989 0.011041 0.039437 +E 9620.000000 60.000000 21.706413 178.562256 0.011104 0.039651 +E 9630.000000 60.000000 21.670055 178.517212 0.011171 0.039918 +E 9640.000000 60.000000 21.695177 178.509094 0.011207 0.040030 +E 9650.000000 60.000000 21.694691 178.541336 0.011268 0.040245 +E 9660.000000 60.000000 21.680088 178.476364 0.011309 0.040405 +E 9670.000000 60.000000 21.690182 178.509735 0.011397 0.040712 +E 9680.000000 60.000000 21.669323 178.532700 0.011495 0.041080 +E 9690.000000 60.000000 21.687120 178.468475 0.011542 0.041232 +E 9700.000000 60.000000 21.703526 178.432632 0.011579 0.041354 +E 9710.000000 60.000000 21.679989 178.605270 0.011661 0.041663 +E 9720.000000 60.000000 21.652632 178.618408 0.011743 0.041980 +E 9730.000000 60.000000 21.666468 178.463943 0.011819 0.042240 +E 9740.000000 60.000000 21.686981 178.554581 0.011893 0.042490 +E 9750.000000 60.000000 21.650053 178.569183 0.011948 0.042716 +E 9760.000000 60.000000 21.638020 178.543671 0.012025 0.043001 +E 9770.000000 60.000000 21.655807 178.548386 0.012102 0.043262 +E 9780.000000 60.000000 21.689587 178.574188 0.012154 0.043420 +E 9790.000000 60.000000 21.681307 178.589767 0.012232 0.043707 +E 9800.000000 60.000000 21.647217 178.656036 0.012336 0.044108 +E 9810.000000 60.000000 21.642618 178.609039 0.012443 0.044495 +E 9820.000000 60.000000 21.665108 178.533264 0.012547 0.044848 +E 9830.000000 60.000000 21.651329 178.569427 0.012603 0.045058 +E 9840.000000 60.000000 21.646349 178.506210 0.012678 0.045331 +E 9850.000000 60.000000 21.635328 178.545120 0.012784 0.045720 +E 9860.000000 60.000000 21.631512 178.550064 0.012865 0.046014 +E 9870.000000 60.000000 21.619684 178.583710 0.012996 0.046493 +E 9880.000000 60.000000 21.633751 178.523621 0.013098 0.046846 +E 9890.000000 60.000000 21.607098 178.484573 0.013198 0.047229 +E 9900.000000 60.000000 21.641798 178.621078 0.013248 0.047375 +E 9910.000000 60.000000 21.607477 178.641418 0.013357 0.047799 +E 9920.000000 60.000000 21.637650 178.673798 0.013476 0.048196 +E 9930.000000 60.000000 21.638990 178.596039 0.013627 0.048737 +E 9940.000000 60.000000 21.616859 178.647293 0.013760 0.049232 +E 9950.000000 60.000000 21.594112 178.524567 0.013865 0.049631 +E 9960.000000 60.000000 21.589748 178.573761 0.014004 0.050132 +E 9970.000000 60.000000 21.638680 178.541855 0.014083 0.050368 +E 9980.000000 60.000000 21.613903 178.552582 0.014257 0.051016 +E 9990.000000 60.000000 21.600178 178.566803 0.014414 0.051592 +E 10000.000000 60.000000 21.617170 178.655869 0.014556 0.052083 +E 10025.000000 60.000000 21.613400 178.589783 0.007150 0.025594 +E 10050.000000 60.000000 21.601683 178.616150 0.006984 0.025005 +E 10075.000000 60.000000 21.600893 178.585358 0.006778 0.024269 +E 10100.000000 60.000000 21.597979 178.594193 0.006621 0.023706 +E 10125.000000 60.000000 21.594393 178.617310 0.006483 0.023216 +E 10150.000000 60.000000 21.593006 178.609543 0.006313 0.022608 +E 10175.000000 60.000000 21.588476 178.627548 0.006164 0.022075 +E 10200.000000 60.000000 21.580761 178.671432 0.006033 0.021609 +E 10225.000000 60.000000 21.572716 178.650696 0.005882 0.021071 +E 10250.000000 60.000000 21.563210 178.639053 0.005746 0.020588 +E 10275.000000 60.000000 21.549759 178.666565 0.005641 0.020216 +E 10300.000000 60.000000 21.546684 178.653809 0.005501 0.019719 +E 10325.000000 60.000000 21.547503 178.627777 0.005356 0.019196 +E 10350.000000 60.000000 21.543507 178.630356 0.005238 0.018777 +E 10375.000000 60.000000 21.543716 178.642929 0.005127 0.018377 +E 10400.000000 60.000000 21.547850 178.664688 0.005021 0.017997 +E 10425.000000 60.000000 21.534182 178.645050 0.004924 0.017654 +E 10450.000000 60.000000 21.523212 178.634598 0.004829 0.017316 +E 10475.000000 60.000000 21.521147 178.651443 0.004733 0.016972 +E 10500.000000 60.000000 21.517281 178.659439 0.004644 0.016656 +E 10525.000000 60.000000 21.513479 178.665466 0.004560 0.016357 +E 10550.000000 60.000000 21.513994 178.680710 0.004482 0.016076 +E 10575.000000 60.000000 21.511318 178.689835 0.004413 0.015827 +E 10600.000000 60.000000 21.506002 178.694000 0.004350 0.015605 +E 10625.000000 60.000000 21.505732 178.737381 0.004264 0.015295 +E 10650.000000 60.000000 21.501709 178.735519 0.004188 0.015025 +E 10675.000000 60.000000 21.490791 178.653778 0.004131 0.014822 +E 10700.000000 60.000000 21.483501 178.649109 0.004057 0.014560 +E 10725.000000 60.000000 21.479216 178.664749 0.003986 0.014306 +E 10750.000000 60.000000 21.482841 178.673325 0.003938 0.014134 +E 10775.000000 60.000000 21.478876 178.690079 0.003868 0.013884 +E 10800.000000 60.000000 21.470091 178.711472 0.003785 0.013589 +E 10825.000000 60.000000 21.462147 178.703979 0.003730 0.013391 +E 10850.000000 60.000000 21.457048 178.700943 0.003670 0.013178 +E 10875.000000 60.000000 21.455484 178.703583 0.003604 0.012943 +E 10900.000000 60.000000 21.449657 178.714798 0.003556 0.012770 +E 10925.000000 60.000000 21.445665 178.723343 0.003506 0.012593 +E 10950.000000 60.000000 21.448856 178.720398 0.003444 0.012368 +E 10975.000000 60.000000 21.443577 178.724289 0.003396 0.012198 +E 11000.000000 60.000000 21.435415 178.732910 0.003356 0.012056 +E 11025.000000 60.000000 21.436747 178.756958 0.003318 0.011917 +E 11050.000000 60.000000 21.431517 178.751984 0.003285 0.011801 +E 11075.000000 60.000000 21.420225 178.720230 0.003258 0.011706 +E 11100.000000 60.000000 21.422382 178.720306 0.003209 0.011530 +E 11125.000000 60.000000 21.423105 178.726532 0.003171 0.011393 +E 11150.000000 60.000000 21.419558 178.739792 0.003154 0.011331 +E 11175.000000 60.000000 21.412273 178.739136 0.003128 0.011242 +E 11200.000000 60.000000 21.405275 178.734924 0.003104 0.011154 +E 11225.000000 60.000000 21.403570 178.732635 0.003089 0.011102 +E 11250.000000 60.000000 21.400923 178.745026 0.003067 0.011025 +E 11275.000000 60.000000 21.397530 178.765076 0.003042 0.010936 +E 11300.000000 60.000000 21.389713 178.758133 0.003039 0.010926 +E 11325.000000 60.000000 21.383389 178.760880 0.003028 0.010886 +E 11350.000000 60.000000 21.378786 178.774673 0.003007 0.010812 +E 11375.000000 60.000000 21.381521 178.785431 0.002995 0.010770 +E 11400.000000 60.000000 21.382149 178.790024 0.002984 0.010729 +E 11425.000000 60.000000 21.376387 178.782333 0.002970 0.010678 +E 11450.000000 60.000000 21.368481 178.776291 0.002956 0.010629 +E 11475.000000 60.000000 21.361895 178.770996 0.002940 0.010574 +E 11500.000000 60.000000 21.365162 178.766525 0.002917 0.010491 +E 11525.000000 60.000000 21.360298 178.771576 0.002898 0.010422 +E 11550.000000 60.000000 21.350372 178.783051 0.002880 0.010362 +E 11575.000000 60.000000 21.349922 178.800262 0.002868 0.010317 +E 11600.000000 60.000000 21.348938 178.807129 0.002847 0.010241 +E 11625.000000 60.000000 21.347342 178.802032 0.002816 0.010130 +E 11650.000000 60.000000 21.338564 178.816284 0.002799 0.010071 +E 11675.000000 60.000000 21.330969 178.827591 0.002781 0.010009 +E 11700.000000 60.000000 21.327593 178.827942 0.002758 0.009925 +E 11725.000000 60.000000 21.328339 178.816956 0.002743 0.009869 +E 11750.000000 60.000000 21.329550 178.805115 0.002727 0.009813 +E 11775.000000 60.000000 21.327139 178.805252 0.002700 0.009715 +E 11800.000000 60.000000 21.323463 178.815277 0.002675 0.009627 +E 11825.000000 60.000000 21.318907 178.830612 0.002652 0.009546 +E 11850.000000 60.000000 21.311800 178.836609 0.002631 0.009468 +E 11875.000000 60.000000 21.309372 178.832397 0.002609 0.009393 +E 11900.000000 60.000000 21.311697 178.817841 0.002589 0.009319 +E 11925.000000 60.000000 21.311867 178.820206 0.002565 0.009233 +E 11950.000000 60.000000 21.308857 178.824188 0.002545 0.009159 +E 11975.000000 60.000000 21.300665 178.828705 0.002529 0.009105 +E 12000.000000 60.000000 21.294697 178.839752 0.002513 0.009046 +E 12025.000000 60.000000 21.290438 178.847687 0.002496 0.008986 +E 12050.000000 60.000000 21.289829 178.840942 0.002478 0.008922 +E 12075.000000 60.000000 21.286734 178.849518 0.002466 0.008880 +E 12100.000000 60.000000 21.282536 178.861389 0.002456 0.008844 +E 12125.000000 60.000000 21.278782 178.845490 0.002440 0.008787 +E 12150.000000 60.000000 21.278687 178.847595 0.002425 0.008732 +E 12175.000000 60.000000 21.281370 178.863510 0.002410 0.008678 +E 12200.000000 60.000000 21.273312 178.861145 0.002405 0.008662 +E 12225.000000 60.000000 21.268759 178.864105 0.002399 0.008639 +E 12250.000000 60.000000 21.268482 178.873627 0.002389 0.008605 +E 12275.000000 60.000000 21.269075 178.862457 0.002386 0.008594 +E 12300.000000 60.000000 21.266726 178.856293 0.002386 0.008594 +E 12325.000000 60.000000 21.258284 178.865219 0.002390 0.008609 +E 12350.000000 60.000000 21.251062 178.873978 0.002384 0.008588 +E 12375.000000 60.000000 21.245384 178.879883 0.002380 0.008576 +E 12400.000000 60.000000 21.243769 178.876144 0.002394 0.008626 +E 12425.000000 60.000000 21.243036 178.869293 0.002389 0.008607 +E 12450.000000 60.000000 21.242037 178.863983 0.002377 0.008564 +E 12475.000000 60.000000 21.235929 178.881073 0.002387 0.008600 +E 12500.000000 60.000000 21.236635 178.889847 0.002379 0.008571 +E 12525.000000 60.000000 21.242243 178.892349 0.002358 0.008495 +E 12550.000000 60.000000 21.234257 178.906555 0.002352 0.008474 +E 12575.000000 60.000000 21.230221 178.907639 0.002343 0.008442 +E 12600.000000 60.000000 21.230721 178.893890 0.002331 0.008398 +E 12625.000000 60.000000 21.228958 178.892807 0.002325 0.008377 +E 12650.000000 60.000000 21.226398 178.894714 0.002317 0.008347 +E 12675.000000 60.000000 21.222862 178.899734 0.002303 0.008297 +E 12700.000000 60.000000 21.216702 178.903320 0.002287 0.008243 +E 12725.000000 60.000000 21.212925 178.906952 0.002276 0.008202 +E 12750.000000 60.000000 21.216877 178.911530 0.002277 0.008204 +E 12775.000000 60.000000 21.212503 178.910324 0.002264 0.008159 +E 12800.000000 60.000000 21.205692 178.908264 0.002248 0.008102 +E 12825.000000 60.000000 21.201622 178.911819 0.002238 0.008067 +E 12850.000000 60.000000 21.202280 178.921432 0.002228 0.008029 +E 12875.000000 60.000000 21.205050 178.933487 0.002217 0.007989 +E 12900.000000 60.000000 21.202749 178.936935 0.002209 0.007961 +E 12925.000000 60.000000 21.199600 178.940079 0.002197 0.007919 +E 12950.000000 60.000000 21.195812 178.942856 0.002183 0.007868 +E 12975.000000 60.000000 21.194353 178.930557 0.002177 0.007847 +E 13000.000000 60.000000 21.189571 178.922089 0.002170 0.007821 +E 13025.000000 60.000000 21.181059 178.917908 0.002162 0.007792 +E 13050.000000 60.000000 21.183168 178.923843 0.002150 0.007751 +E 13075.000000 60.000000 21.184031 178.925369 0.002141 0.007717 +E 13100.000000 60.000000 21.181644 178.918762 0.002135 0.007697 +E 13125.000000 60.000000 21.179976 178.936020 0.002130 0.007677 +E 13150.000000 60.000000 21.177814 178.949844 0.002124 0.007655 +E 13175.000000 60.000000 21.174274 178.946884 0.002117 0.007630 +E 13200.000000 60.000000 21.174377 178.939606 0.002111 0.007609 +E 13225.000000 60.000000 21.173948 178.937500 0.002107 0.007596 +E 13250.000000 60.000000 21.168396 178.956070 0.002110 0.007607 +E 13275.000000 60.000000 21.165648 178.959122 0.002108 0.007601 +E 13300.000000 60.000000 21.163738 178.956879 0.002106 0.007592 +E 13325.000000 60.000000 21.160034 178.961426 0.002109 0.007604 +E 13350.000000 60.000000 21.158607 178.957581 0.002113 0.007616 +E 13375.000000 60.000000 21.158293 178.949631 0.002116 0.007628 +E 13400.000000 60.000000 21.156019 178.948990 0.002117 0.007631 +E 13425.000000 60.000000 21.153503 178.958710 0.002122 0.007648 +E 13450.000000 60.000000 21.150789 178.975998 0.002130 0.007678 +E 13475.000000 60.000000 21.148476 178.980377 0.002143 0.007724 +E 13500.000000 60.000000 21.147963 178.974136 0.002157 0.007775 +E 13525.000000 60.000000 21.149271 178.957108 0.002172 0.007830 +E 13550.000000 60.000000 21.145205 178.982895 0.002201 0.007935 +E 13575.000000 60.000000 21.141298 178.991150 0.002231 0.008044 +E 13600.000000 60.000000 21.137802 178.974838 0.002263 0.008160 +E 13625.000000 60.000000 21.138525 178.974426 0.002282 0.008227 +E 13650.000000 60.000000 21.137794 178.979416 0.002301 0.008296 +E 13675.000000 60.000000 21.134073 178.990768 0.002323 0.008375 +E 13700.000000 60.000000 21.131861 178.993134 0.002377 0.008570 +E 13725.000000 60.000000 21.130264 178.994690 0.002469 0.008902 +E 13750.000000 60.000000 21.129519 178.997803 0.002638 0.009509 +E 13775.000000 60.000000 21.129263 178.998016 0.002876 0.010367 +E 13800.000000 60.000000 21.128136 178.995911 0.003126 0.011270 +E 13825.000000 60.000000 21.123857 178.989746 0.003279 0.011820 +E 13850.000000 60.000000 21.118710 178.992096 0.003253 0.011728 +E 13875.000000 60.000000 21.116119 178.997345 0.003157 0.011383 +E 13900.000000 60.000000 21.121500 179.003357 0.003023 0.010898 +E 13925.000000 60.000000 21.120661 179.008316 0.002940 0.010597 +E 13950.000000 60.000000 21.116556 179.009415 0.002861 0.010313 +E 13975.000000 60.000000 21.108747 178.997192 0.002728 0.009837 +E 14000.000000 60.000000 21.101583 178.995193 0.002649 0.009550 +E 14025.000000 60.000000 21.096470 178.998642 0.002591 0.009342 +E 14050.000000 60.000000 21.100515 179.007095 0.002526 0.009107 +E 14075.000000 60.000000 21.102694 179.016617 0.002481 0.008945 +E 14100.000000 60.000000 21.103296 179.023041 0.002446 0.008817 +E 14125.000000 60.000000 21.099791 179.002487 0.002399 0.008649 +E 14150.000000 60.000000 21.097134 179.000122 0.002368 0.008538 +E 14175.000000 60.000000 21.095373 179.009720 0.002347 0.008461 +E 14200.000000 60.000000 21.097595 179.022873 0.002322 0.008372 +E 14225.000000 60.000000 21.096169 179.031937 0.002307 0.008316 +E 14250.000000 60.000000 21.092171 179.037064 0.002298 0.008285 +E 14275.000000 60.000000 21.090797 179.023880 0.002284 0.008232 +E 14300.000000 60.000000 21.085629 179.020325 0.002273 0.008196 +E 14325.000000 60.000000 21.077559 179.024902 0.002267 0.008175 +E 14350.000000 60.000000 21.082062 179.031815 0.002261 0.008150 +E 14375.000000 60.000000 21.080105 179.030136 0.002254 0.008125 +E 14400.000000 60.000000 21.072092 179.020416 0.002247 0.008100 +E 14425.000000 60.000000 21.075012 179.046646 0.002248 0.008105 +E 14450.000000 60.000000 21.075239 179.049545 0.002244 0.008090 +E 14475.000000 60.000000 21.072664 179.028168 0.002234 0.008053 +E 14500.000000 60.000000 21.072016 179.038773 0.002232 0.008044 +E 14525.000000 60.000000 21.069973 179.049438 0.002233 0.008050 +E 14550.000000 60.000000 21.066278 179.059525 0.002239 0.008070 +E 14575.000000 60.000000 21.065853 179.055984 0.002230 0.008038 +E 14600.000000 60.000000 21.063932 179.052399 0.002229 0.008036 +E 14625.000000 60.000000 21.060051 179.049362 0.002239 0.008072 +E 14650.000000 60.000000 21.062275 179.051712 0.002233 0.008047 +E 14675.000000 60.000000 21.061193 179.058289 0.002233 0.008050 +E 14700.000000 60.000000 21.055496 179.070007 0.002245 0.008094 +E 14725.000000 60.000000 21.058531 179.064331 0.002239 0.008069 +E 14750.000000 60.000000 21.056492 179.057724 0.002239 0.008069 +E 14775.000000 60.000000 21.046925 179.051376 0.002249 0.008107 +E 14800.000000 60.000000 21.049509 179.065994 0.002247 0.008101 +E 14825.000000 60.000000 21.047678 179.067917 0.002247 0.008099 +E 14850.000000 60.000000 21.038521 179.050278 0.002249 0.008107 +E 14875.000000 60.000000 21.045326 179.074051 0.002251 0.008115 +E 14900.000000 60.000000 21.047333 179.087021 0.002257 0.008135 +E 14925.000000 60.000000 21.040768 179.080109 0.002267 0.008172 +E 14950.000000 60.000000 21.042368 179.078369 0.002266 0.008166 +E 14975.000000 60.000000 21.040455 179.074432 0.002271 0.008185 +E 15000.000000 60.000000 21.032591 179.066681 0.002287 0.008243 +E 15025.000000 60.000000 21.037014 179.072037 0.002283 0.008226 +E 15050.000000 60.000000 21.036997 179.076767 0.002285 0.008234 +E 15075.000000 60.000000 21.029419 179.079086 0.002299 0.008286 +E 15100.000000 60.000000 21.029924 179.073227 0.002298 0.008280 +E 15125.000000 60.000000 21.029226 179.077362 0.002298 0.008282 +E 15150.000000 60.000000 21.026056 179.095871 0.002304 0.008302 +E 15175.000000 60.000000 21.028156 179.092880 0.002308 0.008316 +E 15200.000000 60.000000 21.026619 179.088623 0.002315 0.008341 +E 15225.000000 60.000000 21.019823 179.084793 0.002326 0.008381 +E 15250.000000 60.000000 21.023294 179.098175 0.002330 0.008394 +E 15275.000000 60.000000 21.021626 179.097488 0.002338 0.008422 +E 15300.000000 60.000000 21.012756 179.078003 0.002351 0.008472 +E 15325.000000 60.000000 21.019438 179.083557 0.002352 0.008476 +E 15350.000000 60.000000 21.020315 179.089401 0.002358 0.008496 +E 15375.000000 60.000000 21.013624 179.094238 0.002370 0.008538 +E 15400.000000 60.000000 21.013042 179.095718 0.002374 0.008553 +E 15425.000000 60.000000 21.010447 179.099075 0.002384 0.008590 +E 15450.000000 60.000000 21.005461 179.104568 0.002402 0.008653 +E 15475.000000 60.000000 21.011929 179.092667 0.002407 0.008670 +E 15500.000000 60.000000 21.010900 179.096878 0.002415 0.008701 +E 15525.000000 60.000000 21.002522 179.116974 0.002427 0.008744 +E 15550.000000 60.000000 21.004925 179.119293 0.002425 0.008736 +E 15575.000000 60.000000 21.004660 179.119247 0.002433 0.008765 +E 15600.000000 60.000000 21.002121 179.116959 0.002450 0.008824 +E 15625.000000 60.000000 21.002026 179.112701 0.002455 0.008844 +E 15650.000000 60.000000 20.998526 179.112137 0.002466 0.008883 +E 15675.000000 60.000000 20.992752 179.114731 0.002480 0.008934 +E 15700.000000 60.000000 20.993113 179.119263 0.002484 0.008948 +E 15725.000000 60.000000 20.994875 179.120514 0.002494 0.008981 +E 15750.000000 60.000000 20.996733 179.119339 0.002507 0.009028 +E 15775.000000 60.000000 20.990519 179.117081 0.002518 0.009070 +E 15800.000000 60.000000 20.987068 179.117050 0.002529 0.009108 +E 15825.000000 60.000000 20.986206 179.118683 0.002540 0.009149 +E 15850.000000 60.000000 20.990820 179.122284 0.002556 0.009205 +E 15875.000000 60.000000 20.990707 179.125916 0.002567 0.009244 +E 15900.000000 60.000000 20.988661 179.129303 0.002576 0.009277 +E 15925.000000 60.000000 20.989021 179.131561 0.002591 0.009329 +E 15950.000000 60.000000 20.984917 179.129135 0.002607 0.009389 +E 15975.000000 60.000000 20.980352 179.130554 0.002624 0.009451 +E 16000.000000 60.000000 20.981201 179.153000 0.002638 0.009499 +E 16025.000000 60.000000 20.976559 179.153442 0.002650 0.009541 +E 16050.000000 60.000000 20.972925 179.142303 0.002663 0.009589 +E 16075.000000 60.000000 20.977463 179.120285 0.002683 0.009660 +E 16100.000000 60.000000 20.974829 179.126328 0.002700 0.009721 +E 16125.000000 60.000000 20.972452 179.138870 0.002715 0.009776 +E 16150.000000 60.000000 20.974855 179.149185 0.002728 0.009820 +E 16175.000000 60.000000 20.972359 179.142212 0.002750 0.009901 +E 16200.000000 60.000000 20.972656 179.141159 0.002772 0.009979 +E 16225.000000 60.000000 20.979527 179.156387 0.002789 0.010040 +E 16250.000000 60.000000 20.969889 179.157104 0.002809 0.010111 +E 16275.000000 60.000000 20.966637 179.151566 0.002830 0.010189 +E 16300.000000 60.000000 20.975115 179.139648 0.002854 0.010273 +E 16325.000000 60.000000 20.971657 179.152267 0.002877 0.010356 +E 16350.000000 60.000000 20.967148 179.159409 0.002904 0.010454 +E 16375.000000 60.000000 20.962227 179.159027 0.002936 0.010568 +E 16400.000000 60.000000 20.963692 179.163391 0.002956 0.010641 +E 16425.000000 60.000000 20.966311 179.167160 0.002992 0.010770 +E 16450.000000 60.000000 20.969114 179.169769 0.003041 0.010943 +E 16475.000000 60.000000 20.960278 179.163971 0.003061 0.011019 +E 16500.000000 60.000000 20.961136 179.174667 0.003105 0.011177 +E 16525.000000 60.000000 20.966970 179.190933 0.003165 0.011390 +E 16550.000000 60.000000 20.962191 179.169907 0.003220 0.011588 +E 16575.000000 60.000000 20.963964 179.175369 0.003302 0.011883 +E 16600.000000 60.000000 20.967409 179.185303 0.003404 0.012247 +E 16625.000000 60.000000 20.963537 179.157074 0.003519 0.012664 +E 16650.000000 60.000000 20.962151 179.161880 0.003718 0.013379 +E 16675.000000 60.000000 20.962458 179.175949 0.003979 0.014317 +E 16700.000000 60.000000 20.964846 179.178604 0.004298 0.015465 +E 16725.000000 60.000000 20.964939 179.173889 0.004778 0.017188 +E 16750.000000 60.000000 20.962988 179.171631 0.005398 0.019418 +E 16775.000000 60.000000 20.957264 179.181000 0.006167 0.022187 +E 16800.000000 60.000000 20.964642 179.161362 0.007190 0.025862 +E 16825.000000 60.000000 20.973606 179.165298 0.008441 0.030356 +E 16850.000000 60.000000 20.979858 179.225937 0.009863 0.035462 +E 16875.000000 60.000000 20.948915 179.180405 0.011534 0.041499 +E 16900.000000 60.000000 20.925520 179.162109 0.013527 0.048692 +E 16925.000000 60.000000 20.918762 179.185135 0.015819 0.056947 +E 16950.000000 60.000000 20.942108 179.076096 0.018319 0.065913 +E 16975.000000 60.000000 20.913437 179.051849 0.021060 0.075819 +E 17000.000000 60.000000 20.852385 179.117813 0.024083 0.086815 +E 1930.000000 70.000000 37.364731 90.587944 0.008912 0.032643 +E 1940.000000 70.000000 37.327927 90.918312 0.008126 0.029728 +E 1950.000000 70.000000 37.274158 91.285599 0.007502 0.027404 +E 1960.000000 70.000000 37.253658 91.658600 0.007096 0.025897 +E 1970.000000 70.000000 37.232479 91.998413 0.006756 0.024630 +E 1980.000000 70.000000 37.205528 92.431091 0.006483 0.023612 +E 1990.000000 70.000000 37.172489 92.904839 0.006278 0.022844 +E 2000.000000 70.000000 37.116592 93.317833 0.006091 0.022137 +E 2010.000000 70.000000 37.061775 93.725319 0.005917 0.021482 +E 2020.000000 70.000000 37.016304 94.225700 0.005743 0.020832 +E 2030.000000 70.000000 36.963127 94.682739 0.005572 0.020195 +E 2040.000000 70.000000 36.901291 95.068840 0.005418 0.019619 +E 2050.000000 70.000000 36.835468 95.499962 0.005268 0.019061 +E 2060.000000 70.000000 36.772411 95.937241 0.005118 0.018501 +E 2070.000000 70.000000 36.703846 96.383453 0.004977 0.017973 +E 2080.000000 70.000000 36.652714 96.756294 0.004841 0.017465 +E 2090.000000 70.000000 36.615101 97.117836 0.004707 0.016968 +E 2100.000000 70.000000 36.548481 97.499702 0.004590 0.016527 +E 2110.000000 70.000000 36.480022 97.927620 0.004493 0.016152 +E 2120.000000 70.000000 36.433453 98.323624 0.004397 0.015788 +E 2130.000000 70.000000 36.375908 98.718651 0.004308 0.015447 +E 2140.000000 70.000000 36.325573 99.132324 0.004230 0.015145 +E 2150.000000 70.000000 36.285294 99.568016 0.004156 0.014864 +E 2160.000000 70.000000 36.236328 99.971344 0.004092 0.014612 +E 2170.000000 70.000000 36.181240 100.366402 0.004033 0.014385 +E 2180.000000 70.000000 36.141354 100.747581 0.003972 0.014148 +E 2190.000000 70.000000 36.106136 101.128822 0.003906 0.013897 +E 2200.000000 70.000000 36.048424 101.608353 0.003850 0.013679 +E 2210.000000 70.000000 36.004749 102.024353 0.003791 0.013453 +E 2220.000000 70.000000 35.962479 102.474487 0.003733 0.013232 +E 2230.000000 70.000000 35.914478 102.920311 0.003680 0.013029 +E 2240.000000 70.000000 35.847569 103.395088 0.003634 0.012849 +E 2250.000000 70.000000 35.773613 103.885582 0.003591 0.012681 +E 2260.000000 70.000000 35.692127 104.354294 0.003551 0.012520 +E 2270.000000 70.000000 35.582951 104.862045 0.003515 0.012375 +E 2280.000000 70.000000 35.453472 105.334129 0.003481 0.012231 +E 2290.000000 70.000000 35.318150 105.749680 0.003447 0.012088 +E 2300.000000 70.000000 35.161972 106.134514 0.003417 0.011961 +E 2310.000000 70.000000 34.984295 106.456078 0.003393 0.011850 +E 2320.000000 70.000000 34.818676 106.705620 0.003369 0.011742 +E 2330.000000 70.000000 34.670010 106.901962 0.003347 0.011642 +E 2340.000000 70.000000 34.535183 107.019730 0.003324 0.011545 +E 2350.000000 70.000000 34.432842 107.095596 0.003301 0.011448 +E 2360.000000 70.000000 34.351742 107.155983 0.003279 0.011361 +E 2370.000000 70.000000 34.315086 107.199654 0.003256 0.011270 +E 2380.000000 70.000000 34.310715 107.277481 0.003229 0.011174 +E 2390.000000 70.000000 34.329380 107.358536 0.003207 0.011096 +E 2400.000000 70.000000 34.363380 107.432564 0.003186 0.011026 +E 2410.000000 70.000000 34.416073 107.574608 0.003166 0.010957 +E 2420.000000 70.000000 34.479912 107.771950 0.003147 0.010894 +E 2430.000000 70.000000 34.547676 108.020248 0.003133 0.010849 +E 2440.000000 70.000000 34.624744 108.262756 0.003119 0.010805 +E 2450.000000 70.000000 34.706661 108.556740 0.003104 0.010756 +E 2460.000000 70.000000 34.781773 108.891022 0.003093 0.010723 +E 2470.000000 70.000000 34.863846 109.214561 0.003084 0.010697 +E 2480.000000 70.000000 34.951580 109.588409 0.003076 0.010673 +E 2490.000000 70.000000 35.034187 109.973900 0.003069 0.010651 +E 2500.000000 70.000000 35.111958 110.371918 0.003066 0.010645 +E 2510.000000 70.000000 35.189865 110.804939 0.003066 0.010648 +E 2520.000000 70.000000 35.267097 111.230530 0.003062 0.010636 +E 2530.000000 70.000000 35.337391 111.670860 0.003065 0.010649 +E 2540.000000 70.000000 35.407669 112.179893 0.003073 0.010679 +E 2550.000000 70.000000 35.477032 112.674950 0.003079 0.010703 +E 2560.000000 70.000000 35.542759 113.134995 0.003091 0.010746 +E 2570.000000 70.000000 35.612579 113.679634 0.003104 0.010793 +E 2580.000000 70.000000 35.679558 114.213135 0.003118 0.010844 +E 2590.000000 70.000000 35.733543 114.767754 0.003136 0.010907 +E 2600.000000 70.000000 35.795723 115.336754 0.003157 0.010978 +E 2610.000000 70.000000 35.860703 115.884056 0.003178 0.011052 +E 2620.000000 70.000000 35.924427 116.493622 0.003200 0.011131 +E 2630.000000 70.000000 35.980713 117.119637 0.003225 0.011218 +E 2640.000000 70.000000 36.030968 117.754684 0.003253 0.011315 +E 2650.000000 70.000000 36.085064 118.407745 0.003284 0.011422 +E 2660.000000 70.000000 36.136944 119.116081 0.003319 0.011542 +E 2670.000000 70.000000 36.175995 119.824684 0.003353 0.011661 +E 2680.000000 70.000000 36.209717 120.552177 0.003387 0.011777 +E 2690.000000 70.000000 36.227795 121.342392 0.003424 0.011902 +E 2700.000000 70.000000 36.230461 122.148163 0.003463 0.012031 +E 2710.000000 70.000000 36.216698 122.968735 0.003507 0.012177 +E 2720.000000 70.000000 36.192696 123.859016 0.003552 0.012325 +E 2730.000000 70.000000 36.138039 124.700455 0.003596 0.012468 +E 2740.000000 70.000000 36.053299 125.508942 0.003644 0.012620 +E 2750.000000 70.000000 35.955658 126.359566 0.003693 0.012773 +E 2760.000000 70.000000 35.853817 127.210060 0.003743 0.012932 +E 2770.000000 70.000000 35.726540 127.983955 0.003805 0.013124 +E 2780.000000 70.000000 35.591911 128.808090 0.003851 0.013265 +E 2790.000000 70.000000 35.442772 129.640686 0.003894 0.013393 +E 2800.000000 70.000000 35.286263 130.410721 0.003943 0.013539 +E 2810.000000 70.000000 35.132835 131.150909 0.003997 0.013700 +E 2820.000000 70.000000 34.968052 131.900406 0.004053 0.013870 +E 2830.000000 70.000000 34.800484 132.662094 0.004109 0.014040 +E 2840.000000 70.000000 34.623726 133.434204 0.004163 0.014201 +E 2850.000000 70.000000 34.451305 134.206909 0.004226 0.014393 +E 2860.000000 70.000000 34.246681 135.003693 0.004296 0.014604 +E 2870.000000 70.000000 34.017262 135.794312 0.004364 0.014805 +E 2880.000000 70.000000 33.755402 136.631180 0.004442 0.015037 +E 2890.000000 70.000000 33.454830 137.405609 0.004532 0.015310 +E 2900.000000 70.000000 33.126427 138.131073 0.004628 0.015597 +E 2910.000000 70.000000 32.764652 138.827225 0.004728 0.015896 +E 2920.000000 70.000000 32.389965 139.340088 0.004834 0.016216 +E 2930.000000 70.000000 32.031475 139.807861 0.004936 0.016524 +E 2940.000000 70.000000 31.677370 140.208817 0.005033 0.016817 +E 2950.000000 70.000000 31.327654 140.538818 0.005133 0.017123 +E 2960.000000 70.000000 31.004843 140.832809 0.005234 0.017439 +E 2970.000000 70.000000 30.681906 141.030594 0.005332 0.017743 +E 2980.000000 70.000000 30.378723 141.186264 0.005431 0.018055 +E 2990.000000 70.000000 30.088404 141.302261 0.005535 0.018389 +E 3000.000000 70.000000 29.856674 141.441391 0.005628 0.018685 +E 3010.000000 70.000000 29.617622 141.536407 0.005714 0.018964 +E 3020.000000 70.000000 29.364843 141.586838 0.005817 0.019298 +E 3030.000000 70.000000 29.152470 141.661591 0.005924 0.019648 +E 3040.000000 70.000000 28.961008 141.737808 0.006021 0.019970 +E 3050.000000 70.000000 28.772602 141.795090 0.006124 0.020311 +E 3060.000000 70.000000 28.593479 141.829575 0.006228 0.020656 +E 3070.000000 70.000000 28.435537 141.907288 0.006325 0.020976 +E 3080.000000 70.000000 28.290312 141.942276 0.006422 0.021300 +E 3090.000000 70.000000 28.149612 141.977341 0.006525 0.021645 +E 3100.000000 70.000000 28.004360 142.055634 0.006621 0.021969 +E 3110.000000 70.000000 27.875938 142.112366 0.006713 0.022278 +E 3120.000000 70.000000 27.759203 142.160355 0.006816 0.022624 +E 3130.000000 70.000000 27.643923 142.266327 0.006900 0.022910 +E 3140.000000 70.000000 27.545515 142.326447 0.006986 0.023200 +E 3150.000000 70.000000 27.444738 142.361801 0.007083 0.023527 +E 3160.000000 70.000000 27.346674 142.391205 0.007176 0.023843 +E 3170.000000 70.000000 27.276217 142.512802 0.007263 0.024135 +E 3180.000000 70.000000 27.188883 142.639313 0.007348 0.024424 +E 3190.000000 70.000000 27.098475 142.707230 0.007449 0.024767 +E 3200.000000 70.000000 27.024204 142.801193 0.007534 0.025057 +E 3210.000000 70.000000 26.950668 142.849411 0.007632 0.025390 +E 3220.000000 70.000000 26.867342 142.914093 0.007743 0.025766 +E 3230.000000 70.000000 26.799820 143.009979 0.007826 0.026052 +E 3240.000000 70.000000 26.749958 143.158997 0.007905 0.026320 +E 3250.000000 70.000000 26.691898 143.326004 0.008008 0.026666 +E 3260.000000 70.000000 26.624580 143.414383 0.008168 0.027208 +E 3270.000000 70.000000 26.588827 143.505005 0.008348 0.027813 +E 3280.000000 70.000000 26.547674 143.647690 0.008523 0.028400 +E 3290.000000 70.000000 26.488834 143.852615 0.008660 0.028865 +E 3300.000000 70.000000 26.436474 143.953354 0.008786 0.029293 +E 3310.000000 70.000000 26.397264 144.055893 0.008925 0.029760 +E 3320.000000 70.000000 26.342291 144.276688 0.009032 0.030127 +E 3330.000000 70.000000 26.317158 144.368408 0.009107 0.030380 +E 3340.000000 70.000000 26.306942 144.455856 0.009170 0.030591 +E 3350.000000 70.000000 26.267775 144.613312 0.009236 0.030816 +E 3360.000000 70.000000 26.204828 144.812012 0.009313 0.031086 +E 3370.000000 70.000000 26.171967 144.969696 0.009369 0.031277 +E 3380.000000 70.000000 26.160604 145.038330 0.009401 0.031385 +E 3390.000000 70.000000 26.145649 145.239670 0.009413 0.031425 +E 3400.000000 70.000000 26.131344 145.414993 0.009436 0.031505 +E 3410.000000 70.000000 26.099709 145.574875 0.009484 0.031670 +E 3420.000000 70.000000 26.077091 145.712830 0.009570 0.031961 +E 3430.000000 70.000000 26.059452 145.914688 0.009640 0.032199 +E 3440.000000 70.000000 26.052078 146.114990 0.009694 0.032378 +E 3450.000000 70.000000 26.073477 146.297180 0.009782 0.032666 +E 3460.000000 70.000000 26.065239 146.498413 0.009862 0.032934 +E 3470.000000 70.000000 26.060627 146.646606 0.009951 0.033232 +E 3480.000000 70.000000 26.062428 146.801163 0.010019 0.033455 +E 3490.000000 70.000000 26.111877 147.066574 0.010081 0.033649 +E 3500.000000 70.000000 26.165169 147.308807 0.010147 0.033858 +E 3510.000000 70.000000 26.194157 147.496277 0.010219 0.034090 +E 3520.000000 70.000000 26.219084 147.731720 0.010295 0.034334 +E 3530.000000 70.000000 26.279291 147.946365 0.010354 0.034517 +E 3540.000000 70.000000 26.356745 148.327927 0.010434 0.034766 +E 3550.000000 70.000000 26.445419 148.634201 0.010493 0.034939 +E 3560.000000 70.000000 26.538935 149.020782 0.010536 0.035062 +E 3570.000000 70.000000 26.612930 149.462906 0.010608 0.035286 +E 3580.000000 70.000000 26.684912 149.837433 0.010675 0.035492 +E 3590.000000 70.000000 26.809250 150.350967 0.010722 0.035623 +E 3600.000000 70.000000 26.868715 150.934235 0.010779 0.035802 +E 3610.000000 70.000000 26.974009 151.630325 0.010824 0.035929 +E 3620.000000 70.000000 27.035006 152.352829 0.010861 0.036042 +E 3630.000000 70.000000 27.063824 153.032623 0.010908 0.036190 +E 3640.000000 70.000000 27.093979 153.851074 0.010980 0.036424 +E 3650.000000 70.000000 27.108665 154.728973 0.011058 0.036678 +E 3660.000000 70.000000 27.074831 155.624710 0.011057 0.036682 +E 3670.000000 70.000000 26.998297 156.526047 0.011003 0.036516 +E 3680.000000 70.000000 26.929335 157.427017 0.010992 0.036491 +E 3690.000000 70.000000 26.823792 158.302948 0.011066 0.036757 +E 3700.000000 70.000000 26.660860 159.244812 0.011236 0.037353 +E 3710.000000 70.000000 26.491405 160.106903 0.011411 0.037974 +E 3720.000000 70.000000 26.299400 160.876572 0.011509 0.038346 +E 3730.000000 70.000000 26.085173 161.752975 0.011636 0.038826 +E 3740.000000 70.000000 25.866016 162.510529 0.011771 0.039340 +E 3750.000000 70.000000 25.607012 163.173447 0.011830 0.039618 +E 3760.000000 70.000000 25.339903 163.804749 0.011844 0.039757 +E 3770.000000 70.000000 25.061275 164.464035 0.011916 0.040105 +E 3780.000000 70.000000 24.787838 164.987610 0.011908 0.040188 +E 3790.000000 70.000000 24.531576 165.428650 0.011868 0.040161 +E 3800.000000 70.000000 24.258633 165.849319 0.011918 0.040459 +E 3810.000000 70.000000 24.003521 166.143723 0.012083 0.041146 +E 3820.000000 70.000000 23.782835 166.495819 0.012211 0.041699 +E 3830.000000 70.000000 23.518969 166.788223 0.012169 0.041705 +E 3840.000000 70.000000 23.263922 166.994232 0.012213 0.042007 +E 3850.000000 70.000000 23.047279 167.277908 0.012367 0.042674 +E 3860.000000 70.000000 22.831839 167.577927 0.012336 0.042712 +E 3870.000000 70.000000 22.600477 167.722458 0.012191 0.042369 +E 3880.000000 70.000000 22.383007 167.853546 0.012036 0.041985 +E 3890.000000 70.000000 22.195124 168.051346 0.012106 0.042368 +E 3900.000000 70.000000 22.027351 168.127670 0.012470 0.043776 +E 3910.000000 70.000000 21.834549 168.254700 0.012862 0.045317 +E 3920.000000 70.000000 21.629786 168.414108 0.012812 0.045318 +E 3930.000000 70.000000 21.460327 168.469009 0.012616 0.044778 +E 3940.000000 70.000000 21.284803 168.617737 0.012482 0.044463 +E 3950.000000 70.000000 21.123819 168.785690 0.012464 0.044549 +E 3960.000000 70.000000 20.966738 168.835236 0.012609 0.045219 +E 3970.000000 70.000000 20.792219 168.900192 0.012767 0.045965 +E 3980.000000 70.000000 20.649120 169.078888 0.012609 0.045544 +E 3990.000000 70.000000 20.511387 169.022369 0.012430 0.045041 +E 4000.000000 70.000000 20.380026 169.138107 0.012529 0.045544 +E 4010.000000 70.000000 20.234409 169.266190 0.012842 0.046845 +E 4020.000000 70.000000 20.083815 169.179916 0.013040 0.047746 +E 4030.000000 70.000000 19.961927 169.274902 0.013061 0.047972 +E 4040.000000 70.000000 19.836092 169.424545 0.012971 0.047796 +E 4050.000000 70.000000 19.681059 169.551529 0.012719 0.047057 +E 4060.000000 70.000000 19.559454 169.606873 0.012460 0.046251 +E 4070.000000 70.000000 19.448360 169.612274 0.012528 0.046642 +E 4080.000000 70.000000 19.306227 169.714233 0.012900 0.048219 +E 4090.000000 70.000000 19.189598 169.779312 0.013204 0.049518 +E 4100.000000 70.000000 19.113008 169.788757 0.013247 0.049786 +E 4110.000000 70.000000 19.005634 169.979553 0.013248 0.049948 +E 4120.000000 70.000000 18.872583 170.033508 0.013106 0.049605 +E 4130.000000 70.000000 18.747465 169.932541 0.012739 0.048398 +E 4140.000000 70.000000 18.675760 170.055191 0.012579 0.047892 +E 4150.000000 70.000000 18.584326 170.128372 0.012785 0.048815 +E 4160.000000 70.000000 18.468733 170.124969 0.012921 0.049512 +E 4170.000000 70.000000 18.346674 170.120895 0.012906 0.049647 +E 4180.000000 70.000000 18.224989 170.109985 0.012930 0.049932 +E 4190.000000 70.000000 18.176970 170.195648 0.013078 0.050582 +E 4200.000000 70.000000 18.107901 170.358521 0.013116 0.050846 +E 4210.000000 70.000000 17.971607 170.357956 0.012796 0.049829 +E 4220.000000 70.000000 17.853750 170.333069 0.012397 0.048469 +E 4230.000000 70.000000 17.735748 170.372864 0.012164 0.047749 +E 4240.000000 70.000000 17.670206 170.417953 0.012150 0.047804 +E 4250.000000 70.000000 17.625563 170.450928 0.012565 0.049511 +E 4260.000000 70.000000 17.522587 170.524078 0.013064 0.051665 +E 4270.000000 70.000000 17.438272 170.655685 0.013026 0.051670 +E 4280.000000 70.000000 17.362068 170.637131 0.012653 0.050329 +E 4290.000000 70.000000 17.220146 170.626587 0.012787 0.051125 +E 4300.000000 70.000000 17.196371 170.641357 0.012849 0.051421 +E 4310.000000 70.000000 17.149319 170.682831 0.012741 0.051077 +E 4320.000000 70.000000 17.024426 170.638824 0.012968 0.052227 +E 4330.000000 70.000000 16.936495 170.573288 0.013179 0.053256 +E 4340.000000 70.000000 16.878851 170.674103 0.012878 0.052154 +E 4350.000000 70.000000 16.770741 170.739502 0.012755 0.051872 +E 4360.000000 70.000000 16.708717 170.709579 0.012940 0.052753 +E 4370.000000 70.000000 16.650553 170.794052 0.012951 0.052919 +E 4380.000000 70.000000 16.561031 170.836426 0.012880 0.052816 +E 4390.000000 70.000000 16.520384 170.861786 0.012787 0.052520 +E 4400.000000 70.000000 16.465357 170.907669 0.012737 0.052430 +E 4410.000000 70.000000 16.366589 170.884613 0.012533 0.051800 +E 4420.000000 70.000000 16.291142 170.941193 0.012133 0.050300 +E 4430.000000 70.000000 16.244478 170.976700 0.012078 0.050171 +E 4440.000000 70.000000 16.189871 171.058792 0.012189 0.050748 +E 4450.000000 70.000000 16.105812 171.049561 0.012133 0.050691 +E 4460.000000 70.000000 16.044970 170.971802 0.012045 0.050452 +E 4470.000000 70.000000 15.996713 171.026199 0.012112 0.050839 +E 4480.000000 70.000000 15.934414 171.059616 0.012179 0.051259 +E 4490.000000 70.000000 15.854892 171.122467 0.012187 0.051467 +E 4500.000000 70.000000 15.804461 171.102005 0.012123 0.051309 +E 4510.000000 70.000000 15.746460 171.155807 0.012128 0.051461 +E 4520.000000 70.000000 15.677960 171.210632 0.012181 0.051843 +E 4530.000000 70.000000 15.617671 171.141861 0.012162 0.051902 +E 4540.000000 70.000000 15.560222 171.307495 0.012112 0.051824 +E 4550.000000 70.000000 15.507298 171.350708 0.012056 0.051707 +E 4560.000000 70.000000 15.448170 171.298752 0.011946 0.051374 +E 4570.000000 70.000000 15.392149 171.349731 0.011769 0.050743 +E 4580.000000 70.000000 15.334008 171.402100 0.011515 0.049781 +E 4590.000000 70.000000 15.283431 171.373672 0.011320 0.049051 +E 4600.000000 70.000000 15.250581 171.278961 0.011492 0.049875 +E 4610.000000 70.000000 15.191825 171.312531 0.011783 0.051279 +E 4620.000000 70.000000 15.131215 171.462875 0.011884 0.051868 +E 4630.000000 70.000000 15.066402 171.403610 0.011614 0.050846 +E 4640.000000 70.000000 15.002156 171.399551 0.011191 0.049144 +E 4650.000000 70.000000 14.977331 171.387329 0.011046 0.048566 +E 4660.000000 70.000000 14.939166 171.391693 0.011192 0.049299 +E 4670.000000 70.000000 14.884884 171.490997 0.011417 0.050421 +E 4680.000000 70.000000 14.830277 171.489349 0.011507 0.050957 +E 4690.000000 70.000000 14.794390 171.535828 0.011564 0.051298 +E 4700.000000 70.000000 14.747604 171.564270 0.011791 0.052426 +E 4710.000000 70.000000 14.663223 171.507507 0.011978 0.053482 +E 4720.000000 70.000000 14.612101 171.505630 0.011843 0.053015 +E 4730.000000 70.000000 14.576301 171.532791 0.011596 0.052007 +E 4740.000000 70.000000 14.557932 171.617233 0.011509 0.051661 +E 4750.000000 70.000000 14.500517 171.555130 0.011557 0.052029 +E 4760.000000 70.000000 14.432364 171.550720 0.011523 0.052060 +E 4770.000000 70.000000 14.379240 171.597382 0.011434 0.051800 +E 4780.000000 70.000000 14.357383 171.649582 0.011324 0.051358 +E 4790.000000 70.000000 14.317633 171.669876 0.011224 0.051010 +E 4800.000000 70.000000 14.263372 171.625305 0.011206 0.051076 +E 4810.000000 70.000000 14.221684 171.641724 0.011184 0.051084 +E 4820.000000 70.000000 14.195223 171.704727 0.011183 0.051155 +E 4830.000000 70.000000 14.155863 171.714539 0.011142 0.051074 +E 4840.000000 70.000000 14.091934 171.836777 0.011019 0.050681 +E 4850.000000 70.000000 14.038381 171.808029 0.010523 0.048537 +E 4860.000000 70.000000 14.002892 171.776321 0.009249 0.042744 +E 4870.000000 70.000000 13.981593 171.844467 0.008796 0.040700 +E 4880.000000 70.000000 13.949656 171.860397 0.010111 0.046867 +E 4890.000000 70.000000 13.914122 171.945236 0.010773 0.050031 +E 4900.000000 70.000000 13.858474 171.882538 0.010769 0.050163 +E 4910.000000 70.000000 13.825664 171.802902 0.010671 0.049798 +E 4920.000000 70.000000 13.780122 171.933701 0.010702 0.050069 +E 4930.000000 70.000000 13.727965 171.949753 0.010670 0.050066 +E 4940.000000 70.000000 13.727051 171.926819 0.010591 0.049698 +E 4950.000000 70.000000 13.662642 171.895416 0.010715 0.050460 +E 4960.000000 70.000000 13.600838 171.905594 0.010785 0.050970 +E 4970.000000 70.000000 13.607749 171.949463 0.010693 0.050514 +E 4980.000000 70.000000 13.576309 171.982239 0.010585 0.050092 +E 4990.000000 70.000000 13.515537 171.991989 0.010458 0.049662 +E 5000.000000 70.000000 13.457089 171.979355 0.010420 0.049651 +E 5010.000000 70.000000 13.436554 171.989716 0.010395 0.049591 +E 5020.000000 70.000000 13.429926 172.039932 0.010317 0.049239 +E 5030.000000 70.000000 13.387953 172.110641 0.010319 0.049369 +E 5040.000000 70.000000 13.360041 172.084671 0.010349 0.049594 +E 5050.000000 70.000000 13.310696 172.056519 0.010374 0.049856 +E 5060.000000 70.000000 13.279428 172.121872 0.010327 0.049724 +E 5070.000000 70.000000 13.254642 172.198151 0.010307 0.049700 +E 5080.000000 70.000000 13.201105 172.238846 0.010335 0.049990 +E 5090.000000 70.000000 13.168996 172.195969 0.010326 0.050046 +E 5100.000000 70.000000 13.146140 172.165359 0.010318 0.050072 +E 5110.000000 70.000000 13.117195 172.132477 0.010276 0.049958 +E 5120.000000 70.000000 13.083791 172.186066 0.010216 0.049767 +E 5130.000000 70.000000 13.062965 172.094604 0.010207 0.049785 +E 5140.000000 70.000000 13.043760 172.055405 0.010195 0.049783 +E 5150.000000 70.000000 12.983300 172.233170 0.010180 0.049894 +E 5160.000000 70.000000 12.963504 172.330917 0.010139 0.049755 +E 5170.000000 70.000000 12.927883 172.290695 0.010124 0.049791 +E 5180.000000 70.000000 12.894392 172.191330 0.010097 0.049759 +E 5190.000000 70.000000 12.864182 172.242233 0.010068 0.049707 +E 5200.000000 70.000000 12.827656 172.320724 0.010014 0.049556 +E 5210.000000 70.000000 12.813833 172.252487 0.009971 0.049383 +E 5220.000000 70.000000 12.783376 172.306595 0.009964 0.049446 +E 5230.000000 70.000000 12.746502 172.369308 0.009934 0.049411 +E 5240.000000 70.000000 12.726078 172.376282 0.009909 0.049346 +E 5250.000000 70.000000 12.694133 172.375122 0.009872 0.049261 +E 5260.000000 70.000000 12.662826 172.307373 0.009802 0.049011 +E 5270.000000 70.000000 12.611479 172.307205 0.009723 0.048775 +E 5280.000000 70.000000 12.587087 172.340744 0.009703 0.048752 +E 5290.000000 70.000000 12.560678 172.371567 0.009690 0.048769 +E 5300.000000 70.000000 12.536326 172.333878 0.009659 0.048689 +E 5310.000000 70.000000 12.530879 172.311676 0.009653 0.048674 +E 5320.000000 70.000000 12.494526 172.376068 0.009644 0.048744 +E 5330.000000 70.000000 12.453995 172.418503 0.009575 0.048521 +E 5340.000000 70.000000 12.445150 172.285965 0.009489 0.048117 +E 5350.000000 70.000000 12.408788 172.361008 0.009468 0.048123 +E 5360.000000 70.000000 12.373638 172.434525 0.009453 0.048160 +E 5370.000000 70.000000 12.359411 172.365692 0.009432 0.048097 +E 5380.000000 70.000000 12.333626 172.357834 0.009400 0.048012 +E 5390.000000 70.000000 12.304389 172.441666 0.009328 0.047742 +E 5400.000000 70.000000 12.287143 172.551682 0.009291 0.047603 +E 5410.000000 70.000000 12.256410 172.454926 0.009268 0.047584 +E 5420.000000 70.000000 12.235332 172.457718 0.009204 0.047324 +E 5430.000000 70.000000 12.215872 172.494812 0.009128 0.046995 +E 5440.000000 70.000000 12.166745 172.449966 0.009105 0.047030 +E 5450.000000 70.000000 12.129880 172.391937 0.009082 0.047025 +E 5460.000000 70.000000 12.115445 172.448883 0.009079 0.047057 +E 5470.000000 70.000000 12.088482 172.588516 0.009067 0.047084 +E 5480.000000 70.000000 12.071642 172.570953 0.008997 0.046772 +E 5490.000000 70.000000 12.048635 172.607513 0.008935 0.046523 +E 5500.000000 70.000000 12.018157 172.614288 0.008923 0.046556 +E 5510.000000 70.000000 11.994914 172.600128 0.008928 0.046656 +E 5520.000000 70.000000 11.987124 172.573135 0.008916 0.046621 +E 5530.000000 70.000000 11.973194 172.569763 0.008884 0.046500 +E 5540.000000 70.000000 11.944142 172.681747 0.008850 0.046413 +E 5550.000000 70.000000 11.912913 172.635971 0.008835 0.046434 +E 5560.000000 70.000000 11.874080 172.600174 0.008823 0.046496 +E 5570.000000 70.000000 11.862383 172.620895 0.008794 0.046383 +E 5580.000000 70.000000 11.842405 172.678940 0.008775 0.046347 +E 5590.000000 70.000000 11.823432 172.662216 0.008770 0.046383 +E 5600.000000 70.000000 11.796490 172.640503 0.008747 0.046352 +E 5610.000000 70.000000 11.789158 172.680634 0.008697 0.046110 +E 5620.000000 70.000000 11.761437 172.676514 0.008678 0.046099 +E 5630.000000 70.000000 11.731346 172.744980 0.008669 0.046149 +E 5640.000000 70.000000 11.721725 172.784668 0.008638 0.046017 +E 5650.000000 70.000000 11.702127 172.761734 0.008600 0.045877 +E 5660.000000 70.000000 11.680478 172.697708 0.008569 0.045782 +E 5670.000000 70.000000 11.655467 172.677963 0.008482 0.045400 +E 5680.000000 70.000000 11.638405 172.836334 0.008332 0.044653 +E 5690.000000 70.000000 11.615869 172.801926 0.008158 0.043790 +E 5700.000000 70.000000 11.590267 172.782944 0.007924 0.042613 +E 5710.000000 70.000000 11.578173 172.838089 0.007808 0.042025 +E 5720.000000 70.000000 11.556172 172.818481 0.007747 0.041765 +E 5730.000000 70.000000 11.532859 172.843155 0.007675 0.041443 +E 5740.000000 70.000000 11.511471 172.876038 0.007536 0.040758 +E 5750.000000 70.000000 11.484875 172.828873 0.007465 0.040452 +E 5760.000000 70.000000 11.465578 172.807892 0.007412 0.040222 +E 5770.000000 70.000000 11.448228 172.881317 0.007270 0.039502 +E 5780.000000 70.000000 11.434128 172.899597 0.007164 0.038969 +E 5790.000000 70.000000 11.413200 172.840317 0.007154 0.038974 +E 5800.000000 70.000000 11.384785 172.818253 0.007106 0.038794 +E 5810.000000 70.000000 11.367579 172.867950 0.006930 0.037882 +E 5820.000000 70.000000 11.354798 172.871658 0.006755 0.036960 +E 5830.000000 70.000000 11.339818 172.862610 0.006919 0.037901 +E 5840.000000 70.000000 11.310710 172.917053 0.007242 0.039757 +E 5850.000000 70.000000 11.303096 172.917038 0.007193 0.039506 +E 5860.000000 70.000000 11.289329 172.975372 0.007228 0.039744 +E 5870.000000 70.000000 11.263792 172.873413 0.007303 0.040234 +E 5880.000000 70.000000 11.235555 172.904160 0.007238 0.039959 +E 5890.000000 70.000000 11.213624 172.935928 0.007218 0.039911 +E 5900.000000 70.000000 11.187429 172.907608 0.007460 0.041332 +E 5910.000000 70.000000 11.180805 172.914032 0.007614 0.042207 +E 5920.000000 70.000000 11.177961 172.959839 0.007613 0.042211 +E 5930.000000 70.000000 11.152356 172.990524 0.007494 0.041632 +E 5940.000000 70.000000 11.136552 172.991684 0.007382 0.041059 +E 5950.000000 70.000000 11.116196 173.031982 0.007293 0.040632 +E 5960.000000 70.000000 11.099436 172.964951 0.007312 0.040787 +E 5970.000000 70.000000 11.082603 172.951935 0.007436 0.041531 +E 5980.000000 70.000000 11.068828 173.037994 0.007501 0.041942 +E 5990.000000 70.000000 11.051756 173.083954 0.007505 0.042019 +E 6000.000000 70.000000 11.032812 173.028671 0.007513 0.042124 +E 6010.000000 70.000000 11.023314 173.053146 0.007459 0.041856 +E 6020.000000 70.000000 11.007709 173.072449 0.007373 0.041424 +E 6030.000000 70.000000 10.987975 173.055161 0.007271 0.040909 +E 6040.000000 70.000000 10.967356 173.081741 0.007242 0.040814 +E 6050.000000 70.000000 10.958225 173.042664 0.007390 0.041676 +E 6060.000000 70.000000 10.951637 173.013596 0.007433 0.041943 +E 6070.000000 70.000000 10.934222 173.079407 0.007443 0.042059 +E 6080.000000 70.000000 10.894495 173.136459 0.007471 0.042348 +E 6090.000000 70.000000 10.883726 173.053802 0.007499 0.042543 +E 6100.000000 70.000000 10.870139 173.141525 0.007473 0.042441 +E 6110.000000 70.000000 10.863460 173.138092 0.007431 0.042225 +E 6120.000000 70.000000 10.852050 173.133850 0.007417 0.042181 +E 6130.000000 70.000000 10.834374 173.186432 0.007401 0.042148 +E 6140.000000 70.000000 10.809425 173.156525 0.007383 0.042131 +E 6150.000000 70.000000 10.792129 173.097427 0.007430 0.042458 +E 6160.000000 70.000000 10.786530 173.175018 0.007497 0.042858 +E 6170.000000 70.000000 10.762918 173.199142 0.007535 0.043158 +E 6180.000000 70.000000 10.747923 173.175949 0.007550 0.043298 +E 6190.000000 70.000000 10.746305 173.110794 0.007576 0.043454 +E 6200.000000 70.000000 10.716991 173.134827 0.007544 0.043371 +E 6210.000000 70.000000 10.709064 173.121582 0.007549 0.043425 +E 6220.000000 70.000000 10.699302 173.145126 0.007579 0.043636 +E 6230.000000 70.000000 10.680178 173.197464 0.007540 0.043480 +E 6240.000000 70.000000 10.664915 173.172318 0.007519 0.043412 +E 6250.000000 70.000000 10.650968 173.239838 0.007586 0.043844 +E 6260.000000 70.000000 10.625656 173.200531 0.007640 0.044250 +E 6270.000000 70.000000 10.636355 173.182098 0.007639 0.044205 +E 6280.000000 70.000000 10.614540 173.205368 0.007632 0.044242 +E 6290.000000 70.000000 10.602071 173.255096 0.007638 0.044324 +E 6300.000000 70.000000 10.578819 173.349869 0.007644 0.044442 +E 6310.000000 70.000000 10.560072 173.298630 0.007683 0.044741 +E 6320.000000 70.000000 10.550346 173.178284 0.007696 0.044850 +E 6330.000000 70.000000 10.533011 173.329056 0.007673 0.044778 +E 6340.000000 70.000000 10.515390 173.339905 0.007684 0.044907 +E 6350.000000 70.000000 10.510254 173.305420 0.007682 0.044919 +E 6360.000000 70.000000 10.502902 173.328125 0.007657 0.044801 +E 6370.000000 70.000000 10.471516 173.342804 0.007645 0.044846 +E 6380.000000 70.000000 10.454593 173.328781 0.007658 0.044986 +E 6390.000000 70.000000 10.450792 173.312042 0.007658 0.044996 +E 6400.000000 70.000000 10.438745 173.288925 0.007657 0.045039 +E 6410.000000 70.000000 10.430684 173.270493 0.007669 0.045140 +E 6420.000000 70.000000 10.415838 173.404144 0.007693 0.045335 +E 6430.000000 70.000000 10.399295 173.536362 0.007685 0.045355 +E 6440.000000 70.000000 10.402256 173.435898 0.007687 0.045355 +E 6450.000000 70.000000 10.388330 173.310867 0.007701 0.045489 +E 6460.000000 70.000000 10.351901 173.357803 0.007699 0.045619 +E 6470.000000 70.000000 10.358933 173.357346 0.007692 0.045547 +E 6480.000000 70.000000 10.361680 173.404663 0.007681 0.045474 +E 6490.000000 70.000000 10.334061 173.408554 0.007672 0.045530 +E 6500.000000 70.000000 10.322186 173.406952 0.007672 0.045575 +E 6510.000000 70.000000 10.308403 173.458206 0.007676 0.045649 +E 6520.000000 70.000000 10.285506 173.402054 0.007669 0.045698 +E 6530.000000 70.000000 10.286395 173.401093 0.007676 0.045733 +E 6540.000000 70.000000 10.288983 173.435364 0.007746 0.046142 +E 6550.000000 70.000000 10.250113 173.468491 0.006866 0.041036 +E 6560.000000 70.000000 10.248907 173.462906 0.004813 0.028771 +E 6570.000000 70.000000 10.250183 173.429825 0.004650 0.027794 +E 6580.000000 70.000000 10.237034 173.436066 0.006353 0.038017 +E 6590.000000 70.000000 10.215320 173.461487 0.007609 0.045614 +E 6600.000000 70.000000 10.200864 173.388412 0.007655 0.045946 +E 6610.000000 70.000000 10.199327 173.367020 0.007661 0.045991 +E 6620.000000 70.000000 10.180434 173.408798 0.007645 0.045969 +E 6630.000000 70.000000 10.177233 173.419464 0.007634 0.045913 +E 6640.000000 70.000000 10.159374 173.487625 0.007639 0.046018 +E 6650.000000 70.000000 10.145863 173.522263 0.007645 0.046105 +E 6660.000000 70.000000 10.140770 173.569214 0.007643 0.046116 +E 6670.000000 70.000000 10.132472 173.557678 0.007641 0.046138 +E 6680.000000 70.000000 10.135470 173.514099 0.007632 0.046069 +E 6690.000000 70.000000 10.106279 173.502441 0.007618 0.046105 +E 6700.000000 70.000000 10.098595 173.622330 0.007597 0.046007 +E 6710.000000 70.000000 10.078350 173.630615 0.007601 0.046113 +E 6720.000000 70.000000 10.063108 173.560822 0.007591 0.046114 +E 6730.000000 70.000000 10.040607 173.474182 0.007588 0.046184 +E 6740.000000 70.000000 10.043713 173.541977 0.007598 0.046233 +E 6750.000000 70.000000 10.032000 173.606796 0.007606 0.046331 +E 6760.000000 70.000000 10.031154 173.488205 0.007605 0.046331 +E 6770.000000 70.000000 10.022972 173.504898 0.007598 0.046320 +E 6780.000000 70.000000 10.011140 173.551910 0.007584 0.046285 +E 6790.000000 70.000000 9.997108 173.572495 0.007568 0.046242 +E 6800.000000 70.000000 9.970707 173.551437 0.007560 0.046303 +E 6810.000000 70.000000 9.975588 173.630203 0.007557 0.046261 +E 6820.000000 70.000000 9.965106 173.666229 0.007560 0.046326 +E 6830.000000 70.000000 9.942946 173.612595 0.007558 0.046404 +E 6840.000000 70.000000 9.949089 173.666382 0.007548 0.046320 +E 6850.000000 70.000000 9.939376 173.623032 0.007517 0.046169 +E 6860.000000 70.000000 9.908001 173.687836 0.007515 0.046285 +E 6870.000000 70.000000 9.909123 173.668350 0.007535 0.046406 +E 6880.000000 70.000000 9.915418 173.652054 0.007545 0.046438 +E 6890.000000 70.000000 9.899430 173.570816 0.007549 0.046530 +E 6900.000000 70.000000 9.884955 173.615494 0.007558 0.046647 +E 6910.000000 70.000000 9.867867 173.714340 0.007556 0.046706 +E 6920.000000 70.000000 9.851445 173.717667 0.007549 0.046733 +E 6930.000000 70.000000 9.842437 173.678726 0.007543 0.046731 +E 6940.000000 70.000000 9.835801 173.842697 0.007534 0.046705 +E 6950.000000 70.000000 9.814747 173.839600 0.007546 0.046867 +E 6960.000000 70.000000 9.800947 173.668976 0.007548 0.046939 +E 6970.000000 70.000000 9.807914 173.715454 0.007534 0.046822 +E 6980.000000 70.000000 9.788121 173.727585 0.007526 0.046856 +E 6990.000000 70.000000 9.771259 173.744690 0.007532 0.046970 +E 7000.000000 70.000000 9.779154 173.776138 0.007543 0.047004 +E 7010.000000 70.000000 9.759831 173.799026 0.007555 0.047163 +E 7020.000000 70.000000 9.754523 173.845306 0.007559 0.047207 +E 7030.000000 70.000000 9.745038 173.830978 0.007558 0.047243 +E 7040.000000 70.000000 9.722622 173.781799 0.007572 0.047430 +E 7050.000000 70.000000 9.711342 173.755203 0.007585 0.047561 +E 7060.000000 70.000000 9.710948 173.855682 0.007588 0.047581 +E 7070.000000 70.000000 9.701822 173.865936 0.007560 0.047445 +E 7080.000000 70.000000 9.694470 173.780518 0.007565 0.047508 +E 7090.000000 70.000000 9.691283 173.845032 0.007583 0.047638 +E 7100.000000 70.000000 9.681171 173.885696 0.007600 0.047785 +E 7110.000000 70.000000 9.669317 173.828506 0.007602 0.047855 +E 7120.000000 70.000000 9.663428 173.793884 0.007604 0.047890 +E 7130.000000 70.000000 9.643742 173.828430 0.007607 0.047994 +E 7140.000000 70.000000 9.640675 173.799622 0.007598 0.047955 +E 7150.000000 70.000000 9.631563 173.814682 0.007592 0.047956 +E 7160.000000 70.000000 9.611721 173.779343 0.007600 0.048092 +E 7170.000000 70.000000 9.603939 173.852066 0.007625 0.048290 +E 7180.000000 70.000000 9.620442 173.986954 0.007623 0.048204 +E 7190.000000 70.000000 9.613693 173.897446 0.007625 0.048246 +E 7200.000000 70.000000 9.582446 173.921173 0.007639 0.048475 +E 7210.000000 70.000000 9.569226 173.999939 0.007655 0.048637 +E 7220.000000 70.000000 9.585300 173.949295 0.007655 0.048566 +E 7230.000000 70.000000 9.567454 173.985458 0.007673 0.048760 +E 7240.000000 70.000000 9.565096 174.004868 0.007670 0.048754 +E 7250.000000 70.000000 9.550028 173.933411 0.007639 0.048624 +E 7260.000000 70.000000 9.521615 173.925705 0.007610 0.048566 +E 7270.000000 70.000000 9.513081 173.940231 0.007629 0.048731 +E 7280.000000 70.000000 9.514208 173.954239 0.007636 0.048769 +E 7290.000000 70.000000 9.518766 173.974365 0.007627 0.048693 +E 7300.000000 70.000000 9.519683 173.952118 0.007635 0.048736 +E 7310.000000 70.000000 9.481967 173.987991 0.007631 0.048884 +E 7320.000000 70.000000 9.492261 173.985123 0.007641 0.048905 +E 7330.000000 70.000000 9.486000 173.950409 0.007673 0.049134 +E 7340.000000 70.000000 9.472294 173.946762 0.007667 0.049163 +E 7350.000000 70.000000 9.466720 174.037369 0.007625 0.048921 +E 7360.000000 70.000000 9.457794 174.025009 0.007630 0.048995 +E 7370.000000 70.000000 9.458140 173.985352 0.007666 0.049222 +E 7380.000000 70.000000 9.451670 173.994141 0.007719 0.049595 +E 7390.000000 70.000000 9.440516 174.064316 0.007748 0.049829 +E 7400.000000 70.000000 9.438191 174.046219 0.007717 0.049646 +E 7410.000000 70.000000 9.428780 174.087830 0.007747 0.049883 +E 7420.000000 70.000000 9.414704 174.083725 0.007805 0.050325 +E 7430.000000 70.000000 9.404902 174.113312 0.007830 0.050533 +E 7440.000000 70.000000 9.382589 174.120255 0.007837 0.050686 +E 7450.000000 70.000000 9.379965 174.132629 0.007845 0.050746 +E 7460.000000 70.000000 9.388845 174.107147 0.007851 0.050746 +E 7470.000000 70.000000 9.375950 174.094406 0.007821 0.050615 +E 7480.000000 70.000000 9.363350 174.080887 0.007818 0.050658 +E 7490.000000 70.000000 9.355113 174.144135 0.007853 0.050926 +E 7500.000000 70.000000 9.361959 174.153854 0.007854 0.050896 +E 7510.000000 70.000000 9.341738 174.149353 0.007853 0.050990 +E 7520.000000 70.000000 9.333494 174.095627 0.007911 0.051405 +E 7530.000000 70.000000 9.338209 174.080933 0.007937 0.051555 +E 7540.000000 70.000000 9.334275 174.142395 0.007893 0.051291 +E 7550.000000 70.000000 9.313696 174.216782 0.007912 0.051514 +E 7560.000000 70.000000 9.318128 174.284729 0.007923 0.051566 +E 7570.000000 70.000000 9.319859 174.220490 0.007915 0.051503 +E 7580.000000 70.000000 9.315630 174.140274 0.007903 0.051445 +E 7590.000000 70.000000 9.309307 174.212372 0.007899 0.051453 +E 7600.000000 70.000000 9.288897 174.206619 0.007962 0.051964 +E 7610.000000 70.000000 9.282671 174.265930 0.008024 0.052402 +E 7620.000000 70.000000 9.275507 174.235352 0.008069 0.052735 +E 7630.000000 70.000000 9.260244 174.149567 0.008050 0.052689 +E 7640.000000 70.000000 9.269856 174.157608 0.008036 0.052547 +E 7650.000000 70.000000 9.257846 174.228058 0.008067 0.052813 +E 7660.000000 70.000000 9.246433 174.235458 0.008122 0.053226 +E 7670.000000 70.000000 9.227341 174.358429 0.008192 0.053787 +E 7680.000000 70.000000 9.227748 174.302567 0.008180 0.053709 +E 7690.000000 70.000000 9.229633 174.262558 0.008095 0.053140 +E 7700.000000 70.000000 9.214854 174.278290 0.008064 0.053012 +E 7710.000000 70.000000 9.205322 174.234344 0.008125 0.053466 +E 7720.000000 70.000000 9.219481 174.289520 0.008214 0.053978 +E 7730.000000 70.000000 9.208651 174.351563 0.008278 0.054453 +E 7740.000000 70.000000 9.184813 174.284821 0.008297 0.054708 +E 7750.000000 70.000000 9.177646 174.259140 0.008335 0.054996 +E 7760.000000 70.000000 9.160827 174.313980 0.008383 0.055403 +E 7770.000000 70.000000 9.166468 174.361023 0.008410 0.055552 +E 7780.000000 70.000000 9.166428 174.266953 0.008402 0.055500 +E 7790.000000 70.000000 9.160894 174.427765 0.008353 0.055208 +E 7800.000000 70.000000 9.157903 174.301712 0.008342 0.055149 +E 7810.000000 70.000000 9.134407 174.226852 0.008411 0.055733 +E 7820.000000 70.000000 9.140054 174.362976 0.008448 0.055954 +E 7830.000000 70.000000 9.150946 174.413727 0.008458 0.055956 +E 7840.000000 70.000000 9.125465 174.317062 0.008505 0.056413 +E 7850.000000 70.000000 9.117087 174.279922 0.008569 0.056882 +E 7860.000000 70.000000 9.108488 174.381577 0.008609 0.057194 +E 7870.000000 70.000000 9.125469 174.330032 0.008602 0.057053 +E 7880.000000 70.000000 9.106487 174.335648 0.008588 0.057067 +E 7890.000000 70.000000 9.090854 174.347092 0.008615 0.057335 +E 7900.000000 70.000000 9.079696 174.458221 0.008658 0.057687 +E 7910.000000 70.000000 9.081581 174.472504 0.008664 0.057718 +E 7920.000000 70.000000 9.088305 174.384888 0.008684 0.057816 +E 7930.000000 70.000000 9.069597 174.463272 0.008705 0.058060 +E 7940.000000 70.000000 9.089453 174.464005 0.008681 0.057790 +E 7950.000000 70.000000 9.067080 174.508240 0.008690 0.057977 +E 7960.000000 70.000000 9.051100 174.423874 0.008742 0.058419 +E 7970.000000 70.000000 9.054414 174.494553 0.008791 0.058725 +E 7980.000000 70.000000 9.044289 174.405136 0.008820 0.058979 +E 7990.000000 70.000000 9.048944 174.376541 0.008839 0.059077 +E 8000.000000 70.000000 9.021362 174.418228 0.008834 0.059208 +E 8010.000000 70.000000 9.019710 174.414276 0.008823 0.059142 +E 8020.000000 70.000000 9.030197 174.388916 0.008885 0.059496 +E 8030.000000 70.000000 9.027197 174.392212 0.008939 0.059882 +E 8040.000000 70.000000 9.009150 174.446243 0.008941 0.059998 +E 8050.000000 70.000000 8.984633 174.459808 0.008928 0.060059 +E 8060.000000 70.000000 8.986261 174.415894 0.008958 0.060255 +E 8070.000000 70.000000 8.992615 174.375305 0.009043 0.060789 +E 8080.000000 70.000000 8.976461 174.352875 0.009080 0.061138 +E 8090.000000 70.000000 8.971928 174.483948 0.009021 0.060765 +E 8100.000000 70.000000 8.972869 174.480133 0.009036 0.060864 +E 8110.000000 70.000000 8.966395 174.470535 0.009085 0.061233 +E 8120.000000 70.000000 8.959633 174.596985 0.009145 0.061678 +E 8130.000000 70.000000 8.971983 174.628052 0.009137 0.061550 +E 8140.000000 70.000000 8.958868 174.599747 0.009089 0.061310 +E 8150.000000 70.000000 8.942255 174.606201 0.009123 0.061637 +E 8160.000000 70.000000 8.958334 174.523941 0.009188 0.061981 +E 8170.000000 70.000000 8.955948 174.514816 0.009229 0.062270 +E 8180.000000 70.000000 8.938348 174.560974 0.009209 0.062247 +E 8190.000000 70.000000 8.939431 174.610413 0.009202 0.062192 +E 8200.000000 70.000000 8.948799 174.641739 0.009245 0.062429 +E 8210.000000 70.000000 8.944346 174.649521 0.009282 0.062705 +E 8220.000000 70.000000 8.910946 174.636475 0.009315 0.063142 +E 8230.000000 70.000000 8.914278 174.437347 0.009282 0.062893 +E 8240.000000 70.000000 8.905667 174.594177 0.009276 0.062913 +E 8250.000000 70.000000 8.893200 174.635208 0.009350 0.063492 +E 8260.000000 70.000000 8.890527 174.555466 0.009405 0.063887 +E 8270.000000 70.000000 8.889400 174.434204 0.009380 0.063722 +E 8280.000000 70.000000 8.885114 174.541473 0.009339 0.063470 +E 8290.000000 70.000000 8.878053 174.571487 0.009350 0.063594 +E 8300.000000 70.000000 8.896312 174.743134 0.009438 0.064074 +E 8310.000000 70.000000 8.896188 174.758728 0.009492 0.064439 +E 8320.000000 70.000000 8.850922 174.587646 0.009474 0.064612 +E 8330.000000 70.000000 8.825754 174.669357 0.009428 0.064466 +E 8340.000000 70.000000 8.850741 174.731064 0.009409 0.064172 +E 8350.000000 70.000000 8.856588 174.554749 0.009452 0.064433 +E 8360.000000 70.000000 8.842800 174.489624 0.009531 0.065060 +E 8370.000000 70.000000 8.839125 174.544144 0.009511 0.064949 +E 8380.000000 70.000000 8.820309 174.659988 0.009496 0.064973 +E 8390.000000 70.000000 8.822253 174.760406 0.009523 0.065144 +E 8400.000000 70.000000 8.820306 174.708344 0.009602 0.065697 +E 8410.000000 70.000000 8.817249 174.726166 0.009638 0.065968 +E 8420.000000 70.000000 8.835634 174.698380 0.009619 0.065711 +E 8430.000000 70.000000 8.800640 174.652252 0.009595 0.065786 +E 8440.000000 70.000000 8.815183 174.678955 0.009597 0.065703 +E 8450.000000 70.000000 8.801238 174.678177 0.009648 0.066141 +E 8460.000000 70.000000 8.787373 174.836914 0.009677 0.066437 +E 8470.000000 70.000000 8.799990 174.777573 0.009654 0.066195 +E 8480.000000 70.000000 8.794261 174.753922 0.009617 0.065982 +E 8490.000000 70.000000 8.780627 174.663406 0.009695 0.066607 +E 8500.000000 70.000000 8.784750 174.669418 0.009866 0.067760 +E 8510.000000 70.000000 8.763975 174.586105 0.009920 0.068273 +E 8520.000000 70.000000 8.748459 174.696381 0.009714 0.066965 +E 8530.000000 70.000000 8.764171 174.869263 0.009494 0.065341 +E 8540.000000 70.000000 8.752581 174.833801 0.009470 0.065258 +E 8550.000000 70.000000 8.746904 174.708878 0.009609 0.066253 +E 8560.000000 70.000000 8.733954 174.660934 0.009713 0.067061 +E 8570.000000 70.000000 8.720658 174.605240 0.009737 0.067320 +E 8580.000000 70.000000 8.735291 174.792511 0.009698 0.066944 +E 8590.000000 70.000000 8.716925 174.710175 0.009674 0.066911 +E 8600.000000 70.000000 8.733969 174.689285 0.009708 0.067025 +E 8610.000000 70.000000 8.724585 174.890839 0.009797 0.067710 +E 8620.000000 70.000000 8.719799 174.816483 0.009837 0.068018 +E 8630.000000 70.000000 8.719354 174.805786 0.009834 0.068000 +E 8640.000000 70.000000 8.701517 174.922363 0.009771 0.067692 +E 8650.000000 70.000000 8.705914 174.856903 0.009739 0.067440 +E 8660.000000 70.000000 8.716096 174.762833 0.009788 0.067710 +E 8670.000000 70.000000 8.706722 174.881805 0.009861 0.068276 +E 8680.000000 70.000000 8.692905 174.813553 0.009870 0.068441 +E 8690.000000 70.000000 8.696210 174.860626 0.009854 0.068309 +E 8700.000000 70.000000 8.675367 174.866287 0.009836 0.068330 +E 8710.000000 70.000000 8.690472 174.910385 0.009858 0.068374 +E 8720.000000 70.000000 8.678859 174.782303 0.009908 0.068806 +E 8730.000000 70.000000 8.647379 174.943115 0.009913 0.069071 +E 8740.000000 70.000000 8.657319 174.847107 0.009873 0.068722 +E 8750.000000 70.000000 8.675156 174.824677 0.009841 0.068370 +E 8760.000000 70.000000 8.670392 174.928223 0.009851 0.068472 +E 8770.000000 70.000000 8.639541 174.787003 0.009912 0.069120 +E 8780.000000 70.000000 8.626282 174.790497 0.009960 0.069551 +E 8790.000000 70.000000 8.620787 174.833664 0.009947 0.069501 +E 8800.000000 70.000000 8.646818 174.813934 0.009937 0.069245 +E 8810.000000 70.000000 8.632964 174.817978 0.009973 0.069598 +E 8820.000000 70.000000 8.621170 175.019318 0.010014 0.069972 +E 8830.000000 70.000000 8.633305 174.994049 0.010051 0.070137 +E 8840.000000 70.000000 8.630743 174.895889 0.010061 0.070225 +E 8850.000000 70.000000 8.618359 175.023682 0.010081 0.070460 +E 8860.000000 70.000000 8.622253 174.903503 0.010060 0.070281 +E 8870.000000 70.000000 8.606414 174.921280 0.010030 0.070190 +E 8880.000000 70.000000 8.595314 174.936859 0.010034 0.070302 +E 8890.000000 70.000000 8.598085 174.983963 0.010079 0.070597 +E 8900.000000 70.000000 8.600169 174.924988 0.010118 0.070858 +E 8910.000000 70.000000 8.591242 174.851532 0.010143 0.071100 +E 8920.000000 70.000000 8.583925 174.981171 0.010140 0.071133 +E 8930.000000 70.000000 8.573763 175.009506 0.010138 0.071194 +E 8940.000000 70.000000 8.555571 174.868820 0.010148 0.071406 +E 8950.000000 70.000000 8.558867 175.066116 0.010183 0.071629 +E 8960.000000 70.000000 8.581882 174.857391 0.010210 0.071639 +E 8970.000000 70.000000 8.561497 174.897034 0.010235 0.071973 +E 8980.000000 70.000000 8.559835 174.913132 0.010255 0.072126 +E 8990.000000 70.000000 8.552236 174.743958 0.010240 0.072080 +E 9000.000000 70.000000 8.550808 174.872910 0.010280 0.072374 +E 9010.000000 70.000000 8.554516 174.972046 0.010310 0.072555 +E 9020.000000 70.000000 8.569343 175.113739 0.010312 0.072453 +E 9030.000000 70.000000 8.549447 175.006912 0.010361 0.072953 +E 9040.000000 70.000000 8.538127 175.084564 0.010371 0.073114 +E 9050.000000 70.000000 8.546661 175.149612 0.010352 0.072912 +E 9060.000000 70.000000 8.537910 174.898056 0.010384 0.073210 +E 9070.000000 70.000000 8.536934 174.930206 0.010427 0.073518 +E 9080.000000 70.000000 8.528360 175.151489 0.010484 0.073992 +E 9090.000000 70.000000 8.528864 174.964355 0.010529 0.074301 +E 9100.000000 70.000000 8.496531 174.854111 0.010541 0.074643 +E 9110.000000 70.000000 8.508589 174.931702 0.010509 0.074321 +E 9120.000000 70.000000 8.508849 175.047348 0.010528 0.074459 +E 9130.000000 70.000000 8.507488 175.007339 0.010577 0.074811 +E 9140.000000 70.000000 8.498118 175.060181 0.010659 0.075471 +E 9150.000000 70.000000 8.504669 175.019135 0.010657 0.075407 +E 9160.000000 70.000000 8.480077 175.054489 0.010622 0.075357 +E 9170.000000 70.000000 8.488358 175.130203 0.010606 0.075178 +E 9180.000000 70.000000 8.487889 175.113403 0.010616 0.075249 +E 9190.000000 70.000000 8.476492 175.066528 0.010674 0.075753 +E 9200.000000 70.000000 8.478591 174.922928 0.010762 0.076364 +E 9210.000000 70.000000 8.472970 175.120880 0.010810 0.076749 +E 9220.000000 70.000000 8.468168 175.132172 0.010861 0.077148 +E 9230.000000 70.000000 8.458891 175.140686 0.010887 0.077416 +E 9240.000000 70.000000 8.458486 175.132370 0.010901 0.077514 +E 9250.000000 70.000000 8.454440 174.966049 0.010924 0.077717 +E 9260.000000 70.000000 8.454695 175.120880 0.010968 0.078025 +E 9270.000000 70.000000 8.466520 175.274689 0.011022 0.078312 +E 9280.000000 70.000000 8.460687 175.196533 0.011080 0.078773 +E 9290.000000 70.000000 8.452767 174.932114 0.011116 0.079099 +E 9300.000000 70.000000 8.446152 174.997421 0.011136 0.079298 +E 9310.000000 70.000000 8.446439 175.049088 0.011154 0.079421 +E 9320.000000 70.000000 8.421367 175.228378 0.011168 0.079736 +E 9330.000000 70.000000 8.395915 175.138718 0.011210 0.080261 +E 9340.000000 70.000000 8.406946 175.194504 0.011258 0.080504 +E 9350.000000 70.000000 8.436943 175.221130 0.011319 0.080683 +E 9360.000000 70.000000 8.448875 175.163834 0.011385 0.081048 +E 9370.000000 70.000000 8.440248 175.347046 0.011417 0.081349 +E 9380.000000 70.000000 8.408854 175.177216 0.011431 0.081729 +E 9390.000000 70.000000 8.403489 175.083237 0.011457 0.081960 +E 9400.000000 70.000000 8.408162 175.171173 0.011548 0.082570 +E 9410.000000 70.000000 8.424427 175.292877 0.011611 0.082881 +E 9420.000000 70.000000 8.414208 175.338913 0.011671 0.083398 +E 9430.000000 70.000000 8.401778 175.036697 0.011735 0.083971 +E 9440.000000 70.000000 8.386297 175.165298 0.011744 0.084178 +E 9450.000000 70.000000 8.380025 175.090759 0.011782 0.084503 +E 9460.000000 70.000000 8.396639 175.237518 0.011840 0.084768 +E 9470.000000 70.000000 8.389497 175.245880 0.011909 0.085330 +E 9480.000000 70.000000 8.396621 175.333664 0.011969 0.085692 +E 9490.000000 70.000000 8.382241 175.256424 0.012039 0.086330 +E 9500.000000 70.000000 8.362041 175.209213 0.012105 0.086992 +E 9510.000000 70.000000 8.383402 175.067734 0.012151 0.087125 +E 9520.000000 70.000000 8.388864 175.043549 0.012188 0.087336 +E 9530.000000 70.000000 8.371493 175.175491 0.012252 0.087963 +E 9540.000000 70.000000 8.340021 175.187088 0.012359 0.089033 +E 9550.000000 70.000000 8.337351 175.201065 0.012446 0.089694 +E 9560.000000 70.000000 8.350050 175.216461 0.012475 0.089776 +E 9570.000000 70.000000 8.361102 175.414444 0.012496 0.089820 +E 9580.000000 70.000000 8.363356 175.371506 0.012526 0.090015 +E 9590.000000 70.000000 8.357409 175.204819 0.012582 0.090472 +E 9600.000000 70.000000 8.345102 175.299271 0.012646 0.091058 +E 9610.000000 70.000000 8.318431 175.428223 0.012694 0.091670 +E 9620.000000 70.000000 8.309038 175.299362 0.012772 0.092333 +E 9630.000000 70.000000 8.321168 175.249100 0.012833 0.092651 +E 9640.000000 70.000000 8.336560 175.282150 0.012887 0.092885 +E 9650.000000 70.000000 8.326828 175.316025 0.012954 0.093466 +E 9660.000000 70.000000 8.315522 175.465591 0.013008 0.093974 +E 9670.000000 70.000000 8.301159 175.563019 0.013099 0.094781 +E 9680.000000 70.000000 8.325414 175.332718 0.013195 0.095217 +E 9690.000000 70.000000 8.325931 175.237335 0.013269 0.095751 +E 9700.000000 70.000000 8.309796 175.099472 0.013308 0.096198 +E 9710.000000 70.000000 8.339731 175.405060 0.013389 0.096469 +E 9720.000000 70.000000 8.282105 175.512756 0.013487 0.097791 +E 9730.000000 70.000000 8.272711 175.393860 0.013586 0.098613 +E 9740.000000 70.000000 8.271445 175.380753 0.013671 0.099248 +E 9750.000000 70.000000 8.296926 175.294891 0.013710 0.099246 +E 9760.000000 70.000000 8.332147 175.336060 0.013790 0.099445 +E 9770.000000 70.000000 8.286115 175.326889 0.013888 0.100660 +E 9780.000000 70.000000 8.277268 175.494949 0.013963 0.101300 +E 9790.000000 70.000000 8.276253 175.254120 0.014057 0.101994 +E 9800.000000 70.000000 8.255424 175.159622 0.014168 0.103038 +E 9810.000000 70.000000 8.281021 175.241699 0.014278 0.103545 +E 9820.000000 70.000000 8.257392 175.382538 0.014402 0.104717 +E 9830.000000 70.000000 8.267316 175.262878 0.014455 0.104990 +E 9840.000000 70.000000 8.238717 175.118729 0.014557 0.106066 +E 9850.000000 70.000000 8.258997 175.342987 0.014659 0.106574 +E 9860.000000 70.000000 8.247291 175.211380 0.014750 0.107375 +E 9870.000000 70.000000 8.250484 175.184814 0.014898 0.108409 +E 9880.000000 70.000000 8.265643 175.353760 0.015018 0.109101 +E 9890.000000 70.000000 8.252702 175.560379 0.015109 0.109920 +E 9900.000000 70.000000 8.256435 175.729752 0.015192 0.110484 +E 9910.000000 70.000000 8.245546 175.558929 0.015307 0.111454 +E 9920.000000 70.000000 8.235231 175.491898 0.015464 0.112723 +E 9930.000000 70.000000 8.251116 175.414871 0.015630 0.113738 +E 9940.000000 70.000000 8.219556 175.596420 0.015775 0.115197 +E 9950.000000 70.000000 8.234161 175.489883 0.015879 0.115764 +E 9960.000000 70.000000 8.210146 175.370544 0.016033 0.117198 +E 9970.000000 70.000000 8.193875 175.396194 0.016151 0.118280 +E 9980.000000 70.000000 8.194836 175.378006 0.016342 0.119662 +E 9990.000000 70.000000 8.212622 175.541595 0.016519 0.120720 +E 10000.000000 70.000000 8.224506 175.505066 0.016685 0.121774 +E 10025.000000 70.000000 8.190679 175.534195 0.008064 0.059091 +E 10050.000000 70.000000 8.184579 175.487549 0.007874 0.057739 +E 10075.000000 70.000000 8.169347 175.522202 0.007645 0.056150 +E 10100.000000 70.000000 8.172769 175.523972 0.007465 0.054810 +E 10125.000000 70.000000 8.182145 175.506378 0.007308 0.053598 +E 10150.000000 70.000000 8.168519 175.433441 0.007121 0.052310 +E 10175.000000 70.000000 8.160705 175.446899 0.006952 0.051115 +E 10200.000000 70.000000 8.158606 175.546753 0.006800 0.050006 +E 10225.000000 70.000000 8.144069 175.528503 0.006631 0.048847 +E 10250.000000 70.000000 8.131223 175.524414 0.006478 0.047789 +E 10275.000000 70.000000 8.125073 175.587662 0.006355 0.046912 +E 10300.000000 70.000000 8.119646 175.573975 0.006197 0.045772 +E 10325.000000 70.000000 8.114458 175.537277 0.006032 0.044584 +E 10350.000000 70.000000 8.107176 175.580444 0.005902 0.043660 +E 10375.000000 70.000000 8.100228 175.584854 0.005778 0.042776 +E 10400.000000 70.000000 8.093657 175.553207 0.005660 0.041934 +E 10425.000000 70.000000 8.086782 175.564911 0.005549 0.041137 +E 10450.000000 70.000000 8.080079 175.578323 0.005440 0.040361 +E 10475.000000 70.000000 8.073559 175.586639 0.005332 0.039595 +E 10500.000000 70.000000 8.071528 175.600754 0.005233 0.038867 +E 10525.000000 70.000000 8.069858 175.616943 0.005139 0.038177 +E 10550.000000 70.000000 8.059555 175.634354 0.005051 0.037564 +E 10575.000000 70.000000 8.049754 175.673370 0.004972 0.037022 +E 10600.000000 70.000000 8.040311 175.730011 0.004902 0.036536 +E 10625.000000 70.000000 8.035843 175.681274 0.004805 0.035833 +E 10650.000000 70.000000 8.030298 175.669708 0.004720 0.035222 +E 10675.000000 70.000000 8.022291 175.729874 0.004654 0.034762 +E 10700.000000 70.000000 8.019765 175.735107 0.004570 0.034143 +E 10725.000000 70.000000 8.017097 175.728210 0.004489 0.033548 +E 10750.000000 70.000000 8.006824 175.736603 0.004436 0.033193 +E 10775.000000 70.000000 7.997991 175.730072 0.004357 0.032636 +E 10800.000000 70.000000 7.990237 175.714401 0.004264 0.031963 +E 10825.000000 70.000000 7.987331 175.731110 0.004200 0.031496 +E 10850.000000 70.000000 7.984536 175.728073 0.004132 0.030999 +E 10875.000000 70.000000 7.981798 175.699738 0.004059 0.030460 +E 10900.000000 70.000000 7.981146 175.736130 0.004003 0.030042 +E 10925.000000 70.000000 7.978756 175.779877 0.003947 0.029626 +E 10950.000000 70.000000 7.970494 175.812225 0.003878 0.029138 +E 10975.000000 70.000000 7.957333 175.834183 0.003824 0.028779 +E 11000.000000 70.000000 7.943127 175.848785 0.003779 0.028481 +E 11025.000000 70.000000 7.939655 175.839844 0.003736 0.028174 +E 11050.000000 70.000000 7.933967 175.815979 0.003700 0.027916 +E 11075.000000 70.000000 7.926233 175.778305 0.003668 0.027702 +E 11100.000000 70.000000 7.924328 175.767487 0.003613 0.027295 +E 11125.000000 70.000000 7.920842 175.778168 0.003571 0.026982 +E 11150.000000 70.000000 7.913671 175.824203 0.003550 0.026850 +E 11175.000000 70.000000 7.912203 175.836578 0.003521 0.026636 +E 11200.000000 70.000000 7.911076 175.838226 0.003493 0.026427 +E 11225.000000 70.000000 7.904621 175.836258 0.003476 0.026320 +E 11250.000000 70.000000 7.900852 175.859985 0.003452 0.026146 +E 11275.000000 70.000000 7.898427 175.899017 0.003424 0.025942 +E 11300.000000 70.000000 7.888583 175.935562 0.003420 0.025938 +E 11325.000000 70.000000 7.880345 175.957703 0.003406 0.025860 +E 11350.000000 70.000000 7.873960 175.963379 0.003382 0.025700 +E 11375.000000 70.000000 7.871910 175.896622 0.003370 0.025612 +E 11400.000000 70.000000 7.869700 175.870316 0.003358 0.025523 +E 11425.000000 70.000000 7.865981 175.948929 0.003341 0.025410 +E 11450.000000 70.000000 7.860325 175.943329 0.003325 0.025299 +E 11475.000000 70.000000 7.855378 175.920532 0.003306 0.025173 +E 11500.000000 70.000000 7.857015 175.953506 0.003280 0.024971 +E 11525.000000 70.000000 7.850841 175.968109 0.003258 0.024818 +E 11550.000000 70.000000 7.839879 175.969925 0.003238 0.024697 +E 11575.000000 70.000000 7.840657 175.944992 0.003224 0.024586 +E 11600.000000 70.000000 7.839085 175.938370 0.003200 0.024411 +E 11625.000000 70.000000 7.834796 175.952881 0.003166 0.024161 +E 11650.000000 70.000000 7.826550 175.967606 0.003146 0.024038 +E 11675.000000 70.000000 7.820414 175.984756 0.003126 0.023900 +E 11700.000000 70.000000 7.819611 176.007156 0.003100 0.023699 +E 11725.000000 70.000000 7.814298 176.046616 0.003082 0.023581 +E 11750.000000 70.000000 7.807539 176.084625 0.003065 0.023466 +E 11775.000000 70.000000 7.800848 176.093231 0.003034 0.023248 +E 11800.000000 70.000000 7.797514 176.088745 0.003006 0.023045 +E 11825.000000 70.000000 7.796220 176.074249 0.002981 0.022851 +E 11850.000000 70.000000 7.795309 176.021408 0.002955 0.022656 +E 11875.000000 70.000000 7.790823 176.011734 0.002931 0.022486 +E 11900.000000 70.000000 7.782712 176.045914 0.002910 0.022341 +E 11925.000000 70.000000 7.774875 176.044586 0.002883 0.022158 +E 11950.000000 70.000000 7.770673 176.061829 0.002859 0.021987 +E 11975.000000 70.000000 7.772564 176.115753 0.002841 0.021841 +E 12000.000000 70.000000 7.768823 176.114288 0.002822 0.021706 +E 12025.000000 70.000000 7.763596 176.105713 0.002803 0.021572 +E 12050.000000 70.000000 7.758069 176.117203 0.002784 0.021435 +E 12075.000000 70.000000 7.754148 176.114685 0.002770 0.021341 +E 12100.000000 70.000000 7.751001 176.109772 0.002758 0.021259 +E 12125.000000 70.000000 7.748141 176.134827 0.002740 0.021124 +E 12150.000000 70.000000 7.746853 176.140488 0.002723 0.020995 +E 12175.000000 70.000000 7.746752 176.131348 0.002707 0.020870 +E 12200.000000 70.000000 7.737659 176.154709 0.002701 0.020850 +E 12225.000000 70.000000 7.731359 176.159393 0.002693 0.020805 +E 12250.000000 70.000000 7.728441 176.141037 0.002683 0.020729 +E 12275.000000 70.000000 7.722176 176.119446 0.002679 0.020718 +E 12300.000000 70.000000 7.717067 176.119141 0.002679 0.020728 +E 12325.000000 70.000000 7.715099 176.162216 0.002683 0.020761 +E 12350.000000 70.000000 7.714838 176.171265 0.002675 0.020706 +E 12375.000000 70.000000 7.712655 176.181992 0.002671 0.020677 +E 12400.000000 70.000000 7.702073 176.232468 0.002687 0.020824 +E 12425.000000 70.000000 7.699123 176.236954 0.002680 0.020783 +E 12450.000000 70.000000 7.698757 176.218033 0.002667 0.020679 +E 12475.000000 70.000000 7.689717 176.193024 0.002677 0.020781 +E 12500.000000 70.000000 7.685834 176.209747 0.002669 0.020723 +E 12525.000000 70.000000 7.685857 176.257202 0.002646 0.020548 +E 12550.000000 70.000000 7.682617 176.267395 0.002638 0.020494 +E 12575.000000 70.000000 7.681589 176.272003 0.002628 0.020414 +E 12600.000000 70.000000 7.683123 176.270309 0.002614 0.020306 +E 12625.000000 70.000000 7.672031 176.254196 0.002608 0.020282 +E 12650.000000 70.000000 7.664077 176.243637 0.002598 0.020228 +E 12675.000000 70.000000 7.663437 176.244873 0.002583 0.020107 +E 12700.000000 70.000000 7.664115 176.262314 0.002565 0.019968 +E 12725.000000 70.000000 7.663427 176.274277 0.002552 0.019871 +E 12750.000000 70.000000 7.658377 176.262756 0.002553 0.019889 +E 12775.000000 70.000000 7.654431 176.272430 0.002539 0.019785 +E 12800.000000 70.000000 7.650038 176.286697 0.002520 0.019651 +E 12825.000000 70.000000 7.641693 176.286774 0.002509 0.019584 +E 12850.000000 70.000000 7.636244 176.276779 0.002497 0.019506 +E 12875.000000 70.000000 7.632925 176.266891 0.002486 0.019421 +E 12900.000000 70.000000 7.634320 176.312042 0.002476 0.019347 +E 12925.000000 70.000000 7.631661 176.336029 0.002464 0.019251 +E 12950.000000 70.000000 7.625803 176.342743 0.002448 0.019140 +E 12975.000000 70.000000 7.623119 176.320633 0.002441 0.019092 +E 13000.000000 70.000000 7.621535 176.325134 0.002432 0.019029 +E 13025.000000 70.000000 7.621192 176.359543 0.002422 0.018950 +E 13050.000000 70.000000 7.617200 176.361801 0.002409 0.018860 +E 13075.000000 70.000000 7.613778 176.351791 0.002399 0.018787 +E 13100.000000 70.000000 7.611639 176.326416 0.002393 0.018742 +E 13125.000000 70.000000 7.610495 176.330688 0.002386 0.018694 +E 13150.000000 70.000000 7.608545 176.341568 0.002379 0.018644 +E 13175.000000 70.000000 7.604410 176.355515 0.002371 0.018588 +E 13200.000000 70.000000 7.605469 176.355850 0.002365 0.018535 +E 13225.000000 70.000000 7.604286 176.357025 0.002361 0.018507 +E 13250.000000 70.000000 7.591013 176.373703 0.002364 0.018557 +E 13275.000000 70.000000 7.587031 176.403366 0.002362 0.018551 +E 13300.000000 70.000000 7.586469 176.431168 0.002359 0.018531 +E 13325.000000 70.000000 7.583136 176.421921 0.002362 0.018562 +E 13350.000000 70.000000 7.581042 176.427261 0.002366 0.018595 +E 13375.000000 70.000000 7.579059 176.439438 0.002369 0.018628 +E 13400.000000 70.000000 7.571485 176.435959 0.002370 0.018654 +E 13425.000000 70.000000 7.570040 176.448456 0.002376 0.018699 +E 13450.000000 70.000000 7.572906 176.472046 0.002385 0.018761 +E 13475.000000 70.000000 7.564561 176.460526 0.002399 0.018891 +E 13500.000000 70.000000 7.562156 176.458862 0.002414 0.019019 +E 13525.000000 70.000000 7.565754 176.467178 0.002431 0.019146 +E 13550.000000 70.000000 7.558186 176.450485 0.002463 0.019412 +E 13575.000000 70.000000 7.554492 176.449326 0.002497 0.019686 +E 13600.000000 70.000000 7.556288 176.469498 0.002532 0.019962 +E 13625.000000 70.000000 7.550681 176.481018 0.002552 0.020135 +E 13650.000000 70.000000 7.546614 176.494598 0.002573 0.020310 +E 13675.000000 70.000000 7.546169 176.512817 0.002598 0.020505 +E 13700.000000 70.000000 7.543208 176.526382 0.002658 0.020984 +E 13725.000000 70.000000 7.540652 176.524902 0.002760 0.021797 +E 13750.000000 70.000000 7.539940 176.490616 0.002947 0.023275 +E 13775.000000 70.000000 7.534299 176.504501 0.003212 0.025382 +E 13800.000000 70.000000 7.529454 176.535294 0.003490 0.027596 +E 13825.000000 70.000000 7.532458 176.569000 0.003657 0.028904 +E 13850.000000 70.000000 7.527297 176.557526 0.003627 0.028687 +E 13875.000000 70.000000 7.524582 176.549332 0.003520 0.027855 +E 13900.000000 70.000000 7.536506 176.592941 0.003373 0.026645 +E 13925.000000 70.000000 7.529437 176.608292 0.003280 0.025935 +E 13950.000000 70.000000 7.517886 176.610550 0.003192 0.025276 +E 13975.000000 70.000000 7.515663 176.602295 0.003045 0.024113 +E 14000.000000 70.000000 7.511015 176.582764 0.002955 0.023416 +E 14025.000000 70.000000 7.507217 176.562317 0.002890 0.022910 +E 14050.000000 70.000000 7.513268 176.562836 0.002819 0.022329 +E 14075.000000 70.000000 7.508609 176.583038 0.002769 0.021951 +E 14100.000000 70.000000 7.500174 176.610352 0.002730 0.021664 +E 14125.000000 70.000000 7.506389 176.611588 0.002679 0.021237 +E 14150.000000 70.000000 7.505394 176.619125 0.002644 0.020967 +E 14175.000000 70.000000 7.500313 176.627182 0.002620 0.020789 +E 14200.000000 70.000000 7.500991 176.596207 0.002593 0.020568 +E 14225.000000 70.000000 7.495366 176.625153 0.002576 0.020447 +E 14250.000000 70.000000 7.485721 176.692307 0.002566 0.020392 +E 14275.000000 70.000000 7.488999 176.636917 0.002549 0.020249 +E 14300.000000 70.000000 7.486016 176.631378 0.002538 0.020166 +E 14325.000000 70.000000 7.478040 176.666504 0.002531 0.020131 +E 14350.000000 70.000000 7.481941 176.646149 0.002524 0.020064 +E 14375.000000 70.000000 7.479649 176.644485 0.002515 0.020005 +E 14400.000000 70.000000 7.471559 176.660431 0.002507 0.019954 +E 14425.000000 70.000000 7.470483 176.682785 0.002509 0.019972 +E 14450.000000 70.000000 7.468678 176.684006 0.002504 0.019939 +E 14475.000000 70.000000 7.466112 176.663254 0.002492 0.019851 +E 14500.000000 70.000000 7.466144 176.726318 0.002490 0.019834 +E 14525.000000 70.000000 7.464204 176.733261 0.002492 0.019850 +E 14550.000000 70.000000 7.459921 176.674973 0.002497 0.019903 +E 14575.000000 70.000000 7.462031 176.658798 0.002487 0.019820 +E 14600.000000 70.000000 7.461195 176.662643 0.002486 0.019814 +E 14625.000000 70.000000 7.456511 176.688614 0.002497 0.019907 +E 14650.000000 70.000000 7.457918 176.668533 0.002490 0.019847 +E 14675.000000 70.000000 7.455740 176.673508 0.002491 0.019863 +E 14700.000000 70.000000 7.448565 176.713913 0.002504 0.019985 +E 14725.000000 70.000000 7.447608 176.740784 0.002497 0.019927 +E 14750.000000 70.000000 7.444593 176.758545 0.002496 0.019930 +E 14775.000000 70.000000 7.438248 176.765793 0.002506 0.020029 +E 14800.000000 70.000000 7.441097 176.774445 0.002505 0.020010 +E 14825.000000 70.000000 7.442250 176.765610 0.002504 0.019999 +E 14850.000000 70.000000 7.440130 176.732758 0.002505 0.020012 +E 14875.000000 70.000000 7.434871 176.730759 0.002509 0.020056 +E 14900.000000 70.000000 7.431441 176.734314 0.002516 0.020117 +E 14925.000000 70.000000 7.430923 176.741989 0.002526 0.020198 +E 14950.000000 70.000000 7.426220 176.755280 0.002525 0.020200 +E 14975.000000 70.000000 7.421728 176.766785 0.002530 0.020256 +E 15000.000000 70.000000 7.417948 176.775284 0.002547 0.020399 +E 15025.000000 70.000000 7.422662 176.796173 0.002543 0.020353 +E 15050.000000 70.000000 7.422897 176.802719 0.002545 0.020372 +E 15075.000000 70.000000 7.415967 176.788086 0.002560 0.020506 +E 15100.000000 70.000000 7.415520 176.778702 0.002559 0.020497 +E 15125.000000 70.000000 7.412258 176.784027 0.002559 0.020511 +E 15150.000000 70.000000 7.404537 176.808609 0.002565 0.020573 +E 15175.000000 70.000000 7.405032 176.782928 0.002570 0.020613 +E 15200.000000 70.000000 7.403090 176.781952 0.002578 0.020680 +E 15225.000000 70.000000 7.397163 176.818069 0.002589 0.020784 +E 15250.000000 70.000000 7.400163 176.813980 0.002594 0.020815 +E 15275.000000 70.000000 7.400557 176.815262 0.002602 0.020883 +E 15300.000000 70.000000 7.396998 176.826309 0.002616 0.021001 +E 15325.000000 70.000000 7.397190 176.793655 0.002618 0.021017 +E 15350.000000 70.000000 7.396678 176.791031 0.002624 0.021067 +E 15375.000000 70.000000 7.395159 176.825745 0.002635 0.021160 +E 15400.000000 70.000000 7.393733 176.860641 0.002641 0.021209 +E 15425.000000 70.000000 7.391715 176.856491 0.002653 0.021307 +E 15450.000000 70.000000 7.389040 176.809631 0.002671 0.021461 +E 15475.000000 70.000000 7.388014 176.867157 0.002677 0.021514 +E 15500.000000 70.000000 7.384254 176.899918 0.002687 0.021598 +E 15525.000000 70.000000 7.377914 176.907028 0.002699 0.021713 +E 15550.000000 70.000000 7.382770 176.879959 0.002697 0.021685 +E 15575.000000 70.000000 7.380264 176.873276 0.002706 0.021761 +E 15600.000000 70.000000 7.371546 176.883621 0.002723 0.021925 +E 15625.000000 70.000000 7.371965 176.865768 0.002729 0.021974 +E 15650.000000 70.000000 7.371367 176.870026 0.002741 0.022067 +E 15675.000000 70.000000 7.370029 176.891083 0.002756 0.022189 +E 15700.000000 70.000000 7.369778 176.898315 0.002761 0.022229 +E 15725.000000 70.000000 7.366600 176.910629 0.002771 0.022321 +E 15750.000000 70.000000 7.362186 176.923096 0.002785 0.022447 +E 15775.000000 70.000000 7.364956 176.905228 0.002798 0.022539 +E 15800.000000 70.000000 7.360466 176.924530 0.002809 0.022643 +E 15825.000000 70.000000 7.353909 176.957230 0.002821 0.022756 +E 15850.000000 70.000000 7.362233 176.930679 0.002839 0.022882 +E 15875.000000 70.000000 7.361823 176.945328 0.002851 0.022974 +E 15900.000000 70.000000 7.357434 176.973526 0.002860 0.023062 +E 15925.000000 70.000000 7.355625 176.964783 0.002878 0.023210 +E 15950.000000 70.000000 7.354343 176.925491 0.002895 0.023352 +E 15975.000000 70.000000 7.354206 176.897400 0.002912 0.023487 +E 16000.000000 70.000000 7.357422 176.956970 0.002928 0.023607 +E 16025.000000 70.000000 7.348132 176.943604 0.002940 0.023734 +E 16050.000000 70.000000 7.339770 176.924194 0.002954 0.023874 +E 16075.000000 70.000000 7.346188 176.959137 0.002977 0.024038 +E 16100.000000 70.000000 7.345031 176.967087 0.002995 0.024185 +E 16125.000000 70.000000 7.341625 176.976135 0.003011 0.024325 +E 16150.000000 70.000000 7.337707 177.003525 0.003026 0.024458 +E 16175.000000 70.000000 7.328842 177.039093 0.003050 0.024676 +E 16200.000000 70.000000 7.326591 177.059418 0.003074 0.024876 +E 16225.000000 70.000000 7.337694 177.049805 0.003095 0.025013 +E 16250.000000 70.000000 7.333883 177.014725 0.003115 0.025183 +E 16275.000000 70.000000 7.329737 177.004547 0.003138 0.025382 +E 16300.000000 70.000000 7.327592 177.033600 0.003166 0.025617 +E 16325.000000 70.000000 7.324088 177.003830 0.003190 0.025824 +E 16350.000000 70.000000 7.324510 176.986649 0.003219 0.026057 +E 16375.000000 70.000000 7.329310 176.987350 0.003254 0.026322 +E 16400.000000 70.000000 7.322974 177.029602 0.003276 0.026521 +E 16425.000000 70.000000 7.321688 177.032928 0.003316 0.026851 +E 16450.000000 70.000000 7.324388 177.003906 0.003370 0.027282 +E 16475.000000 70.000000 7.320839 177.000153 0.003391 0.027462 +E 16500.000000 70.000000 7.322691 177.021255 0.003440 0.027846 +E 16525.000000 70.000000 7.327149 177.051437 0.003506 0.028368 +E 16550.000000 70.000000 7.324503 177.029541 0.003565 0.028855 +E 16575.000000 70.000000 7.319481 177.068283 0.003656 0.029610 +E 16600.000000 70.000000 7.313515 177.109726 0.003768 0.030541 +E 16625.000000 70.000000 7.309005 177.031097 0.003893 0.031567 +E 16650.000000 70.000000 7.318780 177.027328 0.004110 0.033287 +E 16675.000000 70.000000 7.327247 177.066498 0.004395 0.035560 +E 16700.000000 70.000000 7.313661 177.148056 0.004745 0.038451 +E 16725.000000 70.000000 7.303569 177.106842 0.005271 0.042769 +E 16750.000000 70.000000 7.299397 177.051437 0.005950 0.048303 +E 16775.000000 70.000000 7.308707 177.050476 0.006786 0.055027 +E 16800.000000 70.000000 7.301926 177.036774 0.007911 0.064206 +E 16825.000000 70.000000 7.291903 176.975784 0.009287 0.075467 +E 16850.000000 70.000000 7.281566 176.831619 0.010842 0.088219 +E 16875.000000 70.000000 7.298783 177.085953 0.012665 0.102825 +E 16900.000000 70.000000 7.305838 177.267471 0.014837 0.120344 +E 16925.000000 70.000000 7.297638 177.291687 0.017333 0.140733 +E 16950.000000 70.000000 7.332868 177.041245 0.020080 0.162308 +E 16975.000000 70.000000 7.297152 176.912338 0.023077 0.187383 +E 17000.000000 70.000000 7.212368 176.874298 0.026374 0.216504 +uR 1930.000000 50.000000 inf 1.000000 +uR 1940.000000 50.000000 inf 1.000000 +uR 1950.000000 50.000000 inf 1.000000 +uR 1960.000000 50.000000 inf 1.000000 +uR 1970.000000 50.000000 inf 1.000000 +uR 1980.000000 50.000000 inf 1.000000 +uR 1990.000000 50.000000 inf 1.000000 +uR 2000.000000 50.000000 inf 1.000000 +uR 2010.000000 50.000000 inf 1.000000 +uR 2020.000000 50.000000 inf 1.000000 +uR 2030.000000 50.000000 inf 1.000000 +uR 2040.000000 50.000000 inf 1.000000 +uR 2050.000000 50.000000 inf 1.000000 +uR 2060.000000 50.000000 inf 1.000000 +uR 2070.000000 50.000000 inf 1.000000 +uR 2080.000000 50.000000 inf 1.000000 +uR 2090.000000 50.000000 inf 1.000000 +uR 2100.000000 50.000000 inf 1.000000 +uR 2110.000000 50.000000 inf 1.000000 +uR 2120.000000 50.000000 inf 1.000000 +uR 2130.000000 50.000000 inf 1.000000 +uR 2140.000000 50.000000 inf 1.000000 +uR 2150.000000 50.000000 inf 1.000000 +uR 2160.000000 50.000000 inf 1.000000 +uR 2170.000000 50.000000 inf 1.000000 +uR 2180.000000 50.000000 inf 1.000000 +uR 2190.000000 50.000000 inf 1.000000 +uR 2200.000000 50.000000 inf 1.000000 +uR 2210.000000 50.000000 inf 1.000000 +uR 2220.000000 50.000000 inf 1.000000 +uR 2230.000000 50.000000 inf 1.000000 +uR 2240.000000 50.000000 inf 1.000000 +uR 2250.000000 50.000000 inf 1.000000 +uR 2260.000000 50.000000 inf 1.000000 +uR 2270.000000 50.000000 inf 1.000000 +uR 2280.000000 50.000000 inf 1.000000 +uR 2290.000000 50.000000 inf 1.000000 +uR 2300.000000 50.000000 inf 1.000000 +uR 2310.000000 50.000000 inf 1.000000 +uR 2320.000000 50.000000 inf 1.000000 +uR 2330.000000 50.000000 inf 1.000000 +uR 2340.000000 50.000000 inf 1.000000 +uR 2350.000000 50.000000 inf 1.000000 +uR 2360.000000 50.000000 inf 1.000000 +uR 2370.000000 50.000000 inf 1.000000 +uR 2380.000000 50.000000 inf 1.000000 +uR 2390.000000 50.000000 inf 1.000000 +uR 2400.000000 50.000000 inf 1.000000 +uR 2410.000000 50.000000 inf 1.000000 +uR 2420.000000 50.000000 inf 1.000000 +uR 2430.000000 50.000000 inf 1.000000 +uR 2440.000000 50.000000 inf 1.000000 +uR 2450.000000 50.000000 inf 1.000000 +uR 2460.000000 50.000000 inf 1.000000 +uR 2470.000000 50.000000 inf 1.000000 +uR 2480.000000 50.000000 inf 1.000000 +uR 2490.000000 50.000000 inf 1.000000 +uR 2500.000000 50.000000 inf 1.000000 +uR 2510.000000 50.000000 inf 1.000000 +uR 2520.000000 50.000000 inf 1.000000 +uR 2530.000000 50.000000 inf 1.000000 +uR 2540.000000 50.000000 inf 1.000000 +uR 2550.000000 50.000000 inf 1.000000 +uR 2560.000000 50.000000 inf 1.000000 +uR 2570.000000 50.000000 inf 1.000000 +uR 2580.000000 50.000000 inf 1.000000 +uR 2590.000000 50.000000 inf 1.000000 +uR 2600.000000 50.000000 inf 1.000000 +uR 2610.000000 50.000000 inf 1.000000 +uR 2620.000000 50.000000 inf 1.000000 +uR 2630.000000 50.000000 inf 1.000000 +uR 2640.000000 50.000000 inf 1.000000 +uR 2650.000000 50.000000 inf 1.000000 +uR 2660.000000 50.000000 inf 1.000000 +uR 2670.000000 50.000000 inf 1.000000 +uR 2680.000000 50.000000 inf 1.000000 +uR 2690.000000 50.000000 inf 1.000000 +uR 2700.000000 50.000000 inf 1.000000 +uR 2710.000000 50.000000 inf 1.000000 +uR 2720.000000 50.000000 inf 1.000000 +uR 2730.000000 50.000000 inf 1.000000 +uR 2740.000000 50.000000 inf 1.000000 +uR 2750.000000 50.000000 inf 1.000000 +uR 2760.000000 50.000000 inf 1.000000 +uR 2770.000000 50.000000 inf 1.000000 +uR 2780.000000 50.000000 inf 1.000000 +uR 2790.000000 50.000000 inf 1.000000 +uR 2800.000000 50.000000 inf 1.000000 +uR 2810.000000 50.000000 inf 1.000000 +uR 2820.000000 50.000000 inf 1.000000 +uR 2830.000000 50.000000 inf 1.000000 +uR 2840.000000 50.000000 inf 1.000000 +uR 2850.000000 50.000000 inf 1.000000 +uR 2860.000000 50.000000 inf 1.000000 +uR 2870.000000 50.000000 inf 1.000000 +uR 2880.000000 50.000000 inf 1.000000 +uR 2890.000000 50.000000 inf 1.000000 +uR 2900.000000 50.000000 inf 1.000000 +uR 2910.000000 50.000000 inf 1.000000 +uR 2920.000000 50.000000 inf 1.000000 +uR 2930.000000 50.000000 inf 1.000000 +uR 2940.000000 50.000000 inf 1.000000 +uR 2950.000000 50.000000 inf 1.000000 +uR 2960.000000 50.000000 inf 1.000000 +uR 2970.000000 50.000000 inf 1.000000 +uR 2980.000000 50.000000 inf 1.000000 +uR 2990.000000 50.000000 inf 1.000000 +uR 3000.000000 50.000000 inf 1.000000 +uR 3010.000000 50.000000 inf 1.000000 +uR 3020.000000 50.000000 inf 1.000000 +uR 3030.000000 50.000000 inf 1.000000 +uR 3040.000000 50.000000 inf 1.000000 +uR 3050.000000 50.000000 inf 1.000000 +uR 3060.000000 50.000000 inf 1.000000 +uR 3070.000000 50.000000 inf 1.000000 +uR 3080.000000 50.000000 inf 1.000000 +uR 3090.000000 50.000000 inf 1.000000 +uR 3100.000000 50.000000 inf 1.000000 +uR 3110.000000 50.000000 inf 1.000000 +uR 3120.000000 50.000000 inf 1.000000 +uR 3130.000000 50.000000 inf 1.000000 +uR 3140.000000 50.000000 inf 1.000000 +uR 3150.000000 50.000000 inf 1.000000 +uR 3160.000000 50.000000 inf 1.000000 +uR 3170.000000 50.000000 inf 1.000000 +uR 3180.000000 50.000000 inf 1.000000 +uR 3190.000000 50.000000 inf 1.000000 +uR 3200.000000 50.000000 inf 1.000000 +uR 3210.000000 50.000000 inf 1.000000 +uR 3220.000000 50.000000 inf 1.000000 +uR 3230.000000 50.000000 inf 1.000000 +uR 3240.000000 50.000000 inf 1.000000 +uR 3250.000000 50.000000 inf 1.000000 +uR 3260.000000 50.000000 inf 1.000000 +uR 3270.000000 50.000000 inf 1.000000 +uR 3280.000000 50.000000 inf 1.000000 +uR 3290.000000 50.000000 inf 1.000000 +uR 3300.000000 50.000000 inf 1.000000 +uR 3310.000000 50.000000 inf 1.000000 +uR 3320.000000 50.000000 inf 1.000000 +uR 3330.000000 50.000000 inf 1.000000 +uR 3340.000000 50.000000 inf 1.000000 +uR 3350.000000 50.000000 inf 1.000000 +uR 3360.000000 50.000000 inf 1.000000 +uR 3370.000000 50.000000 inf 1.000000 +uR 3380.000000 50.000000 inf 1.000000 +uR 3390.000000 50.000000 inf 1.000000 +uR 3400.000000 50.000000 inf 1.000000 +uR 3410.000000 50.000000 inf 1.000000 +uR 3420.000000 50.000000 inf 1.000000 +uR 3430.000000 50.000000 inf 1.000000 +uR 3440.000000 50.000000 inf 1.000000 +uR 3450.000000 50.000000 inf 1.000000 +uR 3460.000000 50.000000 inf 1.000000 +uR 3470.000000 50.000000 inf 1.000000 +uR 3480.000000 50.000000 inf 1.000000 +uR 3490.000000 50.000000 inf 1.000000 +uR 3500.000000 50.000000 inf 1.000000 +uR 3510.000000 50.000000 inf 1.000000 +uR 3520.000000 50.000000 inf 1.000000 +uR 3530.000000 50.000000 inf 1.000000 +uR 3540.000000 50.000000 inf 1.000000 +uR 3550.000000 50.000000 inf 1.000000 +uR 3560.000000 50.000000 inf 1.000000 +uR 3570.000000 50.000000 inf 1.000000 +uR 3580.000000 50.000000 inf 1.000000 +uR 3590.000000 50.000000 inf 1.000000 +uR 3600.000000 50.000000 inf 1.000000 +uR 3610.000000 50.000000 inf 1.000000 +uR 3620.000000 50.000000 inf 1.000000 +uR 3630.000000 50.000000 inf 1.000000 +uR 3640.000000 50.000000 inf 1.000000 +uR 3650.000000 50.000000 inf 1.000000 +uR 3660.000000 50.000000 inf 1.000000 +uR 3670.000000 50.000000 inf 1.000000 +uR 3680.000000 50.000000 inf 1.000000 +uR 3690.000000 50.000000 inf 1.000000 +uR 3700.000000 50.000000 inf 1.000000 +uR 3710.000000 50.000000 inf 1.000000 +uR 3720.000000 50.000000 inf 1.000000 +uR 3730.000000 50.000000 inf 1.000000 +uR 3740.000000 50.000000 inf 1.000000 +uR 3750.000000 50.000000 inf 1.000000 +uR 3760.000000 50.000000 inf 1.000000 +uR 3770.000000 50.000000 inf 1.000000 +uR 3780.000000 50.000000 inf 1.000000 +uR 3790.000000 50.000000 inf 1.000000 +uR 3800.000000 50.000000 inf 1.000000 +uR 3810.000000 50.000000 inf 1.000000 +uR 3820.000000 50.000000 inf 1.000000 +uR 3830.000000 50.000000 inf 1.000000 +uR 3840.000000 50.000000 inf 1.000000 +uR 3850.000000 50.000000 inf 1.000000 +uR 3860.000000 50.000000 inf 1.000000 +uR 3870.000000 50.000000 inf 1.000000 +uR 3880.000000 50.000000 inf 1.000000 +uR 3890.000000 50.000000 inf 1.000000 +uR 3900.000000 50.000000 inf 1.000000 +uR 3910.000000 50.000000 inf 1.000000 +uR 3920.000000 50.000000 inf 1.000000 +uR 3930.000000 50.000000 inf 1.000000 +uR 3940.000000 50.000000 inf 1.000000 +uR 3950.000000 50.000000 inf 1.000000 +uR 3960.000000 50.000000 inf 1.000000 +uR 3970.000000 50.000000 inf 1.000000 +uR 3980.000000 50.000000 inf 1.000000 +uR 3990.000000 50.000000 inf 1.000000 +uR 4000.000000 50.000000 inf 1.000000 +uR 4010.000000 50.000000 inf 1.000000 +uR 4020.000000 50.000000 inf 1.000000 +uR 4030.000000 50.000000 inf 1.000000 +uR 4040.000000 50.000000 inf 1.000000 +uR 4050.000000 50.000000 inf 1.000000 +uR 4060.000000 50.000000 inf 1.000000 +uR 4070.000000 50.000000 inf 1.000000 +uR 4080.000000 50.000000 inf 1.000000 +uR 4090.000000 50.000000 inf 1.000000 +uR 4100.000000 50.000000 inf 1.000000 +uR 4110.000000 50.000000 inf 1.000000 +uR 4120.000000 50.000000 inf 1.000000 +uR 4130.000000 50.000000 inf 1.000000 +uR 4140.000000 50.000000 inf 1.000000 +uR 4150.000000 50.000000 inf 1.000000 +uR 4160.000000 50.000000 inf 1.000000 +uR 4170.000000 50.000000 inf 1.000000 +uR 4180.000000 50.000000 inf 1.000000 +uR 4190.000000 50.000000 inf 1.000000 +uR 4200.000000 50.000000 inf 1.000000 +uR 4210.000000 50.000000 inf 1.000000 +uR 4220.000000 50.000000 inf 1.000000 +uR 4230.000000 50.000000 inf 1.000000 +uR 4240.000000 50.000000 inf 1.000000 +uR 4250.000000 50.000000 inf 1.000000 +uR 4260.000000 50.000000 inf 1.000000 +uR 4270.000000 50.000000 inf 1.000000 +uR 4280.000000 50.000000 inf 1.000000 +uR 4290.000000 50.000000 inf 1.000000 +uR 4300.000000 50.000000 inf 1.000000 +uR 4310.000000 50.000000 inf 1.000000 +uR 4320.000000 50.000000 inf 1.000000 +uR 4330.000000 50.000000 inf 1.000000 +uR 4340.000000 50.000000 inf 1.000000 +uR 4350.000000 50.000000 inf 1.000000 +uR 4360.000000 50.000000 inf 1.000000 +uR 4370.000000 50.000000 inf 1.000000 +uR 4380.000000 50.000000 inf 1.000000 +uR 4390.000000 50.000000 inf 1.000000 +uR 4400.000000 50.000000 inf 1.000000 +uR 4410.000000 50.000000 inf 1.000000 +uR 4420.000000 50.000000 inf 1.000000 +uR 4430.000000 50.000000 inf 1.000000 +uR 4440.000000 50.000000 inf 1.000000 +uR 4450.000000 50.000000 inf 1.000000 +uR 4460.000000 50.000000 inf 1.000000 +uR 4470.000000 50.000000 inf 1.000000 +uR 4480.000000 50.000000 inf 1.000000 +uR 4490.000000 50.000000 inf 1.000000 +uR 4500.000000 50.000000 inf 1.000000 +uR 4510.000000 50.000000 inf 1.000000 +uR 4520.000000 50.000000 inf 1.000000 +uR 4530.000000 50.000000 inf 1.000000 +uR 4540.000000 50.000000 inf 1.000000 +uR 4550.000000 50.000000 inf 1.000000 +uR 4560.000000 50.000000 inf 1.000000 +uR 4570.000000 50.000000 inf 1.000000 +uR 4580.000000 50.000000 inf 1.000000 +uR 4590.000000 50.000000 inf 1.000000 +uR 4600.000000 50.000000 inf 1.000000 +uR 4610.000000 50.000000 inf 1.000000 +uR 4620.000000 50.000000 inf 1.000000 +uR 4630.000000 50.000000 inf 1.000000 +uR 4640.000000 50.000000 inf 1.000000 +uR 4650.000000 50.000000 inf 1.000000 +uR 4660.000000 50.000000 inf 1.000000 +uR 4670.000000 50.000000 inf 1.000000 +uR 4680.000000 50.000000 inf 1.000000 +uR 4690.000000 50.000000 inf 1.000000 +uR 4700.000000 50.000000 inf 1.000000 +uR 4710.000000 50.000000 inf 1.000000 +uR 4720.000000 50.000000 inf 1.000000 +uR 4730.000000 50.000000 inf 1.000000 +uR 4740.000000 50.000000 inf 1.000000 +uR 4750.000000 50.000000 inf 1.000000 +uR 4760.000000 50.000000 inf 1.000000 +uR 4770.000000 50.000000 inf 1.000000 +uR 4780.000000 50.000000 inf 1.000000 +uR 4790.000000 50.000000 inf 1.000000 +uR 4800.000000 50.000000 inf 1.000000 +uR 4810.000000 50.000000 inf 1.000000 +uR 4820.000000 50.000000 inf 1.000000 +uR 4830.000000 50.000000 inf 1.000000 +uR 4840.000000 50.000000 inf 1.000000 +uR 4850.000000 50.000000 inf 1.000000 +uR 4860.000000 50.000000 inf 1.000000 +uR 4870.000000 50.000000 inf 1.000000 +uR 4880.000000 50.000000 inf 1.000000 +uR 4890.000000 50.000000 inf 1.000000 +uR 4900.000000 50.000000 inf 1.000000 +uR 4910.000000 50.000000 inf 1.000000 +uR 4920.000000 50.000000 inf 1.000000 +uR 4930.000000 50.000000 inf 1.000000 +uR 4940.000000 50.000000 inf 1.000000 +uR 4950.000000 50.000000 inf 1.000000 +uR 4960.000000 50.000000 inf 1.000000 +uR 4970.000000 50.000000 inf 1.000000 +uR 4980.000000 50.000000 inf 1.000000 +uR 4990.000000 50.000000 inf 1.000000 +uR 5000.000000 50.000000 inf 1.000000 +uR 5010.000000 50.000000 inf 1.000000 +uR 5020.000000 50.000000 inf 1.000000 +uR 5030.000000 50.000000 inf 1.000000 +uR 5040.000000 50.000000 inf 1.000000 +uR 5050.000000 50.000000 inf 1.000000 +uR 5060.000000 50.000000 inf 1.000000 +uR 5070.000000 50.000000 inf 1.000000 +uR 5080.000000 50.000000 inf 1.000000 +uR 5090.000000 50.000000 inf 1.000000 +uR 5100.000000 50.000000 inf 1.000000 +uR 5110.000000 50.000000 inf 1.000000 +uR 5120.000000 50.000000 inf 1.000000 +uR 5130.000000 50.000000 inf 1.000000 +uR 5140.000000 50.000000 inf 1.000000 +uR 5150.000000 50.000000 inf 1.000000 +uR 5160.000000 50.000000 inf 1.000000 +uR 5170.000000 50.000000 inf 1.000000 +uR 5180.000000 50.000000 inf 1.000000 +uR 5190.000000 50.000000 inf 1.000000 +uR 5200.000000 50.000000 inf 1.000000 +uR 5210.000000 50.000000 inf 1.000000 +uR 5220.000000 50.000000 inf 1.000000 +uR 5230.000000 50.000000 inf 1.000000 +uR 5240.000000 50.000000 inf 1.000000 +uR 5250.000000 50.000000 inf 1.000000 +uR 5260.000000 50.000000 inf 1.000000 +uR 5270.000000 50.000000 inf 1.000000 +uR 5280.000000 50.000000 inf 1.000000 +uR 5290.000000 50.000000 inf 1.000000 +uR 5300.000000 50.000000 inf 1.000000 +uR 5310.000000 50.000000 inf 1.000000 +uR 5320.000000 50.000000 inf 1.000000 +uR 5330.000000 50.000000 inf 1.000000 +uR 5340.000000 50.000000 inf 1.000000 +uR 5350.000000 50.000000 inf 1.000000 +uR 5360.000000 50.000000 inf 1.000000 +uR 5370.000000 50.000000 inf 1.000000 +uR 5380.000000 50.000000 inf 1.000000 +uR 5390.000000 50.000000 inf 1.000000 +uR 5400.000000 50.000000 inf 1.000000 +uR 5410.000000 50.000000 inf 1.000000 +uR 5420.000000 50.000000 inf 1.000000 +uR 5430.000000 50.000000 inf 1.000000 +uR 5440.000000 50.000000 inf 1.000000 +uR 5450.000000 50.000000 inf 1.000000 +uR 5460.000000 50.000000 inf 1.000000 +uR 5470.000000 50.000000 inf 1.000000 +uR 5480.000000 50.000000 inf 1.000000 +uR 5490.000000 50.000000 inf 1.000000 +uR 5500.000000 50.000000 inf 1.000000 +uR 5510.000000 50.000000 inf 1.000000 +uR 5520.000000 50.000000 inf 1.000000 +uR 5530.000000 50.000000 inf 1.000000 +uR 5540.000000 50.000000 inf 1.000000 +uR 5550.000000 50.000000 inf 1.000000 +uR 5560.000000 50.000000 inf 1.000000 +uR 5570.000000 50.000000 inf 1.000000 +uR 5580.000000 50.000000 inf 1.000000 +uR 5590.000000 50.000000 inf 1.000000 +uR 5600.000000 50.000000 inf 1.000000 +uR 5610.000000 50.000000 inf 1.000000 +uR 5620.000000 50.000000 inf 1.000000 +uR 5630.000000 50.000000 inf 1.000000 +uR 5640.000000 50.000000 inf 1.000000 +uR 5650.000000 50.000000 inf 1.000000 +uR 5660.000000 50.000000 inf 1.000000 +uR 5670.000000 50.000000 inf 1.000000 +uR 5680.000000 50.000000 inf 1.000000 +uR 5690.000000 50.000000 inf 1.000000 +uR 5700.000000 50.000000 inf 1.000000 +uR 5710.000000 50.000000 inf 1.000000 +uR 5720.000000 50.000000 inf 1.000000 +uR 5730.000000 50.000000 inf 1.000000 +uR 5740.000000 50.000000 inf 1.000000 +uR 5750.000000 50.000000 inf 1.000000 +uR 5760.000000 50.000000 inf 1.000000 +uR 5770.000000 50.000000 inf 1.000000 +uR 5780.000000 50.000000 inf 1.000000 +uR 5790.000000 50.000000 inf 1.000000 +uR 5800.000000 50.000000 inf 1.000000 +uR 5810.000000 50.000000 inf 1.000000 +uR 5820.000000 50.000000 inf 1.000000 +uR 5830.000000 50.000000 inf 1.000000 +uR 5840.000000 50.000000 inf 1.000000 +uR 5850.000000 50.000000 inf 1.000000 +uR 5860.000000 50.000000 inf 1.000000 +uR 5870.000000 50.000000 inf 1.000000 +uR 5880.000000 50.000000 inf 1.000000 +uR 5890.000000 50.000000 inf 1.000000 +uR 5900.000000 50.000000 inf 1.000000 +uR 5910.000000 50.000000 inf 1.000000 +uR 5920.000000 50.000000 inf 1.000000 +uR 5930.000000 50.000000 inf 1.000000 +uR 5940.000000 50.000000 inf 1.000000 +uR 5950.000000 50.000000 inf 1.000000 +uR 5960.000000 50.000000 inf 1.000000 +uR 5970.000000 50.000000 inf 1.000000 +uR 5980.000000 50.000000 inf 1.000000 +uR 5990.000000 50.000000 inf 1.000000 +uR 6000.000000 50.000000 inf 1.000000 +uR 6010.000000 50.000000 inf 1.000000 +uR 6020.000000 50.000000 inf 1.000000 +uR 6030.000000 50.000000 inf 1.000000 +uR 6040.000000 50.000000 inf 1.000000 +uR 6050.000000 50.000000 inf 1.000000 +uR 6060.000000 50.000000 inf 1.000000 +uR 6070.000000 50.000000 inf 1.000000 +uR 6080.000000 50.000000 inf 1.000000 +uR 6090.000000 50.000000 inf 1.000000 +uR 6100.000000 50.000000 inf 1.000000 +uR 6110.000000 50.000000 inf 1.000000 +uR 6120.000000 50.000000 inf 1.000000 +uR 6130.000000 50.000000 inf 1.000000 +uR 6140.000000 50.000000 inf 1.000000 +uR 6150.000000 50.000000 inf 1.000000 +uR 6160.000000 50.000000 inf 1.000000 +uR 6170.000000 50.000000 inf 1.000000 +uR 6180.000000 50.000000 inf 1.000000 +uR 6190.000000 50.000000 inf 1.000000 +uR 6200.000000 50.000000 inf 1.000000 +uR 6210.000000 50.000000 inf 1.000000 +uR 6220.000000 50.000000 inf 1.000000 +uR 6230.000000 50.000000 inf 1.000000 +uR 6240.000000 50.000000 inf 1.000000 +uR 6250.000000 50.000000 inf 1.000000 +uR 6260.000000 50.000000 inf 1.000000 +uR 6270.000000 50.000000 inf 1.000000 +uR 6280.000000 50.000000 inf 1.000000 +uR 6290.000000 50.000000 inf 1.000000 +uR 6300.000000 50.000000 inf 1.000000 +uR 6310.000000 50.000000 inf 1.000000 +uR 6320.000000 50.000000 inf 1.000000 +uR 6330.000000 50.000000 inf 1.000000 +uR 6340.000000 50.000000 inf 1.000000 +uR 6350.000000 50.000000 inf 1.000000 +uR 6360.000000 50.000000 inf 1.000000 +uR 6370.000000 50.000000 inf 1.000000 +uR 6380.000000 50.000000 inf 1.000000 +uR 6390.000000 50.000000 inf 1.000000 +uR 6400.000000 50.000000 inf 1.000000 +uR 6410.000000 50.000000 inf 1.000000 +uR 6420.000000 50.000000 inf 1.000000 +uR 6430.000000 50.000000 inf 1.000000 +uR 6440.000000 50.000000 inf 1.000000 +uR 6450.000000 50.000000 inf 1.000000 +uR 6460.000000 50.000000 inf 1.000000 +uR 6470.000000 50.000000 inf 1.000000 +uR 6480.000000 50.000000 inf 1.000000 +uR 6490.000000 50.000000 inf 1.000000 +uR 6500.000000 50.000000 inf 1.000000 +uR 6510.000000 50.000000 inf 1.000000 +uR 6520.000000 50.000000 inf 1.000000 +uR 6530.000000 50.000000 inf 1.000000 +uR 6540.000000 50.000000 inf 1.000000 +uR 6550.000000 50.000000 inf 1.000000 +uR 6560.000000 50.000000 inf 1.000000 +uR 6570.000000 50.000000 inf 1.000000 +uR 6580.000000 50.000000 inf 1.000000 +uR 6590.000000 50.000000 inf 1.000000 +uR 6600.000000 50.000000 inf 1.000000 +uR 6610.000000 50.000000 inf 1.000000 +uR 6620.000000 50.000000 inf 1.000000 +uR 6630.000000 50.000000 inf 1.000000 +uR 6640.000000 50.000000 inf 1.000000 +uR 6650.000000 50.000000 inf 1.000000 +uR 6660.000000 50.000000 inf 1.000000 +uR 6670.000000 50.000000 inf 1.000000 +uR 6680.000000 50.000000 inf 1.000000 +uR 6690.000000 50.000000 inf 1.000000 +uR 6700.000000 50.000000 inf 1.000000 +uR 6710.000000 50.000000 inf 1.000000 +uR 6720.000000 50.000000 inf 1.000000 +uR 6730.000000 50.000000 inf 1.000000 +uR 6740.000000 50.000000 inf 1.000000 +uR 6750.000000 50.000000 inf 1.000000 +uR 6760.000000 50.000000 inf 1.000000 +uR 6770.000000 50.000000 inf 1.000000 +uR 6780.000000 50.000000 inf 1.000000 +uR 6790.000000 50.000000 inf 1.000000 +uR 6800.000000 50.000000 inf 1.000000 +uR 6810.000000 50.000000 inf 1.000000 +uR 6820.000000 50.000000 inf 1.000000 +uR 6830.000000 50.000000 inf 1.000000 +uR 6840.000000 50.000000 inf 1.000000 +uR 6850.000000 50.000000 inf 1.000000 +uR 6860.000000 50.000000 inf 1.000000 +uR 6870.000000 50.000000 inf 1.000000 +uR 6880.000000 50.000000 inf 1.000000 +uR 6890.000000 50.000000 inf 1.000000 +uR 6900.000000 50.000000 inf 1.000000 +uR 6910.000000 50.000000 inf 1.000000 +uR 6920.000000 50.000000 inf 1.000000 +uR 6930.000000 50.000000 inf 1.000000 +uR 6940.000000 50.000000 inf 1.000000 +uR 6950.000000 50.000000 inf 1.000000 +uR 6960.000000 50.000000 inf 1.000000 +uR 6970.000000 50.000000 inf 1.000000 +uR 6980.000000 50.000000 inf 1.000000 +uR 6990.000000 50.000000 inf 1.000000 +uR 7000.000000 50.000000 inf 1.000000 +uR 7010.000000 50.000000 inf 1.000000 +uR 7020.000000 50.000000 inf 1.000000 +uR 7030.000000 50.000000 inf 1.000000 +uR 7040.000000 50.000000 inf 1.000000 +uR 7050.000000 50.000000 inf 1.000000 +uR 7060.000000 50.000000 inf 1.000000 +uR 7070.000000 50.000000 inf 1.000000 +uR 7080.000000 50.000000 inf 1.000000 +uR 7090.000000 50.000000 inf 1.000000 +uR 7100.000000 50.000000 inf 1.000000 +uR 7110.000000 50.000000 inf 1.000000 +uR 7120.000000 50.000000 inf 1.000000 +uR 7130.000000 50.000000 inf 1.000000 +uR 7140.000000 50.000000 inf 1.000000 +uR 7150.000000 50.000000 inf 1.000000 +uR 7160.000000 50.000000 inf 1.000000 +uR 7170.000000 50.000000 inf 1.000000 +uR 7180.000000 50.000000 inf 1.000000 +uR 7190.000000 50.000000 inf 1.000000 +uR 7200.000000 50.000000 inf 1.000000 +uR 7210.000000 50.000000 inf 1.000000 +uR 7220.000000 50.000000 inf 1.000000 +uR 7230.000000 50.000000 inf 1.000000 +uR 7240.000000 50.000000 inf 1.000000 +uR 7250.000000 50.000000 inf 1.000000 +uR 7260.000000 50.000000 inf 1.000000 +uR 7270.000000 50.000000 inf 1.000000 +uR 7280.000000 50.000000 inf 1.000000 +uR 7290.000000 50.000000 inf 1.000000 +uR 7300.000000 50.000000 inf 1.000000 +uR 7310.000000 50.000000 inf 1.000000 +uR 7320.000000 50.000000 inf 1.000000 +uR 7330.000000 50.000000 inf 1.000000 +uR 7340.000000 50.000000 inf 1.000000 +uR 7350.000000 50.000000 inf 1.000000 +uR 7360.000000 50.000000 inf 1.000000 +uR 7370.000000 50.000000 inf 1.000000 +uR 7380.000000 50.000000 inf 1.000000 +uR 7390.000000 50.000000 inf 1.000000 +uR 7400.000000 50.000000 inf 1.000000 +uR 7410.000000 50.000000 inf 1.000000 +uR 7420.000000 50.000000 inf 1.000000 +uR 7430.000000 50.000000 inf 1.000000 +uR 7440.000000 50.000000 inf 1.000000 +uR 7450.000000 50.000000 inf 1.000000 +uR 7460.000000 50.000000 inf 1.000000 +uR 7470.000000 50.000000 inf 1.000000 +uR 7480.000000 50.000000 inf 1.000000 +uR 7490.000000 50.000000 inf 1.000000 +uR 7500.000000 50.000000 inf 1.000000 +uR 7510.000000 50.000000 inf 1.000000 +uR 7520.000000 50.000000 inf 1.000000 +uR 7530.000000 50.000000 inf 1.000000 +uR 7540.000000 50.000000 inf 1.000000 +uR 7550.000000 50.000000 inf 1.000000 +uR 7560.000000 50.000000 inf 1.000000 +uR 7570.000000 50.000000 inf 1.000000 +uR 7580.000000 50.000000 inf 1.000000 +uR 7590.000000 50.000000 inf 1.000000 +uR 7600.000000 50.000000 inf 1.000000 +uR 7610.000000 50.000000 inf 1.000000 +uR 7620.000000 50.000000 inf 1.000000 +uR 7630.000000 50.000000 inf 1.000000 +uR 7640.000000 50.000000 inf 1.000000 +uR 7650.000000 50.000000 inf 1.000000 +uR 7660.000000 50.000000 inf 1.000000 +uR 7670.000000 50.000000 inf 1.000000 +uR 7680.000000 50.000000 inf 1.000000 +uR 7690.000000 50.000000 inf 1.000000 +uR 7700.000000 50.000000 inf 1.000000 +uR 7710.000000 50.000000 inf 1.000000 +uR 7720.000000 50.000000 inf 1.000000 +uR 7730.000000 50.000000 inf 1.000000 +uR 7740.000000 50.000000 inf 1.000000 +uR 7750.000000 50.000000 inf 1.000000 +uR 7760.000000 50.000000 inf 1.000000 +uR 7770.000000 50.000000 inf 1.000000 +uR 7780.000000 50.000000 inf 1.000000 +uR 7790.000000 50.000000 inf 1.000000 +uR 7800.000000 50.000000 inf 1.000000 +uR 7810.000000 50.000000 inf 1.000000 +uR 7820.000000 50.000000 inf 1.000000 +uR 7830.000000 50.000000 inf 1.000000 +uR 7840.000000 50.000000 inf 1.000000 +uR 7850.000000 50.000000 inf 1.000000 +uR 7860.000000 50.000000 inf 1.000000 +uR 7870.000000 50.000000 inf 1.000000 +uR 7880.000000 50.000000 inf 1.000000 +uR 7890.000000 50.000000 inf 1.000000 +uR 7900.000000 50.000000 inf 1.000000 +uR 7910.000000 50.000000 inf 1.000000 +uR 7920.000000 50.000000 inf 1.000000 +uR 7930.000000 50.000000 inf 1.000000 +uR 7940.000000 50.000000 inf 1.000000 +uR 7950.000000 50.000000 inf 1.000000 +uR 7960.000000 50.000000 inf 1.000000 +uR 7970.000000 50.000000 inf 1.000000 +uR 7980.000000 50.000000 inf 1.000000 +uR 7990.000000 50.000000 inf 1.000000 +uR 8000.000000 50.000000 inf 1.000000 +uR 8010.000000 50.000000 inf 1.000000 +uR 8020.000000 50.000000 inf 1.000000 +uR 8030.000000 50.000000 inf 1.000000 +uR 8040.000000 50.000000 inf 1.000000 +uR 8050.000000 50.000000 inf 1.000000 +uR 8060.000000 50.000000 inf 1.000000 +uR 8070.000000 50.000000 inf 1.000000 +uR 8080.000000 50.000000 inf 1.000000 +uR 8090.000000 50.000000 inf 1.000000 +uR 8100.000000 50.000000 inf 1.000000 +uR 8110.000000 50.000000 inf 1.000000 +uR 8120.000000 50.000000 inf 1.000000 +uR 8130.000000 50.000000 inf 1.000000 +uR 8140.000000 50.000000 inf 1.000000 +uR 8150.000000 50.000000 inf 1.000000 +uR 8160.000000 50.000000 inf 1.000000 +uR 8170.000000 50.000000 inf 1.000000 +uR 8180.000000 50.000000 inf 1.000000 +uR 8190.000000 50.000000 inf 1.000000 +uR 8200.000000 50.000000 inf 1.000000 +uR 8210.000000 50.000000 inf 1.000000 +uR 8220.000000 50.000000 inf 1.000000 +uR 8230.000000 50.000000 inf 1.000000 +uR 8240.000000 50.000000 inf 1.000000 +uR 8250.000000 50.000000 inf 1.000000 +uR 8260.000000 50.000000 inf 1.000000 +uR 8270.000000 50.000000 inf 1.000000 +uR 8280.000000 50.000000 inf 1.000000 +uR 8290.000000 50.000000 inf 1.000000 +uR 8300.000000 50.000000 inf 1.000000 +uR 8310.000000 50.000000 inf 1.000000 +uR 8320.000000 50.000000 inf 1.000000 +uR 8330.000000 50.000000 inf 1.000000 +uR 8340.000000 50.000000 inf 1.000000 +uR 8350.000000 50.000000 inf 1.000000 +uR 8360.000000 50.000000 inf 1.000000 +uR 8370.000000 50.000000 inf 1.000000 +uR 8380.000000 50.000000 inf 1.000000 +uR 8390.000000 50.000000 inf 1.000000 +uR 8400.000000 50.000000 inf 1.000000 +uR 8410.000000 50.000000 inf 1.000000 +uR 8420.000000 50.000000 inf 1.000000 +uR 8430.000000 50.000000 inf 1.000000 +uR 8440.000000 50.000000 inf 1.000000 +uR 8450.000000 50.000000 inf 1.000000 +uR 8460.000000 50.000000 inf 1.000000 +uR 8470.000000 50.000000 inf 1.000000 +uR 8480.000000 50.000000 inf 1.000000 +uR 8490.000000 50.000000 inf 1.000000 +uR 8500.000000 50.000000 inf 1.000000 +uR 8510.000000 50.000000 inf 1.000000 +uR 8520.000000 50.000000 inf 1.000000 +uR 8530.000000 50.000000 inf 1.000000 +uR 8540.000000 50.000000 inf 1.000000 +uR 8550.000000 50.000000 inf 1.000000 +uR 8560.000000 50.000000 inf 1.000000 +uR 8570.000000 50.000000 inf 1.000000 +uR 8580.000000 50.000000 inf 1.000000 +uR 8590.000000 50.000000 inf 1.000000 +uR 8600.000000 50.000000 inf 1.000000 +uR 8610.000000 50.000000 inf 1.000000 +uR 8620.000000 50.000000 inf 1.000000 +uR 8630.000000 50.000000 inf 1.000000 +uR 8640.000000 50.000000 inf 1.000000 +uR 8650.000000 50.000000 inf 1.000000 +uR 8660.000000 50.000000 inf 1.000000 +uR 8670.000000 50.000000 inf 1.000000 +uR 8680.000000 50.000000 inf 1.000000 +uR 8690.000000 50.000000 inf 1.000000 +uR 8700.000000 50.000000 inf 1.000000 +uR 8710.000000 50.000000 inf 1.000000 +uR 8720.000000 50.000000 inf 1.000000 +uR 8730.000000 50.000000 inf 1.000000 +uR 8740.000000 50.000000 inf 1.000000 +uR 8750.000000 50.000000 inf 1.000000 +uR 8760.000000 50.000000 inf 1.000000 +uR 8770.000000 50.000000 inf 1.000000 +uR 8780.000000 50.000000 inf 1.000000 +uR 8790.000000 50.000000 inf 1.000000 +uR 8800.000000 50.000000 inf 1.000000 +uR 8810.000000 50.000000 inf 1.000000 +uR 8820.000000 50.000000 inf 1.000000 +uR 8830.000000 50.000000 inf 1.000000 +uR 8840.000000 50.000000 inf 1.000000 +uR 8850.000000 50.000000 inf 1.000000 +uR 8860.000000 50.000000 inf 1.000000 +uR 8870.000000 50.000000 inf 1.000000 +uR 8880.000000 50.000000 inf 1.000000 +uR 8890.000000 50.000000 inf 1.000000 +uR 8900.000000 50.000000 inf 1.000000 +uR 8910.000000 50.000000 inf 1.000000 +uR 8920.000000 50.000000 inf 1.000000 +uR 8930.000000 50.000000 inf 1.000000 +uR 8940.000000 50.000000 inf 1.000000 +uR 8950.000000 50.000000 inf 1.000000 +uR 8960.000000 50.000000 inf 1.000000 +uR 8970.000000 50.000000 inf 1.000000 +uR 8980.000000 50.000000 inf 1.000000 +uR 8990.000000 50.000000 inf 1.000000 +uR 9000.000000 50.000000 inf 1.000000 +uR 9010.000000 50.000000 inf 1.000000 +uR 9020.000000 50.000000 inf 1.000000 +uR 9030.000000 50.000000 inf 1.000000 +uR 9040.000000 50.000000 inf 1.000000 +uR 9050.000000 50.000000 inf 1.000000 +uR 9060.000000 50.000000 inf 1.000000 +uR 9070.000000 50.000000 inf 1.000000 +uR 9080.000000 50.000000 inf 1.000000 +uR 9090.000000 50.000000 inf 1.000000 +uR 9100.000000 50.000000 inf 1.000000 +uR 9110.000000 50.000000 inf 1.000000 +uR 9120.000000 50.000000 inf 1.000000 +uR 9130.000000 50.000000 inf 1.000000 +uR 9140.000000 50.000000 inf 1.000000 +uR 9150.000000 50.000000 inf 1.000000 +uR 9160.000000 50.000000 inf 1.000000 +uR 9170.000000 50.000000 inf 1.000000 +uR 9180.000000 50.000000 inf 1.000000 +uR 9190.000000 50.000000 inf 1.000000 +uR 9200.000000 50.000000 inf 1.000000 +uR 9210.000000 50.000000 inf 1.000000 +uR 9220.000000 50.000000 inf 1.000000 +uR 9230.000000 50.000000 inf 1.000000 +uR 9240.000000 50.000000 inf 1.000000 +uR 9250.000000 50.000000 inf 1.000000 +uR 9260.000000 50.000000 inf 1.000000 +uR 9270.000000 50.000000 inf 1.000000 +uR 9280.000000 50.000000 inf 1.000000 +uR 9290.000000 50.000000 inf 1.000000 +uR 9300.000000 50.000000 inf 1.000000 +uR 9310.000000 50.000000 inf 1.000000 +uR 9320.000000 50.000000 inf 1.000000 +uR 9330.000000 50.000000 inf 1.000000 +uR 9340.000000 50.000000 inf 1.000000 +uR 9350.000000 50.000000 inf 1.000000 +uR 9360.000000 50.000000 inf 1.000000 +uR 9370.000000 50.000000 inf 1.000000 +uR 9380.000000 50.000000 inf 1.000000 +uR 9390.000000 50.000000 inf 1.000000 +uR 9400.000000 50.000000 inf 1.000000 +uR 9410.000000 50.000000 inf 1.000000 +uR 9420.000000 50.000000 inf 1.000000 +uR 9430.000000 50.000000 inf 1.000000 +uR 9440.000000 50.000000 inf 1.000000 +uR 9450.000000 50.000000 inf 1.000000 +uR 9460.000000 50.000000 inf 1.000000 +uR 9470.000000 50.000000 inf 1.000000 +uR 9480.000000 50.000000 inf 1.000000 +uR 9490.000000 50.000000 inf 1.000000 +uR 9500.000000 50.000000 inf 1.000000 +uR 9510.000000 50.000000 inf 1.000000 +uR 9520.000000 50.000000 inf 1.000000 +uR 9530.000000 50.000000 inf 1.000000 +uR 9540.000000 50.000000 inf 1.000000 +uR 9550.000000 50.000000 inf 1.000000 +uR 9560.000000 50.000000 inf 1.000000 +uR 9570.000000 50.000000 inf 1.000000 +uR 9580.000000 50.000000 inf 1.000000 +uR 9590.000000 50.000000 inf 1.000000 +uR 9600.000000 50.000000 inf 1.000000 +uR 9610.000000 50.000000 inf 1.000000 +uR 9620.000000 50.000000 inf 1.000000 +uR 9630.000000 50.000000 inf 1.000000 +uR 9640.000000 50.000000 inf 1.000000 +uR 9650.000000 50.000000 inf 1.000000 +uR 9660.000000 50.000000 inf 1.000000 +uR 9670.000000 50.000000 inf 1.000000 +uR 9680.000000 50.000000 inf 1.000000 +uR 9690.000000 50.000000 inf 1.000000 +uR 9700.000000 50.000000 inf 1.000000 +uR 9710.000000 50.000000 inf 1.000000 +uR 9720.000000 50.000000 inf 1.000000 +uR 9730.000000 50.000000 inf 1.000000 +uR 9740.000000 50.000000 inf 1.000000 +uR 9750.000000 50.000000 inf 1.000000 +uR 9760.000000 50.000000 inf 1.000000 +uR 9770.000000 50.000000 inf 1.000000 +uR 9780.000000 50.000000 inf 1.000000 +uR 9790.000000 50.000000 inf 1.000000 +uR 9800.000000 50.000000 inf 1.000000 +uR 9810.000000 50.000000 inf 1.000000 +uR 9820.000000 50.000000 inf 1.000000 +uR 9830.000000 50.000000 inf 1.000000 +uR 9840.000000 50.000000 inf 1.000000 +uR 9850.000000 50.000000 inf 1.000000 +uR 9860.000000 50.000000 inf 1.000000 +uR 9870.000000 50.000000 inf 1.000000 +uR 9880.000000 50.000000 inf 1.000000 +uR 9890.000000 50.000000 inf 1.000000 +uR 9900.000000 50.000000 inf 1.000000 +uR 9910.000000 50.000000 inf 1.000000 +uR 9920.000000 50.000000 inf 1.000000 +uR 9930.000000 50.000000 inf 1.000000 +uR 9940.000000 50.000000 inf 1.000000 +uR 9950.000000 50.000000 inf 1.000000 +uR 9960.000000 50.000000 inf 1.000000 +uR 9970.000000 50.000000 inf 1.000000 +uR 9980.000000 50.000000 inf 1.000000 +uR 9990.000000 50.000000 inf 1.000000 +uR 10000.000000 50.000000 inf 1.000000 +uR 10025.000000 50.000000 inf 1.000000 +uR 10050.000000 50.000000 inf 1.000000 +uR 10075.000000 50.000000 inf 1.000000 +uR 10100.000000 50.000000 inf 1.000000 +uR 10125.000000 50.000000 inf 1.000000 +uR 10150.000000 50.000000 inf 1.000000 +uR 10175.000000 50.000000 inf 1.000000 +uR 10200.000000 50.000000 inf 1.000000 +uR 10225.000000 50.000000 inf 1.000000 +uR 10250.000000 50.000000 inf 1.000000 +uR 10275.000000 50.000000 inf 1.000000 +uR 10300.000000 50.000000 inf 1.000000 +uR 10325.000000 50.000000 inf 1.000000 +uR 10350.000000 50.000000 inf 1.000000 +uR 10375.000000 50.000000 inf 1.000000 +uR 10400.000000 50.000000 inf 1.000000 +uR 10425.000000 50.000000 inf 1.000000 +uR 10450.000000 50.000000 inf 1.000000 +uR 10475.000000 50.000000 inf 1.000000 +uR 10500.000000 50.000000 inf 1.000000 +uR 10525.000000 50.000000 inf 1.000000 +uR 10550.000000 50.000000 inf 1.000000 +uR 10575.000000 50.000000 inf 1.000000 +uR 10600.000000 50.000000 inf 1.000000 +uR 10625.000000 50.000000 inf 1.000000 +uR 10650.000000 50.000000 inf 1.000000 +uR 10675.000000 50.000000 inf 1.000000 +uR 10700.000000 50.000000 inf 1.000000 +uR 10725.000000 50.000000 inf 1.000000 +uR 10750.000000 50.000000 inf 1.000000 +uR 10775.000000 50.000000 inf 1.000000 +uR 10800.000000 50.000000 inf 1.000000 +uR 10825.000000 50.000000 inf 1.000000 +uR 10850.000000 50.000000 inf 1.000000 +uR 10875.000000 50.000000 inf 1.000000 +uR 10900.000000 50.000000 inf 1.000000 +uR 10925.000000 50.000000 inf 1.000000 +uR 10950.000000 50.000000 inf 1.000000 +uR 10975.000000 50.000000 inf 1.000000 +uR 11000.000000 50.000000 inf 1.000000 +uR 11025.000000 50.000000 inf 1.000000 +uR 11050.000000 50.000000 inf 1.000000 +uR 11075.000000 50.000000 inf 1.000000 +uR 11100.000000 50.000000 inf 1.000000 +uR 11125.000000 50.000000 inf 1.000000 +uR 11150.000000 50.000000 inf 1.000000 +uR 11175.000000 50.000000 inf 1.000000 +uR 11200.000000 50.000000 inf 1.000000 +uR 11225.000000 50.000000 inf 1.000000 +uR 11250.000000 50.000000 inf 1.000000 +uR 11275.000000 50.000000 inf 1.000000 +uR 11300.000000 50.000000 inf 1.000000 +uR 11325.000000 50.000000 inf 1.000000 +uR 11350.000000 50.000000 inf 1.000000 +uR 11375.000000 50.000000 inf 1.000000 +uR 11400.000000 50.000000 inf 1.000000 +uR 11425.000000 50.000000 inf 1.000000 +uR 11450.000000 50.000000 inf 1.000000 +uR 11475.000000 50.000000 inf 1.000000 +uR 11500.000000 50.000000 inf 1.000000 +uR 11525.000000 50.000000 inf 1.000000 +uR 11550.000000 50.000000 inf 1.000000 +uR 11575.000000 50.000000 inf 1.000000 +uR 11600.000000 50.000000 inf 1.000000 +uR 11625.000000 50.000000 inf 1.000000 +uR 11650.000000 50.000000 inf 1.000000 +uR 11675.000000 50.000000 inf 1.000000 +uR 11700.000000 50.000000 inf 1.000000 +uR 11725.000000 50.000000 inf 1.000000 +uR 11750.000000 50.000000 inf 1.000000 +uR 11775.000000 50.000000 inf 1.000000 +uR 11800.000000 50.000000 inf 1.000000 +uR 11825.000000 50.000000 inf 1.000000 +uR 11850.000000 50.000000 inf 1.000000 +uR 11875.000000 50.000000 inf 1.000000 +uR 11900.000000 50.000000 inf 1.000000 +uR 11925.000000 50.000000 inf 1.000000 +uR 11950.000000 50.000000 inf 1.000000 +uR 11975.000000 50.000000 inf 1.000000 +uR 12000.000000 50.000000 inf 1.000000 +uR 12025.000000 50.000000 inf 1.000000 +uR 12050.000000 50.000000 inf 1.000000 +uR 12075.000000 50.000000 inf 1.000000 +uR 12100.000000 50.000000 inf 1.000000 +uR 12125.000000 50.000000 inf 1.000000 +uR 12150.000000 50.000000 inf 1.000000 +uR 12175.000000 50.000000 inf 1.000000 +uR 12200.000000 50.000000 inf 1.000000 +uR 12225.000000 50.000000 inf 1.000000 +uR 12250.000000 50.000000 inf 1.000000 +uR 12275.000000 50.000000 inf 1.000000 +uR 12300.000000 50.000000 inf 1.000000 +uR 12325.000000 50.000000 inf 1.000000 +uR 12350.000000 50.000000 inf 1.000000 +uR 12375.000000 50.000000 inf 1.000000 +uR 12400.000000 50.000000 inf 1.000000 +uR 12425.000000 50.000000 inf 1.000000 +uR 12450.000000 50.000000 inf 1.000000 +uR 12475.000000 50.000000 inf 1.000000 +uR 12500.000000 50.000000 inf 1.000000 +uR 12525.000000 50.000000 inf 1.000000 +uR 12550.000000 50.000000 inf 1.000000 +uR 12575.000000 50.000000 inf 1.000000 +uR 12600.000000 50.000000 inf 1.000000 +uR 12625.000000 50.000000 inf 1.000000 +uR 12650.000000 50.000000 inf 1.000000 +uR 12675.000000 50.000000 inf 1.000000 +uR 12700.000000 50.000000 inf 1.000000 +uR 12725.000000 50.000000 inf 1.000000 +uR 12750.000000 50.000000 inf 1.000000 +uR 12775.000000 50.000000 inf 1.000000 +uR 12800.000000 50.000000 inf 1.000000 +uR 12825.000000 50.000000 inf 1.000000 +uR 12850.000000 50.000000 inf 1.000000 +uR 12875.000000 50.000000 inf 1.000000 +uR 12900.000000 50.000000 inf 1.000000 +uR 12925.000000 50.000000 inf 1.000000 +uR 12950.000000 50.000000 inf 1.000000 +uR 12975.000000 50.000000 inf 1.000000 +uR 13000.000000 50.000000 inf 1.000000 +uR 13025.000000 50.000000 inf 1.000000 +uR 13050.000000 50.000000 inf 1.000000 +uR 13075.000000 50.000000 inf 1.000000 +uR 13100.000000 50.000000 inf 1.000000 +uR 13125.000000 50.000000 inf 1.000000 +uR 13150.000000 50.000000 inf 1.000000 +uR 13175.000000 50.000000 inf 1.000000 +uR 13200.000000 50.000000 inf 1.000000 +uR 13225.000000 50.000000 inf 1.000000 +uR 13250.000000 50.000000 inf 1.000000 +uR 13275.000000 50.000000 inf 1.000000 +uR 13300.000000 50.000000 inf 1.000000 +uR 13325.000000 50.000000 inf 1.000000 +uR 13350.000000 50.000000 inf 1.000000 +uR 13375.000000 50.000000 inf 1.000000 +uR 13400.000000 50.000000 inf 1.000000 +uR 13425.000000 50.000000 inf 1.000000 +uR 13450.000000 50.000000 inf 1.000000 +uR 13475.000000 50.000000 inf 1.000000 +uR 13500.000000 50.000000 inf 1.000000 +uR 13525.000000 50.000000 inf 1.000000 +uR 13550.000000 50.000000 inf 1.000000 +uR 13575.000000 50.000000 inf 1.000000 +uR 13600.000000 50.000000 inf 1.000000 +uR 13625.000000 50.000000 inf 1.000000 +uR 13650.000000 50.000000 inf 1.000000 +uR 13675.000000 50.000000 inf 1.000000 +uR 13700.000000 50.000000 inf 1.000000 +uR 13725.000000 50.000000 inf 1.000000 +uR 13750.000000 50.000000 inf 1.000000 +uR 13775.000000 50.000000 inf 1.000000 +uR 13800.000000 50.000000 inf 1.000000 +uR 13825.000000 50.000000 inf 1.000000 +uR 13850.000000 50.000000 inf 1.000000 +uR 13875.000000 50.000000 inf 1.000000 +uR 13900.000000 50.000000 inf 1.000000 +uR 13925.000000 50.000000 inf 1.000000 +uR 13950.000000 50.000000 inf 1.000000 +uR 13975.000000 50.000000 inf 1.000000 +uR 14000.000000 50.000000 inf 1.000000 +uR 14025.000000 50.000000 inf 1.000000 +uR 14050.000000 50.000000 inf 1.000000 +uR 14075.000000 50.000000 inf 1.000000 +uR 14100.000000 50.000000 inf 1.000000 +uR 14125.000000 50.000000 inf 1.000000 +uR 14150.000000 50.000000 inf 1.000000 +uR 14175.000000 50.000000 inf 1.000000 +uR 14200.000000 50.000000 inf 1.000000 +uR 14225.000000 50.000000 inf 1.000000 +uR 14250.000000 50.000000 inf 1.000000 +uR 14275.000000 50.000000 inf 1.000000 +uR 14300.000000 50.000000 inf 1.000000 +uR 14325.000000 50.000000 inf 1.000000 +uR 14350.000000 50.000000 inf 1.000000 +uR 14375.000000 50.000000 inf 1.000000 +uR 14400.000000 50.000000 inf 1.000000 +uR 14425.000000 50.000000 inf 1.000000 +uR 14450.000000 50.000000 inf 1.000000 +uR 14475.000000 50.000000 inf 1.000000 +uR 14500.000000 50.000000 inf 1.000000 +uR 14525.000000 50.000000 inf 1.000000 +uR 14550.000000 50.000000 inf 1.000000 +uR 14575.000000 50.000000 inf 1.000000 +uR 14600.000000 50.000000 inf 1.000000 +uR 14625.000000 50.000000 inf 1.000000 +uR 14650.000000 50.000000 inf 1.000000 +uR 14675.000000 50.000000 inf 1.000000 +uR 14700.000000 50.000000 inf 1.000000 +uR 14725.000000 50.000000 inf 1.000000 +uR 14750.000000 50.000000 inf 1.000000 +uR 14775.000000 50.000000 inf 1.000000 +uR 14800.000000 50.000000 inf 1.000000 +uR 14825.000000 50.000000 inf 1.000000 +uR 14850.000000 50.000000 inf 1.000000 +uR 14875.000000 50.000000 inf 1.000000 +uR 14900.000000 50.000000 inf 1.000000 +uR 14925.000000 50.000000 inf 1.000000 +uR 14950.000000 50.000000 inf 1.000000 +uR 14975.000000 50.000000 inf 1.000000 +uR 15000.000000 50.000000 inf 1.000000 +uR 15025.000000 50.000000 inf 1.000000 +uR 15050.000000 50.000000 inf 1.000000 +uR 15075.000000 50.000000 inf 1.000000 +uR 15100.000000 50.000000 inf 1.000000 +uR 15125.000000 50.000000 inf 1.000000 +uR 15150.000000 50.000000 inf 1.000000 +uR 15175.000000 50.000000 inf 1.000000 +uR 15200.000000 50.000000 inf 1.000000 +uR 15225.000000 50.000000 inf 1.000000 +uR 15250.000000 50.000000 inf 1.000000 +uR 15275.000000 50.000000 inf 1.000000 +uR 15300.000000 50.000000 inf 1.000000 +uR 15325.000000 50.000000 inf 1.000000 +uR 15350.000000 50.000000 inf 1.000000 +uR 15375.000000 50.000000 inf 1.000000 +uR 15400.000000 50.000000 inf 1.000000 +uR 15425.000000 50.000000 inf 1.000000 +uR 15450.000000 50.000000 inf 1.000000 +uR 15475.000000 50.000000 inf 1.000000 +uR 15500.000000 50.000000 inf 1.000000 +uR 15525.000000 50.000000 inf 1.000000 +uR 15550.000000 50.000000 inf 1.000000 +uR 15575.000000 50.000000 inf 1.000000 +uR 15600.000000 50.000000 inf 1.000000 +uR 15625.000000 50.000000 inf 1.000000 +uR 15650.000000 50.000000 inf 1.000000 +uR 15675.000000 50.000000 inf 1.000000 +uR 15700.000000 50.000000 inf 1.000000 +uR 15725.000000 50.000000 inf 1.000000 +uR 15750.000000 50.000000 inf 1.000000 +uR 15775.000000 50.000000 inf 1.000000 +uR 15800.000000 50.000000 inf 1.000000 +uR 15825.000000 50.000000 inf 1.000000 +uR 15850.000000 50.000000 inf 1.000000 +uR 15875.000000 50.000000 inf 1.000000 +uR 15900.000000 50.000000 inf 1.000000 +uR 15925.000000 50.000000 inf 1.000000 +uR 15950.000000 50.000000 inf 1.000000 +uR 15975.000000 50.000000 inf 1.000000 +uR 16000.000000 50.000000 inf 1.000000 +uR 16025.000000 50.000000 inf 1.000000 +uR 16050.000000 50.000000 inf 1.000000 +uR 16075.000000 50.000000 inf 1.000000 +uR 16100.000000 50.000000 inf 1.000000 +uR 16125.000000 50.000000 inf 1.000000 +uR 16150.000000 50.000000 inf 1.000000 +uR 16175.000000 50.000000 inf 1.000000 +uR 16200.000000 50.000000 inf 1.000000 +uR 16225.000000 50.000000 inf 1.000000 +uR 16250.000000 50.000000 inf 1.000000 +uR 16275.000000 50.000000 inf 1.000000 +uR 16300.000000 50.000000 inf 1.000000 +uR 16325.000000 50.000000 inf 1.000000 +uR 16350.000000 50.000000 inf 1.000000 +uR 16375.000000 50.000000 inf 1.000000 +uR 16400.000000 50.000000 inf 1.000000 +uR 16425.000000 50.000000 inf 1.000000 +uR 16450.000000 50.000000 inf 1.000000 +uR 16475.000000 50.000000 inf 1.000000 +uR 16500.000000 50.000000 inf 1.000000 +uR 16525.000000 50.000000 inf 1.000000 +uR 16550.000000 50.000000 inf 1.000000 +uR 16575.000000 50.000000 inf 1.000000 +uR 16600.000000 50.000000 inf 1.000000 +uR 16625.000000 50.000000 inf 1.000000 +uR 16650.000000 50.000000 inf 1.000000 +uR 16675.000000 50.000000 inf 1.000000 +uR 16700.000000 50.000000 inf 1.000000 +uR 16725.000000 50.000000 inf 1.000000 +uR 16750.000000 50.000000 inf 1.000000 +uR 16775.000000 50.000000 inf 1.000000 +uR 16800.000000 50.000000 inf 1.000000 +uR 16825.000000 50.000000 inf 1.000000 +uR 16850.000000 50.000000 inf 1.000000 +uR 16875.000000 50.000000 inf 1.000000 +uR 16900.000000 50.000000 inf 1.000000 +uR 16925.000000 50.000000 inf 1.000000 +uR 16950.000000 50.000000 inf 1.000000 +uR 16975.000000 50.000000 inf 1.000000 +uR 17000.000000 50.000000 inf 1.000000 +uR 1930.000000 60.000000 inf 1.000000 +uR 1940.000000 60.000000 inf 1.000000 +uR 1950.000000 60.000000 inf 1.000000 +uR 1960.000000 60.000000 inf 1.000000 +uR 1970.000000 60.000000 inf 1.000000 +uR 1980.000000 60.000000 inf 1.000000 +uR 1990.000000 60.000000 inf 1.000000 +uR 2000.000000 60.000000 inf 1.000000 +uR 2010.000000 60.000000 inf 1.000000 +uR 2020.000000 60.000000 inf 1.000000 +uR 2030.000000 60.000000 inf 1.000000 +uR 2040.000000 60.000000 inf 1.000000 +uR 2050.000000 60.000000 inf 1.000000 +uR 2060.000000 60.000000 inf 1.000000 +uR 2070.000000 60.000000 inf 1.000000 +uR 2080.000000 60.000000 inf 1.000000 +uR 2090.000000 60.000000 inf 1.000000 +uR 2100.000000 60.000000 inf 1.000000 +uR 2110.000000 60.000000 inf 1.000000 +uR 2120.000000 60.000000 inf 1.000000 +uR 2130.000000 60.000000 inf 1.000000 +uR 2140.000000 60.000000 inf 1.000000 +uR 2150.000000 60.000000 inf 1.000000 +uR 2160.000000 60.000000 inf 1.000000 +uR 2170.000000 60.000000 inf 1.000000 +uR 2180.000000 60.000000 inf 1.000000 +uR 2190.000000 60.000000 inf 1.000000 +uR 2200.000000 60.000000 inf 1.000000 +uR 2210.000000 60.000000 inf 1.000000 +uR 2220.000000 60.000000 inf 1.000000 +uR 2230.000000 60.000000 inf 1.000000 +uR 2240.000000 60.000000 inf 1.000000 +uR 2250.000000 60.000000 inf 1.000000 +uR 2260.000000 60.000000 inf 1.000000 +uR 2270.000000 60.000000 inf 1.000000 +uR 2280.000000 60.000000 inf 1.000000 +uR 2290.000000 60.000000 inf 1.000000 +uR 2300.000000 60.000000 inf 1.000000 +uR 2310.000000 60.000000 inf 1.000000 +uR 2320.000000 60.000000 inf 1.000000 +uR 2330.000000 60.000000 inf 1.000000 +uR 2340.000000 60.000000 inf 1.000000 +uR 2350.000000 60.000000 inf 1.000000 +uR 2360.000000 60.000000 inf 1.000000 +uR 2370.000000 60.000000 inf 1.000000 +uR 2380.000000 60.000000 inf 1.000000 +uR 2390.000000 60.000000 inf 1.000000 +uR 2400.000000 60.000000 inf 1.000000 +uR 2410.000000 60.000000 inf 1.000000 +uR 2420.000000 60.000000 inf 1.000000 +uR 2430.000000 60.000000 inf 1.000000 +uR 2440.000000 60.000000 inf 1.000000 +uR 2450.000000 60.000000 inf 1.000000 +uR 2460.000000 60.000000 inf 1.000000 +uR 2470.000000 60.000000 inf 1.000000 +uR 2480.000000 60.000000 inf 1.000000 +uR 2490.000000 60.000000 inf 1.000000 +uR 2500.000000 60.000000 inf 1.000000 +uR 2510.000000 60.000000 inf 1.000000 +uR 2520.000000 60.000000 inf 1.000000 +uR 2530.000000 60.000000 inf 1.000000 +uR 2540.000000 60.000000 inf 1.000000 +uR 2550.000000 60.000000 inf 1.000000 +uR 2560.000000 60.000000 inf 1.000000 +uR 2570.000000 60.000000 inf 1.000000 +uR 2580.000000 60.000000 inf 1.000000 +uR 2590.000000 60.000000 inf 1.000000 +uR 2600.000000 60.000000 inf 1.000000 +uR 2610.000000 60.000000 inf 1.000000 +uR 2620.000000 60.000000 inf 1.000000 +uR 2630.000000 60.000000 inf 1.000000 +uR 2640.000000 60.000000 inf 1.000000 +uR 2650.000000 60.000000 inf 1.000000 +uR 2660.000000 60.000000 inf 1.000000 +uR 2670.000000 60.000000 inf 1.000000 +uR 2680.000000 60.000000 inf 1.000000 +uR 2690.000000 60.000000 inf 1.000000 +uR 2700.000000 60.000000 inf 1.000000 +uR 2710.000000 60.000000 inf 1.000000 +uR 2720.000000 60.000000 inf 1.000000 +uR 2730.000000 60.000000 inf 1.000000 +uR 2740.000000 60.000000 inf 1.000000 +uR 2750.000000 60.000000 inf 1.000000 +uR 2760.000000 60.000000 inf 1.000000 +uR 2770.000000 60.000000 inf 1.000000 +uR 2780.000000 60.000000 inf 1.000000 +uR 2790.000000 60.000000 inf 1.000000 +uR 2800.000000 60.000000 inf 1.000000 +uR 2810.000000 60.000000 inf 1.000000 +uR 2820.000000 60.000000 inf 1.000000 +uR 2830.000000 60.000000 inf 1.000000 +uR 2840.000000 60.000000 inf 1.000000 +uR 2850.000000 60.000000 inf 1.000000 +uR 2860.000000 60.000000 inf 1.000000 +uR 2870.000000 60.000000 inf 1.000000 +uR 2880.000000 60.000000 inf 1.000000 +uR 2890.000000 60.000000 inf 1.000000 +uR 2900.000000 60.000000 inf 1.000000 +uR 2910.000000 60.000000 inf 1.000000 +uR 2920.000000 60.000000 inf 1.000000 +uR 2930.000000 60.000000 inf 1.000000 +uR 2940.000000 60.000000 inf 1.000000 +uR 2950.000000 60.000000 inf 1.000000 +uR 2960.000000 60.000000 inf 1.000000 +uR 2970.000000 60.000000 inf 1.000000 +uR 2980.000000 60.000000 inf 1.000000 +uR 2990.000000 60.000000 inf 1.000000 +uR 3000.000000 60.000000 inf 1.000000 +uR 3010.000000 60.000000 inf 1.000000 +uR 3020.000000 60.000000 inf 1.000000 +uR 3030.000000 60.000000 inf 1.000000 +uR 3040.000000 60.000000 inf 1.000000 +uR 3050.000000 60.000000 inf 1.000000 +uR 3060.000000 60.000000 inf 1.000000 +uR 3070.000000 60.000000 inf 1.000000 +uR 3080.000000 60.000000 inf 1.000000 +uR 3090.000000 60.000000 inf 1.000000 +uR 3100.000000 60.000000 inf 1.000000 +uR 3110.000000 60.000000 inf 1.000000 +uR 3120.000000 60.000000 inf 1.000000 +uR 3130.000000 60.000000 inf 1.000000 +uR 3140.000000 60.000000 inf 1.000000 +uR 3150.000000 60.000000 inf 1.000000 +uR 3160.000000 60.000000 inf 1.000000 +uR 3170.000000 60.000000 inf 1.000000 +uR 3180.000000 60.000000 inf 1.000000 +uR 3190.000000 60.000000 inf 1.000000 +uR 3200.000000 60.000000 inf 1.000000 +uR 3210.000000 60.000000 inf 1.000000 +uR 3220.000000 60.000000 inf 1.000000 +uR 3230.000000 60.000000 inf 1.000000 +uR 3240.000000 60.000000 inf 1.000000 +uR 3250.000000 60.000000 inf 1.000000 +uR 3260.000000 60.000000 inf 1.000000 +uR 3270.000000 60.000000 inf 1.000000 +uR 3280.000000 60.000000 inf 1.000000 +uR 3290.000000 60.000000 inf 1.000000 +uR 3300.000000 60.000000 inf 1.000000 +uR 3310.000000 60.000000 inf 1.000000 +uR 3320.000000 60.000000 inf 1.000000 +uR 3330.000000 60.000000 inf 1.000000 +uR 3340.000000 60.000000 inf 1.000000 +uR 3350.000000 60.000000 inf 1.000000 +uR 3360.000000 60.000000 inf 1.000000 +uR 3370.000000 60.000000 inf 1.000000 +uR 3380.000000 60.000000 inf 1.000000 +uR 3390.000000 60.000000 inf 1.000000 +uR 3400.000000 60.000000 inf 1.000000 +uR 3410.000000 60.000000 inf 1.000000 +uR 3420.000000 60.000000 inf 1.000000 +uR 3430.000000 60.000000 inf 1.000000 +uR 3440.000000 60.000000 inf 1.000000 +uR 3450.000000 60.000000 inf 1.000000 +uR 3460.000000 60.000000 inf 1.000000 +uR 3470.000000 60.000000 inf 1.000000 +uR 3480.000000 60.000000 inf 1.000000 +uR 3490.000000 60.000000 inf 1.000000 +uR 3500.000000 60.000000 inf 1.000000 +uR 3510.000000 60.000000 inf 1.000000 +uR 3520.000000 60.000000 inf 1.000000 +uR 3530.000000 60.000000 inf 1.000000 +uR 3540.000000 60.000000 inf 1.000000 +uR 3550.000000 60.000000 inf 1.000000 +uR 3560.000000 60.000000 inf 1.000000 +uR 3570.000000 60.000000 inf 1.000000 +uR 3580.000000 60.000000 inf 1.000000 +uR 3590.000000 60.000000 inf 1.000000 +uR 3600.000000 60.000000 inf 1.000000 +uR 3610.000000 60.000000 inf 1.000000 +uR 3620.000000 60.000000 inf 1.000000 +uR 3630.000000 60.000000 inf 1.000000 +uR 3640.000000 60.000000 inf 1.000000 +uR 3650.000000 60.000000 inf 1.000000 +uR 3660.000000 60.000000 inf 1.000000 +uR 3670.000000 60.000000 inf 1.000000 +uR 3680.000000 60.000000 inf 1.000000 +uR 3690.000000 60.000000 inf 1.000000 +uR 3700.000000 60.000000 inf 1.000000 +uR 3710.000000 60.000000 inf 1.000000 +uR 3720.000000 60.000000 inf 1.000000 +uR 3730.000000 60.000000 inf 1.000000 +uR 3740.000000 60.000000 inf 1.000000 +uR 3750.000000 60.000000 inf 1.000000 +uR 3760.000000 60.000000 inf 1.000000 +uR 3770.000000 60.000000 inf 1.000000 +uR 3780.000000 60.000000 inf 1.000000 +uR 3790.000000 60.000000 inf 1.000000 +uR 3800.000000 60.000000 inf 1.000000 +uR 3810.000000 60.000000 inf 1.000000 +uR 3820.000000 60.000000 inf 1.000000 +uR 3830.000000 60.000000 inf 1.000000 +uR 3840.000000 60.000000 inf 1.000000 +uR 3850.000000 60.000000 inf 1.000000 +uR 3860.000000 60.000000 inf 1.000000 +uR 3870.000000 60.000000 inf 1.000000 +uR 3880.000000 60.000000 inf 1.000000 +uR 3890.000000 60.000000 inf 1.000000 +uR 3900.000000 60.000000 inf 1.000000 +uR 3910.000000 60.000000 inf 1.000000 +uR 3920.000000 60.000000 inf 1.000000 +uR 3930.000000 60.000000 inf 1.000000 +uR 3940.000000 60.000000 inf 1.000000 +uR 3950.000000 60.000000 inf 1.000000 +uR 3960.000000 60.000000 inf 1.000000 +uR 3970.000000 60.000000 inf 1.000000 +uR 3980.000000 60.000000 inf 1.000000 +uR 3990.000000 60.000000 inf 1.000000 +uR 4000.000000 60.000000 inf 1.000000 +uR 4010.000000 60.000000 inf 1.000000 +uR 4020.000000 60.000000 inf 1.000000 +uR 4030.000000 60.000000 inf 1.000000 +uR 4040.000000 60.000000 inf 1.000000 +uR 4050.000000 60.000000 inf 1.000000 +uR 4060.000000 60.000000 inf 1.000000 +uR 4070.000000 60.000000 inf 1.000000 +uR 4080.000000 60.000000 inf 1.000000 +uR 4090.000000 60.000000 inf 1.000000 +uR 4100.000000 60.000000 inf 1.000000 +uR 4110.000000 60.000000 inf 1.000000 +uR 4120.000000 60.000000 inf 1.000000 +uR 4130.000000 60.000000 inf 1.000000 +uR 4140.000000 60.000000 inf 1.000000 +uR 4150.000000 60.000000 inf 1.000000 +uR 4160.000000 60.000000 inf 1.000000 +uR 4170.000000 60.000000 inf 1.000000 +uR 4180.000000 60.000000 inf 1.000000 +uR 4190.000000 60.000000 inf 1.000000 +uR 4200.000000 60.000000 inf 1.000000 +uR 4210.000000 60.000000 inf 1.000000 +uR 4220.000000 60.000000 inf 1.000000 +uR 4230.000000 60.000000 inf 1.000000 +uR 4240.000000 60.000000 inf 1.000000 +uR 4250.000000 60.000000 inf 1.000000 +uR 4260.000000 60.000000 inf 1.000000 +uR 4270.000000 60.000000 inf 1.000000 +uR 4280.000000 60.000000 inf 1.000000 +uR 4290.000000 60.000000 inf 1.000000 +uR 4300.000000 60.000000 inf 1.000000 +uR 4310.000000 60.000000 inf 1.000000 +uR 4320.000000 60.000000 inf 1.000000 +uR 4330.000000 60.000000 inf 1.000000 +uR 4340.000000 60.000000 inf 1.000000 +uR 4350.000000 60.000000 inf 1.000000 +uR 4360.000000 60.000000 inf 1.000000 +uR 4370.000000 60.000000 inf 1.000000 +uR 4380.000000 60.000000 inf 1.000000 +uR 4390.000000 60.000000 inf 1.000000 +uR 4400.000000 60.000000 inf 1.000000 +uR 4410.000000 60.000000 inf 1.000000 +uR 4420.000000 60.000000 inf 1.000000 +uR 4430.000000 60.000000 inf 1.000000 +uR 4440.000000 60.000000 inf 1.000000 +uR 4450.000000 60.000000 inf 1.000000 +uR 4460.000000 60.000000 inf 1.000000 +uR 4470.000000 60.000000 inf 1.000000 +uR 4480.000000 60.000000 inf 1.000000 +uR 4490.000000 60.000000 inf 1.000000 +uR 4500.000000 60.000000 inf 1.000000 +uR 4510.000000 60.000000 inf 1.000000 +uR 4520.000000 60.000000 inf 1.000000 +uR 4530.000000 60.000000 inf 1.000000 +uR 4540.000000 60.000000 inf 1.000000 +uR 4550.000000 60.000000 inf 1.000000 +uR 4560.000000 60.000000 inf 1.000000 +uR 4570.000000 60.000000 inf 1.000000 +uR 4580.000000 60.000000 inf 1.000000 +uR 4590.000000 60.000000 inf 1.000000 +uR 4600.000000 60.000000 inf 1.000000 +uR 4610.000000 60.000000 inf 1.000000 +uR 4620.000000 60.000000 inf 1.000000 +uR 4630.000000 60.000000 inf 1.000000 +uR 4640.000000 60.000000 inf 1.000000 +uR 4650.000000 60.000000 inf 1.000000 +uR 4660.000000 60.000000 inf 1.000000 +uR 4670.000000 60.000000 inf 1.000000 +uR 4680.000000 60.000000 inf 1.000000 +uR 4690.000000 60.000000 inf 1.000000 +uR 4700.000000 60.000000 inf 1.000000 +uR 4710.000000 60.000000 inf 1.000000 +uR 4720.000000 60.000000 inf 1.000000 +uR 4730.000000 60.000000 inf 1.000000 +uR 4740.000000 60.000000 inf 1.000000 +uR 4750.000000 60.000000 inf 1.000000 +uR 4760.000000 60.000000 inf 1.000000 +uR 4770.000000 60.000000 inf 1.000000 +uR 4780.000000 60.000000 inf 1.000000 +uR 4790.000000 60.000000 inf 1.000000 +uR 4800.000000 60.000000 inf 1.000000 +uR 4810.000000 60.000000 inf 1.000000 +uR 4820.000000 60.000000 inf 1.000000 +uR 4830.000000 60.000000 inf 1.000000 +uR 4840.000000 60.000000 inf 1.000000 +uR 4850.000000 60.000000 inf 1.000000 +uR 4860.000000 60.000000 inf 1.000000 +uR 4870.000000 60.000000 inf 1.000000 +uR 4880.000000 60.000000 inf 1.000000 +uR 4890.000000 60.000000 inf 1.000000 +uR 4900.000000 60.000000 inf 1.000000 +uR 4910.000000 60.000000 inf 1.000000 +uR 4920.000000 60.000000 inf 1.000000 +uR 4930.000000 60.000000 inf 1.000000 +uR 4940.000000 60.000000 inf 1.000000 +uR 4950.000000 60.000000 inf 1.000000 +uR 4960.000000 60.000000 inf 1.000000 +uR 4970.000000 60.000000 inf 1.000000 +uR 4980.000000 60.000000 inf 1.000000 +uR 4990.000000 60.000000 inf 1.000000 +uR 5000.000000 60.000000 inf 1.000000 +uR 5010.000000 60.000000 inf 1.000000 +uR 5020.000000 60.000000 inf 1.000000 +uR 5030.000000 60.000000 inf 1.000000 +uR 5040.000000 60.000000 inf 1.000000 +uR 5050.000000 60.000000 inf 1.000000 +uR 5060.000000 60.000000 inf 1.000000 +uR 5070.000000 60.000000 inf 1.000000 +uR 5080.000000 60.000000 inf 1.000000 +uR 5090.000000 60.000000 inf 1.000000 +uR 5100.000000 60.000000 inf 1.000000 +uR 5110.000000 60.000000 inf 1.000000 +uR 5120.000000 60.000000 inf 1.000000 +uR 5130.000000 60.000000 inf 1.000000 +uR 5140.000000 60.000000 inf 1.000000 +uR 5150.000000 60.000000 inf 1.000000 +uR 5160.000000 60.000000 inf 1.000000 +uR 5170.000000 60.000000 inf 1.000000 +uR 5180.000000 60.000000 inf 1.000000 +uR 5190.000000 60.000000 inf 1.000000 +uR 5200.000000 60.000000 inf 1.000000 +uR 5210.000000 60.000000 inf 1.000000 +uR 5220.000000 60.000000 inf 1.000000 +uR 5230.000000 60.000000 inf 1.000000 +uR 5240.000000 60.000000 inf 1.000000 +uR 5250.000000 60.000000 inf 1.000000 +uR 5260.000000 60.000000 inf 1.000000 +uR 5270.000000 60.000000 inf 1.000000 +uR 5280.000000 60.000000 inf 1.000000 +uR 5290.000000 60.000000 inf 1.000000 +uR 5300.000000 60.000000 inf 1.000000 +uR 5310.000000 60.000000 inf 1.000000 +uR 5320.000000 60.000000 inf 1.000000 +uR 5330.000000 60.000000 inf 1.000000 +uR 5340.000000 60.000000 inf 1.000000 +uR 5350.000000 60.000000 inf 1.000000 +uR 5360.000000 60.000000 inf 1.000000 +uR 5370.000000 60.000000 inf 1.000000 +uR 5380.000000 60.000000 inf 1.000000 +uR 5390.000000 60.000000 inf 1.000000 +uR 5400.000000 60.000000 inf 1.000000 +uR 5410.000000 60.000000 inf 1.000000 +uR 5420.000000 60.000000 inf 1.000000 +uR 5430.000000 60.000000 inf 1.000000 +uR 5440.000000 60.000000 inf 1.000000 +uR 5450.000000 60.000000 inf 1.000000 +uR 5460.000000 60.000000 inf 1.000000 +uR 5470.000000 60.000000 inf 1.000000 +uR 5480.000000 60.000000 inf 1.000000 +uR 5490.000000 60.000000 inf 1.000000 +uR 5500.000000 60.000000 inf 1.000000 +uR 5510.000000 60.000000 inf 1.000000 +uR 5520.000000 60.000000 inf 1.000000 +uR 5530.000000 60.000000 inf 1.000000 +uR 5540.000000 60.000000 inf 1.000000 +uR 5550.000000 60.000000 inf 1.000000 +uR 5560.000000 60.000000 inf 1.000000 +uR 5570.000000 60.000000 inf 1.000000 +uR 5580.000000 60.000000 inf 1.000000 +uR 5590.000000 60.000000 inf 1.000000 +uR 5600.000000 60.000000 inf 1.000000 +uR 5610.000000 60.000000 inf 1.000000 +uR 5620.000000 60.000000 inf 1.000000 +uR 5630.000000 60.000000 inf 1.000000 +uR 5640.000000 60.000000 inf 1.000000 +uR 5650.000000 60.000000 inf 1.000000 +uR 5660.000000 60.000000 inf 1.000000 +uR 5670.000000 60.000000 inf 1.000000 +uR 5680.000000 60.000000 inf 1.000000 +uR 5690.000000 60.000000 inf 1.000000 +uR 5700.000000 60.000000 inf 1.000000 +uR 5710.000000 60.000000 inf 1.000000 +uR 5720.000000 60.000000 inf 1.000000 +uR 5730.000000 60.000000 inf 1.000000 +uR 5740.000000 60.000000 inf 1.000000 +uR 5750.000000 60.000000 inf 1.000000 +uR 5760.000000 60.000000 inf 1.000000 +uR 5770.000000 60.000000 inf 1.000000 +uR 5780.000000 60.000000 inf 1.000000 +uR 5790.000000 60.000000 inf 1.000000 +uR 5800.000000 60.000000 inf 1.000000 +uR 5810.000000 60.000000 inf 1.000000 +uR 5820.000000 60.000000 inf 1.000000 +uR 5830.000000 60.000000 inf 1.000000 +uR 5840.000000 60.000000 inf 1.000000 +uR 5850.000000 60.000000 inf 1.000000 +uR 5860.000000 60.000000 inf 1.000000 +uR 5870.000000 60.000000 inf 1.000000 +uR 5880.000000 60.000000 inf 1.000000 +uR 5890.000000 60.000000 inf 1.000000 +uR 5900.000000 60.000000 inf 1.000000 +uR 5910.000000 60.000000 inf 1.000000 +uR 5920.000000 60.000000 inf 1.000000 +uR 5930.000000 60.000000 inf 1.000000 +uR 5940.000000 60.000000 inf 1.000000 +uR 5950.000000 60.000000 inf 1.000000 +uR 5960.000000 60.000000 inf 1.000000 +uR 5970.000000 60.000000 inf 1.000000 +uR 5980.000000 60.000000 inf 1.000000 +uR 5990.000000 60.000000 inf 1.000000 +uR 6000.000000 60.000000 inf 1.000000 +uR 6010.000000 60.000000 inf 1.000000 +uR 6020.000000 60.000000 inf 1.000000 +uR 6030.000000 60.000000 inf 1.000000 +uR 6040.000000 60.000000 inf 1.000000 +uR 6050.000000 60.000000 inf 1.000000 +uR 6060.000000 60.000000 inf 1.000000 +uR 6070.000000 60.000000 inf 1.000000 +uR 6080.000000 60.000000 inf 1.000000 +uR 6090.000000 60.000000 inf 1.000000 +uR 6100.000000 60.000000 inf 1.000000 +uR 6110.000000 60.000000 inf 1.000000 +uR 6120.000000 60.000000 inf 1.000000 +uR 6130.000000 60.000000 inf 1.000000 +uR 6140.000000 60.000000 inf 1.000000 +uR 6150.000000 60.000000 inf 1.000000 +uR 6160.000000 60.000000 inf 1.000000 +uR 6170.000000 60.000000 inf 1.000000 +uR 6180.000000 60.000000 inf 1.000000 +uR 6190.000000 60.000000 inf 1.000000 +uR 6200.000000 60.000000 inf 1.000000 +uR 6210.000000 60.000000 inf 1.000000 +uR 6220.000000 60.000000 inf 1.000000 +uR 6230.000000 60.000000 inf 1.000000 +uR 6240.000000 60.000000 inf 1.000000 +uR 6250.000000 60.000000 inf 1.000000 +uR 6260.000000 60.000000 inf 1.000000 +uR 6270.000000 60.000000 inf 1.000000 +uR 6280.000000 60.000000 inf 1.000000 +uR 6290.000000 60.000000 inf 1.000000 +uR 6300.000000 60.000000 inf 1.000000 +uR 6310.000000 60.000000 inf 1.000000 +uR 6320.000000 60.000000 inf 1.000000 +uR 6330.000000 60.000000 inf 1.000000 +uR 6340.000000 60.000000 inf 1.000000 +uR 6350.000000 60.000000 inf 1.000000 +uR 6360.000000 60.000000 inf 1.000000 +uR 6370.000000 60.000000 inf 1.000000 +uR 6380.000000 60.000000 inf 1.000000 +uR 6390.000000 60.000000 inf 1.000000 +uR 6400.000000 60.000000 inf 1.000000 +uR 6410.000000 60.000000 inf 1.000000 +uR 6420.000000 60.000000 inf 1.000000 +uR 6430.000000 60.000000 inf 1.000000 +uR 6440.000000 60.000000 inf 1.000000 +uR 6450.000000 60.000000 inf 1.000000 +uR 6460.000000 60.000000 inf 1.000000 +uR 6470.000000 60.000000 inf 1.000000 +uR 6480.000000 60.000000 inf 1.000000 +uR 6490.000000 60.000000 inf 1.000000 +uR 6500.000000 60.000000 inf 1.000000 +uR 6510.000000 60.000000 inf 1.000000 +uR 6520.000000 60.000000 inf 1.000000 +uR 6530.000000 60.000000 inf 1.000000 +uR 6540.000000 60.000000 inf 1.000000 +uR 6550.000000 60.000000 inf 1.000000 +uR 6560.000000 60.000000 inf 1.000000 +uR 6570.000000 60.000000 inf 1.000000 +uR 6580.000000 60.000000 inf 1.000000 +uR 6590.000000 60.000000 inf 1.000000 +uR 6600.000000 60.000000 inf 1.000000 +uR 6610.000000 60.000000 inf 1.000000 +uR 6620.000000 60.000000 inf 1.000000 +uR 6630.000000 60.000000 inf 1.000000 +uR 6640.000000 60.000000 inf 1.000000 +uR 6650.000000 60.000000 inf 1.000000 +uR 6660.000000 60.000000 inf 1.000000 +uR 6670.000000 60.000000 inf 1.000000 +uR 6680.000000 60.000000 inf 1.000000 +uR 6690.000000 60.000000 inf 1.000000 +uR 6700.000000 60.000000 inf 1.000000 +uR 6710.000000 60.000000 inf 1.000000 +uR 6720.000000 60.000000 inf 1.000000 +uR 6730.000000 60.000000 inf 1.000000 +uR 6740.000000 60.000000 inf 1.000000 +uR 6750.000000 60.000000 inf 1.000000 +uR 6760.000000 60.000000 inf 1.000000 +uR 6770.000000 60.000000 inf 1.000000 +uR 6780.000000 60.000000 inf 1.000000 +uR 6790.000000 60.000000 inf 1.000000 +uR 6800.000000 60.000000 inf 1.000000 +uR 6810.000000 60.000000 inf 1.000000 +uR 6820.000000 60.000000 inf 1.000000 +uR 6830.000000 60.000000 inf 1.000000 +uR 6840.000000 60.000000 inf 1.000000 +uR 6850.000000 60.000000 inf 1.000000 +uR 6860.000000 60.000000 inf 1.000000 +uR 6870.000000 60.000000 inf 1.000000 +uR 6880.000000 60.000000 inf 1.000000 +uR 6890.000000 60.000000 inf 1.000000 +uR 6900.000000 60.000000 inf 1.000000 +uR 6910.000000 60.000000 inf 1.000000 +uR 6920.000000 60.000000 inf 1.000000 +uR 6930.000000 60.000000 inf 1.000000 +uR 6940.000000 60.000000 inf 1.000000 +uR 6950.000000 60.000000 inf 1.000000 +uR 6960.000000 60.000000 inf 1.000000 +uR 6970.000000 60.000000 inf 1.000000 +uR 6980.000000 60.000000 inf 1.000000 +uR 6990.000000 60.000000 inf 1.000000 +uR 7000.000000 60.000000 inf 1.000000 +uR 7010.000000 60.000000 inf 1.000000 +uR 7020.000000 60.000000 inf 1.000000 +uR 7030.000000 60.000000 inf 1.000000 +uR 7040.000000 60.000000 inf 1.000000 +uR 7050.000000 60.000000 inf 1.000000 +uR 7060.000000 60.000000 inf 1.000000 +uR 7070.000000 60.000000 inf 1.000000 +uR 7080.000000 60.000000 inf 1.000000 +uR 7090.000000 60.000000 inf 1.000000 +uR 7100.000000 60.000000 inf 1.000000 +uR 7110.000000 60.000000 inf 1.000000 +uR 7120.000000 60.000000 inf 1.000000 +uR 7130.000000 60.000000 inf 1.000000 +uR 7140.000000 60.000000 inf 1.000000 +uR 7150.000000 60.000000 inf 1.000000 +uR 7160.000000 60.000000 inf 1.000000 +uR 7170.000000 60.000000 inf 1.000000 +uR 7180.000000 60.000000 inf 1.000000 +uR 7190.000000 60.000000 inf 1.000000 +uR 7200.000000 60.000000 inf 1.000000 +uR 7210.000000 60.000000 inf 1.000000 +uR 7220.000000 60.000000 inf 1.000000 +uR 7230.000000 60.000000 inf 1.000000 +uR 7240.000000 60.000000 inf 1.000000 +uR 7250.000000 60.000000 inf 1.000000 +uR 7260.000000 60.000000 inf 1.000000 +uR 7270.000000 60.000000 inf 1.000000 +uR 7280.000000 60.000000 inf 1.000000 +uR 7290.000000 60.000000 inf 1.000000 +uR 7300.000000 60.000000 inf 1.000000 +uR 7310.000000 60.000000 inf 1.000000 +uR 7320.000000 60.000000 inf 1.000000 +uR 7330.000000 60.000000 inf 1.000000 +uR 7340.000000 60.000000 inf 1.000000 +uR 7350.000000 60.000000 inf 1.000000 +uR 7360.000000 60.000000 inf 1.000000 +uR 7370.000000 60.000000 inf 1.000000 +uR 7380.000000 60.000000 inf 1.000000 +uR 7390.000000 60.000000 inf 1.000000 +uR 7400.000000 60.000000 inf 1.000000 +uR 7410.000000 60.000000 inf 1.000000 +uR 7420.000000 60.000000 inf 1.000000 +uR 7430.000000 60.000000 inf 1.000000 +uR 7440.000000 60.000000 inf 1.000000 +uR 7450.000000 60.000000 inf 1.000000 +uR 7460.000000 60.000000 inf 1.000000 +uR 7470.000000 60.000000 inf 1.000000 +uR 7480.000000 60.000000 inf 1.000000 +uR 7490.000000 60.000000 inf 1.000000 +uR 7500.000000 60.000000 inf 1.000000 +uR 7510.000000 60.000000 inf 1.000000 +uR 7520.000000 60.000000 inf 1.000000 +uR 7530.000000 60.000000 inf 1.000000 +uR 7540.000000 60.000000 inf 1.000000 +uR 7550.000000 60.000000 inf 1.000000 +uR 7560.000000 60.000000 inf 1.000000 +uR 7570.000000 60.000000 inf 1.000000 +uR 7580.000000 60.000000 inf 1.000000 +uR 7590.000000 60.000000 inf 1.000000 +uR 7600.000000 60.000000 inf 1.000000 +uR 7610.000000 60.000000 inf 1.000000 +uR 7620.000000 60.000000 inf 1.000000 +uR 7630.000000 60.000000 inf 1.000000 +uR 7640.000000 60.000000 inf 1.000000 +uR 7650.000000 60.000000 inf 1.000000 +uR 7660.000000 60.000000 inf 1.000000 +uR 7670.000000 60.000000 inf 1.000000 +uR 7680.000000 60.000000 inf 1.000000 +uR 7690.000000 60.000000 inf 1.000000 +uR 7700.000000 60.000000 inf 1.000000 +uR 7710.000000 60.000000 inf 1.000000 +uR 7720.000000 60.000000 inf 1.000000 +uR 7730.000000 60.000000 inf 1.000000 +uR 7740.000000 60.000000 inf 1.000000 +uR 7750.000000 60.000000 inf 1.000000 +uR 7760.000000 60.000000 inf 1.000000 +uR 7770.000000 60.000000 inf 1.000000 +uR 7780.000000 60.000000 inf 1.000000 +uR 7790.000000 60.000000 inf 1.000000 +uR 7800.000000 60.000000 inf 1.000000 +uR 7810.000000 60.000000 inf 1.000000 +uR 7820.000000 60.000000 inf 1.000000 +uR 7830.000000 60.000000 inf 1.000000 +uR 7840.000000 60.000000 inf 1.000000 +uR 7850.000000 60.000000 inf 1.000000 +uR 7860.000000 60.000000 inf 1.000000 +uR 7870.000000 60.000000 inf 1.000000 +uR 7880.000000 60.000000 inf 1.000000 +uR 7890.000000 60.000000 inf 1.000000 +uR 7900.000000 60.000000 inf 1.000000 +uR 7910.000000 60.000000 inf 1.000000 +uR 7920.000000 60.000000 inf 1.000000 +uR 7930.000000 60.000000 inf 1.000000 +uR 7940.000000 60.000000 inf 1.000000 +uR 7950.000000 60.000000 inf 1.000000 +uR 7960.000000 60.000000 inf 1.000000 +uR 7970.000000 60.000000 inf 1.000000 +uR 7980.000000 60.000000 inf 1.000000 +uR 7990.000000 60.000000 inf 1.000000 +uR 8000.000000 60.000000 inf 1.000000 +uR 8010.000000 60.000000 inf 1.000000 +uR 8020.000000 60.000000 inf 1.000000 +uR 8030.000000 60.000000 inf 1.000000 +uR 8040.000000 60.000000 inf 1.000000 +uR 8050.000000 60.000000 inf 1.000000 +uR 8060.000000 60.000000 inf 1.000000 +uR 8070.000000 60.000000 inf 1.000000 +uR 8080.000000 60.000000 inf 1.000000 +uR 8090.000000 60.000000 inf 1.000000 +uR 8100.000000 60.000000 inf 1.000000 +uR 8110.000000 60.000000 inf 1.000000 +uR 8120.000000 60.000000 inf 1.000000 +uR 8130.000000 60.000000 inf 1.000000 +uR 8140.000000 60.000000 inf 1.000000 +uR 8150.000000 60.000000 inf 1.000000 +uR 8160.000000 60.000000 inf 1.000000 +uR 8170.000000 60.000000 inf 1.000000 +uR 8180.000000 60.000000 inf 1.000000 +uR 8190.000000 60.000000 inf 1.000000 +uR 8200.000000 60.000000 inf 1.000000 +uR 8210.000000 60.000000 inf 1.000000 +uR 8220.000000 60.000000 inf 1.000000 +uR 8230.000000 60.000000 inf 1.000000 +uR 8240.000000 60.000000 inf 1.000000 +uR 8250.000000 60.000000 inf 1.000000 +uR 8260.000000 60.000000 inf 1.000000 +uR 8270.000000 60.000000 inf 1.000000 +uR 8280.000000 60.000000 inf 1.000000 +uR 8290.000000 60.000000 inf 1.000000 +uR 8300.000000 60.000000 inf 1.000000 +uR 8310.000000 60.000000 inf 1.000000 +uR 8320.000000 60.000000 inf 1.000000 +uR 8330.000000 60.000000 inf 1.000000 +uR 8340.000000 60.000000 inf 1.000000 +uR 8350.000000 60.000000 inf 1.000000 +uR 8360.000000 60.000000 inf 1.000000 +uR 8370.000000 60.000000 inf 1.000000 +uR 8380.000000 60.000000 inf 1.000000 +uR 8390.000000 60.000000 inf 1.000000 +uR 8400.000000 60.000000 inf 1.000000 +uR 8410.000000 60.000000 inf 1.000000 +uR 8420.000000 60.000000 inf 1.000000 +uR 8430.000000 60.000000 inf 1.000000 +uR 8440.000000 60.000000 inf 1.000000 +uR 8450.000000 60.000000 inf 1.000000 +uR 8460.000000 60.000000 inf 1.000000 +uR 8470.000000 60.000000 inf 1.000000 +uR 8480.000000 60.000000 inf 1.000000 +uR 8490.000000 60.000000 inf 1.000000 +uR 8500.000000 60.000000 inf 1.000000 +uR 8510.000000 60.000000 inf 1.000000 +uR 8520.000000 60.000000 inf 1.000000 +uR 8530.000000 60.000000 inf 1.000000 +uR 8540.000000 60.000000 inf 1.000000 +uR 8550.000000 60.000000 inf 1.000000 +uR 8560.000000 60.000000 inf 1.000000 +uR 8570.000000 60.000000 inf 1.000000 +uR 8580.000000 60.000000 inf 1.000000 +uR 8590.000000 60.000000 inf 1.000000 +uR 8600.000000 60.000000 inf 1.000000 +uR 8610.000000 60.000000 inf 1.000000 +uR 8620.000000 60.000000 inf 1.000000 +uR 8630.000000 60.000000 inf 1.000000 +uR 8640.000000 60.000000 inf 1.000000 +uR 8650.000000 60.000000 inf 1.000000 +uR 8660.000000 60.000000 inf 1.000000 +uR 8670.000000 60.000000 inf 1.000000 +uR 8680.000000 60.000000 inf 1.000000 +uR 8690.000000 60.000000 inf 1.000000 +uR 8700.000000 60.000000 inf 1.000000 +uR 8710.000000 60.000000 inf 1.000000 +uR 8720.000000 60.000000 inf 1.000000 +uR 8730.000000 60.000000 inf 1.000000 +uR 8740.000000 60.000000 inf 1.000000 +uR 8750.000000 60.000000 inf 1.000000 +uR 8760.000000 60.000000 inf 1.000000 +uR 8770.000000 60.000000 inf 1.000000 +uR 8780.000000 60.000000 inf 1.000000 +uR 8790.000000 60.000000 inf 1.000000 +uR 8800.000000 60.000000 inf 1.000000 +uR 8810.000000 60.000000 inf 1.000000 +uR 8820.000000 60.000000 inf 1.000000 +uR 8830.000000 60.000000 inf 1.000000 +uR 8840.000000 60.000000 inf 1.000000 +uR 8850.000000 60.000000 inf 1.000000 +uR 8860.000000 60.000000 inf 1.000000 +uR 8870.000000 60.000000 inf 1.000000 +uR 8880.000000 60.000000 inf 1.000000 +uR 8890.000000 60.000000 inf 1.000000 +uR 8900.000000 60.000000 inf 1.000000 +uR 8910.000000 60.000000 inf 1.000000 +uR 8920.000000 60.000000 inf 1.000000 +uR 8930.000000 60.000000 inf 1.000000 +uR 8940.000000 60.000000 inf 1.000000 +uR 8950.000000 60.000000 inf 1.000000 +uR 8960.000000 60.000000 inf 1.000000 +uR 8970.000000 60.000000 inf 1.000000 +uR 8980.000000 60.000000 inf 1.000000 +uR 8990.000000 60.000000 inf 1.000000 +uR 9000.000000 60.000000 inf 1.000000 +uR 9010.000000 60.000000 inf 1.000000 +uR 9020.000000 60.000000 inf 1.000000 +uR 9030.000000 60.000000 inf 1.000000 +uR 9040.000000 60.000000 inf 1.000000 +uR 9050.000000 60.000000 inf 1.000000 +uR 9060.000000 60.000000 inf 1.000000 +uR 9070.000000 60.000000 inf 1.000000 +uR 9080.000000 60.000000 inf 1.000000 +uR 9090.000000 60.000000 inf 1.000000 +uR 9100.000000 60.000000 inf 1.000000 +uR 9110.000000 60.000000 inf 1.000000 +uR 9120.000000 60.000000 inf 1.000000 +uR 9130.000000 60.000000 inf 1.000000 +uR 9140.000000 60.000000 inf 1.000000 +uR 9150.000000 60.000000 inf 1.000000 +uR 9160.000000 60.000000 inf 1.000000 +uR 9170.000000 60.000000 inf 1.000000 +uR 9180.000000 60.000000 inf 1.000000 +uR 9190.000000 60.000000 inf 1.000000 +uR 9200.000000 60.000000 inf 1.000000 +uR 9210.000000 60.000000 inf 1.000000 +uR 9220.000000 60.000000 inf 1.000000 +uR 9230.000000 60.000000 inf 1.000000 +uR 9240.000000 60.000000 inf 1.000000 +uR 9250.000000 60.000000 inf 1.000000 +uR 9260.000000 60.000000 inf 1.000000 +uR 9270.000000 60.000000 inf 1.000000 +uR 9280.000000 60.000000 inf 1.000000 +uR 9290.000000 60.000000 inf 1.000000 +uR 9300.000000 60.000000 inf 1.000000 +uR 9310.000000 60.000000 inf 1.000000 +uR 9320.000000 60.000000 inf 1.000000 +uR 9330.000000 60.000000 inf 1.000000 +uR 9340.000000 60.000000 inf 1.000000 +uR 9350.000000 60.000000 inf 1.000000 +uR 9360.000000 60.000000 inf 1.000000 +uR 9370.000000 60.000000 inf 1.000000 +uR 9380.000000 60.000000 inf 1.000000 +uR 9390.000000 60.000000 inf 1.000000 +uR 9400.000000 60.000000 inf 1.000000 +uR 9410.000000 60.000000 inf 1.000000 +uR 9420.000000 60.000000 inf 1.000000 +uR 9430.000000 60.000000 inf 1.000000 +uR 9440.000000 60.000000 inf 1.000000 +uR 9450.000000 60.000000 inf 1.000000 +uR 9460.000000 60.000000 inf 1.000000 +uR 9470.000000 60.000000 inf 1.000000 +uR 9480.000000 60.000000 inf 1.000000 +uR 9490.000000 60.000000 inf 1.000000 +uR 9500.000000 60.000000 inf 1.000000 +uR 9510.000000 60.000000 inf 1.000000 +uR 9520.000000 60.000000 inf 1.000000 +uR 9530.000000 60.000000 inf 1.000000 +uR 9540.000000 60.000000 inf 1.000000 +uR 9550.000000 60.000000 inf 1.000000 +uR 9560.000000 60.000000 inf 1.000000 +uR 9570.000000 60.000000 inf 1.000000 +uR 9580.000000 60.000000 inf 1.000000 +uR 9590.000000 60.000000 inf 1.000000 +uR 9600.000000 60.000000 inf 1.000000 +uR 9610.000000 60.000000 inf 1.000000 +uR 9620.000000 60.000000 inf 1.000000 +uR 9630.000000 60.000000 inf 1.000000 +uR 9640.000000 60.000000 inf 1.000000 +uR 9650.000000 60.000000 inf 1.000000 +uR 9660.000000 60.000000 inf 1.000000 +uR 9670.000000 60.000000 inf 1.000000 +uR 9680.000000 60.000000 inf 1.000000 +uR 9690.000000 60.000000 inf 1.000000 +uR 9700.000000 60.000000 inf 1.000000 +uR 9710.000000 60.000000 inf 1.000000 +uR 9720.000000 60.000000 inf 1.000000 +uR 9730.000000 60.000000 inf 1.000000 +uR 9740.000000 60.000000 inf 1.000000 +uR 9750.000000 60.000000 inf 1.000000 +uR 9760.000000 60.000000 inf 1.000000 +uR 9770.000000 60.000000 inf 1.000000 +uR 9780.000000 60.000000 inf 1.000000 +uR 9790.000000 60.000000 inf 1.000000 +uR 9800.000000 60.000000 inf 1.000000 +uR 9810.000000 60.000000 inf 1.000000 +uR 9820.000000 60.000000 inf 1.000000 +uR 9830.000000 60.000000 inf 1.000000 +uR 9840.000000 60.000000 inf 1.000000 +uR 9850.000000 60.000000 inf 1.000000 +uR 9860.000000 60.000000 inf 1.000000 +uR 9870.000000 60.000000 inf 1.000000 +uR 9880.000000 60.000000 inf 1.000000 +uR 9890.000000 60.000000 inf 1.000000 +uR 9900.000000 60.000000 inf 1.000000 +uR 9910.000000 60.000000 inf 1.000000 +uR 9920.000000 60.000000 inf 1.000000 +uR 9930.000000 60.000000 inf 1.000000 +uR 9940.000000 60.000000 inf 1.000000 +uR 9950.000000 60.000000 inf 1.000000 +uR 9960.000000 60.000000 inf 1.000000 +uR 9970.000000 60.000000 inf 1.000000 +uR 9980.000000 60.000000 inf 1.000000 +uR 9990.000000 60.000000 inf 1.000000 +uR 10000.000000 60.000000 inf 1.000000 +uR 10025.000000 60.000000 inf 1.000000 +uR 10050.000000 60.000000 inf 1.000000 +uR 10075.000000 60.000000 inf 1.000000 +uR 10100.000000 60.000000 inf 1.000000 +uR 10125.000000 60.000000 inf 1.000000 +uR 10150.000000 60.000000 inf 1.000000 +uR 10175.000000 60.000000 inf 1.000000 +uR 10200.000000 60.000000 inf 1.000000 +uR 10225.000000 60.000000 inf 1.000000 +uR 10250.000000 60.000000 inf 1.000000 +uR 10275.000000 60.000000 inf 1.000000 +uR 10300.000000 60.000000 inf 1.000000 +uR 10325.000000 60.000000 inf 1.000000 +uR 10350.000000 60.000000 inf 1.000000 +uR 10375.000000 60.000000 inf 1.000000 +uR 10400.000000 60.000000 inf 1.000000 +uR 10425.000000 60.000000 inf 1.000000 +uR 10450.000000 60.000000 inf 1.000000 +uR 10475.000000 60.000000 inf 1.000000 +uR 10500.000000 60.000000 inf 1.000000 +uR 10525.000000 60.000000 inf 1.000000 +uR 10550.000000 60.000000 inf 1.000000 +uR 10575.000000 60.000000 inf 1.000000 +uR 10600.000000 60.000000 inf 1.000000 +uR 10625.000000 60.000000 inf 1.000000 +uR 10650.000000 60.000000 inf 1.000000 +uR 10675.000000 60.000000 inf 1.000000 +uR 10700.000000 60.000000 inf 1.000000 +uR 10725.000000 60.000000 inf 1.000000 +uR 10750.000000 60.000000 inf 1.000000 +uR 10775.000000 60.000000 inf 1.000000 +uR 10800.000000 60.000000 inf 1.000000 +uR 10825.000000 60.000000 inf 1.000000 +uR 10850.000000 60.000000 inf 1.000000 +uR 10875.000000 60.000000 inf 1.000000 +uR 10900.000000 60.000000 inf 1.000000 +uR 10925.000000 60.000000 inf 1.000000 +uR 10950.000000 60.000000 inf 1.000000 +uR 10975.000000 60.000000 inf 1.000000 +uR 11000.000000 60.000000 inf 1.000000 +uR 11025.000000 60.000000 inf 1.000000 +uR 11050.000000 60.000000 inf 1.000000 +uR 11075.000000 60.000000 inf 1.000000 +uR 11100.000000 60.000000 inf 1.000000 +uR 11125.000000 60.000000 inf 1.000000 +uR 11150.000000 60.000000 inf 1.000000 +uR 11175.000000 60.000000 inf 1.000000 +uR 11200.000000 60.000000 inf 1.000000 +uR 11225.000000 60.000000 inf 1.000000 +uR 11250.000000 60.000000 inf 1.000000 +uR 11275.000000 60.000000 inf 1.000000 +uR 11300.000000 60.000000 inf 1.000000 +uR 11325.000000 60.000000 inf 1.000000 +uR 11350.000000 60.000000 inf 1.000000 +uR 11375.000000 60.000000 inf 1.000000 +uR 11400.000000 60.000000 inf 1.000000 +uR 11425.000000 60.000000 inf 1.000000 +uR 11450.000000 60.000000 inf 1.000000 +uR 11475.000000 60.000000 inf 1.000000 +uR 11500.000000 60.000000 inf 1.000000 +uR 11525.000000 60.000000 inf 1.000000 +uR 11550.000000 60.000000 inf 1.000000 +uR 11575.000000 60.000000 inf 1.000000 +uR 11600.000000 60.000000 inf 1.000000 +uR 11625.000000 60.000000 inf 1.000000 +uR 11650.000000 60.000000 inf 1.000000 +uR 11675.000000 60.000000 inf 1.000000 +uR 11700.000000 60.000000 inf 1.000000 +uR 11725.000000 60.000000 inf 1.000000 +uR 11750.000000 60.000000 inf 1.000000 +uR 11775.000000 60.000000 inf 1.000000 +uR 11800.000000 60.000000 inf 1.000000 +uR 11825.000000 60.000000 inf 1.000000 +uR 11850.000000 60.000000 inf 1.000000 +uR 11875.000000 60.000000 inf 1.000000 +uR 11900.000000 60.000000 inf 1.000000 +uR 11925.000000 60.000000 inf 1.000000 +uR 11950.000000 60.000000 inf 1.000000 +uR 11975.000000 60.000000 inf 1.000000 +uR 12000.000000 60.000000 inf 1.000000 +uR 12025.000000 60.000000 inf 1.000000 +uR 12050.000000 60.000000 inf 1.000000 +uR 12075.000000 60.000000 inf 1.000000 +uR 12100.000000 60.000000 inf 1.000000 +uR 12125.000000 60.000000 inf 1.000000 +uR 12150.000000 60.000000 inf 1.000000 +uR 12175.000000 60.000000 inf 1.000000 +uR 12200.000000 60.000000 inf 1.000000 +uR 12225.000000 60.000000 inf 1.000000 +uR 12250.000000 60.000000 inf 1.000000 +uR 12275.000000 60.000000 inf 1.000000 +uR 12300.000000 60.000000 inf 1.000000 +uR 12325.000000 60.000000 inf 1.000000 +uR 12350.000000 60.000000 inf 1.000000 +uR 12375.000000 60.000000 inf 1.000000 +uR 12400.000000 60.000000 inf 1.000000 +uR 12425.000000 60.000000 inf 1.000000 +uR 12450.000000 60.000000 inf 1.000000 +uR 12475.000000 60.000000 inf 1.000000 +uR 12500.000000 60.000000 inf 1.000000 +uR 12525.000000 60.000000 inf 1.000000 +uR 12550.000000 60.000000 inf 1.000000 +uR 12575.000000 60.000000 inf 1.000000 +uR 12600.000000 60.000000 inf 1.000000 +uR 12625.000000 60.000000 inf 1.000000 +uR 12650.000000 60.000000 inf 1.000000 +uR 12675.000000 60.000000 inf 1.000000 +uR 12700.000000 60.000000 inf 1.000000 +uR 12725.000000 60.000000 inf 1.000000 +uR 12750.000000 60.000000 inf 1.000000 +uR 12775.000000 60.000000 inf 1.000000 +uR 12800.000000 60.000000 inf 1.000000 +uR 12825.000000 60.000000 inf 1.000000 +uR 12850.000000 60.000000 inf 1.000000 +uR 12875.000000 60.000000 inf 1.000000 +uR 12900.000000 60.000000 inf 1.000000 +uR 12925.000000 60.000000 inf 1.000000 +uR 12950.000000 60.000000 inf 1.000000 +uR 12975.000000 60.000000 inf 1.000000 +uR 13000.000000 60.000000 inf 1.000000 +uR 13025.000000 60.000000 inf 1.000000 +uR 13050.000000 60.000000 inf 1.000000 +uR 13075.000000 60.000000 inf 1.000000 +uR 13100.000000 60.000000 inf 1.000000 +uR 13125.000000 60.000000 inf 1.000000 +uR 13150.000000 60.000000 inf 1.000000 +uR 13175.000000 60.000000 inf 1.000000 +uR 13200.000000 60.000000 inf 1.000000 +uR 13225.000000 60.000000 inf 1.000000 +uR 13250.000000 60.000000 inf 1.000000 +uR 13275.000000 60.000000 inf 1.000000 +uR 13300.000000 60.000000 inf 1.000000 +uR 13325.000000 60.000000 inf 1.000000 +uR 13350.000000 60.000000 inf 1.000000 +uR 13375.000000 60.000000 inf 1.000000 +uR 13400.000000 60.000000 inf 1.000000 +uR 13425.000000 60.000000 inf 1.000000 +uR 13450.000000 60.000000 inf 1.000000 +uR 13475.000000 60.000000 inf 1.000000 +uR 13500.000000 60.000000 inf 1.000000 +uR 13525.000000 60.000000 inf 1.000000 +uR 13550.000000 60.000000 inf 1.000000 +uR 13575.000000 60.000000 inf 1.000000 +uR 13600.000000 60.000000 inf 1.000000 +uR 13625.000000 60.000000 inf 1.000000 +uR 13650.000000 60.000000 inf 1.000000 +uR 13675.000000 60.000000 inf 1.000000 +uR 13700.000000 60.000000 inf 1.000000 +uR 13725.000000 60.000000 inf 1.000000 +uR 13750.000000 60.000000 inf 1.000000 +uR 13775.000000 60.000000 inf 1.000000 +uR 13800.000000 60.000000 inf 1.000000 +uR 13825.000000 60.000000 inf 1.000000 +uR 13850.000000 60.000000 inf 1.000000 +uR 13875.000000 60.000000 inf 1.000000 +uR 13900.000000 60.000000 inf 1.000000 +uR 13925.000000 60.000000 inf 1.000000 +uR 13950.000000 60.000000 inf 1.000000 +uR 13975.000000 60.000000 inf 1.000000 +uR 14000.000000 60.000000 inf 1.000000 +uR 14025.000000 60.000000 inf 1.000000 +uR 14050.000000 60.000000 inf 1.000000 +uR 14075.000000 60.000000 inf 1.000000 +uR 14100.000000 60.000000 inf 1.000000 +uR 14125.000000 60.000000 inf 1.000000 +uR 14150.000000 60.000000 inf 1.000000 +uR 14175.000000 60.000000 inf 1.000000 +uR 14200.000000 60.000000 inf 1.000000 +uR 14225.000000 60.000000 inf 1.000000 +uR 14250.000000 60.000000 inf 1.000000 +uR 14275.000000 60.000000 inf 1.000000 +uR 14300.000000 60.000000 inf 1.000000 +uR 14325.000000 60.000000 inf 1.000000 +uR 14350.000000 60.000000 inf 1.000000 +uR 14375.000000 60.000000 inf 1.000000 +uR 14400.000000 60.000000 inf 1.000000 +uR 14425.000000 60.000000 inf 1.000000 +uR 14450.000000 60.000000 inf 1.000000 +uR 14475.000000 60.000000 inf 1.000000 +uR 14500.000000 60.000000 inf 1.000000 +uR 14525.000000 60.000000 inf 1.000000 +uR 14550.000000 60.000000 inf 1.000000 +uR 14575.000000 60.000000 inf 1.000000 +uR 14600.000000 60.000000 inf 1.000000 +uR 14625.000000 60.000000 inf 1.000000 +uR 14650.000000 60.000000 inf 1.000000 +uR 14675.000000 60.000000 inf 1.000000 +uR 14700.000000 60.000000 inf 1.000000 +uR 14725.000000 60.000000 inf 1.000000 +uR 14750.000000 60.000000 inf 1.000000 +uR 14775.000000 60.000000 inf 1.000000 +uR 14800.000000 60.000000 inf 1.000000 +uR 14825.000000 60.000000 inf 1.000000 +uR 14850.000000 60.000000 inf 1.000000 +uR 14875.000000 60.000000 inf 1.000000 +uR 14900.000000 60.000000 inf 1.000000 +uR 14925.000000 60.000000 inf 1.000000 +uR 14950.000000 60.000000 inf 1.000000 +uR 14975.000000 60.000000 inf 1.000000 +uR 15000.000000 60.000000 inf 1.000000 +uR 15025.000000 60.000000 inf 1.000000 +uR 15050.000000 60.000000 inf 1.000000 +uR 15075.000000 60.000000 inf 1.000000 +uR 15100.000000 60.000000 inf 1.000000 +uR 15125.000000 60.000000 inf 1.000000 +uR 15150.000000 60.000000 inf 1.000000 +uR 15175.000000 60.000000 inf 1.000000 +uR 15200.000000 60.000000 inf 1.000000 +uR 15225.000000 60.000000 inf 1.000000 +uR 15250.000000 60.000000 inf 1.000000 +uR 15275.000000 60.000000 inf 1.000000 +uR 15300.000000 60.000000 inf 1.000000 +uR 15325.000000 60.000000 inf 1.000000 +uR 15350.000000 60.000000 inf 1.000000 +uR 15375.000000 60.000000 inf 1.000000 +uR 15400.000000 60.000000 inf 1.000000 +uR 15425.000000 60.000000 inf 1.000000 +uR 15450.000000 60.000000 inf 1.000000 +uR 15475.000000 60.000000 inf 1.000000 +uR 15500.000000 60.000000 inf 1.000000 +uR 15525.000000 60.000000 inf 1.000000 +uR 15550.000000 60.000000 inf 1.000000 +uR 15575.000000 60.000000 inf 1.000000 +uR 15600.000000 60.000000 inf 1.000000 +uR 15625.000000 60.000000 inf 1.000000 +uR 15650.000000 60.000000 inf 1.000000 +uR 15675.000000 60.000000 inf 1.000000 +uR 15700.000000 60.000000 inf 1.000000 +uR 15725.000000 60.000000 inf 1.000000 +uR 15750.000000 60.000000 inf 1.000000 +uR 15775.000000 60.000000 inf 1.000000 +uR 15800.000000 60.000000 inf 1.000000 +uR 15825.000000 60.000000 inf 1.000000 +uR 15850.000000 60.000000 inf 1.000000 +uR 15875.000000 60.000000 inf 1.000000 +uR 15900.000000 60.000000 inf 1.000000 +uR 15925.000000 60.000000 inf 1.000000 +uR 15950.000000 60.000000 inf 1.000000 +uR 15975.000000 60.000000 inf 1.000000 +uR 16000.000000 60.000000 inf 1.000000 +uR 16025.000000 60.000000 inf 1.000000 +uR 16050.000000 60.000000 inf 1.000000 +uR 16075.000000 60.000000 inf 1.000000 +uR 16100.000000 60.000000 inf 1.000000 +uR 16125.000000 60.000000 inf 1.000000 +uR 16150.000000 60.000000 inf 1.000000 +uR 16175.000000 60.000000 inf 1.000000 +uR 16200.000000 60.000000 inf 1.000000 +uR 16225.000000 60.000000 inf 1.000000 +uR 16250.000000 60.000000 inf 1.000000 +uR 16275.000000 60.000000 inf 1.000000 +uR 16300.000000 60.000000 inf 1.000000 +uR 16325.000000 60.000000 inf 1.000000 +uR 16350.000000 60.000000 inf 1.000000 +uR 16375.000000 60.000000 inf 1.000000 +uR 16400.000000 60.000000 inf 1.000000 +uR 16425.000000 60.000000 inf 1.000000 +uR 16450.000000 60.000000 inf 1.000000 +uR 16475.000000 60.000000 inf 1.000000 +uR 16500.000000 60.000000 inf 1.000000 +uR 16525.000000 60.000000 inf 1.000000 +uR 16550.000000 60.000000 inf 1.000000 +uR 16575.000000 60.000000 inf 1.000000 +uR 16600.000000 60.000000 inf 1.000000 +uR 16625.000000 60.000000 inf 1.000000 +uR 16650.000000 60.000000 inf 1.000000 +uR 16675.000000 60.000000 inf 1.000000 +uR 16700.000000 60.000000 inf 1.000000 +uR 16725.000000 60.000000 inf 1.000000 +uR 16750.000000 60.000000 inf 1.000000 +uR 16775.000000 60.000000 inf 1.000000 +uR 16800.000000 60.000000 inf 1.000000 +uR 16825.000000 60.000000 inf 1.000000 +uR 16850.000000 60.000000 inf 1.000000 +uR 16875.000000 60.000000 inf 1.000000 +uR 16900.000000 60.000000 inf 1.000000 +uR 16925.000000 60.000000 inf 1.000000 +uR 16950.000000 60.000000 inf 1.000000 +uR 16975.000000 60.000000 inf 1.000000 +uR 17000.000000 60.000000 inf 1.000000 +uR 1930.000000 70.000000 inf 1.000000 +uR 1940.000000 70.000000 inf 1.000000 +uR 1950.000000 70.000000 inf 1.000000 +uR 1960.000000 70.000000 inf 1.000000 +uR 1970.000000 70.000000 inf 1.000000 +uR 1980.000000 70.000000 inf 1.000000 +uR 1990.000000 70.000000 inf 1.000000 +uR 2000.000000 70.000000 inf 1.000000 +uR 2010.000000 70.000000 inf 1.000000 +uR 2020.000000 70.000000 inf 1.000000 +uR 2030.000000 70.000000 inf 1.000000 +uR 2040.000000 70.000000 inf 1.000000 +uR 2050.000000 70.000000 inf 1.000000 +uR 2060.000000 70.000000 inf 1.000000 +uR 2070.000000 70.000000 inf 1.000000 +uR 2080.000000 70.000000 inf 1.000000 +uR 2090.000000 70.000000 inf 1.000000 +uR 2100.000000 70.000000 inf 1.000000 +uR 2110.000000 70.000000 inf 1.000000 +uR 2120.000000 70.000000 inf 1.000000 +uR 2130.000000 70.000000 inf 1.000000 +uR 2140.000000 70.000000 inf 1.000000 +uR 2150.000000 70.000000 inf 1.000000 +uR 2160.000000 70.000000 inf 1.000000 +uR 2170.000000 70.000000 inf 1.000000 +uR 2180.000000 70.000000 inf 1.000000 +uR 2190.000000 70.000000 inf 1.000000 +uR 2200.000000 70.000000 inf 1.000000 +uR 2210.000000 70.000000 inf 1.000000 +uR 2220.000000 70.000000 inf 1.000000 +uR 2230.000000 70.000000 inf 1.000000 +uR 2240.000000 70.000000 inf 1.000000 +uR 2250.000000 70.000000 inf 1.000000 +uR 2260.000000 70.000000 inf 1.000000 +uR 2270.000000 70.000000 inf 1.000000 +uR 2280.000000 70.000000 inf 1.000000 +uR 2290.000000 70.000000 inf 1.000000 +uR 2300.000000 70.000000 inf 1.000000 +uR 2310.000000 70.000000 inf 1.000000 +uR 2320.000000 70.000000 inf 1.000000 +uR 2330.000000 70.000000 inf 1.000000 +uR 2340.000000 70.000000 inf 1.000000 +uR 2350.000000 70.000000 inf 1.000000 +uR 2360.000000 70.000000 inf 1.000000 +uR 2370.000000 70.000000 inf 1.000000 +uR 2380.000000 70.000000 inf 1.000000 +uR 2390.000000 70.000000 inf 1.000000 +uR 2400.000000 70.000000 inf 1.000000 +uR 2410.000000 70.000000 inf 1.000000 +uR 2420.000000 70.000000 inf 1.000000 +uR 2430.000000 70.000000 inf 1.000000 +uR 2440.000000 70.000000 inf 1.000000 +uR 2450.000000 70.000000 inf 1.000000 +uR 2460.000000 70.000000 inf 1.000000 +uR 2470.000000 70.000000 inf 1.000000 +uR 2480.000000 70.000000 inf 1.000000 +uR 2490.000000 70.000000 inf 1.000000 +uR 2500.000000 70.000000 inf 1.000000 +uR 2510.000000 70.000000 inf 1.000000 +uR 2520.000000 70.000000 inf 1.000000 +uR 2530.000000 70.000000 inf 1.000000 +uR 2540.000000 70.000000 inf 1.000000 +uR 2550.000000 70.000000 inf 1.000000 +uR 2560.000000 70.000000 inf 1.000000 +uR 2570.000000 70.000000 inf 1.000000 +uR 2580.000000 70.000000 inf 1.000000 +uR 2590.000000 70.000000 inf 1.000000 +uR 2600.000000 70.000000 inf 1.000000 +uR 2610.000000 70.000000 inf 1.000000 +uR 2620.000000 70.000000 inf 1.000000 +uR 2630.000000 70.000000 inf 1.000000 +uR 2640.000000 70.000000 inf 1.000000 +uR 2650.000000 70.000000 inf 1.000000 +uR 2660.000000 70.000000 inf 1.000000 +uR 2670.000000 70.000000 inf 1.000000 +uR 2680.000000 70.000000 inf 1.000000 +uR 2690.000000 70.000000 inf 1.000000 +uR 2700.000000 70.000000 inf 1.000000 +uR 2710.000000 70.000000 inf 1.000000 +uR 2720.000000 70.000000 inf 1.000000 +uR 2730.000000 70.000000 inf 1.000000 +uR 2740.000000 70.000000 inf 1.000000 +uR 2750.000000 70.000000 inf 1.000000 +uR 2760.000000 70.000000 inf 1.000000 +uR 2770.000000 70.000000 inf 1.000000 +uR 2780.000000 70.000000 inf 1.000000 +uR 2790.000000 70.000000 inf 1.000000 +uR 2800.000000 70.000000 inf 1.000000 +uR 2810.000000 70.000000 inf 1.000000 +uR 2820.000000 70.000000 inf 1.000000 +uR 2830.000000 70.000000 inf 1.000000 +uR 2840.000000 70.000000 inf 1.000000 +uR 2850.000000 70.000000 inf 1.000000 +uR 2860.000000 70.000000 inf 1.000000 +uR 2870.000000 70.000000 inf 1.000000 +uR 2880.000000 70.000000 inf 1.000000 +uR 2890.000000 70.000000 inf 1.000000 +uR 2900.000000 70.000000 inf 1.000000 +uR 2910.000000 70.000000 inf 1.000000 +uR 2920.000000 70.000000 inf 1.000000 +uR 2930.000000 70.000000 inf 1.000000 +uR 2940.000000 70.000000 inf 1.000000 +uR 2950.000000 70.000000 inf 1.000000 +uR 2960.000000 70.000000 inf 1.000000 +uR 2970.000000 70.000000 inf 1.000000 +uR 2980.000000 70.000000 inf 1.000000 +uR 2990.000000 70.000000 inf 1.000000 +uR 3000.000000 70.000000 inf 1.000000 +uR 3010.000000 70.000000 inf 1.000000 +uR 3020.000000 70.000000 inf 1.000000 +uR 3030.000000 70.000000 inf 1.000000 +uR 3040.000000 70.000000 inf 1.000000 +uR 3050.000000 70.000000 inf 1.000000 +uR 3060.000000 70.000000 inf 1.000000 +uR 3070.000000 70.000000 inf 1.000000 +uR 3080.000000 70.000000 inf 1.000000 +uR 3090.000000 70.000000 inf 1.000000 +uR 3100.000000 70.000000 inf 1.000000 +uR 3110.000000 70.000000 inf 1.000000 +uR 3120.000000 70.000000 inf 1.000000 +uR 3130.000000 70.000000 inf 1.000000 +uR 3140.000000 70.000000 inf 1.000000 +uR 3150.000000 70.000000 inf 1.000000 +uR 3160.000000 70.000000 inf 1.000000 +uR 3170.000000 70.000000 inf 1.000000 +uR 3180.000000 70.000000 inf 1.000000 +uR 3190.000000 70.000000 inf 1.000000 +uR 3200.000000 70.000000 inf 1.000000 +uR 3210.000000 70.000000 inf 1.000000 +uR 3220.000000 70.000000 inf 1.000000 +uR 3230.000000 70.000000 inf 1.000000 +uR 3240.000000 70.000000 inf 1.000000 +uR 3250.000000 70.000000 inf 1.000000 +uR 3260.000000 70.000000 inf 1.000000 +uR 3270.000000 70.000000 inf 1.000000 +uR 3280.000000 70.000000 inf 1.000000 +uR 3290.000000 70.000000 inf 1.000000 +uR 3300.000000 70.000000 inf 1.000000 +uR 3310.000000 70.000000 inf 1.000000 +uR 3320.000000 70.000000 inf 1.000000 +uR 3330.000000 70.000000 inf 1.000000 +uR 3340.000000 70.000000 inf 1.000000 +uR 3350.000000 70.000000 inf 1.000000 +uR 3360.000000 70.000000 inf 1.000000 +uR 3370.000000 70.000000 inf 1.000000 +uR 3380.000000 70.000000 inf 1.000000 +uR 3390.000000 70.000000 inf 1.000000 +uR 3400.000000 70.000000 inf 1.000000 +uR 3410.000000 70.000000 inf 1.000000 +uR 3420.000000 70.000000 inf 1.000000 +uR 3430.000000 70.000000 inf 1.000000 +uR 3440.000000 70.000000 inf 1.000000 +uR 3450.000000 70.000000 inf 1.000000 +uR 3460.000000 70.000000 inf 1.000000 +uR 3470.000000 70.000000 inf 1.000000 +uR 3480.000000 70.000000 inf 1.000000 +uR 3490.000000 70.000000 inf 1.000000 +uR 3500.000000 70.000000 inf 1.000000 +uR 3510.000000 70.000000 inf 1.000000 +uR 3520.000000 70.000000 inf 1.000000 +uR 3530.000000 70.000000 inf 1.000000 +uR 3540.000000 70.000000 inf 1.000000 +uR 3550.000000 70.000000 inf 1.000000 +uR 3560.000000 70.000000 inf 1.000000 +uR 3570.000000 70.000000 inf 1.000000 +uR 3580.000000 70.000000 inf 1.000000 +uR 3590.000000 70.000000 inf 1.000000 +uR 3600.000000 70.000000 inf 1.000000 +uR 3610.000000 70.000000 inf 1.000000 +uR 3620.000000 70.000000 inf 1.000000 +uR 3630.000000 70.000000 inf 1.000000 +uR 3640.000000 70.000000 inf 1.000000 +uR 3650.000000 70.000000 inf 1.000000 +uR 3660.000000 70.000000 inf 1.000000 +uR 3670.000000 70.000000 inf 1.000000 +uR 3680.000000 70.000000 inf 1.000000 +uR 3690.000000 70.000000 inf 1.000000 +uR 3700.000000 70.000000 inf 1.000000 +uR 3710.000000 70.000000 inf 1.000000 +uR 3720.000000 70.000000 inf 1.000000 +uR 3730.000000 70.000000 inf 1.000000 +uR 3740.000000 70.000000 inf 1.000000 +uR 3750.000000 70.000000 inf 1.000000 +uR 3760.000000 70.000000 inf 1.000000 +uR 3770.000000 70.000000 inf 1.000000 +uR 3780.000000 70.000000 inf 1.000000 +uR 3790.000000 70.000000 inf 1.000000 +uR 3800.000000 70.000000 inf 1.000000 +uR 3810.000000 70.000000 inf 1.000000 +uR 3820.000000 70.000000 inf 1.000000 +uR 3830.000000 70.000000 inf 1.000000 +uR 3840.000000 70.000000 inf 1.000000 +uR 3850.000000 70.000000 inf 1.000000 +uR 3860.000000 70.000000 inf 1.000000 +uR 3870.000000 70.000000 inf 1.000000 +uR 3880.000000 70.000000 inf 1.000000 +uR 3890.000000 70.000000 inf 1.000000 +uR 3900.000000 70.000000 inf 1.000000 +uR 3910.000000 70.000000 inf 1.000000 +uR 3920.000000 70.000000 inf 1.000000 +uR 3930.000000 70.000000 inf 1.000000 +uR 3940.000000 70.000000 inf 1.000000 +uR 3950.000000 70.000000 inf 1.000000 +uR 3960.000000 70.000000 inf 1.000000 +uR 3970.000000 70.000000 inf 1.000000 +uR 3980.000000 70.000000 inf 1.000000 +uR 3990.000000 70.000000 inf 1.000000 +uR 4000.000000 70.000000 inf 1.000000 +uR 4010.000000 70.000000 inf 1.000000 +uR 4020.000000 70.000000 inf 1.000000 +uR 4030.000000 70.000000 inf 1.000000 +uR 4040.000000 70.000000 inf 1.000000 +uR 4050.000000 70.000000 inf 1.000000 +uR 4060.000000 70.000000 inf 1.000000 +uR 4070.000000 70.000000 inf 1.000000 +uR 4080.000000 70.000000 inf 1.000000 +uR 4090.000000 70.000000 inf 1.000000 +uR 4100.000000 70.000000 inf 1.000000 +uR 4110.000000 70.000000 inf 1.000000 +uR 4120.000000 70.000000 inf 1.000000 +uR 4130.000000 70.000000 inf 1.000000 +uR 4140.000000 70.000000 inf 1.000000 +uR 4150.000000 70.000000 inf 1.000000 +uR 4160.000000 70.000000 inf 1.000000 +uR 4170.000000 70.000000 inf 1.000000 +uR 4180.000000 70.000000 inf 1.000000 +uR 4190.000000 70.000000 inf 1.000000 +uR 4200.000000 70.000000 inf 1.000000 +uR 4210.000000 70.000000 inf 1.000000 +uR 4220.000000 70.000000 inf 1.000000 +uR 4230.000000 70.000000 inf 1.000000 +uR 4240.000000 70.000000 inf 1.000000 +uR 4250.000000 70.000000 inf 1.000000 +uR 4260.000000 70.000000 inf 1.000000 +uR 4270.000000 70.000000 inf 1.000000 +uR 4280.000000 70.000000 inf 1.000000 +uR 4290.000000 70.000000 inf 1.000000 +uR 4300.000000 70.000000 inf 1.000000 +uR 4310.000000 70.000000 inf 1.000000 +uR 4320.000000 70.000000 inf 1.000000 +uR 4330.000000 70.000000 inf 1.000000 +uR 4340.000000 70.000000 inf 1.000000 +uR 4350.000000 70.000000 inf 1.000000 +uR 4360.000000 70.000000 inf 1.000000 +uR 4370.000000 70.000000 inf 1.000000 +uR 4380.000000 70.000000 inf 1.000000 +uR 4390.000000 70.000000 inf 1.000000 +uR 4400.000000 70.000000 inf 1.000000 +uR 4410.000000 70.000000 inf 1.000000 +uR 4420.000000 70.000000 inf 1.000000 +uR 4430.000000 70.000000 inf 1.000000 +uR 4440.000000 70.000000 inf 1.000000 +uR 4450.000000 70.000000 inf 1.000000 +uR 4460.000000 70.000000 inf 1.000000 +uR 4470.000000 70.000000 inf 1.000000 +uR 4480.000000 70.000000 inf 1.000000 +uR 4490.000000 70.000000 inf 1.000000 +uR 4500.000000 70.000000 inf 1.000000 +uR 4510.000000 70.000000 inf 1.000000 +uR 4520.000000 70.000000 inf 1.000000 +uR 4530.000000 70.000000 inf 1.000000 +uR 4540.000000 70.000000 inf 1.000000 +uR 4550.000000 70.000000 inf 1.000000 +uR 4560.000000 70.000000 inf 1.000000 +uR 4570.000000 70.000000 inf 1.000000 +uR 4580.000000 70.000000 inf 1.000000 +uR 4590.000000 70.000000 inf 1.000000 +uR 4600.000000 70.000000 inf 1.000000 +uR 4610.000000 70.000000 inf 1.000000 +uR 4620.000000 70.000000 inf 1.000000 +uR 4630.000000 70.000000 inf 1.000000 +uR 4640.000000 70.000000 inf 1.000000 +uR 4650.000000 70.000000 inf 1.000000 +uR 4660.000000 70.000000 inf 1.000000 +uR 4670.000000 70.000000 inf 1.000000 +uR 4680.000000 70.000000 inf 1.000000 +uR 4690.000000 70.000000 inf 1.000000 +uR 4700.000000 70.000000 inf 1.000000 +uR 4710.000000 70.000000 inf 1.000000 +uR 4720.000000 70.000000 inf 1.000000 +uR 4730.000000 70.000000 inf 1.000000 +uR 4740.000000 70.000000 inf 1.000000 +uR 4750.000000 70.000000 inf 1.000000 +uR 4760.000000 70.000000 inf 1.000000 +uR 4770.000000 70.000000 inf 1.000000 +uR 4780.000000 70.000000 inf 1.000000 +uR 4790.000000 70.000000 inf 1.000000 +uR 4800.000000 70.000000 inf 1.000000 +uR 4810.000000 70.000000 inf 1.000000 +uR 4820.000000 70.000000 inf 1.000000 +uR 4830.000000 70.000000 inf 1.000000 +uR 4840.000000 70.000000 inf 1.000000 +uR 4850.000000 70.000000 inf 1.000000 +uR 4860.000000 70.000000 inf 1.000000 +uR 4870.000000 70.000000 inf 1.000000 +uR 4880.000000 70.000000 inf 1.000000 +uR 4890.000000 70.000000 inf 1.000000 +uR 4900.000000 70.000000 inf 1.000000 +uR 4910.000000 70.000000 inf 1.000000 +uR 4920.000000 70.000000 inf 1.000000 +uR 4930.000000 70.000000 inf 1.000000 +uR 4940.000000 70.000000 inf 1.000000 +uR 4950.000000 70.000000 inf 1.000000 +uR 4960.000000 70.000000 inf 1.000000 +uR 4970.000000 70.000000 inf 1.000000 +uR 4980.000000 70.000000 inf 1.000000 +uR 4990.000000 70.000000 inf 1.000000 +uR 5000.000000 70.000000 inf 1.000000 +uR 5010.000000 70.000000 inf 1.000000 +uR 5020.000000 70.000000 inf 1.000000 +uR 5030.000000 70.000000 inf 1.000000 +uR 5040.000000 70.000000 inf 1.000000 +uR 5050.000000 70.000000 inf 1.000000 +uR 5060.000000 70.000000 inf 1.000000 +uR 5070.000000 70.000000 inf 1.000000 +uR 5080.000000 70.000000 inf 1.000000 +uR 5090.000000 70.000000 inf 1.000000 +uR 5100.000000 70.000000 inf 1.000000 +uR 5110.000000 70.000000 inf 1.000000 +uR 5120.000000 70.000000 inf 1.000000 +uR 5130.000000 70.000000 inf 1.000000 +uR 5140.000000 70.000000 inf 1.000000 +uR 5150.000000 70.000000 inf 1.000000 +uR 5160.000000 70.000000 inf 1.000000 +uR 5170.000000 70.000000 inf 1.000000 +uR 5180.000000 70.000000 inf 1.000000 +uR 5190.000000 70.000000 inf 1.000000 +uR 5200.000000 70.000000 inf 1.000000 +uR 5210.000000 70.000000 inf 1.000000 +uR 5220.000000 70.000000 inf 1.000000 +uR 5230.000000 70.000000 inf 1.000000 +uR 5240.000000 70.000000 inf 1.000000 +uR 5250.000000 70.000000 inf 1.000000 +uR 5260.000000 70.000000 inf 1.000000 +uR 5270.000000 70.000000 inf 1.000000 +uR 5280.000000 70.000000 inf 1.000000 +uR 5290.000000 70.000000 inf 1.000000 +uR 5300.000000 70.000000 inf 1.000000 +uR 5310.000000 70.000000 inf 1.000000 +uR 5320.000000 70.000000 inf 1.000000 +uR 5330.000000 70.000000 inf 1.000000 +uR 5340.000000 70.000000 inf 1.000000 +uR 5350.000000 70.000000 inf 1.000000 +uR 5360.000000 70.000000 inf 1.000000 +uR 5370.000000 70.000000 inf 1.000000 +uR 5380.000000 70.000000 inf 1.000000 +uR 5390.000000 70.000000 inf 1.000000 +uR 5400.000000 70.000000 inf 1.000000 +uR 5410.000000 70.000000 inf 1.000000 +uR 5420.000000 70.000000 inf 1.000000 +uR 5430.000000 70.000000 inf 1.000000 +uR 5440.000000 70.000000 inf 1.000000 +uR 5450.000000 70.000000 inf 1.000000 +uR 5460.000000 70.000000 inf 1.000000 +uR 5470.000000 70.000000 inf 1.000000 +uR 5480.000000 70.000000 inf 1.000000 +uR 5490.000000 70.000000 inf 1.000000 +uR 5500.000000 70.000000 inf 1.000000 +uR 5510.000000 70.000000 inf 1.000000 +uR 5520.000000 70.000000 inf 1.000000 +uR 5530.000000 70.000000 inf 1.000000 +uR 5540.000000 70.000000 inf 1.000000 +uR 5550.000000 70.000000 inf 1.000000 +uR 5560.000000 70.000000 inf 1.000000 +uR 5570.000000 70.000000 inf 1.000000 +uR 5580.000000 70.000000 inf 1.000000 +uR 5590.000000 70.000000 inf 1.000000 +uR 5600.000000 70.000000 inf 1.000000 +uR 5610.000000 70.000000 inf 1.000000 +uR 5620.000000 70.000000 inf 1.000000 +uR 5630.000000 70.000000 inf 1.000000 +uR 5640.000000 70.000000 inf 1.000000 +uR 5650.000000 70.000000 inf 1.000000 +uR 5660.000000 70.000000 inf 1.000000 +uR 5670.000000 70.000000 inf 1.000000 +uR 5680.000000 70.000000 inf 1.000000 +uR 5690.000000 70.000000 inf 1.000000 +uR 5700.000000 70.000000 inf 1.000000 +uR 5710.000000 70.000000 inf 1.000000 +uR 5720.000000 70.000000 inf 1.000000 +uR 5730.000000 70.000000 inf 1.000000 +uR 5740.000000 70.000000 inf 1.000000 +uR 5750.000000 70.000000 inf 1.000000 +uR 5760.000000 70.000000 inf 1.000000 +uR 5770.000000 70.000000 inf 1.000000 +uR 5780.000000 70.000000 inf 1.000000 +uR 5790.000000 70.000000 inf 1.000000 +uR 5800.000000 70.000000 inf 1.000000 +uR 5810.000000 70.000000 inf 1.000000 +uR 5820.000000 70.000000 inf 1.000000 +uR 5830.000000 70.000000 inf 1.000000 +uR 5840.000000 70.000000 inf 1.000000 +uR 5850.000000 70.000000 inf 1.000000 +uR 5860.000000 70.000000 inf 1.000000 +uR 5870.000000 70.000000 inf 1.000000 +uR 5880.000000 70.000000 inf 1.000000 +uR 5890.000000 70.000000 inf 1.000000 +uR 5900.000000 70.000000 inf 1.000000 +uR 5910.000000 70.000000 inf 1.000000 +uR 5920.000000 70.000000 inf 1.000000 +uR 5930.000000 70.000000 inf 1.000000 +uR 5940.000000 70.000000 inf 1.000000 +uR 5950.000000 70.000000 inf 1.000000 +uR 5960.000000 70.000000 inf 1.000000 +uR 5970.000000 70.000000 inf 1.000000 +uR 5980.000000 70.000000 inf 1.000000 +uR 5990.000000 70.000000 inf 1.000000 +uR 6000.000000 70.000000 inf 1.000000 +uR 6010.000000 70.000000 inf 1.000000 +uR 6020.000000 70.000000 inf 1.000000 +uR 6030.000000 70.000000 inf 1.000000 +uR 6040.000000 70.000000 inf 1.000000 +uR 6050.000000 70.000000 inf 1.000000 +uR 6060.000000 70.000000 inf 1.000000 +uR 6070.000000 70.000000 inf 1.000000 +uR 6080.000000 70.000000 inf 1.000000 +uR 6090.000000 70.000000 inf 1.000000 +uR 6100.000000 70.000000 inf 1.000000 +uR 6110.000000 70.000000 inf 1.000000 +uR 6120.000000 70.000000 inf 1.000000 +uR 6130.000000 70.000000 inf 1.000000 +uR 6140.000000 70.000000 inf 1.000000 +uR 6150.000000 70.000000 inf 1.000000 +uR 6160.000000 70.000000 inf 1.000000 +uR 6170.000000 70.000000 inf 1.000000 +uR 6180.000000 70.000000 inf 1.000000 +uR 6190.000000 70.000000 inf 1.000000 +uR 6200.000000 70.000000 inf 1.000000 +uR 6210.000000 70.000000 inf 1.000000 +uR 6220.000000 70.000000 inf 1.000000 +uR 6230.000000 70.000000 inf 1.000000 +uR 6240.000000 70.000000 inf 1.000000 +uR 6250.000000 70.000000 inf 1.000000 +uR 6260.000000 70.000000 inf 1.000000 +uR 6270.000000 70.000000 inf 1.000000 +uR 6280.000000 70.000000 inf 1.000000 +uR 6290.000000 70.000000 inf 1.000000 +uR 6300.000000 70.000000 inf 1.000000 +uR 6310.000000 70.000000 inf 1.000000 +uR 6320.000000 70.000000 inf 1.000000 +uR 6330.000000 70.000000 inf 1.000000 +uR 6340.000000 70.000000 inf 1.000000 +uR 6350.000000 70.000000 inf 1.000000 +uR 6360.000000 70.000000 inf 1.000000 +uR 6370.000000 70.000000 inf 1.000000 +uR 6380.000000 70.000000 inf 1.000000 +uR 6390.000000 70.000000 inf 1.000000 +uR 6400.000000 70.000000 inf 1.000000 +uR 6410.000000 70.000000 inf 1.000000 +uR 6420.000000 70.000000 inf 1.000000 +uR 6430.000000 70.000000 inf 1.000000 +uR 6440.000000 70.000000 inf 1.000000 +uR 6450.000000 70.000000 inf 1.000000 +uR 6460.000000 70.000000 inf 1.000000 +uR 6470.000000 70.000000 inf 1.000000 +uR 6480.000000 70.000000 inf 1.000000 +uR 6490.000000 70.000000 inf 1.000000 +uR 6500.000000 70.000000 inf 1.000000 +uR 6510.000000 70.000000 inf 1.000000 +uR 6520.000000 70.000000 inf 1.000000 +uR 6530.000000 70.000000 inf 1.000000 +uR 6540.000000 70.000000 inf 1.000000 +uR 6550.000000 70.000000 inf 1.000000 +uR 6560.000000 70.000000 inf 1.000000 +uR 6570.000000 70.000000 inf 1.000000 +uR 6580.000000 70.000000 inf 1.000000 +uR 6590.000000 70.000000 inf 1.000000 +uR 6600.000000 70.000000 inf 1.000000 +uR 6610.000000 70.000000 inf 1.000000 +uR 6620.000000 70.000000 inf 1.000000 +uR 6630.000000 70.000000 inf 1.000000 +uR 6640.000000 70.000000 inf 1.000000 +uR 6650.000000 70.000000 inf 1.000000 +uR 6660.000000 70.000000 inf 1.000000 +uR 6670.000000 70.000000 inf 1.000000 +uR 6680.000000 70.000000 inf 1.000000 +uR 6690.000000 70.000000 inf 1.000000 +uR 6700.000000 70.000000 inf 1.000000 +uR 6710.000000 70.000000 inf 1.000000 +uR 6720.000000 70.000000 inf 1.000000 +uR 6730.000000 70.000000 inf 1.000000 +uR 6740.000000 70.000000 inf 1.000000 +uR 6750.000000 70.000000 inf 1.000000 +uR 6760.000000 70.000000 inf 1.000000 +uR 6770.000000 70.000000 inf 1.000000 +uR 6780.000000 70.000000 inf 1.000000 +uR 6790.000000 70.000000 inf 1.000000 +uR 6800.000000 70.000000 inf 1.000000 +uR 6810.000000 70.000000 inf 1.000000 +uR 6820.000000 70.000000 inf 1.000000 +uR 6830.000000 70.000000 inf 1.000000 +uR 6840.000000 70.000000 inf 1.000000 +uR 6850.000000 70.000000 inf 1.000000 +uR 6860.000000 70.000000 inf 1.000000 +uR 6870.000000 70.000000 inf 1.000000 +uR 6880.000000 70.000000 inf 1.000000 +uR 6890.000000 70.000000 inf 1.000000 +uR 6900.000000 70.000000 inf 1.000000 +uR 6910.000000 70.000000 inf 1.000000 +uR 6920.000000 70.000000 inf 1.000000 +uR 6930.000000 70.000000 inf 1.000000 +uR 6940.000000 70.000000 inf 1.000000 +uR 6950.000000 70.000000 inf 1.000000 +uR 6960.000000 70.000000 inf 1.000000 +uR 6970.000000 70.000000 inf 1.000000 +uR 6980.000000 70.000000 inf 1.000000 +uR 6990.000000 70.000000 inf 1.000000 +uR 7000.000000 70.000000 inf 1.000000 +uR 7010.000000 70.000000 inf 1.000000 +uR 7020.000000 70.000000 inf 1.000000 +uR 7030.000000 70.000000 inf 1.000000 +uR 7040.000000 70.000000 inf 1.000000 +uR 7050.000000 70.000000 inf 1.000000 +uR 7060.000000 70.000000 inf 1.000000 +uR 7070.000000 70.000000 inf 1.000000 +uR 7080.000000 70.000000 inf 1.000000 +uR 7090.000000 70.000000 inf 1.000000 +uR 7100.000000 70.000000 inf 1.000000 +uR 7110.000000 70.000000 inf 1.000000 +uR 7120.000000 70.000000 inf 1.000000 +uR 7130.000000 70.000000 inf 1.000000 +uR 7140.000000 70.000000 inf 1.000000 +uR 7150.000000 70.000000 inf 1.000000 +uR 7160.000000 70.000000 inf 1.000000 +uR 7170.000000 70.000000 inf 1.000000 +uR 7180.000000 70.000000 inf 1.000000 +uR 7190.000000 70.000000 inf 1.000000 +uR 7200.000000 70.000000 inf 1.000000 +uR 7210.000000 70.000000 inf 1.000000 +uR 7220.000000 70.000000 inf 1.000000 +uR 7230.000000 70.000000 inf 1.000000 +uR 7240.000000 70.000000 inf 1.000000 +uR 7250.000000 70.000000 inf 1.000000 +uR 7260.000000 70.000000 inf 1.000000 +uR 7270.000000 70.000000 inf 1.000000 +uR 7280.000000 70.000000 inf 1.000000 +uR 7290.000000 70.000000 inf 1.000000 +uR 7300.000000 70.000000 inf 1.000000 +uR 7310.000000 70.000000 inf 1.000000 +uR 7320.000000 70.000000 inf 1.000000 +uR 7330.000000 70.000000 inf 1.000000 +uR 7340.000000 70.000000 inf 1.000000 +uR 7350.000000 70.000000 inf 1.000000 +uR 7360.000000 70.000000 inf 1.000000 +uR 7370.000000 70.000000 inf 1.000000 +uR 7380.000000 70.000000 inf 1.000000 +uR 7390.000000 70.000000 inf 1.000000 +uR 7400.000000 70.000000 inf 1.000000 +uR 7410.000000 70.000000 inf 1.000000 +uR 7420.000000 70.000000 inf 1.000000 +uR 7430.000000 70.000000 inf 1.000000 +uR 7440.000000 70.000000 inf 1.000000 +uR 7450.000000 70.000000 inf 1.000000 +uR 7460.000000 70.000000 inf 1.000000 +uR 7470.000000 70.000000 inf 1.000000 +uR 7480.000000 70.000000 inf 1.000000 +uR 7490.000000 70.000000 inf 1.000000 +uR 7500.000000 70.000000 inf 1.000000 +uR 7510.000000 70.000000 inf 1.000000 +uR 7520.000000 70.000000 inf 1.000000 +uR 7530.000000 70.000000 inf 1.000000 +uR 7540.000000 70.000000 inf 1.000000 +uR 7550.000000 70.000000 inf 1.000000 +uR 7560.000000 70.000000 inf 1.000000 +uR 7570.000000 70.000000 inf 1.000000 +uR 7580.000000 70.000000 inf 1.000000 +uR 7590.000000 70.000000 inf 1.000000 +uR 7600.000000 70.000000 inf 1.000000 +uR 7610.000000 70.000000 inf 1.000000 +uR 7620.000000 70.000000 inf 1.000000 +uR 7630.000000 70.000000 inf 1.000000 +uR 7640.000000 70.000000 inf 1.000000 +uR 7650.000000 70.000000 inf 1.000000 +uR 7660.000000 70.000000 inf 1.000000 +uR 7670.000000 70.000000 inf 1.000000 +uR 7680.000000 70.000000 inf 1.000000 +uR 7690.000000 70.000000 inf 1.000000 +uR 7700.000000 70.000000 inf 1.000000 +uR 7710.000000 70.000000 inf 1.000000 +uR 7720.000000 70.000000 inf 1.000000 +uR 7730.000000 70.000000 inf 1.000000 +uR 7740.000000 70.000000 inf 1.000000 +uR 7750.000000 70.000000 inf 1.000000 +uR 7760.000000 70.000000 inf 1.000000 +uR 7770.000000 70.000000 inf 1.000000 +uR 7780.000000 70.000000 inf 1.000000 +uR 7790.000000 70.000000 inf 1.000000 +uR 7800.000000 70.000000 inf 1.000000 +uR 7810.000000 70.000000 inf 1.000000 +uR 7820.000000 70.000000 inf 1.000000 +uR 7830.000000 70.000000 inf 1.000000 +uR 7840.000000 70.000000 inf 1.000000 +uR 7850.000000 70.000000 inf 1.000000 +uR 7860.000000 70.000000 inf 1.000000 +uR 7870.000000 70.000000 inf 1.000000 +uR 7880.000000 70.000000 inf 1.000000 +uR 7890.000000 70.000000 inf 1.000000 +uR 7900.000000 70.000000 inf 1.000000 +uR 7910.000000 70.000000 inf 1.000000 +uR 7920.000000 70.000000 inf 1.000000 +uR 7930.000000 70.000000 inf 1.000000 +uR 7940.000000 70.000000 inf 1.000000 +uR 7950.000000 70.000000 inf 1.000000 +uR 7960.000000 70.000000 inf 1.000000 +uR 7970.000000 70.000000 inf 1.000000 +uR 7980.000000 70.000000 inf 1.000000 +uR 7990.000000 70.000000 inf 1.000000 +uR 8000.000000 70.000000 inf 1.000000 +uR 8010.000000 70.000000 inf 1.000000 +uR 8020.000000 70.000000 inf 1.000000 +uR 8030.000000 70.000000 inf 1.000000 +uR 8040.000000 70.000000 inf 1.000000 +uR 8050.000000 70.000000 inf 1.000000 +uR 8060.000000 70.000000 inf 1.000000 +uR 8070.000000 70.000000 inf 1.000000 +uR 8080.000000 70.000000 inf 1.000000 +uR 8090.000000 70.000000 inf 1.000000 +uR 8100.000000 70.000000 inf 1.000000 +uR 8110.000000 70.000000 inf 1.000000 +uR 8120.000000 70.000000 inf 1.000000 +uR 8130.000000 70.000000 inf 1.000000 +uR 8140.000000 70.000000 inf 1.000000 +uR 8150.000000 70.000000 inf 1.000000 +uR 8160.000000 70.000000 inf 1.000000 +uR 8170.000000 70.000000 inf 1.000000 +uR 8180.000000 70.000000 inf 1.000000 +uR 8190.000000 70.000000 inf 1.000000 +uR 8200.000000 70.000000 inf 1.000000 +uR 8210.000000 70.000000 inf 1.000000 +uR 8220.000000 70.000000 inf 1.000000 +uR 8230.000000 70.000000 inf 1.000000 +uR 8240.000000 70.000000 inf 1.000000 +uR 8250.000000 70.000000 inf 1.000000 +uR 8260.000000 70.000000 inf 1.000000 +uR 8270.000000 70.000000 inf 1.000000 +uR 8280.000000 70.000000 inf 1.000000 +uR 8290.000000 70.000000 inf 1.000000 +uR 8300.000000 70.000000 inf 1.000000 +uR 8310.000000 70.000000 inf 1.000000 +uR 8320.000000 70.000000 inf 1.000000 +uR 8330.000000 70.000000 inf 1.000000 +uR 8340.000000 70.000000 inf 1.000000 +uR 8350.000000 70.000000 inf 1.000000 +uR 8360.000000 70.000000 inf 1.000000 +uR 8370.000000 70.000000 inf 1.000000 +uR 8380.000000 70.000000 inf 1.000000 +uR 8390.000000 70.000000 inf 1.000000 +uR 8400.000000 70.000000 inf 1.000000 +uR 8410.000000 70.000000 inf 1.000000 +uR 8420.000000 70.000000 inf 1.000000 +uR 8430.000000 70.000000 inf 1.000000 +uR 8440.000000 70.000000 inf 1.000000 +uR 8450.000000 70.000000 inf 1.000000 +uR 8460.000000 70.000000 inf 1.000000 +uR 8470.000000 70.000000 inf 1.000000 +uR 8480.000000 70.000000 inf 1.000000 +uR 8490.000000 70.000000 inf 1.000000 +uR 8500.000000 70.000000 inf 1.000000 +uR 8510.000000 70.000000 inf 1.000000 +uR 8520.000000 70.000000 inf 1.000000 +uR 8530.000000 70.000000 inf 1.000000 +uR 8540.000000 70.000000 inf 1.000000 +uR 8550.000000 70.000000 inf 1.000000 +uR 8560.000000 70.000000 inf 1.000000 +uR 8570.000000 70.000000 inf 1.000000 +uR 8580.000000 70.000000 inf 1.000000 +uR 8590.000000 70.000000 inf 1.000000 +uR 8600.000000 70.000000 inf 1.000000 +uR 8610.000000 70.000000 inf 1.000000 +uR 8620.000000 70.000000 inf 1.000000 +uR 8630.000000 70.000000 inf 1.000000 +uR 8640.000000 70.000000 inf 1.000000 +uR 8650.000000 70.000000 inf 1.000000 +uR 8660.000000 70.000000 inf 1.000000 +uR 8670.000000 70.000000 inf 1.000000 +uR 8680.000000 70.000000 inf 1.000000 +uR 8690.000000 70.000000 inf 1.000000 +uR 8700.000000 70.000000 inf 1.000000 +uR 8710.000000 70.000000 inf 1.000000 +uR 8720.000000 70.000000 inf 1.000000 +uR 8730.000000 70.000000 inf 1.000000 +uR 8740.000000 70.000000 inf 1.000000 +uR 8750.000000 70.000000 inf 1.000000 +uR 8760.000000 70.000000 inf 1.000000 +uR 8770.000000 70.000000 inf 1.000000 +uR 8780.000000 70.000000 inf 1.000000 +uR 8790.000000 70.000000 inf 1.000000 +uR 8800.000000 70.000000 inf 1.000000 +uR 8810.000000 70.000000 inf 1.000000 +uR 8820.000000 70.000000 inf 1.000000 +uR 8830.000000 70.000000 inf 1.000000 +uR 8840.000000 70.000000 inf 1.000000 +uR 8850.000000 70.000000 inf 1.000000 +uR 8860.000000 70.000000 inf 1.000000 +uR 8870.000000 70.000000 inf 1.000000 +uR 8880.000000 70.000000 inf 1.000000 +uR 8890.000000 70.000000 inf 1.000000 +uR 8900.000000 70.000000 inf 1.000000 +uR 8910.000000 70.000000 inf 1.000000 +uR 8920.000000 70.000000 inf 1.000000 +uR 8930.000000 70.000000 inf 1.000000 +uR 8940.000000 70.000000 inf 1.000000 +uR 8950.000000 70.000000 inf 1.000000 +uR 8960.000000 70.000000 inf 1.000000 +uR 8970.000000 70.000000 inf 1.000000 +uR 8980.000000 70.000000 inf 1.000000 +uR 8990.000000 70.000000 inf 1.000000 +uR 9000.000000 70.000000 inf 1.000000 +uR 9010.000000 70.000000 inf 1.000000 +uR 9020.000000 70.000000 inf 1.000000 +uR 9030.000000 70.000000 inf 1.000000 +uR 9040.000000 70.000000 inf 1.000000 +uR 9050.000000 70.000000 inf 1.000000 +uR 9060.000000 70.000000 inf 1.000000 +uR 9070.000000 70.000000 inf 1.000000 +uR 9080.000000 70.000000 inf 1.000000 +uR 9090.000000 70.000000 inf 1.000000 +uR 9100.000000 70.000000 inf 1.000000 +uR 9110.000000 70.000000 inf 1.000000 +uR 9120.000000 70.000000 inf 1.000000 +uR 9130.000000 70.000000 inf 1.000000 +uR 9140.000000 70.000000 inf 1.000000 +uR 9150.000000 70.000000 inf 1.000000 +uR 9160.000000 70.000000 inf 1.000000 +uR 9170.000000 70.000000 inf 1.000000 +uR 9180.000000 70.000000 inf 1.000000 +uR 9190.000000 70.000000 inf 1.000000 +uR 9200.000000 70.000000 inf 1.000000 +uR 9210.000000 70.000000 inf 1.000000 +uR 9220.000000 70.000000 inf 1.000000 +uR 9230.000000 70.000000 inf 1.000000 +uR 9240.000000 70.000000 inf 1.000000 +uR 9250.000000 70.000000 inf 1.000000 +uR 9260.000000 70.000000 inf 1.000000 +uR 9270.000000 70.000000 inf 1.000000 +uR 9280.000000 70.000000 inf 1.000000 +uR 9290.000000 70.000000 inf 1.000000 +uR 9300.000000 70.000000 inf 1.000000 +uR 9310.000000 70.000000 inf 1.000000 +uR 9320.000000 70.000000 inf 1.000000 +uR 9330.000000 70.000000 inf 1.000000 +uR 9340.000000 70.000000 inf 1.000000 +uR 9350.000000 70.000000 inf 1.000000 +uR 9360.000000 70.000000 inf 1.000000 +uR 9370.000000 70.000000 inf 1.000000 +uR 9380.000000 70.000000 inf 1.000000 +uR 9390.000000 70.000000 inf 1.000000 +uR 9400.000000 70.000000 inf 1.000000 +uR 9410.000000 70.000000 inf 1.000000 +uR 9420.000000 70.000000 inf 1.000000 +uR 9430.000000 70.000000 inf 1.000000 +uR 9440.000000 70.000000 inf 1.000000 +uR 9450.000000 70.000000 inf 1.000000 +uR 9460.000000 70.000000 inf 1.000000 +uR 9470.000000 70.000000 inf 1.000000 +uR 9480.000000 70.000000 inf 1.000000 +uR 9490.000000 70.000000 inf 1.000000 +uR 9500.000000 70.000000 inf 1.000000 +uR 9510.000000 70.000000 inf 1.000000 +uR 9520.000000 70.000000 inf 1.000000 +uR 9530.000000 70.000000 inf 1.000000 +uR 9540.000000 70.000000 inf 1.000000 +uR 9550.000000 70.000000 inf 1.000000 +uR 9560.000000 70.000000 inf 1.000000 +uR 9570.000000 70.000000 inf 1.000000 +uR 9580.000000 70.000000 inf 1.000000 +uR 9590.000000 70.000000 inf 1.000000 +uR 9600.000000 70.000000 inf 1.000000 +uR 9610.000000 70.000000 inf 1.000000 +uR 9620.000000 70.000000 inf 1.000000 +uR 9630.000000 70.000000 inf 1.000000 +uR 9640.000000 70.000000 inf 1.000000 +uR 9650.000000 70.000000 inf 1.000000 +uR 9660.000000 70.000000 inf 1.000000 +uR 9670.000000 70.000000 inf 1.000000 +uR 9680.000000 70.000000 inf 1.000000 +uR 9690.000000 70.000000 inf 1.000000 +uR 9700.000000 70.000000 inf 1.000000 +uR 9710.000000 70.000000 inf 1.000000 +uR 9720.000000 70.000000 inf 1.000000 +uR 9730.000000 70.000000 inf 1.000000 +uR 9740.000000 70.000000 inf 1.000000 +uR 9750.000000 70.000000 inf 1.000000 +uR 9760.000000 70.000000 inf 1.000000 +uR 9770.000000 70.000000 inf 1.000000 +uR 9780.000000 70.000000 inf 1.000000 +uR 9790.000000 70.000000 inf 1.000000 +uR 9800.000000 70.000000 inf 1.000000 +uR 9810.000000 70.000000 inf 1.000000 +uR 9820.000000 70.000000 inf 1.000000 +uR 9830.000000 70.000000 inf 1.000000 +uR 9840.000000 70.000000 inf 1.000000 +uR 9850.000000 70.000000 inf 1.000000 +uR 9860.000000 70.000000 inf 1.000000 +uR 9870.000000 70.000000 inf 1.000000 +uR 9880.000000 70.000000 inf 1.000000 +uR 9890.000000 70.000000 inf 1.000000 +uR 9900.000000 70.000000 inf 1.000000 +uR 9910.000000 70.000000 inf 1.000000 +uR 9920.000000 70.000000 inf 1.000000 +uR 9930.000000 70.000000 inf 1.000000 +uR 9940.000000 70.000000 inf 1.000000 +uR 9950.000000 70.000000 inf 1.000000 +uR 9960.000000 70.000000 inf 1.000000 +uR 9970.000000 70.000000 inf 1.000000 +uR 9980.000000 70.000000 inf 1.000000 +uR 9990.000000 70.000000 inf 1.000000 +uR 10000.000000 70.000000 inf 1.000000 +uR 10025.000000 70.000000 inf 1.000000 +uR 10050.000000 70.000000 inf 1.000000 +uR 10075.000000 70.000000 inf 1.000000 +uR 10100.000000 70.000000 inf 1.000000 +uR 10125.000000 70.000000 inf 1.000000 +uR 10150.000000 70.000000 inf 1.000000 +uR 10175.000000 70.000000 inf 1.000000 +uR 10200.000000 70.000000 inf 1.000000 +uR 10225.000000 70.000000 inf 1.000000 +uR 10250.000000 70.000000 inf 1.000000 +uR 10275.000000 70.000000 inf 1.000000 +uR 10300.000000 70.000000 inf 1.000000 +uR 10325.000000 70.000000 inf 1.000000 +uR 10350.000000 70.000000 inf 1.000000 +uR 10375.000000 70.000000 inf 1.000000 +uR 10400.000000 70.000000 inf 1.000000 +uR 10425.000000 70.000000 inf 1.000000 +uR 10450.000000 70.000000 inf 1.000000 +uR 10475.000000 70.000000 inf 1.000000 +uR 10500.000000 70.000000 inf 1.000000 +uR 10525.000000 70.000000 inf 1.000000 +uR 10550.000000 70.000000 inf 1.000000 +uR 10575.000000 70.000000 inf 1.000000 +uR 10600.000000 70.000000 inf 1.000000 +uR 10625.000000 70.000000 inf 1.000000 +uR 10650.000000 70.000000 inf 1.000000 +uR 10675.000000 70.000000 inf 1.000000 +uR 10700.000000 70.000000 inf 1.000000 +uR 10725.000000 70.000000 inf 1.000000 +uR 10750.000000 70.000000 inf 1.000000 +uR 10775.000000 70.000000 inf 1.000000 +uR 10800.000000 70.000000 inf 1.000000 +uR 10825.000000 70.000000 inf 1.000000 +uR 10850.000000 70.000000 inf 1.000000 +uR 10875.000000 70.000000 inf 1.000000 +uR 10900.000000 70.000000 inf 1.000000 +uR 10925.000000 70.000000 inf 1.000000 +uR 10950.000000 70.000000 inf 1.000000 +uR 10975.000000 70.000000 inf 1.000000 +uR 11000.000000 70.000000 inf 1.000000 +uR 11025.000000 70.000000 inf 1.000000 +uR 11050.000000 70.000000 inf 1.000000 +uR 11075.000000 70.000000 inf 1.000000 +uR 11100.000000 70.000000 inf 1.000000 +uR 11125.000000 70.000000 inf 1.000000 +uR 11150.000000 70.000000 inf 1.000000 +uR 11175.000000 70.000000 inf 1.000000 +uR 11200.000000 70.000000 inf 1.000000 +uR 11225.000000 70.000000 inf 1.000000 +uR 11250.000000 70.000000 inf 1.000000 +uR 11275.000000 70.000000 inf 1.000000 +uR 11300.000000 70.000000 inf 1.000000 +uR 11325.000000 70.000000 inf 1.000000 +uR 11350.000000 70.000000 inf 1.000000 +uR 11375.000000 70.000000 inf 1.000000 +uR 11400.000000 70.000000 inf 1.000000 +uR 11425.000000 70.000000 inf 1.000000 +uR 11450.000000 70.000000 inf 1.000000 +uR 11475.000000 70.000000 inf 1.000000 +uR 11500.000000 70.000000 inf 1.000000 +uR 11525.000000 70.000000 inf 1.000000 +uR 11550.000000 70.000000 inf 1.000000 +uR 11575.000000 70.000000 inf 1.000000 +uR 11600.000000 70.000000 inf 1.000000 +uR 11625.000000 70.000000 inf 1.000000 +uR 11650.000000 70.000000 inf 1.000000 +uR 11675.000000 70.000000 inf 1.000000 +uR 11700.000000 70.000000 inf 1.000000 +uR 11725.000000 70.000000 inf 1.000000 +uR 11750.000000 70.000000 inf 1.000000 +uR 11775.000000 70.000000 inf 1.000000 +uR 11800.000000 70.000000 inf 1.000000 +uR 11825.000000 70.000000 inf 1.000000 +uR 11850.000000 70.000000 inf 1.000000 +uR 11875.000000 70.000000 inf 1.000000 +uR 11900.000000 70.000000 inf 1.000000 +uR 11925.000000 70.000000 inf 1.000000 +uR 11950.000000 70.000000 inf 1.000000 +uR 11975.000000 70.000000 inf 1.000000 +uR 12000.000000 70.000000 inf 1.000000 +uR 12025.000000 70.000000 inf 1.000000 +uR 12050.000000 70.000000 inf 1.000000 +uR 12075.000000 70.000000 inf 1.000000 +uR 12100.000000 70.000000 inf 1.000000 +uR 12125.000000 70.000000 inf 1.000000 +uR 12150.000000 70.000000 inf 1.000000 +uR 12175.000000 70.000000 inf 1.000000 +uR 12200.000000 70.000000 inf 1.000000 +uR 12225.000000 70.000000 inf 1.000000 +uR 12250.000000 70.000000 inf 1.000000 +uR 12275.000000 70.000000 inf 1.000000 +uR 12300.000000 70.000000 inf 1.000000 +uR 12325.000000 70.000000 inf 1.000000 +uR 12350.000000 70.000000 inf 1.000000 +uR 12375.000000 70.000000 inf 1.000000 +uR 12400.000000 70.000000 inf 1.000000 +uR 12425.000000 70.000000 inf 1.000000 +uR 12450.000000 70.000000 inf 1.000000 +uR 12475.000000 70.000000 inf 1.000000 +uR 12500.000000 70.000000 inf 1.000000 +uR 12525.000000 70.000000 inf 1.000000 +uR 12550.000000 70.000000 inf 1.000000 +uR 12575.000000 70.000000 inf 1.000000 +uR 12600.000000 70.000000 inf 1.000000 +uR 12625.000000 70.000000 inf 1.000000 +uR 12650.000000 70.000000 inf 1.000000 +uR 12675.000000 70.000000 inf 1.000000 +uR 12700.000000 70.000000 inf 1.000000 +uR 12725.000000 70.000000 inf 1.000000 +uR 12750.000000 70.000000 inf 1.000000 +uR 12775.000000 70.000000 inf 1.000000 +uR 12800.000000 70.000000 inf 1.000000 +uR 12825.000000 70.000000 inf 1.000000 +uR 12850.000000 70.000000 inf 1.000000 +uR 12875.000000 70.000000 inf 1.000000 +uR 12900.000000 70.000000 inf 1.000000 +uR 12925.000000 70.000000 inf 1.000000 +uR 12950.000000 70.000000 inf 1.000000 +uR 12975.000000 70.000000 inf 1.000000 +uR 13000.000000 70.000000 inf 1.000000 +uR 13025.000000 70.000000 inf 1.000000 +uR 13050.000000 70.000000 inf 1.000000 +uR 13075.000000 70.000000 inf 1.000000 +uR 13100.000000 70.000000 inf 1.000000 +uR 13125.000000 70.000000 inf 1.000000 +uR 13150.000000 70.000000 inf 1.000000 +uR 13175.000000 70.000000 inf 1.000000 +uR 13200.000000 70.000000 inf 1.000000 +uR 13225.000000 70.000000 inf 1.000000 +uR 13250.000000 70.000000 inf 1.000000 +uR 13275.000000 70.000000 inf 1.000000 +uR 13300.000000 70.000000 inf 1.000000 +uR 13325.000000 70.000000 inf 1.000000 +uR 13350.000000 70.000000 inf 1.000000 +uR 13375.000000 70.000000 inf 1.000000 +uR 13400.000000 70.000000 inf 1.000000 +uR 13425.000000 70.000000 inf 1.000000 +uR 13450.000000 70.000000 inf 1.000000 +uR 13475.000000 70.000000 inf 1.000000 +uR 13500.000000 70.000000 inf 1.000000 +uR 13525.000000 70.000000 inf 1.000000 +uR 13550.000000 70.000000 inf 1.000000 +uR 13575.000000 70.000000 inf 1.000000 +uR 13600.000000 70.000000 inf 1.000000 +uR 13625.000000 70.000000 inf 1.000000 +uR 13650.000000 70.000000 inf 1.000000 +uR 13675.000000 70.000000 inf 1.000000 +uR 13700.000000 70.000000 inf 1.000000 +uR 13725.000000 70.000000 inf 1.000000 +uR 13750.000000 70.000000 inf 1.000000 +uR 13775.000000 70.000000 inf 1.000000 +uR 13800.000000 70.000000 inf 1.000000 +uR 13825.000000 70.000000 inf 1.000000 +uR 13850.000000 70.000000 inf 1.000000 +uR 13875.000000 70.000000 inf 1.000000 +uR 13900.000000 70.000000 inf 1.000000 +uR 13925.000000 70.000000 inf 1.000000 +uR 13950.000000 70.000000 inf 1.000000 +uR 13975.000000 70.000000 inf 1.000000 +uR 14000.000000 70.000000 inf 1.000000 +uR 14025.000000 70.000000 inf 1.000000 +uR 14050.000000 70.000000 inf 1.000000 +uR 14075.000000 70.000000 inf 1.000000 +uR 14100.000000 70.000000 inf 1.000000 +uR 14125.000000 70.000000 inf 1.000000 +uR 14150.000000 70.000000 inf 1.000000 +uR 14175.000000 70.000000 inf 1.000000 +uR 14200.000000 70.000000 inf 1.000000 +uR 14225.000000 70.000000 inf 1.000000 +uR 14250.000000 70.000000 inf 1.000000 +uR 14275.000000 70.000000 inf 1.000000 +uR 14300.000000 70.000000 inf 1.000000 +uR 14325.000000 70.000000 inf 1.000000 +uR 14350.000000 70.000000 inf 1.000000 +uR 14375.000000 70.000000 inf 1.000000 +uR 14400.000000 70.000000 inf 1.000000 +uR 14425.000000 70.000000 inf 1.000000 +uR 14450.000000 70.000000 inf 1.000000 +uR 14475.000000 70.000000 inf 1.000000 +uR 14500.000000 70.000000 inf 1.000000 +uR 14525.000000 70.000000 inf 1.000000 +uR 14550.000000 70.000000 inf 1.000000 +uR 14575.000000 70.000000 inf 1.000000 +uR 14600.000000 70.000000 inf 1.000000 +uR 14625.000000 70.000000 inf 1.000000 +uR 14650.000000 70.000000 inf 1.000000 +uR 14675.000000 70.000000 inf 1.000000 +uR 14700.000000 70.000000 inf 1.000000 +uR 14725.000000 70.000000 inf 1.000000 +uR 14750.000000 70.000000 inf 1.000000 +uR 14775.000000 70.000000 inf 1.000000 +uR 14800.000000 70.000000 inf 1.000000 +uR 14825.000000 70.000000 inf 1.000000 +uR 14850.000000 70.000000 inf 1.000000 +uR 14875.000000 70.000000 inf 1.000000 +uR 14900.000000 70.000000 inf 1.000000 +uR 14925.000000 70.000000 inf 1.000000 +uR 14950.000000 70.000000 inf 1.000000 +uR 14975.000000 70.000000 inf 1.000000 +uR 15000.000000 70.000000 inf 1.000000 +uR 15025.000000 70.000000 inf 1.000000 +uR 15050.000000 70.000000 inf 1.000000 +uR 15075.000000 70.000000 inf 1.000000 +uR 15100.000000 70.000000 inf 1.000000 +uR 15125.000000 70.000000 inf 1.000000 +uR 15150.000000 70.000000 inf 1.000000 +uR 15175.000000 70.000000 inf 1.000000 +uR 15200.000000 70.000000 inf 1.000000 +uR 15225.000000 70.000000 inf 1.000000 +uR 15250.000000 70.000000 inf 1.000000 +uR 15275.000000 70.000000 inf 1.000000 +uR 15300.000000 70.000000 inf 1.000000 +uR 15325.000000 70.000000 inf 1.000000 +uR 15350.000000 70.000000 inf 1.000000 +uR 15375.000000 70.000000 inf 1.000000 +uR 15400.000000 70.000000 inf 1.000000 +uR 15425.000000 70.000000 inf 1.000000 +uR 15450.000000 70.000000 inf 1.000000 +uR 15475.000000 70.000000 inf 1.000000 +uR 15500.000000 70.000000 inf 1.000000 +uR 15525.000000 70.000000 inf 1.000000 +uR 15550.000000 70.000000 inf 1.000000 +uR 15575.000000 70.000000 inf 1.000000 +uR 15600.000000 70.000000 inf 1.000000 +uR 15625.000000 70.000000 inf 1.000000 +uR 15650.000000 70.000000 inf 1.000000 +uR 15675.000000 70.000000 inf 1.000000 +uR 15700.000000 70.000000 inf 1.000000 +uR 15725.000000 70.000000 inf 1.000000 +uR 15750.000000 70.000000 inf 1.000000 +uR 15775.000000 70.000000 inf 1.000000 +uR 15800.000000 70.000000 inf 1.000000 +uR 15825.000000 70.000000 inf 1.000000 +uR 15850.000000 70.000000 inf 1.000000 +uR 15875.000000 70.000000 inf 1.000000 +uR 15900.000000 70.000000 inf 1.000000 +uR 15925.000000 70.000000 inf 1.000000 +uR 15950.000000 70.000000 inf 1.000000 +uR 15975.000000 70.000000 inf 1.000000 +uR 16000.000000 70.000000 inf 1.000000 +uR 16025.000000 70.000000 inf 1.000000 +uR 16050.000000 70.000000 inf 1.000000 +uR 16075.000000 70.000000 inf 1.000000 +uR 16100.000000 70.000000 inf 1.000000 +uR 16125.000000 70.000000 inf 1.000000 +uR 16150.000000 70.000000 inf 1.000000 +uR 16175.000000 70.000000 inf 1.000000 +uR 16200.000000 70.000000 inf 1.000000 +uR 16225.000000 70.000000 inf 1.000000 +uR 16250.000000 70.000000 inf 1.000000 +uR 16275.000000 70.000000 inf 1.000000 +uR 16300.000000 70.000000 inf 1.000000 +uR 16325.000000 70.000000 inf 1.000000 +uR 16350.000000 70.000000 inf 1.000000 +uR 16375.000000 70.000000 inf 1.000000 +uR 16400.000000 70.000000 inf 1.000000 +uR 16425.000000 70.000000 inf 1.000000 +uR 16450.000000 70.000000 inf 1.000000 +uR 16475.000000 70.000000 inf 1.000000 +uR 16500.000000 70.000000 inf 1.000000 +uR 16525.000000 70.000000 inf 1.000000 +uR 16550.000000 70.000000 inf 1.000000 +uR 16575.000000 70.000000 inf 1.000000 +uR 16600.000000 70.000000 inf 1.000000 +uR 16625.000000 70.000000 inf 1.000000 +uR 16650.000000 70.000000 inf 1.000000 +uR 16675.000000 70.000000 inf 1.000000 +uR 16700.000000 70.000000 inf 1.000000 +uR 16725.000000 70.000000 inf 1.000000 +uR 16750.000000 70.000000 inf 1.000000 +uR 16775.000000 70.000000 inf 1.000000 +uR 16800.000000 70.000000 inf 1.000000 +uR 16825.000000 70.000000 inf 1.000000 +uR 16850.000000 70.000000 inf 1.000000 +uR 16875.000000 70.000000 inf 1.000000 +uR 16900.000000 70.000000 inf 1.000000 +uR 16925.000000 70.000000 inf 1.000000 +uR 16950.000000 70.000000 inf 1.000000 +uR 16975.000000 70.000000 inf 1.000000 +uR 17000.000000 70.000000 inf 1.000000 +dPolE 1930.000000 50.000000 1.800296 0.165269 +dPolE 1940.000000 50.000000 1.309305 0.151484 +dPolE 1950.000000 50.000000 1.143294 0.139903 +dPolE 1960.000000 50.000000 0.887043 0.132319 +dPolE 1970.000000 50.000000 0.694757 0.126028 +dPolE 1980.000000 50.000000 0.787448 0.120852 +dPolE 1990.000000 50.000000 0.930387 0.116504 +dPolE 2000.000000 50.000000 1.026029 0.112678 +dPolE 2010.000000 50.000000 0.923153 0.109269 +dPolE 2020.000000 50.000000 1.070072 0.105676 +dPolE 2030.000000 50.000000 1.417070 0.102034 +dPolE 2040.000000 50.000000 1.349345 0.099043 +dPolE 2050.000000 50.000000 0.993161 0.096469 +dPolE 2060.000000 50.000000 0.997559 0.093567 +dPolE 2070.000000 50.000000 1.097280 0.090721 +dPolE 2080.000000 50.000000 1.217307 0.088023 +dPolE 2090.000000 50.000000 1.076752 0.085695 +dPolE 2100.000000 50.000000 0.785813 0.083661 +dPolE 2110.000000 50.000000 0.828161 0.081721 +dPolE 2120.000000 50.000000 0.944106 0.079806 +dPolE 2130.000000 50.000000 0.904778 0.078062 +dPolE 2140.000000 50.000000 0.990837 0.076453 +dPolE 2150.000000 50.000000 0.953939 0.075051 +dPolE 2160.000000 50.000000 0.904178 0.073805 +dPolE 2170.000000 50.000000 0.742843 0.072741 +dPolE 2180.000000 50.000000 0.737577 0.071572 +dPolE 2190.000000 50.000000 0.847678 0.070257 +dPolE 2200.000000 50.000000 0.925129 0.069029 +dPolE 2210.000000 50.000000 0.760540 0.068060 +dPolE 2220.000000 50.000000 0.823835 0.066873 +dPolE 2230.000000 50.000000 0.825953 0.065823 +dPolE 2240.000000 50.000000 0.809936 0.064850 +dPolE 2250.000000 50.000000 0.868201 0.063857 +dPolE 2260.000000 50.000000 0.796736 0.063094 +dPolE 2270.000000 50.000000 0.730204 0.062330 +dPolE 2280.000000 50.000000 0.815860 0.061441 +dPolE 2290.000000 50.000000 0.798825 0.060635 +dPolE 2300.000000 50.000000 0.798660 0.059902 +dPolE 2310.000000 50.000000 0.689545 0.059261 +dPolE 2320.000000 50.000000 0.492768 0.058720 +dPolE 2330.000000 50.000000 0.614542 0.058064 +dPolE 2340.000000 50.000000 0.836103 0.057390 +dPolE 2350.000000 50.000000 0.737850 0.056930 +dPolE 2360.000000 50.000000 0.695785 0.056493 +dPolE 2370.000000 50.000000 0.597369 0.056114 +dPolE 2380.000000 50.000000 0.632569 0.055644 +dPolE 2390.000000 50.000000 0.747894 0.055213 +dPolE 2400.000000 50.000000 0.713178 0.054940 +dPolE 2410.000000 50.000000 0.619984 0.054720 +dPolE 2420.000000 50.000000 0.573291 0.054491 +dPolE 2430.000000 50.000000 0.690290 0.054250 +dPolE 2440.000000 50.000000 0.612996 0.054136 +dPolE 2450.000000 50.000000 0.700928 0.053920 +dPolE 2460.000000 50.000000 0.754827 0.053783 +dPolE 2470.000000 50.000000 0.632926 0.053779 +dPolE 2480.000000 50.000000 0.642451 0.053692 +dPolE 2490.000000 50.000000 0.615324 0.053677 +dPolE 2500.000000 50.000000 0.628675 0.053685 +dPolE 2510.000000 50.000000 0.585632 0.053768 +dPolE 2520.000000 50.000000 0.447026 0.053875 +dPolE 2530.000000 50.000000 0.473566 0.053946 +dPolE 2540.000000 50.000000 0.547664 0.054089 +dPolE 2550.000000 50.000000 0.562903 0.054265 +dPolE 2560.000000 50.000000 0.603952 0.054475 +dPolE 2570.000000 50.000000 0.617656 0.054727 +dPolE 2580.000000 50.000000 0.617088 0.055021 +dPolE 2590.000000 50.000000 0.491601 0.055448 +dPolE 2600.000000 50.000000 0.517532 0.055822 +dPolE 2610.000000 50.000000 0.666330 0.056140 +dPolE 2620.000000 50.000000 0.595689 0.056626 +dPolE 2630.000000 50.000000 0.573192 0.057104 +dPolE 2640.000000 50.000000 0.497992 0.057657 +dPolE 2650.000000 50.000000 0.458465 0.058262 +dPolE 2660.000000 50.000000 0.449298 0.058901 +dPolE 2670.000000 50.000000 0.424692 0.059559 +dPolE 2680.000000 50.000000 0.412024 0.060203 +dPolE 2690.000000 50.000000 0.526856 0.060734 +dPolE 2700.000000 50.000000 0.427017 0.061441 +dPolE 2710.000000 50.000000 0.392052 0.062185 +dPolE 2720.000000 50.000000 0.427794 0.062861 +dPolE 2730.000000 50.000000 0.417384 0.063511 +dPolE 2740.000000 50.000000 0.470635 0.064146 +dPolE 2750.000000 50.000000 0.361683 0.064896 +dPolE 2760.000000 50.000000 0.284277 0.065668 +dPolE 2770.000000 50.000000 0.416853 0.066462 +dPolE 2780.000000 50.000000 0.288530 0.067123 +dPolE 2790.000000 50.000000 0.407721 0.067484 +dPolE 2800.000000 50.000000 0.408844 0.068022 +dPolE 2810.000000 50.000000 0.243115 0.068787 +dPolE 2820.000000 50.000000 0.317795 0.069390 +dPolE 2830.000000 50.000000 0.449478 0.069972 +dPolE 2840.000000 50.000000 0.432700 0.070578 +dPolE 2850.000000 50.000000 0.535699 0.071249 +dPolE 2860.000000 50.000000 0.423061 0.072141 +dPolE 2870.000000 50.000000 0.291309 0.072962 +dPolE 2880.000000 50.000000 0.313319 0.073775 +dPolE 2890.000000 50.000000 0.375089 0.074682 +dPolE 2900.000000 50.000000 0.468638 0.075560 +dPolE 2910.000000 50.000000 0.206962 0.076782 +dPolE 2920.000000 50.000000 0.225884 0.077768 +dPolE 2930.000000 50.000000 0.326816 0.078618 +dPolE 2940.000000 50.000000 0.511820 0.079408 +dPolE 2950.000000 50.000000 0.569485 0.080313 +dPolE 2960.000000 50.000000 0.356026 0.081448 +dPolE 2970.000000 50.000000 0.308444 0.082413 +dPolE 2980.000000 50.000000 0.419294 0.083300 +dPolE 2990.000000 50.000000 0.312290 0.084425 +dPolE 3000.000000 50.000000 0.302694 0.085484 +dPolE 3010.000000 50.000000 0.359407 0.086365 +dPolE 3020.000000 50.000000 0.230644 0.087489 +dPolE 3030.000000 50.000000 0.114535 0.088724 +dPolE 3040.000000 50.000000 0.094944 0.089791 +dPolE 3050.000000 50.000000 0.131689 0.090955 +dPolE 3060.000000 50.000000 0.298044 0.091955 +dPolE 3070.000000 50.000000 0.321239 0.093032 +dPolE 3080.000000 50.000000 0.495015 0.094055 +dPolE 3090.000000 50.000000 0.344365 0.095464 +dPolE 3100.000000 50.000000 0.079581 0.096846 +dPolE 3110.000000 50.000000 0.253341 0.097726 +dPolE 3120.000000 50.000000 0.237933 0.098964 +dPolE 3130.000000 50.000000 0.153138 0.100086 +dPolE 3140.000000 50.000000 0.304390 0.101024 +dPolE 3150.000000 50.000000 0.257985 0.102252 +dPolE 3160.000000 50.000000 0.169896 0.103412 +dPolE 3170.000000 50.000000 0.130210 0.104581 +dPolE 3180.000000 50.000000 0.259850 0.105514 +dPolE 3190.000000 50.000000 0.309619 0.106678 +dPolE 3200.000000 50.000000 0.294696 0.107791 +dPolE 3210.000000 50.000000 0.322265 0.108987 +dPolE 3220.000000 50.000000 0.242268 0.110300 +dPolE 3230.000000 50.000000 0.341232 0.111294 +dPolE 3240.000000 50.000000 0.385883 0.112343 +dPolE 3250.000000 50.000000 0.418532 0.113341 +dPolE 3260.000000 50.000000 0.269920 0.115361 +dPolE 3270.000000 50.000000 0.193508 0.117881 +dPolE 3280.000000 50.000000 0.319142 0.120150 +dPolE 3290.000000 50.000000 -0.009993 0.122581 +dPolE 3300.000000 50.000000 -0.060110 0.124421 +dPolE 3310.000000 50.000000 0.090350 0.126008 +dPolE 3320.000000 50.000000 0.103279 0.127325 +dPolE 3330.000000 50.000000 0.120887 0.128302 +dPolE 3340.000000 50.000000 0.229203 0.129089 +dPolE 3350.000000 50.000000 0.128285 0.130104 +dPolE 3360.000000 50.000000 0.136950 0.131038 +dPolE 3370.000000 50.000000 0.358729 0.131600 +dPolE 3380.000000 50.000000 0.026798 0.132673 +dPolE 3390.000000 50.000000 0.125807 0.132537 +dPolE 3400.000000 50.000000 0.062923 0.132721 +dPolE 3410.000000 50.000000 0.071446 0.133099 +dPolE 3420.000000 50.000000 0.049430 0.134206 +dPolE 3430.000000 50.000000 0.425948 0.134576 +dPolE 3440.000000 50.000000 0.339736 0.135458 +dPolE 3450.000000 50.000000 -0.231254 0.137559 +dPolE 3460.000000 50.000000 -0.155015 0.138534 +dPolE 3470.000000 50.000000 -0.097722 0.139582 +dPolE 3480.000000 50.000000 -0.091005 0.140545 +dPolE 3490.000000 50.000000 -0.176945 0.141740 +dPolE 3500.000000 50.000000 -0.039910 0.142550 +dPolE 3510.000000 50.000000 0.041152 0.143506 +dPolE 3520.000000 50.000000 -0.115626 0.144841 +dPolE 3530.000000 50.000000 -0.168388 0.145936 +dPolE 3540.000000 50.000000 -0.034318 0.146927 +dPolE 3550.000000 50.000000 0.020299 0.147897 +dPolE 3560.000000 50.000000 0.288599 0.148347 +dPolE 3570.000000 50.000000 0.317733 0.149361 +dPolE 3580.000000 50.000000 -0.117646 0.151069 +dPolE 3590.000000 50.000000 -0.080377 0.152004 +dPolE 3600.000000 50.000000 0.174486 0.152441 +dPolE 3610.000000 50.000000 -0.134719 0.153971 +dPolE 3620.000000 50.000000 -0.072756 0.154455 +dPolE 3630.000000 50.000000 0.223681 0.154501 +dPolE 3640.000000 50.000000 0.254947 0.155456 +dPolE 3650.000000 50.000000 0.219668 0.156635 +dPolE 3660.000000 50.000000 0.149169 0.156585 +dPolE 3670.000000 50.000000 0.025261 0.155881 +dPolE 3680.000000 50.000000 0.169458 0.155253 +dPolE 3690.000000 50.000000 0.042343 0.155808 +dPolE 3700.000000 50.000000 -0.314537 0.158009 +dPolE 3710.000000 50.000000 -0.167547 0.159737 +dPolE 3720.000000 50.000000 0.036098 0.160046 +dPolE 3730.000000 50.000000 0.524714 0.160258 +dPolE 3740.000000 50.000000 0.451944 0.161513 +dPolE 3750.000000 50.000000 -0.096791 0.162511 +dPolE 3760.000000 50.000000 -0.013359 0.161830 +dPolE 3770.000000 50.000000 0.010189 0.161823 +dPolE 3780.000000 50.000000 0.033981 0.160833 +dPolE 3790.000000 50.000000 -0.112086 0.159787 +dPolE 3800.000000 50.000000 0.055447 0.159431 +dPolE 3810.000000 50.000000 0.109895 0.160701 +dPolE 3820.000000 50.000000 -0.004878 0.161755 +dPolE 3830.000000 50.000000 0.228860 0.160133 +dPolE 3840.000000 50.000000 0.128166 0.160381 +dPolE 3850.000000 50.000000 0.127896 0.161768 +dPolE 3860.000000 50.000000 0.147482 0.160719 +dPolE 3870.000000 50.000000 0.078392 0.158488 +dPolE 3880.000000 50.000000 0.183113 0.155667 +dPolE 3890.000000 50.000000 0.075837 0.156180 +dPolE 3900.000000 50.000000 -0.190823 0.161027 +dPolE 3910.000000 50.000000 0.054573 0.165085 +dPolE 3920.000000 50.000000 -0.056193 0.164214 +dPolE 3930.000000 50.000000 0.143494 0.161058 +dPolE 3940.000000 50.000000 0.221944 0.158693 +dPolE 3950.000000 50.000000 0.290965 0.157904 +dPolE 3960.000000 50.000000 0.144584 0.159730 +dPolE 3970.000000 50.000000 0.008712 0.161534 +dPolE 3980.000000 50.000000 0.269035 0.158640 +dPolE 3990.000000 50.000000 0.106360 0.156470 +dPolE 4000.000000 50.000000 0.002007 0.157825 +dPolE 4010.000000 50.000000 0.069213 0.161148 +dPolE 4020.000000 50.000000 0.296454 0.162872 +dPolE 4030.000000 50.000000 0.280878 0.163052 +dPolE 4040.000000 50.000000 0.406466 0.161289 +dPolE 4050.000000 50.000000 0.133208 0.158337 +dPolE 4060.000000 50.000000 0.086758 0.154981 +dPolE 4070.000000 50.000000 -0.120731 0.155810 +dPolE 4080.000000 50.000000 0.127315 0.159735 +dPolE 4090.000000 50.000000 0.174644 0.163186 +dPolE 4100.000000 50.000000 0.006288 0.163954 +dPolE 4110.000000 50.000000 -0.104073 0.164074 +dPolE 4120.000000 50.000000 0.040678 0.161803 +dPolE 4130.000000 50.000000 0.061745 0.156939 +dPolE 4140.000000 50.000000 0.076655 0.154925 +dPolE 4150.000000 50.000000 0.211908 0.157146 +dPolE 4160.000000 50.000000 0.352384 0.158213 +dPolE 4170.000000 50.000000 0.187220 0.158126 +dPolE 4180.000000 50.000000 0.297473 0.158009 +dPolE 4190.000000 50.000000 0.155380 0.159978 +dPolE 4200.000000 50.000000 -0.260014 0.161170 +dPolE 4210.000000 50.000000 -0.135135 0.156724 +dPolE 4220.000000 50.000000 -0.187986 0.151668 +dPolE 4230.000000 50.000000 -0.134411 0.148602 +dPolE 4240.000000 50.000000 0.071185 0.147951 +dPolE 4250.000000 50.000000 -0.003529 0.153107 +dPolE 4260.000000 50.000000 -0.160463 0.159303 +dPolE 4270.000000 50.000000 0.067648 0.158242 +dPolE 4280.000000 50.000000 -0.131821 0.153929 +dPolE 4290.000000 50.000000 0.037076 0.154887 +dPolE 4300.000000 50.000000 0.448109 0.155036 +dPolE 4310.000000 50.000000 0.217249 0.154143 +dPolE 4320.000000 50.000000 -0.048318 0.156983 +dPolE 4330.000000 50.000000 -0.070494 0.159366 +dPolE 4340.000000 50.000000 -0.176044 0.155837 +dPolE 4350.000000 50.000000 -0.088546 0.153950 +dPolE 4360.000000 50.000000 -0.128645 0.156325 +dPolE 4370.000000 50.000000 -0.394212 0.156811 +dPolE 4380.000000 50.000000 -0.103279 0.155223 +dPolE 4390.000000 50.000000 0.121845 0.153821 +dPolE 4400.000000 50.000000 -0.088955 0.153492 +dPolE 4410.000000 50.000000 0.081365 0.150725 +dPolE 4420.000000 50.000000 0.086665 0.145776 +dPolE 4430.000000 50.000000 -0.014363 0.145310 +dPolE 4440.000000 50.000000 0.015489 0.146547 +dPolE 4450.000000 50.000000 -0.187437 0.146050 +dPolE 4460.000000 50.000000 -0.115370 0.144853 +dPolE 4470.000000 50.000000 0.213441 0.145094 +dPolE 4480.000000 50.000000 0.055862 0.146128 +dPolE 4490.000000 50.000000 0.151271 0.145746 +dPolE 4500.000000 50.000000 -0.178894 0.145418 +dPolE 4510.000000 50.000000 0.059054 0.145020 +dPolE 4520.000000 50.000000 0.437804 0.144953 +dPolE 4530.000000 50.000000 0.182228 0.145154 +dPolE 4540.000000 50.000000 0.169528 0.144541 +dPolE 4550.000000 50.000000 0.145362 0.143759 +dPolE 4560.000000 50.000000 0.207362 0.142237 +dPolE 4570.000000 50.000000 -0.007975 0.140516 +dPolE 4580.000000 50.000000 0.080955 0.137257 +dPolE 4590.000000 50.000000 -0.035346 0.135081 +dPolE 4600.000000 50.000000 0.254085 0.136749 +dPolE 4610.000000 50.000000 0.350597 0.140050 +dPolE 4620.000000 50.000000 0.014396 0.141660 +dPolE 4630.000000 50.000000 0.108536 0.138296 +dPolE 4640.000000 50.000000 0.251926 0.132922 +dPolE 4650.000000 50.000000 -0.001623 0.131548 +dPolE 4660.000000 50.000000 0.238133 0.132864 +dPolE 4670.000000 50.000000 0.375109 0.135262 +dPolE 4680.000000 50.000000 -0.029226 0.136835 +dPolE 4690.000000 50.000000 -0.094837 0.137469 +dPolE 4700.000000 50.000000 -0.019352 0.140034 +dPolE 4710.000000 50.000000 0.144652 0.141776 +dPolE 4720.000000 50.000000 -0.009895 0.140484 +dPolE 4730.000000 50.000000 0.151876 0.137336 +dPolE 4740.000000 50.000000 0.292534 0.136052 +dPolE 4750.000000 50.000000 0.057031 0.136908 +dPolE 4760.000000 50.000000 -0.048369 0.136565 +dPolE 4770.000000 50.000000 0.281046 0.134941 +dPolE 4780.000000 50.000000 0.396855 0.133489 +dPolE 4790.000000 50.000000 -0.065348 0.132992 +dPolE 4800.000000 50.000000 0.044034 0.132579 +dPolE 4810.000000 50.000000 0.038859 0.132305 +dPolE 4820.000000 50.000000 -0.042241 0.132470 +dPolE 4830.000000 50.000000 0.033221 0.131875 +dPolE 4840.000000 50.000000 0.060445 0.130272 +dPolE 4850.000000 50.000000 0.254567 0.124052 +dPolE 4860.000000 50.000000 0.007938 0.109458 +dPolE 4870.000000 50.000000 -0.200939 0.104298 +dPolE 4880.000000 50.000000 0.175069 0.119348 +dPolE 4890.000000 50.000000 0.109958 0.127138 +dPolE 4900.000000 50.000000 -0.111818 0.127265 +dPolE 4910.000000 50.000000 -0.120877 0.126110 +dPolE 4920.000000 50.000000 0.108077 0.126071 +dPolE 4930.000000 50.000000 0.093644 0.125726 +dPolE 4940.000000 50.000000 0.168915 0.124648 +dPolE 4950.000000 50.000000 0.224713 0.125916 +dPolE 4960.000000 50.000000 0.464545 0.126260 +dPolE 4970.000000 50.000000 0.298787 0.125565 +dPolE 4980.000000 50.000000 -0.034643 0.124725 +dPolE 4990.000000 50.000000 0.048398 0.123040 +dPolE 5000.000000 50.000000 0.168704 0.122292 +dPolE 5010.000000 50.000000 -0.087461 0.122467 +dPolE 5020.000000 50.000000 -0.076699 0.121648 +dPolE 5030.000000 50.000000 0.029476 0.121429 +dPolE 5040.000000 50.000000 -0.039455 0.121888 +dPolE 5050.000000 50.000000 -0.132226 0.122269 +dPolE 5060.000000 50.000000 0.075363 0.121431 +dPolE 5070.000000 50.000000 0.086714 0.121107 +dPolE 5080.000000 50.000000 0.226341 0.121169 +dPolE 5090.000000 50.000000 0.192571 0.121157 +dPolE 5100.000000 50.000000 0.015308 0.121290 +dPolE 5110.000000 50.000000 0.054975 0.120683 +dPolE 5120.000000 50.000000 0.072871 0.119931 +dPolE 5130.000000 50.000000 -0.029141 0.119897 +dPolE 5140.000000 50.000000 0.099740 0.119520 +dPolE 5150.000000 50.000000 0.060971 0.119323 +dPolE 5160.000000 50.000000 0.061827 0.118870 +dPolE 5170.000000 50.000000 0.172865 0.118455 +dPolE 5180.000000 50.000000 0.150085 0.118177 +dPolE 5190.000000 50.000000 -0.027710 0.118025 +dPolE 5200.000000 50.000000 -0.011730 0.117316 +dPolE 5210.000000 50.000000 0.135303 0.116714 +dPolE 5220.000000 50.000000 0.017534 0.116708 +dPolE 5230.000000 50.000000 0.037074 0.116335 +dPolE 5240.000000 50.000000 0.232838 0.115764 +dPolE 5250.000000 50.000000 0.230460 0.115275 +dPolE 5260.000000 50.000000 0.131573 0.114620 +dPolE 5270.000000 50.000000 -0.040416 0.113828 +dPolE 5280.000000 50.000000 -0.054004 0.113580 +dPolE 5290.000000 50.000000 0.081999 0.113286 +dPolE 5300.000000 50.000000 0.183169 0.112817 +dPolE 5310.000000 50.000000 0.079505 0.112879 +dPolE 5320.000000 50.000000 0.152668 0.112640 +dPolE 5330.000000 50.000000 0.218859 0.111711 +dPolE 5340.000000 50.000000 0.100733 0.110882 +dPolE 5350.000000 50.000000 0.065867 0.110630 +dPolE 5360.000000 50.000000 0.041125 0.110427 +dPolE 5370.000000 50.000000 -0.041298 0.110289 +dPolE 5380.000000 50.000000 -0.163821 0.109988 +dPolE 5390.000000 50.000000 -0.001165 0.108936 +dPolE 5400.000000 50.000000 0.196585 0.108290 +dPolE 5410.000000 50.000000 0.065989 0.108178 +dPolE 5420.000000 50.000000 0.054003 0.107416 +dPolE 5430.000000 50.000000 0.208869 0.106329 +dPolE 5440.000000 50.000000 0.003675 0.106204 +dPolE 5450.000000 50.000000 0.075640 0.105823 +dPolE 5460.000000 50.000000 0.019638 0.105877 +dPolE 5470.000000 50.000000 0.025453 0.105692 +dPolE 5480.000000 50.000000 0.078605 0.104799 +dPolE 5490.000000 50.000000 0.291914 0.103860 +dPolE 5500.000000 50.000000 0.154978 0.103917 +dPolE 5510.000000 50.000000 0.007288 0.104109 +dPolE 5520.000000 50.000000 0.251597 0.103695 +dPolE 5530.000000 50.000000 0.262927 0.103324 +dPolE 5540.000000 50.000000 0.184909 0.102948 +dPolE 5550.000000 50.000000 0.141985 0.102832 +dPolE 5560.000000 50.000000 0.222794 0.102610 +dPolE 5570.000000 50.000000 0.097997 0.102368 +dPolE 5580.000000 50.000000 -0.074096 0.102333 +dPolE 5590.000000 50.000000 0.016439 0.102143 +dPolE 5600.000000 50.000000 -0.024814 0.101881 +dPolE 5610.000000 50.000000 0.053590 0.101229 +dPolE 5620.000000 50.000000 0.015345 0.101076 +dPolE 5630.000000 50.000000 -0.055014 0.101008 +dPolE 5640.000000 50.000000 0.067581 0.100465 +dPolE 5650.000000 50.000000 0.209350 0.099861 +dPolE 5660.000000 50.000000 0.183766 0.099538 +dPolE 5670.000000 50.000000 0.034147 0.098640 +dPolE 5680.000000 50.000000 0.001047 0.096889 +dPolE 5690.000000 50.000000 0.220953 0.094625 +dPolE 5700.000000 50.000000 0.102621 0.092020 +dPolE 5710.000000 50.000000 0.158524 0.090620 +dPolE 5720.000000 50.000000 0.023078 0.090058 +dPolE 5730.000000 50.000000 0.016712 0.089197 +dPolE 5740.000000 50.000000 0.203250 0.087398 +dPolE 5750.000000 50.000000 0.041953 0.086654 +dPolE 5760.000000 50.000000 0.058801 0.086025 +dPolE 5770.000000 50.000000 -0.022308 0.084461 +dPolE 5780.000000 50.000000 -0.048358 0.083299 +dPolE 5790.000000 50.000000 -0.050017 0.083183 +dPolE 5800.000000 50.000000 0.225019 0.082343 +dPolE 5810.000000 50.000000 0.068120 0.080475 +dPolE 5820.000000 50.000000 -0.027139 0.078473 +dPolE 5830.000000 50.000000 0.079912 0.080269 +dPolE 5840.000000 50.000000 0.019994 0.084095 +dPolE 5850.000000 50.000000 0.223458 0.083331 +dPolE 5860.000000 50.000000 0.030743 0.083913 +dPolE 5870.000000 50.000000 -0.118912 0.084910 +dPolE 5880.000000 50.000000 0.128263 0.083884 +dPolE 5890.000000 50.000000 0.089484 0.083664 +dPolE 5900.000000 50.000000 0.116867 0.086382 +dPolE 5910.000000 50.000000 0.208324 0.088068 +dPolE 5920.000000 50.000000 0.144473 0.088185 +dPolE 5930.000000 50.000000 -0.014973 0.086956 +dPolE 5940.000000 50.000000 0.032476 0.085602 +dPolE 5950.000000 50.000000 0.128461 0.084487 +dPolE 5960.000000 50.000000 -0.167574 0.084890 +dPolE 5970.000000 50.000000 -0.134894 0.086260 +dPolE 5980.000000 50.000000 -0.078379 0.086995 +dPolE 5990.000000 50.000000 0.073160 0.086871 +dPolE 6000.000000 50.000000 -0.094883 0.087095 +dPolE 6010.000000 50.000000 0.075651 0.086342 +dPolE 6020.000000 50.000000 0.233663 0.085175 +dPolE 6030.000000 50.000000 0.016935 0.084176 +dPolE 6040.000000 50.000000 0.085509 0.083775 +dPolE 6050.000000 50.000000 0.103160 0.085453 +dPolE 6060.000000 50.000000 0.139184 0.085902 +dPolE 6070.000000 50.000000 0.217320 0.085910 +dPolE 6080.000000 50.000000 0.117454 0.086367 +dPolE 6090.000000 50.000000 0.116997 0.086677 +dPolE 6100.000000 50.000000 0.082328 0.086389 +dPolE 6110.000000 50.000000 0.136203 0.085901 +dPolE 6120.000000 50.000000 0.009316 0.085827 +dPolE 6130.000000 50.000000 0.066587 0.085558 +dPolE 6140.000000 50.000000 0.125345 0.085257 +dPolE 6150.000000 50.000000 0.114226 0.085770 +dPolE 6160.000000 50.000000 0.253806 0.086408 +dPolE 6170.000000 50.000000 0.036396 0.087092 +dPolE 6180.000000 50.000000 0.068975 0.087258 +dPolE 6190.000000 50.000000 0.057711 0.087576 +dPolE 6200.000000 50.000000 0.187830 0.087038 +dPolE 6210.000000 50.000000 0.257577 0.087017 +dPolE 6220.000000 50.000000 0.182095 0.087464 +dPolE 6230.000000 50.000000 0.208268 0.086963 +dPolE 6240.000000 50.000000 0.178754 0.086736 +dPolE 6250.000000 50.000000 0.176668 0.087473 +dPolE 6260.000000 50.000000 0.013634 0.088226 +dPolE 6270.000000 50.000000 0.040806 0.088247 +dPolE 6280.000000 50.000000 0.166859 0.088022 +dPolE 6290.000000 50.000000 -0.003307 0.088222 +dPolE 6300.000000 50.000000 0.023766 0.088244 +dPolE 6310.000000 50.000000 0.194189 0.088521 +dPolE 6320.000000 50.000000 0.143716 0.088720 +dPolE 6330.000000 50.000000 -0.035778 0.088598 +dPolE 6340.000000 50.000000 -0.137409 0.088849 +dPolE 6350.000000 50.000000 0.047055 0.088627 +dPolE 6360.000000 50.000000 0.197790 0.088188 +dPolE 6370.000000 50.000000 0.139298 0.088100 +dPolE 6380.000000 50.000000 0.126999 0.088222 +dPolE 6390.000000 50.000000 0.224429 0.088097 +dPolE 6400.000000 50.000000 0.339885 0.087989 +dPolE 6410.000000 50.000000 0.263878 0.088206 +dPolE 6420.000000 50.000000 0.086179 0.088654 +dPolE 6430.000000 50.000000 0.090886 0.088539 +dPolE 6440.000000 50.000000 0.088437 0.088546 +dPolE 6450.000000 50.000000 0.088480 0.088734 +dPolE 6460.000000 50.000000 -0.013867 0.088807 +dPolE 6470.000000 50.000000 -0.029764 0.088738 +dPolE 6480.000000 50.000000 -0.013523 0.088626 +dPolE 6490.000000 50.000000 0.153556 0.088341 +dPolE 6500.000000 50.000000 0.106668 0.088322 +dPolE 6510.000000 50.000000 -0.021111 0.088486 +dPolE 6520.000000 50.000000 -0.006246 0.088406 +dPolE 6530.000000 50.000000 0.116265 0.088311 +dPolE 6540.000000 50.000000 0.035349 0.089227 +dPolE 6550.000000 50.000000 0.122762 0.079212 +dPolE 6560.000000 50.000000 0.163184 0.055552 +dPolE 6570.000000 50.000000 0.056610 0.053515 +dPolE 6580.000000 50.000000 -0.005562 0.073128 +dPolE 6590.000000 50.000000 0.170017 0.087514 +dPolE 6600.000000 50.000000 0.181117 0.088030 +dPolE 6610.000000 50.000000 0.164257 0.088113 +dPolE 6620.000000 50.000000 0.057600 0.088021 +dPolE 6630.000000 50.000000 0.059182 0.087885 +dPolE 6640.000000 50.000000 0.035482 0.087928 +dPolE 6650.000000 50.000000 -0.028288 0.088026 +dPolE 6660.000000 50.000000 0.046244 0.087931 +dPolE 6670.000000 50.000000 0.199071 0.087745 +dPolE 6680.000000 50.000000 0.041816 0.087834 +dPolE 6690.000000 50.000000 0.027848 0.087635 +dPolE 6700.000000 50.000000 0.206371 0.087220 +dPolE 6710.000000 50.000000 0.109588 0.087344 +dPolE 6720.000000 50.000000 -0.006338 0.087332 +dPolE 6730.000000 50.000000 0.224335 0.087028 +dPolE 6740.000000 50.000000 0.270259 0.087115 +dPolE 6750.000000 50.000000 0.128967 0.087382 +dPolE 6760.000000 50.000000 0.158075 0.087364 +dPolE 6770.000000 50.000000 0.067820 0.087376 +dPolE 6780.000000 50.000000 0.157645 0.087087 +dPolE 6790.000000 50.000000 0.096050 0.086971 +dPolE 6800.000000 50.000000 0.001215 0.086965 +dPolE 6810.000000 50.000000 0.033875 0.086918 +dPolE 6820.000000 50.000000 -0.025716 0.086995 +dPolE 6830.000000 50.000000 0.108789 0.086769 +dPolE 6840.000000 50.000000 0.031227 0.086729 +dPolE 6850.000000 50.000000 0.064386 0.086361 +dPolE 6860.000000 50.000000 0.151911 0.086241 +dPolE 6870.000000 50.000000 -0.059324 0.086703 +dPolE 6880.000000 50.000000 0.098867 0.086700 +dPolE 6890.000000 50.000000 0.104649 0.086709 +dPolE 6900.000000 50.000000 0.108659 0.086774 +dPolE 6910.000000 50.000000 0.019477 0.086838 +dPolE 6920.000000 50.000000 -0.001079 0.086786 +dPolE 6930.000000 50.000000 0.285764 0.086427 +dPolE 6940.000000 50.000000 0.127454 0.086490 +dPolE 6950.000000 50.000000 0.093479 0.086610 +dPolE 6960.000000 50.000000 0.066571 0.086673 +dPolE 6970.000000 50.000000 0.045082 0.086543 +dPolE 6980.000000 50.000000 -0.003794 0.086463 +dPolE 6990.000000 50.000000 -0.039103 0.086562 +dPolE 7000.000000 50.000000 0.146396 0.086510 +dPolE 7010.000000 50.000000 0.164355 0.086638 +dPolE 7020.000000 50.000000 0.197475 0.086609 +dPolE 7030.000000 50.000000 0.245538 0.086544 +dPolE 7040.000000 50.000000 0.104987 0.086879 +dPolE 7050.000000 50.000000 0.130120 0.086991 +dPolE 7060.000000 50.000000 -0.044900 0.087166 +dPolE 7070.000000 50.000000 0.008458 0.086777 +dPolE 7080.000000 50.000000 0.197563 0.086636 +dPolE 7090.000000 50.000000 0.145578 0.086907 +dPolE 7100.000000 50.000000 0.293202 0.086952 +dPolE 7110.000000 50.000000 0.303372 0.086995 +dPolE 7120.000000 50.000000 0.007327 0.087291 +dPolE 7130.000000 50.000000 -0.147363 0.087480 +dPolE 7140.000000 50.000000 0.000161 0.087255 +dPolE 7150.000000 50.000000 0.080451 0.087037 +dPolE 7160.000000 50.000000 0.124682 0.087044 +dPolE 7170.000000 50.000000 0.154713 0.087330 +dPolE 7180.000000 50.000000 0.391845 0.087060 +dPolE 7190.000000 50.000000 0.247556 0.087234 +dPolE 7200.000000 50.000000 -0.021009 0.087660 +dPolE 7210.000000 50.000000 0.206961 0.087622 +dPolE 7220.000000 50.000000 0.268095 0.087571 +dPolE 7230.000000 50.000000 0.183932 0.087856 +dPolE 7240.000000 50.000000 0.134496 0.087856 +dPolE 7250.000000 50.000000 0.049193 0.087597 +dPolE 7260.000000 50.000000 0.196490 0.087082 +dPolE 7270.000000 50.000000 0.101348 0.087417 +dPolE 7280.000000 50.000000 0.026705 0.087565 +dPolE 7290.000000 50.000000 0.182919 0.087284 +dPolE 7300.000000 50.000000 0.187144 0.087414 +dPolE 7310.000000 50.000000 0.110315 0.087406 +dPolE 7320.000000 50.000000 0.136693 0.087505 +dPolE 7330.000000 50.000000 0.356282 0.087638 +dPolE 7340.000000 50.000000 0.329326 0.087595 +dPolE 7350.000000 50.000000 0.215243 0.087262 +dPolE 7360.000000 50.000000 0.103000 0.087457 +dPolE 7370.000000 50.000000 0.051681 0.087857 +dPolE 7380.000000 50.000000 0.110789 0.088408 +dPolE 7390.000000 50.000000 0.202520 0.088632 +dPolE 7400.000000 50.000000 0.209748 0.088278 +dPolE 7410.000000 50.000000 0.060688 0.088767 +dPolE 7420.000000 50.000000 -0.066095 0.089588 +dPolE 7430.000000 50.000000 0.112934 0.089646 +dPolE 7440.000000 50.000000 0.088585 0.089734 +dPolE 7450.000000 50.000000 0.172775 0.089756 +dPolE 7460.000000 50.000000 0.056316 0.089948 +dPolE 7470.000000 50.000000 0.193077 0.089523 +dPolE 7480.000000 50.000000 0.174909 0.089469 +dPolE 7490.000000 50.000000 0.062761 0.089936 +dPolE 7500.000000 50.000000 0.060855 0.090011 +dPolE 7510.000000 50.000000 0.244872 0.089804 +dPolE 7520.000000 50.000000 0.049575 0.090633 +dPolE 7530.000000 50.000000 0.136990 0.090831 +dPolE 7540.000000 50.000000 0.209322 0.090285 +dPolE 7550.000000 50.000000 0.145739 0.090523 +dPolE 7560.000000 50.000000 0.138569 0.090705 +dPolE 7570.000000 50.000000 -0.046040 0.090732 +dPolE 7580.000000 50.000000 0.012444 0.090522 +dPolE 7590.000000 50.000000 0.122851 0.090399 +dPolE 7600.000000 50.000000 0.127555 0.091086 +dPolE 7610.000000 50.000000 0.076953 0.091857 +dPolE 7620.000000 50.000000 0.227230 0.092258 +dPolE 7630.000000 50.000000 0.191899 0.092071 +dPolE 7640.000000 50.000000 -0.046569 0.092184 +dPolE 7650.000000 50.000000 0.035272 0.092411 +dPolE 7660.000000 50.000000 0.085939 0.092946 +dPolE 7670.000000 50.000000 0.370741 0.093453 +dPolE 7680.000000 50.000000 0.034097 0.093696 +dPolE 7690.000000 50.000000 -0.132560 0.092893 +dPolE 7700.000000 50.000000 0.038224 0.092339 +dPolE 7710.000000 50.000000 0.105566 0.092989 +dPolE 7720.000000 50.000000 0.155238 0.093992 +dPolE 7730.000000 50.000000 -0.038229 0.094910 +dPolE 7740.000000 50.000000 -0.074810 0.095132 +dPolE 7750.000000 50.000000 0.169033 0.095227 +dPolE 7760.000000 50.000000 0.172014 0.095775 +dPolE 7770.000000 50.000000 -0.084215 0.096435 +dPolE 7780.000000 50.000000 -0.076788 0.096317 +dPolE 7790.000000 50.000000 -0.132661 0.095782 +dPolE 7800.000000 50.000000 -0.045988 0.095565 +dPolE 7810.000000 50.000000 0.082458 0.096211 +dPolE 7820.000000 50.000000 0.202242 0.096565 +dPolE 7830.000000 50.000000 0.051247 0.096888 +dPolE 7840.000000 50.000000 -0.016075 0.097428 +dPolE 7850.000000 50.000000 -0.024712 0.098190 +dPolE 7860.000000 50.000000 -0.027280 0.098630 +dPolE 7870.000000 50.000000 -0.039165 0.098616 +dPolE 7880.000000 50.000000 0.055663 0.098302 +dPolE 7890.000000 50.000000 0.083523 0.098515 +dPolE 7900.000000 50.000000 0.042025 0.099088 +dPolE 7910.000000 50.000000 -0.038900 0.099300 +dPolE 7920.000000 50.000000 -0.002707 0.099514 +dPolE 7930.000000 50.000000 -0.060735 0.099791 +dPolE 7940.000000 50.000000 0.114926 0.099338 +dPolE 7950.000000 50.000000 0.158055 0.099355 +dPolE 7960.000000 50.000000 0.034721 0.100088 +dPolE 7970.000000 50.000000 -0.028050 0.100686 +dPolE 7980.000000 50.000000 0.142754 0.100896 +dPolE 7990.000000 50.000000 0.011404 0.101288 +dPolE 8000.000000 50.000000 0.102720 0.101082 +dPolE 8010.000000 50.000000 0.097495 0.100955 +dPolE 8020.000000 50.000000 0.046017 0.101724 +dPolE 8030.000000 50.000000 -0.123851 0.102558 +dPolE 8040.000000 50.000000 0.050574 0.102335 +dPolE 8050.000000 50.000000 -0.017222 0.102221 +dPolE 8060.000000 50.000000 0.089364 0.102396 +dPolE 8070.000000 50.000000 0.042678 0.103420 +dPolE 8080.000000 50.000000 -0.003098 0.103959 +dPolE 8090.000000 50.000000 0.101247 0.103183 +dPolE 8100.000000 50.000000 0.023261 0.103453 +dPolE 8110.000000 50.000000 0.035597 0.103999 +dPolE 8120.000000 50.000000 0.312342 0.104326 +dPolE 8130.000000 50.000000 0.321042 0.104287 +dPolE 8140.000000 50.000000 0.067196 0.104031 +dPolE 8150.000000 50.000000 0.135584 0.104311 +dPolE 8160.000000 50.000000 -0.058338 0.105346 +dPolE 8170.000000 50.000000 0.206283 0.105458 +dPolE 8180.000000 50.000000 0.144351 0.105301 +dPolE 8190.000000 50.000000 -0.021273 0.105391 +dPolE 8200.000000 50.000000 0.160751 0.105565 +dPolE 8210.000000 50.000000 0.067518 0.106227 +dPolE 8220.000000 50.000000 -0.043298 0.106805 +dPolE 8230.000000 50.000000 0.058260 0.106332 +dPolE 8240.000000 50.000000 -0.073534 0.106324 +dPolE 8250.000000 50.000000 -0.052135 0.107017 +dPolE 8260.000000 50.000000 -0.040361 0.107711 +dPolE 8270.000000 50.000000 0.044316 0.107385 +dPolE 8280.000000 50.000000 0.087120 0.106878 +dPolE 8290.000000 50.000000 0.162355 0.106817 +dPolE 8300.000000 50.000000 0.156522 0.107853 +dPolE 8310.000000 50.000000 -0.115228 0.108836 +dPolE 8320.000000 50.000000 -0.034172 0.108512 +dPolE 8330.000000 50.000000 0.298596 0.107517 +dPolE 8340.000000 50.000000 0.085277 0.107557 +dPolE 8350.000000 50.000000 0.089903 0.108120 +dPolE 8360.000000 50.000000 0.021599 0.109105 +dPolE 8370.000000 50.000000 -0.075828 0.109035 +dPolE 8380.000000 50.000000 -0.111581 0.108826 +dPolE 8390.000000 50.000000 -0.030440 0.108983 +dPolE 8400.000000 50.000000 0.187362 0.109636 +dPolE 8410.000000 50.000000 0.005064 0.110372 +dPolE 8420.000000 50.000000 -0.007840 0.110175 +dPolE 8430.000000 50.000000 0.257418 0.109434 +dPolE 8440.000000 50.000000 0.202046 0.109587 +dPolE 8450.000000 50.000000 0.252613 0.110066 +dPolE 8460.000000 50.000000 0.108154 0.110630 +dPolE 8470.000000 50.000000 0.010701 0.110520 +dPolE 8480.000000 50.000000 -0.000743 0.110089 +dPolE 8490.000000 50.000000 0.098819 0.110708 +dPolE 8500.000000 50.000000 0.153623 0.112580 +dPolE 8510.000000 50.000000 0.160077 0.113341 +dPolE 8520.000000 50.000000 0.209638 0.110959 +dPolE 8530.000000 50.000000 0.114587 0.108602 +dPolE 8540.000000 50.000000 -0.036440 0.108421 +dPolE 8550.000000 50.000000 -0.022706 0.109885 +dPolE 8560.000000 50.000000 0.078598 0.111040 +dPolE 8570.000000 50.000000 0.290721 0.111162 +dPolE 8580.000000 50.000000 0.174217 0.110781 +dPolE 8590.000000 50.000000 0.248769 0.110403 +dPolE 8600.000000 50.000000 0.007427 0.111107 +dPolE 8610.000000 50.000000 0.164445 0.111881 +dPolE 8620.000000 50.000000 0.196027 0.112319 +dPolE 8630.000000 50.000000 0.186653 0.112324 +dPolE 8640.000000 50.000000 0.292819 0.111533 +dPolE 8650.000000 50.000000 0.240694 0.111114 +dPolE 8660.000000 50.000000 -0.006324 0.111979 +dPolE 8670.000000 50.000000 -0.005926 0.112864 +dPolE 8680.000000 50.000000 -0.092747 0.113151 +dPolE 8690.000000 50.000000 0.346756 0.112414 +dPolE 8700.000000 50.000000 -0.000414 0.112579 +dPolE 8710.000000 50.000000 -0.062710 0.112853 +dPolE 8720.000000 50.000000 -0.082691 0.113510 +dPolE 8730.000000 50.000000 0.086545 0.113307 +dPolE 8740.000000 50.000000 0.292286 0.112583 +dPolE 8750.000000 50.000000 -0.190146 0.112880 +dPolE 8760.000000 50.000000 0.297743 0.112389 +dPolE 8770.000000 50.000000 0.371976 0.112922 +dPolE 8780.000000 50.000000 -0.019009 0.113922 +dPolE 8790.000000 50.000000 -0.014668 0.113737 +dPolE 8800.000000 50.000000 0.076268 0.113592 +dPolE 8810.000000 50.000000 0.051599 0.114064 +dPolE 8820.000000 50.000000 0.242850 0.114223 +dPolE 8830.000000 50.000000 0.290411 0.114639 +dPolE 8840.000000 50.000000 0.215166 0.114850 +dPolE 8850.000000 50.000000 0.320322 0.114876 +dPolE 8860.000000 50.000000 -0.098765 0.115255 +dPolE 8870.000000 50.000000 0.089942 0.114678 +dPolE 8880.000000 50.000000 0.226229 0.114546 +dPolE 8890.000000 50.000000 0.150928 0.115083 +dPolE 8900.000000 50.000000 -0.109509 0.115881 +dPolE 8910.000000 50.000000 -0.026452 0.116117 +dPolE 8920.000000 50.000000 0.130052 0.115851 +dPolE 8930.000000 50.000000 0.062112 0.115891 +dPolE 8940.000000 50.000000 0.034333 0.116050 +dPolE 8950.000000 50.000000 0.054012 0.116401 +dPolE 8960.000000 50.000000 0.313726 0.116437 +dPolE 8970.000000 50.000000 0.160329 0.116820 +dPolE 8980.000000 50.000000 0.356492 0.116867 +dPolE 8990.000000 50.000000 0.144998 0.117000 +dPolE 9000.000000 50.000000 0.088696 0.117490 +dPolE 9010.000000 50.000000 0.115878 0.117853 +dPolE 9020.000000 50.000000 -0.216320 0.118360 +dPolE 9030.000000 50.000000 0.153310 0.118303 +dPolE 9040.000000 50.000000 -0.158908 0.118825 +dPolE 9050.000000 50.000000 -0.176754 0.118661 +dPolE 9060.000000 50.000000 -0.046095 0.118897 +dPolE 9070.000000 50.000000 -0.065826 0.119376 +dPolE 9080.000000 50.000000 0.101046 0.119769 +dPolE 9090.000000 50.000000 -0.035525 0.120563 +dPolE 9100.000000 50.000000 0.106745 0.120434 +dPolE 9110.000000 50.000000 0.072575 0.120100 +dPolE 9120.000000 50.000000 0.211764 0.120159 +dPolE 9130.000000 50.000000 0.011733 0.120998 +dPolE 9140.000000 50.000000 0.205628 0.121629 +dPolE 9150.000000 50.000000 -0.133340 0.122162 +dPolE 9160.000000 50.000000 0.014716 0.121513 +dPolE 9170.000000 50.000000 0.402650 0.120788 +dPolE 9180.000000 50.000000 -0.089517 0.121554 +dPolE 9190.000000 50.000000 -0.264642 0.122428 +dPolE 9200.000000 50.000000 0.050312 0.122978 +dPolE 9210.000000 50.000000 -0.042246 0.123566 +dPolE 9220.000000 50.000000 -0.072586 0.124355 +dPolE 9230.000000 50.000000 -0.019303 0.124616 +dPolE 9240.000000 50.000000 -0.040360 0.124735 +dPolE 9250.000000 50.000000 0.040489 0.124886 +dPolE 9260.000000 50.000000 0.058085 0.125329 +dPolE 9270.000000 50.000000 0.019152 0.126011 +dPolE 9280.000000 50.000000 -0.251246 0.127219 +dPolE 9290.000000 50.000000 -0.109117 0.127383 +dPolE 9300.000000 50.000000 0.061124 0.127320 +dPolE 9310.000000 50.000000 -0.135549 0.127828 +dPolE 9320.000000 50.000000 -0.141168 0.127945 +dPolE 9330.000000 50.000000 0.039010 0.128122 +dPolE 9340.000000 50.000000 0.301763 0.128327 +dPolE 9350.000000 50.000000 -0.021654 0.129562 +dPolE 9360.000000 50.000000 -0.178187 0.130613 +dPolE 9370.000000 50.000000 -0.513879 0.131516 +dPolE 9380.000000 50.000000 0.092847 0.130689 +dPolE 9390.000000 50.000000 0.103578 0.130985 +dPolE 9400.000000 50.000000 0.293533 0.131720 +dPolE 9410.000000 50.000000 0.443151 0.132165 +dPolE 9420.000000 50.000000 0.249497 0.133171 +dPolE 9430.000000 50.000000 0.107559 0.134046 +dPolE 9440.000000 50.000000 -0.134879 0.134592 +dPolE 9450.000000 50.000000 0.254653 0.134440 +dPolE 9460.000000 50.000000 0.345178 0.134981 +dPolE 9470.000000 50.000000 -0.001944 0.136244 +dPolE 9480.000000 50.000000 0.132333 0.136823 +dPolE 9490.000000 50.000000 0.294184 0.137363 +dPolE 9500.000000 50.000000 -0.003509 0.138488 +dPolE 9510.000000 50.000000 0.263690 0.138745 +dPolE 9520.000000 50.000000 -0.293510 0.140054 +dPolE 9530.000000 50.000000 0.042798 0.140181 +dPolE 9540.000000 50.000000 0.311804 0.140968 +dPolE 9550.000000 50.000000 0.131024 0.142227 +dPolE 9560.000000 50.000000 0.035514 0.142755 +dPolE 9570.000000 50.000000 -0.121821 0.143458 +dPolE 9580.000000 50.000000 -0.002760 0.143512 +dPolE 9590.000000 50.000000 0.380709 0.143495 +dPolE 9600.000000 50.000000 0.312854 0.144238 +dPolE 9610.000000 50.000000 0.265319 0.144850 +dPolE 9620.000000 50.000000 0.135979 0.145951 +dPolE 9630.000000 50.000000 0.011726 0.146839 +dPolE 9640.000000 50.000000 0.111303 0.147352 +dPolE 9650.000000 50.000000 0.164094 0.148116 +dPolE 9660.000000 50.000000 0.078386 0.148820 +dPolE 9670.000000 50.000000 0.241180 0.149638 +dPolE 9680.000000 50.000000 0.180797 0.150871 +dPolE 9690.000000 50.000000 0.240106 0.151567 +dPolE 9700.000000 50.000000 0.185906 0.152178 +dPolE 9710.000000 50.000000 0.062739 0.153232 +dPolE 9720.000000 50.000000 0.516779 0.153374 +dPolE 9730.000000 50.000000 0.146127 0.155380 +dPolE 9740.000000 50.000000 0.004950 0.156598 +dPolE 9750.000000 50.000000 -0.080080 0.157257 +dPolE 9760.000000 50.000000 0.134193 0.157948 +dPolE 9770.000000 50.000000 0.620771 0.158154 +dPolE 9780.000000 50.000000 -0.037181 0.160132 +dPolE 9790.000000 50.000000 -0.189255 0.161478 +dPolE 9800.000000 50.000000 0.053000 0.162203 +dPolE 9810.000000 50.000000 0.047044 0.163603 +dPolE 9820.000000 50.000000 0.076751 0.164959 +dPolE 9830.000000 50.000000 0.185161 0.165394 +dPolE 9840.000000 50.000000 0.092227 0.166717 +dPolE 9850.000000 50.000000 0.339304 0.167411 +dPolE 9860.000000 50.000000 0.221574 0.168763 +dPolE 9870.000000 50.000000 0.146577 0.170600 +dPolE 9880.000000 50.000000 0.528997 0.171197 +dPolE 9890.000000 50.000000 0.345494 0.172572 +dPolE 9900.000000 50.000000 0.461024 0.173332 +dPolE 9910.000000 50.000000 0.308098 0.174986 +dPolE 9920.000000 50.000000 -0.162157 0.177604 +dPolE 9930.000000 50.000000 0.006326 0.179214 +dPolE 9940.000000 50.000000 0.334360 0.180260 +dPolE 9950.000000 50.000000 -0.057027 0.182277 +dPolE 9960.000000 50.000000 -0.119932 0.184175 +dPolE 9970.000000 50.000000 -0.006253 0.185234 +dPolE 9980.000000 50.000000 0.519621 0.186215 +dPolE 9990.000000 50.000000 0.267923 0.188910 +dPolE 10000.000000 50.000000 0.248118 0.190716 +dPolE 10025.000000 50.000000 0.152581 0.094372 +dPolE 10050.000000 50.000000 0.046835 0.092254 +dPolE 10075.000000 50.000000 0.071503 0.089518 +dPolE 10100.000000 50.000000 0.064264 0.087440 +dPolE 10125.000000 50.000000 0.045417 0.085643 +dPolE 10150.000000 50.000000 0.050526 0.083420 +dPolE 10175.000000 50.000000 0.081504 0.081413 +dPolE 10200.000000 50.000000 0.138516 0.079604 +dPolE 10225.000000 50.000000 0.023612 0.077694 +dPolE 10250.000000 50.000000 -0.034759 0.075919 +dPolE 10275.000000 50.000000 0.084213 0.074371 +dPolE 10300.000000 50.000000 0.102200 0.072524 +dPolE 10325.000000 50.000000 0.076141 0.070646 +dPolE 10350.000000 50.000000 0.037539 0.069126 +dPolE 10375.000000 50.000000 0.028366 0.067670 +dPolE 10400.000000 50.000000 0.046620 0.066283 +dPolE 10425.000000 50.000000 -0.024087 0.065021 +dPolE 10450.000000 50.000000 -0.068686 0.063770 +dPolE 10475.000000 50.000000 -0.042254 0.062482 +dPolE 10500.000000 50.000000 -0.008435 0.061300 +dPolE 10525.000000 50.000000 0.021159 0.060189 +dPolE 10550.000000 50.000000 0.009279 0.059161 +dPolE 10575.000000 50.000000 0.045246 0.058213 +dPolE 10600.000000 50.000000 0.120174 0.057330 +dPolE 10625.000000 50.000000 0.041877 0.056234 +dPolE 10650.000000 50.000000 0.024311 0.055241 +dPolE 10675.000000 50.000000 0.121992 0.054409 +dPolE 10700.000000 50.000000 0.111421 0.053441 +dPolE 10725.000000 50.000000 0.071521 0.052527 +dPolE 10750.000000 50.000000 0.035966 0.051927 +dPolE 10775.000000 50.000000 -0.006697 0.051020 +dPolE 10800.000000 50.000000 -0.052587 0.049936 +dPolE 10825.000000 50.000000 -0.051546 0.049184 +dPolE 10850.000000 50.000000 -0.013720 0.048367 +dPolE 10875.000000 50.000000 0.071368 0.047459 +dPolE 10900.000000 50.000000 0.013154 0.046843 +dPolE 10925.000000 50.000000 -0.028981 0.046211 +dPolE 10950.000000 50.000000 0.044921 0.045369 +dPolE 10975.000000 50.000000 0.090744 0.044708 +dPolE 11000.000000 50.000000 0.116784 0.044144 +dPolE 11025.000000 50.000000 0.079365 0.043659 +dPolE 11050.000000 50.000000 0.074622 0.043234 +dPolE 11075.000000 50.000000 0.100000 0.042864 +dPolE 11100.000000 50.000000 0.065482 0.042237 +dPolE 11125.000000 50.000000 0.041837 0.041744 +dPolE 11150.000000 50.000000 0.044492 0.041511 +dPolE 11175.000000 50.000000 0.069375 0.041156 +dPolE 11200.000000 50.000000 0.093298 0.040813 +dPolE 11225.000000 50.000000 0.087946 0.040635 +dPolE 11250.000000 50.000000 0.114908 0.040335 +dPolE 11275.000000 50.000000 0.155507 0.039979 +dPolE 11300.000000 50.000000 0.060232 0.039978 +dPolE 11325.000000 50.000000 0.005977 0.039845 +dPolE 11350.000000 50.000000 -0.001503 0.039565 +dPolE 11375.000000 50.000000 0.029070 0.039414 +dPolE 11400.000000 50.000000 0.050225 0.039258 +dPolE 11425.000000 50.000000 0.041431 0.039058 +dPolE 11450.000000 50.000000 0.024371 0.038875 +dPolE 11475.000000 50.000000 0.013225 0.038676 +dPolE 11500.000000 50.000000 0.043588 0.038368 +dPolE 11525.000000 50.000000 0.034056 0.038105 +dPolE 11550.000000 50.000000 0.001495 0.037871 +dPolE 11575.000000 50.000000 0.073277 0.037683 +dPolE 11600.000000 50.000000 0.123967 0.037389 +dPolE 11625.000000 50.000000 0.150184 0.036974 +dPolE 11650.000000 50.000000 0.102966 0.036766 +dPolE 11675.000000 50.000000 0.052358 0.036551 +dPolE 11700.000000 50.000000 0.012720 0.036261 +dPolE 11725.000000 50.000000 0.061797 0.036044 +dPolE 11750.000000 50.000000 0.119468 0.035820 +dPolE 11775.000000 50.000000 0.091141 0.035463 +dPolE 11800.000000 50.000000 0.035242 0.035161 +dPolE 11825.000000 50.000000 -0.026771 0.034889 +dPolE 11850.000000 50.000000 0.082657 0.034549 +dPolE 11875.000000 50.000000 0.151105 0.034241 +dPolE 11900.000000 50.000000 0.178102 0.033964 +dPolE 11925.000000 50.000000 0.072418 0.033706 +dPolE 11950.000000 50.000000 -0.005042 0.033468 +dPolE 11975.000000 50.000000 -0.017378 0.033258 +dPolE 12000.000000 50.000000 0.032459 0.033013 +dPolE 12025.000000 50.000000 0.075808 0.032770 +dPolE 12050.000000 50.000000 0.051718 0.032561 +dPolE 12075.000000 50.000000 0.053770 0.032399 +dPolE 12100.000000 50.000000 0.072295 0.032248 +dPolE 12125.000000 50.000000 0.122173 0.032023 +dPolE 12150.000000 50.000000 0.120936 0.031827 +dPolE 12175.000000 50.000000 0.080726 0.031655 +dPolE 12200.000000 50.000000 0.146554 0.031553 +dPolE 12225.000000 50.000000 0.141716 0.031463 +dPolE 12250.000000 50.000000 0.049742 0.031386 +dPolE 12275.000000 50.000000 0.108819 0.031321 +dPolE 12300.000000 50.000000 0.137050 0.031305 +dPolE 12325.000000 50.000000 0.066105 0.031385 +dPolE 12350.000000 50.000000 0.050572 0.031308 +dPolE 12375.000000 50.000000 0.058425 0.031252 +dPolE 12400.000000 50.000000 0.092348 0.031424 +dPolE 12425.000000 50.000000 0.096442 0.031356 +dPolE 12450.000000 50.000000 0.091021 0.031204 +dPolE 12475.000000 50.000000 0.122796 0.031306 +dPolE 12500.000000 50.000000 0.130061 0.031208 +dPolE 12525.000000 50.000000 0.120036 0.030962 +dPolE 12550.000000 50.000000 0.184366 0.030836 +dPolE 12575.000000 50.000000 0.166628 0.030717 +dPolE 12600.000000 50.000000 0.056298 0.030609 +dPolE 12625.000000 50.000000 0.060937 0.030533 +dPolE 12650.000000 50.000000 0.059844 0.030421 +dPolE 12675.000000 50.000000 0.031463 0.030245 +dPolE 12700.000000 50.000000 0.045291 0.030038 +dPolE 12725.000000 50.000000 0.085928 0.029877 +dPolE 12750.000000 50.000000 0.173254 0.029857 +dPolE 12775.000000 50.000000 0.149223 0.029703 +dPolE 12800.000000 50.000000 0.090681 0.029514 +dPolE 12825.000000 50.000000 0.060579 0.029378 +dPolE 12850.000000 50.000000 0.086419 0.029235 +dPolE 12875.000000 50.000000 0.134316 0.029094 +dPolE 12900.000000 50.000000 0.093290 0.028995 +dPolE 12925.000000 50.000000 0.084218 0.028846 +dPolE 12950.000000 50.000000 0.100563 0.028657 +dPolE 12975.000000 50.000000 0.089612 0.028574 +dPolE 13000.000000 50.000000 0.094492 0.028476 +dPolE 13025.000000 50.000000 0.117111 0.028362 +dPolE 13050.000000 50.000000 0.078422 0.028224 +dPolE 13075.000000 50.000000 0.064552 0.028107 +dPolE 13100.000000 50.000000 0.096692 0.028025 +dPolE 13125.000000 50.000000 0.115457 0.027945 +dPolE 13150.000000 50.000000 0.125393 0.027863 +dPolE 13175.000000 50.000000 0.121085 0.027773 +dPolE 13200.000000 50.000000 0.103467 0.027702 +dPolE 13225.000000 50.000000 0.095719 0.027657 +dPolE 13250.000000 50.000000 0.131886 0.027684 +dPolE 13275.000000 50.000000 0.095692 0.027670 +dPolE 13300.000000 50.000000 0.050700 0.027649 +dPolE 13325.000000 50.000000 0.116515 0.027672 +dPolE 13350.000000 50.000000 0.108039 0.027720 +dPolE 13375.000000 50.000000 0.061545 0.027779 +dPolE 13400.000000 50.000000 0.064221 0.027794 +dPolE 13425.000000 50.000000 0.054148 0.027862 +dPolE 13450.000000 50.000000 0.036366 0.027972 +dPolE 13475.000000 50.000000 0.079189 0.028130 +dPolE 13500.000000 50.000000 0.085544 0.028314 +dPolE 13525.000000 50.000000 0.055045 0.028524 +dPolE 13550.000000 50.000000 0.081256 0.028898 +dPolE 13575.000000 50.000000 0.089659 0.029292 +dPolE 13600.000000 50.000000 0.072629 0.029706 +dPolE 13625.000000 50.000000 0.114777 0.029951 +dPolE 13650.000000 50.000000 0.130876 0.030203 +dPolE 13675.000000 50.000000 0.095649 0.030491 +dPolE 13700.000000 50.000000 0.103346 0.031205 +dPolE 13725.000000 50.000000 0.093872 0.032420 +dPolE 13750.000000 50.000000 0.028327 0.034640 +dPolE 13775.000000 50.000000 0.078082 0.037767 +dPolE 13800.000000 50.000000 0.126841 0.041063 +dPolE 13825.000000 50.000000 0.067339 0.043093 +dPolE 13850.000000 50.000000 0.003209 0.042794 +dPolE 13875.000000 50.000000 -0.031575 0.041560 +dPolE 13900.000000 50.000000 0.012818 0.039770 +dPolE 13925.000000 50.000000 0.032024 0.038672 +dPolE 13950.000000 50.000000 0.029453 0.037646 +dPolE 13975.000000 50.000000 -0.021403 0.035906 +dPolE 14000.000000 50.000000 0.051185 0.034814 +dPolE 14025.000000 50.000000 0.143311 0.034009 +dPolE 14050.000000 50.000000 0.054902 0.033205 +dPolE 14075.000000 50.000000 0.077124 0.032608 +dPolE 14100.000000 50.000000 0.142772 0.032113 +dPolE 14125.000000 50.000000 0.088560 0.031527 +dPolE 14150.000000 50.000000 0.062694 0.031133 +dPolE 14175.000000 50.000000 0.053721 0.030856 +dPolE 14200.000000 50.000000 0.034113 0.030542 +dPolE 14225.000000 50.000000 0.042613 0.030335 +dPolE 14250.000000 50.000000 0.069303 0.030205 +dPolE 14275.000000 50.000000 0.049999 0.030019 +dPolE 14300.000000 50.000000 0.077763 0.029877 +dPolE 14325.000000 50.000000 0.142449 0.029772 +dPolE 14350.000000 50.000000 0.096170 0.029705 +dPolE 14375.000000 50.000000 0.120153 0.029609 +dPolE 14400.000000 50.000000 0.210104 0.029484 +dPolE 14425.000000 50.000000 0.086393 0.029546 +dPolE 14450.000000 50.000000 0.074470 0.029497 +dPolE 14475.000000 50.000000 0.178751 0.029330 +dPolE 14500.000000 50.000000 0.111406 0.029325 +dPolE 14525.000000 50.000000 0.109485 0.029344 +dPolE 14550.000000 50.000000 0.185084 0.029388 +dPolE 14575.000000 50.000000 0.033561 0.029326 +dPolE 14600.000000 50.000000 0.007110 0.029329 +dPolE 14625.000000 50.000000 0.141830 0.029413 +dPolE 14650.000000 50.000000 0.114589 0.029344 +dPolE 14675.000000 50.000000 0.102406 0.029365 +dPolE 14700.000000 50.000000 0.120576 0.029515 +dPolE 14725.000000 50.000000 0.109012 0.029435 +dPolE 14750.000000 50.000000 0.103379 0.029435 +dPolE 14775.000000 50.000000 0.107930 0.029565 +dPolE 14800.000000 50.000000 0.126052 0.029540 +dPolE 14825.000000 50.000000 0.139197 0.029529 +dPolE 14850.000000 50.000000 0.143966 0.029556 +dPolE 14875.000000 50.000000 0.150782 0.029598 +dPolE 14900.000000 50.000000 0.146443 0.029679 +dPolE 14925.000000 50.000000 0.125928 0.029813 +dPolE 14950.000000 50.000000 0.113343 0.029805 +dPolE 14975.000000 50.000000 0.114033 0.029874 +dPolE 15000.000000 50.000000 0.131850 0.030069 +dPolE 15025.000000 50.000000 0.139883 0.030022 +dPolE 15050.000000 50.000000 0.170255 0.030050 +dPolE 15075.000000 50.000000 0.232574 0.030213 +dPolE 15100.000000 50.000000 0.176046 0.030212 +dPolE 15125.000000 50.000000 0.143490 0.030233 +dPolE 15150.000000 50.000000 0.156189 0.030304 +dPolE 15175.000000 50.000000 0.136798 0.030365 +dPolE 15200.000000 50.000000 0.130024 0.030462 +dPolE 15225.000000 50.000000 0.142669 0.030604 +dPolE 15250.000000 50.000000 0.108080 0.030671 +dPolE 15275.000000 50.000000 0.120231 0.030771 +dPolE 15300.000000 50.000000 0.193911 0.030918 +dPolE 15325.000000 50.000000 0.141915 0.030965 +dPolE 15350.000000 50.000000 0.138096 0.031045 +dPolE 15375.000000 50.000000 0.197004 0.031169 +dPolE 15400.000000 50.000000 0.145419 0.031254 +dPolE 15425.000000 50.000000 0.163312 0.031392 +dPolE 15450.000000 50.000000 0.260337 0.031589 +dPolE 15475.000000 50.000000 0.140924 0.031698 +dPolE 15500.000000 50.000000 0.080452 0.031832 +dPolE 15525.000000 50.000000 0.079832 0.031991 +dPolE 15550.000000 50.000000 0.105684 0.031954 +dPolE 15575.000000 50.000000 0.163938 0.032043 +dPolE 15600.000000 50.000000 0.242791 0.032241 +dPolE 15625.000000 50.000000 0.122723 0.032359 +dPolE 15650.000000 50.000000 0.101089 0.032511 +dPolE 15675.000000 50.000000 0.152847 0.032681 +dPolE 15700.000000 50.000000 0.126868 0.032736 +dPolE 15725.000000 50.000000 0.114179 0.032878 +dPolE 15750.000000 50.000000 0.114074 0.033073 +dPolE 15775.000000 50.000000 0.143358 0.033194 +dPolE 15800.000000 50.000000 0.158324 0.033329 +dPolE 15825.000000 50.000000 0.169875 0.033482 +dPolE 15850.000000 50.000000 0.215157 0.033684 +dPolE 15875.000000 50.000000 0.168855 0.033845 +dPolE 15900.000000 50.000000 0.084405 0.033997 +dPolE 15925.000000 50.000000 0.045089 0.034206 +dPolE 15950.000000 50.000000 0.073173 0.034425 +dPolE 15975.000000 50.000000 0.117952 0.034636 +dPolE 16000.000000 50.000000 0.117858 0.034799 +dPolE 16025.000000 50.000000 0.152817 0.034942 +dPolE 16050.000000 50.000000 0.192196 0.035113 +dPolE 16075.000000 50.000000 0.209770 0.035376 +dPolE 16100.000000 50.000000 0.159250 0.035629 +dPolE 16125.000000 50.000000 0.108281 0.035853 +dPolE 16150.000000 50.000000 0.096832 0.036016 +dPolE 16175.000000 50.000000 0.079838 0.036337 +dPolE 16200.000000 50.000000 0.101045 0.036629 +dPolE 16225.000000 50.000000 0.191604 0.036811 +dPolE 16250.000000 50.000000 0.194736 0.037065 +dPolE 16275.000000 50.000000 0.162039 0.037366 +dPolE 16300.000000 50.000000 0.093280 0.037726 +dPolE 16325.000000 50.000000 0.108397 0.038030 +dPolE 16350.000000 50.000000 0.152333 0.038359 +dPolE 16375.000000 50.000000 0.222268 0.038722 +dPolE 16400.000000 50.000000 0.162699 0.039050 +dPolE 16425.000000 50.000000 0.142561 0.039548 +dPolE 16450.000000 50.000000 0.150028 0.040175 +dPolE 16475.000000 50.000000 0.068276 0.040488 +dPolE 16500.000000 50.000000 0.027317 0.041100 +dPolE 16525.000000 50.000000 0.016355 0.041911 +dPolE 16550.000000 50.000000 0.025466 0.042646 +dPolE 16575.000000 50.000000 0.088947 0.043699 +dPolE 16600.000000 50.000000 0.134143 0.045013 +dPolE 16625.000000 50.000000 -0.012207 0.046661 +dPolE 16650.000000 50.000000 0.016130 0.049292 +dPolE 16675.000000 50.000000 0.087027 0.052711 +dPolE 16700.000000 50.000000 0.080981 0.056974 +dPolE 16725.000000 50.000000 -0.025690 0.063414 +dPolE 16750.000000 50.000000 -0.097947 0.071740 +dPolE 16775.000000 50.000000 0.001565 0.082019 +dPolE 16800.000000 50.000000 0.042786 0.095587 +dPolE 16825.000000 50.000000 0.033039 0.112207 +dPolE 16850.000000 50.000000 -0.059271 0.131196 +dPolE 16875.000000 50.000000 -0.164263 0.153737 +dPolE 16900.000000 50.000000 -0.105080 0.180220 +dPolE 16925.000000 50.000000 0.163321 0.209968 +dPolE 16950.000000 50.000000 -0.259923 0.244560 +dPolE 16975.000000 50.000000 -0.650729 0.282122 +dPolE 17000.000000 50.000000 -0.879995 0.322788 +dPolE 1930.000000 60.000000 2.012906 0.166024 +dPolE 1940.000000 60.000000 1.517541 0.151911 +dPolE 1950.000000 60.000000 1.048276 0.140543 +dPolE 1960.000000 60.000000 0.787670 0.132892 +dPolE 1970.000000 60.000000 1.001257 0.125979 +dPolE 1980.000000 60.000000 1.318819 0.120419 +dPolE 1990.000000 60.000000 0.956136 0.116724 +dPolE 2000.000000 60.000000 0.802506 0.113034 +dPolE 2010.000000 60.000000 1.487767 0.108800 +dPolE 2020.000000 60.000000 1.543620 0.105312 +dPolE 2030.000000 60.000000 1.335608 0.102187 +dPolE 2040.000000 60.000000 1.448875 0.099041 +dPolE 2050.000000 60.000000 1.482400 0.096033 +dPolE 2060.000000 60.000000 1.437595 0.093189 +dPolE 2070.000000 60.000000 1.338508 0.090487 +dPolE 2080.000000 60.000000 1.162719 0.088067 +dPolE 2090.000000 60.000000 1.070732 0.085652 +dPolE 2100.000000 60.000000 1.206537 0.083220 +dPolE 2110.000000 60.000000 1.063960 0.081457 +dPolE 2120.000000 60.000000 1.058711 0.079629 +dPolE 2130.000000 60.000000 1.092527 0.077830 +dPolE 2140.000000 60.000000 1.133319 0.076244 +dPolE 2150.000000 60.000000 1.059309 0.074881 +dPolE 2160.000000 60.000000 1.020163 0.073639 +dPolE 2170.000000 60.000000 1.154215 0.072340 +dPolE 2180.000000 60.000000 1.053484 0.071223 +dPolE 2190.000000 60.000000 0.948986 0.070078 +dPolE 2200.000000 60.000000 0.850124 0.068967 +dPolE 2210.000000 60.000000 0.928981 0.067785 +dPolE 2220.000000 60.000000 0.871681 0.066706 +dPolE 2230.000000 60.000000 0.862197 0.065678 +dPolE 2240.000000 60.000000 0.892073 0.064678 +dPolE 2250.000000 60.000000 0.985824 0.063710 +dPolE 2260.000000 60.000000 0.914113 0.062941 +dPolE 2270.000000 60.000000 0.883417 0.062120 +dPolE 2280.000000 60.000000 0.915131 0.061265 +dPolE 2290.000000 60.000000 0.843216 0.060484 +dPolE 2300.000000 60.000000 0.655426 0.059890 +dPolE 2310.000000 60.000000 0.668532 0.059190 +dPolE 2320.000000 60.000000 0.704822 0.058487 +dPolE 2330.000000 60.000000 0.651066 0.057925 +dPolE 2340.000000 60.000000 0.742352 0.057311 +dPolE 2350.000000 60.000000 0.694571 0.056804 +dPolE 2360.000000 60.000000 0.705838 0.056327 +dPolE 2370.000000 60.000000 0.643769 0.055906 +dPolE 2380.000000 60.000000 0.742556 0.055393 +dPolE 2390.000000 60.000000 0.744434 0.055051 +dPolE 2400.000000 60.000000 0.601366 0.054853 +dPolE 2410.000000 60.000000 0.647136 0.054551 +dPolE 2420.000000 60.000000 0.612973 0.054316 +dPolE 2430.000000 60.000000 0.626893 0.054157 +dPolE 2440.000000 60.000000 0.553787 0.054048 +dPolE 2450.000000 60.000000 0.590559 0.053877 +dPolE 2460.000000 60.000000 0.663062 0.053740 +dPolE 2470.000000 60.000000 0.626739 0.053694 +dPolE 2480.000000 60.000000 0.528072 0.053683 +dPolE 2490.000000 60.000000 0.492209 0.053679 +dPolE 2500.000000 60.000000 0.514337 0.053711 +dPolE 2510.000000 60.000000 0.556894 0.053756 +dPolE 2520.000000 60.000000 0.528882 0.053805 +dPolE 2530.000000 60.000000 0.628777 0.053843 +dPolE 2540.000000 60.000000 0.657087 0.054030 +dPolE 2550.000000 60.000000 0.600725 0.054261 +dPolE 2560.000000 60.000000 0.683492 0.054453 +dPolE 2570.000000 60.000000 0.682710 0.054750 +dPolE 2580.000000 60.000000 0.574746 0.055127 +dPolE 2590.000000 60.000000 0.450928 0.055551 +dPolE 2600.000000 60.000000 0.465204 0.055965 +dPolE 2610.000000 60.000000 0.548784 0.056341 +dPolE 2620.000000 60.000000 0.470654 0.056823 +dPolE 2630.000000 60.000000 0.568797 0.057247 +dPolE 2640.000000 60.000000 0.683455 0.057706 +dPolE 2650.000000 60.000000 0.564646 0.058363 +dPolE 2660.000000 60.000000 0.544952 0.059032 +dPolE 2670.000000 60.000000 0.525642 0.059708 +dPolE 2680.000000 60.000000 0.606003 0.060276 +dPolE 2690.000000 60.000000 0.459058 0.060999 +dPolE 2700.000000 60.000000 0.412868 0.061703 +dPolE 2710.000000 60.000000 0.632934 0.062279 +dPolE 2720.000000 60.000000 0.471783 0.063085 +dPolE 2730.000000 60.000000 0.303105 0.063878 +dPolE 2740.000000 60.000000 0.481616 0.064456 +dPolE 2750.000000 60.000000 0.514108 0.065099 +dPolE 2760.000000 60.000000 0.403951 0.065910 +dPolE 2770.000000 60.000000 0.308047 0.066861 +dPolE 2780.000000 60.000000 0.396232 0.067368 +dPolE 2790.000000 60.000000 0.433405 0.067826 +dPolE 2800.000000 60.000000 0.273145 0.068513 +dPolE 2810.000000 60.000000 0.277516 0.069190 +dPolE 2820.000000 60.000000 0.385901 0.069792 +dPolE 2830.000000 60.000000 0.286315 0.070541 +dPolE 2840.000000 60.000000 0.248585 0.071187 +dPolE 2850.000000 60.000000 0.375307 0.071875 +dPolE 2860.000000 60.000000 0.502115 0.072578 +dPolE 2870.000000 60.000000 0.464268 0.073327 +dPolE 2880.000000 60.000000 0.443289 0.074213 +dPolE 2890.000000 60.000000 0.359726 0.075204 +dPolE 2900.000000 60.000000 0.241482 0.076263 +dPolE 2910.000000 60.000000 0.322618 0.077175 +dPolE 2920.000000 60.000000 0.245633 0.078247 +dPolE 2930.000000 60.000000 0.238916 0.079234 +dPolE 2940.000000 60.000000 0.339293 0.080051 +dPolE 2950.000000 60.000000 0.425088 0.080870 +dPolE 2960.000000 60.000000 0.285559 0.081991 +dPolE 2970.000000 60.000000 0.140763 0.083040 +dPolE 2980.000000 60.000000 0.285890 0.083856 +dPolE 2990.000000 60.000000 0.238392 0.084897 +dPolE 3000.000000 60.000000 0.307564 0.085832 +dPolE 3010.000000 60.000000 0.410211 0.086622 +dPolE 3020.000000 60.000000 0.413145 0.087629 +dPolE 3030.000000 60.000000 0.420332 0.088777 +dPolE 3040.000000 60.000000 0.351613 0.089892 +dPolE 3050.000000 60.000000 0.371732 0.091095 +dPolE 3060.000000 60.000000 0.429186 0.092156 +dPolE 3070.000000 60.000000 0.258853 0.093421 +dPolE 3080.000000 60.000000 0.136309 0.094728 +dPolE 3090.000000 60.000000 0.090759 0.096009 +dPolE 3100.000000 60.000000 0.247481 0.096951 +dPolE 3110.000000 60.000000 0.312184 0.097941 +dPolE 3120.000000 60.000000 0.087910 0.099404 +dPolE 3130.000000 60.000000 0.097312 0.100363 +dPolE 3140.000000 60.000000 0.316313 0.101167 +dPolE 3150.000000 60.000000 0.229031 0.102512 +dPolE 3160.000000 60.000000 0.209536 0.103613 +dPolE 3170.000000 60.000000 0.403433 0.104500 +dPolE 3180.000000 60.000000 0.319613 0.105630 +dPolE 3190.000000 60.000000 0.244034 0.106942 +dPolE 3200.000000 60.000000 0.205142 0.108116 +dPolE 3210.000000 60.000000 0.301141 0.109206 +dPolE 3220.000000 60.000000 0.116690 0.110629 +dPolE 3230.000000 60.000000 0.248951 0.111554 +dPolE 3240.000000 60.000000 0.327950 0.112564 +dPolE 3250.000000 60.000000 0.055768 0.114153 +dPolE 3260.000000 60.000000 0.127588 0.116108 +dPolE 3270.000000 60.000000 0.140855 0.118569 +dPolE 3280.000000 60.000000 -0.090111 0.121208 +dPolE 3290.000000 60.000000 -0.250775 0.123269 +dPolE 3300.000000 60.000000 0.108512 0.124537 +dPolE 3310.000000 60.000000 0.315369 0.126020 +dPolE 3320.000000 60.000000 -0.047663 0.127803 +dPolE 3330.000000 60.000000 0.064585 0.128619 +dPolE 3340.000000 60.000000 0.013478 0.129538 +dPolE 3350.000000 60.000000 0.336589 0.130020 +dPolE 3360.000000 60.000000 0.344854 0.130901 +dPolE 3370.000000 60.000000 0.002839 0.132060 +dPolE 3380.000000 60.000000 0.107063 0.132445 +dPolE 3390.000000 60.000000 0.029733 0.132633 +dPolE 3400.000000 60.000000 0.042743 0.132864 +dPolE 3410.000000 60.000000 0.114713 0.133329 +dPolE 3420.000000 60.000000 -0.109458 0.134759 +dPolE 3430.000000 60.000000 -0.016534 0.135476 +dPolE 3440.000000 60.000000 0.057097 0.136153 +dPolE 3450.000000 60.000000 -0.016529 0.137638 +dPolE 3460.000000 60.000000 -0.094496 0.138731 +dPolE 3470.000000 60.000000 0.025352 0.139784 +dPolE 3480.000000 60.000000 0.010211 0.140785 +dPolE 3490.000000 60.000000 0.032855 0.141702 +dPolE 3500.000000 60.000000 0.078735 0.142641 +dPolE 3510.000000 60.000000 -0.145660 0.144171 +dPolE 3520.000000 60.000000 -0.209177 0.145380 +dPolE 3530.000000 60.000000 -0.096237 0.146256 +dPolE 3540.000000 60.000000 -0.011748 0.147407 +dPolE 3550.000000 60.000000 0.070835 0.148319 +dPolE 3560.000000 60.000000 0.234130 0.148924 +dPolE 3570.000000 60.000000 0.074468 0.150262 +dPolE 3580.000000 60.000000 -0.147008 0.151762 +dPolE 3590.000000 60.000000 -0.401542 0.153291 +dPolE 3600.000000 60.000000 0.069330 0.153365 +dPolE 3610.000000 60.000000 0.202357 0.154179 +dPolE 3620.000000 60.000000 -0.250456 0.155569 +dPolE 3630.000000 60.000000 -0.056951 0.155791 +dPolE 3640.000000 60.000000 0.076664 0.156613 +dPolE 3650.000000 60.000000 0.334934 0.157501 +dPolE 3660.000000 60.000000 -0.015695 0.157859 +dPolE 3670.000000 60.000000 -0.165628 0.157011 +dPolE 3680.000000 60.000000 -0.086505 0.156465 +dPolE 3690.000000 60.000000 0.074703 0.156772 +dPolE 3700.000000 60.000000 0.094066 0.158513 +dPolE 3710.000000 60.000000 0.177586 0.160198 +dPolE 3720.000000 60.000000 0.144650 0.160872 +dPolE 3730.000000 60.000000 0.218147 0.161727 +dPolE 3740.000000 60.000000 0.130061 0.163071 +dPolE 3750.000000 60.000000 0.132308 0.162891 +dPolE 3760.000000 60.000000 0.368955 0.161826 +dPolE 3770.000000 60.000000 0.086583 0.162480 +dPolE 3780.000000 60.000000 0.224982 0.161135 +dPolE 3790.000000 60.000000 0.517139 0.159236 +dPolE 3800.000000 60.000000 0.122036 0.159771 +dPolE 3810.000000 60.000000 -0.143888 0.161526 +dPolE 3820.000000 60.000000 0.218056 0.161773 +dPolE 3830.000000 60.000000 0.205284 0.160486 +dPolE 3840.000000 60.000000 0.152828 0.160559 +dPolE 3850.000000 60.000000 0.041870 0.162105 +dPolE 3860.000000 60.000000 0.385637 0.160270 +dPolE 3870.000000 60.000000 0.173754 0.158163 +dPolE 3880.000000 60.000000 0.079956 0.155766 +dPolE 3890.000000 60.000000 0.372540 0.155516 +dPolE 3900.000000 60.000000 0.289990 0.159888 +dPolE 3910.000000 60.000000 0.120917 0.164680 +dPolE 3920.000000 60.000000 0.347971 0.163195 +dPolE 3930.000000 60.000000 0.140706 0.160638 +dPolE 3940.000000 60.000000 -0.135560 0.158817 +dPolE 3950.000000 60.000000 0.175016 0.157565 +dPolE 3960.000000 60.000000 0.429315 0.158530 +dPolE 3970.000000 60.000000 0.233016 0.160381 +dPolE 3980.000000 60.000000 0.095791 0.158290 +dPolE 3990.000000 60.000000 0.090064 0.155715 +dPolE 4000.000000 60.000000 0.408313 0.156133 +dPolE 4010.000000 60.000000 0.019883 0.160375 +dPolE 4020.000000 60.000000 0.262995 0.161961 +dPolE 4030.000000 60.000000 0.606708 0.161273 +dPolE 4040.000000 60.000000 0.044502 0.160865 +dPolE 4050.000000 60.000000 -0.000265 0.157496 +dPolE 4060.000000 60.000000 0.343310 0.153298 +dPolE 4070.000000 60.000000 0.244451 0.153903 +dPolE 4080.000000 60.000000 0.103483 0.158583 +dPolE 4090.000000 60.000000 0.202244 0.161794 +dPolE 4100.000000 60.000000 0.231990 0.162197 +dPolE 4110.000000 60.000000 0.225513 0.161943 +dPolE 4120.000000 60.000000 0.036817 0.160238 +dPolE 4130.000000 60.000000 -0.161719 0.155863 +dPolE 4140.000000 60.000000 0.055976 0.153493 +dPolE 4150.000000 60.000000 0.521694 0.154886 +dPolE 4160.000000 60.000000 0.440408 0.156412 +dPolE 4170.000000 60.000000 0.119660 0.156491 +dPolE 4180.000000 60.000000 0.179259 0.156300 +dPolE 4190.000000 60.000000 0.120551 0.158319 +dPolE 4200.000000 60.000000 0.045001 0.158823 +dPolE 4210.000000 60.000000 0.187368 0.154256 +dPolE 4220.000000 60.000000 0.164454 0.149176 +dPolE 4230.000000 60.000000 -0.001282 0.146429 +dPolE 4240.000000 60.000000 0.075093 0.145910 +dPolE 4250.000000 60.000000 0.193039 0.150652 +dPolE 4260.000000 60.000000 0.107504 0.156677 +dPolE 4270.000000 60.000000 0.190375 0.155843 +dPolE 4280.000000 60.000000 0.197353 0.151204 +dPolE 4290.000000 60.000000 0.396372 0.151957 +dPolE 4300.000000 60.000000 0.411136 0.152785 +dPolE 4310.000000 60.000000 0.168788 0.151966 +dPolE 4320.000000 60.000000 -0.097161 0.154677 +dPolE 4330.000000 60.000000 -0.294491 0.157424 +dPolE 4340.000000 60.000000 0.145084 0.152963 +dPolE 4350.000000 60.000000 -0.127899 0.151738 +dPolE 4360.000000 60.000000 -0.041852 0.153614 +dPolE 4370.000000 60.000000 0.393021 0.152898 +dPolE 4380.000000 60.000000 0.087159 0.152407 +dPolE 4390.000000 60.000000 0.016607 0.151374 +dPolE 4400.000000 60.000000 0.214413 0.150409 +dPolE 4410.000000 60.000000 0.119124 0.148008 +dPolE 4420.000000 60.000000 0.019184 0.143197 +dPolE 4430.000000 60.000000 0.167331 0.142210 +dPolE 4440.000000 60.000000 0.176085 0.143491 +dPolE 4450.000000 60.000000 -0.045418 0.143051 +dPolE 4460.000000 60.000000 0.022234 0.141801 +dPolE 4470.000000 60.000000 -0.093566 0.142707 +dPolE 4480.000000 60.000000 0.087509 0.143185 +dPolE 4490.000000 60.000000 0.218287 0.142785 +dPolE 4500.000000 60.000000 0.019291 0.142262 +dPolE 4510.000000 60.000000 -0.033816 0.142266 +dPolE 4520.000000 60.000000 0.091466 0.142477 +dPolE 4530.000000 60.000000 0.080271 0.142276 +dPolE 4540.000000 60.000000 -0.102243 0.141907 +dPolE 4550.000000 60.000000 0.143918 0.140740 +dPolE 4560.000000 60.000000 0.415811 0.138969 +dPolE 4570.000000 60.000000 0.225204 0.137271 +dPolE 4580.000000 60.000000 0.019862 0.134459 +dPolE 4590.000000 60.000000 0.031293 0.132086 +dPolE 4600.000000 60.000000 -0.200797 0.134403 +dPolE 4610.000000 60.000000 -0.320499 0.137978 +dPolE 4620.000000 60.000000 0.117204 0.138334 +dPolE 4630.000000 60.000000 0.189403 0.134967 +dPolE 4640.000000 60.000000 0.087753 0.130138 +dPolE 4650.000000 60.000000 0.098829 0.128327 +dPolE 4660.000000 60.000000 -0.077205 0.130117 +dPolE 4670.000000 60.000000 -0.245260 0.132979 +dPolE 4680.000000 60.000000 0.005344 0.133564 +dPolE 4690.000000 60.000000 0.090938 0.133917 +dPolE 4700.000000 60.000000 0.025743 0.136678 +dPolE 4710.000000 60.000000 0.214742 0.138321 +dPolE 4720.000000 60.000000 0.173827 0.136733 +dPolE 4730.000000 60.000000 -0.229929 0.134498 +dPolE 4740.000000 60.000000 -0.081735 0.133240 +dPolE 4750.000000 60.000000 0.195827 0.133332 +dPolE 4760.000000 60.000000 0.180940 0.132825 +dPolE 4770.000000 60.000000 -0.005475 0.131929 +dPolE 4780.000000 60.000000 0.210858 0.130367 +dPolE 4790.000000 60.000000 0.070924 0.129433 +dPolE 4800.000000 60.000000 -0.111462 0.129398 +dPolE 4810.000000 60.000000 0.329546 0.128394 +dPolE 4820.000000 60.000000 0.463682 0.128158 +dPolE 4830.000000 60.000000 0.464544 0.127671 +dPolE 4840.000000 60.000000 -0.002532 0.126805 +dPolE 4850.000000 60.000000 -0.131224 0.121136 +dPolE 4860.000000 60.000000 -0.002068 0.106446 +dPolE 4870.000000 60.000000 -0.012645 0.101216 +dPolE 4880.000000 60.000000 0.066608 0.116139 +dPolE 4890.000000 60.000000 0.047193 0.123736 +dPolE 4900.000000 60.000000 0.082183 0.123475 +dPolE 4910.000000 60.000000 0.190313 0.122139 +dPolE 4920.000000 60.000000 0.157589 0.122487 +dPolE 4930.000000 60.000000 0.125586 0.122128 +dPolE 4940.000000 60.000000 0.321886 0.120985 +dPolE 4950.000000 60.000000 0.046117 0.122641 +dPolE 4960.000000 60.000000 -0.108656 0.123517 +dPolE 4970.000000 60.000000 0.126604 0.122227 +dPolE 4980.000000 60.000000 0.199338 0.120867 +dPolE 4990.000000 60.000000 -0.171764 0.119758 +dPolE 5000.000000 60.000000 -0.195585 0.119232 +dPolE 5010.000000 60.000000 0.321588 0.118311 +dPolE 5020.000000 60.000000 0.325229 0.117469 +dPolE 5030.000000 60.000000 -0.055149 0.117903 +dPolE 5040.000000 60.000000 0.004251 0.118164 +dPolE 5050.000000 60.000000 -0.113387 0.118527 +dPolE 5060.000000 60.000000 -0.003599 0.117835 +dPolE 5070.000000 60.000000 0.016080 0.117550 +dPolE 5080.000000 60.000000 0.035811 0.117689 +dPolE 5090.000000 60.000000 0.183251 0.117369 +dPolE 5100.000000 60.000000 0.356640 0.117047 +dPolE 5110.000000 60.000000 0.016492 0.117045 +dPolE 5120.000000 60.000000 0.079526 0.116154 +dPolE 5130.000000 60.000000 0.148511 0.115928 +dPolE 5140.000000 60.000000 0.003792 0.115983 +dPolE 5150.000000 60.000000 -0.014981 0.115731 +dPolE 5160.000000 60.000000 0.185916 0.114992 +dPolE 5170.000000 60.000000 0.023081 0.114969 +dPolE 5180.000000 60.000000 0.058113 0.114609 +dPolE 5190.000000 60.000000 0.234280 0.113978 +dPolE 5200.000000 60.000000 0.021568 0.113598 +dPolE 5210.000000 60.000000 -0.011126 0.113164 +dPolE 5220.000000 60.000000 -0.056340 0.113105 +dPolE 5230.000000 60.000000 0.113413 0.112530 +dPolE 5240.000000 60.000000 0.044475 0.112269 +dPolE 5250.000000 60.000000 0.170499 0.111628 +dPolE 5260.000000 60.000000 0.072612 0.110962 +dPolE 5270.000000 60.000000 -0.044845 0.110125 +dPolE 5280.000000 60.000000 -0.027013 0.109833 +dPolE 5290.000000 60.000000 0.138673 0.109454 +dPolE 5300.000000 60.000000 0.151788 0.109079 +dPolE 5310.000000 60.000000 0.065455 0.109106 +dPolE 5320.000000 60.000000 -0.130497 0.109179 +dPolE 5330.000000 60.000000 0.071921 0.108144 +dPolE 5340.000000 60.000000 0.080741 0.107166 +dPolE 5350.000000 60.000000 0.080720 0.106823 +dPolE 5360.000000 60.000000 0.070902 0.106610 +dPolE 5370.000000 60.000000 0.098840 0.106368 +dPolE 5380.000000 60.000000 0.042272 0.106063 +dPolE 5390.000000 60.000000 -0.016387 0.105314 +dPolE 5400.000000 60.000000 0.096247 0.104663 +dPolE 5410.000000 60.000000 0.057187 0.104383 +dPolE 5420.000000 60.000000 0.060314 0.103689 +dPolE 5430.000000 60.000000 0.158107 0.102714 +dPolE 5440.000000 60.000000 0.346014 0.102088 +dPolE 5450.000000 60.000000 0.123500 0.102076 +dPolE 5460.000000 60.000000 -0.086974 0.102310 +dPolE 5470.000000 60.000000 0.000926 0.102000 +dPolE 5480.000000 60.000000 0.000325 0.101195 +dPolE 5490.000000 60.000000 -0.091806 0.100625 +dPolE 5500.000000 60.000000 0.003272 0.100385 +dPolE 5510.000000 60.000000 0.132771 0.100232 +dPolE 5520.000000 60.000000 0.066032 0.100149 +dPolE 5530.000000 60.000000 0.068240 0.099794 +dPolE 5540.000000 60.000000 -0.002075 0.099448 +dPolE 5550.000000 60.000000 0.065494 0.099182 +dPolE 5560.000000 60.000000 0.228883 0.098771 +dPolE 5570.000000 60.000000 0.179819 0.098499 +dPolE 5580.000000 60.000000 0.229377 0.098224 +dPolE 5590.000000 60.000000 0.200761 0.098161 +dPolE 5600.000000 60.000000 -0.029814 0.098136 +dPolE 5610.000000 60.000000 -0.031860 0.097613 +dPolE 5620.000000 60.000000 0.124401 0.097211 +dPolE 5630.000000 60.000000 -0.012732 0.097206 +dPolE 5640.000000 60.000000 0.199609 0.096599 +dPolE 5650.000000 60.000000 0.111434 0.096258 +dPolE 5660.000000 60.000000 -0.022822 0.096012 +dPolE 5670.000000 60.000000 0.050791 0.094920 +dPolE 5680.000000 60.000000 0.208713 0.093045 +dPolE 5690.000000 60.000000 0.193145 0.091105 +dPolE 5700.000000 60.000000 0.163296 0.088494 +dPolE 5710.000000 60.000000 0.236489 0.087101 +dPolE 5720.000000 60.000000 0.135189 0.086526 +dPolE 5730.000000 60.000000 0.103073 0.085716 +dPolE 5740.000000 60.000000 0.102735 0.084146 +dPolE 5750.000000 60.000000 0.281283 0.083101 +dPolE 5760.000000 60.000000 0.106584 0.082693 +dPolE 5770.000000 60.000000 0.003989 0.081233 +dPolE 5780.000000 60.000000 0.144296 0.079909 +dPolE 5790.000000 60.000000 0.308160 0.079599 +dPolE 5800.000000 60.000000 0.338627 0.079034 +dPolE 5810.000000 60.000000 0.297521 0.077089 +dPolE 5820.000000 60.000000 0.160348 0.075233 +dPolE 5830.000000 60.000000 0.079083 0.077147 +dPolE 5840.000000 60.000000 0.086507 0.080734 +dPolE 5850.000000 60.000000 0.057972 0.080172 +dPolE 5860.000000 60.000000 -0.002917 0.080654 +dPolE 5870.000000 60.000000 0.072600 0.081397 +dPolE 5880.000000 60.000000 0.140201 0.080528 +dPolE 5890.000000 60.000000 0.127896 0.080279 +dPolE 5900.000000 60.000000 0.266977 0.082813 +dPolE 5910.000000 60.000000 0.150759 0.084638 +dPolE 5920.000000 60.000000 0.158137 0.084640 +dPolE 5930.000000 60.000000 0.308715 0.083125 +dPolE 5940.000000 60.000000 0.197292 0.081998 +dPolE 5950.000000 60.000000 0.070092 0.081099 +dPolE 5960.000000 60.000000 0.169407 0.081197 +dPolE 5970.000000 60.000000 0.170079 0.082542 +dPolE 5980.000000 60.000000 0.142755 0.083250 +dPolE 5990.000000 60.000000 0.019858 0.083426 +dPolE 6000.000000 60.000000 0.124299 0.083397 +dPolE 6010.000000 60.000000 0.185808 0.082752 +dPolE 6020.000000 60.000000 -0.012032 0.081977 +dPolE 6030.000000 60.000000 0.036965 0.080755 +dPolE 6040.000000 60.000000 0.065805 0.080384 +dPolE 6050.000000 60.000000 0.156506 0.081915 +dPolE 6060.000000 60.000000 0.257697 0.082311 +dPolE 6070.000000 60.000000 0.051270 0.082622 +dPolE 6080.000000 60.000000 0.035386 0.082889 +dPolE 6090.000000 60.000000 0.275184 0.082930 +dPolE 6100.000000 60.000000 0.296988 0.082644 +dPolE 6110.000000 60.000000 0.176791 0.082296 +dPolE 6120.000000 60.000000 0.182026 0.082092 +dPolE 6130.000000 60.000000 0.198043 0.081923 +dPolE 6140.000000 60.000000 0.023700 0.081856 +dPolE 6150.000000 60.000000 0.111927 0.082241 +dPolE 6160.000000 60.000000 0.250651 0.082854 +dPolE 6170.000000 60.000000 0.173763 0.083344 +dPolE 6180.000000 60.000000 0.139855 0.083521 +dPolE 6190.000000 60.000000 0.063427 0.083886 +dPolE 6200.000000 60.000000 0.169010 0.083391 +dPolE 6210.000000 60.000000 0.323890 0.083307 +dPolE 6220.000000 60.000000 0.102857 0.083870 +dPolE 6230.000000 60.000000 0.116962 0.083402 +dPolE 6240.000000 60.000000 0.292263 0.082961 +dPolE 6250.000000 60.000000 0.133243 0.083827 +dPolE 6260.000000 60.000000 0.013898 0.084501 +dPolE 6270.000000 60.000000 0.160133 0.084381 +dPolE 6280.000000 60.000000 0.269942 0.084180 +dPolE 6290.000000 60.000000 0.164173 0.084307 +dPolE 6300.000000 60.000000 0.079537 0.084424 +dPolE 6310.000000 60.000000 0.238625 0.084717 +dPolE 6320.000000 60.000000 0.288097 0.084811 +dPolE 6330.000000 60.000000 0.245282 0.084552 +dPolE 6340.000000 60.000000 0.092056 0.084808 +dPolE 6350.000000 60.000000 0.160028 0.084743 +dPolE 6360.000000 60.000000 0.283320 0.084320 +dPolE 6370.000000 60.000000 0.236331 0.084203 +dPolE 6380.000000 60.000000 0.162948 0.084389 +dPolE 6390.000000 60.000000 0.159945 0.084372 +dPolE 6400.000000 60.000000 0.235756 0.084243 +dPolE 6410.000000 60.000000 0.137601 0.084513 +dPolE 6420.000000 60.000000 0.085332 0.084828 +dPolE 6430.000000 60.000000 0.166905 0.084651 +dPolE 6440.000000 60.000000 0.177600 0.084652 +dPolE 6450.000000 60.000000 0.225392 0.084712 +dPolE 6460.000000 60.000000 0.183263 0.084707 +dPolE 6470.000000 60.000000 0.168135 0.084692 +dPolE 6480.000000 60.000000 0.130577 0.084612 +dPolE 6490.000000 60.000000 0.082343 0.084552 +dPolE 6500.000000 60.000000 0.091108 0.084478 +dPolE 6510.000000 60.000000 0.017791 0.084591 +dPolE 6520.000000 60.000000 0.148927 0.084355 +dPolE 6530.000000 60.000000 0.193966 0.084378 +dPolE 6540.000000 60.000000 0.386095 0.084938 +dPolE 6550.000000 60.000000 0.161694 0.075539 +dPolE 6560.000000 60.000000 0.025184 0.053060 +dPolE 6570.000000 60.000000 0.074273 0.051177 +dPolE 6580.000000 60.000000 0.143584 0.069831 +dPolE 6590.000000 60.000000 0.153618 0.083617 +dPolE 6600.000000 60.000000 0.188167 0.084097 +dPolE 6610.000000 60.000000 0.212066 0.084132 +dPolE 6620.000000 60.000000 0.178455 0.083975 +dPolE 6630.000000 60.000000 0.200655 0.083825 +dPolE 6640.000000 60.000000 0.178088 0.083882 +dPolE 6650.000000 60.000000 0.054024 0.084031 +dPolE 6660.000000 60.000000 0.029878 0.084035 +dPolE 6670.000000 60.000000 -0.009503 0.084046 +dPolE 6680.000000 60.000000 0.102650 0.083850 +dPolE 6690.000000 60.000000 0.036005 0.083720 +dPolE 6700.000000 60.000000 0.140745 0.083372 +dPolE 6710.000000 60.000000 0.294385 0.083227 +dPolE 6720.000000 60.000000 0.167801 0.083262 +dPolE 6730.000000 60.000000 0.063641 0.083315 +dPolE 6740.000000 60.000000 0.187800 0.083287 +dPolE 6750.000000 60.000000 0.247689 0.083342 +dPolE 6760.000000 60.000000 0.265954 0.083321 +dPolE 6770.000000 60.000000 0.224049 0.083237 +dPolE 6780.000000 60.000000 0.178510 0.083116 +dPolE 6790.000000 60.000000 0.152835 0.082944 +dPolE 6800.000000 60.000000 0.259618 0.082757 +dPolE 6810.000000 60.000000 0.087262 0.082876 +dPolE 6820.000000 60.000000 -0.030939 0.083023 +dPolE 6830.000000 60.000000 0.182961 0.082778 +dPolE 6840.000000 60.000000 0.160519 0.082652 +dPolE 6850.000000 60.000000 0.171789 0.082284 +dPolE 6860.000000 60.000000 0.053327 0.082391 +dPolE 6870.000000 60.000000 0.218266 0.082467 +dPolE 6880.000000 60.000000 0.203370 0.082601 +dPolE 6890.000000 60.000000 0.061948 0.082750 +dPolE 6900.000000 60.000000 0.027185 0.082853 +dPolE 6910.000000 60.000000 0.090774 0.082785 +dPolE 6920.000000 60.000000 0.101120 0.082658 +dPolE 6930.000000 60.000000 0.079887 0.082619 +dPolE 6940.000000 60.000000 0.077907 0.082529 +dPolE 6950.000000 60.000000 0.200988 0.082496 +dPolE 6960.000000 60.000000 0.174280 0.082536 +dPolE 6970.000000 60.000000 0.140318 0.082446 +dPolE 6980.000000 60.000000 0.211945 0.082259 +dPolE 6990.000000 60.000000 0.199837 0.082325 +dPolE 7000.000000 60.000000 0.185053 0.082447 +dPolE 7010.000000 60.000000 0.191758 0.082589 +dPolE 7020.000000 60.000000 0.297614 0.082512 +dPolE 7030.000000 60.000000 0.284766 0.082483 +dPolE 7040.000000 60.000000 0.306752 0.082595 +dPolE 7050.000000 60.000000 0.049521 0.082996 +dPolE 7060.000000 60.000000 0.145427 0.082911 +dPolE 7070.000000 60.000000 0.244727 0.082507 +dPolE 7080.000000 60.000000 0.084332 0.082693 +dPolE 7090.000000 60.000000 -0.097994 0.083089 +dPolE 7100.000000 60.000000 0.251055 0.082905 +dPolE 7110.000000 60.000000 0.027463 0.083177 +dPolE 7120.000000 60.000000 -0.129593 0.083339 +dPolE 7130.000000 60.000000 0.084185 0.083107 +dPolE 7140.000000 60.000000 0.327654 0.082795 +dPolE 7150.000000 60.000000 0.341273 0.082711 +dPolE 7160.000000 60.000000 0.142004 0.082961 +dPolE 7170.000000 60.000000 -0.062626 0.083430 +dPolE 7180.000000 60.000000 0.139195 0.083212 +dPolE 7190.000000 60.000000 0.151693 0.083223 +dPolE 7200.000000 60.000000 0.178745 0.083325 +dPolE 7210.000000 60.000000 0.173650 0.083507 +dPolE 7220.000000 60.000000 0.040657 0.083645 +dPolE 7230.000000 60.000000 0.019403 0.083847 +dPolE 7240.000000 60.000000 0.201372 0.083624 +dPolE 7250.000000 60.000000 0.072531 0.083414 +dPolE 7260.000000 60.000000 0.143067 0.082984 +dPolE 7270.000000 60.000000 0.252953 0.083046 +dPolE 7280.000000 60.000000 0.089824 0.083310 +dPolE 7290.000000 60.000000 0.258245 0.083045 +dPolE 7300.000000 60.000000 0.180000 0.083217 +dPolE 7310.000000 60.000000 -0.050995 0.083369 +dPolE 7320.000000 60.000000 -0.026875 0.083493 +dPolE 7330.000000 60.000000 0.201200 0.083558 +dPolE 7340.000000 60.000000 0.201142 0.083482 +dPolE 7350.000000 60.000000 0.189028 0.083094 +dPolE 7360.000000 60.000000 0.227143 0.083089 +dPolE 7370.000000 60.000000 0.125067 0.083560 +dPolE 7380.000000 60.000000 0.062117 0.084185 +dPolE 7390.000000 60.000000 0.169948 0.084355 +dPolE 7400.000000 60.000000 0.128697 0.084085 +dPolE 7410.000000 60.000000 0.004881 0.084567 +dPolE 7420.000000 60.000000 -0.001962 0.085201 +dPolE 7430.000000 60.000000 -0.087260 0.085519 +dPolE 7440.000000 60.000000 0.229332 0.085251 +dPolE 7450.000000 60.000000 0.346598 0.085201 +dPolE 7460.000000 60.000000 0.034713 0.085610 +dPolE 7470.000000 60.000000 0.093028 0.085248 +dPolE 7480.000000 60.000000 -0.075545 0.085352 +dPolE 7490.000000 60.000000 0.047192 0.085584 +dPolE 7500.000000 60.000000 0.045580 0.085632 +dPolE 7510.000000 60.000000 0.063444 0.085593 +dPolE 7520.000000 60.000000 0.045224 0.086181 +dPolE 7530.000000 60.000000 0.078509 0.086415 +dPolE 7540.000000 60.000000 0.029237 0.086032 +dPolE 7550.000000 60.000000 0.099049 0.086124 +dPolE 7560.000000 60.000000 0.167421 0.086201 +dPolE 7570.000000 60.000000 0.256069 0.085982 +dPolE 7580.000000 60.000000 0.204231 0.085924 +dPolE 7590.000000 60.000000 0.354660 0.085754 +dPolE 7600.000000 60.000000 0.338245 0.086405 +dPolE 7610.000000 60.000000 0.176456 0.087235 +dPolE 7620.000000 60.000000 -0.010395 0.087946 +dPolE 7630.000000 60.000000 0.104322 0.087607 +dPolE 7640.000000 60.000000 0.124780 0.087466 +dPolE 7650.000000 60.000000 0.097981 0.087786 +dPolE 7660.000000 60.000000 0.217367 0.088230 +dPolE 7670.000000 60.000000 0.045520 0.089154 +dPolE 7680.000000 60.000000 0.242028 0.088808 +dPolE 7690.000000 60.000000 0.172157 0.087969 +dPolE 7700.000000 60.000000 -0.043741 0.087871 +dPolE 7710.000000 60.000000 0.006323 0.088474 +dPolE 7720.000000 60.000000 0.046395 0.089456 +dPolE 7730.000000 60.000000 0.232535 0.089902 +dPolE 7740.000000 60.000000 0.125717 0.090210 +dPolE 7750.000000 60.000000 0.154078 0.090568 +dPolE 7760.000000 60.000000 0.136593 0.091082 +dPolE 7770.000000 60.000000 0.111889 0.091427 +dPolE 7780.000000 60.000000 0.103868 0.091341 +dPolE 7790.000000 60.000000 0.135696 0.090767 +dPolE 7800.000000 60.000000 0.222373 0.090515 +dPolE 7810.000000 60.000000 -0.043707 0.091557 +dPolE 7820.000000 60.000000 0.237575 0.091676 +dPolE 7830.000000 60.000000 -0.174745 0.092256 +dPolE 7840.000000 60.000000 0.001376 0.092526 +dPolE 7850.000000 60.000000 -0.019454 0.093256 +dPolE 7860.000000 60.000000 0.205862 0.093405 +dPolE 7870.000000 60.000000 0.133786 0.093486 +dPolE 7880.000000 60.000000 -0.015592 0.093444 +dPolE 7890.000000 60.000000 0.105253 0.093520 +dPolE 7900.000000 60.000000 0.207354 0.093877 +dPolE 7910.000000 60.000000 0.147134 0.094078 +dPolE 7920.000000 60.000000 0.056141 0.094416 +dPolE 7930.000000 60.000000 -0.278233 0.094975 +dPolE 7940.000000 60.000000 0.067886 0.094360 +dPolE 7950.000000 60.000000 0.035684 0.094432 +dPolE 7960.000000 60.000000 0.037822 0.094986 +dPolE 7970.000000 60.000000 0.164968 0.095378 +dPolE 7980.000000 60.000000 -0.021381 0.095930 +dPolE 7990.000000 60.000000 0.021369 0.096104 +dPolE 8000.000000 60.000000 0.039115 0.096016 +dPolE 8010.000000 60.000000 0.200876 0.095700 +dPolE 8020.000000 60.000000 0.150668 0.096458 +dPolE 8030.000000 60.000000 -0.006049 0.097229 +dPolE 8040.000000 60.000000 -0.007201 0.097184 +dPolE 8050.000000 60.000000 0.000144 0.097011 +dPolE 8060.000000 60.000000 -0.171862 0.097543 +dPolE 8070.000000 60.000000 -0.055202 0.098291 +dPolE 8080.000000 60.000000 0.167659 0.098445 +dPolE 8090.000000 60.000000 -0.197306 0.098250 +dPolE 8100.000000 60.000000 -0.097093 0.098318 +dPolE 8110.000000 60.000000 0.064757 0.098664 +dPolE 8120.000000 60.000000 0.098449 0.099254 +dPolE 8130.000000 60.000000 0.065933 0.099234 +dPolE 8140.000000 60.000000 0.101959 0.098630 +dPolE 8150.000000 60.000000 0.020447 0.099024 +dPolE 8160.000000 60.000000 -0.125884 0.100039 +dPolE 8170.000000 60.000000 -0.038215 0.100350 +dPolE 8180.000000 60.000000 0.026441 0.100006 +dPolE 8190.000000 60.000000 0.103361 0.099840 +dPolE 8200.000000 60.000000 0.067673 0.100325 +dPolE 8210.000000 60.000000 0.188639 0.100619 +dPolE 8220.000000 60.000000 -0.079886 0.101264 +dPolE 8230.000000 60.000000 -0.019543 0.100896 +dPolE 8240.000000 60.000000 -0.323460 0.101195 +dPolE 8250.000000 60.000000 -0.062173 0.101587 +dPolE 8260.000000 60.000000 -0.019745 0.102158 +dPolE 8270.000000 60.000000 0.245653 0.101517 +dPolE 8280.000000 60.000000 0.070946 0.101339 +dPolE 8290.000000 60.000000 0.090145 0.101424 +dPolE 8300.000000 60.000000 0.060208 0.102416 +dPolE 8310.000000 60.000000 0.051519 0.103095 +dPolE 8320.000000 60.000000 -0.053318 0.102962 +dPolE 8330.000000 60.000000 0.082070 0.102195 +dPolE 8340.000000 60.000000 0.068009 0.102031 +dPolE 8350.000000 60.000000 -0.072490 0.102739 +dPolE 8360.000000 60.000000 -0.033713 0.103541 +dPolE 8370.000000 60.000000 0.074254 0.103155 +dPolE 8380.000000 60.000000 0.144977 0.102833 +dPolE 8390.000000 60.000000 0.202452 0.103031 +dPolE 8400.000000 60.000000 0.012331 0.104179 +dPolE 8410.000000 60.000000 0.200689 0.104367 +dPolE 8420.000000 60.000000 0.096518 0.104282 +dPolE 8430.000000 60.000000 -0.003237 0.104076 +dPolE 8440.000000 60.000000 -0.044137 0.104156 +dPolE 8450.000000 60.000000 -0.033162 0.104716 +dPolE 8460.000000 60.000000 -0.032217 0.105037 +dPolE 8470.000000 60.000000 0.009517 0.104752 +dPolE 8480.000000 60.000000 -0.010382 0.104356 +dPolE 8490.000000 60.000000 0.026214 0.105118 +dPolE 8500.000000 60.000000 0.004031 0.106978 +dPolE 8510.000000 60.000000 -0.007056 0.107609 +dPolE 8520.000000 60.000000 0.196748 0.105109 +dPolE 8530.000000 60.000000 0.115836 0.102858 +dPolE 8540.000000 60.000000 0.068295 0.102658 +dPolE 8550.000000 60.000000 0.208107 0.103915 +dPolE 8560.000000 60.000000 0.189266 0.105062 +dPolE 8570.000000 60.000000 0.122676 0.105475 +dPolE 8580.000000 60.000000 0.291119 0.104843 +dPolE 8590.000000 60.000000 0.163401 0.104726 +dPolE 8600.000000 60.000000 0.122800 0.105118 +dPolE 8610.000000 60.000000 0.203327 0.105899 +dPolE 8620.000000 60.000000 0.254595 0.106261 +dPolE 8630.000000 60.000000 0.100387 0.106450 +dPolE 8640.000000 60.000000 -0.143099 0.106129 +dPolE 8650.000000 60.000000 0.270118 0.105228 +dPolE 8660.000000 60.000000 0.211600 0.105826 +dPolE 8670.000000 60.000000 0.081225 0.106790 +dPolE 8680.000000 60.000000 0.156393 0.106803 +dPolE 8690.000000 60.000000 0.284784 0.106470 +dPolE 8700.000000 60.000000 -0.093330 0.106707 +dPolE 8710.000000 60.000000 -0.164886 0.107024 +dPolE 8720.000000 60.000000 -0.261765 0.107757 +dPolE 8730.000000 60.000000 0.125406 0.107223 +dPolE 8740.000000 60.000000 0.037430 0.106917 +dPolE 8750.000000 60.000000 0.174532 0.106488 +dPolE 8760.000000 60.000000 0.075162 0.106671 +dPolE 8770.000000 60.000000 -0.180023 0.107611 +dPolE 8780.000000 60.000000 -0.069375 0.108014 +dPolE 8790.000000 60.000000 -0.141326 0.107933 +dPolE 8800.000000 60.000000 -0.156172 0.107840 +dPolE 8810.000000 60.000000 -0.154611 0.108276 +dPolE 8820.000000 60.000000 0.023752 0.108463 +dPolE 8830.000000 60.000000 -0.266025 0.109257 +dPolE 8840.000000 60.000000 -0.063078 0.109034 +dPolE 8850.000000 60.000000 0.004317 0.109190 +dPolE 8860.000000 60.000000 0.198353 0.108699 +dPolE 8870.000000 60.000000 0.202025 0.108369 +dPolE 8880.000000 60.000000 0.115495 0.108537 +dPolE 8890.000000 60.000000 0.291885 0.108811 +dPolE 8900.000000 60.000000 0.071418 0.109478 +dPolE 8910.000000 60.000000 0.148548 0.109585 +dPolE 8920.000000 60.000000 0.017649 0.109749 +dPolE 8930.000000 60.000000 0.140426 0.109569 +dPolE 8940.000000 60.000000 0.074536 0.109818 +dPolE 8950.000000 60.000000 0.054627 0.110177 +dPolE 8960.000000 60.000000 0.124845 0.110413 +dPolE 8970.000000 60.000000 -0.075502 0.110925 +dPolE 8980.000000 60.000000 0.072488 0.110964 +dPolE 8990.000000 60.000000 0.130981 0.110702 +dPolE 9000.000000 60.000000 0.281172 0.110894 +dPolE 9010.000000 60.000000 0.076178 0.111510 +dPolE 9020.000000 60.000000 -0.020340 0.111776 +dPolE 9030.000000 60.000000 0.102377 0.112034 +dPolE 9040.000000 60.000000 0.084048 0.112130 +dPolE 9050.000000 60.000000 -0.022555 0.112106 +dPolE 9060.000000 60.000000 0.067964 0.112343 +dPolE 9070.000000 60.000000 0.070370 0.112772 +dPolE 9080.000000 60.000000 0.198317 0.113183 +dPolE 9090.000000 60.000000 0.120366 0.113825 +dPolE 9100.000000 60.000000 -0.114567 0.114205 +dPolE 9110.000000 60.000000 0.024088 0.113704 +dPolE 9120.000000 60.000000 0.114906 0.113853 +dPolE 9130.000000 60.000000 0.182992 0.114255 +dPolE 9140.000000 60.000000 0.029897 0.115341 +dPolE 9150.000000 60.000000 -0.125045 0.115547 +dPolE 9160.000000 60.000000 -0.174434 0.115192 +dPolE 9170.000000 60.000000 0.049018 0.114665 +dPolE 9180.000000 60.000000 0.208448 0.114584 +dPolE 9190.000000 60.000000 0.044254 0.115449 +dPolE 9200.000000 60.000000 0.031514 0.116349 +dPolE 9210.000000 60.000000 0.061862 0.116778 +dPolE 9220.000000 60.000000 -0.250280 0.117910 +dPolE 9230.000000 60.000000 -0.043079 0.117845 +dPolE 9240.000000 60.000000 -0.140478 0.118150 +dPolE 9250.000000 60.000000 0.050646 0.118089 +dPolE 9260.000000 60.000000 0.046491 0.118596 +dPolE 9270.000000 60.000000 0.076549 0.119207 +dPolE 9280.000000 60.000000 -0.012797 0.119917 +dPolE 9290.000000 60.000000 -0.055536 0.120313 +dPolE 9300.000000 60.000000 0.023674 0.120407 +dPolE 9310.000000 60.000000 0.039636 0.120626 +dPolE 9320.000000 60.000000 -0.105306 0.121003 +dPolE 9330.000000 60.000000 0.016215 0.121262 +dPolE 9340.000000 60.000000 0.089493 0.121605 +dPolE 9350.000000 60.000000 0.197735 0.122196 +dPolE 9360.000000 60.000000 0.228468 0.122872 +dPolE 9370.000000 60.000000 0.156132 0.123387 +dPolE 9380.000000 60.000000 0.058850 0.123650 +dPolE 9390.000000 60.000000 0.257087 0.123568 +dPolE 9400.000000 60.000000 -0.042116 0.124992 +dPolE 9410.000000 60.000000 -0.106206 0.125761 +dPolE 9420.000000 60.000000 0.115229 0.126118 +dPolE 9430.000000 60.000000 0.047629 0.126809 +dPolE 9440.000000 60.000000 0.124309 0.126843 +dPolE 9450.000000 60.000000 0.152086 0.127261 +dPolE 9460.000000 60.000000 0.289476 0.127642 +dPolE 9470.000000 60.000000 0.157019 0.128621 +dPolE 9480.000000 60.000000 0.079362 0.129422 +dPolE 9490.000000 60.000000 -0.051359 0.130428 +dPolE 9500.000000 60.000000 0.078019 0.130779 +dPolE 9510.000000 60.000000 -0.421694 0.132152 +dPolE 9520.000000 60.000000 -0.361005 0.132452 +dPolE 9530.000000 60.000000 0.348417 0.132006 +dPolE 9540.000000 60.000000 -0.157572 0.133928 +dPolE 9550.000000 60.000000 0.051605 0.134605 +dPolE 9560.000000 60.000000 -0.044595 0.135022 +dPolE 9570.000000 60.000000 0.189181 0.134891 +dPolE 9580.000000 60.000000 0.065294 0.135403 +dPolE 9590.000000 60.000000 -0.100555 0.136280 +dPolE 9600.000000 60.000000 -0.014758 0.136830 +dPolE 9610.000000 60.000000 -0.151899 0.137603 +dPolE 9620.000000 60.000000 -0.204871 0.138527 +dPolE 9630.000000 60.000000 0.091369 0.138686 +dPolE 9640.000000 60.000000 0.130819 0.139145 +dPolE 9650.000000 60.000000 0.050353 0.140042 +dPolE 9660.000000 60.000000 0.000318 0.140604 +dPolE 9670.000000 60.000000 0.002702 0.141725 +dPolE 9680.000000 60.000000 0.140764 0.142606 +dPolE 9690.000000 60.000000 -0.098117 0.143705 +dPolE 9700.000000 60.000000 -0.098137 0.144227 +dPolE 9710.000000 60.000000 0.098880 0.144772 +dPolE 9720.000000 60.000000 0.137793 0.145622 +dPolE 9730.000000 60.000000 -0.034847 0.146951 +dPolE 9740.000000 60.000000 -0.107491 0.148091 +dPolE 9750.000000 60.000000 0.461376 0.147500 +dPolE 9760.000000 60.000000 0.547559 0.148233 +dPolE 9770.000000 60.000000 0.047748 0.150256 +dPolE 9780.000000 60.000000 0.076258 0.150961 +dPolE 9790.000000 60.000000 -0.183638 0.152436 +dPolE 9800.000000 60.000000 0.160299 0.152895 +dPolE 9810.000000 60.000000 -0.016715 0.154572 +dPolE 9820.000000 60.000000 -0.127642 0.156178 +dPolE 9830.000000 60.000000 -0.110777 0.156781 +dPolE 9840.000000 60.000000 -0.351283 0.158207 +dPolE 9850.000000 60.000000 0.146068 0.158417 +dPolE 9860.000000 60.000000 -0.030010 0.159784 +dPolE 9870.000000 60.000000 0.314209 0.160613 +dPolE 9880.000000 60.000000 0.213414 0.162150 +dPolE 9890.000000 60.000000 0.659047 0.162299 +dPolE 9900.000000 60.000000 0.124145 0.164228 +dPolE 9910.000000 60.000000 0.315500 0.165022 +dPolE 9920.000000 60.000000 -0.211468 0.167796 +dPolE 9930.000000 60.000000 -0.376168 0.170062 +dPolE 9940.000000 60.000000 0.001004 0.170754 +dPolE 9950.000000 60.000000 0.155815 0.171606 +dPolE 9960.000000 60.000000 0.360583 0.172823 +dPolE 9970.000000 60.000000 -0.071734 0.175018 +dPolE 9980.000000 60.000000 0.133678 0.176588 +dPolE 9990.000000 60.000000 0.249574 0.178191 +dPolE 10000.000000 60.000000 -0.090853 0.180845 +dPolE 10025.000000 60.000000 -0.028233 0.088712 +dPolE 10050.000000 60.000000 0.014940 0.086575 +dPolE 10075.000000 60.000000 0.015081 0.084023 +dPolE 10100.000000 60.000000 0.030145 0.082046 +dPolE 10125.000000 60.000000 0.046799 0.080320 +dPolE 10150.000000 60.000000 0.012352 0.078248 +dPolE 10175.000000 60.000000 0.022360 0.076375 +dPolE 10200.000000 60.000000 0.076728 0.074683 +dPolE 10225.000000 60.000000 -0.007871 0.072883 +dPolE 10250.000000 60.000000 -0.042962 0.071215 +dPolE 10275.000000 60.000000 0.074815 0.069777 +dPolE 10300.000000 60.000000 0.127414 0.068002 +dPolE 10325.000000 60.000000 0.141427 0.066187 +dPolE 10350.000000 60.000000 0.064941 0.064799 +dPolE 10375.000000 60.000000 -0.021832 0.063494 +dPolE 10400.000000 60.000000 -0.117755 0.062271 +dPolE 10425.000000 60.000000 0.017583 0.060935 +dPolE 10450.000000 60.000000 0.104446 0.059669 +dPolE 10475.000000 60.000000 0.046771 0.058525 +dPolE 10500.000000 60.000000 0.062471 0.057412 +dPolE 10525.000000 60.000000 0.085603 0.056355 +dPolE 10550.000000 60.000000 -0.016106 0.055464 +dPolE 10575.000000 60.000000 -0.035527 0.054614 +dPolE 10600.000000 60.000000 0.012084 0.053798 +dPolE 10625.000000 60.000000 0.008438 0.052731 +dPolE 10650.000000 60.000000 -0.010711 0.051807 +dPolE 10675.000000 60.000000 -0.052322 0.051109 +dPolE 10700.000000 60.000000 0.010189 0.050147 +dPolE 10725.000000 60.000000 0.095516 0.049207 +dPolE 10750.000000 60.000000 0.158023 0.048582 +dPolE 10775.000000 60.000000 0.124863 0.047736 +dPolE 10800.000000 60.000000 0.031998 0.046763 +dPolE 10825.000000 60.000000 0.023401 0.046072 +dPolE 10850.000000 60.000000 0.013085 0.045335 +dPolE 10875.000000 60.000000 0.000451 0.044531 +dPolE 10900.000000 60.000000 0.015825 0.043918 +dPolE 10925.000000 60.000000 0.022707 0.043298 +dPolE 10950.000000 60.000000 -0.008086 0.042547 +dPolE 10975.000000 60.000000 0.036824 0.041929 +dPolE 11000.000000 60.000000 0.102091 0.041390 +dPolE 11025.000000 60.000000 0.030784 0.040955 +dPolE 11050.000000 60.000000 0.014113 0.040557 +dPolE 11075.000000 60.000000 0.047790 0.040194 +dPolE 11100.000000 60.000000 -0.064074 0.039653 +dPolE 11125.000000 60.000000 -0.107266 0.039206 +dPolE 11150.000000 60.000000 -0.009972 0.038937 +dPolE 11175.000000 60.000000 0.053561 0.038586 +dPolE 11200.000000 60.000000 0.092227 0.038255 +dPolE 11225.000000 60.000000 0.071701 0.038084 +dPolE 11250.000000 60.000000 0.030383 0.037836 +dPolE 11275.000000 60.000000 -0.018371 0.037552 +dPolE 11300.000000 60.000000 0.046223 0.037474 +dPolE 11325.000000 60.000000 0.084498 0.037307 +dPolE 11350.000000 60.000000 0.092815 0.037041 +dPolE 11375.000000 60.000000 0.049560 0.036926 +dPolE 11400.000000 60.000000 0.019528 0.036801 +dPolE 11425.000000 60.000000 0.030803 0.036614 +dPolE 11450.000000 60.000000 0.022552 0.036438 +dPolE 11475.000000 60.000000 0.002368 0.036252 +dPolE 11500.000000 60.000000 -0.043325 0.035994 +dPolE 11525.000000 60.000000 -0.004360 0.035731 +dPolE 11550.000000 60.000000 0.086785 0.035467 +dPolE 11575.000000 60.000000 0.069320 0.035322 +dPolE 11600.000000 60.000000 0.062252 0.035066 +dPolE 11625.000000 60.000000 0.067226 0.034682 +dPolE 11650.000000 60.000000 0.019173 0.034492 +dPolE 11675.000000 60.000000 -0.005610 0.034281 +dPolE 11700.000000 60.000000 0.031190 0.033974 +dPolE 11725.000000 60.000000 0.025594 0.033786 +dPolE 11750.000000 60.000000 0.019437 0.033598 +dPolE 11775.000000 60.000000 0.069628 0.033240 +dPolE 11800.000000 60.000000 0.087318 0.032927 +dPolE 11825.000000 60.000000 0.087156 0.032644 +dPolE 11850.000000 60.000000 0.113966 0.032358 +dPolE 11875.000000 60.000000 0.084753 0.032111 +dPolE 11900.000000 60.000000 -0.001340 0.031900 +dPolE 11925.000000 60.000000 0.014821 0.031602 +dPolE 11950.000000 60.000000 0.030316 0.031338 +dPolE 11975.000000 60.000000 0.031007 0.031144 +dPolE 12000.000000 60.000000 0.039868 0.030933 +dPolE 12025.000000 60.000000 0.037720 0.030722 +dPolE 12050.000000 60.000000 -0.005148 0.030522 +dPolE 12075.000000 60.000000 0.029793 0.030361 +dPolE 12100.000000 60.000000 0.088235 0.030213 +dPolE 12125.000000 60.000000 0.055161 0.030027 +dPolE 12150.000000 60.000000 0.022252 0.029853 +dPolE 12175.000000 60.000000 -0.010238 0.029688 +dPolE 12200.000000 60.000000 0.056419 0.029598 +dPolE 12225.000000 60.000000 0.091147 0.029499 +dPolE 12250.000000 60.000000 0.086804 0.029388 +dPolE 12275.000000 60.000000 0.070925 0.029359 +dPolE 12300.000000 60.000000 0.066228 0.029357 +dPolE 12325.000000 60.000000 0.086676 0.029392 +dPolE 12350.000000 60.000000 0.094486 0.029312 +dPolE 12375.000000 60.000000 0.093163 0.029264 +dPolE 12400.000000 60.000000 0.072533 0.029443 +dPolE 12425.000000 60.000000 0.075006 0.029376 +dPolE 12450.000000 60.000000 0.091089 0.029224 +dPolE 12475.000000 60.000000 0.123895 0.029328 +dPolE 12500.000000 60.000000 0.074028 0.029253 +dPolE 12525.000000 60.000000 -0.033483 0.029044 +dPolE 12550.000000 60.000000 0.109077 0.028908 +dPolE 12575.000000 60.000000 0.144413 0.028782 +dPolE 12600.000000 60.000000 0.058437 0.028667 +dPolE 12625.000000 60.000000 0.075966 0.028589 +dPolE 12650.000000 60.000000 0.094696 0.028477 +dPolE 12675.000000 60.000000 0.099515 0.028305 +dPolE 12700.000000 60.000000 0.111867 0.028108 +dPolE 12725.000000 60.000000 0.105543 0.027971 +dPolE 12750.000000 60.000000 0.045552 0.028005 +dPolE 12775.000000 60.000000 0.094243 0.027830 +dPolE 12800.000000 60.000000 0.157057 0.027607 +dPolE 12825.000000 60.000000 0.105630 0.027504 +dPolE 12850.000000 60.000000 0.066455 0.027389 +dPolE 12875.000000 60.000000 0.035887 0.027270 +dPolE 12900.000000 60.000000 0.020410 0.027179 +dPolE 12925.000000 60.000000 0.038229 0.027030 +dPolE 12950.000000 60.000000 0.081856 0.026836 +dPolE 12975.000000 60.000000 0.032553 0.026781 +dPolE 13000.000000 60.000000 0.050015 0.026686 +dPolE 13025.000000 60.000000 0.142408 0.026544 +dPolE 13050.000000 60.000000 0.133255 0.026411 +dPolE 13075.000000 60.000000 0.109717 0.026308 +dPolE 13100.000000 60.000000 0.075806 0.026250 +dPolE 13125.000000 60.000000 0.069058 0.026184 +dPolE 13150.000000 60.000000 0.072042 0.026109 +dPolE 13175.000000 60.000000 0.085737 0.026015 +dPolE 13200.000000 60.000000 0.057886 0.025955 +dPolE 13225.000000 60.000000 0.042949 0.025919 +dPolE 13250.000000 60.000000 0.108315 0.025928 +dPolE 13275.000000 60.000000 0.092707 0.025912 +dPolE 13300.000000 60.000000 0.051419 0.025897 +dPolE 13325.000000 60.000000 0.054616 0.025934 +dPolE 13350.000000 60.000000 0.042643 0.025981 +dPolE 13375.000000 60.000000 0.027771 0.026028 +dPolE 13400.000000 60.000000 0.067514 0.026023 +dPolE 13425.000000 60.000000 0.070408 0.026081 +dPolE 13450.000000 60.000000 0.046387 0.026191 +dPolE 13475.000000 60.000000 0.066872 0.026340 +dPolE 13500.000000 60.000000 0.069183 0.026514 +dPolE 13525.000000 60.000000 0.053115 0.026712 +dPolE 13550.000000 60.000000 0.085845 0.027053 +dPolE 13575.000000 60.000000 0.102159 0.027420 +dPolE 13600.000000 60.000000 0.095144 0.027814 +dPolE 13625.000000 60.000000 0.075833 0.028055 +dPolE 13650.000000 60.000000 0.055061 0.028299 +dPolE 13675.000000 60.000000 0.033624 0.028574 +dPolE 13700.000000 60.000000 0.048691 0.029233 +dPolE 13725.000000 60.000000 0.057255 0.030363 +dPolE 13750.000000 60.000000 0.037050 0.032445 +dPolE 13775.000000 60.000000 0.038123 0.035376 +dPolE 13800.000000 60.000000 0.041390 0.038457 +dPolE 13825.000000 60.000000 0.036030 0.040331 +dPolE 13850.000000 60.000000 0.065329 0.039996 +dPolE 13875.000000 60.000000 0.078271 0.038814 +dPolE 13900.000000 60.000000 0.011828 0.037206 +dPolE 13925.000000 60.000000 0.009903 0.036180 +dPolE 13950.000000 60.000000 0.036891 0.035197 +dPolE 13975.000000 60.000000 0.084147 0.033542 +dPolE 14000.000000 60.000000 0.101716 0.032550 +dPolE 14025.000000 60.000000 0.101503 0.031837 +dPolE 14050.000000 60.000000 0.076020 0.031055 +dPolE 14075.000000 60.000000 0.085887 0.030504 +dPolE 14100.000000 60.000000 0.100080 0.030066 +dPolE 14125.000000 60.000000 0.005614 0.029531 +dPolE 14150.000000 60.000000 -0.006844 0.029157 +dPolE 14175.000000 60.000000 0.033111 0.028881 +dPolE 14200.000000 60.000000 0.073260 0.028565 +dPolE 14225.000000 60.000000 0.077547 0.028376 +dPolE 14250.000000 60.000000 0.056470 0.028275 +dPolE 14275.000000 60.000000 0.060366 0.028095 +dPolE 14300.000000 60.000000 0.077886 0.027963 +dPolE 14325.000000 60.000000 0.105138 0.027872 +dPolE 14350.000000 60.000000 0.064205 0.027812 +dPolE 14375.000000 60.000000 0.079985 0.027723 +dPolE 14400.000000 60.000000 0.149029 0.027607 +dPolE 14425.000000 60.000000 0.108470 0.027645 +dPolE 14450.000000 60.000000 0.099185 0.027600 +dPolE 14475.000000 60.000000 0.122440 0.027466 +dPolE 14500.000000 60.000000 0.094435 0.027449 +dPolE 14525.000000 60.000000 0.084937 0.027472 +dPolE 14550.000000 60.000000 0.097289 0.027536 +dPolE 14575.000000 60.000000 0.131121 0.027418 +dPolE 14600.000000 60.000000 0.117873 0.027416 +dPolE 14625.000000 60.000000 0.046516 0.027564 +dPolE 14650.000000 60.000000 0.072603 0.027477 +dPolE 14675.000000 60.000000 0.067111 0.027492 +dPolE 14700.000000 60.000000 0.013863 0.027656 +dPolE 14725.000000 60.000000 0.043866 0.027568 +dPolE 14750.000000 60.000000 0.084915 0.027553 +dPolE 14775.000000 60.000000 0.133137 0.027657 +dPolE 14800.000000 60.000000 0.097319 0.027657 +dPolE 14825.000000 60.000000 0.097904 0.027652 +dPolE 14850.000000 60.000000 0.157144 0.027649 +dPolE 14875.000000 60.000000 0.113022 0.027706 +dPolE 14900.000000 60.000000 0.096779 0.027787 +dPolE 14925.000000 60.000000 0.131541 0.027897 +dPolE 14950.000000 60.000000 0.070906 0.027905 +dPolE 14975.000000 60.000000 0.077865 0.027967 +dPolE 15000.000000 60.000000 0.190921 0.028116 +dPolE 15025.000000 60.000000 0.119457 0.028096 +dPolE 15050.000000 60.000000 0.107327 0.028133 +dPolE 15075.000000 60.000000 0.198812 0.028270 +dPolE 15100.000000 60.000000 0.138324 0.028275 +dPolE 15125.000000 60.000000 0.118994 0.028293 +dPolE 15150.000000 60.000000 0.171684 0.028343 +dPolE 15175.000000 60.000000 0.128593 0.028414 +dPolE 15200.000000 60.000000 0.113702 0.028507 +dPolE 15225.000000 60.000000 0.144703 0.028627 +dPolE 15250.000000 60.000000 0.100057 0.028697 +dPolE 15275.000000 60.000000 0.098524 0.028796 +dPolE 15300.000000 60.000000 0.156220 0.028937 +dPolE 15325.000000 60.000000 0.080271 0.028991 +dPolE 15350.000000 60.000000 0.070001 0.029069 +dPolE 15375.000000 60.000000 0.143262 0.029179 +dPolE 15400.000000 60.000000 0.117103 0.029245 +dPolE 15425.000000 60.000000 0.129355 0.029369 +dPolE 15450.000000 60.000000 0.186493 0.029560 +dPolE 15475.000000 60.000000 0.080729 0.029673 +dPolE 15500.000000 60.000000 0.051417 0.029791 +dPolE 15525.000000 60.000000 0.097866 0.029913 +dPolE 15550.000000 60.000000 0.072962 0.029906 +dPolE 15575.000000 60.000000 0.076957 0.030006 +dPolE 15600.000000 60.000000 0.105694 0.030198 +dPolE 15625.000000 60.000000 0.108342 0.030271 +dPolE 15650.000000 60.000000 0.146007 0.030389 +dPolE 15675.000000 60.000000 0.204098 0.030536 +dPolE 15700.000000 60.000000 0.161623 0.030606 +dPolE 15725.000000 60.000000 0.120567 0.030744 +dPolE 15750.000000 60.000000 0.087784 0.030925 +dPolE 15775.000000 60.000000 0.120695 0.031049 +dPolE 15800.000000 60.000000 0.166283 0.031162 +dPolE 15825.000000 60.000000 0.201194 0.031288 +dPolE 15850.000000 60.000000 0.121909 0.031527 +dPolE 15875.000000 60.000000 0.102598 0.031672 +dPolE 15900.000000 60.000000 0.102780 0.031787 +dPolE 15925.000000 60.000000 0.048238 0.031993 +dPolE 15950.000000 60.000000 0.082709 0.032185 +dPolE 15975.000000 60.000000 0.140983 0.032368 +dPolE 16000.000000 60.000000 0.146004 0.032537 +dPolE 16025.000000 60.000000 0.126116 0.032688 +dPolE 16050.000000 60.000000 0.107963 0.032860 +dPolE 16075.000000 60.000000 0.119102 0.033108 +dPolE 16100.000000 60.000000 0.143339 0.033310 +dPolE 16125.000000 60.000000 0.145674 0.033497 +dPolE 16150.000000 60.000000 0.092035 0.033682 +dPolE 16175.000000 60.000000 0.102580 0.033954 +dPolE 16200.000000 60.000000 0.100219 0.034228 +dPolE 16225.000000 60.000000 0.053519 0.034473 +dPolE 16250.000000 60.000000 0.089997 0.034692 +dPolE 16275.000000 60.000000 0.100000 0.034953 +dPolE 16300.000000 60.000000 0.058810 0.035281 +dPolE 16325.000000 60.000000 0.077632 0.035555 +dPolE 16350.000000 60.000000 0.107098 0.035873 +dPolE 16375.000000 60.000000 0.144228 0.036246 +dPolE 16400.000000 60.000000 0.103292 0.036522 +dPolE 16425.000000 60.000000 0.071317 0.036991 +dPolE 16450.000000 60.000000 0.050178 0.037606 +dPolE 16475.000000 60.000000 0.073654 0.037844 +dPolE 16500.000000 60.000000 0.036698 0.038411 +dPolE 16525.000000 60.000000 -0.026800 0.039193 +dPolE 16550.000000 60.000000 0.007888 0.039853 +dPolE 16575.000000 60.000000 0.016790 0.040873 +dPolE 16600.000000 60.000000 0.017287 0.042136 +dPolE 16625.000000 60.000000 0.038199 0.043555 +dPolE 16650.000000 60.000000 0.014248 0.046034 +dPolE 16675.000000 60.000000 -0.026598 0.049294 +dPolE 16700.000000 60.000000 -0.060107 0.053282 +dPolE 16725.000000 60.000000 -0.048133 0.059218 +dPolE 16750.000000 60.000000 -0.058413 0.066913 +dPolE 16775.000000 60.000000 -0.151986 0.076545 +dPolE 16800.000000 60.000000 -0.205978 0.089329 +dPolE 16825.000000 60.000000 -0.249816 0.104967 +dPolE 16850.000000 60.000000 -0.273560 0.122713 +dPolE 16875.000000 60.000000 -0.074837 0.143036 +dPolE 16900.000000 60.000000 0.029456 0.167441 +dPolE 16925.000000 60.000000 -0.034664 0.195963 +dPolE 16950.000000 60.000000 -0.265935 0.227794 +dPolE 16975.000000 60.000000 -0.064700 0.261015 +dPolE 17000.000000 60.000000 0.360135 0.296375 +dPolE 1930.000000 70.000000 1.591587 0.163632 +dPolE 1940.000000 70.000000 1.486767 0.149081 +dPolE 1950.000000 70.000000 1.333902 0.137545 +dPolE 1960.000000 70.000000 1.070788 0.130336 +dPolE 1970.000000 70.000000 1.077825 0.123873 +dPolE 1980.000000 70.000000 0.958066 0.118861 +dPolE 1990.000000 70.000000 1.018832 0.114831 +dPolE 2000.000000 70.000000 1.112433 0.111053 +dPolE 2010.000000 70.000000 1.441479 0.107226 +dPolE 2020.000000 70.000000 1.533061 0.103793 +dPolE 2030.000000 70.000000 1.371384 0.100762 +dPolE 2040.000000 70.000000 1.572653 0.097563 +dPolE 2050.000000 70.000000 1.712360 0.094545 +dPolE 2060.000000 70.000000 1.548488 0.091897 +dPolE 2070.000000 70.000000 1.635258 0.089105 +dPolE 2080.000000 70.000000 1.577953 0.086613 +dPolE 2090.000000 70.000000 1.249338 0.084484 +dPolE 2100.000000 70.000000 1.343151 0.082142 +dPolE 2110.000000 70.000000 1.241845 0.080339 +dPolE 2120.000000 70.000000 1.026773 0.078736 +dPolE 2130.000000 70.000000 1.197023 0.076841 +dPolE 2140.000000 70.000000 1.211303 0.075314 +dPolE 2150.000000 70.000000 1.088457 0.074034 +dPolE 2160.000000 70.000000 0.980392 0.072874 +dPolE 2170.000000 70.000000 0.992837 0.071712 +dPolE 2180.000000 70.000000 1.047034 0.070482 +dPolE 2190.000000 70.000000 0.978452 0.069300 +dPolE 2200.000000 70.000000 0.953325 0.068212 +dPolE 2210.000000 70.000000 0.926915 0.067102 +dPolE 2220.000000 70.000000 0.947736 0.065975 +dPolE 2230.000000 70.000000 0.856304 0.065026 +dPolE 2240.000000 70.000000 0.853816 0.064099 +dPolE 2250.000000 70.000000 0.744544 0.063306 +dPolE 2260.000000 70.000000 0.502034 0.062655 +dPolE 2270.000000 70.000000 0.523373 0.061832 +dPolE 2280.000000 70.000000 0.593421 0.060961 +dPolE 2290.000000 70.000000 0.585471 0.060155 +dPolE 2300.000000 70.000000 0.537474 0.059440 +dPolE 2310.000000 70.000000 0.602143 0.058697 +dPolE 2320.000000 70.000000 0.624241 0.058015 +dPolE 2330.000000 70.000000 0.649316 0.057387 +dPolE 2340.000000 70.000000 0.666461 0.056794 +dPolE 2350.000000 70.000000 0.575648 0.056315 +dPolE 2360.000000 70.000000 0.615345 0.055808 +dPolE 2370.000000 70.000000 0.778876 0.055239 +dPolE 2380.000000 70.000000 0.659276 0.054874 +dPolE 2390.000000 70.000000 0.561927 0.054608 +dPolE 2400.000000 70.000000 0.546119 0.054332 +dPolE 2410.000000 70.000000 0.503256 0.054099 +dPolE 2420.000000 70.000000 0.574871 0.053822 +dPolE 2430.000000 70.000000 0.547889 0.053707 +dPolE 2440.000000 70.000000 0.585506 0.053562 +dPolE 2450.000000 70.000000 0.486071 0.053492 +dPolE 2460.000000 70.000000 0.474114 0.053428 +dPolE 2470.000000 70.000000 0.468010 0.053403 +dPolE 2480.000000 70.000000 0.516758 0.053355 +dPolE 2490.000000 70.000000 0.491045 0.053362 +dPolE 2500.000000 70.000000 0.470022 0.053443 +dPolE 2510.000000 70.000000 0.418927 0.053587 +dPolE 2520.000000 70.000000 0.310533 0.053697 +dPolE 2530.000000 70.000000 0.453910 0.053747 +dPolE 2540.000000 70.000000 0.442638 0.053992 +dPolE 2550.000000 70.000000 0.362023 0.054257 +dPolE 2560.000000 70.000000 0.481390 0.054475 +dPolE 2570.000000 70.000000 0.501635 0.054785 +dPolE 2580.000000 70.000000 0.401676 0.055197 +dPolE 2590.000000 70.000000 0.413336 0.055582 +dPolE 2600.000000 70.000000 0.478697 0.055979 +dPolE 2610.000000 70.000000 0.551623 0.056384 +dPolE 2620.000000 70.000000 0.523741 0.056888 +dPolE 2630.000000 70.000000 0.506789 0.057423 +dPolE 2640.000000 70.000000 0.441520 0.058041 +dPolE 2650.000000 70.000000 0.526312 0.058598 +dPolE 2660.000000 70.000000 0.467841 0.059331 +dPolE 2670.000000 70.000000 0.376179 0.060075 +dPolE 2680.000000 70.000000 0.405992 0.060706 +dPolE 2690.000000 70.000000 0.445450 0.061359 +dPolE 2700.000000 70.000000 0.344465 0.062138 +dPolE 2710.000000 70.000000 0.440512 0.062826 +dPolE 2720.000000 70.000000 0.472100 0.063572 +dPolE 2730.000000 70.000000 0.481494 0.064279 +dPolE 2740.000000 70.000000 0.511283 0.064988 +dPolE 2750.000000 70.000000 0.483124 0.065736 +dPolE 2760.000000 70.000000 0.417591 0.066540 +dPolE 2770.000000 70.000000 0.483424 0.067376 +dPolE 2780.000000 70.000000 0.473146 0.067998 +dPolE 2790.000000 70.000000 0.497708 0.068508 +dPolE 2800.000000 70.000000 0.487471 0.069131 +dPolE 2810.000000 70.000000 0.417615 0.069879 +dPolE 2820.000000 70.000000 0.469086 0.070543 +dPolE 2830.000000 70.000000 0.373708 0.071337 +dPolE 2840.000000 70.000000 0.293579 0.072053 +dPolE 2850.000000 70.000000 0.234880 0.072905 +dPolE 2860.000000 70.000000 0.264087 0.073724 +dPolE 2870.000000 70.000000 0.357074 0.074382 +dPolE 2880.000000 70.000000 0.288403 0.075299 +dPolE 2890.000000 70.000000 0.259216 0.076310 +dPolE 2900.000000 70.000000 0.346604 0.077206 +dPolE 2910.000000 70.000000 0.285471 0.078238 +dPolE 2920.000000 70.000000 0.454006 0.079073 +dPolE 2930.000000 70.000000 0.594017 0.079865 +dPolE 2940.000000 70.000000 0.452853 0.080861 +dPolE 2950.000000 70.000000 0.267983 0.081938 +dPolE 2960.000000 70.000000 0.384104 0.082753 +dPolE 2970.000000 70.000000 0.445833 0.083538 +dPolE 2980.000000 70.000000 0.368231 0.084520 +dPolE 2990.000000 70.000000 0.585267 0.085271 +dPolE 3000.000000 70.000000 0.416431 0.086378 +dPolE 3010.000000 70.000000 0.244172 0.087379 +dPolE 3020.000000 70.000000 0.369141 0.088228 +dPolE 3030.000000 70.000000 0.541842 0.089164 +dPolE 3040.000000 70.000000 0.497276 0.090252 +dPolE 3050.000000 70.000000 0.456443 0.091413 +dPolE 3060.000000 70.000000 0.462562 0.092541 +dPolE 3070.000000 70.000000 0.272143 0.093839 +dPolE 3080.000000 70.000000 0.164843 0.095072 +dPolE 3090.000000 70.000000 0.072588 0.096379 +dPolE 3100.000000 70.000000 0.107470 0.097404 +dPolE 3110.000000 70.000000 0.334936 0.098147 +dPolE 3120.000000 70.000000 0.242577 0.099484 +dPolE 3130.000000 70.000000 0.268817 0.100398 +dPolE 3140.000000 70.000000 0.212974 0.101480 +dPolE 3150.000000 70.000000 0.123949 0.102755 +dPolE 3160.000000 70.000000 0.161464 0.103805 +dPolE 3170.000000 70.000000 0.120928 0.104941 +dPolE 3180.000000 70.000000 0.183557 0.105854 +dPolE 3190.000000 70.000000 0.045423 0.107272 +dPolE 3200.000000 70.000000 -0.028754 0.108411 +dPolE 3210.000000 70.000000 0.202884 0.109293 +dPolE 3220.000000 70.000000 0.554721 0.110130 +dPolE 3230.000000 70.000000 0.276150 0.111556 +dPolE 3240.000000 70.000000 -0.021296 0.112998 +dPolE 3250.000000 70.000000 -0.001080 0.114270 +dPolE 3260.000000 70.000000 0.138860 0.116148 +dPolE 3270.000000 70.000000 0.196426 0.118527 +dPolE 3280.000000 70.000000 0.141591 0.120980 +dPolE 3290.000000 70.000000 0.047916 0.122908 +dPolE 3300.000000 70.000000 -0.096728 0.124789 +dPolE 3310.000000 70.000000 -0.127447 0.126690 +dPolE 3320.000000 70.000000 -0.060404 0.127932 +dPolE 3330.000000 70.000000 -0.056580 0.128914 +dPolE 3340.000000 70.000000 -0.171090 0.129985 +dPolE 3350.000000 70.000000 -0.232008 0.130902 +dPolE 3360.000000 70.000000 0.219229 0.131009 +dPolE 3370.000000 70.000000 0.171978 0.131772 +dPolE 3380.000000 70.000000 -0.180867 0.132824 +dPolE 3390.000000 70.000000 -0.356722 0.133258 +dPolE 3400.000000 70.000000 -0.022904 0.132954 +dPolE 3410.000000 70.000000 -0.062059 0.133600 +dPolE 3420.000000 70.000000 -0.020276 0.134670 +dPolE 3430.000000 70.000000 0.103516 0.135383 +dPolE 3440.000000 70.000000 -0.052374 0.136403 +dPolE 3450.000000 70.000000 -0.111517 0.137833 +dPolE 3460.000000 70.000000 -0.000185 0.138734 +dPolE 3470.000000 70.000000 0.080217 0.139827 +dPolE 3480.000000 70.000000 0.046608 0.140850 +dPolE 3490.000000 70.000000 0.076985 0.141848 +dPolE 3500.000000 70.000000 0.077537 0.142981 +dPolE 3510.000000 70.000000 -0.038206 0.144329 +dPolE 3520.000000 70.000000 0.193263 0.145037 +dPolE 3530.000000 70.000000 0.060967 0.146358 +dPolE 3540.000000 70.000000 -0.130374 0.148167 +dPolE 3550.000000 70.000000 -0.131683 0.149332 +dPolE 3560.000000 70.000000 -0.107909 0.150255 +dPolE 3570.000000 70.000000 0.031858 0.151288 +dPolE 3580.000000 70.000000 0.228718 0.152117 +dPolE 3590.000000 70.000000 -0.091194 0.153932 +dPolE 3600.000000 70.000000 0.297620 0.154187 +dPolE 3610.000000 70.000000 -0.119926 0.156110 +dPolE 3620.000000 70.000000 -0.039441 0.156726 +dPolE 3630.000000 70.000000 0.141442 0.157133 +dPolE 3640.000000 70.000000 -0.013591 0.158627 +dPolE 3650.000000 70.000000 -0.280542 0.160382 +dPolE 3660.000000 70.000000 -0.056394 0.159765 +dPolE 3670.000000 70.000000 0.221996 0.158094 +dPolE 3680.000000 70.000000 0.036209 0.158055 +dPolE 3690.000000 70.000000 -0.017949 0.158821 +dPolE 3700.000000 70.000000 0.106362 0.160331 +dPolE 3710.000000 70.000000 -0.076365 0.162545 +dPolE 3720.000000 70.000000 -0.304919 0.163658 +dPolE 3730.000000 70.000000 -0.016715 0.163952 +dPolE 3740.000000 70.000000 0.000723 0.164919 +dPolE 3750.000000 70.000000 -0.034469 0.164765 +dPolE 3760.000000 70.000000 0.190925 0.163386 +dPolE 3770.000000 70.000000 0.225634 0.163194 +dPolE 3780.000000 70.000000 0.033753 0.162419 +dPolE 3790.000000 70.000000 0.212710 0.160473 +dPolE 3800.000000 70.000000 0.148692 0.160239 +dPolE 3810.000000 70.000000 0.342735 0.161039 +dPolE 3820.000000 70.000000 0.262857 0.162059 +dPolE 3830.000000 70.000000 0.072354 0.160907 +dPolE 3840.000000 70.000000 0.117039 0.160417 +dPolE 3850.000000 70.000000 0.258889 0.161298 +dPolE 3860.000000 70.000000 0.022802 0.160602 +dPolE 3870.000000 70.000000 -0.013544 0.157938 +dPolE 3880.000000 70.000000 0.089355 0.154926 +dPolE 3890.000000 70.000000 0.149988 0.155022 +dPolE 3900.000000 70.000000 -0.000201 0.159396 +dPolE 3910.000000 70.000000 0.152504 0.163350 +dPolE 3920.000000 70.000000 0.480513 0.161231 +dPolE 3930.000000 70.000000 0.382349 0.158372 +dPolE 3940.000000 70.000000 0.297747 0.156252 +dPolE 3950.000000 70.000000 0.084431 0.155914 +dPolE 3960.000000 70.000000 0.181926 0.156960 +dPolE 3970.000000 70.000000 0.578194 0.157460 +dPolE 3980.000000 70.000000 0.282075 0.155648 +dPolE 3990.000000 70.000000 0.039786 0.153475 +dPolE 4000.000000 70.000000 0.034653 0.154271 +dPolE 4010.000000 70.000000 0.319819 0.157001 +dPolE 4020.000000 70.000000 0.466081 0.158585 +dPolE 4030.000000 70.000000 0.210992 0.158980 +dPolE 4040.000000 70.000000 0.275026 0.157318 +dPolE 4050.000000 70.000000 0.336720 0.153613 +dPolE 4060.000000 70.000000 0.377074 0.150015 +dPolE 4070.000000 70.000000 0.481910 0.150252 +dPolE 4080.000000 70.000000 0.455138 0.154312 +dPolE 4090.000000 70.000000 0.350742 0.157782 +dPolE 4100.000000 70.000000 0.060543 0.158659 +dPolE 4110.000000 70.000000 0.052516 0.158341 +dPolE 4120.000000 70.000000 0.141346 0.156012 +dPolE 4130.000000 70.000000 0.275461 0.150974 +dPolE 4140.000000 70.000000 0.029386 0.149349 +dPolE 4150.000000 70.000000 -0.038453 0.151652 +dPolE 4160.000000 70.000000 0.099878 0.152611 +dPolE 4170.000000 70.000000 0.325643 0.151583 +dPolE 4180.000000 70.000000 0.392706 0.151343 +dPolE 4190.000000 70.000000 0.091862 0.153553 +dPolE 4200.000000 70.000000 -0.292622 0.154599 +dPolE 4210.000000 70.000000 -0.035579 0.149878 +dPolE 4220.000000 70.000000 0.228127 0.144340 +dPolE 4230.000000 70.000000 0.369068 0.141014 +dPolE 4240.000000 70.000000 0.293355 0.140813 +dPolE 4250.000000 70.000000 0.085969 0.145897 +dPolE 4260.000000 70.000000 -0.001398 0.151563 +dPolE 4270.000000 70.000000 0.039642 0.150782 +dPolE 4280.000000 70.000000 0.111178 0.146099 +dPolE 4290.000000 70.000000 0.359181 0.146730 +dPolE 4300.000000 70.000000 0.170715 0.147758 +dPolE 4310.000000 70.000000 -0.300763 0.147327 +dPolE 4320.000000 70.000000 -0.003633 0.148969 +dPolE 4330.000000 70.000000 0.588404 0.149907 +dPolE 4340.000000 70.000000 0.628328 0.146233 +dPolE 4350.000000 70.000000 0.558563 0.144672 +dPolE 4360.000000 70.000000 0.306941 0.147106 +dPolE 4370.000000 70.000000 0.327173 0.147021 +dPolE 4380.000000 70.000000 0.675998 0.145259 +dPolE 4390.000000 70.000000 0.214689 0.145015 +dPolE 4400.000000 70.000000 -0.022017 0.144764 +dPolE 4410.000000 70.000000 0.296698 0.141558 +dPolE 4420.000000 70.000000 0.294059 0.136842 +dPolE 4430.000000 70.000000 0.269583 0.136150 +dPolE 4440.000000 70.000000 0.032787 0.137705 +dPolE 4450.000000 70.000000 0.000075 0.136910 +dPolE 4460.000000 70.000000 0.102685 0.135565 +dPolE 4470.000000 70.000000 0.015716 0.136359 +dPolE 4480.000000 70.000000 -0.036271 0.137056 +dPolE 4490.000000 70.000000 0.038010 0.136793 +dPolE 4500.000000 70.000000 0.194182 0.135650 +dPolE 4510.000000 70.000000 0.150745 0.135636 +dPolE 4520.000000 70.000000 0.156737 0.136046 +dPolE 4530.000000 70.000000 0.009053 0.135957 +dPolE 4540.000000 70.000000 -0.004445 0.135281 +dPolE 4550.000000 70.000000 0.375379 0.133816 +dPolE 4560.000000 70.000000 0.242737 0.132694 +dPolE 4570.000000 70.000000 0.047943 0.130943 +dPolE 4580.000000 70.000000 0.187827 0.127731 +dPolE 4590.000000 70.000000 -0.046732 0.125851 +dPolE 4600.000000 70.000000 -0.129069 0.127833 +dPolE 4610.000000 70.000000 -0.028350 0.130745 +dPolE 4620.000000 70.000000 0.012661 0.131649 +dPolE 4630.000000 70.000000 0.034983 0.128464 +dPolE 4640.000000 70.000000 0.011437 0.123678 +dPolE 4650.000000 70.000000 -0.144683 0.122280 +dPolE 4660.000000 70.000000 0.005674 0.123551 +dPolE 4670.000000 70.000000 -0.136371 0.126152 +dPolE 4680.000000 70.000000 -0.105499 0.126971 +dPolE 4690.000000 70.000000 0.102654 0.127143 +dPolE 4700.000000 70.000000 -0.001645 0.129713 +dPolE 4710.000000 70.000000 0.090944 0.131405 +dPolE 4720.000000 70.000000 0.162166 0.129674 +dPolE 4730.000000 70.000000 0.124136 0.126960 +dPolE 4740.000000 70.000000 -0.043987 0.126245 +dPolE 4750.000000 70.000000 0.142650 0.126316 +dPolE 4760.000000 70.000000 0.298378 0.125526 +dPolE 4770.000000 70.000000 0.235287 0.124547 +dPolE 4780.000000 70.000000 0.116149 0.123495 +dPolE 4790.000000 70.000000 0.076604 0.122382 +dPolE 4800.000000 70.000000 -0.015214 0.122229 +dPolE 4810.000000 70.000000 0.003375 0.121858 +dPolE 4820.000000 70.000000 -0.028611 0.121848 +dPolE 4830.000000 70.000000 -0.126976 0.121478 +dPolE 4840.000000 70.000000 0.062497 0.119685 +dPolE 4850.000000 70.000000 0.188894 0.113984 +dPolE 4860.000000 70.000000 0.095411 0.100253 +dPolE 4870.000000 70.000000 0.065847 0.095347 +dPolE 4880.000000 70.000000 0.058894 0.109548 +dPolE 4890.000000 70.000000 -0.023552 0.116775 +dPolE 4900.000000 70.000000 0.014744 0.116550 +dPolE 4910.000000 70.000000 0.052504 0.115364 +dPolE 4920.000000 70.000000 0.075653 0.115569 +dPolE 4930.000000 70.000000 -0.033627 0.115296 +dPolE 4940.000000 70.000000 -0.043220 0.114447 +dPolE 4950.000000 70.000000 0.272284 0.115149 +dPolE 4960.000000 70.000000 0.124181 0.116023 +dPolE 4970.000000 70.000000 -0.136845 0.115450 +dPolE 4980.000000 70.000000 -0.056424 0.114088 +dPolE 4990.000000 70.000000 0.105364 0.112348 +dPolE 5000.000000 70.000000 0.289539 0.111547 +dPolE 5010.000000 70.000000 0.208638 0.111361 +dPolE 5020.000000 70.000000 -0.040159 0.110889 +dPolE 5030.000000 70.000000 -0.005193 0.110776 +dPolE 5040.000000 70.000000 0.037615 0.110978 +dPolE 5050.000000 70.000000 0.115297 0.111026 +dPolE 5060.000000 70.000000 -0.143253 0.110863 +dPolE 5070.000000 70.000000 -0.121134 0.110562 +dPolE 5080.000000 70.000000 0.134311 0.110361 +dPolE 5090.000000 70.000000 0.006929 0.110404 +dPolE 5100.000000 70.000000 -0.081523 0.110400 +dPolE 5110.000000 70.000000 0.026294 0.109734 +dPolE 5120.000000 70.000000 0.002709 0.109066 +dPolE 5130.000000 70.000000 0.014123 0.108906 +dPolE 5140.000000 70.000000 -0.104844 0.108914 +dPolE 5150.000000 70.000000 0.113212 0.108318 +dPolE 5160.000000 70.000000 0.027502 0.107972 +dPolE 5170.000000 70.000000 0.061658 0.107694 +dPolE 5180.000000 70.000000 -0.028762 0.107475 +dPolE 5190.000000 70.000000 -0.140086 0.107270 +dPolE 5200.000000 70.000000 -0.064944 0.106522 +dPolE 5210.000000 70.000000 0.038993 0.105875 +dPolE 5220.000000 70.000000 0.117610 0.105634 +dPolE 5230.000000 70.000000 0.109318 0.105261 +dPolE 5240.000000 70.000000 -0.146617 0.105319 +dPolE 5250.000000 70.000000 -0.155949 0.104881 +dPolE 5260.000000 70.000000 -0.036281 0.103910 +dPolE 5270.000000 70.000000 0.136735 0.102737 +dPolE 5280.000000 70.000000 0.153482 0.102460 +dPolE 5290.000000 70.000000 0.117062 0.102323 +dPolE 5300.000000 70.000000 0.060490 0.102031 +dPolE 5310.000000 70.000000 0.016235 0.102008 +dPolE 5320.000000 70.000000 0.090539 0.101746 +dPolE 5330.000000 70.000000 0.141081 0.100874 +dPolE 5340.000000 70.000000 -0.012330 0.100169 +dPolE 5350.000000 70.000000 0.002886 0.099859 +dPolE 5360.000000 70.000000 0.097452 0.099515 +dPolE 5370.000000 70.000000 -0.032648 0.099441 +dPolE 5380.000000 70.000000 0.080119 0.098896 +dPolE 5390.000000 70.000000 0.010574 0.098193 +dPolE 5400.000000 70.000000 0.088004 0.097656 +dPolE 5410.000000 70.000000 0.259064 0.097134 +dPolE 5420.000000 70.000000 0.057579 0.096700 +dPolE 5430.000000 70.000000 -0.032372 0.095986 +dPolE 5440.000000 70.000000 0.175586 0.095389 +dPolE 5450.000000 70.000000 0.106692 0.095173 +dPolE 5460.000000 70.000000 0.000020 0.095257 +dPolE 5470.000000 70.000000 0.165417 0.094872 +dPolE 5480.000000 70.000000 0.167424 0.094102 +dPolE 5490.000000 70.000000 0.228326 0.093335 +dPolE 5500.000000 70.000000 0.046361 0.093394 +dPolE 5510.000000 70.000000 0.095957 0.093342 +dPolE 5520.000000 70.000000 0.158728 0.093120 +dPolE 5530.000000 70.000000 0.063093 0.092885 +dPolE 5540.000000 70.000000 -0.072500 0.092654 +dPolE 5550.000000 70.000000 -0.005746 0.092359 +dPolE 5560.000000 70.000000 0.088458 0.092053 +dPolE 5570.000000 70.000000 0.063510 0.091762 +dPolE 5580.000000 70.000000 0.070445 0.091520 +dPolE 5590.000000 70.000000 0.066416 0.091442 +dPolE 5600.000000 70.000000 -0.066667 0.091333 +dPolE 5610.000000 70.000000 -0.035336 0.090752 +dPolE 5620.000000 70.000000 0.055064 0.090396 +dPolE 5630.000000 70.000000 0.035173 0.090280 +dPolE 5640.000000 70.000000 -0.057755 0.090056 +dPolE 5650.000000 70.000000 -0.044679 0.089607 +dPolE 5660.000000 70.000000 0.029434 0.089157 +dPolE 5670.000000 70.000000 0.058578 0.088180 +dPolE 5680.000000 70.000000 -0.013512 0.086680 +dPolE 5690.000000 70.000000 0.064554 0.084742 +dPolE 5700.000000 70.000000 0.039269 0.082304 +dPolE 5710.000000 70.000000 0.056956 0.081055 +dPolE 5720.000000 70.000000 0.139337 0.080303 +dPolE 5730.000000 70.000000 0.031770 0.079635 +dPolE 5740.000000 70.000000 0.065659 0.078130 +dPolE 5750.000000 70.000000 0.108659 0.077311 +dPolE 5760.000000 70.000000 0.166897 0.076672 +dPolE 5770.000000 70.000000 0.114435 0.075234 +dPolE 5780.000000 70.000000 0.082144 0.074154 +dPolE 5790.000000 70.000000 0.096286 0.074007 +dPolE 5800.000000 70.000000 0.048153 0.073524 +dPolE 5810.000000 70.000000 0.189514 0.071541 +dPolE 5820.000000 70.000000 0.163162 0.069741 +dPolE 5830.000000 70.000000 0.109763 0.071468 +dPolE 5840.000000 70.000000 0.183615 0.074692 +dPolE 5850.000000 70.000000 0.176826 0.074171 +dPolE 5860.000000 70.000000 0.192224 0.074503 +dPolE 5870.000000 70.000000 0.158276 0.075281 +dPolE 5880.000000 70.000000 0.180411 0.074550 +dPolE 5890.000000 70.000000 0.182536 0.074306 +dPolE 5900.000000 70.000000 0.205404 0.076741 +dPolE 5910.000000 70.000000 0.181593 0.078338 +dPolE 5920.000000 70.000000 0.179803 0.078320 +dPolE 5930.000000 70.000000 0.182716 0.077059 +dPolE 5940.000000 70.000000 0.110711 0.075961 +dPolE 5950.000000 70.000000 0.246205 0.074884 +dPolE 5960.000000 70.000000 0.126930 0.075174 +dPolE 5970.000000 70.000000 0.113418 0.076438 +dPolE 5980.000000 70.000000 0.149004 0.077053 +dPolE 5990.000000 70.000000 0.167656 0.077049 +dPolE 6000.000000 70.000000 0.189131 0.077078 +dPolE 6010.000000 70.000000 0.139607 0.076568 +dPolE 6020.000000 70.000000 0.176891 0.075625 +dPolE 6030.000000 70.000000 0.070364 0.074656 +dPolE 6040.000000 70.000000 0.090206 0.074315 +dPolE 6050.000000 70.000000 0.213960 0.075684 +dPolE 6060.000000 70.000000 0.294537 0.076031 +dPolE 6070.000000 70.000000 0.197850 0.076215 +dPolE 6080.000000 70.000000 0.142612 0.076513 +dPolE 6090.000000 70.000000 0.191878 0.076729 +dPolE 6100.000000 70.000000 0.103531 0.076537 +dPolE 6110.000000 70.000000 0.154793 0.076041 +dPolE 6120.000000 70.000000 0.193620 0.075834 +dPolE 6130.000000 70.000000 0.190080 0.075647 +dPolE 6140.000000 70.000000 0.156744 0.075472 +dPolE 6150.000000 70.000000 0.271739 0.075807 +dPolE 6160.000000 70.000000 0.208232 0.076543 +dPolE 6170.000000 70.000000 0.167528 0.076948 +dPolE 6180.000000 70.000000 0.034704 0.077226 +dPolE 6190.000000 70.000000 0.074234 0.077442 +dPolE 6200.000000 70.000000 0.235343 0.076903 +dPolE 6210.000000 70.000000 0.190729 0.076983 +dPolE 6220.000000 70.000000 0.058706 0.077424 +dPolE 6230.000000 70.000000 0.116909 0.076939 +dPolE 6240.000000 70.000000 0.181659 0.076634 +dPolE 6250.000000 70.000000 0.159143 0.077312 +dPolE 6260.000000 70.000000 0.214264 0.077776 +dPolE 6270.000000 70.000000 0.082653 0.077911 +dPolE 6280.000000 70.000000 0.134886 0.077753 +dPolE 6290.000000 70.000000 0.087364 0.077850 +dPolE 6300.000000 70.000000 0.254228 0.077698 +dPolE 6310.000000 70.000000 0.203892 0.078131 +dPolE 6320.000000 70.000000 0.147749 0.078303 +dPolE 6330.000000 70.000000 0.280371 0.077897 +dPolE 6340.000000 70.000000 0.194945 0.078079 +dPolE 6350.000000 70.000000 0.106471 0.078151 +dPolE 6360.000000 70.000000 0.052000 0.077944 +dPolE 6370.000000 70.000000 0.201230 0.077620 +dPolE 6380.000000 70.000000 0.349383 0.077570 +dPolE 6390.000000 70.000000 0.234177 0.077677 +dPolE 6400.000000 70.000000 0.205810 0.077685 +dPolE 6410.000000 70.000000 0.113327 0.077894 +dPolE 6420.000000 70.000000 0.076214 0.078153 +dPolE 6430.000000 70.000000 0.260507 0.077856 +dPolE 6440.000000 70.000000 0.250163 0.077882 +dPolE 6450.000000 70.000000 0.178578 0.078078 +dPolE 6460.000000 70.000000 0.210804 0.077985 +dPolE 6470.000000 70.000000 0.069533 0.078063 +dPolE 6480.000000 70.000000 -0.009643 0.078038 +dPolE 6490.000000 70.000000 0.068340 0.077835 +dPolE 6500.000000 70.000000 0.190803 0.077681 +dPolE 6510.000000 70.000000 0.189304 0.077698 +dPolE 6520.000000 70.000000 0.160474 0.077634 +dPolE 6530.000000 70.000000 0.120649 0.077738 +dPolE 6540.000000 70.000000 0.096062 0.078473 +dPolE 6550.000000 70.000000 0.249018 0.069371 +dPolE 6560.000000 70.000000 0.099972 0.048729 +dPolE 6570.000000 70.000000 0.031249 0.047121 +dPolE 6580.000000 70.000000 0.096810 0.064305 +dPolE 6590.000000 70.000000 0.174632 0.076902 +dPolE 6600.000000 70.000000 0.049615 0.077481 +dPolE 6610.000000 70.000000 0.049730 0.077539 +dPolE 6620.000000 70.000000 0.177728 0.077213 +dPolE 6630.000000 70.000000 0.197949 0.077067 +dPolE 6640.000000 70.000000 0.172431 0.077128 +dPolE 6650.000000 70.000000 0.181691 0.077154 +dPolE 6660.000000 70.000000 0.082652 0.077235 +dPolE 6670.000000 70.000000 0.070465 0.077216 +dPolE 6680.000000 70.000000 0.107700 0.077076 +dPolE 6690.000000 70.000000 0.151576 0.076861 +dPolE 6700.000000 70.000000 0.103122 0.076685 +dPolE 6710.000000 70.000000 0.201016 0.076596 +dPolE 6720.000000 70.000000 0.086719 0.076598 +dPolE 6730.000000 70.000000 0.219930 0.076394 +dPolE 6740.000000 70.000000 0.161239 0.076556 +dPolE 6750.000000 70.000000 0.180187 0.076602 +dPolE 6760.000000 70.000000 0.064244 0.076713 +dPolE 6770.000000 70.000000 0.104215 0.076583 +dPolE 6780.000000 70.000000 0.195703 0.076331 +dPolE 6790.000000 70.000000 0.137002 0.076208 +dPolE 6800.000000 70.000000 0.287371 0.075942 +dPolE 6810.000000 70.000000 0.274111 0.075918 +dPolE 6820.000000 70.000000 0.163725 0.076056 +dPolE 6830.000000 70.000000 0.176707 0.075994 +dPolE 6840.000000 70.000000 0.154174 0.075921 +dPolE 6850.000000 70.000000 0.130154 0.075620 +dPolE 6860.000000 70.000000 0.186899 0.075505 +dPolE 6870.000000 70.000000 0.127524 0.075767 +dPolE 6880.000000 70.000000 0.141141 0.075847 +dPolE 6890.000000 70.000000 0.186885 0.075820 +dPolE 6900.000000 70.000000 0.225666 0.075852 +dPolE 6910.000000 70.000000 0.153733 0.075887 +dPolE 6920.000000 70.000000 0.134000 0.075819 +dPolE 6930.000000 70.000000 0.059862 0.075820 +dPolE 6940.000000 70.000000 0.025597 0.075756 +dPolE 6950.000000 70.000000 0.129609 0.075740 +dPolE 6960.000000 70.000000 0.104279 0.075771 +dPolE 6970.000000 70.000000 0.086572 0.075648 +dPolE 6980.000000 70.000000 0.212748 0.075410 +dPolE 6990.000000 70.000000 0.178598 0.075494 +dPolE 7000.000000 70.000000 0.037818 0.075753 +dPolE 7010.000000 70.000000 0.077229 0.075813 +dPolE 7020.000000 70.000000 0.073446 0.075839 +dPolE 7030.000000 70.000000 0.187654 0.075696 +dPolE 7040.000000 70.000000 0.216840 0.075785 +dPolE 7050.000000 70.000000 0.143490 0.075978 +dPolE 7060.000000 70.000000 0.183194 0.075959 +dPolE 7070.000000 70.000000 0.114953 0.075738 +dPolE 7080.000000 70.000000 0.094846 0.075796 +dPolE 7090.000000 70.000000 0.112099 0.075955 +dPolE 7100.000000 70.000000 0.147848 0.076065 +dPolE 7110.000000 70.000000 0.120577 0.076106 +dPolE 7120.000000 70.000000 0.114734 0.076117 +dPolE 7130.000000 70.000000 0.119191 0.076116 +dPolE 7140.000000 70.000000 0.129707 0.076013 +dPolE 7150.000000 70.000000 0.151679 0.075914 +dPolE 7160.000000 70.000000 0.218963 0.075896 +dPolE 7170.000000 70.000000 0.173940 0.076189 +dPolE 7180.000000 70.000000 0.210798 0.076139 +dPolE 7190.000000 70.000000 0.074115 0.076292 +dPolE 7200.000000 70.000000 0.174485 0.076293 +dPolE 7210.000000 70.000000 0.191399 0.076418 +dPolE 7220.000000 70.000000 0.076617 0.076553 +dPolE 7230.000000 70.000000 0.118210 0.076666 +dPolE 7240.000000 70.000000 0.031548 0.076725 +dPolE 7250.000000 70.000000 0.092550 0.076329 +dPolE 7260.000000 70.000000 0.231462 0.075857 +dPolE 7270.000000 70.000000 0.155483 0.076122 +dPolE 7280.000000 70.000000 0.179232 0.076160 +dPolE 7290.000000 70.000000 -0.029399 0.076296 +dPolE 7300.000000 70.000000 -0.022251 0.076358 +dPolE 7310.000000 70.000000 0.201233 0.076041 +dPolE 7320.000000 70.000000 0.084006 0.076277 +dPolE 7330.000000 70.000000 0.175146 0.076482 +dPolE 7340.000000 70.000000 0.243750 0.076337 +dPolE 7350.000000 70.000000 0.059223 0.076108 +dPolE 7360.000000 70.000000 0.031474 0.076176 +dPolE 7370.000000 70.000000 0.076741 0.076477 +dPolE 7380.000000 70.000000 0.068519 0.077008 +dPolE 7390.000000 70.000000 0.087430 0.077255 +dPolE 7400.000000 70.000000 0.121118 0.076910 +dPolE 7410.000000 70.000000 0.129713 0.077187 +dPolE 7420.000000 70.000000 0.036700 0.077850 +dPolE 7430.000000 70.000000 0.205184 0.077900 +dPolE 7440.000000 70.000000 0.201322 0.077951 +dPolE 7450.000000 70.000000 0.201874 0.078016 +dPolE 7460.000000 70.000000 0.098749 0.078198 +dPolE 7470.000000 70.000000 0.059382 0.077925 +dPolE 7480.000000 70.000000 0.127893 0.077808 +dPolE 7490.000000 70.000000 0.063966 0.078216 +dPolE 7500.000000 70.000000 -0.025729 0.078320 +dPolE 7510.000000 70.000000 0.157810 0.078090 +dPolE 7520.000000 70.000000 0.103777 0.078710 +dPolE 7530.000000 70.000000 0.012253 0.079076 +dPolE 7540.000000 70.000000 0.117435 0.078516 +dPolE 7550.000000 70.000000 0.147669 0.078646 +dPolE 7560.000000 70.000000 -0.042479 0.078968 +dPolE 7570.000000 70.000000 0.023384 0.078808 +dPolE 7580.000000 70.000000 0.065810 0.078633 +dPolE 7590.000000 70.000000 -0.001442 0.078661 +dPolE 7600.000000 70.000000 0.126228 0.079120 +dPolE 7610.000000 70.000000 0.216025 0.079629 +dPolE 7620.000000 70.000000 0.166506 0.080123 +dPolE 7630.000000 70.000000 0.073534 0.080021 +dPolE 7640.000000 70.000000 0.041569 0.079920 +dPolE 7650.000000 70.000000 0.038121 0.080219 +dPolE 7660.000000 70.000000 0.085176 0.080689 +dPolE 7670.000000 70.000000 0.094382 0.081355 +dPolE 7680.000000 70.000000 0.073295 0.081260 +dPolE 7690.000000 70.000000 0.051769 0.080436 +dPolE 7700.000000 70.000000 0.114565 0.080038 +dPolE 7710.000000 70.000000 0.146202 0.080598 +dPolE 7720.000000 70.000000 0.058651 0.081591 +dPolE 7730.000000 70.000000 0.119028 0.082138 +dPolE 7740.000000 70.000000 0.018637 0.082420 +dPolE 7750.000000 70.000000 0.053639 0.082743 +dPolE 7760.000000 70.000000 0.083829 0.083163 +dPolE 7770.000000 70.000000 0.011133 0.083519 +dPolE 7780.000000 70.000000 0.048656 0.083392 +dPolE 7790.000000 70.000000 0.058783 0.082886 +dPolE 7800.000000 70.000000 0.107588 0.082709 +dPolE 7810.000000 70.000000 0.158378 0.083306 +dPolE 7820.000000 70.000000 0.134648 0.083711 +dPolE 7830.000000 70.000000 -0.071309 0.084052 +dPolE 7840.000000 70.000000 -0.123098 0.084559 +dPolE 7850.000000 70.000000 0.002444 0.085029 +dPolE 7860.000000 70.000000 0.070002 0.085329 +dPolE 7870.000000 70.000000 0.008931 0.085347 +dPolE 7880.000000 70.000000 0.126764 0.085045 +dPolE 7890.000000 70.000000 0.175751 0.085234 +dPolE 7900.000000 70.000000 0.071446 0.085772 +dPolE 7910.000000 70.000000 0.021580 0.085892 +dPolE 7920.000000 70.000000 -0.043047 0.086174 +dPolE 7930.000000 70.000000 0.124044 0.086152 +dPolE 7940.000000 70.000000 0.058454 0.086015 +dPolE 7950.000000 70.000000 0.020356 0.086121 +dPolE 7960.000000 70.000000 0.056167 0.086577 +dPolE 7970.000000 70.000000 0.128231 0.086969 +dPolE 7980.000000 70.000000 0.166389 0.087197 +dPolE 7990.000000 70.000000 -0.005242 0.087593 +dPolE 8000.000000 70.000000 0.053198 0.087444 +dPolE 8010.000000 70.000000 0.004335 0.087385 +dPolE 8020.000000 70.000000 -0.032724 0.088052 +dPolE 8030.000000 70.000000 -0.027432 0.088582 +dPolE 8040.000000 70.000000 -0.043428 0.088591 +dPolE 8050.000000 70.000000 0.134210 0.088216 +dPolE 8060.000000 70.000000 0.112612 0.088542 +dPolE 8070.000000 70.000000 0.094600 0.089409 +dPolE 8080.000000 70.000000 0.042905 0.089820 +dPolE 8090.000000 70.000000 0.030298 0.089238 +dPolE 8100.000000 70.000000 0.104106 0.089297 +dPolE 8110.000000 70.000000 0.121303 0.089747 +dPolE 8120.000000 70.000000 0.024439 0.090449 +dPolE 8130.000000 70.000000 -0.035846 0.090458 +dPolE 8140.000000 70.000000 -0.074015 0.090018 +dPolE 8150.000000 70.000000 0.142647 0.090051 +dPolE 8160.000000 70.000000 -0.028809 0.090931 +dPolE 8170.000000 70.000000 -0.007807 0.091300 +dPolE 8180.000000 70.000000 0.050191 0.091007 +dPolE 8190.000000 70.000000 0.099577 0.090871 +dPolE 8200.000000 70.000000 -0.105708 0.091572 +dPolE 8210.000000 70.000000 -0.028399 0.091827 +dPolE 8220.000000 70.000000 0.028308 0.092043 +dPolE 8230.000000 70.000000 0.013126 0.091730 +dPolE 8240.000000 70.000000 0.003210 0.091679 +dPolE 8250.000000 70.000000 -0.126330 0.092558 +dPolE 8260.000000 70.000000 -0.068595 0.093026 +dPolE 8270.000000 70.000000 0.086717 0.092567 +dPolE 8280.000000 70.000000 0.112995 0.092118 +dPolE 8290.000000 70.000000 0.007557 0.092357 +dPolE 8300.000000 70.000000 -0.028661 0.093290 +dPolE 8310.000000 70.000000 0.026218 0.093744 +dPolE 8320.000000 70.000000 0.020732 0.093520 +dPolE 8330.000000 70.000000 0.157869 0.092859 +dPolE 8340.000000 70.000000 0.025099 0.092867 +dPolE 8350.000000 70.000000 -0.123805 0.093498 +dPolE 8360.000000 70.000000 0.102070 0.093957 +dPolE 8370.000000 70.000000 -0.012273 0.093906 +dPolE 8380.000000 70.000000 0.027252 0.093683 +dPolE 8390.000000 70.000000 0.014383 0.093964 +dPolE 8400.000000 70.000000 0.018116 0.094731 +dPolE 8410.000000 70.000000 0.109189 0.094963 +dPolE 8420.000000 70.000000 0.040521 0.094879 +dPolE 8430.000000 70.000000 -0.065913 0.094748 +dPolE 8440.000000 70.000000 -0.067413 0.094783 +dPolE 8450.000000 70.000000 -0.073867 0.095269 +dPolE 8460.000000 70.000000 0.067893 0.095350 +dPolE 8470.000000 70.000000 0.139870 0.095039 +dPolE 8480.000000 70.000000 0.019693 0.094828 +dPolE 8490.000000 70.000000 -0.124884 0.095767 +dPolE 8500.000000 70.000000 -0.156429 0.097510 +dPolE 8510.000000 70.000000 -0.153039 0.098008 +dPolE 8520.000000 70.000000 -0.112781 0.095901 +dPolE 8530.000000 70.000000 -0.013177 0.093609 +dPolE 8540.000000 70.000000 -0.057827 0.093422 +dPolE 8550.000000 70.000000 -0.020135 0.094731 +dPolE 8560.000000 70.000000 0.207781 0.095434 +dPolE 8570.000000 70.000000 0.255535 0.095589 +dPolE 8580.000000 70.000000 0.008354 0.095542 +dPolE 8590.000000 70.000000 0.140799 0.095113 +dPolE 8600.000000 70.000000 0.119354 0.095487 +dPolE 8610.000000 70.000000 0.035307 0.096469 +dPolE 8620.000000 70.000000 -0.075645 0.097002 +dPolE 8630.000000 70.000000 0.004445 0.096859 +dPolE 8640.000000 70.000000 0.059680 0.096144 +dPolE 8650.000000 70.000000 -0.105332 0.096054 +dPolE 8660.000000 70.000000 -0.102560 0.096544 +dPolE 8670.000000 70.000000 -0.030524 0.097144 +dPolE 8680.000000 70.000000 0.013191 0.097162 +dPolE 8690.000000 70.000000 -0.122428 0.097191 +dPolE 8700.000000 70.000000 -0.077661 0.096924 +dPolE 8710.000000 70.000000 -0.032900 0.097090 +dPolE 8720.000000 70.000000 -0.012885 0.097542 +dPolE 8730.000000 70.000000 0.157667 0.097326 +dPolE 8740.000000 70.000000 0.143880 0.096961 +dPolE 8750.000000 70.000000 0.026607 0.096819 +dPolE 8760.000000 70.000000 0.045346 0.096882 +dPolE 8770.000000 70.000000 -0.043068 0.097567 +dPolE 8780.000000 70.000000 0.047391 0.097897 +dPolE 8790.000000 70.000000 0.097743 0.097693 +dPolE 8800.000000 70.000000 -0.122301 0.097924 +dPolE 8810.000000 70.000000 -0.042563 0.098153 +dPolE 8820.000000 70.000000 -0.059887 0.098566 +dPolE 8830.000000 70.000000 -0.056642 0.098930 +dPolE 8840.000000 70.000000 -0.093738 0.099073 +dPolE 8850.000000 70.000000 0.018749 0.099101 +dPolE 8860.000000 70.000000 -0.143220 0.099117 +dPolE 8870.000000 70.000000 0.059563 0.098521 +dPolE 8880.000000 70.000000 -0.048442 0.098699 +dPolE 8890.000000 70.000000 -0.184547 0.099330 +dPolE 8900.000000 70.000000 -0.208488 0.099752 +dPolE 8910.000000 70.000000 0.061204 0.099608 +dPolE 8920.000000 70.000000 0.109885 0.099497 +dPolE 8930.000000 70.000000 -0.023908 0.099649 +dPolE 8940.000000 70.000000 0.012116 0.099679 +dPolE 8950.000000 70.000000 0.015102 0.100022 +dPolE 8960.000000 70.000000 -0.051909 0.100397 +dPolE 8970.000000 70.000000 0.025205 0.100513 +dPolE 8980.000000 70.000000 -0.125837 0.100917 +dPolE 8990.000000 70.000000 -0.106164 0.100732 +dPolE 9000.000000 70.000000 -0.037346 0.101026 +dPolE 9010.000000 70.000000 0.115205 0.101103 +dPolE 9020.000000 70.000000 -0.026847 0.101335 +dPolE 9030.000000 70.000000 0.030236 0.101712 +dPolE 9040.000000 70.000000 -0.039271 0.101898 +dPolE 9050.000000 70.000000 -0.077239 0.101768 +dPolE 9060.000000 70.000000 -0.010370 0.101981 +dPolE 9070.000000 70.000000 -0.086949 0.102506 +dPolE 9080.000000 70.000000 -0.143891 0.103141 +dPolE 9090.000000 70.000000 -0.119242 0.103540 +dPolE 9100.000000 70.000000 0.085673 0.103321 +dPolE 9110.000000 70.000000 0.043511 0.103080 +dPolE 9120.000000 70.000000 -0.076594 0.103445 +dPolE 9130.000000 70.000000 -0.072108 0.103908 +dPolE 9140.000000 70.000000 0.008168 0.104588 +dPolE 9150.000000 70.000000 -0.220292 0.104913 +dPolE 9160.000000 70.000000 0.077081 0.104102 +dPolE 9170.000000 70.000000 -0.109409 0.104225 +dPolE 9180.000000 70.000000 0.005502 0.104148 +dPolE 9190.000000 70.000000 0.007427 0.104697 +dPolE 9200.000000 70.000000 0.012564 0.105559 +dPolE 9210.000000 70.000000 0.000690 0.106035 +dPolE 9220.000000 70.000000 -0.152783 0.106752 +dPolE 9230.000000 70.000000 0.009628 0.106758 +dPolE 9240.000000 70.000000 -0.060487 0.106991 +dPolE 9250.000000 70.000000 0.063575 0.107030 +dPolE 9260.000000 70.000000 -0.137575 0.107759 +dPolE 9270.000000 70.000000 -0.054473 0.108177 +dPolE 9280.000000 70.000000 -0.183792 0.108933 +dPolE 9290.000000 70.000000 -0.143408 0.109217 +dPolE 9300.000000 70.000000 -0.084073 0.109311 +dPolE 9310.000000 70.000000 -0.055349 0.109438 +dPolE 9320.000000 70.000000 -0.108978 0.109624 +dPolE 9330.000000 70.000000 -0.030927 0.109889 +dPolE 9340.000000 70.000000 0.054314 0.110231 +dPolE 9350.000000 70.000000 -0.127035 0.111151 +dPolE 9360.000000 70.000000 -0.111230 0.111784 +dPolE 9370.000000 70.000000 -0.071466 0.112019 +dPolE 9380.000000 70.000000 0.079819 0.111881 +dPolE 9390.000000 70.000000 -0.127749 0.112451 +dPolE 9400.000000 70.000000 -0.115274 0.113328 +dPolE 9410.000000 70.000000 -0.102925 0.113952 +dPolE 9420.000000 70.000000 -0.203795 0.114682 +dPolE 9430.000000 70.000000 -0.079955 0.115098 +dPolE 9440.000000 70.000000 -0.100960 0.115199 +dPolE 9450.000000 70.000000 0.033011 0.115337 +dPolE 9460.000000 70.000000 -0.155072 0.116232 +dPolE 9470.000000 70.000000 -0.145331 0.116884 +dPolE 9480.000000 70.000000 -0.192588 0.117553 +dPolE 9490.000000 70.000000 -0.258296 0.118332 +dPolE 9500.000000 70.000000 -0.096283 0.118679 +dPolE 9510.000000 70.000000 -0.009232 0.119015 +dPolE 9520.000000 70.000000 -0.100055 0.119530 +dPolE 9530.000000 70.000000 -0.178912 0.120269 +dPolE 9540.000000 70.000000 0.016349 0.120939 +dPolE 9550.000000 70.000000 0.213172 0.121457 +dPolE 9560.000000 70.000000 -0.036055 0.122178 +dPolE 9570.000000 70.000000 -0.130783 0.122559 +dPolE 9580.000000 70.000000 -0.276977 0.123107 +dPolE 9590.000000 70.000000 -0.145228 0.123413 +dPolE 9600.000000 70.000000 0.059917 0.123670 +dPolE 9610.000000 70.000000 -0.047085 0.124285 +dPolE 9620.000000 70.000000 -0.116907 0.125162 +dPolE 9630.000000 70.000000 0.007982 0.125553 +dPolE 9640.000000 70.000000 -0.168328 0.126412 +dPolE 9650.000000 70.000000 -0.079738 0.126893 +dPolE 9660.000000 70.000000 -0.113084 0.127465 +dPolE 9670.000000 70.000000 -0.165609 0.128430 +dPolE 9680.000000 70.000000 -0.200340 0.129457 +dPolE 9690.000000 70.000000 -0.102812 0.130011 +dPolE 9700.000000 70.000000 -0.184242 0.130510 +dPolE 9710.000000 70.000000 -0.111650 0.131212 +dPolE 9720.000000 70.000000 0.042925 0.131800 +dPolE 9730.000000 70.000000 -0.021852 0.132875 +dPolE 9740.000000 70.000000 0.132754 0.133416 +dPolE 9750.000000 70.000000 -0.225737 0.134498 +dPolE 9760.000000 70.000000 -0.281890 0.135444 +dPolE 9770.000000 70.000000 0.042279 0.135718 +dPolE 9780.000000 70.000000 0.031213 0.136452 +dPolE 9790.000000 70.000000 0.106101 0.137222 +dPolE 9800.000000 70.000000 -0.077202 0.138631 +dPolE 9810.000000 70.000000 -0.101609 0.139790 +dPolE 9820.000000 70.000000 -0.064629 0.140891 +dPolE 9830.000000 70.000000 -0.068827 0.141433 +dPolE 9840.000000 70.000000 0.176781 0.141895 +dPolE 9850.000000 70.000000 -0.096974 0.143472 +dPolE 9860.000000 70.000000 -0.006578 0.144159 +dPolE 9870.000000 70.000000 -0.031664 0.145652 +dPolE 9880.000000 70.000000 -0.191599 0.147177 +dPolE 9890.000000 70.000000 -0.124415 0.147905 +dPolE 9900.000000 70.000000 0.088484 0.148285 +dPolE 9910.000000 70.000000 -0.010064 0.149592 +dPolE 9920.000000 70.000000 -0.161660 0.151424 +dPolE 9930.000000 70.000000 -0.303949 0.153384 +dPolE 9940.000000 70.000000 -0.155101 0.154431 +dPolE 9950.000000 70.000000 0.083986 0.154943 +dPolE 9960.000000 70.000000 -0.016296 0.156620 +dPolE 9970.000000 70.000000 0.144589 0.157392 +dPolE 9980.000000 70.000000 0.143249 0.159249 +dPolE 9990.000000 70.000000 -0.150440 0.161668 +dPolE 10000.000000 70.000000 -0.110606 0.163221 +dPolE 10025.000000 70.000000 0.006812 0.078677 +dPolE 10050.000000 70.000000 0.033280 0.076790 +dPolE 10075.000000 70.000000 0.075009 0.074493 +dPolE 10100.000000 70.000000 0.012870 0.072808 +dPolE 10125.000000 70.000000 -0.075710 0.071368 +dPolE 10150.000000 70.000000 0.030279 0.069433 +dPolE 10175.000000 70.000000 0.029748 0.067782 +dPolE 10200.000000 70.000000 -0.076906 0.066392 +dPolE 10225.000000 70.000000 -0.062878 0.064724 +dPolE 10250.000000 70.000000 -0.036536 0.063198 +dPolE 10275.000000 70.000000 -0.015102 0.061972 +dPolE 10300.000000 70.000000 0.028853 0.060387 +dPolE 10325.000000 70.000000 0.063402 0.058754 +dPolE 10350.000000 70.000000 -0.062004 0.057584 +dPolE 10375.000000 70.000000 -0.055670 0.056365 +dPolE 10400.000000 70.000000 0.072872 0.055111 +dPolE 10425.000000 70.000000 0.098910 0.053997 +dPolE 10450.000000 70.000000 0.062511 0.052960 +dPolE 10475.000000 70.000000 -0.083087 0.052019 +dPolE 10500.000000 70.000000 -0.001128 0.050991 +dPolE 10525.000000 70.000000 0.123771 0.049987 +dPolE 10550.000000 70.000000 -0.004313 0.049210 +dPolE 10575.000000 70.000000 -0.040286 0.048464 +dPolE 10600.000000 70.000000 -0.001314 0.047745 +dPolE 10625.000000 70.000000 -0.019042 0.046812 +dPolE 10650.000000 70.000000 -0.025030 0.045986 +dPolE 10675.000000 70.000000 -0.006424 0.045328 +dPolE 10700.000000 70.000000 -0.015318 0.044512 +dPolE 10725.000000 70.000000 -0.012618 0.043720 +dPolE 10750.000000 70.000000 0.073155 0.043150 +dPolE 10775.000000 70.000000 0.061572 0.042386 +dPolE 10800.000000 70.000000 -0.010398 0.041513 +dPolE 10825.000000 70.000000 0.064924 0.040849 +dPolE 10850.000000 70.000000 0.083024 0.040181 +dPolE 10875.000000 70.000000 0.028408 0.039499 +dPolE 10900.000000 70.000000 -0.073735 0.039010 +dPolE 10925.000000 70.000000 -0.124770 0.038486 +dPolE 10950.000000 70.000000 -0.011745 0.037753 +dPolE 10975.000000 70.000000 0.043302 0.037198 +dPolE 11000.000000 70.000000 0.069940 0.036734 +dPolE 11025.000000 70.000000 0.083896 0.036316 +dPolE 11050.000000 70.000000 0.115750 0.035942 +dPolE 11075.000000 70.000000 0.164115 0.035608 +dPolE 11100.000000 70.000000 0.087824 0.035115 +dPolE 11125.000000 70.000000 0.044422 0.034718 +dPolE 11150.000000 70.000000 0.074747 0.034503 +dPolE 11175.000000 70.000000 0.051224 0.034234 +dPolE 11200.000000 70.000000 0.027105 0.033973 +dPolE 11225.000000 70.000000 0.062793 0.033792 +dPolE 11250.000000 70.000000 0.051990 0.033559 +dPolE 11275.000000 70.000000 0.016998 0.033304 +dPolE 11300.000000 70.000000 0.074598 0.033231 +dPolE 11325.000000 70.000000 0.097672 0.033087 +dPolE 11350.000000 70.000000 0.081544 0.032863 +dPolE 11375.000000 70.000000 0.076166 0.032746 +dPolE 11400.000000 70.000000 0.068828 0.032627 +dPolE 11425.000000 70.000000 0.054459 0.032475 +dPolE 11450.000000 70.000000 0.044122 0.032316 +dPolE 11475.000000 70.000000 0.032761 0.032141 +dPolE 11500.000000 70.000000 0.009760 0.031901 +dPolE 11525.000000 70.000000 0.015214 0.031680 +dPolE 11550.000000 70.000000 0.038551 0.031472 +dPolE 11575.000000 70.000000 0.036614 0.031337 +dPolE 11600.000000 70.000000 0.032238 0.031110 +dPolE 11625.000000 70.000000 0.025058 0.030779 +dPolE 11650.000000 70.000000 0.015590 0.030595 +dPolE 11675.000000 70.000000 0.016101 0.030397 +dPolE 11700.000000 70.000000 0.037929 0.030131 +dPolE 11725.000000 70.000000 0.045867 0.029958 +dPolE 11750.000000 70.000000 0.049415 0.029786 +dPolE 11775.000000 70.000000 0.053501 0.029484 +dPolE 11800.000000 70.000000 0.059004 0.029213 +dPolE 11825.000000 70.000000 0.064218 0.028962 +dPolE 11850.000000 70.000000 0.050253 0.028718 +dPolE 11875.000000 70.000000 0.046572 0.028489 +dPolE 11900.000000 70.000000 0.053323 0.028275 +dPolE 11925.000000 70.000000 0.079530 0.028006 +dPolE 11950.000000 70.000000 0.089011 0.027773 +dPolE 11975.000000 70.000000 0.067459 0.027605 +dPolE 12000.000000 70.000000 0.071567 0.027421 +dPolE 12025.000000 70.000000 0.066121 0.027238 +dPolE 12050.000000 70.000000 0.011220 0.027068 +dPolE 12075.000000 70.000000 0.027049 0.026930 +dPolE 12100.000000 70.000000 0.066094 0.026803 +dPolE 12125.000000 70.000000 0.035420 0.026637 +dPolE 12150.000000 70.000000 0.018385 0.026478 +dPolE 12175.000000 70.000000 0.011979 0.026324 +dPolE 12200.000000 70.000000 0.059720 0.026252 +dPolE 12225.000000 70.000000 0.065164 0.026173 +dPolE 12250.000000 70.000000 0.018579 0.026086 +dPolE 12275.000000 70.000000 0.025677 0.026051 +dPolE 12300.000000 70.000000 0.037487 0.026043 +dPolE 12325.000000 70.000000 0.045386 0.026077 +dPolE 12350.000000 70.000000 0.035247 0.026012 +dPolE 12375.000000 70.000000 0.036068 0.025970 +dPolE 12400.000000 70.000000 0.092622 0.026100 +dPolE 12425.000000 70.000000 0.079267 0.026046 +dPolE 12450.000000 70.000000 0.043820 0.025928 +dPolE 12475.000000 70.000000 0.097409 0.026008 +dPolE 12500.000000 70.000000 0.083026 0.025930 +dPolE 12525.000000 70.000000 0.019673 0.025736 +dPolE 12550.000000 70.000000 0.092411 0.025632 +dPolE 12575.000000 70.000000 0.108301 0.025526 +dPolE 12600.000000 70.000000 0.059839 0.025415 +dPolE 12625.000000 70.000000 0.085187 0.025342 +dPolE 12650.000000 70.000000 0.099598 0.025244 +dPolE 12675.000000 70.000000 0.084149 0.025099 +dPolE 12700.000000 70.000000 0.079196 0.024932 +dPolE 12725.000000 70.000000 0.074591 0.024811 +dPolE 12750.000000 70.000000 0.064857 0.024823 +dPolE 12775.000000 70.000000 0.077203 0.024678 +dPolE 12800.000000 70.000000 0.093051 0.024494 +dPolE 12825.000000 70.000000 0.088572 0.024388 +dPolE 12850.000000 70.000000 0.107036 0.024268 +dPolE 12875.000000 70.000000 0.131399 0.024146 +dPolE 12900.000000 70.000000 0.089568 0.024074 +dPolE 12925.000000 70.000000 0.075375 0.023954 +dPolE 12950.000000 70.000000 0.083305 0.023796 +dPolE 12975.000000 70.000000 0.081726 0.023731 +dPolE 13000.000000 70.000000 0.081996 0.023650 +dPolE 13025.000000 70.000000 0.084333 0.023552 +dPolE 13050.000000 70.000000 0.065459 0.023436 +dPolE 13075.000000 70.000000 0.054320 0.023341 +dPolE 13100.000000 70.000000 0.057780 0.023279 +dPolE 13125.000000 70.000000 0.054970 0.023219 +dPolE 13150.000000 70.000000 0.053520 0.023153 +dPolE 13175.000000 70.000000 0.057470 0.023073 +dPolE 13200.000000 70.000000 0.063494 0.023010 +dPolE 13225.000000 70.000000 0.070928 0.022971 +dPolE 13250.000000 70.000000 0.080909 0.022993 +dPolE 13275.000000 70.000000 0.051857 0.022984 +dPolE 13300.000000 70.000000 0.022699 0.022969 +dPolE 13325.000000 70.000000 0.076654 0.022982 +dPolE 13350.000000 70.000000 0.102865 0.023010 +dPolE 13375.000000 70.000000 0.111541 0.023045 +dPolE 13400.000000 70.000000 0.107587 0.023057 +dPolE 13425.000000 70.000000 0.092557 0.023115 +dPolE 13450.000000 70.000000 0.071000 0.023211 +dPolE 13475.000000 70.000000 0.106587 0.023335 +dPolE 13500.000000 70.000000 0.110952 0.023487 +dPolE 13525.000000 70.000000 0.083744 0.023667 +dPolE 13550.000000 70.000000 0.147604 0.023953 +dPolE 13575.000000 70.000000 0.163248 0.024275 +dPolE 13600.000000 70.000000 0.112383 0.024642 +dPolE 13625.000000 70.000000 0.130552 0.024834 +dPolE 13650.000000 70.000000 0.123440 0.025042 +dPolE 13675.000000 70.000000 0.064734 0.025304 +dPolE 13700.000000 70.000000 0.069468 0.025886 +dPolE 13725.000000 70.000000 0.087003 0.026876 +dPolE 13750.000000 70.000000 0.110178 0.028689 +dPolE 13775.000000 70.000000 0.086923 0.031278 +dPolE 13800.000000 70.000000 0.051496 0.034004 +dPolE 13825.000000 70.000000 0.028648 0.035647 +dPolE 13850.000000 70.000000 0.046143 0.035350 +dPolE 13875.000000 70.000000 0.055333 0.034311 +dPolE 13900.000000 70.000000 0.002944 0.032902 +dPolE 13925.000000 70.000000 0.018140 0.031992 +dPolE 13950.000000 70.000000 0.047368 0.031122 +dPolE 13975.000000 70.000000 0.036399 0.029690 +dPolE 14000.000000 70.000000 0.029442 0.028820 +dPolE 14025.000000 70.000000 0.024933 0.028188 +dPolE 14050.000000 70.000000 0.024012 0.027500 +dPolE 14075.000000 70.000000 0.058673 0.027008 +dPolE 14100.000000 70.000000 0.098919 0.026613 +dPolE 14125.000000 70.000000 0.040108 0.026136 +dPolE 14150.000000 70.000000 0.029215 0.025807 +dPolE 14175.000000 70.000000 0.046739 0.025568 +dPolE 14200.000000 70.000000 0.040847 0.025304 +dPolE 14225.000000 70.000000 0.040553 0.025140 +dPolE 14250.000000 70.000000 0.045288 0.025042 +dPolE 14275.000000 70.000000 0.066948 0.024873 +dPolE 14300.000000 70.000000 0.101485 0.024752 +dPolE 14325.000000 70.000000 0.144912 0.024671 +dPolE 14350.000000 70.000000 0.104514 0.024619 +dPolE 14375.000000 70.000000 0.096325 0.024546 +dPolE 14400.000000 70.000000 0.118386 0.024453 +dPolE 14425.000000 70.000000 0.051843 0.024499 +dPolE 14450.000000 70.000000 0.044830 0.024458 +dPolE 14475.000000 70.000000 0.099677 0.024327 +dPolE 14500.000000 70.000000 0.050029 0.024327 +dPolE 14525.000000 70.000000 0.064940 0.024339 +dPolE 14550.000000 70.000000 0.155146 0.024361 +dPolE 14575.000000 70.000000 0.060414 0.024303 +dPolE 14600.000000 70.000000 0.029659 0.024308 +dPolE 14625.000000 70.000000 0.084604 0.024391 +dPolE 14650.000000 70.000000 0.061521 0.024334 +dPolE 14675.000000 70.000000 0.059383 0.024351 +dPolE 14700.000000 70.000000 0.089484 0.024471 +dPolE 14725.000000 70.000000 0.118830 0.024390 +dPolE 14750.000000 70.000000 0.127631 0.024384 +dPolE 14775.000000 70.000000 0.109367 0.024494 +dPolE 14800.000000 70.000000 0.034031 0.024511 +dPolE 14825.000000 70.000000 0.017250 0.024511 +dPolE 14850.000000 70.000000 0.086492 0.024500 +dPolE 14875.000000 70.000000 0.065683 0.024548 +dPolE 14900.000000 70.000000 0.057442 0.024618 +dPolE 14925.000000 70.000000 0.077460 0.024712 +dPolE 14950.000000 70.000000 0.045533 0.024714 +dPolE 14975.000000 70.000000 0.041801 0.024773 +dPolE 15000.000000 70.000000 0.083780 0.024925 +dPolE 15025.000000 70.000000 0.088659 0.024886 +dPolE 15050.000000 70.000000 0.095401 0.024913 +dPolE 15075.000000 70.000000 0.109194 0.025052 +dPolE 15100.000000 70.000000 0.103116 0.025046 +dPolE 15125.000000 70.000000 0.110659 0.025054 +dPolE 15150.000000 70.000000 0.138644 0.025097 +dPolE 15175.000000 70.000000 0.109977 0.025162 +dPolE 15200.000000 70.000000 0.089726 0.025249 +dPolE 15225.000000 70.000000 0.085784 0.025362 +dPolE 15250.000000 70.000000 0.075452 0.025418 +dPolE 15275.000000 70.000000 0.088063 0.025501 +dPolE 15300.000000 70.000000 0.129723 0.025623 +dPolE 15325.000000 70.000000 0.069571 0.025670 +dPolE 15350.000000 70.000000 0.041761 0.025743 +dPolE 15375.000000 70.000000 0.056999 0.025850 +dPolE 15400.000000 70.000000 0.064877 0.025907 +dPolE 15425.000000 70.000000 0.072747 0.026022 +dPolE 15450.000000 70.000000 0.080838 0.026202 +dPolE 15475.000000 70.000000 0.083334 0.026267 +dPolE 15500.000000 70.000000 0.090283 0.026358 +dPolE 15525.000000 70.000000 0.101656 0.026476 +dPolE 15550.000000 70.000000 0.110235 0.026461 +dPolE 15575.000000 70.000000 0.114928 0.026547 +dPolE 15600.000000 70.000000 0.112863 0.026721 +dPolE 15625.000000 70.000000 0.037594 0.026816 +dPolE 15650.000000 70.000000 0.034065 0.026933 +dPolE 15675.000000 70.000000 0.083328 0.027063 +dPolE 15700.000000 70.000000 0.066327 0.027122 +dPolE 15725.000000 70.000000 0.073002 0.027225 +dPolE 15750.000000 70.000000 0.089386 0.027361 +dPolE 15775.000000 70.000000 0.044818 0.027506 +dPolE 15800.000000 70.000000 0.064880 0.027613 +dPolE 15825.000000 70.000000 0.106870 0.027714 +dPolE 15850.000000 70.000000 0.038943 0.027931 +dPolE 15875.000000 70.000000 0.053389 0.028041 +dPolE 15900.000000 70.000000 0.097113 0.028118 +dPolE 15925.000000 70.000000 0.077599 0.028304 +dPolE 15950.000000 70.000000 0.082359 0.028476 +dPolE 15975.000000 70.000000 0.092483 0.028641 +dPolE 16000.000000 70.000000 0.084092 0.028807 +dPolE 16025.000000 70.000000 0.117735 0.028918 +dPolE 16050.000000 70.000000 0.124147 0.029058 +dPolE 16075.000000 70.000000 0.013779 0.029333 +dPolE 16100.000000 70.000000 0.057156 0.029495 +dPolE 16125.000000 70.000000 0.088385 0.029643 +dPolE 16150.000000 70.000000 0.002192 0.029831 +dPolE 16175.000000 70.000000 0.077811 0.030034 +dPolE 16200.000000 70.000000 0.116008 0.030257 +dPolE 16225.000000 70.000000 0.033283 0.030510 +dPolE 16250.000000 70.000000 0.089212 0.030682 +dPolE 16275.000000 70.000000 0.103785 0.030906 +dPolE 16300.000000 70.000000 0.037108 0.031217 +dPolE 16325.000000 70.000000 0.078843 0.031441 +dPolE 16350.000000 70.000000 0.106385 0.031719 +dPolE 16375.000000 70.000000 0.111403 0.032066 +dPolE 16400.000000 70.000000 0.072915 0.032302 +dPolE 16425.000000 70.000000 0.055535 0.032712 +dPolE 16450.000000 70.000000 0.059390 0.033252 +dPolE 16475.000000 70.000000 0.099431 0.033442 +dPolE 16500.000000 70.000000 0.094490 0.033926 +dPolE 16525.000000 70.000000 0.068718 0.034601 +dPolE 16550.000000 70.000000 0.106094 0.035170 +dPolE 16575.000000 70.000000 0.079572 0.036084 +dPolE 16600.000000 70.000000 0.039594 0.037215 +dPolE 16625.000000 70.000000 0.082032 0.038424 +dPolE 16650.000000 70.000000 0.040110 0.040602 +dPolE 16675.000000 70.000000 0.008557 0.043452 +dPolE 16700.000000 70.000000 0.112667 0.046835 +dPolE 16725.000000 70.000000 0.107670 0.052035 +dPolE 16750.000000 70.000000 0.086537 0.058760 +dPolE 16775.000000 70.000000 0.099584 0.067024 +dPolE 16800.000000 70.000000 0.026520 0.078223 +dPolE 16825.000000 70.000000 -0.001887 0.091867 +dPolE 16850.000000 70.000000 0.093951 0.107110 +dPolE 16875.000000 70.000000 0.015745 0.125295 +dPolE 16900.000000 70.000000 -0.217532 0.147289 +dPolE 16925.000000 70.000000 -0.622895 0.173056 +dPolE 16950.000000 70.000000 -0.393209 0.199934 +dPolE 16975.000000 70.000000 -0.096587 0.228777 +dPolE 17000.000000 70.000000 0.152324 0.260383 \ No newline at end of file diff --git a/tests/data/tools/dataconverter/readers/em_nion/EmNion.NeXus.NXem.Example.1.ipynb b/tests/data/dataconverter/readers/em_nion/EmNion.NeXus.NXem.Example.1.ipynb similarity index 100% rename from tests/data/tools/dataconverter/readers/em_nion/EmNion.NeXus.NXem.Example.1.ipynb rename to tests/data/dataconverter/readers/em_nion/EmNion.NeXus.NXem.Example.1.ipynb diff --git a/tests/data/tools/dataconverter/readers/em_nion/HAADF_01.ELabFTW.dat b/tests/data/dataconverter/readers/em_nion/HAADF_01.ELabFTW.dat similarity index 100% rename from tests/data/tools/dataconverter/readers/em_nion/HAADF_01.ELabFTW.dat rename to tests/data/dataconverter/readers/em_nion/HAADF_01.ELabFTW.dat diff --git a/tests/data/tools/dataconverter/readers/em_nion/HAADF_01.json b/tests/data/dataconverter/readers/em_nion/HAADF_01.json similarity index 100% rename from tests/data/tools/dataconverter/readers/em_nion/HAADF_01.json rename to tests/data/dataconverter/readers/em_nion/HAADF_01.json diff --git a/tests/data/tools/dataconverter/readers/em_nion/HAADF_01.npy b/tests/data/dataconverter/readers/em_nion/HAADF_01.npy similarity index 100% rename from tests/data/tools/dataconverter/readers/em_nion/HAADF_01.npy rename to tests/data/dataconverter/readers/em_nion/HAADF_01.npy diff --git a/tests/data/tools/dataconverter/readers/em_nion/eln_data.yaml b/tests/data/dataconverter/readers/em_nion/eln_data.yaml similarity index 100% rename from tests/data/tools/dataconverter/readers/em_nion/eln_data.yaml rename to tests/data/dataconverter/readers/em_nion/eln_data.yaml diff --git a/tests/data/dataconverter/readers/em_spctrscpy/README.md b/tests/data/dataconverter/readers/em_spctrscpy/README.md new file mode 100644 index 000000000..3f79a7b51 --- /dev/null +++ b/tests/data/dataconverter/readers/em_spctrscpy/README.md @@ -0,0 +1,2 @@ +This is a place for storing data for tests which verify the functionality of the em_spctrscpy reader. +An example for how to use the em_spctrscpy reader is available in *nomad-parser-nexus/examples/em*. \ No newline at end of file diff --git a/tests/data/tools/dataconverter/readers/em_spctrscpy/nomad_oasis_eln_schema_for_nx_em/eln_data_em.yaml b/tests/data/dataconverter/readers/em_spctrscpy/nomad_oasis_eln_schema_for_nx_em/eln_data_em.yaml similarity index 100% rename from tests/data/tools/dataconverter/readers/em_spctrscpy/nomad_oasis_eln_schema_for_nx_em/eln_data_em.yaml rename to tests/data/dataconverter/readers/em_spctrscpy/nomad_oasis_eln_schema_for_nx_em/eln_data_em.yaml diff --git a/tests/data/tools/dataconverter/readers/em_spctrscpy/nomad_oasis_eln_schema_for_nx_em/nxem.schema.archive.yaml b/tests/data/dataconverter/readers/em_spctrscpy/nomad_oasis_eln_schema_for_nx_em/nxem.schema.archive.yaml similarity index 100% rename from tests/data/tools/dataconverter/readers/em_spctrscpy/nomad_oasis_eln_schema_for_nx_em/nxem.schema.archive.yaml rename to tests/data/dataconverter/readers/em_spctrscpy/nomad_oasis_eln_schema_for_nx_em/nxem.schema.archive.yaml diff --git a/tests/data/tools/dataconverter/readers/example/testdata.json b/tests/data/dataconverter/readers/example/testdata.json similarity index 100% rename from tests/data/tools/dataconverter/readers/example/testdata.json rename to tests/data/dataconverter/readers/example/testdata.json diff --git a/tests/data/tools/dataconverter/readers/json_map/data.json b/tests/data/dataconverter/readers/json_map/data.json similarity index 100% rename from tests/data/tools/dataconverter/readers/json_map/data.json rename to tests/data/dataconverter/readers/json_map/data.json diff --git a/tests/data/tools/dataconverter/readers/json_map/data.mapping.json b/tests/data/dataconverter/readers/json_map/data.mapping.json similarity index 100% rename from tests/data/tools/dataconverter/readers/json_map/data.mapping.json rename to tests/data/dataconverter/readers/json_map/data.mapping.json diff --git a/tests/data/tools/dataconverter/readers/mpes/ELN_metadata_example.yaml b/tests/data/dataconverter/readers/mpes/ELN_metadata_example.yaml similarity index 100% rename from tests/data/tools/dataconverter/readers/mpes/ELN_metadata_example.yaml rename to tests/data/dataconverter/readers/mpes/ELN_metadata_example.yaml diff --git a/tests/data/tools/dataconverter/readers/mpes/Ref_nexus_mpes.log b/tests/data/dataconverter/readers/mpes/Ref_nexus_mpes.log similarity index 100% rename from tests/data/tools/dataconverter/readers/mpes/Ref_nexus_mpes.log rename to tests/data/dataconverter/readers/mpes/Ref_nexus_mpes.log diff --git a/tests/data/tools/dataconverter/readers/mpes/config_file.json b/tests/data/dataconverter/readers/mpes/config_file.json similarity index 100% rename from tests/data/tools/dataconverter/readers/mpes/config_file.json rename to tests/data/dataconverter/readers/mpes/config_file.json diff --git a/tests/data/tools/dataconverter/readers/mpes/xarray_saved_small_calibration.h5 b/tests/data/dataconverter/readers/mpes/xarray_saved_small_calibration.h5 similarity index 100% rename from tests/data/tools/dataconverter/readers/mpes/xarray_saved_small_calibration.h5 rename to tests/data/dataconverter/readers/mpes/xarray_saved_small_calibration.h5 diff --git a/tests/data/tools/dataconverter/readers/transmission/KTF-9_1_A.asc b/tests/data/dataconverter/readers/transmission/KTF-9_1_A.asc similarity index 100% rename from tests/data/tools/dataconverter/readers/transmission/KTF-9_1_A.asc rename to tests/data/dataconverter/readers/transmission/KTF-9_1_A.asc diff --git a/tests/data/tools/dataconverter/readers/transmission/KTF-9_1_A.sp b/tests/data/dataconverter/readers/transmission/KTF-9_1_A.sp similarity index 100% rename from tests/data/tools/dataconverter/readers/transmission/KTF-9_1_A.sp rename to tests/data/dataconverter/readers/transmission/KTF-9_1_A.sp diff --git a/tests/data/tools/dataconverter/readers/transmission/metadata.json b/tests/data/dataconverter/readers/transmission/metadata.json similarity index 100% rename from tests/data/tools/dataconverter/readers/transmission/metadata.json rename to tests/data/dataconverter/readers/transmission/metadata.json diff --git a/tests/data/nexus_test_data/201805_WSe2_arpes.nxs b/tests/data/nexus/201805_WSe2_arpes.nxs similarity index 100% rename from tests/data/nexus_test_data/201805_WSe2_arpes.nxs rename to tests/data/nexus/201805_WSe2_arpes.nxs diff --git a/tests/data/nexus_test_data/Ref_nexus_test.log b/tests/data/nexus/Ref_nexus_test.log similarity index 99% rename from tests/data/nexus_test_data/Ref_nexus_test.log rename to tests/data/nexus/Ref_nexus_test.log index 7576510ef..d8d2ac50e 100644 --- a/tests/data/nexus_test_data/Ref_nexus_test.log +++ b/tests/data/nexus/Ref_nexus_test.log @@ -1,4 +1,3 @@ -DEBUG - Creating converter from 3 to 5 DEBUG - ===== GROUP (//entry [NXarpes::/NXentry]): DEBUG - classpath: ['NXentry'] DEBUG - classes: diff --git a/tests/data/nexus.out b/tests/data/nexus/nexus.out similarity index 100% rename from tests/data/nexus.out rename to tests/data/nexus/nexus.out diff --git a/tests/data/tools/yaml2nxdl_test_data/NXattributes.yml b/tests/data/nyaml2nxdl/NXattributes.yml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/NXattributes.yml rename to tests/data/nyaml2nxdl/NXattributes.yml diff --git a/tests/data/tools/yaml2nxdl_test_data/NXellipsometry-docCheck.yaml b/tests/data/nyaml2nxdl/NXellipsometry-docCheck.yaml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/NXellipsometry-docCheck.yaml rename to tests/data/nyaml2nxdl/NXellipsometry-docCheck.yaml diff --git a/tests/data/tools/yaml2nxdl_test_data/NXfilelineError1.yml b/tests/data/nyaml2nxdl/NXfilelineError1.yml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/NXfilelineError1.yml rename to tests/data/nyaml2nxdl/NXfilelineError1.yml diff --git a/tests/data/tools/yaml2nxdl_test_data/NXfilelineError2.yml b/tests/data/nyaml2nxdl/NXfilelineError2.yml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/NXfilelineError2.yml rename to tests/data/nyaml2nxdl/NXfilelineError2.yml diff --git a/tests/data/tools/yaml2nxdl_test_data/NXfilelineError3.yml b/tests/data/nyaml2nxdl/NXfilelineError3.yml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/NXfilelineError3.yml rename to tests/data/nyaml2nxdl/NXfilelineError3.yml diff --git a/tests/data/tools/yaml2nxdl_test_data/NXmytests.yml b/tests/data/nyaml2nxdl/NXmytests.yml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/NXmytests.yml rename to tests/data/nyaml2nxdl/NXmytests.yml diff --git a/tests/data/tools/yaml2nxdl_test_data/NXnested_symbols.yml b/tests/data/nyaml2nxdl/NXnested_symbols.yml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/NXnested_symbols.yml rename to tests/data/nyaml2nxdl/NXnested_symbols.yml diff --git a/tests/data/tools/yaml2nxdl_test_data/NXtest_links.yml b/tests/data/nyaml2nxdl/NXtest_links.yml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/NXtest_links.yml rename to tests/data/nyaml2nxdl/NXtest_links.yml diff --git a/tests/data/tools/yaml2nxdl_test_data/Ref_NXattributes.nxdl.xml b/tests/data/nyaml2nxdl/Ref_NXattributes.nxdl.xml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/Ref_NXattributes.nxdl.xml rename to tests/data/nyaml2nxdl/Ref_NXattributes.nxdl.xml diff --git a/tests/data/tools/yaml2nxdl_test_data/Ref_NXellips.nxdl.xml b/tests/data/nyaml2nxdl/Ref_NXellips.nxdl.xml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/Ref_NXellips.nxdl.xml rename to tests/data/nyaml2nxdl/Ref_NXellips.nxdl.xml diff --git a/tests/data/tools/yaml2nxdl_test_data/Ref_NXellipsometry-docCheck.nxdl.xml b/tests/data/nyaml2nxdl/Ref_NXellipsometry-docCheck.nxdl.xml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/Ref_NXellipsometry-docCheck.nxdl.xml rename to tests/data/nyaml2nxdl/Ref_NXellipsometry-docCheck.nxdl.xml diff --git a/tests/data/tools/yaml2nxdl_test_data/Ref_NXellipsometry.yml b/tests/data/nyaml2nxdl/Ref_NXellipsometry.yml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/Ref_NXellipsometry.yml rename to tests/data/nyaml2nxdl/Ref_NXellipsometry.yml diff --git a/tests/data/tools/yaml2nxdl_test_data/Ref_NXentry.nxdl.xml b/tests/data/nyaml2nxdl/Ref_NXentry.nxdl.xml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/Ref_NXentry.nxdl.xml rename to tests/data/nyaml2nxdl/Ref_NXentry.nxdl.xml diff --git a/tests/data/tools/yaml2nxdl_test_data/Ref_NXentry.yml b/tests/data/nyaml2nxdl/Ref_NXentry.yml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/Ref_NXentry.yml rename to tests/data/nyaml2nxdl/Ref_NXentry.yml diff --git a/tests/data/tools/yaml2nxdl_test_data/Ref_NXmytests.nxdl.xml b/tests/data/nyaml2nxdl/Ref_NXmytests.nxdl.xml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/Ref_NXmytests.nxdl.xml rename to tests/data/nyaml2nxdl/Ref_NXmytests.nxdl.xml diff --git a/tests/data/tools/yaml2nxdl_test_data/Ref_NXnested_symbols.nxdl.xml b/tests/data/nyaml2nxdl/Ref_NXnested_symbols.nxdl.xml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/Ref_NXnested_symbols.nxdl.xml rename to tests/data/nyaml2nxdl/Ref_NXnested_symbols.nxdl.xml diff --git a/tests/data/tools/yaml2nxdl_test_data/Ref_NXtest_links.nxdl.xml b/tests/data/nyaml2nxdl/Ref_NXtest_links.nxdl.xml similarity index 100% rename from tests/data/tools/yaml2nxdl_test_data/Ref_NXtest_links.nxdl.xml rename to tests/data/nyaml2nxdl/Ref_NXtest_links.nxdl.xml diff --git a/tests/data/tools/dataconverter/readers/apm/Apm.NeXus.Apm.Example.1.ipynb b/tests/data/tools/dataconverter/readers/apm/Apm.NeXus.Apm.Example.1.ipynb deleted file mode 100644 index 2f2e6eb3f..000000000 --- a/tests/data/tools/dataconverter/readers/apm/Apm.NeXus.Apm.Example.1.ipynb +++ /dev/null @@ -1,419 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## NOMAD-PARSER-NEXUS/DATACONVERTER demo for Atom Probe Microscopy (APM) data" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "### **Step 1:** Check that everything is ready to go and download example data for APM. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! pip list | grep 'nomad\\|nexus' && jupyter serverextension list && jupyter labextension list && python -V" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Set the nexusparser directory." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import nexusparser\n", - "nexus_dir = os.path.dirname(nexusparser.__file__)\n", - "print(nexus_dir)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### **Step 2:** Download APM-specific example data." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "For this case, the data can be found in zenodo." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import shutil # unpacks in current path unless an additional path argument is provided" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# http://dx.doi.org/10.5281/zenodo.6808516\n", - "! curl --output APM.LEAP.Datasets.1.zip https://zenodo.org/record/6808516/files/APM.LEAP.Datasets.1.zip\n", - "shutil.unpack_archive('APM.LEAP.Datasets.1.zip')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "These files should serve exclusively as examples. The dataconverter for APM always requires a triplet of files:\n", - "* A **community or vendor file** with the ion positions and mass-to-charge state ratio values for the tomographic reconstruction. POS, ePOS, or APT are allowed.\n", - "* A file with **ranging definitions**, i.e. how mass-to-charge-state ratio values map on ion species. RNG or RRNG are allowed.\n", - "* A **file with additional metadata (edited manually or via an ELN) in YAML format**. The eln_data_apm.yaml file in the example can be edited with a text editor.\n", - "For GUI-based editing, a NOMAD OASIS instance is needed.
\n", - "Please note that the metadata inside the provided eln_data_apm.yaml file has example data in it.\n", - "These reflect not necessarily the conditions when the raw data for the example were given. The file is meant to be edited!" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "### **Step 3:** Run your APM-specific dataconverter/readers/ on the example data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we run our parser. The --reader flag takes the atom probe microscopy reader (apm), the --nxdl flag takes the application definition for this technique.
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Inspect what can/should be in the NeXus file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! echo {nexus_dir}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### **Step 3a:** Optionally see the command line help of the dataconverter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! python3 {nexus_dir}/tools/dataconverter/convert.py --help" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### **Step 3b:** Optionally explore all paths which NXapm provides." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# to inspect what can/should all be in the NeXus file\n", - "! python3 {nexus_dir}/tools/dataconverter/convert.py --nxdl NXapm --generate-template" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### **Step 3c**: Convert the files in the example into an NXapm-compliant NeXus HDF5 file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "! python3 {nexus_dir}/tools/dataconverter/convert.py \\\n", - "--reader apm \\\n", - "--nxdl NXapm \\\n", - "--input-file R31_06365-v02.pos \\\n", - "--input-file R31_06365-v02.rrng \\\n", - "--input-file eln_data_apm.yaml \\\n", - "--output usa_pos.nxs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The key take home message is that the command above-specified triggers the automatic creation of the HDF5 file. This *.nxs file, is an HDF5 file." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "### **Step 4:** Inspect the HDF5/NeXus file apm*.test.nxs using H5Web." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from jupyterlab_h5web import H5Web" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "h5_file_name = 'usa_pos.nxs'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "H5Web(h5_file_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also visualize the .nxs file by double clicking on it in the file explorer panel to the left side of your jupyter lab screen in the browser." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "### **Step 5:** Optionally, do some post-processing with the generated usa_pos.nxs file." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To compute a mass-to-charge histogram and explore eventual ranging definitions that have also been carried over in the conversion step (step 6)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from matplotlib.collections import PatchCollection\n", - "from matplotlib.patches import Rectangle\n", - "plt.rcParams['figure.figsize'] = [20, 10]\n", - "plt.rcParams['figure.dpi'] = 300\n", - "import h5py as h5\n", - "#needs shutils for decompressing zip archives, which is a default module/package in Python since >=v3.6" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Read mass-to-charge-state ratio values, create a histogram (\"mass spectrum\"), and mark ranges." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load data and ranges\n", - "hf = h5.File(h5_file_name, 'r')\n", - "mq = hf['entry/atom_probe/mass_to_charge_conversion/mass_to_charge'][:]\n", - "nions = np.uint32(hf['entry/atom_probe/ranging/number_of_ion_types'])\n", - "print('Array with mass-to-charge-state ratios loaded')\n", - "print(str(nions) + ' iontypes were distinguished')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define binning\n", - "[mqmin, mqmax] = [0., 100.0] # Da np.max(mq)]\n", - "print('Dataset ranging from [' + str(mqmin) + ', ' + str(mqmax) +'] Da.')\n", - "mqincr = 0.01 #Da\n", - "print('Using a mass-to-charge-state ratio resolution of '+str(mqincr)+' Da.')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# transform collection of mass-to-charge-state ratios into a histogram\n", - "hst1d = np.unique(np.uint64(np.floor((mq[np.logical_and(mq >= mqmin, mq <= mqmax)] - mqmin) / mqincr)), return_counts=True)\n", - "nbins = np.uint64((mqmax - mqmin) / mqincr + 1)\n", - "print('Histogram has ' + str(nbins) + ' bins.')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# use matplotlib and numpy to plot histogram data \n", - "xy = np.zeros([nbins, 2], np.float64)\n", - "xy[:,0] = np.linspace(mqmin + mqincr, mqmax + mqincr, nbins, endpoint=True)\n", - "xy[:,1] = 0.5 # * np.ones([nbins], np.float64) # 0.5 to be able to plot logarithm you can not measure half an atom\n", - "for i in np.arange(0, len(hst1d[0])):\n", - " binidx = hst1d[0][i]\n", - " xy[binidx, 1] = hst1d[1][i]\n", - "print('Mass-to-charge-state histogram created.')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "[xmi, xmx, ymi, ymx] = [mqmin, 10**np.ceil(np.log10(mqmax)), 0.5, 10**np.ceil(np.log10(np.max(xy[:,1])))]\n", - "[xmi, xmx, ymi, ymx] = [mqmin, mqmax, 0.5, 10**np.ceil(np.log10(np.max(xy[:,1])))]\n", - "fig, cnts_over_mq = plt.subplots(1, 1)\n", - "plt.plot(xy[:, 0], xy[:, 1], color='blue', alpha=0.5, linewidth=1.0)\n", - "for i in np.arange(1,nions + 1):\n", - " # load ranges and plot them\n", - " ranges = hf['entry/atom_probe/ranging/peak_identification/ion' + str(i) + '/mass_to_charge_range'][:]\n", - " for min_max in ranges:\n", - " cnts_over_mq.vlines(min_max[0], 0, 1, transform=cnts_over_mq.get_xaxis_transform(), alpha=0.1, color='grey', linestyles='dotted')\n", - " cnts_over_mq.vlines(min_max[1], 0, 1, transform=cnts_over_mq.get_xaxis_transform(), alpha=0.1, color='grey', linestyles='dotted')\n", - " #rng = Rectangle((min_max[0], ymi), min_max[1] - min_max[0], ymx - ymi, edgecolor='r', facecolor=\"none\")\n", - "# plt.xticks([1, 2, 3, 4, 5, 6, 7, 8, 9], ['Min', '0.0025', '0.025', '0.25', '0.50', '0.75', '0.975', '0.9975', 'Max'])\n", - "plt.yscale('log')\n", - "plt.legend( [r'Mass-to-charge-state ratio $\\Delta\\frac{m}{q} = $'+str(mqincr)+' Da'], loc='upper right')\n", - "plt.xlabel(r'Mass-to-charge-state-ratio (Da)')\n", - "plt.ylabel(r'Counts')\n", - "print('Mass-to-charge-state histogram visualized.')\n", - "# scale bar with add margin to the bottom and top of the yaxis to avoid that lines fall on x axis\n", - "margin=0.01 # polishing the margins\n", - "plt.xlim([-margin * (xmx - xmi) + xmi, +margin * (xmx - xmi) + xmx])\n", - "plt.ylim([ymi, +margin * (ymx - ymi) + ymx])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#save the figure\n", - "figfn = h5_file_name + '.MassToChargeStateRatios.png'\n", - "fig.savefig(figfn, dpi=300, facecolor='w', edgecolor='w', orientation='landscape', format='png', \n", - " transparent=False, bbox_inches='tight', pad_inches=0.1, metadata=None)\n", - "#plt.close('all')\n", - "print(figfn + ' stored to disk.')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Further comments:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* Feel free to explore our atom probe microscopy containers in the north branch for more advanced processing" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.10" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tests/data/tools/dataconverter/readers/ellips/ELLIPSOMETRY.NeXus.READER.EXAMPLE.02.ipynb b/tests/data/tools/dataconverter/readers/ellips/ELLIPSOMETRY.NeXus.READER.EXAMPLE.02.ipynb deleted file mode 100644 index 820d6c12f..000000000 --- a/tests/data/tools/dataconverter/readers/ellips/ELLIPSOMETRY.NeXus.READER.EXAMPLE.02.ipynb +++ /dev/null @@ -1,307 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## nomad-parser-nexus demo for Ellipsometry data" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "### **Step -1:** Create a new virtual environment and set up dependencies for jupyterlab_h5web.
This section **should only be run if you do not have Jupyter Lab, its extensions and the extra needed packages.**
For use within the Nomad UI this section should be skipped.
These cells can be run in a Jupyter notebook or copied to a terminal without the \"!\"." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run the following to start with a fresh virtualenv in **your terminal** in which you are installing and then running **Jupyter lab** if you wish to:
\n", - "```pip install virtualenv && virtualenv --python=python3.7 .nexusenv && source .nexusenv/bin/activate```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Install jupyter, jupyter-lab and h5web extensions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! pip install --upgrade nodejs && pip install ipywidgets h5py==3.5.0 h5glance==0.7 h5grove==0.0.14 jupyterlab[full]==3.2.9 jupyterlab_h5web[full]==1.3.0 punx==0.2.5 nexpy==0.14.1 silx[full]==1.0.0 && jupyter lab build" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Enable the extensions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! jupyter nbextension enable --py widgetsnbextension" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "! jupyter serverextension enable jupyterlab_h5web" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "### **Step 0:** Installing and testing nomad-parser-nexus module.
This section **should only be run if you are not running this within NOMAD.**
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Install nomad and its dependencies. Do not run the following cell if you have a nomad installation running. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "! pip install --upgrade pip && pip install nomad-lab==1.0.0 --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple\n", - "! pip list" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Install the nexusparser and its requirements" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! git clone https://github.com/nomad-coe/nomad-parser-nexus.git --recursive && cd nomad-parser-nexus && git status && pip install -r requirements.txt && pip install -e .[all]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following cell restarts the kernel after the nexusparser installation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import os\n", - "os._exit(00)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "### **Step 1:** Check that everything is ready to go and look for example data for Ellipsometry. " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "Check dependencies of nomad and of the nexusparser and prints them. If the nexusparser and nomad-lab are installed, you are ready to go.
Check if jupyterlab_h5web server and lab extensions are enabled and OK. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! pip list | grep 'nomad\\|nexus'\n", - "! jupyter serverextension list\n", - "! jupyter labextension list" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "For this case, the data can be found in the current working directory." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "### **Step 2:** Run your ellipsometry-specific dataconverter/readers/ on the example data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Set the nexusparser directory." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import nexusparser\n", - "nexus_dir = os.path.dirname(nexusparser.__file__) # where the nexusparser module is located!!!!\n", - "print(nexus_dir)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we run our parser. The --reader flag takes the ellipsometry reader (ellips), the --nxdl flag takes the application definition for this technique.
" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "! python3 {nexus_dir}/tools/dataconverter/convert.py \\\n", - "--reader ellips \\\n", - "--nxdl NXellipsometry \\\n", - "--input-file test.yaml \\\n", - "--output ellips.test.nxs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The command in the cell above has created an HDF5 file. This *.nxs file, is an HDF5 file." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "### **Step 3:** Inspect the HDF5/NeXus file apm.test.nxs using H5Web" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from jupyterlab_h5web import H5Web" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "H5Web('ellips.test.nxs')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here is where the general template ends. Continue to fill the notebook based on
\n", - "**your own** post-processing of the *.nxs file." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "### **Step 4:** Extract for instance data inside ellips.test.nxs and to post processing (to be done for this particular case)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.12" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tests/data/tools/dataconverter/readers/ellips/test.yaml b/tests/data/tools/dataconverter/readers/ellips/test.yaml deleted file mode 100644 index 16e77952e..000000000 --- a/tests/data/tools/dataconverter/readers/ellips/test.yaml +++ /dev/null @@ -1,91 +0,0 @@ -#filename: tests/data/tools/dataconverter/readers/ellips/test-data.dat -filename: test-data.dat -skip: 3 -sep: "\t" - -# if the file has a block structure, -# which column has the block index? -blocks: - - type - - angle_of_incidence - -colnames: - - type - - wavelength - - angle_of_incidence - - psi - - delta - - err.psi - - err.delta -x-var: wavelength -y-var: - - psi - - delta -err-var: - - err.psi - - err.delta -parameters: - - type - - angle - -definition: NXellipsometry -definition/\@version: 0.0.2 -definition/\@url: https://github.com/FAIRmat-Experimental/nexus_definitions/tree/fairmat-ellips/contributed_definitions - -experiment_identifier: exp-ID -experiment_description: RC2 scan on 2nm SiO2 on Si in air -start_time: "2022-01-27T12:05:35+00:00" - -acquisition_program/program: CompleteEASE -acquisition_program/version: "6.37" -acquisition_program/\@url: https://www.jawoollam.com/ellipsometry-software/completeease - -name: Name Surname -affiliation: HU Berlin -address: Unter den Linden -email: name@hu-berlin.de - -# NXinstrument: -model: RC2 -model/\@version: 0.0.1 -company: J.A. Woollam Co. -firmware: WVASE -firmware/\@version: 3.882 -firmware/\@url: https://www.jawoollam.com/ellipsometry-software/wvase -light_source: arc lamp -#light_source/target_material: Xe -focussing_probes: false -angular_spread: 0.2 -angular_spread/@units: sr -ellipsometry_type: dual compensator -calibration_status: no calibration -stage_type: manual stage -detector_type: CCD spectrometer -count_time: 1 -count_time/\@units: s -integration_time: 0 -integration_time/\@units: s -rotating_element: compensator (source side) -# TAKE care: if you use the yaml list syntax, you'll break the -# reader tests, check the reader code -# - compensator (source side) -# - compensator (detector side) -# Should be both compensators, source and detector side. -# needs to be taken care of in the reader - -# Angle of incidence and wavelength are read by the reader -# and we just have to define the units here: -angle_of_incidence/\@units: "degrees" -wavelength/\@units: "angstrom" - -# NXsample: -atom_types: Si, O -sample_name: 2nm SiO2 on Si -sample_history: Commercially purchased sample -layer_structure: 2nm SiO2 on Si -data_identifier: 1 -data_type: psi/delta -column_names: - - psi - - delta -medium: air diff --git a/tests/data/tools/dataconverter/readers/em_spctrscpy/README.md b/tests/data/tools/dataconverter/readers/em_spctrscpy/README.md deleted file mode 100644 index 7a844f698..000000000 --- a/tests/data/tools/dataconverter/readers/em_spctrscpy/README.md +++ /dev/null @@ -1,82 +0,0 @@ -The tools of the NOMAD parser for [NEXUS](https://www.nexusformat.org/) can also be used -without a NOMAD OASIS installation. There are two main use cases: -- Use the DATACONVERTER/em_spctrscpy for transcoding vendor and community files to - NeXus files so that these are compliant with a specific NeXus application definition - [NEXUS-FAIRMAT-PROPOSAL](https://fairmat-experimental.github.io/nexus-fairmat-proposal/). - In this example NXem. -- Use the YAML2NXDL converter during editing and developing - NeXus base classes and application definitions. - -## Getting started - prepare your environment - -It is recommended to install the tool in an own virtual environment as -some installation steps will install specific versions of packages which -might be in conflict with existent ones in your environment. -You can install the tools as standalone tools. We make the following assumptions: -- You have a python in version 3.7 installed. Higher versions can be used but might - need modifications for specific packages on which nomad-parser-nexus depends. -- You can but do not need to be inside a conda environment. - -``` -pip install virtualenv && virtualenv --python=python3.7 .nexusenv && source .nexusenv/bin/activate -pip install --upgrade pip==22.2.2 && pip install --upgrade nodejs==0.1.1 -pip install jupyterlab_h5web[full]==6.0.1 -``` - -## Getting started - install the nomad-parser-nexus tool - -``` -git clone https://github.com/nomad-coe/nomad-parser-nexus.git --recursive -cd nomad-parser-nexus/ -git branch -a -pip install -e . -``` - -With these two steps the installation is complete. - -### Using the tool - -The tool can be used as a command line application or started within jupyter lab: - -``` -jupyter lab -``` - -If you are using a Linux operating system, a browser tab should open up -which shows the running jupyter lab instance. If you are on Windows and use WSL2, - -this command into the command line will leave you with a message in the -console reading: - -``` -... -Jupyter Server <> is running at. -http://localhost:8888/lab?token=<> -... - -``` - -You should copy this localhost address into your browser, so that you can also -see the running jupyter lab instance and interact with it graphically. - -If you are on Windows and use WSL2 an error will follow after the localhost address, -which can be ignored though. - -It can happen that H5Web visualizations show differences across web browsers. -We observed that for some configurations the H5Web plots are displayed -cleaner for the chrome browser than for firefox. - -### Calling the DATACONVERTER - -There is a jupyter notebook (ipynb) for each technique which you should -use to interact with the tool. - -## Where should one place the files -For the dataconverter, you can find the respective notebooks in - -``` -tests/data/tools/dataconverter/readers/em-spctrscpy/ -``` - -Go one directory deeper to explore the specific jupyter notebook for your method of choice. - diff --git a/tests/data/tools/dataconverter/readers/mpes/mpes.NeXus.mpes.Example.1.ipynb b/tests/data/tools/dataconverter/readers/mpes/mpes.NeXus.mpes.Example.1.ipynb deleted file mode 100644 index 8ab1e29c2..000000000 --- a/tests/data/tools/dataconverter/readers/mpes/mpes.NeXus.mpes.Example.1.ipynb +++ /dev/null @@ -1,331 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## nomad-parser-nexus demo for Multidimensional Photoemission Spectroscopy (MPES)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Jupyter notebook displaying parsing from FHI preprocessing software output (x-array based .h5) to NXmpes formatted nexus" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "### **Step -1:** Create a new virtual environment and set up dependencies for jupyterlab_h5web.
This section **should only be run if you do not have Jupyter Lab, its extensions and the extra needed packages.**
For use within the Nomad UI this section should be skipped.
These cells can be run in a Jupyter notebook or copied to a terminal without the \"!\"." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run the following to start with a fresh virtualenv in **your terminal** in which you are installing and then running **Jupyter lab** if you wish to:
\n", - "```pip install virtualenv && virtualenv --python=python3.7 .nexusenv && source .nexusenv/bin/activate```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Install jupyter, jupyter-lab and h5web extensions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! pip install --upgrade nodejs && pip install ipywidgets h5py==3.5.0 h5glance==0.7 h5grove==0.0.14 jupyterlab[full]==3.2.9 jupyterlab_h5web[full]==1.3.0 punx==0.2.5 nexpy==0.14.1 silx[full]==1.0.0 && jupyter lab build" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Enable the extensions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! jupyter nbextension enable --py widgetsnbextension" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "! jupyter serverextension enable jupyterlab_h5web" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "### **Step 0:** Installing and testing nomad-parser-nexus module.
This section **should only be run if you are not running this within NOMAD.** " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Install nomad and its dependencies. Do not run the following cell if you have a nomad installation running. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "! pip install --upgrade pip && pip install nomad-lab==1.0.0 --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple\n", - "! pip list" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Install the nexusparser and its requirements" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! git clone https://github.com/nomad-coe/nomad-parser-nexus.git --recursive && cd nomad-parser-nexus && git status && pip install -r requirements.txt && pip install -e .[all]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following cell restarts the kernel after the nexusparser installation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import os\n", - "os._exit(00)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "### **Step 1:** Download example data (for mpes)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "Check dependencies of nomad and of the nexusparser and prints them. If the nexusparser and nomad-lab are installed, you are ready to go.
Check if jupyterlab_h5web server and lab extensions are enabled and OK. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! pip list | grep 'nomad\\|nexus'\n", - "! jupyter serverextension list\n", - "! jupyter labextension list" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Download mpes example data from Zenodo" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! curl -o MoTe_xarray_final.h5 https://zenodo.org/record/5913599/files/MoTe_xarray_final.h5?download=1" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "### **Step 2:** Run your mpes-specific parser on the example data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Set the nexusparser directory." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import nexusparser\n", - "nexus_dir = os.path.dirname(nexusparser.__file__) # where the nexusparser module is located!!!!\n", - "print(nexus_dir)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we run our parser. The --reader flag takes the mpes reader (mpes), the --nxdl flag takes the application definition for this technique.
" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "! python \"{nexus_dir}/tools/dataconverter/convert.py\" \\\n", - "--reader mpes \\\n", - "--nxdl NXmpes \\\n", - "--input-file MoTe_xarray_final.h5 \\\n", - "--input-file config_file.json \\\n", - "--input-file ELN_metadata_example.yaml \\\n", - "--output mpes.test.nxs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Run the same parser alternatively using a function " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from nexusparser.tools.dataconverter.convert import convert" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "convert(input_file=[\"MoTe_xarray_final.h5\", \"config_file.json\", \"ELN_metadata_example.yaml\"],\n", - " reader='mpes',\n", - " nxdl='NXmpes',\n", - " output='mpes.test.nxs')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The key take home message is that the command above-specified triggers the automatic creation of the HDF5 file.
\n", - "This *.nxs file, is an HDF5 file." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "### **Step 3:** Inspect the HDF5/NeXus file apm.test.nxs using H5Web" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from jupyterlab_h5web import H5Web" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "h5_file_name = 'mpes.test.nxs'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "H5Web(h5_file_name)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tests/dataconverter/README.md b/tests/dataconverter/README.md new file mode 100644 index 000000000..d34997a08 --- /dev/null +++ b/tests/dataconverter/README.md @@ -0,0 +1,4 @@ +This is the place for storing code for tests which probe key functionalities of the generic dataconverter. + +## Contact person in FAIRmat for these tests +Sherjeel Shabih \ No newline at end of file diff --git a/tests/tools/dataconverter/__init__.py b/tests/dataconverter/__init__.py similarity index 100% rename from tests/tools/dataconverter/__init__.py rename to tests/dataconverter/__init__.py diff --git a/tests/tools/dataconverter/test_convert.py b/tests/dataconverter/test_convert.py similarity index 83% rename from tests/tools/dataconverter/test_convert.py rename to tests/dataconverter/test_convert.py index b869ee5e4..7cd7ff5dc 100644 --- a/tests/tools/dataconverter/test_convert.py +++ b/tests/dataconverter/test_convert.py @@ -23,17 +23,15 @@ from click.testing import CliRunner import pytest import h5py -from nomad.datamodel import EntryArchive -from nexusparser.tools import nexus # noqa: E402 -import nexusparser.tools.dataconverter.convert as dataconverter -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader -from nexusparser.parser import NexusParser # noqa: E402 +from nexusutils.nexus import nexus # noqa: E402 +import nexusutils.dataconverter.convert as dataconverter +from nexusutils.dataconverter.readers.base.reader import BaseReader def move_xarray_file_to_tmp(tmp_path): """Moves the xarray file, which is used to test linking into the tmp_path directory.""" test_file_path = os.path.join(os.path.dirname(__file__), - "../../data/tools/dataconverter/readers/mpes") + "../data/dataconverter/readers/mpes") file_util.copy_file(os.path.join(test_file_path, "xarray_saved_small_calibration.h5"), os.path.join(tmp_path, "xarray_saved_small_calibration.h5")) @@ -41,7 +39,7 @@ def move_xarray_file_to_tmp(tmp_path): def restore_xarray_file_from_tmp(tmp_path): """Restores the xarray file from the tmp_path directory.""" test_file_path = os.path.join(os.path.dirname(__file__), - "../../data/tools/dataconverter/readers/mpes") + "../data/dataconverter/readers/mpes") os.remove(os.path.join(test_file_path, "xarray_saved_small_calibration.h5")) file_util.move_file(os.path.join(tmp_path, "xarray_saved_small_calibration.h5"), os.path.join(test_file_path, "xarray_saved_small_calibration.h5")) @@ -116,7 +114,7 @@ def test_links_and_virtual_datasets(tmp_path): move_xarray_file_to_tmp(tmp_path) dirpath = os.path.join(os.path.dirname(__file__), - "../../data/tools/dataconverter/readers/example") + "../data/dataconverter/readers/example") runner = CliRunner() result = runner.invoke(dataconverter.convert_cli, [ "--nxdl", @@ -154,7 +152,7 @@ def test_compression(tmp_path): """A test for the convert CLI to check whether a Dataset object is compressed.""" dirpath = os.path.join(os.path.dirname(__file__), - "../../data/tools/dataconverter/readers/example") + "../data/dataconverter/readers/example") move_xarray_file_to_tmp(tmp_path) @@ -168,7 +166,7 @@ def test_compression(tmp_path): test_nxs = h5py.File(os.path.join(tmp_path, "test_output.h5"), "r") assert 'entry/test_compression/compressed_data' in test_nxs assert isinstance(test_nxs['/entry/test_compression/compressed_data'], h5py.Dataset) - assert test_nxs['/entry/test_compression/compressed_data'].compression is 'gzip' + assert test_nxs['/entry/test_compression/compressed_data'].compression == 'gzip' assert test_nxs['/entry/test_compression/not_to_compress'].compression is None restore_xarray_file_from_tmp(tmp_path) @@ -177,33 +175,26 @@ def test_compression(tmp_path): def test_mpes_writing(tmp_path): """Check if mpes example can be reproduced""" # dataconverter - dirpath = os.path.join(os.path.dirname(__file__), "../../data/tools/dataconverter/readers/mpes") + dirpath = os.path.join(os.path.dirname(__file__), "../data/dataconverter/readers/mpes") dataconverter.convert((os.path.join(dirpath, "xarray_saved_small_calibration.h5"), os.path.join(dirpath, "config_file.json")), "mpes", "NXmpes", os.path.join(tmp_path, "mpes.small_test.nxs"), False, False) # check generated nexus file - example_data = os.path.join(tmp_path, 'mpes.small_test.nxs') - logger = logging.getLogger() + test_data = os.path.join(tmp_path, 'mpes.small_test.nxs') + logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) - handler = logging.\ - FileHandler(os.path.join(tmp_path, 'nexus_test.log'), 'w') - handler.setLevel(logging.DEBUG) + handler = logging. \ + FileHandler(os.path.join(tmp_path, 'mpes_test.log'), 'w') formatter = logging.Formatter('%(levelname)s - %(message)s') + handler.setLevel(logging.DEBUG) handler.setFormatter(formatter) logger.addHandler(handler) - nexus_helper = nexus.HandleNexus(logger, [example_data]) + nexus_helper = nexus.HandleNexus(logger, [test_data]) nexus_helper.process_nexus_master_file(None) - with open(os.path.join(tmp_path, 'nexus_test.log'), 'r') as logfile: + with open(os.path.join(tmp_path, 'mpes_test.log'), 'r') as logfile: log = logfile.readlines() with open(os.path.join(dirpath, 'Ref_nexus_mpes.log'), 'r') as logfile: ref_log = logfile.readlines() assert log == ref_log - # parsing to NOMAD - archive = EntryArchive() - import structlog - NexusParser().parse(example_data, archive, structlog.get_logger()) - assert archive.nexus.nx_application_mpes.\ - nx_group_ENTRY[0].nx_group_PROCESS[0].nx_group_energy_calibration.\ - nx_field_calibrated_axis.nx_value[0] == pytest.approx(-14.264604, rel=1e-6) diff --git a/tests/tools/dataconverter/test_helpers.py b/tests/dataconverter/test_helpers.py similarity index 96% rename from tests/tools/dataconverter/test_helpers.py rename to tests/dataconverter/test_helpers.py index d6b648c2a..0d55eb3a1 100644 --- a/tests/tools/dataconverter/test_helpers.py +++ b/tests/dataconverter/test_helpers.py @@ -23,8 +23,8 @@ import pytest import numpy as np -import nexusparser.tools.dataconverter.helpers as helpers -from nexusparser.tools.dataconverter.template import Template +import nexusutils.dataconverter.helpers as helpers +from nexusutils.dataconverter.template import Template def alter_dict(data_dict: Template, key: str, value: object): @@ -62,14 +62,14 @@ def listify_template(data_dict: Template): @pytest.fixture(name="nxdl_root") def fixture_nxdl_root(): """pytest fixture to load the same NXDL file for all tests.""" - nxdl_file = os.path.join("tests", "data", "tools", "dataconverter", "NXtest.nxdl.xml") + nxdl_file = os.path.join("tests", "data", "dataconverter", "NXtest.nxdl.xml") yield ET.parse(nxdl_file).getroot() @pytest.fixture(name="template") def fixture_template(): """pytest fixture to use the same template in all tests""" - nxdl_root = ET.parse("tests/data/tools/dataconverter/NXtest.nxdl.xml").getroot() + nxdl_root = ET.parse("tests/data/dataconverter/NXtest.nxdl.xml").getroot() template = Template() helpers.generate_template_from_nxdl(nxdl_root, template) yield template @@ -84,8 +84,8 @@ def fixture_filled_test_data(template, tmp_path): # because h5py.ExternalLink is modifying it while # linking the nxs file. file_util.copy_file(f"{os.path.dirname(__file__)}" - f"/../../" - f"data/tools/dataconverter/" + f"/../" + f"data/dataconverter/" f"readers/mpes/" f"xarray_saved_small_cali" "bration.h5", tmp_path) @@ -138,7 +138,7 @@ def fixture_filled_test_data(template, tmp_path): TEMPLATE["required"]["/ENTRY[my_entry]/NXODD_name/date_value"] = "2022-01-22T12:14:12.05018+00:00" # pylint: disable=E1126 TEMPLATE["optional"]["/ENTRY[my_entry]/required_group/description"] = "An example description" TEMPLATE["optional"]["/ENTRY[my_entry]/required_group2/description"] = "An example description" -TEMPLATE["optional_parents"].append("/ENTRY[entry]/optional_parent") +# TEMPLATE["optional_parents"].append("/ENTRY[entry]/optional_parent") @pytest.mark.parametrize("data_dict,error_message", [ diff --git a/tests/tools/dataconverter/test_readers.py b/tests/dataconverter/test_readers.py similarity index 89% rename from tests/tools/dataconverter/test_readers.py rename to tests/dataconverter/test_readers.py index 6b8d10b53..8178f0eb9 100644 --- a/tests/tools/dataconverter/test_readers.py +++ b/tests/dataconverter/test_readers.py @@ -24,12 +24,12 @@ import pytest -from nexusparser.tools.dataconverter.readers.base.reader import BaseReader -from nexusparser.tools.dataconverter.convert import \ +from nexusutils.dataconverter.readers.base.reader import BaseReader +from nexusutils.dataconverter.convert import \ get_names_of_all_readers, get_reader -from nexusparser.tools.dataconverter.helpers import \ +from nexusutils.dataconverter.helpers import \ validate_data_dict, generate_template_from_nxdl -from nexusparser.tools.dataconverter.template import Template +from nexusutils.dataconverter.template import Template def get_reader_name_from_reader_object(reader) -> str: @@ -43,7 +43,7 @@ def get_reader_name_from_reader_object(reader) -> str: def get_readers_file_names() -> List[str]: """Helper function to parametrize paths of all the reader Python files""" - return glob.glob("nexusparser/tools/dataconverter/readers/*/reader.py") + return glob.glob("nexusutils/dataconverter/readers/*/reader.py") def get_all_readers() -> List[BaseReader]: @@ -78,8 +78,8 @@ def test_has_correct_read_func(reader): reader_name = get_reader_name_from_reader_object(reader) - def_dir = os.path.join(os.getcwd(), "nexusparser", "definitions") - dataconverter_data_dir = os.path.join("tests", "data", "tools", "dataconverter") + def_dir = os.path.join(os.getcwd(), "nexusutils", "definitions") + dataconverter_data_dir = os.path.join("tests", "data", "dataconverter") input_files = glob.glob(os.path.join(dataconverter_data_dir, "readers", reader_name, "*")) for supported_nxdl in reader.supported_nxdls: diff --git a/tests/tools/dataconverter/test_template.py b/tests/dataconverter/test_template.py similarity index 100% rename from tests/tools/dataconverter/test_template.py rename to tests/dataconverter/test_template.py diff --git a/tests/tools/dataconverter/test_writer.py b/tests/dataconverter/test_writer.py similarity index 93% rename from tests/tools/dataconverter/test_writer.py rename to tests/dataconverter/test_writer.py index d078a87f6..d690b0e51 100644 --- a/tests/tools/dataconverter/test_writer.py +++ b/tests/dataconverter/test_writer.py @@ -22,7 +22,7 @@ import pytest import h5py -from nexusparser.tools.dataconverter.writer import Writer +from nexusutils.dataconverter.writer import Writer from .test_helpers import fixture_filled_test_data, fixture_template # pylint: disable=unused-import @@ -32,7 +32,7 @@ def fixture_writer(filled_test_data, tmp_path): """pytest fixture to setup Writer object to be used by tests with dummy data.""" writer = Writer( filled_test_data, - os.path.join("tests", "data", "tools", "dataconverter", "NXtest.nxdl.xml"), + os.path.join("tests", "data", "dataconverter", "NXtest.nxdl.xml"), os.path.join(tmp_path, "test.nxs") ) yield writer diff --git a/tests/nexus/README.md b/tests/nexus/README.md new file mode 100644 index 000000000..37118b3b9 --- /dev/null +++ b/tests/nexus/README.md @@ -0,0 +1,9 @@ +This is the place for storing code for tests which probe key functionalities of the nexus(checker). +Nexuschecker is a core package of which implements functionalities for traversing the XML tree +that is behind the hierarchical data model of NeXus. The nexuschecker `nexus.py` can also be used +as a standalone tool to check how an instance of a NeXus/HDF5 file compares to a given application definition. + +Sandor, please reactivate here your checker code from the master branch and maybe add a small description here. + +## Contact person in FAIRmat for these tests +Sándor Brockhauser \ No newline at end of file diff --git a/nexusparser/__main__.py b/tests/nexus/__init__.py similarity index 60% rename from nexusparser/__main__.py rename to tests/nexus/__init__.py index 21be907a8..db96892bc 100644 --- a/nexusparser/__main__.py +++ b/tests/nexus/__init__.py @@ -1,6 +1,3 @@ -"""main file of tools module - -""" # # Copyright The NOMAD Authors. # @@ -18,18 +15,3 @@ # See the License for the specific language governing permissions and # limitations under the License. # - -import sys -import json -import logging - -from nomad.utils import configure_logging -from nomad.datamodel import EntryArchive -from nexusparser.parser import NexusParser - - -if __name__ == "__main__": - configure_logging(console_log_level=logging.DEBUG) - ARCHIVE = EntryArchive() - NexusParser().parse(sys.argv[1], ARCHIVE, logging) - json.dump(ARCHIVE.m_to_dict(), sys.stdout, indent=2) diff --git a/tests/nexus/test_nexus.py b/tests/nexus/test_nexus.py new file mode 100644 index 000000000..4e1ec9aa0 --- /dev/null +++ b/tests/nexus/test_nexus.py @@ -0,0 +1,94 @@ +"""This is a code that performs several tests on nexus tool + +""" +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import os +import logging +import xml.etree.ElementTree as ET + +from nexusutils.nexus import nexus + + +def test_get_nexus_classes_units_attributes(): + """Check the correct parsing of a separate list for: +Nexus classes (base_classes) +Nexus units (memberTypes) +Nexus attribute type (primitiveTypes) +the tested functions can be found in nexus.py file +""" + + # Test 1 + nexus_classes_list = nexus.get_nx_classes() + + assert 'NXbeam' in nexus_classes_list + + # Test 2 + nexus_units_list = nexus.get_nx_units() + assert 'NX_TEMPERATURE' in nexus_units_list + + # Test 3 + nexus_attribute_list = nexus.get_nx_attribute_type() + assert 'NX_FLOAT' in nexus_attribute_list + + +def test_nexus(tmp_path): + """The nexus test function + +""" + local_dir = os.path.abspath(os.path.dirname(__file__)) + example_data = os.path.join(local_dir, '../data/nexus/201805_WSe2_arpes.nxs') + logger = logging.getLogger(__name__) + logger.setLevel(logging.DEBUG) + handler = logging.\ + FileHandler(os.path.join(tmp_path, 'nexus_test.log'), 'w') + handler.setLevel(logging.DEBUG) + formatter = logging.Formatter('%(levelname)s - %(message)s') + handler.setFormatter(formatter) + logger.addHandler(handler) + nexus_helper = nexus.HandleNexus(logger, [example_data]) + nexus_helper.process_nexus_master_file(None) + + with open(os.path.join(tmp_path, 'nexus_test.log'), 'r') as logfile: + log = logfile.readlines() + with open(os.path.join(local_dir, '../data/nexus/Ref_nexus_test.log'), 'r') as reffile: + ref = reffile.readlines() + + assert log == ref + + # didn't work with filecmp library + # log = os.path.join(local_dir, 'data/nexus_test_data/nexus_test.log') + # ref = os.path.join(local_dir, 'data/nexus_test_data/Ref2_nexus_test.log') + # print('yoyo', filecmp.cmp(log, ref, shallow=False)) + + # print('Testing of nexus.py is SUCCESSFUL.') + + +def test_get_node_at_nxdl_path(): + """Test to verify if we receive the right XML element for a given NXDL path""" + local_dir = os.path.abspath(os.path.dirname(__file__)) + nxdl_file_path = os.path.join(local_dir, "../data/dataconverter/NXtest.nxdl.xml") + elem = ET.parse(nxdl_file_path).getroot() + node = nexus.get_node_at_nxdl_path("/ENTRY/NXODD_name", elem=elem) + assert node.attrib["type"] == "NXdata" + assert node.attrib["name"] == "NXODD_name" + + node = nexus.get_node_at_nxdl_path("/ENTRY/NXODD_name/float_value", elem=elem) + assert node.attrib["type"] == "NX_FLOAT" + assert node.attrib["name"] == "float_value" diff --git a/tests/nyaml2nxdl/README.md b/tests/nyaml2nxdl/README.md new file mode 100644 index 000000000..65de76318 --- /dev/null +++ b/tests/nyaml2nxdl/README.md @@ -0,0 +1,4 @@ +This is the place for storing code for tests of the yaml2nxdl and nxdl2yaml NeXus schema translation routines. + +## Contact person in FAIRmat for these tests +Andrea Albino \ No newline at end of file diff --git a/tests/tools/yaml2nxdl/test_yml2nxdl.py b/tests/nyaml2nxdl/test_nyaml2nxdl.py similarity index 61% rename from tests/tools/yaml2nxdl/test_yml2nxdl.py rename to tests/nyaml2nxdl/test_nyaml2nxdl.py index a1037e3b9..bdb7b0625 100755 --- a/tests/tools/yaml2nxdl/test_yml2nxdl.py +++ b/tests/nyaml2nxdl/test_nyaml2nxdl.py @@ -28,13 +28,8 @@ import xml.etree.ElementTree as ET import pytest from click.testing import CliRunner -import nexusparser.tools.yaml2nxdl.yaml2nxdl as yml2nxdl -from nexusparser.tools.yaml2nxdl import yaml2nxdl_forward_tools - -sys.path.insert(0, '../nexusparser/tools') -sys.path.insert(0, '../nexusparser/tools/yaml2nxdl') - -LOCALDIR = os.path.abspath(os.path.dirname(__file__)) +import nexusutils.nyaml2nxdl.nyaml2nxdl as nyml2nxdl +from nexusutils.nyaml2nxdl import nyaml2nxdl_forward_tools def delete_duplicates(list_of_matching_string): @@ -89,7 +84,7 @@ def compare_matches(ref_xml_file, test_yml_file, test_xml_file, desired_matches) ref_matches = find_matches(ref_xml_file, desired_matches) # Test file is generated runner = CliRunner() - result = runner.invoke(yml2nxdl.launch_tool, ['--input-file', test_yml_file]) + result = runner.invoke(nyml2nxdl.launch_tool, ['--input-file', test_yml_file]) assert result.exit_code == 0 check_file_fresh_baked(test_xml_file) # Test file is read @@ -101,16 +96,16 @@ def test_links(): """Check the correct parsing of links """ - ref_xml_link_file = 'tests/data/tools/yaml2nxdl_test_data/Ref_NXtest_links.nxdl.xml' - test_yml_link_file = 'tests/data/tools/yaml2nxdl_test_data/NXtest_links.yml' - test_xml_link_file = 'tests/data/tools/yaml2nxdl_test_data/NXtest_links.nxdl.xml' + ref_xml_link_file = 'tests/data/nyaml2nxdl/Ref_NXtest_links.nxdl.xml' + test_yml_link_file = 'tests/data/nyaml2nxdl/NXtest_links.yml' + test_xml_link_file = 'tests/data/nyaml2nxdl/NXtest_links.nxdl.xml' desired_matches = [''] compare_matches( ref_xml_link_file, test_yml_link_file, test_xml_link_file, desired_matches) - os.remove('tests/data/tools/yaml2nxdl_test_data/NXtest_links.nxdl.xml') + os.remove('tests/data/nyaml2nxdl/NXtest_links.nxdl.xml') sys.stdout.write('Test on links okay.\n') @@ -119,16 +114,16 @@ def test_docs(): The xml trees of the two files are then compared. """ - ref_xml_file = 'tests/data/tools/yaml2nxdl_test_data/Ref_NXellipsometry-docCheck.nxdl.xml' - test_yml_file = 'tests/data/tools/yaml2nxdl_test_data/NXellipsometry-docCheck.yaml' - test_xml_file = 'tests/data/tools/yaml2nxdl_test_data/NXellipsometry-docCheck.nxdl.xml' + ref_xml_file = 'tests/data/nyaml2nxdl/Ref_NXellipsometry-docCheck.nxdl.xml' + test_yml_file = 'tests/data/nyaml2nxdl/NXellipsometry-docCheck.yaml' + test_xml_file = 'tests/data/nyaml2nxdl/NXellipsometry-docCheck.nxdl.xml' desired_matches = [''] compare_matches( ref_xml_file, test_yml_file, test_xml_file, desired_matches) - os.remove('tests/data/tools/yaml2nxdl_test_data/NXellipsometry-docCheck.nxdl.xml') + os.remove('tests/data/nyaml2nxdl/NXellipsometry-docCheck.nxdl.xml') sys.stdout.write('Test on documentation formatting okay.\n') @@ -137,10 +132,10 @@ def test_nxdl2yaml_doc_format(): to check if they are correct. """ - ref_xml_file = 'tests/data/tools/yaml2nxdl_test_data/Ref_NXentry.nxdl.xml' - ref_yml_file = 'tests/data/tools/yaml2nxdl_test_data/Ref_NXentry.yml' - test_yml_file = 'tests/data/tools/yaml2nxdl_test_data/Ref_NXentry_parsed.yml' - result = CliRunner().invoke(yml2nxdl.launch_tool, ['--input-file', ref_xml_file]) + ref_xml_file = 'tests/data/nyaml2nxdl/Ref_NXentry.nxdl.xml' + ref_yml_file = 'tests/data/nyaml2nxdl/Ref_NXentry.yml' + test_yml_file = 'tests/data/nyaml2nxdl/Ref_NXentry_parsed.yml' + result = CliRunner().invoke(nyml2nxdl.launch_tool, ['--input-file', ref_xml_file]) assert result.exit_code == 0 check_file_fresh_baked(test_yml_file) @@ -155,18 +150,18 @@ def test_fileline_error(): """In this test the yaml fileline in the error message is tested. """ - test_yml_file = 'tests/data/tools/yaml2nxdl_test_data/NXfilelineError1.yml' - result = CliRunner().invoke(yml2nxdl.launch_tool, ['--input-file', test_yml_file]) + test_yml_file = 'tests/data/nyaml2nxdl/NXfilelineError1.yml' + result = CliRunner().invoke(nyml2nxdl.launch_tool, ['--input-file', test_yml_file]) assert result.exit_code == 1 assert '13' in str(result.exception) - test_yml_file = 'tests/data/tools/yaml2nxdl_test_data/NXfilelineError2.yml' - result = CliRunner().invoke(yml2nxdl.launch_tool, ['--input-file', test_yml_file]) + test_yml_file = 'tests/data/nyaml2nxdl/NXfilelineError2.yml' + result = CliRunner().invoke(nyml2nxdl.launch_tool, ['--input-file', test_yml_file]) assert result.exit_code == 1 assert '21' in str(result.exception) - test_yml_file = 'tests/data/tools/yaml2nxdl_test_data/NXfilelineError3.yml' - result = CliRunner().invoke(yml2nxdl.launch_tool, ['--input-file', test_yml_file]) + test_yml_file = 'tests/data/nyaml2nxdl/NXfilelineError3.yml' + result = CliRunner().invoke(nyml2nxdl.launch_tool, ['--input-file', test_yml_file]) assert result.exit_code == 1 assert '25' in str(result.exception) @@ -177,16 +172,16 @@ def test_symbols(): """Check the correct parsing of symbols """ - ref_xml_symbol_file = 'tests/data/tools/yaml2nxdl_test_data/Ref_NXnested_symbols.nxdl.xml' - test_yml_symbol_file = 'tests/data/tools/yaml2nxdl_test_data/NXnested_symbols.yml' - test_xml_symbol_file = 'tests/data/tools/yaml2nxdl_test_data/NXnested_symbols.nxdl.xml' + ref_xml_symbol_file = 'tests/data/nyaml2nxdl/Ref_NXnested_symbols.nxdl.xml' + test_yml_symbol_file = 'tests/data/nyaml2nxdl/NXnested_symbols.yml' + test_xml_symbol_file = 'tests/data/nyaml2nxdl/NXnested_symbols.nxdl.xml' desired_matches = ['', '', '', '', ''] compare_matches( ref_xml_attribute_file, test_yml_attribute_file, test_xml_attribute_file, desired_matches) - os.remove('tests/data/tools/yaml2nxdl_test_data/NXattributes.nxdl.xml') + os.remove('tests/data/nyaml2nxdl/NXattributes.nxdl.xml') sys.stdout.write('Test on attributes okay.\n') @@ -212,16 +207,16 @@ def test_extends(): """Check the correct handling of extends keyword """ - ref_xml_attribute_file = 'tests/data/tools/yaml2nxdl_test_data/Ref_NXattributes.nxdl.xml' - test_yml_attribute_file = 'tests/data/tools/yaml2nxdl_test_data/NXattributes.yml' - test_xml_attribute_file = 'tests/data/tools/yaml2nxdl_test_data/NXattributes.nxdl.xml' + ref_xml_attribute_file = 'tests/data/nyaml2nxdl/Ref_NXattributes.nxdl.xml' + test_yml_attribute_file = 'tests/data/nyaml2nxdl/NXattributes.yml' + test_xml_attribute_file = 'tests/data/nyaml2nxdl/NXattributes.nxdl.xml' runner = CliRunner() - result = runner.invoke(yml2nxdl.launch_tool, ['--input-file', test_yml_attribute_file]) + result = runner.invoke(nyml2nxdl.launch_tool, ['--input-file', test_yml_attribute_file]) assert result.exit_code == 0 ref_root_node = ET.parse(ref_xml_attribute_file).getroot() test_root_node = ET.parse(test_xml_attribute_file).getroot() assert ref_root_node.attrib == test_root_node.attrib - os.remove('tests/data/tools/yaml2nxdl_test_data/NXattributes.nxdl.xml') + os.remove('tests/data/nyaml2nxdl/NXattributes.nxdl.xml') sys.stdout.write('Test on extends keyword okay.\n') @@ -230,9 +225,9 @@ def test_symbols_and_enum_docs(): or attributes fields, e.g. doc """ - ref_xml_file = 'tests/data/tools/yaml2nxdl_test_data/Ref_NXmytests.nxdl.xml' - test_yml_file = 'tests/data/tools/yaml2nxdl_test_data/NXmytests.yml' - test_xml_file = 'tests/data/tools/yaml2nxdl_test_data/NXmytests.nxdl.xml' + ref_xml_file = 'tests/data/nyaml2nxdl/Ref_NXmytests.nxdl.xml' + test_yml_file = 'tests/data/nyaml2nxdl/NXmytests.yml' + test_xml_file = 'tests/data/nyaml2nxdl/NXmytests.nxdl.xml' desired_matches = ['', '', '', '', '', '', ' yml -> xml okay.\n') @@ -279,22 +274,22 @@ def test_yml_parsing(): The xml trees of the two files are then compared. """ - ref_yml_file = 'tests/data/tools/yaml2nxdl_test_data/Ref_NXellipsometry.yml' - test_xml_file = 'tests/data/tools/yaml2nxdl_test_data/Ref_NXellipsometry.nxdl.xml' - test_yml_file = 'tests/data/tools/yaml2nxdl_test_data/Ref_NXellipsometry_parsed.yml' - result = CliRunner().invoke(yml2nxdl.launch_tool, ['--input-file', ref_yml_file]) + ref_yml_file = 'tests/data/nyaml2nxdl/Ref_NXellipsometry.yml' + test_xml_file = 'tests/data/nyaml2nxdl/Ref_NXellipsometry.nxdl.xml' + test_yml_file = 'tests/data/nyaml2nxdl/Ref_NXellipsometry_parsed.yml' + result = CliRunner().invoke(nyml2nxdl.launch_tool, ['--input-file', ref_yml_file]) assert result.exit_code == 0 check_file_fresh_baked(test_xml_file) - result = CliRunner().invoke(yml2nxdl.launch_tool, ['--input-file', test_xml_file]) + result = CliRunner().invoke(nyml2nxdl.launch_tool, ['--input-file', test_xml_file]) assert result.exit_code == 0 check_file_fresh_baked(test_yml_file) - test_yml_tree = yaml2nxdl_forward_tools.yml_reader(test_yml_file) + test_yml_tree = nyaml2nxdl_forward_tools.yml_reader(test_yml_file) - ref_yml_tree = yaml2nxdl_forward_tools.yml_reader(ref_yml_file) + ref_yml_tree = nyaml2nxdl_forward_tools.yml_reader(ref_yml_file) assert list(test_yml_tree) == list(ref_yml_tree), 'Ref YML and parsed YML \ has not the same root entries!!' - os.remove('tests/data/tools/yaml2nxdl_test_data/Ref_NXellipsometry_parsed.yml') - os.remove('tests/data/tools/yaml2nxdl_test_data/Ref_NXellipsometry.nxdl.xml') + os.remove('tests/data/nyaml2nxdl/Ref_NXellipsometry_parsed.yml') + os.remove('tests/data/nyaml2nxdl/Ref_NXellipsometry.nxdl.xml') sys.stdout.write('Test on yml -> xml -> yml okay.\n') diff --git a/tests/test_nexus.py b/tests/test_nexus.py deleted file mode 100644 index efb489d25..000000000 --- a/tests/test_nexus.py +++ /dev/null @@ -1,192 +0,0 @@ -"""This is a code that performs several tests on nexus tool - -""" -# -# Copyright The NOMAD Authors. -# -# This file is part of NOMAD. See https://nomad-lab.eu for further info. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -from typing import cast, Any -import pytest - -from nomad.metainfo import Definition, MSection, Section -from nomad.datamodel import EntryArchive -from nexusparser.metainfo import nexus -from nexusparser import tools - - -@pytest.mark.parametrize('path,value', [ - pytest.param('APPLICATIONS.name', 'nexus'), - pytest.param('APPLICATIONS.NXobject.name', 'NXobject'), - pytest.param('APPLICATIONS.NXentry.nx_kind', 'group'), - pytest.param('APPLICATIONS.NXentry.defaultAttribute.nx_value.type', str), - pytest.param('APPLICATIONS.NXentry.nx_attribute_default', '*'), - pytest.param('APPLICATIONS.NXentry.NXdataGroup', '*'), - pytest.param('APPLICATIONS.NXdetector.real_timeField', '*'), - pytest.param('APPLICATIONS.NXentry.NXdataGroup.nx_optional', True), - pytest.param('APPLICATIONS.NXentry.nx_group_DATA.section_def.nx_kind', 'group'), - pytest.param('APPLICATIONS.NXentry.nx_group_DATA.section_def.nx_optional', True), - pytest.param('APPLICATIONS.NXentry.nx_group_DATA.section_def.nx_name.type', str), - pytest.param('APPLICATIONS.NXdetector.real_timeField.name', 'real_timeField'), - pytest.param('APPLICATIONS.NXdetector.real_timeField.nx_type', 'NX_NUMBER'), - pytest.param('APPLICATIONS.NXdetector.real_timeField.nx_units', 'NX_TIME'), - pytest.param('APPLICATIONS.NXdetector.real_timeField.nx_unit', '*'), - pytest.param('APPLICATIONS.NXdetector.real_timeField.nx_value', '*'), - pytest.param('APPLICATIONS.NXarpes.NXentryGroup.NXdataGroup.nx_optional', False), - pytest.param('APPLICATIONS.NXentry.nx_category', 'base'), - pytest.param('APPLICATIONS.NXapm.nx_category', 'application') -]) -def test_assert_nexus_metainfo(path: str, value: Any): - """Test the existance of nexus metainfo - -""" - segments = path.split('.') - package, definition_names = segments[0], segments[1:] - - current: Definition = getattr(nexus, package) - for name in definition_names: - for content in current.m_contents(): - if getattr(content, 'name', None) == name: - current = cast(Definition, content) - break - - else: - current = getattr(current, name, None) - - if current is None: - assert False, f'{path} does not exist' - - if value == '*': - assert current is not None, f'{path} does not exist' - elif value is None: - assert current is None, f'{path} does exist' - else: - assert current == value, f'{path} has wrong value' - - if isinstance(current, Section): - assert current.nx_kind is not None - for base_section in current.all_base_sections: - assert base_section.nx_kind == current.nx_kind - - -def test_use_nexus_metainfo(): - """Test on use of Nexus metainfo - -""" - # pylint: disable=no-member - archive = EntryArchive() - archive.nexus = nexus.Nexus() - archive.nexus.nx_application_arpes = nexus.NXarpes() - archive.nexus.nx_application_arpes.m_create(nexus.NXarpes.NXentryGroup) - archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_field_title = \ - nexus.NXarpes.NXentryGroup.titleField() - archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_field_title.nx_value = 'my title' - - # Entry/default is not overwritten in NXarpes. Therefore technically, - # there is no attribute section - # nexus.NXarpes.NXentryGroup.DefaultAttribute. We artifically extented inheritence to - # include inner section/classes. So both options work: - # archive.nexus.nx_application_arpes.nx_group_ENTRY.nx_attribute_default = - # nexus.NXentry.DefaultAttribute() - archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_attribute_default = \ - nexus.NXarpes.NXentryGroup.defaultAttribute() - archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_attribute_default.nx_value = \ - 'my default' - # pylint: enable=no-member - - archive = EntryArchive.m_from_dict(archive.m_to_dict()) - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_attribute_default.nx_value == \ - 'my default' - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_field_title.nx_value == \ - 'my title' - - -@pytest.mark.parametrize('path', [ - pytest.param('NXarpes:app/NXentry:group/title:field/my title:value', id='field'), - pytest.param('NXarpes:app/NXentry:group/default:attribute/my default:value', id='attribute') -]) -def test_use_nexus_metainfo_reflectivly(path): - """Test of the use of nexus metainfo reflectivly - -""" - archive = EntryArchive() - archive.nexus = nexus.Nexus() # pylint: disable=no-member - parent_object: MSection = archive.nexus - parent_definition: Section = nexus.Nexus.m_def # pylint: disable=no-member - - segments = path.split('/') - for segment in segments: - name_or_value, kind = segment.split(':') - if kind in ['app', 'group', 'field', 'attribute']: - if kind == 'app': - section_definition = nexus.APPLICATIONS.all_definitions[name_or_value] - sub_section_definition = \ - parent_definition.all_sub_sections[name_or_value.replace('NX', '\ -nx_application_')] - - if kind == 'group': - section_definition = \ - parent_definition.all_inner_section_definitions[f'{name_or_value}Group'] - sub_section_definition = \ - parent_definition.all_sub_sections[f'nx_group_' - f'{name_or_value.replace("NX", "").upper()}' - ] - - if kind == 'field': - section_definition = \ - parent_definition.all_inner_section_definitions[f'{name_or_value}Field'] - sub_section_definition = \ - parent_definition.all_sub_sections[f'nx_field_{name_or_value}'] - - if kind == 'attribute': - section_definition = \ - parent_definition.all_inner_section_definitions[f'{name_or_value}Attribute'] - sub_section_definition = \ - parent_definition.all_sub_sections[f'nx_attribute_{name_or_value}'] - - new_object = section_definition.section_cls() - parent_object.m_add_sub_section(sub_section_definition, new_object) - - elif kind == 'value': - parent_object.m_set(parent_definition.all_quantities['nx_value'], name_or_value) - - else: - assert False, 'kind does not exist' - - parent_object = new_object - parent_definition = section_definition - - -def test_get_nexus_classes_units_attributes(): - """Check the correct parsing of a separate list for: -Nexus classes (base_classes) -Nexus units (memberTypes) -Nexus attribute type (primitiveTypes) -the tested functions can be found in nexus.py file -""" - - # Test 1 - nexus_classes_list = tools.nexus.get_nx_classes() - - assert 'NXbeam' in nexus_classes_list - - # Test 2 - nexus_units_list = tools.nexus.get_nx_units() - assert 'NX_TEMPERATURE' in nexus_units_list - - # Test 3 - nexus_attribute_list = tools.nexus.get_nx_attribute_type() - assert 'NX_FLOAT' in nexus_attribute_list diff --git a/tests/test_parser.py b/tests/test_parser.py deleted file mode 100644 index 4791550f2..000000000 --- a/tests/test_parser.py +++ /dev/null @@ -1,160 +0,0 @@ -"""Test scripts for parser.py tool - -""" -# -# Copyright The NOMAD Authors. -# -# This file is part of NOMAD. See https://nomad-lab.eu for further info. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -import xml.etree.ElementTree as ET -import sys -import os -import logging -import pytest -from nomad.datamodel import EntryArchive -from nexusparser.tools import nexus # noqa: E402 -from nexusparser.parser import NexusParser # noqa: E402 -sys.path.insert(0, '.') -sys.path.insert(0, '..') -sys.path.insert(0, '../..') - - -@pytest.fixture(name="parser") -def fixture_parser(): - """Helper function to launch NexusParser class - -""" - yield NexusParser() - - -def test_nexus(tmp_path): - """The nexus test function - -""" - local_dir = os.path.abspath(os.path.dirname(__file__)) - example_data = os.path.join(local_dir, 'data/nexus_test_data/201805_WSe2_arpes.nxs') - logger = logging.getLogger() - logger.setLevel(logging.DEBUG) - handler = logging.\ - FileHandler(os.path.join(tmp_path, 'nexus_test.log'), 'w') - handler.setLevel(logging.DEBUG) - formatter = logging.Formatter('%(levelname)s - %(message)s') - handler.setFormatter(formatter) - logger.addHandler(handler) - nexus_helper = nexus.HandleNexus(logger, [example_data]) - nexus_helper.process_nexus_master_file(None) - - with open(os.path.join(tmp_path, 'nexus_test.log'), 'r') as logfile: - log = logfile.readlines() - with open(os.path.join(local_dir, 'data/nexus_test_data/Ref_nexus_test.log'), 'r') as reffile: - ref = reffile.readlines() - - assert log == ref - - # didn't work with filecmp library - # log = os.path.join(local_dir, 'data/nexus_test_data/nexus_test.log') - # ref = os.path.join(local_dir, 'data/nexus_test_data/Ref2_nexus_test.log') - # print('yoyo', filecmp.cmp(log, ref, shallow=False)) - - print('Testing of nexus.py is SUCCESSFUL.') - - -def test_get_node_at_nxdl_path(): - """Test to verify if we receive the right XML element for a given NXDL path""" - nxdl_file_path = "tests/data/tools/dataconverter/NXtest.nxdl.xml" - elem = ET.parse(nxdl_file_path).getroot() - node = nexus.get_node_at_nxdl_path("/ENTRY/NXODD_name", elem=elem) - assert node.attrib["type"] == "NXdata" - assert node.attrib["name"] == "NXODD_name" - - node = nexus.get_node_at_nxdl_path("/ENTRY/NXODD_name/float_value", elem=elem) - assert node.attrib["type"] == "NX_FLOAT" - assert node.attrib["name"] == "float_value" - - -def test_example(parser): - """Tests if parser can parse our example data - -""" - archive = EntryArchive() - - import structlog - - # local_dir = os.path.abspath(os.path.dirname(__file__)) - # example_data = os.path.join(local_dir, 'data/nexus_test_data/em0001.test.nxs') - # parser().parse(example_data, archive, structlog.get_logger()) - # assert archive.nexus.nx_application_em_nion.\ - # nx_group_ENTRY[0].nx_group_operator.nx_field_affiliation.nx_value == - # "Humboldt Universität zu Berlin" - - # local_dir = os.path.abspath(os.path.dirname(__file__)) - # example_data = os.path.join(local_dir, 'data/nexus_test_data/mpes2.test.nxs') - # parser().parse(example_data, archive, structlog.get_logger()) - # assert archive.nexus.nx_application_mpes.\ - # nx_group_ENTRY[0].nx_field_definition.nx_value == "NXmpes" - - local_dir = os.path.abspath(os.path.dirname(__file__)) - example_data = os.path.join(local_dir, 'data/nexus_test_data/201805_WSe2_arpes.nxs') - parser.parse(example_data, archive, structlog.get_logger()) - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_SAMPLE[0].nx_field_pressure.nx_value == 3.27e-10 - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_SAMPLE[0].nx_field_pressure.nx_unit == "millibar" - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_SAMPLE[0].nx_field_pressure.m_def.nx_units == "NX_PRESSURE" - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_INSTRUMENT[0].\ - nx_group_monochromator.nx_field_energy.nx_value == 36.49699020385742 - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_INSTRUMENT[0].\ - nx_group_monochromator.nx_field_energy.nx_name == 'energy' - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_INSTRUMENT[0].nx_group_analyser.\ - nx_field_entrance_slit_size.nx_value == 750 - # good ENUM - x-ray - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_INSTRUMENT[0].nx_group_SOURCE[0].\ - nx_field_probe.nx_value == 'x-ray' - # wrong inherited ENUM - Burst - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_INSTRUMENT[0].nx_group_SOURCE[0].\ - nx_field_mode.nx_value is None - # wrong inherited ENUM for extended field - 'Free Electron Laser' - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_INSTRUMENT[0].nx_group_SOURCE[0].\ - nx_field_type.nx_value is None - # 1D datasets - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[0].nx_name == "angles" - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[1].nx_name == "delays" - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[2].nx_name == "energies" - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[0].nx_unit == "1/Å" - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[1].nx_unit == "fs" - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[2].nx_unit == "eV" - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[0].nx_value[0] == 0.10033616393632831 - # 2D datasets - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_DATA[0].nx_field_DATA[0].nx_name == "data" - assert archive.nexus.nx_application_arpes.\ - nx_group_ENTRY[0].nx_group_DATA[0].nx_field_DATA[0].nx_value[2] == 0.0 - assert pytest.approx( - archive.nexus.nx_application_arpes. - nx_group_ENTRY[0].nx_group_DATA[0].nx_field_DATA[0].nx_value[3] - 0.00078192557) \ - == 0.0