diff --git a/.github/workflows/build-test-publish.yaml b/.github/workflows/build-test-publish.yaml deleted file mode 100644 index e896e7b..0000000 --- a/.github/workflows/build-test-publish.yaml +++ /dev/null @@ -1,146 +0,0 @@ -name: Build, Test, and Publish - -on: - pull_request: - types: [opened, synchronize] - push: - branches: - - main - workflow_dispatch: - inputs: - publish_to_main: - description: Publish to PyPI if tests successful - required: true - type: boolean - default: false - -permissions: - contents: write - -jobs: - - check-version-txt: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Tag with the release version - run: | - git tag $(cat version.txt) - - lint-format-and-static-code-checks: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Set up Python 3.8 - uses: actions/setup-python@v3 - with: - python-version: 3.8 - - name: Install pre-commit - run: | - pip install pre-commit - - name: Lint, Format, and other static code quality checks - run: | - /bin/bash -x run.sh lint:ci - - build-wheel-and-sdist: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Set up Python 3.8 - uses: actions/setup-python@v3 - with: - python-version: 3.8 - - name: Install build CLI - run: | - pip install build - - name: Build python package - run: | - /bin/bash -x run.sh build - - name: Upload wheel and sdist - uses: actions/upload-artifact@v3 - with: - name: wheel-and-sdist - path: ./dist/* - - execute-tests: - needs: - - build-wheel-and-sdist - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Set up Python 3.8 - uses: actions/setup-python@v3 - with: - python-version: 3.8 - - name: Download wheel and sdist - uses: actions/download-artifact@v3 - with: - name: wheel-and-sdist - path: ./dist/ - - name: Install test dependencies - run: | - pip install pytest pytest-cov ./dist/*.whl - - name: Lint, Format, and other static code quality checks - run: | - /bin/bash -x run.sh test:ci - - publish: - needs: - - execute-tests - - build-wheel-and-sdist - - lint-format-and-static-code-checks - - check-version-txt - runs-on: ubuntu-latest - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - steps: - - uses: actions/checkout@v3 - - name: Set up Python 3.8 - uses: actions/setup-python@v3 - with: - python-version: 3.8 - - name: Download wheel and sdist - uses: actions/download-artifact@v3 - with: - name: wheel-and-sdist - path: ./dist/ - - name: Install twine - run: | - pip install twine - # - name: Publish to TestPyPI - # run: | - # /bin/bash -x run.sh publish:test - # env: - # TEST_PYPI_TOKEN: ${{ secrets.TEST_PYPI_TOKEN }} - # - name: Publish to Prod PyPI - # run: | - # /bin/bash -x run.sh publish:prod - # env: - # PROD_PYPI_TOKEN: ${{ secrets.PROD_PYPI_TOKEN }} - - name: Push tags - run: | - git tag $(cat version.txt) - git push origin --tags - - # https://docs.github.com/en/actions/learn-github-actions/contexts#example-printing-context-information-to-the-log - dump-contexts-to-log: - runs-on: ubuntu-latest - steps: - - name: Dump GitHub context - id: github_context_step - run: echo '${{ toJSON(github) }}' - - name: Dump job context - run: echo '${{ toJSON(job) }}' - - name: Dump steps context - run: echo '${{ toJSON(steps) }}' - - name: Dump runner context - run: echo '${{ toJSON(runner) }}' - - name: Dump strategy context - run: echo '${{ toJSON(strategy) }}' - - name: Dump matrix context - run: echo '${{ toJSON(matrix) }}' - - name: Dump secrets - run: echo '${{ toJSON(secrets) }}' - - name: Dump vars - run: echo '${{ toJSON(vars) }}' diff --git a/.github/workflows/ci-test.yaml b/.github/workflows/ci-test.yaml new file mode 100644 index 0000000..de8bf7f --- /dev/null +++ b/.github/workflows/ci-test.yaml @@ -0,0 +1,42 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + workflow_dispatch: {} + +permissions: + contents: read + +jobs: + ci: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: "0.7.19" + enable-cache: true + cache-dependency-glob: | + pyproject.toml + uv.lock + + - name: Install Python + run: uv python install + + - name: Install the project + run: uv sync --locked --all-extras --dev + + - name: Lint (run.sh lint:ci) + run: uv run /bin/bash -x run.sh lint:ci + + - name: Tests (run.sh test:ci) + run: uv run /bin/bash -x run.sh test:ci diff --git a/.gitignore b/.gitignore index 9a63d91..b804181 100644 --- a/.gitignore +++ b/.gitignore @@ -208,9 +208,7 @@ __marimo__/ .DS_Store -tests/* test-reports/* -tests/data/* !tests/data/.gitkeep # leave a marker so the empty dir is in the repo src/cosinor_lite/*.egg-info/ @@ -218,4 +216,4 @@ src/cosinor_lite/states_info.py src/cosinor_lite/cities.json "README 2.md" -.DS_Store \ No newline at end of file +.DS_Store diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3f07032..e15e5e0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,106 +1,40 @@ -# See https://pre-commit.com for more information -# See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v6.0.0 hooks: - # Fails if there are any ">>>>>" lines in files due to merge conflicts. - - id: check-merge-conflict - # Trims trailing whitespace. Allow a single space on the end of .md lines for hard line breaks. - id: trailing-whitespace - args: [--markdown-linebreak-ext=md] - # Makes sure files end in a newline and only a newline; - id: end-of-file-fixer - # Attempts to load all TOML files to verify syntax. - - id: check-toml - # Attempts to load all yaml files to verify syntax; unsafe: only check syntax, do not load yaml - id: check-yaml - args: ["--unsafe"] - # Check for symlinks that do not point to anything. - - id: check-symlinks - # Fail if staged files are above a certain size. - # To add a large file, use 'git lfs track ; git add to track large files with - # git-lfs rather than commiting them directly to the git history + - id: check-toml - id: check-added-large-files - args: ["--maxkb=500"] - - # HALT! Before you exclude a large file and commit it, forever - # bloating our repo size, did you: - # (1) use a CLI tool like imageoptim to compress them if they are images - # (2) think hard about whether using DVC or git-lfs is more appropriate - # for the file--such as in the case of CSV files or other data - # This can be confusing. Reach out for help in our chat to help decide - # how to deal adding these large files you have :) - exclude: | - (?x)( - ^example/large/file.csv| - ^example/large/sklearn-model.pkl - ) - # Sort requirements in requirements.txt files. - - id: requirements-txt-fixer - # Prevent addition of new git submodules. - - id: forbid-new-submodules - # Prevent committing directly to trunk (since Bitbucket wants us to pay for this feature) - - id: no-commit-to-branch - args: ["--branch=main"] - # Detects the presence of private keys - - id: detect-private-key - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: "v0.0.261" + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.14.6 hooks: - id: ruff - args: [--exit-non-zero-on-fix, --config=./pyproject.toml] - - # - repo: https://github.com/pre-commit/mirrors-mypy - # rev: "v1.2.0" - # hooks: - # - id: mypy - # args: - # [ - # --no-strict-optional, - # --ignore-missing-imports, - # --config-file=./pyproject.toml, - # ] - - # - repo: https://github.com/psf/black - # rev: 23.1.0 - # hooks: - # - id: black - # args: - # - --config=./pyproject.toml + args: [--fix] + exclude: ^app\.py$ + - id: ruff-format - # - repo: https://github.com/PyCQA/pylint - # rev: v2.16.3 - # hooks: - # - id: pylint - # args: - # - --rcfile=./pyproject.toml + - repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.18.2 + hooks: + - id: mypy + exclude: "^(app\\.py$|tests/)" - # - repo: https://github.com/PyCQA/flake8 - # rev: 6.0.0 - # hooks: - # - id: flake8 - # args: - # - --toml-config=./pyproject.toml - # additional_dependencies: - # - radon - # - flake8-docstrings - # - Flake8-pyproject + - repo: https://github.com/kynan/nbstripout + rev: 0.8.2 + hooks: + - id: nbstripout - # - repo: https://github.com/pycqa/isort - # rev: 5.12.0 - # hooks: - # - id: isort - # args: - # - --settings-path=./pyproject.toml + - repo: https://github.com/Yelp/detect-secrets + rev: v1.5.0 + hooks: + - id: detect-secrets - # - repo: https://github.com/PyCQA/autoflake - # rev: v2.0.1 - # hooks: - # - id: autoflake - # args: - # - --in-place - # - --remove-all-unused-imports - # - --remove-unused-variable - # - --ignore-init-module-imports + - repo: https://github.com/econchick/interrogate + rev: 1.7.0 + hooks: + - id: interrogate + args: ["--fail-under=70", "-vvv"] + files: "^src/" diff --git a/.vscode/settings.json b/.vscode/settings.json index 7c2ca5c..399162f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,14 +9,23 @@ "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python", // ─── Ruff: formatter, linter, import sorter ──────── // Formatting + code actions on save + // "[python]": { + // "editor.defaultFormatter": "charliermarsh.ruff", // Ruff formats & sorts imports + // "editor.formatOnSave": true, + // "editor.codeActionsOnSave": { + // "source.organizeImports": "explicit", // Ruff handles import‑sorting:contentReference[oaicite:0]{index=0} + // "source.fixAll": "explicit" // Ruff auto‑fixes lint on save:contentReference[oaicite:1]{index=1} + // } + // }, "[python]": { - "editor.defaultFormatter": "charliermarsh.ruff", // Ruff formats & sorts imports + "editor.defaultFormatter": "charliermarsh.ruff", "editor.formatOnSave": true, "editor.codeActionsOnSave": { - "source.organizeImports": "explicit", // Ruff handles import‑sorting:contentReference[oaicite:0]{index=0} - "source.fixAll": "explicit" // Ruff auto‑fixes lint on save:contentReference[oaicite:1]{index=1} + "source.fixAll": true, + "source.fixAll.ruff": true, + "source.organizeImports": true } - }, + } // ─── Ty: super‑fast type checking / language server ─ // After installing the “ty” VS Code extension: // "python.languageServer": "None", // disable Pylance’s LS to avoid clashing:contentReference[oaicite:2]{index=2} @@ -38,4 +47,4 @@ "color": "lightgreen" } ] -} \ No newline at end of file +} diff --git a/Makefile b/Makefile index c6733ef..0cad278 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,3 @@ -# Execute the "targets" in this file with `make ` e.g., `make test`. -# # You can also run multiple in sequence, e.g. `make clean lint test serve-coverage-report` build: @@ -20,18 +18,6 @@ lint: lint-ci: bash run.sh lint:ci -publish-prod: - bash run.sh publish:prod - -publish-test: - bash run.sh publish:test - -release-prod: - bash run.sh release:prod - -release-test: - bash run.sh release:test - serve-coverage-report: bash run.sh serve-coverage-report @@ -43,6 +29,3 @@ test-quick: test: bash run.sh run-tests - -test-wheel-locally: - bash run.sh test:wheel-locally diff --git a/README 2.md b/README 2.md deleted file mode 100644 index 041130f..0000000 --- a/README 2.md +++ /dev/null @@ -1,26 +0,0 @@ -# cosinor-lite - -## Quick start - -```bash -pip install cosinor-lite -``` - -```python -from cosinor_lite import ... -``` - -## Contributing - -```bash -# clone the repo -git clone https://github.com/nick-e-p/cosinor-lite.git - -# install the dev dependencies -make install - -# run the tests -make test -``` - - diff --git a/README.md b/README.md index 7dc5482..55f4b31 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,147 @@ # cosinor-lite -A simplified package for cosinor analysis of circadian bioluminescent, fluorescent and omics datasets -## Installing +`cosinor-lite` is a lightweight toolkit for exploring circadian oscillations across multiomics and live-cell imaging experiments. It relies on widely used statistical models and offers two modes of use. + +- **Interactive Gradio dashboard** to drag & drop your data files. +- **Python package** for fine-grained customisation beyond the settings offered in the Gradio UI. + +🚀 Try the interactive analysis pipeline on +**[Hugging Face Spaces → cosinor-lite](https://huggingface.co/spaces/nick-e-p/cosinor-lite)**. + +## Why `cosinor-lite?` + +- **Unified workflow for live cell data**: Perform detrending and fit cosinor models with either a fixed 24 h, free-period or damped oscillation with consistent APIs across data modalities (i.e. bioluminescence, cytokines etc.). +- **Differential rhythmicity across any omics type**: Compare two conditions for differential rhythmicity for any type of omics data using BIC model-selection strategies with widespread use in the circadian literature. +- **Create publication-ready analysis with a simple UI**: Launch a browser-based analysis console for visual quality control, plots, and parameter export. + +## Extracting circadian parameters from live-cell data + +For live-cell data (see tutorial in [`notebooks/live_cell_tutorial`](./notebooks/live_cell_tutorial.ipynb)), `cosinor-lite` offers the choice between three different cosinor models: + +- a) Fixed 24-h period + +- b) Free period + +- c) Free period with damped amplitude + +
+ Model selection +
+ +Once a model is chosen, it is fitted independently to each sample. The fitted parameters can be exported for downstream statistical analysis. + +## Differential rhytmicity analysis of omics datasets + +`cosinor-lite` includes a toolbox for performing differential rhytmicity analysis of omics datasets (ee [`notebooks/omics_tutorial`](./notebooks/omics_tutorial.ipynb)) for tutorial. The details of the method are nicely explained in the article: + +> Pelikan A, Herzel H, Kramer A, Ananthasubramaniam B. 2022. Venn diagram analysis overestimates the extent of circadian rhythm reprogramming. The FEBS Journal 289:6605–6621. doi:10.1111/febs.16095 + +Here is an adaptation of their figure explaining the methdology: + +
+ Model selection +
+ +For condition 1 (i.e. alpha cells) and condition 2 (i.e. beta cells), we fit 5 different models: + +- Model 1) Arrhythmic in alpha and beta cells + +- Model 2) Rhythmic in beta cells only + +- Model 3) Rhythmic in alpha cells only + +- Model 4) Rhythmic in alpha and beta cells with the same rhythmic parameters (i.e. phase and amplitude) + +- Model 5) Rhythmic in both but with differential rhythmicity in alpha vs beta cells + +## Installation ```bash -# clone the repo -git clone https://github.com/nick-e-p/cosinor-lite.git && cd cosinor-lite +# clone the repository +git clone https://github.com/nick-e-p/cosinor-lite.git +cd cosinor-lite -# install the dev dependencies +# create and populate the local uv environment uv sync +# activate the environment +source .venv/bin/activate +``` + +> **Tip:** The project targets Python 3.11+. Using `uv` keeps package resolution reproducible via `uv.lock`. + +## Quick Start + +### Launch the interactive app + +```bash +uv run python app.py +``` + +Open the printed local URL to explore: + +- **Live cell**: Upload CSVs with participant, replicate, and time-series data, then compare detrending strategies or cosinor fits across groups. +- **Omics**: Load expression matrices, build time vectors automatically or manually, compute differential rhythmicity, and download publication-ready plots. + +### Use the Python API + +```python +from cosinor_lite.livecell_dataset import LiveCellDataset +from cosinor_lite.livecell_cosinor_analysis import CosinorAnalysis + +dataset = LiveCellDataset( + ids=["mouse_a", "mouse_b"], + group=["treated", "control"], + replicate=[1, 1], + time_series=my_expression_matrix, + time=my_timepoints, +) + +analysis = CosinorAnalysis(dataset=dataset) +fit = analysis.fit(group="treated", model="damped") +print(fit.parameters) +``` + +## Repository Layout + +``` +src/cosinor_lite/ # Core library modules and models +app.py # Gradio application entry point +tests/ # Pytest suites (unit, integration, fixtures) +data/ # Example datasets for the app +images/ # Illustration assets used in the UI +``` + +## Development Workflow + +```bash +# run style, type, and security hooks +pre-commit run --all-files + +# execute unit tests +uv run pytest +``` + +## Sample Datasets + +The `data/` directory includes curated examples to help you get started: + +- `bioluminescence_example.csv`: Bioluminescence time series for live-cell analysis. +- `cytokine_example.csv`: An alternative CSV with the same schema for cosinor fitting using cytokine data. +- `GSE95156_Alpha_Beta.txt`: RNA-seq data used in the omics differential rhythmicity workflow. + +Each file is formatted to drag & drop into `app.py` as well as the library APIs. + +## Contributing + +1. Fork the repository and create a feature branch. +2. Install dependencies with `uv sync` and activate the environment. +3. Implement your changes with tests. +4. Verify via `pre-commit run --all-files` and `uv run pytest`. +5. Open a pull request describing the motivation and results. + +Bug reports and feature proposals are welcome through GitHub issues. Please include reproducible examples whenever possible. + +## License + +Licensed under the Apache License 2.0. See `LICENSE` for details. diff --git a/app.py b/app.py new file mode 100644 index 0000000..75a866b --- /dev/null +++ b/app.py @@ -0,0 +1,869 @@ +from __future__ import annotations + +import re +import tempfile +from collections.abc import Sequence +from pathlib import Path + +import gradio as gr +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd + +from cosinor_lite.livecell_cosinor_analysis import CosinorAnalysis +from cosinor_lite.livecell_dataset import LiveCellDataset +from cosinor_lite.omics_dataset import OmicsDataset +from cosinor_lite.omics_differential_rhytmicity import DifferentialRhythmicity, OmicsHeatmap + +plt.rcParams.update( + { + "font.size": 8, + "axes.titlesize": 8, + "axes.labelsize": 8, + "xtick.labelsize": 8, + "ytick.labelsize": 8, + "legend.fontsize": 8, + "figure.titlesize": 8, + "pdf.fonttype": 42, + }, +) +plt.style.use("seaborn-v0_8-ticks") + +# --- (your rcParams / styles as-is) --- + +APP_DIR = Path(__file__).parent +bioluminescence_file = str(APP_DIR / "data" / "bioluminescence_example.csv") +cytokine_file = str(APP_DIR / "data" / "cytokine_example.csv") +omics_example = str(APP_DIR / "data" / "GSE95156_Alpha_Beta.txt") +method_img = str(APP_DIR / "images" / "live_cell_fitting-01.png") +model_selection_img = str(APP_DIR / "images" / "model_selection.png") + +with gr.Blocks(title="Cosinor Analysis — Live Cell & Omics") as demo: + gr.Markdown( + """ + # Cosinor Analysis App + + A simple app for circadian cosinor analysis & biostatistics. + + Choose between: + - inferring rhythmic properties of live cell data using three different cosinor models + - differential rhythmicity analysis of omics datasets + + """, + ) + + with gr.Tabs() as tabs: + with gr.Tab("Live cell", id=0): + gr.Image( + value=method_img, + label="Choosing a cosinor model and fitting parameters", + interactive=False, + show_label=True, + height=600, # adjust as needed; or remove to use natural size + ) + + gr.Markdown( + """ + # Fitting live cell data + + This section allows the use to infer parameters describing circadian oscillations in live cell data. + Once inferred, the extracted parameters can be compared between groups in downstream analyses. There are three types of cosinor model to choose from: + - 24h period cosinor + - Free period (constrained within 20-28h) cosinor + - Damped cosinor (equivalent to Chronostar analysis), with an additional dampening coefficient + + There are many valid ways to organise the underlying live cell data file. Here we assume a specific format to facilitate data processing + + - Row 1: contains a unique identifier for the participant, mouse etc. + - Row 2: replicate number. If there's only one replicate per unique ID, this can just be a row of 1's + - Row 3: the group to which each measurement belongs + - Left column; the left column contains the time (going down) + + """, + ) + + file = gr.File(label="Upload CSV", file_types=[".csv"], type="filepath") + + gr.Examples( + examples=[bioluminescence_file, cytokine_file], + inputs=file, + label="Example input", + ) + + status = gr.Textbox(label="CSV status", interactive=False) + + with gr.Row(): + group1_label = gr.Textbox(label="Group 1 label", value="Group 1") + group2_label = gr.Textbox(label="Group 2 label", value="Group 2") + + # State (values will be pandas / numpy objects, not components) + st_participant_id = gr.State() + st_replicate = gr.State() + st_group = gr.State() + st_time = gr.State() + st_time_rows = gr.State() + + def process_csv( + fpath: str | Path, + ) -> tuple[ + str, + pd.Series, + pd.Series, + pd.Series, + np.ndarray, + pd.DataFrame, + ]: + # If needed, normalize FileData dict -> str path here + df_data = pd.read_csv(fpath, index_col=0, header=None) + + participant_id = df_data.iloc[0, :].astype(str) + replicate = df_data.iloc[1, :].astype(int) + group = df_data.iloc[2, :].astype(str) + + time_index = df_data.index[3:] + try: + time = time_index.astype(float).to_numpy() + except (TypeError, ValueError) as error: + msg = f"Time index not numeric from row 4 onward: {list(time_index)}" + raise ValueError(msg) from error + + time_rows = df_data.iloc[3:].apply(pd.to_numeric, errors="raise") + + shape_info = ( + f"Loaded shape: {df_data.shape} | participants: {len(participant_id)} | time points: {len(time)}" + ) + return shape_info, participant_id, replicate, group, time, time_rows + + # Trigger on both upload and change (Examples sets the value via change) + for evt in (file.upload, file.change): + evt( + process_csv, + inputs=file, + outputs=[ + status, + st_participant_id, + st_replicate, + st_group, + st_time, + st_time_rows, + ], + ) + + group_choice = gr.Radio( + choices=[("Group 1", "group1"), ("Group 2", "group2")], + value="group1", + label="Select group to analyse", + ) + m_slider = gr.Slider( + 1, + 10, + value=5, + step=1, + label="Number of columns for plot", + ) + + def make_plot( # noqa: PLR0913 + ids_series: pd.Series | None, + group_series: pd.Series | None, + repl_series: pd.Series | None, + time_array: np.ndarray | None, + time_rows_df: pd.DataFrame | None, + g1: str, + g2: str, + which_group: str, + method: str, + window: float, + m: float, + plot_style: str, + ) -> tuple[plt.Figure | None, str | None]: + if ( + ids_series is None + or group_series is None + or repl_series is None + or time_array is None + or time_rows_df is None + ): + return None, None + ds = LiveCellDataset( + ids=list(ids_series), + group=list(group_series), + replicate=[int(x) for x in list(repl_series)], + time_series=time_rows_df.to_numpy(dtype=float), + time=np.asarray(time_array, dtype=float), + group1_label=g1, + group2_label=g2, + ) + if method == "moving_average": + fig, pdf_path = ds.plot_group_data( + which_group, + method=method, + m=int(m), + window=int(window), + plot_style=plot_style, + ) + else: + fig, pdf_path = ds.plot_group_data( + which_group, + method=method, + m=int(m), + plot_style=plot_style, + ) + return fig, pdf_path + + method_choice = gr.Radio( + choices=[ + ("None (no detrending)", "none"), + ("Linear", "linear"), + ("Linear + quadratic", "poly2"), + ("Moving average", "moving_average"), + ], + value="none", + label="Detrending method", + ) + + window_slider = gr.Slider( + 1, + 1000, + value=144, + step=1, + label="Window size for moving average (if used)", + ) + gr.Markdown( + "⚠️ Note: Window size is in **data points** (measurement intervals), not hours.", + ) + + plot_style_choice = gr.Radio( + choices=[("Line", "line"), ("Scatter", "scatter")], + value="line", + label="Plot style for raw data", + ) + + build_btn = gr.Button("Plot raw data and trend", variant="primary") + plot = gr.Plot(label="Preview") + download = gr.File(label="Download plot") + + build_btn.click( + make_plot, + inputs=[ + st_participant_id, + st_group, + st_replicate, + st_time, + st_time_rows, + group1_label, + group2_label, + group_choice, + method_choice, + window_slider, + m_slider, + plot_style_choice, + ], + outputs=[plot, download], + ) + + cosinor_model = gr.Radio( + choices=[ + ("24h period cosinor", "cosinor_24"), + ("Free period (20-28h) cosinor", "cosinor_free_period"), + ("Damped cosinor (Chronostar)", "cosinor_damped"), + ], + value="cosinor_24", # must match one of the VALUES above + label="Cosinor model", + ) + + t_lower_slider = gr.Slider( + 0, + 1000, + value=0, + step=1, + label="Remove data below this time limit (hours)", + ) + t_upper_slider = gr.Slider( + 0, + 1000, + value=1000, + step=1, + label="Remove data above this time limit (hours)", + ) + + build_btn_cosinor = gr.Button("Build cosinor fits", variant="primary") + plot_cosinor = gr.Plot(label="Model fit preview") + pdf_export = gr.File(label="Download figure") + table_export = gr.Dataframe() + download_export = gr.File(label="Download fitted parameters") + + def make_cosinor_fits( # noqa: PLR0913 + ids_series: pd.Series | None, + group_series: pd.Series | None, + repl_series: pd.Series | None, + time_array: np.ndarray | None, + time_rows_df: pd.DataFrame | None, + g1: str, + g2: str, + which_group: str, + method: str, + window: float, + cosinor_model: str, + t_lower: float, + t_upper: float, + m: float, + plot_style: str, + ) -> tuple[ + plt.Figure | None, + str | None, + pd.DataFrame | None, + str | None, + ]: + if ( + ids_series is None + or group_series is None + or repl_series is None + or time_array is None + or time_rows_df is None + ): + return None, None, None, None + ds = CosinorAnalysis( + ids=list(ids_series), + group=list(group_series), + replicate=[int(x) for x in list(repl_series)], + time_series=time_rows_df.to_numpy(dtype=float), + time=np.asarray(time_array, dtype=float), + group1_label=g1, + group2_label=g2, + t_lower=t_lower, + t_upper=t_upper, + ) + if method == "moving_average": + df_export, csv_path, fig, pdf_path = ds.fit_cosinor( + which_group, + method=method, + window=int(window), + cosinor_model=cosinor_model, + m=int(m), + plot_style=plot_style, + ) + else: + df_export, csv_path, fig, pdf_path = ds.fit_cosinor( + which_group, + method=method, + cosinor_model=cosinor_model, + m=int(m), + plot_style=plot_style, + ) + return fig, pdf_path, df_export, csv_path + + build_btn_cosinor.click( + make_cosinor_fits, + inputs=[ + st_participant_id, + st_group, + st_replicate, + st_time, + st_time_rows, + group1_label, + group2_label, + group_choice, + method_choice, + window_slider, + cosinor_model, + t_lower_slider, + t_upper_slider, + m_slider, + plot_style_choice, # <-- add + ], + outputs=[plot_cosinor, pdf_export, table_export, download_export], + ) + with gr.Tab("Omics", id=1): + gr.Markdown( + """ + # Differential rhytmicity analysis of omics datasets + + Here we perform differential rhythmicity analysis on omics data using a model selection approach. + The example data includes published RNA-seq data, but in theory any types of omics data (RNA-seq, proteomics, metabolomics, lipidomics) could be used. The dataset is from the following publication: + + Petrenko V, Saini C, Giovannoni L, Gobet C, Sage D, Unser M, Heddad Masson M, Gu G, Bosco D, Gachon F, Philippe J, Dibner C. 2017. Pancreatic alpha- and beta-cellular clocks have distinct molecular properties and impact on islet hormone secretion and gene expression. Genes Dev 31:383-398. doi:10.1101/gad.290379.116. + """, + ) + + gr.Image( + value=model_selection_img, + label="Differential rhytmicity analysis with model selection", + interactive=False, + show_label=True, + height=600, # adjust as needed; or remove to use natural size + ) + + gr.Markdown( + """ + ## How does the method actually work? + + The details of the method are nicely explained in the article: + + Pelikan A, Herzel H, Kramer A, Ananthasubramaniam B. 2022. Venn diagram analysis overestimates the extent of circadian rhythm reprogramming. The FEBS Journal 289:6605-6621. doi:10.1111/febs.16095 + + See the above adaptation of their figure explaining the methodology. + + For condition 1 (i.e. alpha cells) and condition 2 (i.e. beta cells), we fit five different models: + + - Model 1) Arrhythmic in alpha and beta cells + - Model 2) Rhythmic in beta cells only + - Model 3) Rhythmic in alpha cells only + - Model 4) Rhythmic in alpha and beta cells with the same rhythmic parameters (i.e. phase and amplitude) + - Model 5) Rhythmic in both but with differential rhythmicity in alpha vs beta cells + + A degree of confidence is calculated for each model (called model weight, which sums to 1 across all models), and a model is chosen if the model weight exceeds a threshold (for this tutorial we will use 0.5). If no model exceeds this threshold, then the model is unclassified, which we define as Model 0. + + - Model 0) unclassified + + """, + ) + + # File input + example + omics_file = gr.File( + label="Upload Omics TXT/TSV", + file_types=[".txt", ".tsv", ".csv"], + type="filepath", + ) + gr.Examples( + examples=[omics_example], + inputs=omics_file, + label="Example input", + ) + + omics_status = gr.Textbox(label="File status", interactive=False) + + # Multiselects for choosing columns by header names + columns_cond1_dd = gr.Dropdown( + choices=[], + multiselect=True, + label="Condition A columns (e.g., ZT_*_a_*)", + ) + columns_cond2_dd = gr.Dropdown( + choices=[], + multiselect=True, + label="Condition B columns (e.g., ZT_*_b_*)", + ) + + # Optional manual time vectors + override_time = gr.Checkbox( + label="Override time vectors manually?", + value=False, + ) + t_cond1_tb = gr.Textbox(label="t_cond1 (comma-separated)", visible=False) + t_cond2_tb = gr.Textbox(label="t_cond2 (comma-separated)", visible=False) + + # Hidden state to stash the DataFrame + st_df_rna = gr.State() + + # Preview planned inputs for your class + omics_preview = gr.Code(label="Planned class inputs", language="python") + build_omics_btn = gr.Button("Build Omics inputs", variant="primary") + + # Sample dropdowns for replicate scatterplot + sample1_dd = gr.Dropdown(choices=[], label="Sample 1 (x-axis)") + sample2_dd = gr.Dropdown(choices=[], label="Sample 2 (y-axis)") + scatter_btn = gr.Button( + "Generate replicate scatterplot", + variant="secondary", + ) + scatter_plot = gr.Plot(label="Replicate scatterplot") + scatter_download = gr.File(label="Download scatterplot") + + # Histogram outputs + hist_btn = gr.Button("Generate histogram", variant="primary") + omics_plot = gr.Plot(label="Expression histogram") + omics_download = gr.File(label="Download histogram") + + # ---------- helpers ---------- + def _guess_cols(cols: Sequence[str]) -> tuple[list[str], list[str]]: + cols = [str(c) for c in cols] + a_guess = [c for c in cols if re.search(r"_a_", str(c))] + b_guess = [c for c in cols if re.search(r"_b_", str(c))] + + def zt_key(col: str) -> int: + m = re.search(r"ZT_(\d+)", str(col)) + return int(m.group(1)) if m else 0 + + a_guess = sorted(a_guess, key=zt_key) + b_guess = sorted(b_guess, key=zt_key) + return a_guess, b_guess + + def _pick_default_samples( + cols: Sequence[str], + ) -> tuple[str | None, str | None]: + # Try ZT_0 ... _1 and ZT_0 ... _2 as a sensible default pair + s1 = next((c for c in cols if re.search(r"ZT_0_.*_1$", str(c))), None) + s2 = next((c for c in cols if re.search(r"ZT_0_.*_2$", str(c))), None) + if s1 and s2 and s1 != s2: + return s1, s2 + cols = [str(c) for c in cols] + return (cols[0] if cols else None, cols[1] if len(cols) > 1 else None) + + def _build_time_vec(n_cols: int, manual_text: str | None) -> list[float]: + if manual_text: + try: + return [float(x.strip()) for x in manual_text.split(",") if x.strip()] + except (AttributeError, ValueError): + pass + base = [0, 4, 8, 12, 16, 20] + reps = max(1, (n_cols + len(base) - 1) // len(base)) + return [float(value) for value in (base * reps)[:n_cols]] + + # ---------- loaders & toggles ---------- + def load_omics( + fpath: str | Path, + ) -> tuple[object, object, object, pd.DataFrame, object, object, object, object]: + # Read TSV (tab-separated). Pandas also handles CSV if present. + dataframe = pd.read_csv(fpath, sep="\t") + # Drop first column by index (your pipeline) + if dataframe.shape[1] > 0: + dataframe = dataframe.drop(dataframe.columns[0], axis=1) + # Create Genes column from gene_name if present + if "gene_name" in dataframe.columns: + dataframe["Genes"] = dataframe["gene_name"].astype(str).str.split("|").str[1] + + status = f"Loaded {dataframe.shape[0]} rows x {dataframe.shape[1]} columns." + choices = dataframe.columns.tolist() + a_guess, b_guess = _guess_cols(choices) + s1, s2 = _pick_default_samples(choices) + default_cycle = "0,4,8,12,16,20" + + return ( + status, + gr.update(choices=choices, value=a_guess), + gr.update(choices=choices, value=b_guess), + dataframe, + gr.update(value=default_cycle), + gr.update(value=default_cycle), + gr.update(choices=choices, value=s1), + gr.update(choices=choices, value=s2), + ) + + for evt in (omics_file.upload, omics_file.change): + evt( + load_omics, + inputs=omics_file, + outputs=[ + omics_status, + columns_cond1_dd, + columns_cond2_dd, + st_df_rna, + t_cond1_tb, + t_cond2_tb, + sample1_dd, + sample2_dd, + ], + ) + + def toggle_time_fields(checked: object) -> tuple[object, object]: + is_checked = bool(checked) + return gr.update(visible=is_checked), gr.update(visible=is_checked) + + override_time.change( + toggle_time_fields, + inputs=override_time, + outputs=[t_cond1_tb, t_cond2_tb], + ) + + # ---------- preview inputs for your future class ---------- + def build_omics_inputs( # noqa: PLR0913 + df: pd.DataFrame | None, + cols_a: Sequence[str] | None, + cols_b: Sequence[str] | None, + use_manual_time: object, + t_a_text: str | None, + t_b_text: str | None, + ) -> str: + if df is None: + return "# Upload or select an example file first." + + cols_a = list(cols_a or []) + cols_b = list(cols_b or []) + + manual_flag = bool(use_manual_time) + + t_a = _build_time_vec( + len(cols_a), + t_a_text if manual_flag else None, + ) + t_b = _build_time_vec( + len(cols_b), + t_b_text if manual_flag else None, + ) + + snippet = f"""# Planned inputs for your Omics class + columns_cond1 = {cols_a} + columns_cond2 = {cols_b} + t_cond1 = {t_a} + t_cond2 = {t_b} + + # Example construction (later): + # rna_data = OmicsDataset( + # df=df_rna, + # columns_cond1=columns_cond1, + # columns_cond2=columns_cond2, + # t_cond1=t_cond1, + # t_cond2=t_cond2, + # deduplicate_on_init=True, + # ) + """ + return snippet + + build_omics_btn.click( + build_omics_inputs, + inputs=[ + st_df_rna, + columns_cond1_dd, + columns_cond2_dd, + override_time, + t_cond1_tb, + t_cond2_tb, + ], + outputs=omics_preview, + ) + + # ---------- histogram ---------- + def run_histogram( # noqa: PLR0913 + df: pd.DataFrame | None, + cols_a: Sequence[str] | None, + cols_b: Sequence[str] | None, + use_manual_time: object, + t_a_text: str | None, + t_b_text: str | None, + ) -> tuple[plt.Figure | None, str | None]: + if df is None: + return None, None + + cols_a = list(cols_a or []) + cols_b = list(cols_b or []) + manual_flag = bool(use_manual_time) + + t_a = _build_time_vec(len(cols_a), t_a_text if manual_flag else None) + t_b = _build_time_vec(len(cols_b), t_b_text if manual_flag else None) + + t_a_array = np.asarray(t_a, dtype=float) + t_b_array = np.asarray(t_b, dtype=float) + + rna_data = OmicsDataset( + df=df, + columns_cond1=cols_a, + columns_cond2=cols_b, + t_cond1=t_a_array, + t_cond2=t_b_array, + deduplicate_on_init=True, + ) + + fig = rna_data.expression_histogram() + + with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as tmpfile: + fig.savefig(tmpfile.name) + tmp_path = tmpfile.name + plt.close(fig) + return fig, tmp_path + + hist_btn.click( + run_histogram, + inputs=[ + st_df_rna, + columns_cond1_dd, + columns_cond2_dd, + override_time, + t_cond1_tb, + t_cond2_tb, + ], + outputs=[omics_plot, omics_download], + ) + + # ---------- replicate scatterplot ---------- + def run_replicate_scatter( # noqa: PLR0913 + df: pd.DataFrame | None, + cols_a: Sequence[str] | None, + cols_b: Sequence[str] | None, + use_manual_time: object, + t_a_text: str | None, + t_b_text: str | None, + sample1: str | None, + sample2: str | None, + ) -> tuple[plt.Figure | None, str | None]: + if df is None or not sample1 or not sample2: + return None, None + + cols_a = list(cols_a or []) + cols_b = list(cols_b or []) + manual_flag = bool(use_manual_time) + + t_a = _build_time_vec(len(cols_a), t_a_text if manual_flag else None) + t_b = _build_time_vec(len(cols_b), t_b_text if manual_flag else None) + + t_a_array = np.asarray(t_a, dtype=float) + t_b_array = np.asarray(t_b, dtype=float) + + rna_data = OmicsDataset( + df=df, + columns_cond1=cols_a, + columns_cond2=cols_b, + t_cond1=t_a_array, + t_cond2=t_b_array, + deduplicate_on_init=True, + ) + + fig = rna_data.replicate_scatterplot(sample1=sample1, sample2=sample2) + + with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as tmp: + fig.savefig(tmp.name) + tmp_path = tmp.name + plt.close(fig) + return fig, tmp_path + + scatter_btn.click( + run_replicate_scatter, + inputs=[ + st_df_rna, + columns_cond1_dd, + columns_cond2_dd, + override_time, + t_cond1_tb, + t_cond2_tb, + sample1_dd, + sample2_dd, + ], + outputs=[scatter_plot, scatter_download], + ) + + # ------------------------------------------------------------ + # Differential rhythmicity + heatmap + # (Paste this inside your existing `with gr.Tab("Omics", id=1):` block) + # Re-uses helpers: _build_time_vec, and states/components you already created. + # ------------------------------------------------------------ + + # Labels for the heatmap and expressed-threshold + with gr.Row(): + cond1_label_tb = gr.Textbox( + label="Condition 1 label", + value="Alpha cells", + ) + cond2_label_tb = gr.Textbox( + label="Condition 2 label", + value="Beta cells", + ) + mean_min_num = gr.Number( + label="mean_min (for is_expressed)", + value=0, + precision=0, + ) + + compute_dr_btn = gr.Button( + "Compute differential rhythmicity & heatmap", + variant="primary", + ) + + # Outputs + heatmap_plot = gr.Plot(label="Heatmap preview") + heatmap_download = gr.File(label="Download heatmap (PDF)") + params_preview = gr.Dataframe( + label="Rhythmic parameters (preview)", + interactive=False, + ) + params_download = gr.File(label="Download rhythmic parameters (CSV)") + + def run_dr_and_heatmap( # noqa: PLR0913 + df: pd.DataFrame | None, + cols_a: Sequence[str] | None, + cols_b: Sequence[str] | None, + use_manual_time: object, + t_a_text: str | None, + t_b_text: str | None, + cond1_label: str, + cond2_label: str, + mean_min: float | None, + ) -> tuple[plt.Figure | None, str | None, pd.DataFrame | None, str | None]: + if df is None or not cols_a or not cols_b: + # Nothing to do yet + return None, None, None, None + + cols_a = list(cols_a or []) + cols_b = list(cols_b or []) + manual_flag = bool(use_manual_time) + + # Build time vectors (reuse your helper) + t_a = _build_time_vec(len(cols_a), t_a_text if manual_flag else None) + t_b = _build_time_vec(len(cols_b), t_b_text if manual_flag else None) + + t_a_array = np.asarray(t_a, dtype=float) + t_b_array = np.asarray(t_b, dtype=float) + + # Construct dataset + rna_data = OmicsDataset( + df=df, + columns_cond1=cols_a, + columns_cond2=cols_b, + t_cond1=t_a_array, + t_cond2=t_b_array, + deduplicate_on_init=True, + ) + + # Mark expressed genes + try: + mean_min_value = float(mean_min) if mean_min is not None else 0.0 + except (TypeError, ValueError): + mean_min_value = 0.0 + rna_data.add_is_expressed(mean_min=mean_min_value) + + # Differential rhythmicity + dr = DifferentialRhythmicity(dataset=rna_data) + rhythmic_all = dr.extract_all_circadian_params() # pandas DataFrame + + # Build heatmap + heatmap = OmicsHeatmap( + df=rhythmic_all, + columns_cond1=cols_a, + columns_cond2=cols_b, + t_cond1=t_a_array, + t_cond2=t_b_array, + cond1_label=cond1_label or "Condition 1", + cond2_label=cond2_label or "Condition 2", + show_unexpressed=False, + ) + fig = heatmap.plot_heatmap() # should return a Matplotlib Figure + + # Save outputs for download + + # Heatmap PDF + with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as tmp_pdf: + fig.savefig(tmp_pdf.name) + tmp_pdf_path = tmp_pdf.name + + # Rhythmic params CSV + with tempfile.NamedTemporaryFile(delete=False, suffix=".csv") as tmp_csv: + rhythmic_all.to_csv(tmp_csv.name, index=False) + tmp_csv_path = tmp_csv.name + + # For preview table, show up to 200 rows to keep UI snappy + preview_df = rhythmic_all.head(20) + + return fig, tmp_pdf_path, preview_df, tmp_csv_path + + compute_dr_btn.click( + run_dr_and_heatmap, + inputs=[ + st_df_rna, + columns_cond1_dd, + columns_cond2_dd, + override_time, + t_cond1_tb, + t_cond2_tb, + cond1_label_tb, + cond2_label_tb, + mean_min_num, + ], + outputs=[ + heatmap_plot, + heatmap_download, + params_preview, + params_download, + ], + ) + + +if __name__ == "__main__": + demo.launch() diff --git a/data/bioluminescence_example.csv b/data/bioluminescence_example.csv new file mode 100644 index 0000000..6104417 --- /dev/null +++ b/data/bioluminescence_example.csv @@ -0,0 +1,583 @@ +Participant ID,1,1,1,2,3,3,4,4,5,5,6,6,7,7,7,8,8,8,9,9,10,10,11,11,11,12,12,12,12,13,13,13,14,14,14,15,15,15,16,16,17,17,18,18,18,19,19,19,19,20,20,20,21,21,22,22,23,23,24,24 +Replicate,1,2,3,1,1,2,1,2,1,2,1,2,1,2,3,1,2,3,1,2,1,2,1,2,3,1,2,3,4,1,2,3,1,2,3,1,2,3,1,2,1,2,1,2,3,1,2,3,4,1,2,3,1,2,1,2,1,2,1,2 +Group,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 1,Group 1,Group 2,Group 2 +0,919.123,834.821,1227.032,152.91,186,131,540,406,307,189,140,282,564.071,298.783,506.62,295.221,342.331,293.212,564.754,578.906,193.281,287.944,441.721,479.457,558.449,133.5,390.942,407.189,406.213,94.713,124.118,73.916,1112.212,747.835,1086.323,595.233,491.795,408.985,800.394,1221.799,258.223,352.672,95.439,102.981,73.726,1480.701,526.498,574.276,1155.453,345.919,358.793,505.006,106,161,747,444,704,538,159.523,158.988 +0.1668,920.718,838.938,1222.663,156.901,203,121,685,510,288,193,148,302,563.009,303.439,506.763,294.169,343.17,294.523,581.508,582.121,203.778,314.142,445.127,483.091,563.356,123.5,397.305,409.621,412.28,94.812,127.433,75.856,1134.266,756.197,1097.5,597.067,488.03,405.678,826.948,1302.709,282.085,355.342,94.344,103.773,72.361,1479.018,528.973,583.327,1166.273,351.159,357.759,504.341,37,210,725,482,727,537,161.031,157.595 +0.3336,926.536,829.957,1225.876,157.411,203,122,742,519,282,187,153,308,573.158,309.183,509.595,295.857,341.492,293.326,600.822,571.641,218.427,343.226,448.68,487.388,561.829,176.5,402.113,409.225,410.455,99.068,128.184,77.698,1141.821,772.681,1107.573,592.63,484.517,405.846,851.039,1328.244,297.13,359.474,94.557,102.584,71.28,1498.607,528.648,585.689,1170.658,346.882,361.077,505.984,103,250,704,472,696,509,161.23,156.396 +0.5004,922.005,832.11,1218.498,162.01,201,125,763,506,274,179,157,325,576.119,315.781,520.51,295.43,346.911,293.589,626.038,569.885,225.011,372.495,448.767,493.572,568.015,185.5,404.248,416.833,419.251,102.236,127.844,80.446,1150.813,779.686,1113.342,592.573,485.683,405.848,884.628,1349.927,311.976,365.494,97.5,103.264,71.707,1515.381,536.766,590.626,1176.598,352.448,363.184,514.34,104,267,691,456,667,489,162.415,156.561 +0.6672,917.688,836.875,1213.635,165.166,198,127,779,499,266,172,161,329,580.757,323.214,527.845,299.789,343.682,298.941,642.972,563.413,239.726,405.118,462.399,492.359,563.074,185,404.403,420.142,420.241,103.862,131.612,82.953,1171.562,799.399,1122.771,588.15,479.08,398.337,906.121,1358.807,328.748,365.732,96.69,100.899,71.565,1515.961,538.351,593.341,1176.725,353.099,365.362,516.903,107,263,690,444,646,486,165.882,159.958 +0.834,914.059,838.414,1203.028,168.563,187,127,795,495,262,170,165,336,585.023,325.576,531.391,298.163,342.744,296.591,663.599,558.696,249.968,423.106,456.528,499.031,559.504,185.5,408.179,424.271,425.854,110.055,132.093,85.815,1183.079,806.467,1135.094,589.473,475.982,400.34,942.986,1355.804,340.594,367.998,99.491,100.616,73.342,1528.492,540.119,592.676,1179.172,358.779,366.139,521.024,115,256,684,429,646,488,167.077,156.236 +1.0008,911.542,822.959,1209.939,171.833,178,128,817,487,259,164,166,351,584.569,340.437,539.817,296.678,349.058,301.699,681.921,555.637,261.562,452.134,464.054,507.088,563.144,186.5,412.52,431.03,421.81,112.021,136.286,86.92,1189.657,820.118,1145.487,583.755,475.936,398.012,978.761,1339.758,352.907,377.969,101.354,99.271,73.243,1541.674,545.366,592.012,1182.793,364.769,370.396,524.848,127,246,685,418,653,485,170,157.105 +1.1676,903.943,820.438,1207.446,172.37,171,128,830,484,250,160,171,356,594.352,342.274,545.283,301.93,347.238,303.913,695.492,556.459,270.14,471.92,471.965,512.072,570.423,185,427.58,432.345,427.283,113.562,132.249,87.982,1205.764,827.091,1165.166,585.433,469.054,396.772,995.489,1323.429,371.419,385.206,99.477,99.88,73.072,1548.803,545.111,591.701,1183.5,362.957,372.446,527.043,133,237,676,406,682,484,166.323,155.67 +1.3344,904.455,815.071,1188.23,176.234,166,125,827,475,247,161,171,366,599.442,342.441,552.027,303.919,350.169,304.612,709.077,562.52,278.988,495.032,476.712,513.546,574.728,181.5,423.083,439.472,432.826,114.538,137.604,89.639,1220.81,854.657,1162.175,579.61,469.352,393.897,1006.066,1301.916,384.369,400.516,100.586,99.271,73.157,1556.03,547.176,604.203,1187.22,371.879,377.282,532.468,139,224,680,399,703,484,169.765,156.859 +1.5012,899.353,811.06,1191.886,179.475,162,121,829,472,239,156,172,380,595.643,342.374,561.503,306.479,354.79,307.003,715.436,574.049,285.672,510.148,475.733,513.868,578.042,177,423.931,437.068,440.32,116.263,138.128,92.132,1234.006,865.305,1184.913,570.884,464.113,395.212,1020.843,1281.975,395.465,397.786,100.557,97.005,73.157,1567.897,549.779,597.316,1184.349,373.585,381.581,542.973,140,214,673,391,717,483,167.162,158.11 +1.668,892.033,809.514,1179.736,183.721,154,118,829,473,237,156,172,389,606.961,351.523,567.975,303.814,353.311,304.961,721.254,572.703,294.991,532.495,485.425,525.202,578.971,174,429.248,443.785,439.726,118.695,143.624,93.705,1241.761,889.096,1197.378,570.116,458.646,401.175,1025.538,1265.108,414.926,414.027,102.591,96.609,75.02,1564.573,548.972,597.584,1186.994,375.396,382.415,540.454,141,207,670,390,728,482,172.895,152.431 +1.8348,889.904,805.21,1168.767,186.382,149,116,811,471,231,152,176,392,602.009,355.255,577.91,308.855,356.483,307.116,726.333,568.724,307.339,548.078,490.688,524.843,580.677,168.5,432.458,446.881,442.173,122.824,141.471,92.756,1257.578,891.527,1204.669,561.725,466.081,395.665,1034.757,1242.703,424.38,428.26,101.866,95.221,74.167,1582.535,551.829,596.99,1191.519,381.155,387.056,545.775,144,193,663,385,729,481,170.696,156.17 +2.0016,879.028,799.729,1162.092,186.637,144,113,814,469,227,153,175,396,605.204,360.45,570.345,308.119,363.921,310.683,726.091,572.703,315.433,569.18,496.16,530.57,586.015,161.5,431.143,443.544,440.476,121.636,144.743,94.725,1261.385,906.515,1222.524,559.663,461.248,401.458,1033.895,1224.532,447.237,437.805,103.003,93.692,78.02,1592.012,552.226,595.208,1180.784,385.57,388.938,546.44,140,183,652,387,732,481,176.266,151.921 +2.1684,880.114,793.934,1151.403,187.91,142,112,801,471,225,152,177,399,607.399,361.924,579.423,306.493,365.357,308.063,721.254,581.031,327.525,579.823,494.923,539.609,592.545,154,433.83,449.116,446.697,118.709,144.814,94.626,1267.46,911.078,1218.845,553.462,466.379,400.458,1037.812,1200.598,460.032,450.566,103.643,95.108,77.011,1591.884,553.513,595.972,1179.398,387.141,393.168,557.576,134,174,643,382,726,484,178.138,152.488 +2.3352,871.843,789.265,1150.842,195.68,136,109,789,474,223,148,171,397,605.068,367.432,587.311,314.592,364.703,313.147,723.9,579.94,341.053,600.926,497.574,538.302,591.884,151,430.888,443.261,450.346,117.903,149.064,92.487,1286.76,922.727,1233.709,556.975,464.727,408.34,1034.531,1190.174,477.709,466.258,102.278,94.471,80.594,1578.519,553.343,586.354,1169.328,391.216,397.711,556.982,133,169,636,385,729,491,179.254,153.957 +2.502,862.042,784.338,1137.759,195.964,138,109,785,476,222,149,178,403,607.775,368.765,590.419,319.095,369.681,317.115,720.728,590.803,348.351,613.041,508.165,548.675,601.793,143.5,438.524,446.867,445.708,119.784,150.452,95.532,1285.943,937.756,1235.66,555.453,469.239,414.457,1024.859,1180.558,498.769,486.581,104.254,92.319,80.679,1573.936,558.095,592.62,1169.116,392.687,399.409,563.292,127,160,646,392,727,488,177.86,151.594 +2.6688,853.289,777.43,1123.476,198.539,138,108,771,480,215,148,175,403,608.87,365.187,590.587,316.433,376.323,315.555,715.763,590.987,361.794,634.214,510.7,552.819,605.858,143,437.11,450.119,453.301,117.338,150.679,96.297,1289.188,941.206,1239.169,555.254,466.579,414.527,1020.207,1162.699,514.733,498.846,104.354,91.936,81.774,1563.894,552.254,593.836,1163.204,398.08,402.833,570.862,127,159,658,401,724,502,178.827,149.783 +2.8356,853.599,776.242,1126.252,198.992,135,109,768,492,215,151,176,398,616.34,369.878,591.67,316.606,373.222,315.361,714.444,600.589,378.949,651.636,517.668,561.037,613.548,141,434.565,448.14,452.028,119.303,150.126,96.099,1298.102,949.698,1239.359,559.663,465.968,418.162,1012.953,1144.458,528.264,512.867,102.491,91.837,83.509,1571.956,547.318,583.837,1166.457,402.852,407.785,575.111,125,157,664,407,740,511,179.467,148.749 +3.0024,844.109,771.66,1104.307,205.772,134,105,760,496,218,149,174,406,608.839,368.627,592.4,321.999,378.172,317.948,708.423,603.79,390.813,653.165,522.269,566.018,618.078,138,436.813,447.447,448.875,122.131,148.313,96.609,1303.836,960.382,1257.768,560.53,471.062,422.4,1008.654,1144.698,550.781,527.553,105.292,94.329,85.371,1548.845,547.841,583.384,1154.279,404.651,407.115,574.19,121,155,674,414,744,524,183.92,150.306 +3.1692,839.212,764.927,1094.728,206.125,139,108,764,505,220,153,174,407,615.397,374.292,596.453,322.999,382.381,324.739,703.771,607.529,402.165,670.063,534.549,570.641,623.646,137,438.326,445.481,451.109,118.214,151.826,94.838,1307.857,962.444,1254.555,557.515,477.508,431.44,1004.214,1129.035,570.157,545.497,106.984,92.149,84.575,1543.131,547.403,586.439,1156.882,404.339,411.817,576.881,120,154,678,430,750,530,182.511,149.004 +3.336,835.581,754.72,1089.648,206.493,141,108,761,514,218,155,179,397,612.738,371.786,602.396,322.778,385.553,322.268,702.633,609.455,414.114,681.075,534.546,575.21,629.181,135.5,439.019,447.716,455.861,116.008,149.049,94.994,1308.786,968.404,1256.086,565.266,481.059,436.347,988.136,1114.334,576.412,552.89,110.155,92.446,84.646,1533.174,542.155,578.108,1141.974,403.32,416.406,578.227,118,153,688,440,776,548,184.998,148.919 +3.5028,824.097,758.182,1086.076,213.443,140,109,756,519,225,160,183,409,617.661,374.071,602.893,330.693,389.194,321.061,689.702,614.78,426.675,700.238,540.271,578.787,634.253,134.5,436.248,444.732,451.138,114.806,151.968,92.685,1311.726,968.082,1253.403,562.749,488.127,448.889,982.777,1113.088,599.383,574.913,108.492,91.781,85.4,1522.128,539.143,574.756,1131.366,407.2,417.454,580.507,114,155,707,450,791,567,180.932,148.451 +3.6696,817.201,749.494,1071.026,213.895,141,109,758,534,228,162,179,407,609.2,375.265,604.62,329.986,386.534,326.559,687.768,616.083,436.263,707.258,546.964,586.653,636.423,135.5,438.722,445.496,450.699,114.368,149.418,91.693,1301.176,970.688,1249.148,564.669,495.652,450.733,979.935,1099.647,614.513,583.481,108.335,91.228,87.988,1515.155,535.055,568.873,1128.212,404.396,419.437,582.56,116,155,715,459,804,574,185.186,149.23 +3.8364,812.192,738.601,1060.732,213.216,144,109,763,537,235,168,181,407,613.95,378.494,607.711,329.647,390.09,325.488,686.331,624.382,451.84,719.316,547.197,594.204,644.436,136.5,434.141,445.199,445.241,109.659,149.545,93.082,1292.184,971.361,1259.636,574.411,498.067,458.759,962.344,1098.458,625.736,593.324,109.259,92.743,88.073,1504.476,527.7,564.63,1115.2,409.622,419.564,581.583,116,157,734,471,829,604,183.564,145.918 +4.0032,805.481,738.917,1046.257,215.608,144,110,758,546,242,168,180,406,608.419,374.97,611.378,329.42,388.497,326.162,680.072,626.124,459.906,727.596,558.703,600.688,649.477,137.5,430.804,437.591,445.948,112.275,145.806,92.926,1305.052,978.66,1246.279,577.341,505.578,461.097,957.197,1084.352,639.691,604.413,110.255,89.628,87.305,1481.521,527.616,554.432,1107.308,406.365,416.59,582.192,114,161,740,478,850,617,181.018,146.414 +4.17,806.835,730.615,1039.375,219.274,145,108,766,540,246,176,183,402,604.749,372.878,610.093,330.311,387.857,332.928,670.541,619.425,469.807,737.05,553.81,606.537,651.9,141.5,430.874,445.142,446.655,109.659,146.811,91.325,1294.537,975.841,1240.225,584.708,511.264,471.74,950.862,1077.384,650.277,618.349,109.515,90.577,91.031,1471.819,518.012,552.282,1099.826,404.863,422.099,583.028,119,164,748,488,870,627,185.869,144.008 +4.3368,795.421,725.972,1032.356,224.793,143,107,766,549,251,180,182,403,605.204,385.141,613.116,335.85,392.565,329.873,670.526,632.554,481.315,741.763,561.631,606.637,653.565,141,431.666,433.504,444.859,108.429,150.877,92.317,1293.401,975.84,1237.263,585.419,510.81,480.057,941.713,1065.119,663.68,620.346,111.378,92.644,91.855,1457.081,513.373,556.002,1094.154,405.033,424.294,589.896,116,166,753,489,894,647,183.92,142.663 +4.5036,786.458,724.707,1020.774,225.558,143,110,768,557,256,183,185,405,603.349,377.793,607.265,336.252,388.426,339.745,660.569,624.58,488.698,744.452,566.033,610.384,662.607,144.5,418.516,435.484,439.118,108.358,145.664,90.291,1285.802,970.546,1235.655,590.482,515.738,482.445,941.416,1056.239,669.964,629.127,107.255,91.639,92.495,1448.397,505.551,538.987,1078.526,411.959,420.895,587.376,118,171,757,492,902,665,185.171,146.015 +4.6704,783.953,709.908,1010.572,228.148,142,106,767,553,258,190,184,404,603.165,378.728,610.72,340.183,391.356,339.688,661.55,622.98,496.991,749.448,570.372,614.511,661.542,146,427.169,432.755,439.783,107.114,146.273,90.22,1275.415,969.658,1230.25,597.892,522.01,485.862,923.755,1049.838,672.356,638.162,109.828,92.219,91.358,1433.192,504.844,540.529,1067.805,405.685,423.515,584.288,120,172,756,494,919,673,185.42,141.71 +4.8372,767.346,698.827,995.68,229.337,144,105,767,554,265,189,184,400,601.131,374.367,609.149,334.399,390.232,338.43,655.832,627.512,508.03,753.468,578.708,623.269,673.597,148.5,426.349,436.205,431.68,106.209,147.817,89.71,1277.415,969.686,1227.236,609.014,522.011,490.717,921.252,1036.624,678.428,639.734,112.217,89.642,94.073,1416.121,497.589,521.477,1056.561,402.427,422.212,582.419,121,176,755,501,940,681,182.119,140.959 +5.004,761.799,693.519,992.018,230.214,137,103,767,552,271,195,183,398,593.768,379.378,611.518,337.691,393.418,345.168,655.505,621.762,519.098,755.52,578.462,630.104,673.635,149,426.392,423.281,433.278,105.417,143.341,89.299,1271.945,964.348,1224.646,609.569,530.706,496.807,908.822,1026.328,679.291,640.966,111.293,91.681,91.756,1405.81,491.365,519.851,1041.469,404.665,422.991,583.608,121,177,760,492,956,699,182.782,138.962 +5.1708,747.922,689.52,969.25,230.143,134,99,767,550,273,197,185,404,589.409,375.683,605.347,341.994,395.549,346.166,647.609,627.724,532.782,755.222,583.977,632.703,681.712,150,420.142,428.739,435.017,105.403,141.754,87.798,1265.816,961.873,1216.095,610.147,525.536,499.795,899.815,1020.564,690.401,641.122,110.042,90.265,93.149,1386.575,486.698,521.604,1033.86,404.523,422.043,583.028,123,177,756,492,963,698,184.247,139.161 +5.3376,740.385,681.443,960.302,238.734,133,99,763,539,269,199,182,395,581.64,374.544,605.138,335.728,389.322,349.49,646.671,625.501,532.37,758.633,581.63,636.18,674.031,153.5,412.718,426.208,424.511,105.389,143.497,88.421,1258.956,954.144,1212.031,618.742,534.103,500.488,890.539,1014.216,694.336,648.458,110.539,93.154,95.012,1365.784,479.244,507.687,1029.292,398.759,417.199,581.045,127,180,750,485,970,691,178.656,138.552 +5.5044,738.261,674.604,954.635,233.413,131,97,768,540,276,203,182,391,575.384,371.724,601.426,341.401,396.149,347.378,640.116,625.926,536.026,768.031,591.256,631.147,689.048,151,410.427,417.257,422.022,103.636,142.321,86.622,1249.807,955.37,1201.795,620.236,539.742,502.046,882.081,1005.211,692.071,642.935,111.463,90.634,95.211,1356.35,475.213,501.294,1014.837,393.647,415.981,582.235,125,177,749,490,973,703,180.349,136.668 +5.6712,731.339,667.351,937.108,236.923,129,99,768,530,273,202,180,386,573.436,368.488,602.322,344.497,393.759,349.363,648.168,620.601,540.749,755.435,586.948,642.482,694.85,150.5,409.013,414.683,417.639,103.381,137.689,86.679,1243.495,955.432,1195.858,617.547,540.46,500.587,878.287,1011.496,694.902,647.92,110.169,91.596,94.728,1333.451,469.245,491.351,1000.82,399.397,411.987,576.541,123,178,737,481,971,699,179.979,134.7 +5.838,721.399,662.057,933.997,243.433,127,95,766,523,275,203,179,382,569.689,367.65,596.623,344.12,391.597,347.888,640.443,623.694,543.736,753.963,594.91,639.591,698.112,150,400.501,412.591,412.039,105.191,139.53,87.685,1235.473,942.491,1187.394,627.617,539.374,504.524,872.029,993.736,697.167,648.713,113.156,91.214,93.107,1319.364,456.855,486.33,986.974,390.418,412.695,574.261,122,178,730,479,973,701,182.298,132.434 +6.0048,707.467,643.127,916.59,242.272,124,94,766,520,276,203,182,382,562.678,365.541,600.169,344.441,391.569,347.496,645.39,621.544,542.384,750.495,601.672,640.712,699.702,150,402.155,406.341,409.748,103.636,136.286,86.169,1234.452,940.446,1178.574,626.536,535.419,501.902,863.389,992.407,701.158,640.683,110.497,90.251,94.301,1300.242,444.083,478.452,977.002,389.639,407.894,565.905,126,174,721,476,973,706,177.12,132.264 +6.1716,703.272,637.465,903.127,243.631,120,94,770,509,276,202,181,380,555.446,362.249,602.748,344.29,392.351,349.134,635.344,622.704,547.875,754.119,602.6,644.428,698.098,152.5,397.588,406.468,404.927,101.514,137.065,86.948,1224.749,935.583,1169.81,630.39,535.867,508.205,866.288,977.276,703.705,640.981,110.155,91.016,95.424,1278.772,444.889,466.953,953.68,386.013,404.467,566.188,124,181,717,469,969,699,177.641,131.031 +6.3384,690.3,629.536,895.505,247.368,122,92,760,506,276,201,174,373,548.482,362.774,589.008,344.427,390.758,354.667,630.895,623.863,543.281,756.355,604.925,646.221,706.25,148.5,391.946,406.185,402.664,102.391,136.612,86.735,1214.412,928.294,1175.469,629.722,543.674,511.136,857.351,975.438,698.822,640.372,111.535,89.232,94.912,1262.153,432.612,460.688,944.147,387.684,400.912,560.665,121,176,707,467,975,691,175.171,128.865 +6.5052,678.366,621.852,883.95,247.948,119,91,757,506,274,200,177,372,548.629,358.137,584.491,347.151,387.345,345.777,632.659,622.718,549.07,750.354,603.082,656.45,710.462,150,391.125,398.733,394.095,102.787,133.836,87.359,1209.014,924.668,1161.746,634.131,537.607,506.874,857.351,953.492,696.799,639.366,111.179,89.119,95.197,1235.973,431.594,452.258,924.925,381.283,399.184,554.009,122,178,695,467,965,692,176.892,125.876 +6.672,673.141,619.749,872.896,249.448,118,92,752,505,272,197,178,368,535.724,351.896,585.584,343.281,395.708,346.181,627.68,625.009,557.89,745.075,610.837,646.886,715.415,150,380.789,395.127,386.699,100.397,135.281,86.027,1201.016,912.823,1157.621,637.416,534.358,507.275,859.769,953.973,698.313,627.314,108.378,90.846,97.017,1219.708,422.005,445.766,911.05,378.634,395.828,558.172,121,179,696,470,956,693,171.928,127.717 +6.8388,662.003,609.655,854.927,250.651,121,93,758,494,272,195,175,369,530.622,349.909,577.644,344.489,392.792,348.95,627.106,616.581,590.295,752.293,609.837,650.142,712.997,148.5,381.595,392.568,387.35,103.112,137.618,86.013,1197.656,902.218,1150.212,632.509,535.966,503.023,852.854,950.664,694.223,634.324,110.724,89.019,97.259,1195.197,407.182,430.491,898.788,372.261,392.485,555.737,121,176,693,458,955,696,170.121,128.015 +7.0056,649.861,600.278,848.924,251.897,121,91,750,495,260,195,175,364,528.545,343.758,571.629,349.943,390.801,347.312,622.957,618.561,643.043,752.632,612.308,658.245,716.264,147,374.284,381.27,379.686,103.324,134.275,87.968,1193.943,899.339,1147.379,629.722,537.373,504.97,851.567,938.079,699.459,630.175,108.676,90.648,95.396,1174.618,402.939,420.124,885.832,368.522,386.934,550.751,119,175,684,459,958,687,169.396,125.694 +7.1724,636.388,592.571,826.753,256.001,120,89,759,490,261,188,175,362,514.462,344.263,564.397,348.058,393.631,348.341,628.682,623.015,696.815,752.859,615.771,662.193,717.132,148.5,374.086,376.872,373.733,103.155,134.601,84.341,1193.597,897.351,1135.094,627.233,537.776,509.961,840.354,925.621,690.5,626.039,108.349,88.75,96.676,1152.921,393.831,419.558,875.776,362.404,383.124,543.344,121,176,687,459,951,690,170.548,123.624 +7.3392,625.478,577.698,814.323,254.784,119,90,756,490,257,186,175,364,511.078,337.971,562.942,347.524,390.573,349.716,620.226,618.631,745.807,747.24,620.525,653.741,721.073,148.5,364.753,373.591,368.628,103.381,132.547,87.203,1176.702,883.582,1136.286,629.196,534.018,509.227,847.226,924.518,699.162,621.875,111.279,88.524,95.538,1129.698,387.084,407.606,848.875,358.779,383.407,537.708,118,179,687,454,958,689,164.506,121.146 +7.506,616.184,568.489,804.229,254.303,119,91,753,493,256,183,171,355,507.693,339.077,558.153,345.324,390.246,346.995,617.873,624.797,781.043,746.504,623.632,654.725,722.288,148,357.697,367.525,361.897,102.193,133.737,86.99,1170.285,882.739,1121.58,629.708,527.468,507.073,841.104,915.412,686.495,617.089,110.312,88.694,95.382,1113.291,380.578,397.904,839.455,353.921,373.054,536.192,120,176,683,463,957,698,167.356,121.628 +7.6728,603.684,559.637,783.47,255.109,123,93,756,497,250,179,168,352,504.122,333.667,544.128,354.356,390.147,342.008,620.695,625.659,809.423,752.519,621.176,659.236,722.261,148.5,359.423,358.814,359.536,101.316,134.615,87.6,1159.124,867.391,1119.178,621.046,524.007,498.848,834.062,897.863,691.534,617.924,108.037,88.821,93.491,1085.838,373.11,393.321,823.176,349.644,366.086,527.114,120,177,683,460,966,696,161.805,118.526 +7.8396,595.893,544.451,779.567,256.638,122,95,754,498,242,179,168,351,496.565,326.077,541.729,351.598,394.57,344.63,613.669,629.661,828.627,742.258,627.13,655.757,726.281,148,351.829,352.847,350.882,101.246,133,88.945,1155.147,863.272,1102.775,622.084,520.355,493.494,827.656,898.387,684.132,612.486,108.079,88.864,95.197,1059.262,366.208,380.663,804.138,343.356,365.308,519.849,120,176,689,461,969,706,158.001,116.147 +8.0064,582.633,534.779,762.61,256.779,127,94,758,497,240,172,171,352,487.333,313.53,540.06,349.462,389.777,343.338,621.193,625.009,839.595,741.324,620.653,661.261,724.114,148,342.609,352.409,346.13,104.583,132.787,87.43,1137.844,848.602,1095.798,616.282,519.604,496.288,827.458,888.46,678.442,612.769,108.591,89.487,94.329,1051.03,355.162,380.012,791.678,338.569,357.901,515.005,119,177,674,466,975,711,157.717,112.988 +8.1732,574.951,520.328,746.47,262.044,125,95,754,502,241,173,167,352,485.237,316.759,531.322,350.706,387.274,343.681,615.502,626.14,843.052,742.371,625.189,668.331,721.395,149.5,338.41,344.603,340.418,101.684,134.091,88.393,1129.373,840.706,1090.797,612.086,519.097,493.055,828.716,881.885,673.588,613.548,110.497,89.062,96.05,1016.096,350.508,368.103,780.349,337.705,356.088,505.7,119,180,682,470,984,721,156.308,115.835 +8.34,555.507,518.288,732.722,257.062,127,98,756,508,237,171,168,348,475.09,314.971,525.934,349.603,386.662,338.854,617.807,631.216,838.855,745.344,626.282,661.106,725.542,149.5,331.764,340.389,331.17,104.625,130.988,88.364,1120.005,839.948,1080.866,608.843,505.034,484,817.927,879.311,676.786,607.302,107.567,88.467,94.671,999.279,341.23,359.221,768.369,329.93,343.511,501.381,117,182,683,472,993,724,155.284,112.903 +8.5068,551.972,508.131,712.298,261.138,130,99,761,517,229,170,164,344,461.472,299.624,511.772,349.601,392.394,340.027,617.035,628.332,842.17,739.767,623.065,661.188,728.321,151,322.403,332.598,328.709,103.395,131.867,88.733,1102.981,828.052,1079.318,609.355,510.429,475.823,815.184,875.875,673.545,609.497,111.307,88.821,90.945,980.425,335.361,351.909,753.943,325.298,338.512,487.969,120,182,689,481,1010,736,152.567,110.368 +8.6736,536.992,498.805,701.402,263.063,133,100,765,520,229,169,163,346,458.788,298.765,508.101,349.335,388.234,339.307,621.577,633.281,829.324,748.132,624.585,666.742,726.108,151.5,321.074,327.465,321.696,104.102,134.615,89.172,1105.739,813.651,1062.129,599.878,507.809,478.258,804.847,861.466,672.399,603.053,110.027,88.906,92.964,954.288,328.713,344.568,736.786,317.92,335.765,486.354,121,182,697,478,1014,738,148.968,109.207 +8.8404,523.476,486.922,686.423,260.063,134,100,768,525,225,161,163,343,451.244,298.426,500.995,351.088,386.719,337.807,614.067,633.776,823.762,743.928,625.175,659.138,732.244,151,313.749,318.189,313.975,105.7,133.581,91.58,1090.84,806.403,1055.689,598.76,501.494,475.205,809.712,856.799,664.643,602.204,108.364,91.257,90.362,937.938,323.862,336.266,721.907,308.275,330.794,468.085,120,182,692,481,1037,753,147.232,106.771 +9.0072,516.754,475.667,673.185,262.851,137,105,779,538,222,163,164,344,444.532,290.294,493.516,348.638,382.41,334.249,618.533,637.665,803.79,743.207,626.381,667.351,729.007,152,305.307,319.207,307.272,106.138,133.51,88.294,1075.195,801.677,1042.278,590.895,495.312,467.427,799.884,844.95,669.228,604.144,105.563,88.793,91.67,916.864,314.951,328.713,702.403,303.828,317.877,468.524,123,181,701,482,1050,763,145.44,109.207 +9.174,505.363,467.596,655.311,260.119,140,102,775,536,241,159,162,342,439.93,282.997,485.072,344.116,382.78,336.266,618.072,636.18,799.778,748.443,624.85,657.907,731.876,152.5,300.089,302.507,303.299,105.163,132.816,88.336,1064.026,787.251,1027.909,583.556,491.497,462.111,798.965,845.727,666.822,605.277,109.274,88.51,91.884,894.559,305.136,324.329,686.067,299.806,315.243,461.57,124,181,708,489,1067,768,143.765,103.188 +9.3408,491.072,457.926,645.978,258.506,142,106,780,546,221,160,161,339,431.653,285.015,479.985,343.526,381.898,332.096,616.029,635.43,793.988,744.325,630.129,660.001,725.556,155,297.855,293.896,294.263,101.529,132.702,90.291,1054.1,776.084,1020.739,574.653,486.673,452.446,788.628,838.671,665.959,607.458,106.686,90.874,91.827,878.011,294.98,312.66,673.309,291.507,308.728,455.622,124,186,715,494,1074,779,142.552,105.157 +9.5076,479.987,443.465,628.143,262.242,141,106,781,555,214,161,161,343,426.703,274.825,469.958,340.565,378.783,331.259,611.411,638.513,776.036,748.755,631.095,663.777,726.919,153.5,292.496,299.34,289.809,103.409,133.326,88.577,1043.052,766.554,1012.924,574.71,476.998,452.311,784.938,825.507,656.377,605.319,109.331,91.611,92.922,858.493,296.734,307.37,660.014,284.284,298.928,448.087,124,183,719,496,1102,794,141.291,101.007 +9.6744,469.818,435.915,613.996,264.04,143,107,787,562,220,157,162,339,424.889,271.29,464.952,342.393,378.029,325.228,620.226,627.865,763.859,753.694,624.203,650.002,724.439,157.5,285.85,283.799,288.338,106.266,135.238,92.699,1022.442,747.982,997.939,574.852,477.015,444.106,779.847,820.996,652.627,605.249,106.544,89.458,91.585,838.479,285.561,292.534,648.105,279.554,293.263,435.653,126,189,732,503,1118,806,137.63,100.214 +9.8412,459.14,425.532,600.938,259.129,147,105,802,571,219,157,159,339,414.999,264.828,449.984,345.162,373.521,327.214,608.016,636.18,753.702,744.282,626.719,655.418,727.953,155,279.684,277.012,275.654,106.167,130.181,91.183,1019.336,739.623,984.643,564.569,468.673,440.136,774.417,817.178,655.372,604.286,106.928,89.317,92.552,822.242,282.859,291.02,637.144,272.656,291.493,427.028,124,186,732,510,1131,813,136.529,100.639 +10.008,452.142,417.215,588.31,258.35,147,108,804,577,216,155,160,334,408.272,262.246,448.439,335.977,369.78,323.032,608.646,642.981,741.611,742.442,624.118,651.772,724.976,157,271.61,273.335,267.623,106.52,132.646,90.872,997.71,730.056,975.298,560.146,465.335,429.579,762.468,812.045,660.935,607.061,106.942,89.515,92.467,810.517,273.638,285.844,628.135,268.252,281.692,415.287,125,189,737,507,1150,817,136.025,97.741 +10.1748,444.405,408.533,574.409,255.789,148,110,799,589,216,157,158,332,397.077,256.195,434.562,337.567,370.292,322.108,603.272,638.683,732.265,745.91,624.495,650.284,724.469,153.5,264.483,266.93,267.835,105.714,133.907,89.03,983.77,721.851,966.238,552.665,454.712,423.606,759.442,800.223,653.193,607.741,107.695,89.119,89.637,785.412,267.697,274.359,616.098,258.862,275.956,410.826,122,185,735,513,1161,835,134.344,96.227 +10.3416,430.78,395.806,565.726,255.251,152,110,810,593,213,159,157,326,397.514,253.592,430.892,336.218,364.049,314.464,611.847,630.778,713.587,749.533,624.712,645.626,722.586,155.5,259.534,260.496,264.13,101.783,129.997,91.368,970.76,712.229,946.443,546.507,453.245,416.311,752.372,799.997,646.725,609.696,107.852,88.736,89.836,774.408,264.176,268.885,598.065,256.823,268.932,400.048,126,185,740,512,1184,831,128.441,94.953 +10.5084,426.202,388.081,550.124,252.703,154,108,806,603,211,157,157,332,392.329,246.307,426.735,334.54,364.319,313.905,611.993,637.311,713.757,748.769,625.076,642.024,726.678,156.5,255.745,257.682,256.098,104.696,131.243,89.115,947.19,691.179,925.47,534.048,448.354,410.894,741.71,793.082,647.433,616.154,108.534,87.66,91.358,762.726,258.674,264.388,590.894,248.283,261.766,390.418,126,187,752,512,1198,842,127.573,92.858 +10.6752,413.945,384.905,541.177,253.736,148,111,812,612,217,155,157,324,387.797,242.418,417.484,324.789,352.714,309.224,607.978,633.437,701.31,746.405,623.439,646.178,720.04,157.5,251.135,250.145,248.363,106.662,132.844,89.894,936.137,691.575,924.94,529.511,440.419,402.478,736.605,792.39,644.659,619.199,107.809,85.805,92.012,746.758,252.366,258.674,585.944,244.7,255.067,383.96,127,188,749,519,1214,854,127.36,92.934 +10.842,401.525,373.061,526.737,252.335,155,111,826,621,215,158,153,324,379.487,237.735,412.434,322.702,350.068,305.15,598.756,631.754,685.719,741.055,621.72,643.41,719.583,156.5,245.083,244.616,244.673,104.639,129.657,88.634,920.611,669.062,901.49,524.221,432.396,397.616,736.464,776.524,641.219,612.995,106.06,88.283,92.353,736.744,251.008,255.562,572.083,234.361,253.58,369.542,125,188,755,516,1215,864,122.287,94.775 +11.0088,399.886,363.765,511.488,251.429,154,110,827,620,215,156,154,323,374.086,230.969,405.055,320.327,348.347,304.536,592.714,630.863,677.568,735.253,616.82,632.341,717.876,158.5,239.738,240.006,239.243,104.272,128.382,88.18,903.452,657.898,893.381,517.309,432.642,387.158,727.57,777.585,641.686,619.468,107.041,89.416,89.751,720.394,243.738,252.804,563.654,227.974,246.215,360.577,128,189,745,518,1231,869,125.768,90.456 +11.1756,389.789,356.633,504.943,250.17,152,109,827,627,215,157,154,325,368.086,230.435,396.98,317.921,345.965,299.011,588.615,629.619,667.041,738.734,621.762,634.103,708.04,156.5,237.956,235.962,232.3,102.264,130.124,86.92,884.347,646.873,875.182,514.686,420.8,382.966,719.015,771.278,641.418,619.029,107.511,86.088,92.41,707.792,240.103,250.06,556.115,225.566,238.227,352.448,126,187,745,520,1237,870,118.469,92.198 +11.3424,383.107,347.076,489.589,248.033,153,113,832,635,216,157,150,323,363.285,225.439,382.376,309.152,341.876,291.996,594.051,631.669,660.085,740.447,621.049,633.956,710.62,157,235.326,230.009,229.189,103.126,130.323,88.988,874.422,638.587,862.144,504.722,417.982,375.147,715.338,766.442,634.086,625.147,105.491,86.74,90.732,697.014,238.236,243.78,545.847,220.227,229.602,344.701,125,189,736,523,1256,874,119.237,89.776 +11.5092,375.034,342.335,481.673,247.594,153,114,841,641,217,156,153,320,358.598,222.485,380.53,306.462,330.641,282.825,586.129,627.356,650.127,738.366,615.29,622.463,711.014,157,226.106,223.024,224.749,99.874,127.844,90.447,850.864,619.9,847.574,496.971,404.304,363.427,700.42,754.168,638.177,621.111,105.207,87.731,88.77,694.186,238.476,242.408,537.417,213.556,226.048,343.016,126,188,728,520,1254,877,119.28,87.169 +11.676,365.127,331.676,466.166,244.084,155,112,838,642,216,158,152,315,355.799,216.666,372.03,300.779,326.63,283.34,577.592,618.476,650.341,729.379,611.134,625.402,705.345,155,222.331,219.064,221.298,103.126,128.92,88.988,830.929,612.521,831.654,493.06,401.175,358.616,703.842,749.94,635.148,626.591,105.747,86.131,89.737,680.268,233.455,238.123,531.76,210.696,218.91,332.309,125,185,725,526,1270,884,116.989,87.496 +11.8428,359.05,326.489,463.863,246.66,156,111,851,649,219,158,149,312,353.447,213.846,373.261,298.772,322.463,278.52,577.619,617.981,632.004,730.398,610.05,617.725,703.182,157.5,217.731,216.363,216.049,102.688,126.583,85.744,822.905,591.631,816.339,485.223,392.723,353.175,690.253,745.698,629.232,633.474,105.235,86.188,87.518,669.59,226.412,232.564,529.327,199.153,215.723,318.217,127,188,716,528,1278,890,113.541,85.966 +12.0096,349.587,321.144,451.212,240.546,154,112,844,656,220,161,146,309,345.026,211.221,366.47,288.191,313.744,273.524,570.65,611.462,633.398,731.176,607.259,616.196,707.551,154.5,214.761,209.662,216.59,102.151,125.195,87.968,798.537,579.057,791.727,473.874,389.182,345.706,685.742,733.014,628.453,627.328,106.885,87.858,90.121,660.227,224.531,227.586,521.208,198.544,208.939,316.319,124,185,718,529,1281,891,112.703,87.027 +12.1764,343.666,310.921,444.815,239.767,153,112,843,648,219,158,148,305,343.185,204.299,359.449,284.751,307.913,263.918,560.364,607.588,625.816,723.548,605.447,604.203,699.061,156,211.471,203.98,212.531,100.991,127.985,92.076,782.095,567.703,778.201,468.483,381.637,335.108,678.799,722.988,626.939,634.636,105.008,90.69,89.267,651.967,220.585,226.412,515.098,196.122,204.931,309.04,126,186,718,526,1278,889,114.386,86.164 +12.3432,336.031,307.124,434.478,238.366,155,107,848,654,222,158,145,300,343.543,203.034,350.651,278.984,301.328,257.74,556.61,605.721,620.894,723.321,597.782,602.544,689.377,154,206.889,202.933,203.595,99.69,124.586,87.529,759.493,550.635,767.046,461.714,373.593,331.806,670.598,714.603,623.91,627.781,106.003,87.561,88.684,645.418,214.333,224.955,507.022,191.024,199.451,300.812,122,186,713,527,1278,887,111.968,85.046 +12.51,329.19,304.301,425.225,237.446,151,111,846,658,220,157,145,299,337.694,201.517,349.85,276.155,297.716,255.095,545.422,602.554,610.481,720.264,598.677,596.085,689.246,152.5,208.445,197.771,205.037,101.189,127.475,89.059,747.885,546.466,750.304,450.094,369.123,324.602,667.869,709.003,625.297,635.174,105.477,84.956,89.239,632.052,213.287,219.354,501.832,185.741,194.975,297.328,123,182,717,531,1286,887,108.595,83.176 +12.6768,320.484,296.698,418.175,236.894,153,110,850,662,221,157,144,296,334.392,198.028,336.854,272.336,294.658,249.791,541.019,594.762,602.216,717.321,595.929,588.381,686.378,152.5,203.205,195.188,198.047,101.175,126.356,88.974,725.035,532.44,736.472,439.811,356.404,312.519,659.794,699.473,622.382,634.14,103.799,85.465,89.097,628.432,210.373,217.94,497.603,181.478,193.885,290.317,122,183,713,524,1279,885,109.579,84.097 +12.8436,312.757,287.612,405.626,230.172,153,108,850,658,221,156,143,293,333.281,195.812,334.159,259.74,284.077,242.32,531.162,593.999,593.624,714.094,587.616,587.613,683.454,151.5,199.672,193.301,193.175,97.513,125.379,83.931,718.53,523.842,723.507,436.426,349.241,310.188,654.562,700.066,613.522,640.485,104.567,85.281,86.708,621.544,209.397,212.212,489.371,177.909,185.189,281.48,120,183,711,531,1273,878,107.97,83.984 +13.0104,310.243,288.79,401.074,231.573,153,107,853,654,221,159,141,288,328.916,189.529,331.554,259.692,275.174,235.068,526.182,586.08,587.337,712.254,589.734,584.316,671.966,150.5,197.189,190.671,193.597,97.88,123.353,85.503,698.45,510.806,709.109,428.846,343.25,299.792,649.118,681.302,613.465,636.987,101.496,87.292,87.604,621.671,206.045,210.896,491.903,175.233,185.387,278.123,121,180,713,529,1276,871,105.595,84.168 +13.1772,303.503,278.743,393.293,223.76,153,107,840,659,222,158,142,282,327.16,189.671,323.064,251.073,269.243,228.073,518.72,574.754,589.428,705.956,585.789,576.27,665.751,151,193.995,189.255,190.558,99.309,123.622,85.744,680.401,505.847,693.764,417.681,334.394,290.605,640.097,686.576,610.663,639.876,103.117,86.343,87.632,611.954,204.235,214.63,494.109,170.573,182.045,271.24,120,182,708,528,1281,866,105.31,83.743 +13.344,300.441,280.351,384.143,223.534,148,105,849,660,220,156,135,275,321.907,187.734,319.761,245.718,261.549,219.354,511.032,566.227,578.944,694.477,577.995,569.262,663.225,150.5,189.991,187.828,191.009,97.428,124.047,84.356,668.165,495.499,685.481,411.025,328.297,282.951,633.196,678.064,599.256,641.236,103.6,85.112,85.187,609.097,203.358,210.373,481.125,170.403,181.195,263.635,120,181,710,526,1270,862,103.162,83.587 +13.5108,292.805,272.247,381.432,222.699,148,106,837,653,218,155,134,276,320.547,184.566,315.526,236.443,257.509,216.403,499.006,560.769,575.544,693.925,572.038,561.475,662.465,150,188.297,183.968,186.714,95.321,122.9,83.01,653.013,484.729,665.822,405.251,325.033,275.03,627.073,658.592,600.374,638.431,102.633,87.674,87.575,596.835,202.424,209.043,482.738,168.208,172.712,258.012,121,179,706,533,1271,853,105.332,82.029 +13.6776,291.784,263.34,368.2,218.198,149,105,837,648,219,154,138,269,317.075,182.142,311.158,229.41,248.72,211.08,492.71,555.169,554.561,692.171,575.478,553.272,658.063,147,183.104,178.317,186.909,95.109,121.285,84.639,645.064,474.67,650.646,397.798,317.494,270.154,618.702,653.276,594.981,649.294,102.989,85.451,85.826,596.764,199.115,205.904,480.277,162.77,171.494,256.03,117,177,704,527,1258,850,106.662,83.191 +13.8444,282.096,263.171,365.175,218.807,147,106,835,648,214,159,132,264,313.683,181.506,305.777,229.503,239.703,202,478.567,549.188,558.061,690.911,568.964,545.649,650.993,147,183.492,175.073,183.111,90.923,121.597,81.608,628.193,464.957,641.744,385.482,311.868,262.4,618.999,646.488,588.428,644.663,102.79,86.485,86.239,593.751,199.199,208.068,478.792,160.079,168.123,250.804,118,176,705,524,1250,840,100.378,83.46 +14.0112,285.337,258.903,361.276,216.075,145,103,829,647,218,157,133,262,317.972,177.273,302.157,222.296,233.957,195.494,473.064,538.611,551.716,676.163,567.26,538.742,642.448,146.5,179.837,176.39,182.326,94.289,117.404,82.783,611.691,457.299,626.197,378.086,299.979,255.957,606.23,641.157,581.125,643.176,101.083,86.839,85.67,592.903,196.144,204.22,470.899,157.402,164.993,249.614,116,177,698,523,1246,840,99.222,81.718 +14.178,277.002,255.333,357.968,211.504,144,102,822,638,215,152,132,259,318.291,176.258,299.828,216.899,227.074,192.383,460.983,528.189,548.444,669.243,557.011,532.778,637.638,144,181.846,174.434,178.552,90.556,116.143,80.97,604.045,446.237,612.297,371.601,298.364,249.317,603.529,633.281,581.522,642.255,103.814,85.253,84.262,595.845,194.094,205.295,470.503,154.739,162.685,242.859,116,172,697,516,1242,827,99.679,82.525 +14.3448,272.483,246.51,347.922,208.263,142,101,826,634,214,154,129,250,315.524,177.255,297.633,213.315,226.462,187.092,446.392,519.266,543.153,668.591,554.248,526.972,630.935,145,183.605,173.707,177.147,92.182,117.687,80.871,592.707,438.561,604.403,368.259,290.45,241.689,595.865,630.085,578.351,647.849,102.875,87.32,83.466,587.132,196.173,203.527,473.714,152.417,160.05,235.763,115,175,692,520,1235,820,100.876,84.309 +14.5116,269.817,249.307,344.99,202.248,141,99,813,627,213,153,126,250,315.838,172.709,293.322,202.892,217.146,185.741,437.306,506.441,534.802,671.663,543.174,519.143,621.082,142,175.969,173.099,176.097,89.877,115.888,79.284,577.88,433.353,596.173,362.726,281.763,234.28,587.72,616.708,573.355,641.505,102.576,87.377,85.115,581.885,194.193,204.956,471.649,151.496,156.283,233.186,114,170,695,518,1226,806,100.072,83.219 +14.6784,266.096,241.338,341.016,204.526,140,99,818,625,209,150,126,240,315.49,172.405,293.038,202.707,212.254,173.783,429.008,495.68,527.263,657.396,544.461,514.439,615.179,143.5,178.462,171.257,177.952,88.519,112.956,78.392,565.417,418.589,590.642,349.855,275.158,230.829,588.031,607.517,568.557,645.442,99.377,86.188,82.129,583.794,197.347,203.315,472.413,152.261,158.365,232.548,112,175,683,512,1212,805,99.137,84.041 +14.8452,261.242,239.81,339.673,198.723,137,98,811,617,211,154,127,237,315.313,173.525,287.04,196.901,204.901,169.568,418.189,491.014,518.713,649.598,539.875,503.854,609.936,140,175.65,172.444,177.22,88.618,114.741,80.928,560.484,417.132,576.874,348.376,275.909,227.016,575.8,600.164,560.122,634.65,101.283,84.814,83.836,587.599,193.811,200.557,470.051,145.307,154.895,227.691,111,169,681,508,1210,793,100.673,83.474 +15.012,257.737,235.53,332.451,195.581,138,98,801,618,207,149,126,230,316.623,169.973,284.912,189.228,198.316,165.212,407.685,484.495,510.833,641.559,532.269,492.529,603.143,135.5,174.816,169.059,172.908,87.544,112.984,75.318,546.013,412.092,568.229,340.411,267.214,220.62,570.61,591.991,562.472,639.848,101.254,86.527,83.978,586.213,198.605,202.396,467.392,146.469,151.921,225.991,109,162,675,509,1192,782,101.142,86.703 +15.1788,254.067,237.173,330.113,199.006,136,97,804,607,206,151,121,224,317.447,171.99,284.877,190.386,195.287,163.719,391.014,482.247,510.904,640.073,528.63,483.742,597.445,137.5,172.627,168.922,174.425,86.865,113.622,76.225,537.784,404.036,561.557,335.263,262.871,218.152,565.987,590.407,556.74,636.434,101.083,83.922,86.438,584.219,194.362,203.655,470.362,147.063,152.941,221.912,110,165,671,494,1178,774,91.701,83.126 +15.3456,254.351,233.119,328.053,192.737,134,97,789,599,206,148,119,220,312.495,173.291,284.687,185.07,189.541,161.125,380.543,471.952,500.377,629.713,517.97,477.914,590.187,135.5,176.677,173.614,173.873,86.045,109.839,76.876,527.256,401.311,554.015,329.46,260.361,210.905,560.472,588.866,550.88,633.404,99.363,83.073,84.376,582.564,192.227,205.267,469.16,145.959,152.148,222.195,108,163,659,494,1164,764,88.006,75.068 +15.5124,250.43,230.647,321.916,191.562,131,95,785,597,199,144,118,217,322.15,170.212,279.108,180.26,187.735,158.549,375.281,462.874,492.411,630.831,508.519,475.567,583.58,134,176.483,170.446,173.996,86.978,113.267,75.955,519.242,392.612,541.369,325.009,252.817,204.927,554.504,581.216,545.304,631.279,100.046,85.324,82.812,584.388,198.026,206.271,469.909,144.911,148.536,223.314,104,164,656,488,1162,753,89.345,72.745 +15.6792,248.668,229.765,318.379,189.312,130,93,769,588,200,146,116,208,316.898,169.517,279.265,176.98,181.847,151.846,361.395,458.038,488.428,619.579,508.649,461.343,577.543,132.5,177.994,168.81,176.691,85.734,109.344,72.91,513.155,392.4,534.693,316.361,249.586,198.886,548.311,573.778,542.304,618.859,101.055,84.927,82.229,584.459,195.918,204.305,470.121,146.369,146.808,218.726,104,161,648,479,1139,739,89.043,75.905 +15.846,248.285,227.555,313.407,184.882,130,93,767,579,197,140,116,201,326.879,172.809,280.701,174.355,174.906,150.023,356.007,444.789,477.503,604.888,500.163,457.222,563.115,130,178.741,172.47,176.378,85.833,112.545,73.094,512.387,378.714,526.693,313.588,245.436,197.72,539.586,565.124,536.458,622.47,98.723,84.814,81.746,591.573,198.266,209.114,470.871,145.307,144.528,219.689,102,158,630,474,1133,726,92.232,77.683 +16.0128,245.699,226.318,307.213,181.782,127,90,760,573,195,140,114,201,323.513,172.499,277.685,173.331,174.451,147.985,342.319,433.886,466.578,607.436,490.87,450.863,560.881,127.5,175.43,166.264,175.289,82.001,108.522,75.106,504.125,380.392,521.884,306.093,242.209,191.731,536.574,563.045,527.457,616.338,98.78,84.064,81.916,591.092,198.266,207.714,473.601,145.081,149.938,215.058,99,156,623,468,1113,714,93.435,79.646 +16.1796,242.499,220.486,309.74,182.391,127,90,754,572,190,138,112,192,326.635,173.408,280.024,168.137,172.303,144.472,331.264,422.97,461.599,601.987,483.012,439.953,552.139,125.5,177.13,172.5,174.075,81.845,104.23,73.491,497.96,376.782,521.705,306.548,237.645,193.288,531.809,559.242,516.757,612.854,97.187,83.667,79.015,595.406,201.236,211.264,475.468,144.344,148.14,218.372,98,153,614,461,1106,712,96.917,80.767 +16.3464,242.513,221.161,302.989,179.73,124,87,735,558,192,138,112,189,328.548,175.927,278.274,166.117,166.501,142.865,322.816,412.902,454.984,595.42,477.688,435.596,542.862,126,178.085,170.035,177.378,81.704,106.61,71.607,488.808,372.887,511.157,295.469,239.844,188.111,528.217,551.507,510.176,611.622,97.372,81.954,79.641,599.281,200.826,210.274,478.41,147.786,147.715,218.032,100,152,604,451,1082,688,95.297,82.324 +16.5132,238.275,219.684,303.214,179.277,121,86,733,554,186,138,106,182,334.226,171.845,276.7,164.087,164.851,137.362,313.496,405.167,443.319,586.079,473.169,426.22,537.948,122.5,181.394,170.449,176.289,82.227,107.403,70.233,482.582,373.084,517.417,295.511,235.213,183.773,522.052,545.624,508.138,605.404,98.254,83.158,78.361,603.737,200.798,212.325,482.441,143.438,145.279,214.477,96,149,591,437,1071,683,98.026,84.814 +16.68,239.965,215.892,301.594,176.673,119,84,724,547,183,136,106,178,334.855,170.753,281.398,161.577,160.513,133.05,301.009,391.267,436.804,584.805,466.062,417.85,526.074,118,179.966,169.837,175.71,78.522,105.986,70.7,482.634,368.695,509.725,289.595,230.584,181.182,516.679,537.536,499.66,598.309,94.742,83.724,79.982,605.25,201.83,211.434,486.033,146.072,146.893,215.553,92,144,580,435,1058,667,99.547,87.248 +16.8468,238.247,217.586,296.409,172.3,117,85,718,538,181,131,104,174,335.49,170.703,282.441,158.875,159.105,131.102,297.475,380.209,426.334,576.073,460.848,407.748,516.974,115.5,180.857,168.564,179.117,77.843,103.975,69.765,478.624,362.28,504.694,284.887,227.803,182.457,515.279,535.486,491.621,596.978,98.02,81.175,77.768,606.664,201.095,215.861,488.777,146.115,145.506,214.675,90,141,567,421,1039,655,99.092,87.828 +17.0136,237.845,216.083,294.503,173.106,115,80,709,528,177,130,103,168,340.995,177.057,283.95,159.427,158.041,132.852,288.901,377.268,426.448,562.259,448.722,401.153,513.981,113.5,182.85,170.771,179.202,79.837,102.204,67.329,476.755,366.4,506.312,285.373,227.058,177.812,509.623,526.973,488.295,591.27,93.903,82.52,79.129,615.448,204.178,219.722,498.069,145.265,148.211,213.939,88,139,557,416,1025,639,100.414,91.833 +17.1804,236.107,215.741,294.835,170.955,112,81,699,521,173,126,102,165,343.867,178.044,282.467,156.655,155.18,131.564,282.985,363.863,414.698,559.684,445.156,396.037,507.697,111,182.257,172.496,181.139,79.243,99.612,68.731,474.288,363.699,503.349,281.389,220.8,176.548,502.863,526.068,484.672,585.874,95.524,81.94,79.257,618.375,205.097,220.316,497.009,147.106,150.222,219.25,86,136,548,404,1008,635,101.593,91.21 +17.3472,236.419,215.786,293.087,166.907,109,79,691,511,192,125,99,161,345.551,178.75,283.136,155.891,152.433,127.787,271.71,357.047,407.3,554.178,439.599,388.123,497.136,107,184.136,173.108,180.346,75.864,102.02,68.179,472.055,366.777,500.179,278.6,218.564,175.006,498.89,521.387,478.544,585.407,94.713,81.317,78.987,630.935,209.27,222.678,502.85,150.123,152.473,219.788,81,133,535,396,986,617,104.166,90.191 +17.514,233.439,213.813,293.674,164.898,109,76,676,506,168,121,98,156,351.142,176.695,284.528,154.053,150.651,128.17,263.041,347.05,402.876,541.978,438.273,383.067,489.499,107.5,184.293,175.431,187.686,76.401,99.739,67.994,468.949,363.021,505.027,278.751,221.26,175.599,503.627,512.847,471.623,575.394,96.59,81.855,75.233,622.746,209.284,228.364,511.647,150.448,152.983,216.233,81,134,532,385,974,604,104.619,95.328 +17.6808,233.794,210.545,294.057,163.992,109,73,663,499,166,122,97,152,352.164,179.338,288.311,153.084,148.414,125.635,258.955,339.739,393.388,540.308,429.204,378.719,484.746,104,183.571,178.419,186.965,73.771,99.824,67.612,465.787,363.074,502.29,272.745,216.395,172.945,497.193,514.869,464.179,575.21,93.405,81.133,77.764,630.101,214.079,231.885,516.866,153.252,151.666,214.689,81,127,514,377,963,591,105.971,96.213 +17.8476,237.406,211.405,291.301,161.246,106,74,651,494,164,119,95,149,355.213,179.67,290.352,151.417,152.087,126.285,249.581,326.009,389.291,527.485,422.595,362.163,473.24,103,190.049,179.667,188.535,77.08,100.731,67.499,464.426,363.037,494.239,273.291,215.994,171.9,494.676,505.635,458.701,566.174,97.557,80.453,78.575,645.715,213.753,234.12,521.364,153.606,156.892,222.394,79,127,509,365,943,585,105.843,95.144 +18.0144,233.36,215.095,291.249,162.223,104,73,644,478,160,114,91,149,357.006,183.575,293.044,151.343,146.48,123.668,240.764,323.336,385.009,521.541,417.606,355.649,467.095,100,192.395,181.577,186.88,74.421,97.317,64.368,470.896,365.833,497.064,272.205,217.061,170.213,492.145,498.89,453.889,561.331,93.249,79.943,76.001,658.289,221.419,240.103,532.156,155.094,153.946,222.238,76,124,495,356,921,564,104.891,97.747 +18.1812,232.922,216.731,289.452,158.84,100,73,638,475,156,114,91,140,364.51,185.757,292.196,149.574,148.973,122.599,238.843,311.529,381.353,517.819,407.243,353.549,460.522,99,192.268,182.156,191.646,74.648,97.062,64.382,465.732,364.473,501.725,270.205,216.546,169.929,485.951,496.062,448.95,558.088,91.614,81.487,76.556,662.461,223.894,242.465,537.53,157.36,159.512,226.458,76,122,483,347,913,547,106.468,96.969 +18.348,231.801,209.83,287.744,157.156,98,71,623,468,152,110,90,137,367.626,187.857,296.526,150.805,146.452,123.724,233.267,307.683,370.926,512.073,402.967,346.783,450.25,95,195.648,183.231,192.692,74.902,95.348,64.481,469.845,373.456,502.011,264.77,214.807,174.969,480.677,492.103,442.029,550.086,92.154,79.476,75.916,668.784,226.129,240.994,540.642,160.928,159.88,229.348,71,119,466,333,881,539,107.762,98.61 +18.5148,237.62,212.537,293.739,154.467,97,70,614,462,149,106,90,134,372.751,186.968,298.071,149.319,146.826,125.831,224.086,305.293,363.998,505.081,393.703,339.717,449.688,93,198.971,187.025,193.993,72.526,97.841,63.646,465.922,373.418,503.821,266.352,211.704,171.29,481.073,487.507,433.82,552.366,92.993,81.26,75.546,680.197,225.478,248.787,550.656,160.759,160.079,228.087,70,116,450,327,867,531,111.684,99.247 +18.6816,236.29,212.947,286.288,151.707,93,67,598,454,145,102,89,131,371.953,191.083,299.699,151.711,144.362,124.276,219.227,294.758,360.314,498.599,389.46,332.224,443.22,90.5,198.603,189.03,197.896,74.577,93.252,63.688,466.166,375.726,499.041,267.599,211.476,168.882,474.681,488.822,432.943,541.291,91.116,78.046,77.025,692.531,228.279,251.036,558.024,161.254,165.262,231.557,67,114,442,321,848,515,112.054,101.384 +18.8484,238.468,213.103,283.545,149.98,91,69,592,440,141,106,87,129,381.628,192.741,302.585,151.544,143.442,122.698,218.646,284.054,346.772,489.314,380.929,325.799,435.044,89,206.239,188.394,202.251,74.04,94.838,62.569,471.762,375.816,513.804,269.48,212.667,165.974,465.617,488.808,423.389,532.963,89.922,78.414,76.769,694.087,232.847,256.807,561.334,169.129,165.517,234.531,66,112,430,313,836,497,111.727,102.756 +19.0152,239,216.505,286.613,149.216,92,66,585,439,141,101,87,126,395.142,196.556,300.839,147.733,145.67,124.63,211.616,285.581,347.355,488.961,380.022,318.544,420.06,88,206.766,192.934,206.13,71.013,91.892,61.903,476.291,371.266,507.743,267.67,211.278,169.137,467.979,486.149,412.251,526.944,92.41,79.873,75.048,702.912,237.953,257.896,576.821,169.653,171.437,233.256,66,110,418,305,821,492,111.755,106.591 +19.182,238.735,214.93,291.226,147.985,88,63,574,429,137,98,86,124,393.136,198.517,306.226,150.977,144.366,123.421,205.522,278.893,341.722,478.586,371.045,313.529,421.085,85,209.411,197.462,208.407,73.361,93.096,61.181,480.907,382.648,521.526,265.428,209.354,172.949,465.83,480.606,408.84,525.67,87.817,79.377,73.314,722.614,238.194,268.348,591.559,172.613,172.783,241.024,64,106,414,294,808,477,116.9,104.171 +19.3488,242.432,218.869,291.088,146.951,85,62,560,421,136,96,83,122,397.155,199.176,310.902,151.201,148.939,124.743,203.195,271.61,334.111,475.232,360.917,312.151,415.23,83,204.528,200.699,208.445,72.258,92.033,61.974,483.197,388.017,520.868,267.599,215.19,174.856,472.631,477.538,402.273,517.328,88.94,80.991,75.375,729.149,245.859,271.87,593.044,175.983,176.117,243.963,62,104,405,290,782,463,115.223,107.157 +19.5156,245.331,218.665,293.498,145.918,84,62,556,414,134,94,82,120,405.347,199.453,309.632,151.814,146.073,126.029,199.585,263.988,327.98,465.764,359.447,307.85,400.888,81.5,214.609,206.196,210.751,70.943,93.096,62.272,488.793,387.683,530.356,267.859,215.965,173.629,466.48,471.981,402.089,509.383,91.144,79.731,73.655,746.22,246.227,273.256,600.965,177.371,179.74,247.702,60,103,393,278,764,451,117.085,108.742 +19.6824,244.007,217.3,294.537,145.847,84,59,538,406,130,93,81,119,403.561,206.028,319.212,154.33,144.902,126.598,198.543,260.92,320.44,462.579,351.315,298.078,396.281,79.5,220.261,209.846,217.958,71.424,91.75,60.742,487.648,393.947,533.122,270.286,213.177,177.815,462.733,472.362,391.021,505.559,90.746,79.094,75.361,758.667,250.81,285.094,615.999,183.504,184.335,253.849,57,102,381,272,749,442,119.7,110.765 +19.8492,244.574,222.71,292.493,141.05,81,59,530,402,128,89,82,116,417.948,205.567,319.045,151.332,146.229,123.634,196.034,253.44,321.337,458.333,345.487,294.297,396.688,79,219.644,211.745,216.038,71.211,91.736,62.059,493.053,401.74,535.251,270.376,213.445,175.812,462.393,474.936,392.875,501.905,90.462,78.428,74.124,773.588,257.471,288.743,621.827,186.024,188.69,255.123,58,100,371,264,738,429,117.924,110.171 +20.016,248.005,219.119,296.826,142.918,80,59,520,400,124,90,82,112,416.617,211.848,327.895,153.947,147.049,127.49,192.697,251.149,309.572,451.71,343.681,288.064,388.987,76,227.204,212.466,217.897,70.476,91.552,59.665,500.079,400.63,540.269,271.907,216.962,179.527,461.616,474.172,385.219,492.09,88.457,78.088,71.024,780.533,259.749,295.659,640.355,189.494,190.387,260.222,56,96,364,259,716,417,120.98,110.199 +20.1828,252.802,222.592,300.763,139.974,81,59,514,386,123,86,78,112,427.033,210.952,333.476,152.225,146.727,126.837,187.995,246.949,304.01,445.723,337.411,282.924,381.115,74.5,228.406,216.441,226.27,71.056,88.818,60.062,513.317,404.248,538.866,272.466,216.687,181.95,459.466,476.873,377.562,491.056,87.831,75.781,73.513,802.908,265.491,301.232,637.37,192.058,194.629,263.437,54,95,356,249,705,406,123.055,114.543 +20.3496,253.543,225.436,302.236,137.936,78,56,502,383,120,88,76,111,430.112,213.933,337.422,153.126,146.196,129.457,185.726,244.772,302.332,449.006,327.919,285.504,374.017,74,228.929,219.353,227.869,69.302,87.486,57.668,510.534,417.438,557.887,277.394,220.335,182.741,463.044,473.805,377.562,482.616,92.794,76.871,72.887,809.117,267.895,305.928,658.006,197.17,201.714,269.328,53,95,344,242,689,392,124.346,115.831 +20.5164,250.309,226.587,303.47,137.809,77,56,497,372,117,86,77,109,436.288,220.692,341.606,157.64,147.608,128.765,183.734,240.19,295.56,438.477,330.679,278.152,372.304,71.5,235.141,226.856,231.495,70.787,88.945,59.778,523.559,424.587,560.075,276.135,221.26,182.347,463.765,477.594,370.443,477.234,88.229,77.791,70.64,827.405,277.202,312.024,675.855,203.133,202.506,274.186,51,92,342,239,674,383,127.191,119.314 +20.6832,252.088,230.322,302.713,138.488,76,55,488,370,115,82,77,105,443.81,221.461,340.566,157.331,151.911,130.647,184.773,239.426,294.806,435.193,324.52,275.448,367.758,71.5,239.474,226.345,237.788,67.591,89.696,59.042,526.908,424.412,566.174,281.005,222.419,188.106,457.812,470.199,363.762,478.381,87.419,77.154,71.494,845.049,278.002,314.173,677.329,206.503,208.685,280.12,53,90,332,233,665,374,128.114,120.599 +20.85,256.538,232.133,305.735,139.323,75,53,475,363,115,81,77,106,446.94,223.253,347.626,159.128,153.296,132.437,179.147,236.669,292.559,427.621,314.895,272.543,363.096,70,242.701,230.461,239.183,69.642,87.345,60.033,536.696,434.585,574.334,282.562,225.195,191.674,458.533,469.605,362.333,467.688,88.94,76.998,71.067,861.222,287.838,329.519,690.763,212.976,212.277,284.015,50,90,324,228,649,369,131.639,121.562 +21.0168,258.192,235.252,305.403,137.327,74,54,469,355,115,80,77,105,452.54,226.588,354.157,158.76,153.659,133.464,178.315,228.27,287.509,429.999,312.127,266.255,360.705,68.5,247.478,238.496,244.807,68.242,87.614,59.141,540.919,440.796,583.075,287.686,228.33,191.787,451.35,470.807,350.827,466.994,90.035,78.442,71.934,877.954,290.949,333.126,698.853,213.131,218.06,291.238,49,88,319,220,629,358,132.193,125.156 +21.1836,262.752,239.388,312.298,134.836,73,52,463,357,111,79,75,104,457.27,230.352,357.36,161.821,155.102,133.585,177.229,229.344,282.274,420.29,309.888,259.216,359.377,67,254.105,244.05,248.122,70.292,88.534,58.9,552.316,452.226,587.794,288.363,228.338,198.01,451.661,471.288,352.001,465.026,85.613,75.851,71.579,887.261,298.672,338.034,716.533,222.167,222.557,291.847,49,85,315,216,621,350,134.595,125.481 +21.3504,267.195,241.065,311.142,132.19,73,53,458,344,108,78,74,103,464.787,236.278,361.552,166.178,157.227,137.71,174.033,230.56,278.561,420.997,304.848,260.71,348.78,67.5,251.602,241.717,255.124,66.955,83.973,57.384,563.465,455.137,602.92,288.639,233.759,198.143,449.497,465.024,349.199,456.302,88.585,77.72,71.835,901.489,304.216,347.623,725.188,225.453,231.069,298.673,48,87,305,211,603,342,133.032,127.122 +21.5172,270.858,243.908,317.867,133.817,73,52,446,342,108,75,74,101,476.535,235.716,366.983,163.82,155.855,137.851,173.522,224.381,274.052,417.006,303.778,252.532,349.009,66.5,257.906,247.509,255.787,69.161,87.09,55.203,571.641,466.603,606.297,295.985,238.162,202.22,451.802,461.927,344.189,454.701,86.921,76.743,72.93,929.211,307.597,355.105,743.321,228.753,231.041,304.919,49,84,301,207,592,332,135.667,128.085 +21.684,272.741,246.878,321.462,131.482,68,52,446,336,106,75,73,100,478.503,240.239,375.866,166.107,161.933,139.905,175.143,223.9,269.556,412.01,293.291,252.083,340.254,65,265.122,251.152,258.749,66.856,86.183,57.88,574.855,474.475,614.732,295.917,238.125,204.768,450.911,453.23,340.948,450.509,88.045,76.772,70.911,947.287,312.448,360.522,755.781,235.976,240.133,318.43,46,84,294,204,581,331,140.067,130.793 +21.8508,278.672,247.627,324.729,131.553,71,51,432,335,104,74,73,99,485.394,243.126,382.19,171.347,159.396,143.252,172.173,218.428,269.073,412.392,291.869,251.583,338.232,64,264.74,256.38,267.388,64.565,86.055,57.002,588.129,483.004,630.731,301.573,245.098,211.859,450.614,454.899,335.98,447.79,86.822,76.163,68.977,954.698,323.409,368.711,774.55,243,246.553,319.69,46,82,290,198,574,320,141.076,133.688 +22.0176,280.629,251.084,329.162,130.322,71,50,429,328,103,74,72,100,496.828,246.132,385.799,172.817,165.558,143.755,169.595,223.151,263.937,407.184,289.751,245.478,332.564,64.5,270.376,259.277,274.267,66.814,87.245,57.838,597.885,491.362,635.446,306.536,248.841,211.987,447.8,461.008,332.895,452.733,86.637,75.497,69.361,972.505,325.898,373.308,776.742,250.62,248.589,331.587,46,83,287,194,563,314,141.105,133.886 +22.1844,286.147,256.384,332.04,132.968,70,50,421,329,102,73,73,99,494.436,254.208,390.806,172.693,167.913,145.86,171.676,213.719,262.387,403.702,286.268,244.983,337.482,63.5,273.448,266.721,272.444,68.44,84.596,56.549,615.434,500.444,649.75,310.303,253.394,219.329,450.105,458.533,327.177,454.46,87.646,75.299,68.749,998.614,330.283,381.328,789.174,251.512,254.005,332.975,45,82,280,192,548,304,145.042,137.622 +22.3512,287.85,257.46,341.437,128.51,68,50,419,323,102,72,72,100,493.982,256.165,398.753,176.116,167.022,147.69,172.198,216.307,255.046,402.811,284.964,242.055,331.006,61.5,281.509,271.601,280.674,67.676,86.82,56.96,627.222,506.596,651.947,311.341,256,221.118,460.371,457.671,326.823,454.73,84.447,75.441,68.707,1005.87,339.929,391.483,803.403,258.692,262.207,341.515,44,79,274,187,546,303,147.444,137.013 +22.518,290.97,261.207,341.741,128.991,67,50,412,318,100,72,72,98,506.72,255.703,405.138,180.504,172.15,150.878,171.15,216.533,257.564,396.923,281.544,239.587,327.511,62.5,283.361,271.557,283.163,67.832,84.554,57.427,632.265,517.668,672.706,321.579,257.301,222.83,465.434,453.98,323.44,449.093,87.817,73.43,71.565,1023.691,346.152,398.512,817.221,267.161,265.516,348.78,45,80,267,183,528,297,146.492,140.876 +22.6848,296.125,264.893,345.581,128.552,67,48,404,314,98,71,72,99,505.961,261.182,408.433,178.933,172.765,152.617,172.155,214.186,251.106,397.433,279.2,240.018,326.856,61.5,286.642,277.697,283.842,67.422,85.744,58.291,648.48,529.468,680.717,324.576,261.57,228.083,455.083,461.121,319.704,449.886,87.206,73.288,67.811,1044.864,348.401,404.919,830.036,268.578,272.034,358.24,45,78,273,183,528,286,150.869,142.843 +22.8516,300.178,266.842,353.62,128.284,66,49,405,311,98,71,73,98,516.302,265.79,415.02,182.687,176.402,153.982,171.122,212.305,249.114,393.993,276.537,236.273,322.334,61,292.609,281.035,290.191,70.391,85.574,56.166,667.716,544.048,695.542,326.001,269.73,236.693,454.249,458.024,311.608,441.969,85.229,74.506,69.318,1062.685,355.897,407.522,840.643,275.022,282.682,360.067,44,78,268,176,521,281,153.442,144.484 +23.0184,305.238,271.378,355.045,128.312,65,47,396,305,95,71,70,100,519.228,265.315,418.684,189.791,179.347,162.087,169.879,214.483,248.688,389.691,274.837,233.356,317.183,61.5,295.875,284.641,294.928,67.167,86.027,57.611,669.939,546.308,706.43,332.964,272.74,241.517,445.623,460.852,312.458,438.174,86.907,75.922,70.285,1080.279,364.016,417.592,853.981,277.769,286.288,364.628,45,78,263,179,516,277,154.181,145.998 +23.1852,306.758,277.838,365.913,129.855,65,49,394,302,96,67,71,100,522.325,268.997,427.024,189.817,183.327,163.763,172.215,211.612,248.474,389.238,268.942,232.506,318.629,62,298.421,291.911,296.724,69.359,84.738,56.775,682.644,558.51,715.099,338.77,274.133,245.581,444.492,466.494,308.523,434.605,84.888,74.195,67.555,1100.151,370.706,420.732,864.631,282.669,293.754,376.836,44,80,254,174,500,273,154.479,149.182 +23.352,313.747,277.133,365.885,129.6,65,48,393,296,97,68,71,98,525.92,270.216,433.117,194.25,189.156,165.952,171.216,217.749,244.178,390.979,267.459,234.7,316.73,60.5,303.044,297.625,296.384,70.547,86.112,57.739,706.527,565.924,729.672,342.446,279.275,254.314,444.393,462.846,305.395,438.858,83.665,73.912,69.745,1115.398,376.391,427.181,876.893,292.902,296.738,379.316,43,78,253,170,500,268,157.208,148.927 +23.5188,318.35,282.849,375.758,129.189,65,47,388,302,96,66,70,99,535.056,276.423,433.07,197.23,188.417,166.442,173.025,210.75,233.523,389.266,263.808,232.902,318.077,62,307.88,298.813,305.208,70.193,86.084,57.668,711.689,579.155,743.465,348.837,287.751,257.545,444.859,458.066,301.008,434.307,84.973,73.529,68.934,1130.631,376.731,433.843,886.653,295.874,307.194,389.645,46,78,249,172,492,263,160.889,153.753 +23.6856,322.728,286.88,376.696,126.288,66,48,385,297,95,67,73,99,543.21,279.337,440.804,198.935,194.743,173.37,171.231,212.39,231.105,389.323,265.391,229.255,310.881,59.5,312.561,304.338,309.28,68.511,86.367,58.121,724.002,588.41,763.231,356.434,293.818,262.482,452.453,468.587,296.903,435.214,86.48,76.998,69.873,1152.37,384.736,448.057,898.929,300.246,306.953,396.409,43,76,250,169,487,262,159.724,151.842 +23.8524,324.675,293.487,389.599,127.448,67,47,382,294,94,67,71,99,543.551,279.541,446.308,205.197,197.901,177.13,174.247,210.537,229.597,383.945,262.082,227.251,311.939,60,317.397,307.227,314.823,67.323,86.183,57.427,746.057,597.991,770.949,364.393,298.481,266.943,446.613,468.643,297.201,429.209,84.646,74.591,70.015,1174.618,394.326,451.353,914.233,302.638,315.91,405.252,44,76,245,166,479,259,161.699,156.866 +24.0192,331.69,297.038,392.479,124.972,66,47,380,291,93,69,73,98,547.811,286.103,454.357,206.721,200.742,177.715,174.161,215.996,229.185,382.091,256.313,229.976,313.062,61.5,321.682,314.261,315.997,68.468,85.715,56.35,755.657,602.393,782.787,369.882,301.558,275.138,451.392,472.758,299.026,427.977,86.267,75.568,69.46,1182.595,394.227,459.188,930.13,312.146,320.863,409.865,44,79,248,163,477,250,166.83,158.677 +24.186,336.207,297.504,396.387,126.373,65,45,375,289,94,66,70,102,554.775,286.528,461.826,213.446,206.419,182.687,175.312,212.701,226.453,387.158,257.924,231.514,318.162,61,323.875,318.331,322.716,69.345,85.517,56.846,769.294,616.044,795.881,374.076,310.117,281.77,446.853,476.619,291.483,433.103,86.153,73.912,66.105,1200.628,402.501,462.243,931.361,316.448,324.428,417.195,45,77,248,163,476,254,167.583,160.063 +24.3528,337.941,307.249,406.16,124.476,65,48,373,290,96,68,71,103,552.957,288.693,454.601,212.115,208.305,189.408,176.067,213.21,225.956,381.553,262.771,227.982,311.037,62.5,326.009,320.821,324.34,69.515,84.993,58.419,787.695,626.963,816.511,382.122,311.565,289.563,445.679,469.506,286.84,426.433,83.58,76.05,69.147,1222.565,404.495,467.576,938.475,318.924,325.362,422.402,45,80,244,162,476,250,167.868,160.969 +24.5196,349.968,307.195,411.183,126.458,64,48,369,286,94,65,73,101,559.224,291.469,466.774,218.946,212.305,193.842,180.766,210.495,225.913,384.567,257.203,228.469,311.939,62,330.039,324.125,328.313,68.044,85.276,57.115,800.209,630.117,826.738,388.821,321.202,299.914,448.833,472.419,290.704,420.683,84.49,74.591,68.308,1238.321,412.613,471.847,946.82,324.018,336.201,431.939,45,79,241,160,471,248,169.843,162.54 +24.6864,347.303,312.297,415.209,125.609,64,47,375,282,95,67,71,105,559.196,297.146,471.118,221.514,212.811,193.556,177.518,214.483,227.606,382.345,261.865,227.897,310.881,60,326.758,329.83,328.158,71.098,86.225,58.107,820.464,644.869,844.553,396.452,329.412,304.865,456.525,476.392,285.807,422.085,86.239,72.906,68.963,1245.138,414.961,478.834,958.149,331.857,343.092,439.283,44,76,243,161,464,247,169.687,163.218 +24.8532,354.288,315.015,416.215,125.467,66,48,373,285,92,68,73,106,560.314,298.908,473.415,227.012,222.301,202.645,179.076,212.616,226.852,383.591,257.698,232.392,313.537,61,332.952,338.034,336.161,71.848,86.155,57.682,833.193,659.926,847.842,399.94,333.234,310.502,458.59,480.974,284.576,423.459,87.718,75.37,66.773,1257.995,417.45,484.138,975.616,335.211,344.663,449.81,44,78,246,161,470,244,174.064,163.275 +25.02,358.025,317.708,428.362,129.345,66,50,369,282,93,68,72,107,565.71,303.612,473.827,233.377,224.824,204.145,183.977,215.642,227.919,384.086,256.2,231.829,312.453,63,338.622,337.765,341.21,72.484,86.027,59.254,845.444,660.599,869.835,409.019,340.085,314.661,453.824,480.408,283.882,422.666,85.656,73.274,67.91,1279.507,419.94,489.795,984.131,342.682,351.157,454.607,46,80,246,161,462,240,176.736,166.035 +25.1868,366.936,323.902,433.251,126.203,65,47,367,286,95,67,73,107,564.849,302.772,476.964,236.155,229.567,203.609,186.532,215.331,229.996,387.582,257.245,231.217,313.452,62.5,343.394,340.361,340.608,72.032,87.727,58.574,854.035,668.394,883.466,417.416,343.243,324.663,454.857,483.632,278.844,422.453,84.063,73.713,66.915,1292.802,422.924,492.044,988.841,347.026,352.105,455.272,45,80,240,161,463,240,176.04,167.761 +25.3536,370.598,327.592,439.479,128.977,64,47,365,286,94,67,73,108,569.098,303.492,486.382,243.018,234.021,210.996,186.324,217.028,231.034,385.176,258.437,236.454,312.637,64,342.892,344.78,343.613,71.579,88.35,58.815,869.497,679.233,893.133,421.713,353.225,326.071,458.42,483.887,278.434,425.852,84.092,75.129,68.223,1310.92,431.127,494.35,999.25,346.743,360.992,467.017,46,82,243,162,462,240,181.029,171.001 +25.5204,374.451,333.564,449.864,129.076,64,49,371,284,94,67,72,112,568.897,303.96,483.977,246.899,238.596,218.337,192.342,217.565,236.553,385.035,259.084,234.701,313.933,63.5,347.512,346.413,346.452,70.716,88.223,59.014,883.039,693.163,904.02,432.218,360.386,334.855,457.161,484.028,279.821,424.62,84.575,74.067,67.242,1313.961,434.663,501.535,1005.672,348.922,359.591,470.115,45,82,241,164,461,242,181.782,170.336 +25.6872,377.832,340.411,452.828,128.835,62,48,368,283,93,66,74,114,573.376,308.56,493.008,249.303,245.536,221.302,189.937,217.495,237.35,390.667,253.48,236.426,313.742,63.5,352.57,347.349,350.974,70.716,88.534,58.461,898.52,698.039,920.25,434.707,364.736,340.341,457.769,483.675,279.778,424.521,83.054,73.727,68.792,1329.293,445.893,508.394,1008.84,355.105,365.788,476.851,45,82,242,162,461,242,183.26,172.784 +25.854,380.844,345.78,470.458,128.68,63,49,365,283,95,67,73,115,581.927,314.884,497.547,258.041,253.939,232.937,192.029,224.141,234.633,389.62,258.674,240.876,314.386,64,353.323,350.86,350.141,70.999,90.22,58.39,909.146,705.74,929.424,444.745,370.139,350.405,461.149,488.723,280.372,425.994,85.585,72.807,68.891,1336.761,443.772,505.707,1010.608,357.893,369.213,481.69,47,81,246,165,464,241,183.345,174.949 +26.0208,384.855,348.008,471.393,126.882,64,48,364,280,95,70,74,116,578.603,312.671,502.04,256.395,253.852,230.9,194.774,223.547,239.527,391.941,260.703,237.84,318.812,65,356.439,358.585,350.585,71.876,91.141,59.438,921.513,715.271,942.307,447.97,375.608,354.836,465.518,492.216,269.545,424.663,85.187,73.742,65.251,1349.094,445.427,509.738,1019.476,358.445,374.448,481.704,47,83,246,165,460,241,184.383,170.548 +26.1876,391.126,350.62,472.514,130.548,66,49,365,285,96,68,74,118,583.093,316.836,503.328,267.084,262.826,237.076,197.27,222.967,237.948,392.097,257.754,240.678,319.463,66.5,362.333,358.558,353.224,73.191,88.591,59.353,934.035,721.971,957.879,458.381,385.116,361.22,464.585,497.476,275.207,422.991,84.902,72.736,68.394,1356.958,447.449,512.949,1024.03,359.945,378.679,487.421,48,85,243,165,465,240,183.715,172.218 +26.3544,390.05,357.311,485.147,130.463,63,49,365,286,96,67,76,121,583.524,317.256,503.905,270.41,264.557,242.083,199.525,227.025,237.137,399.089,257.842,245.138,322.367,65.5,359.196,358.005,360.936,73.078,87.557,59.07,949.333,723.196,974.752,467.972,390.817,367.237,472.179,488.115,279,429.478,86.566,73.812,67.427,1367.933,450.434,517.404,1028.203,364.982,378.014,496.689,49,82,247,166,466,242,184.497,174.312 +26.5212,402.515,358.515,482.6,129.288,64,49,369,288,98,71,75,124,589.678,315.753,504.895,274.923,273.931,245.383,201.687,231.536,241.874,399.329,261.432,245.167,324.668,68,364.751,364.673,359.325,74.209,88.279,60.473,962.945,741.305,985.859,478.686,396.356,374.403,472.801,502.439,272.815,431.716,84.959,76.29,67.1,1378.584,451.735,520.53,1025.345,371.151,383.603,502.165,50,86,250,172,471,243,185.861,170.464 +26.688,399.423,363.753,499.51,130.138,68,50,373,287,97,70,74,125,590.315,321.12,513.325,280.729,279.896,251.539,205.334,233.275,247.208,398.353,263.21,249.593,329.675,69.5,365.095,361.642,357.66,74.605,88.067,60.728,984.056,750.369,990.454,482.728,396.615,386.093,473.282,503.118,275.532,438.499,83.85,75.639,67.74,1385.868,453.446,517.022,1042.813,372.312,384.098,503.934,52,87,253,171,465,245,187.439,176.18 +26.8548,405.606,366.342,494.268,130.024,66,49,371,294,98,69,75,127,586.449,318.72,511.414,287.978,282.946,262.265,207.918,238.521,243.709,397.362,265.208,251.328,328.458,68.5,366.582,367.027,363.353,74.987,90.149,61.209,992.142,748.805,997.868,489.151,406.803,391.285,481.398,507.304,271.102,433.727,85.826,73.841,67.996,1388.187,459.033,528.549,1042.714,377.49,386.872,501.5,50,87,250,171,470,241,186.415,174.369 +27.0216,411.875,370.317,502.753,134.383,68,48,376,291,100,71,77,131,591.327,323.489,515.221,291.389,293.316,263.473,211.417,237.857,246.682,404.566,267.431,255.406,326.332,71,368.751,370.444,370.065,73.827,92.246,60.175,1005.997,767.919,1009.16,497.342,416.375,393.114,479.744,512.012,271.555,436.092,84.319,74.11,66.46,1397.494,461.282,526.442,1050.96,377.501,386.079,512.159,53,89,254,176,472,248,185.818,176.534 +27.1884,412.186,374.097,512.415,134.001,69,47,374,294,100,70,77,134,594.179,321.35,519.851,296.171,296.326,265.539,213.864,240.388,248.033,402.315,267.429,259.344,331.952,70,365.317,374.434,370.475,75.128,91.665,61.577,1018.879,766.973,1033.745,504.607,414.745,395.85,482.487,506.54,271.47,440.992,84.888,75.143,67.484,1402.076,460.674,529.27,1046.858,374.57,390.084,510.048,50,90,256,175,480,247,190.892,179.392 +27.3552,419.947,374.109,518.072,135.926,69,52,379,300,98,71,77,137,597.163,325.243,520.102,303.577,304.66,275.591,216.587,247.402,253.354,403.688,265.221,261.417,336.345,71.5,370.264,373.167,369.287,76.514,92.161,61.988,1025.934,773.187,1037.813,516.547,429.317,402.089,486.814,513.172,273.678,441.403,86.338,75.455,68.38,1394.792,464.422,528.86,1054.411,376.807,390.262,515.345,53,90,259,182,481,249,189.045,178.515 +27.522,421.197,379.869,521.696,136.025,71,52,383,300,100,73,79,139,594.838,319.617,525.319,305.102,308.028,282.578,220.379,246.525,256.981,404.622,271.276,266.652,342.022,73,372.106,375.745,371.596,78.225,92.841,61.733,1045.26,774.449,1040.804,513.266,431.336,406.013,485.867,512.521,273.508,449.518,85.841,72.623,68.294,1411.326,465.058,526.611,1053.477,383.492,396.394,523.347,54,92,268,184,476,248,191.29,178.727 +27.6888,421.441,385.044,527.867,137.285,70,51,389,302,101,74,79,144,600.919,323.587,525.82,312.411,319.8,288.529,224.114,251.87,258.29,408.09,273.209,266.863,342.662,74.5,373.394,371.69,371.822,77.589,90.73,62.286,1043.738,775.685,1053.137,525.745,437.099,411.461,486.998,512.493,274.513,455.622,87.732,73.869,68.536,1414.494,464.818,531.604,1048.994,383.733,395.672,522.766,56,93,266,189,487,252,189.983,176.214 +27.8556,424.497,388.343,534.679,136.138,72,50,390,305,102,73,80,147,603.859,325.428,527.751,317.108,323.001,290.445,226.112,254.316,260.253,411.444,278.461,269.682,343.578,76,375.42,374.629,372.587,76.684,93.606,62.158,1057.452,790.361,1070.357,525.765,441.783,417.041,492.159,518.998,275.037,454.871,86.936,76.135,68.465,1418.837,464.195,524.094,1060.351,379.272,395.644,528.884,56,96,268,192,488,258,190.523,179.831 +28.0224,427.015,390.377,541.206,139.974,74,52,390,305,101,73,82,149,593.817,326.669,527.737,322.957,328.884,297.674,231.614,260.34,262.116,417.204,279.355,275.49,346.188,76,376.443,376.532,371.08,79.229,95.617,64.921,1065.608,795.021,1071.76,540.387,444.98,421.681,487.38,528.034,274.81,455.055,89.339,74.166,68.038,1412.712,466.444,526.017,1058.951,387.288,400.119,526.179,56,96,273,197,497,258,187.154,178.628 +28.1892,432.697,390.505,536.446,138.997,72,53,397,315,103,76,84,150,597.762,332.012,531.387,327.597,336.552,306.221,237.236,258.46,266.74,422.017,281.714,279.015,351.654,76.5,373.238,376.787,372.05,77.447,93.407,65.246,1074.024,800.086,1076.973,545.97,448.536,425.178,489.218,529.872,276.24,458.483,86.353,75.016,69.261,1417.96,467.18,526.074,1054.213,380.376,398.476,529.408,57,96,276,199,507,262,191.035,180.142 +28.356,435.098,392.514,551.133,144.022,74,54,400,313,104,76,83,158,599.742,324.035,528.538,337.778,344.777,308.065,237.821,265.883,270.893,424.295,287.145,282.902,358.311,77.5,378.498,378.091,370.961,78.197,96.694,64.113,1085.617,802.739,1083.414,551.234,454.279,427.726,494.492,524.555,277.768,468.326,85.613,74.237,69.787,1410.407,465.935,524.532,1053.689,384.441,393.349,529.961,58,97,281,204,511,263,192.57,181.699 +28.5228,430.24,397.201,558.338,140.752,76,52,405,319,106,77,85,160,597.226,327.871,535.98,342.438,347.998,315.563,245.046,267.425,271.761,428.074,289.648,284.638,367.339,79.5,376.985,378.103,372.771,78.126,94.654,63.575,1095.353,804.918,1093.23,552.085,455.769,432.123,498.89,531.795,273.664,468.113,85.329,75.781,67.853,1408.087,465.369,523.726,1050.182,380.306,395.842,526.477,58,101,288,207,517,269,190.509,181.925 +28.6896,434.762,395.686,563.119,143.272,76,53,407,324,106,78,84,165,608.235,329.259,531.386,350.675,352.638,315.355,248.786,275.683,273.127,427.805,289.765,294.74,366.483,81,372.149,381.384,370.947,77.603,97.714,65.43,1094.819,813.58,1104.513,560.645,461.919,438.598,494.577,529.193,273.041,471.073,87.575,77.579,69.247,1407.635,463.432,519.723,1050.493,381.835,397.556,532.453,61,101,289,211,516,271,190.523,178.331 +28.8564,439.128,397.985,564.369,140.767,79,55,413,328,110,79,85,167,599.173,329.932,533.033,350.206,360.582,327.073,257.65,279.387,279.045,442.34,296.791,298.291,372.884,81,374.228,378.966,372.319,80.134,96.368,65.473,1106.147,807.817,1110.445,568.323,466.018,438.913,503.57,533.916,277.471,485.349,83.878,75.894,68.607,1400.676,467.307,521.251,1046.321,379.782,394.482,526.165,60,102,290,219,521,272,190.395,179.703 +29.0232,441.861,399.496,565.911,145.465,77,56,419,331,106,78,86,173,597.123,329.021,531.169,357.554,367.835,335.046,258.671,282.074,281.022,455.842,298.206,302.349,371.836,84,373.167,378.244,375.43,79.088,96.878,66.436,1110.718,814.198,1115.857,571.89,470.254,442.279,507.77,539.544,277.768,482.771,89.083,75.214,68.849,1395.33,460.872,518.648,1046.448,381.75,394.242,530.244,63,105,300,226,526,275,188.149,182.604 +29.19,439.915,397.937,565.585,148.565,81,57,420,332,108,82,90,175,600.218,326.912,532.94,362.836,374.204,339.462,261.932,288.692,285.332,468.311,304.853,305.004,376.901,85,372.22,381.087,371.385,79.894,100.561,68.207,1115.506,822.819,1118.18,568.92,473.309,441.706,514.459,533.873,282.906,492.6,88.485,74.166,68.323,1397.027,462.88,515.905,1034.553,372.488,393.647,535.187,63,107,302,228,536,279,188.263,177.694 +29.3568,441.17,398.102,574.454,151.608,79,58,428,338,112,80,88,182,601,333.267,531.329,366.19,381.013,341.671,266.043,288.466,291.805,474.241,307.949,315.121,388.492,86,370.749,378.711,370.565,82.382,98.082,66.309,1127.601,822.501,1125.148,585.125,476.817,444.614,519.054,541.934,282.821,496.254,88.016,75.455,67.029,1379.673,460.122,511.803,1030.847,373.338,390.743,532.765,63,109,311,235,542,288,187.808,178.216 +29.5236,447.673,400.753,575.972,147.249,81,59,433,343,113,83,90,184,599.711,323.739,534.615,376.345,381.541,353.778,273.354,297.699,295.375,478.431,309.888,318.373,391.242,87,370.551,375.331,370.014,79.823,99.598,66.833,1119.894,823.25,1128.252,585.94,478.32,455.455,521.656,549.244,281.066,501.65,86.907,73.926,69.176,1377.792,456.699,512.015,1032.078,375.349,389.568,530.442,64,110,319,240,551,286,190.082,176.124 +29.6904,447.032,406.144,580.551,150.787,83,57,432,347,114,83,91,189,593.322,331.592,530.371,380.884,390.268,354.256,275.758,301.786,301.663,478.983,315.3,316.804,403.688,88.5,368.501,380.32,370.82,82.524,98.946,67.654,1129.281,823.455,1129.619,596.739,480.715,451.565,526.45,551.563,284.505,511.861,86.879,76.205,68.294,1368.414,457.081,506.994,1019.476,372.644,390.432,535.371,66,111,325,248,559,289,184.298,176.76 +29.8572,442.812,402.012,578.682,151.877,83,58,441,351,115,86,93,193,592.323,326.588,534.865,384.439,393.556,355.338,283.042,303.469,302.872,477.949,316.507,327.55,397.678,89.5,369.194,373.578,364.64,82.283,101.028,66.465,1135.513,819.737,1136.439,585.841,485.823,451.841,523.296,551.973,283.642,521.69,89.566,75.639,68.038,1373.365,456.006,503.402,1017.1,373.55,389.568,530.003,67,112,328,254,563,293,188.888,181.401 +30.024,445.142,399.842,581.168,156.377,86,60,450,360,114,86,93,200,588.405,328.085,527.329,388.868,399.451,363.769,287.618,313.07,306.087,479.988,322.608,329.251,410.401,90,368.556,377.99,368.273,82.184,99.371,67.031,1133.736,821.722,1143.37,605.581,485.747,450.758,520.496,556.915,285.269,528.559,88.457,76.899,68.636,1359.235,454.224,500.488,1009.094,371.312,385.39,523.177,68,112,332,264,574,302,185.378,174.992 +30.1908,446.293,400.62,581.58,155.599,87,62,458,360,117,87,95,200,593.396,327.136,533.985,389.896,405.983,368.067,292.686,315.936,310.027,479.436,326.874,336.416,410.76,92.5,367.108,372.63,365.751,83.655,101.921,68.887,1137.785,821.867,1143.636,600.387,493.991,455.81,526.119,558.414,293.676,541.248,90.192,73.529,71.295,1351.244,451.89,494.335,999.434,370.647,384.639,519.65,70,115,342,270,579,302,186.813,175.982 +30.3576,441.798,404.17,581.679,153.448,86,62,464,368,118,89,96,205,587.276,324.403,530.994,397.701,407.242,373.409,296.366,326.304,316.742,480.157,334.433,345.855,418.035,92.5,370.523,375.048,368.6,82.665,104.046,68.079,1143.152,825.701,1151.128,606.917,488.398,455.302,523.205,558.684,294.865,547.027,89.637,77.919,68.849,1337.426,441.679,497.942,989.802,367.021,383.421,527.256,69,116,350,275,594,311,184.951,177.142 +30.5244,443.508,397.055,589.663,152.047,89,62,467,371,118,92,96,210,588.086,322.881,529.841,397.862,413.278,374.658,302.338,330.156,315.348,477.228,344.37,352.122,423.561,96,365.432,370.248,365.531,84.447,103.422,69.85,1139.876,819.791,1149.535,608.349,490.296,455.739,525.743,562.819,298.913,559.475,89.139,76.885,68.963,1332.065,440.392,489.527,994.498,364.274,379.413,520.614,73,119,355,286,595,315,185.52,175.034 +30.6912,441.164,399.32,585.188,156.236,91,64,473,375,118,90,100,213,585.911,325.524,527.2,405.289,419.012,384.309,308.355,335.172,321.877,476.633,342.279,354.539,426.362,97,361.671,373.767,360.144,85.578,105.717,70.658,1154.363,829.457,1155.067,614.295,490.708,452.598,530.664,563.427,302.197,568.709,88.514,74.563,70.029,1305.97,438.044,485.227,978.912,359.388,380.589,521.647,72,122,364,288,602,319,184.596,175.275 +30.858,439.389,402.614,588.427,158.161,91,62,480,384,121,91,100,220,586.589,321.675,530.42,413.455,425.535,384.595,310.971,335.75,325.448,475.954,346.746,361.512,438.086,98.5,357.924,368.146,362.364,85.79,105.788,69.269,1149.522,828.35,1157.297,615.758,493.311,451.104,532.064,560.839,303.895,570.097,90.078,78.754,70.584,1307.045,436.87,480.644,973.155,354.034,375.065,514,73,124,375,297,613,321,181.611,172.699 +31.0248,440.417,405.691,583.41,158.826,89,64,482,389,122,93,101,222,574.514,321.798,530.792,411.305,425.552,391.968,316.674,344.701,328.748,480.752,350.069,365.218,437.281,99,357.98,369.956,358.814,85.465,104.032,70.346,1142.391,827.895,1161.352,613.741,491.942,453.802,531.668,570.724,310.703,584.826,90.149,75.299,72.503,1298.799,433.942,472.979,976.62,356.385,370.562,512.088,76,122,373,304,625,325,183.516,171.638 +31.1916,440.359,401.115,587.24,163.808,93,66,495,393,123,95,101,226,584.408,318.892,525.059,415.765,433.526,392.759,321.78,351.131,332.034,473.944,357.184,372.856,447.209,100,355.657,366.581,352.729,84.928,105.986,70.884,1143.387,822.104,1152.309,619.241,495.647,445.519,527.906,565.435,312.925,590.066,89.395,77.904,69.873,1282.746,430.944,470.079,962.137,352.561,367.843,508.094,74,126,385,308,624,324,180.389,174.242 +31.3584,441.831,398.144,580.029,161.218,95,66,498,396,125,96,104,232,578.648,321.621,522.006,420.974,435.389,397.446,330.712,353.85,334.666,481.021,359.529,375.684,458.582,102.5,349.532,359.762,352.132,88.067,105.703,70.119,1154.368,821.865,1162.919,622.825,489.447,456.166,526.308,569.267,315.84,593.72,89.211,78.867,70.811,1271.36,428.327,462.201,949.861,347.576,363.197,503.519,76,129,391,320,635,333,179.835,171.695 +31.5252,437.67,397.522,578.675,163.426,95,66,505,402,126,98,108,234,574.968,320.223,524.788,425.659,439.796,398.741,331.892,360.167,341.906,483.653,365.868,381.41,457.618,101,349.694,359.857,348.138,84.815,105.023,72.131,1148.179,819.448,1157.259,616.141,496.27,450.366,525.531,574.061,320.171,610.305,88.045,76.531,72.233,1257.542,426.898,457.647,946.254,345.551,362.872,499.752,75,127,402,328,641,338,175.642,169.77 +31.692,429.329,395.699,580.391,169.299,96,65,511,404,128,97,108,240,572.492,316.732,524.439,426.438,444.019,402.019,339.922,364.174,347.71,486.215,371.426,388.215,466.159,102.5,352.457,353.623,348.374,86.37,106.355,75.7,1148.86,811.224,1155.362,620.876,488.115,449.091,529.646,574.344,323.044,616.621,88.258,77.805,71.735,1247.274,419.204,460.702,938.079,342.237,355.295,498.152,76,129,405,336,650,346,180.119,170.124 +31.8588,434.544,394.409,572.545,167.898,95,68,522,414,129,102,110,242,570.58,319.889,519.012,429.892,447.202,401.721,342.715,371.95,348.976,490.418,378.4,392.301,468.806,103,343.253,350.563,349.236,85.79,109.485,72.797,1148.074,810.4,1156.304,624.744,490.297,442.548,529.165,574.372,323.794,623.476,89.154,76.658,70.754,1238.349,415.753,446.445,922.804,336.048,352.405,494.923,77,129,415,342,662,351,175.614,168.935 +32.0256,430.652,393.009,580.955,168.591,99,70,526,416,130,102,111,248,572.005,314.245,518.146,434.179,445.057,401.661,343.469,376.708,355.947,490.319,379.527,399.969,474.713,105,345.024,353.936,345.194,89.594,109.074,72.853,1136.314,801.892,1151.369,623.55,488.102,442.414,534.75,577.483,323.2,631.817,89.452,76.984,71.437,1221.844,406.121,448.708,912.564,334.277,349.516,490.051,77,133,419,346,663,356,176.143,167.223 +32.1924,426.532,388.114,577.091,170.828,99,70,537,429,131,98,111,248,567.791,315.07,517.719,435.583,447.998,402.542,357.435,384.172,356.487,499.561,385.061,405.614,481.253,106.5,346.011,350.478,337.949,88.307,110.222,72.853,1138.745,803.171,1153.53,616.669,489.206,443.015,526.365,577.186,325.974,640.159,90.86,76.531,69.816,1211.745,407.083,438.737,911.333,334.802,344.999,483.621,80,133,430,355,678,361,173.226,166.237 +32.3592,427.462,382.512,577.378,171.847,100,71,538,428,134,104,113,256,565.937,313.892,517.625,439.745,448.329,409.507,356.042,393.604,366.403,502.448,389.256,411.157,490.221,107,340.983,349.072,342.467,88.449,112.276,73.887,1143.463,793.811,1156.648,623.886,483.621,439.377,527.185,581.004,331.932,650.314,89.907,80.099,70.285,1200.925,401.242,437.775,901.206,327.395,345.395,483.876,78,136,439,360,678,367,170.994,162.879 +32.526,422.298,383.46,569.292,173.871,103,71,546,434,139,107,113,256,568.051,311.913,516.352,435.539,455.196,411.825,360.621,395.842,370.414,505.463,398.342,411.775,496.16,108.5,337.228,343.103,337.595,86.073,112.517,72.981,1140.952,793.156,1148.541,618.047,489.263,434.731,532.318,582.008,328.479,657.253,90.547,77.437,71.152,1176.782,396.928,427.648,898.859,320.087,339.702,474.939,80,137,450,369,688,368,169.644,164.266 +32.6928,417.814,378.65,574.013,173.913,102,71,552,438,138,107,114,259,561.692,306.464,510.441,441.624,455.11,415.389,362.43,405.436,370.315,508.478,401.79,418.78,499.724,110.5,332.773,342.208,339.443,87.346,110.845,73.207,1137.715,795.165,1152.829,616.653,482.605,430.025,530.451,576.154,334.593,662.168,92.367,77.31,70.626,1167.376,394.255,421.538,879.736,317.268,336.374,468.368,82,139,451,377,693,371,167.825,162.95 +32.8596,416.9,379.008,562.373,176.418,101,75,561,450,139,110,116,265,565.051,313.787,509.933,444.303,461.851,406.761,369.439,405.656,370.841,507.345,405.046,423.289,507.602,110,333.988,337.701,336.136,86.695,113.126,72.641,1137.089,791.205,1137.259,620.071,479.474,427.174,523.919,588.739,335.754,666.416,90.604,78.258,72.475,1158.098,394,418.822,876.144,311.037,329.93,465.691,81,139,458,384,710,380,165.849,161.917 +33.0264,414.517,376.787,560.341,176.362,104,72,562,458,141,110,116,270,557.823,308.296,505.689,442.661,465.928,407.61,376.337,408.645,378.494,510.884,406.053,430.76,517.894,110.5,327.932,336.221,332.414,91.263,113.395,74.369,1131.125,782.041,1139.888,618.333,477.236,427.868,528.783,581.654,339.433,677.392,88.585,77.933,71.508,1147.151,386.773,416.616,868.577,311.079,329.023,457.491,82,139,465,393,721,378,166.546,158.691 +33.1932,409.157,374.59,552.315,176.461,105,74,574,461,140,112,116,271,554.115,303.945,508.423,449.13,468.768,414.943,378.513,411.902,382.733,511.69,415.909,433.5,522.184,111.5,324.017,331.352,328.062,88.35,113.267,74.171,1131.075,783.417,1141.806,620.821,475.706,418.846,527.539,591.312,341.641,689.062,91.67,78.556,72.29,1135.68,380.663,410.195,863.33,310.102,324.463,458.823,82,141,475,400,721,385,163.661,156.116 +33.36,404.121,365.055,554.93,179.32,106,73,578,466,142,111,119,272,553.886,302.155,500.243,448.95,468.32,417.198,381.599,421.334,389.49,517.224,420.244,437.987,526.42,112,325.27,333.319,324.463,87.742,114.061,73.094,1123.556,777.158,1135.707,615.06,471.499,416.78,527.128,590.096,341.047,694.09,92.851,77.819,72.745,1124.875,376.137,405.641,842.326,303.262,320.058,454.432,83,141,478,405,723,392,160.591,159.271 +33.5268,401.541,360.61,548.391,180.891,105,76,589,471,143,115,116,277,548.585,298.725,494.64,449.725,466.165,412.197,381.997,428.911,392.022,514.549,424.72,444.15,529.185,111,322.749,327.7,320.228,89.933,112.332,74.511,1122.927,769.644,1136.654,618.003,475.494,413.426,523.254,592.429,346.453,699.882,92.524,77.055,71.735,1108.878,374.963,399.375,835.113,302.539,316.801,442.621,81,141,486,409,732,393,160.761,157.573 +33.6936,395.968,356.379,545.297,180.99,108,75,590,477,145,114,121,277,548.499,301.845,501.03,449.007,462.645,408.583,390.428,424.949,398.723,525.759,430.427,448.482,537.254,112,315.9,325.917,319.362,87.925,111.922,75.7,1116.836,770.264,1125.263,608.556,468.801,411.03,518.446,589.785,347.246,703.324,91.77,78.358,71.465,1100.038,370.677,396.164,831.747,293.249,310.428,434.463,83,141,493,410,740,404,157.165,153.767 +33.8604,394.238,357.567,537.616,180.508,109,76,598,488,145,115,120,281,547.638,295.363,492.901,454.571,468.604,409.539,388.725,433.882,399.661,522.093,435.866,444.788,541.901,114.5,315.342,321.256,312.184,89.424,115.69,72.754,1115.459,765.914,1127.08,610.369,467.199,409.312,519.903,586.448,347.67,709.385,92.438,77.239,71.494,1087.479,367.849,388.597,825.283,291.054,308.969,437.607,83,146,507,422,745,403,159.269,151.941 +34.0272,386.868,348.604,536.475,183.721,107,76,605,489,147,115,122,282,540.763,296.775,491.327,445.817,466.323,408.08,389.564,435.624,401.24,527.386,438.641,458.198,546.333,115,315.417,317.524,312.42,88.208,112.531,74.511,1107.516,757.764,1112.575,608.053,463.484,406.322,521.204,581.244,350.204,722.174,93.675,78.428,71.067,1075.57,358.839,389.587,814.18,284.85,304.777,423.912,84,146,509,429,749,407,154.749,150.243 +34.194,386.328,345.398,533.108,181.726,108,76,615,499,150,119,119,285,540.785,297.457,485.008,452.305,463.639,407.57,396.504,443.046,403.972,523.905,442.145,462.278,549.807,114,309.118,314.569,311.255,88.166,116.058,72.726,1105.224,762.867,1109.616,599.422,458.091,398.915,521.006,580.523,355.893,727.301,90.405,81.104,72.247,1053.958,358.811,381.455,806.43,283.746,295.203,425.994,84,144,510,432,754,409,153.527,152.451 +34.3608,381.455,342.406,526.346,185.264,108,78,621,506,150,119,125,283,539.104,289.37,482.611,448.098,468.882,407.924,399.263,444.618,408.083,531.533,449.433,471.253,554.037,115.5,304.614,310.389,306.763,89.255,115.605,76.423,1100.245,747.667,1111.668,604.848,454.713,397.46,515.618,583.096,352.695,729.949,91.13,79.547,72.19,1051.921,350.805,373.987,802.823,275.248,289.708,414.664,83,148,520,439,767,416,155.701,147.116 +34.5276,380.887,337.101,520.72,181.867,107,76,621,506,151,122,123,284,535.881,291.617,481.436,450.452,460.371,407.875,400.657,444.079,414.072,529.679,447.506,466.428,560.938,113.5,307.004,309.358,304.444,90.23,115.421,75.332,1095.004,755.704,1107.188,591.539,453.131,392.314,509.283,582.503,353.501,733.334,94.045,79.207,73.2,1040.182,349.448,371.809,790.645,275.248,283.689,410.599,83,144,523,439,773,416,149.846,148.574 +34.6944,377.876,334.027,520.611,184.146,111,79,632,510,152,123,124,287,531.335,290.54,483.805,442.219,458.013,405.417,401.362,444.803,416.59,527.768,458.511,469.428,567.024,114,302.264,304.157,302.122,89.933,117.673,74.071,1085.102,748.311,1097.867,591.411,444.441,389.689,514.034,582.531,352.709,735.742,93.761,78.612,71.494,1026.307,340.693,369.546,784.408,267.062,285.02,403.872,83,145,523,448,770,421,150.158,143.098 +34.8612,373.059,332.786,505.548,184.33,110,78,638,517,155,121,123,291,533.798,287.123,473.107,443.125,458.551,399.991,403.118,455.31,416.604,532.326,454.634,474.897,567.501,113.5,301.192,303.253,297.035,87.996,114.882,76.168,1067.828,736.221,1095.12,587.846,441.597,377.979,504.108,580.565,363.21,745.033,92.652,80.17,73.584,1007.595,335.983,365.472,776.671,267.487,280.389,399.383,83,144,534,451,772,423,149.618,146.579 +35.028,367.036,330.321,507.366,186.75,110,80,636,519,154,124,126,293,534.17,287.37,478.209,444.569,454.646,398.869,402.819,456.202,418.652,529.523,461.669,479.697,573.737,114.5,296.257,302.264,299.255,90.358,118.282,75.205,1076.128,737.838,1085.348,586.467,439.179,377.77,507.53,575.998,360.182,759.747,94.059,78.612,75.134,1000.509,335.148,359.136,768.072,264.881,279.724,391.721,83,146,533,457,781,426,147.131,143.706 +35.1948,365.02,320.014,500.54,184.231,111,78,649,528,159,124,125,291,525.862,283.498,468.755,445.464,453.347,396.201,403.061,460.734,417.785,534.519,467.236,482.8,571.517,114,295.748,296.706,292.92,90.329,117.588,76.225,1071.032,731.52,1082.245,579.997,431.438,369.604,502.708,583.832,360.705,749.862,95.851,78.046,73.086,989.364,330.269,352.305,758.044,258.069,268.365,392.641,81,147,543,460,788,425,145.909,139.801 +35.3616,358.025,319.478,500.803,186.75,109,79,655,526,155,123,127,291,518.112,283.684,469.173,445.251,447.332,394.763,403.814,457.76,420.573,535.921,472.419,485.637,576.966,113,296.554,294.118,286.656,87.6,118.395,75.87,1058.279,724.559,1075.568,577.522,427.841,369.346,500.233,576.677,369.99,749.125,94.457,79.66,74.067,972.052,327.426,354.186,753.433,256.879,264.683,381.637,82,144,541,463,787,428,144.8,140.777 +35.5284,356.296,315.598,493.387,189.326,111,77,657,534,157,126,125,296,520.968,286.24,469.265,438.98,446.337,391.416,403.772,459.913,431.91,532.793,470.928,481.313,580.866,115.5,286.203,291.487,292.609,89.438,115.364,75.304,1049.628,722.491,1075.7,570.868,422.456,361.886,494.69,577.582,364.456,756.447,94.031,79.094,73.2,972.462,324.809,344.271,750.916,250.28,262.757,379.937,84,147,545,469,787,432,147.003,141.923 +35.6952,356.234,313.42,485.484,183.919,109,78,665,536,162,125,128,288,516.545,282.615,463.227,436.283,443.697,387.6,406.438,462.096,424.897,536.034,477.035,491.62,589.231,115,287.32,289.397,286.387,86.412,120.577,74.766,1053.687,722.057,1059.604,567.195,418.464,355.73,493.333,579.971,362.276,759.62,93.547,79.434,74.352,958.007,320.75,345.586,746.008,248.623,261.213,371.171,84,146,549,469,792,434,143.621,138.74 +35.862,344.32,308.445,479.735,185.632,109,80,668,546,159,126,127,292,518.441,281.87,460.441,437.935,444.572,388.255,401.425,467.108,425.737,536.713,481.719,490.759,591.658,113.5,282.279,286.182,282.407,88.958,117.149,75.814,1037.799,705.784,1051.104,564.568,410.965,346.096,494.195,569.635,366.522,764.832,94.941,79.065,72.645,945.123,313.792,338.897,739.799,240.295,255.775,370.661,80,147,553,472,795,435,137.31,139.659 +36.0288,342.43,304.647,478.627,185.052,112,81,677,547,159,125,126,288,515.307,280.67,452.926,430.556,435.915,383.929,408.138,460.196,423.247,539.756,485.236,492.44,589.698,115.5,284.585,282.661,277.188,89.057,119.401,76.324,1028.968,699.314,1050.122,549.798,412.179,345.582,492.329,568.998,367.386,765.611,92.751,81.218,75.006,947.428,312.207,338.048,731.808,241.612,252.971,361.271,83,148,559,476,801,435,140.431,137.296 +36.1956,341.57,305.155,473.634,186.552,109,82,680,550,165,130,131,288,515.071,276.986,448.476,427.417,435.096,375.551,404.54,464.218,429.122,538.312,484.223,494.285,591.517,115,281.802,280.701,278.084,88.859,116.313,75.276,1026.436,699.529,1035.135,547.218,405.968,339.803,491.381,563.922,370.315,775.539,92.154,76.503,72.887,932.337,308.7,331.033,721.935,236.471,254.925,360.025,83,147,565,479,801,442,140.124,134.633 +36.3624,335.909,300.688,468.696,184.471,109,79,681,555,165,130,127,287,511.772,278.587,450.923,428.62,428.89,378.488,403.502,464.7,432.366,535.609,492.458,500.728,597.502,112.5,275.767,280.997,276.248,86.497,118.211,75.205,1015.128,695.058,1038.099,545.117,402.642,333.499,486.574,562.084,369.721,767.523,92.765,79.419,72.418,933.058,303.919,331.655,715.359,240.154,248.963,359.345,79,146,563,481,805,437,138.873,135.018 +36.5292,327.122,296.737,463.153,183.891,110,80,685,553,164,130,128,283,507.321,272.17,444.592,427.169,428.718,367.885,397.997,463.199,428.937,535.906,490.474,495.008,600.399,112.5,278.27,273.663,271.511,88.053,119.826,77.485,1005.839,686.446,1029.755,540.121,396.691,335.17,477.58,558.973,370.386,767.098,93.903,78.145,75.063,922.719,304.952,319.18,719.559,233.384,241.881,350.338,80,145,562,482,803,432,137.424,130.306 +36.696,325.854,295.963,461.627,184.797,107,79,686,562,168,130,126,285,509.603,269.83,448.469,422.415,421.562,365.498,395.916,467.837,430.929,535.694,495.772,493.699,602.374,112.5,278.454,272.405,270.026,85.635,117.687,74.851,1008.988,685.697,1022.04,537.281,389.753,322.877,478.924,549.612,369.141,767.933,96.846,79.773,71.081,910.824,299.026,323.734,702.502,230.735,241.655,346.344,82,143,570,486,807,437,133.544,134.947 +36.8628,326.579,291.582,456.597,187.882,108,83,684,566,164,130,129,283,503.514,271.68,442.127,422.94,419.879,366.122,399.164,458.412,431.441,542.374,491.181,498.591,604.854,112,273.661,268.475,267.806,89.679,117.333,74.921,1002.133,675.144,1012.037,531.496,389.495,317.534,476.619,551.606,376.274,764.251,93.405,78.697,74.494,901.291,297.498,321.995,701.215,228.229,239.304,342.124,81,143,567,484,812,436,133.615,129.358 +37.0296,320.172,284.656,453.105,184.047,106,80,702,569,167,130,126,280,499.857,269.175,440.074,415.092,414.863,358.246,396.589,461.655,431.853,535.326,502.712,501.931,599.569,108.5,266.406,266.976,266.435,87.275,119.812,74.426,987.978,672.664,1012.309,526.181,384.681,314.538,474.484,547.307,372.523,765.087,96.747,77.791,73.015,894.743,295.164,323.239,694.044,225.311,235.324,340.396,77,140,567,485,808,439,134.112,131.056 +37.1964,316.163,285.886,444.616,182.603,109,79,698,565,169,129,128,281,498.51,264.924,438.212,411.602,411.663,352.345,390.929,458.157,431.099,540.096,497.249,501.848,608.786,108.5,269.38,268.027,261.856,88.194,119.104,75.927,977.687,668.565,996.221,521.082,379.86,309.848,470.199,545.016,374.179,763.5,94.273,81.048,72.389,893.357,293.566,313.678,699.447,222.889,232.789,333.541,78,139,567,483,810,440,132.435,127.236 +37.3632,315.566,281.469,443.04,185.66,107,78,706,574,169,131,128,279,500.831,265.295,434.642,412.287,406.46,351.602,388.895,458.823,429.122,539.162,500.843,498.14,605.843,108,264.011,260.298,266.639,86.073,120.095,76.409,977.129,651.381,1002.204,512.055,371.703,302.859,477.566,541.835,374.122,771.233,94.5,78.202,73.57,886.752,287.131,316.875,698.033,221.431,228.455,331.006,76,140,571,481,812,433,133.501,130.448 +37.53,312.284,279.044,437.286,181.244,107,80,706,575,170,135,125,274,500.723,263.493,431.7,401.094,404.419,341.191,384.515,456.514,436.078,538.765,499.173,498.152,605.915,108,264.441,257.542,260.171,86.214,118.707,75.757,963.763,651.48,988.035,511.546,366.345,301.017,466.339,534.863,378.227,759.79,94.898,79.674,75.219,876.738,283.892,312.632,688.429,217.805,227.79,326.361,77,139,568,479,805,435,132.023,128.594 +37.6968,308.25,278.482,430.993,181.188,105,79,704,573,170,131,125,270,495.864,263.965,433.969,402.483,393.94,341.233,378.285,457.19,432.053,531.915,500.559,500.771,602.515,107.5,261.99,258.806,259.743,87.459,116.228,77.089,956.017,643.6,984.027,505.197,356.224,294.418,464.628,533.633,371.165,758.43,94.685,78.57,73.513,881.83,284.429,309.987,683.648,210.894,223.541,322.763,76,139,569,483,805,431,128.882,128.354 +37.8636,304.671,272.714,424.906,182.362,104,81,709,582,167,132,124,269,496.694,261.215,432.501,395.991,390.954,332.162,381.528,456.528,431.853,534.831,501.817,494.555,602.563,106,260.64,257.712,252.069,87.148,115.676,75.261,957.621,639.819,969.085,496.744,363.797,289.986,456.143,529.504,370.018,756.292,93.491,78.088,72.276,874.192,280.257,306.225,682.333,211.007,224.037,320.979,73,139,575,487,804,433,127.972,124.547 +38.0304,304.272,272.739,422.483,180.919,108,78,708,577,170,132,123,268,497.145,262.813,429.673,390.963,385.306,328.591,374.104,449.235,434.556,532.453,505.346,490.517,600.915,107,260.298,257.132,261.387,86.837,115.619,75.12,943.281,630.142,973.263,490.888,357.474,280.121,457.515,524.484,368.391,753.445,94.671,78.598,75.432,860.954,279.139,303.396,679.405,212.31,218.853,314.634,75,139,569,479,807,430,128.598,129.273 +38.1972,300.372,266.566,419.879,179.121,105,77,708,584,168,132,125,262,501.696,256.751,423.728,392.421,381.767,321.244,367.263,450.523,426.576,530.712,499.639,493.365,601.205,105,259.353,256.735,253.935,85.762,118.636,76.083,943.15,631.11,965.968,486.907,352.568,281.296,447.504,513.469,373.811,745.981,95.239,78.018,72.802,857.135,278.022,308.106,677.708,209.52,219.434,307.836,73,137,566,480,800,428,125.229,125.58 +38.364,295.933,266.418,419.656,179.249,103,77,716,579,171,131,126,263,499.098,259.843,423.501,385.632,378.313,318.286,367.405,451.104,432.949,532.34,509.043,486.514,603.719,102.5,260.072,253.907,253.44,86.695,115.775,75.346,938.354,627.551,964.763,482.752,345.04,281.025,452.849,514.331,376.33,744.678,95.439,80.991,73.84,856.145,277.626,303.198,679.504,207.367,218.343,309.819,72,133,569,482,796,431,126.921,125.764 +38.5308,294.952,264.486,407.637,182.66,102,78,716,580,173,133,125,257,495.241,259.638,427.314,380.7,368.475,313.218,361.204,442.196,429.62,524.81,506.23,489.923,596,100,257.285,249.505,253.497,85.225,117.63,73.363,929.352,622.919,953.455,473.118,338.475,269.716,447.122,510.414,368.801,739.424,94.358,78.811,74.849,857.092,277.372,301.02,671.81,208.642,217.394,304.451,69,131,565,475,795,422,129.635,125.127 +38.6976,291.457,258.745,409.294,178.541,103,78,723,577,171,131,121,254,493.81,254.276,421.305,373.283,365.829,306.901,359.444,441.14,425.452,526.537,505.771,491.295,602.714,102,254.557,252.32,254.049,84.532,118.013,73.392,919.434,609.174,950.142,468.547,332.951,272.074,448.451,502.043,373.118,730.204,95.481,77.961,74.536,851.633,273.1,301.416,679.943,206.333,217.904,305.301,71,133,558,469,794,421,123.606,122.425 +38.8644,289.355,259.583,401.486,177.197,100,78,718,581,170,137,122,251,500.115,256.39,425.253,371.173,360.983,302.94,350.651,439.108,424.798,528.603,508.111,488.323,596.509,101,254.854,248.118,252.339,86.243,117.262,72.216,917.129,608.133,942.042,457.708,335.668,264.648,439.684,502.312,372.481,727.131,95.126,79.901,72.29,852.524,273.638,299.676,675.077,206.872,214.817,306.561,70,132,557,473,787,422,123.325,121.213 +39.0312,287.426,255.574,402.678,172.724,101,78,719,578,172,134,122,250,498.397,256.298,420.421,366.775,358.25,297.543,347.167,434.364,422.55,522.829,496.863,486.457,601.283,100.5,254.967,246.472,249.028,84.518,117.205,75.233,907.354,603.747,929.821,460.158,329.794,262.877,435.046,502.991,362.885,724.044,94.514,81.345,73.513,842.142,273.609,294.104,674.314,204.875,211.758,297.143,69,132,556,466,787,413,123.964,120.698 +39.198,282.572,255.39,392.497,172.809,98,76,723,574,167,130,120,242,499.957,256.959,419.032,366.544,347.748,295.296,343.142,429.818,417.173,518.824,501.733,482.049,591.729,98.5,252.366,248.174,250.187,84.164,115.846,73.859,899.811,606.177,935.18,456.116,326.931,259.269,428.456,499.47,365.036,724.596,92.851,79.589,74.295,843.953,269.324,299.521,667.949,203.685,211.503,294.962,69,128,557,462,785,422,123.851,121.972 +39.3648,281.584,255.292,388.643,173.276,98,76,720,581,170,128,121,241,497.674,255.059,418.048,354.005,349.107,285.611,336.6,421.32,413.417,518.158,505.842,481.253,591.638,97,251.177,246.2,250.527,83.061,116.695,75.233,891.297,597.766,923.937,446.735,319.545,256.185,435.682,490.377,363.394,720.956,94.145,78.527,73.243,844.872,269.395,297.017,674.13,202.637,207.127,296.195,67,127,549,464,773,410,123.265,122.312 +39.5316,275.547,251.542,380.972,174.083,98,77,718,579,171,131,118,237,496.78,252.087,416.736,355.332,339.111,285.273,335.505,419.904,415.878,510.091,500.728,477.829,593.412,97.5,251.858,246.787,248.311,84.023,119.146,74.383,890.711,593.674,921.739,442.868,314.84,251.101,426.604,476.647,361.951,712.473,94.301,78.74,73.783,839.483,269.89,296.352,664.597,201.051,209.832,293.164,68,127,547,458,765,407,121.406,119.71 +39.6984,271.596,248.614,381.246,172.441,94,76,723,575,168,130,118,231,497.889,251.846,416.41,347.592,332.414,276.262,326.584,419.944,409.264,512.157,501.098,475.1,586.101,96,253.466,243.493,243.34,82.142,116.001,72.301,885.229,591.602,915.785,438.687,313.416,247.65,427.975,480.338,363.762,709.499,95.296,76.304,74.536,845.466,267.881,297.908,670.848,201.66,207.396,294.198,65,127,542,456,766,405,122.358,122.934 +39.8652,272.346,247.51,380.989,171.21,94,76,722,575,170,129,116,230,498.783,254.258,416.027,349.231,329.509,273.665,326.914,409.353,405.593,519.107,489.385,467.292,585.619,94.5,252.876,246.333,250.346,83.966,114.84,71.805,882.797,587.062,915.328,433.512,315.124,246.16,421.004,473.154,362.475,708.097,93.277,81.642,71.707,841.181,260.003,298.658,675.488,201.093,210.724,294.892,66,123,543,452,763,402,122.486,121.25 +40.032,271.311,245.048,373.06,168.266,94,74,726,571,169,128,116,227,500.107,256.151,412.252,344.047,327.338,268.01,321.254,406.648,411.753,510.94,493.308,465.907,580.351,94,255.589,245.196,247.365,83.358,116.412,71.097,875.657,592.403,912.508,431.052,306.423,243.439,422.8,470.241,355.313,696.243,93.32,77.664,74.337,842.015,265.491,299.818,667.284,200.286,206.574,291.932,65,123,540,449,752,397,121.373,125.424 +40.1988,267.033,241.609,371.106,167.374,95,77,723,572,169,130,117,225,497.724,252.204,417.289,336.915,317.256,267.592,315.92,400.416,404.142,511.917,493.671,465.436,572.776,91,252.547,244.234,250.184,82.439,114.16,73.406,868.454,590.691,913.867,422.278,305.227,238.304,415.518,469.874,354.86,697.602,96.007,79.561,73.726,845.495,269.663,299.987,678.274,200.272,207.651,288.858,64,118,534,444,753,392,122.941,122.913 +40.3656,268.287,238.838,366.638,166.454,94,74,716,569,169,127,114,219,504.823,253.575,414.638,332.96,314.597,264.423,311.341,395.842,398.794,504.331,493.776,454.351,574.488,89.5,251.63,247.118,247.006,81.463,114.429,73.887,867.855,579.206,906.984,426.021,304.384,237.555,420.495,472.362,352.482,689.147,93.803,77.89,73.029,839.54,265.463,299.591,675.855,201.617,208.104,288.788,61,118,530,435,740,387,120.454,123.868 +40.5324,267.232,239.954,366.789,165.251,92,73,713,571,169,127,114,217,501.052,257.002,413.946,332.045,311.228,257.074,304.784,389.568,398.779,505.774,490.503,456.67,573.993,91,251.644,242.73,248.25,81.788,112.106,71.465,862.046,578.499,903.177,413.425,298,237.383,416.621,464.02,351.633,679.885,94.543,80.198,73.285,851.59,269.974,299.422,682.927,204.039,207.721,288.915,62,120,526,433,736,390,122.387,124.618 +40.6992,263.327,238.994,364.389,165.874,89,72,714,566,165,129,113,213,506.653,256.455,413.216,327.158,304.246,251.676,303.336,383.306,392.663,497.877,484.103,453.192,567.137,88,250.247,244.1,246.941,82.425,114.528,72.23,860.981,578.071,902.702,414.23,296.216,235.315,408.349,461.997,345.363,676.968,94.017,78.499,73.911,841.52,261.615,304.16,680.381,205.455,207.75,287.895,62,114,523,428,734,384,121.875,124.519 +40.866,262.963,239.852,357.684,163.298,90,72,717,564,166,128,112,210,507.478,254.279,413.633,319.97,302.312,250.577,294.701,375.476,395.792,494.438,484.746,446.898,563.724,86.5,256.297,242.249,247.316,81.477,114.656,72.556,856.805,578.025,898.928,406.893,295.406,226.894,410.498,459.721,347.331,674.362,91.926,77.522,71.792,851.873,265.279,305.291,686.166,206.234,208.316,290.275,59,114,518,422,722,378,123.382,123.344 +41.0328,260.621,240.055,361.716,161.345,88,69,713,560,166,125,110,204,503.631,252.973,411.352,322.369,295.7,245.679,287.646,371.397,390.088,499.193,485.675,440.42,551.205,86.5,252.224,243.568,250.852,81.081,115.151,70.884,863.029,574.093,898.743,406.78,293.215,233.008,408.631,455.648,346.014,661.091,93.149,77.154,72.574,853.571,269.437,305.334,685.119,203.586,209.647,286.493,60,113,511,419,712,379,120.738,123.585 +41.1996,258.553,233.926,351.559,158.331,86,71,721,558,165,123,112,203,506.775,258.214,416.233,318.031,291.141,243.924,284.361,365.846,386.83,486.3,474.266,439.236,553.682,82.5,251.658,245.251,250.711,82.199,114.372,70.898,853.023,575.748,890.813,399.167,284.939,226.809,405.11,451.873,338.881,655.908,91.997,79.207,72.773,857.955,265.943,306.352,692.389,204.861,211.22,290.799,56,109,507,419,704,374,122.429,122.679 +41.3664,259.427,236.768,359.144,159.335,84,69,709,556,166,125,108,199,508.845,257.095,415.328,312.643,283.571,236.052,279.782,359.756,383.174,492.513,477.871,432.655,544.406,83.5,249.664,244.247,249.933,81.322,113.112,71.026,840.33,580.429,890.733,399.912,284.098,226.879,401.533,447.32,340.254,656.984,94.102,79.589,72.219,851.491,269.564,306.423,694.454,205.824,209.52,294.268,57,110,507,408,702,367,123.168,123.557 +41.5332,259.496,234.629,351.97,158.614,86,69,706,551,166,124,108,197,507.936,259.135,419.142,308.942,285.676,232.457,272.997,353.893,380.187,484.177,475.298,433.188,540.274,81.5,256.637,244.94,246.708,83.33,113.508,69.907,849.561,577.123,884.129,393.087,283.549,226.667,398.238,442.639,336.051,643.955,93.021,78.358,71.949,857.191,270.144,312.844,692.842,206.843,210.441,290.756,55,108,498,404,695,367,122.5,124.08 +41.7,258.872,233.774,353.544,154.962,84,69,712,553,160,127,105,192,514.392,259.643,415.586,307.184,277.863,232.423,271.343,348.322,378.067,482.535,469.303,429.473,542.948,82,252.054,244.12,250.654,82.199,115.236,70.714,845.537,576.839,889.42,393.211,283.858,225.234,395.368,442.102,330.163,640.131,92.822,77.296,72.546,865.706,271.092,311.033,699.192,210.865,213.981,291.478,56,108,487,396,694,361,123.907,123.783 +41.8668,257.337,233.83,351.167,153.858,85,69,702,546,162,122,103,191,511.636,259.811,417.653,296.938,278.162,229.838,264.265,339.801,376.033,473.548,465.27,422.255,534.829,79.5,254.954,247.645,250.654,81.308,112.885,71.592,844.272,580.876,884.053,391.945,279.502,225.478,391.267,437.69,327.247,633.474,93.761,79.179,71.565,871.293,270.653,316.366,702.785,213.641,215.369,292.257,52,107,483,396,682,352,122.685,125.241 +42.0336,259.268,235.604,345.236,155.118,82,67,702,548,163,120,105,187,514.177,260.874,419.62,301.827,271.101,224.942,260.937,337.832,369.532,476.095,458.185,416.772,527.581,78.5,257.401,245.096,249.862,78.932,111.27,70.148,846.67,576.307,880.262,390.229,279.271,220.768,390.956,440.674,324.162,623.971,93.661,76.234,71.28,872.962,268.447,314.683,700.522,216.828,218.372,297.88,53,104,479,382,674,351,121.648,123.868 +42.2004,255.574,234.832,345.378,154.622,83,67,697,546,160,122,103,185,520.739,259.911,417.912,295.975,265.968,223.454,256.599,331.02,368.522,472.614,456.869,412.865,522.184,78,254.147,246.496,255.49,82.708,113.437,70.927,847.689,577.123,881.135,387.47,280.947,220.113,381.538,434.353,322.676,624.609,91.884,78.896,70.953,881.589,273.256,317.115,707.481,215.752,220.609,291.847,54,102,479,380,666,344,125.357,126.585 +42.3672,256.126,232.045,347.331,151.268,79,66,692,542,159,120,101,182,523.795,263.084,419.393,297.132,268.072,218.953,253.47,327.508,359.333,464.688,450.693,404.834,517.002,77,253.976,250.909,253.17,81.053,111.468,71.082,839.187,579.155,890.839,380.745,279.016,221.994,378.413,431.808,320.794,617.032,92.922,76.8,72.816,886.78,273.369,321.231,717.706,216.29,218.938,302.044,51,103,472,376,665,341,125.371,126.033 +42.534,257.675,233.742,342.302,153.306,80,64,686,530,155,116,100,176,524.396,263.837,423.812,292.366,262.126,216.885,248.62,321.545,355.933,471.878,451.183,406.974,515.862,75,258.064,250.357,252.888,80.69,112.875,71.28,837.954,584.846,882.367,380.601,273.483,216.036,372.87,424.313,318.26,614.185,90.362,77.168,71.579,891.546,275.533,324.046,724.609,221.941,219.618,294.764,51,99,461,369,660,339,126.395,127.929 +42.7008,255.743,230.195,345.215,147.022,78,64,686,528,154,115,102,176,522.141,265.17,418.254,288.355,259.015,213.055,242.563,314.654,353.842,463.513,446.884,398.866,512.527,74,260.083,250.563,253.936,80.944,111.657,68.816,841.704,578.123,891.518,378.541,270.084,219.946,375.698,424.624,315.713,605.036,92.296,77.735,71.465,895.888,274.698,325.191,719.22,218.896,222.21,301.378,49,99,455,355,642,333,125.782,126.075 +42.8676,257.622,234.336,346.992,151.891,75,64,681,530,155,116,97,170,524.725,262.52,428.408,287.949,255.503,210.727,238.594,310.286,350.371,459.664,439.147,395.445,504.986,73.5,261.401,253.455,254.118,79.148,112.11,69.028,837.41,582.813,892.93,374.559,271.795,220.863,372.064,426.208,308.212,596.864,93.476,77.862,71.934,901.998,278.093,328.246,725.386,220.482,227.903,304.14,49,98,451,354,634,325,126.565,129.489 +43.0344,256.811,231.565,344.561,148.367,76,64,672,524,155,116,96,168,526.412,267.419,424.801,282.415,252.346,210.049,235.507,303.233,346.089,457.244,436.318,395.259,494.824,73,262.442,252.971,259.334,81.496,108.91,69.708,844.268,580.199,887.292,378.74,273.128,218.804,371.711,419.675,306.414,584.501,94.429,78.258,70.057,906.44,279.295,338.854,735.004,224.249,229.999,302.426,49,97,446,350,628,325,127.247,126.684 +43.2012,260.317,232.17,340.257,146.898,76,63,668,522,155,115,97,165,532.31,272.949,430.937,285.075,249.118,206.919,233.545,298.149,341.522,451.186,434.239,383.308,490.998,71,266.449,258.419,259.548,81.34,111.091,69.41,837.539,579.462,893.641,375.242,271.89,222.307,366.309,419.463,302.635,583.283,91.173,78.004,69.247,916.651,284.401,336.648,745.145,233.455,230.353,312.212,48,94,440,339,622,319,127.077,132.216 +43.368,256.838,234.884,342.773,146.44,74,61,668,521,153,115,96,162,535.788,269.887,431.773,284.619,249.758,209.18,229.264,291.563,339.602,448.087,428.217,381.851,483.734,69,262.917,254.344,259.239,81.171,109.179,67.654,845.444,582.445,891.066,371.019,270.155,219.719,365.347,417.384,303.258,575.663,94.998,77.791,71.024,919.721,284.288,339.802,738.922,231.769,234.758,310.017,47,91,433,335,618,318,126.38,131.65 +43.5348,258.272,231.989,342.743,146.294,75,62,664,516,153,114,94,162,539.13,270.713,435.339,278.663,245.763,205.688,226.775,289.708,334.026,441.774,418.822,377.686,480.305,69.5,265.728,257.57,264.201,80.223,109.901,70.43,842.963,587.6,897.15,374.246,275.036,221.33,371.654,417.865,301.22,570.805,91.827,79.476,69.83,924.374,290.879,350.098,742.458,231.982,237.604,313.359,46,93,432,330,612,312,126.594,131.311 +43.7016,254.424,232.902,339.119,144.732,74,60,656,512,151,111,93,159,538.27,274.027,434.979,278.374,246.602,207.285,221.676,286.67,331.479,444.831,418.714,373.747,477.984,69.5,267.467,258.334,266.124,80.364,110.411,67.527,848.915,588.559,893.803,374.232,276.766,222.051,367.341,416.649,296.479,569.078,93.746,78.103,71.408,932.803,292.152,349.858,752.259,237.59,241.117,315.385,48,91,420,327,604,306,127.503,130.858 +43.8684,257.379,235.487,342.755,145.968,73,60,658,513,149,111,92,157,544.393,271.25,433.519,276.256,243.958,203.508,213.961,285.502,325.69,440.246,417.168,368.338,470.263,68,269.126,263.876,263.94,78.823,109.929,69.665,842.56,593.405,898.625,367.693,273.383,220.141,363.891,416.748,298.573,560.495,91.841,77.225,70.228,940.71,289.662,353.479,758.61,241.1,244.516,317.141,46,90,415,314,602,303,128.826,134.013 +44.0352,261.374,233.335,343.282,141.933,72,59,646,507,150,110,94,153,546.731,274.32,439.981,275.255,245.322,204.038,218.341,279.001,323.101,439.142,413.956,363.563,468.807,67,267.354,258.589,266.067,81.072,110.722,68.462,844.074,597.287,906.437,366.099,277.587,222.455,366.875,415.914,293.308,549.108,91.372,75.667,70.356,941.261,290.652,355.869,767.351,241.951,247.85,324.793,43,91,414,316,593,296,128.797,133.826 +44.202,259.995,239.502,342.799,141.526,71,58,645,506,150,111,91,153,550.472,281.584,443.388,272.604,242.592,201.2,211.728,280.885,322.944,433.098,410.718,359.473,462.979,66,268.221,262.497,273.397,78.101,108.924,68.292,859.799,596.574,907.216,369.497,273.738,223.326,364.683,413.68,284.406,547.069,92.595,77.607,71.863,951.671,298.53,352.743,769.67,244.186,251.103,329.674,44,88,403,311,585,295,131.27,135.457 +44.3688,265.009,237.456,340.647,140.503,73,58,642,503,145,108,90,151,552.035,277.104,444.91,269.428,241.783,200.72,205.37,269.98,317.24,434.287,405.005,358.613,455.424,65.5,273.072,264.082,264.883,79.219,109.193,68.051,850.547,599.439,916.143,364.395,273.425,226.241,364.838,411.219,280.443,537.141,92.083,76.092,69.048,958.135,303.042,364.921,787.817,246.816,256.609,328.206,44,87,399,305,573,290,131.028,132.556 +44.5356,260.523,238.355,347.853,139.529,69,56,639,493,145,106,91,151,550.266,277.119,446.264,276.893,241.499,200.648,206.693,264.471,315.419,426.178,402.048,349.417,454.167,65.5,275.018,270.95,271.271,79.615,107.876,68.164,858.349,597.146,918.066,370.024,276.525,225.223,363.962,411.629,280.882,533.204,89.552,78.981,72.361,969.436,300.553,364.977,785.582,251.299,259.523,336.722,44,87,389,300,570,287,131.838,135.414 +44.7024,264.708,239.508,343.28,139.352,66,57,629,495,144,104,90,146,556.319,283.655,450.615,276.355,240.942,200.037,203.418,260.708,313.072,425.838,397.966,343.635,445.694,64,275.627,267.641,274.92,77.168,107.564,68.447,863.199,604.116,925.062,372.526,273.014,224.951,365.814,406.836,276.254,527.072,91.557,74.45,69.887,979.124,303.254,365.939,790.801,257.372,259.664,341.147,43,85,388,297,561,282,134.041,138.216 +44.8692,263.442,243.761,348.672,138.581,69,56,631,492,144,105,88,145,557.715,282.576,449.183,268.47,239.876,196.869,201.53,257.304,308.221,423.106,392.331,341.826,443.107,63.5,283.583,273.201,274.623,80.619,108.23,68.122,864.004,612.071,927.135,370.905,275.844,230.277,368.868,409.989,275.108,525.117,89.779,74.818,67.1,986.422,307.37,373.93,802.766,257.215,263.226,340.383,43,84,384,295,555,276,133.771,136.914 +45.036,266.483,243.532,347.971,136.589,68,58,631,494,139,105,89,144,559.603,285.487,454.008,271.554,240.374,194.241,200.279,257.687,305.034,419.101,390.078,343.465,441.374,62,281.519,274.104,279.075,81.072,109.589,67.498,872.161,608.455,933.226,367.777,277.247,235.357,371.993,405.167,269.489,519.466,89.509,76.545,70.555,996.931,310.157,376.321,815.029,264.093,273.409,343.12,42,82,378,290,551,277,132.41,136.376 +45.2028,265.766,242.545,355.491,137.003,68,57,617,484,143,104,88,145,564.434,293.435,455.316,270.197,234.629,198.228,196.752,256.426,300.496,415.874,386.985,337.917,435.809,61.5,281.098,273.659,282.23,77.96,107.791,67.513,881.721,610.598,944.916,373.351,279.849,229.442,364.174,405.789,272.546,511.62,92.623,77.423,68.081,1006.11,311.925,384.651,818.579,268.942,279.993,353.317,41,82,373,280,542,269,137.793,139.168 +45.3696,271.474,248.897,347.638,134.954,66,55,617,481,140,106,88,143,571.445,288.585,465.764,270.207,240.589,199.189,196.254,250.931,300.852,417.87,382.996,334.399,432.14,62,285.985,278.32,279.974,76.871,106.573,69.821,881.034,620.413,944.528,374.119,282.57,235.046,363.891,405.436,266.616,507.924,91.272,76.177,69.105,1017.92,322.037,383.944,828.126,275.831,278.385,357.569,41,83,362,277,538,268,136.571,141.541 +45.5364,271.986,245.831,353.52,134.001,65,54,612,478,140,101,86,142,573.164,293.372,463.274,271.613,238.499,198.539,193.808,249.232,293.654,415.365,380.818,333.074,425.908,61.5,283.496,282.425,286.353,78.016,108.726,69.24,883.236,618.429,948.313,371.929,281.415,238.403,366.38,405.322,262.893,499.582,89.509,73.713,69.773,1023.365,319.039,392.275,841.223,276.135,283.683,363.058,41,82,357,270,533,263,137.722,141.018 +45.7032,271.711,247.543,351.934,132.873,63,52,609,476,138,100,88,141,574.027,293.215,464.326,269.948,240.118,200.604,193.479,245.224,297.282,415.251,376,325.121,426.447,59.5,286.352,281.166,289.807,78.681,107.182,69.878,892.599,618.568,959.125,373.336,287.269,241.383,363.679,408.151,258.237,497.132,89.68,76.729,69.474,1027.142,324.838,395.047,838.338,281.338,290.205,366.076,41,78,353,268,529,260,138.632,142.9 +45.87,273.586,254.216,356.409,133.694,64,52,602,473,137,98,86,143,575.3,298.42,462.944,272.561,239.791,200.889,190.508,244.147,290.653,409.166,378.343,322.933,424.664,60,294.014,288.006,289.142,79.487,107.04,67.272,894.129,630.623,961.761,377.702,290.53,241.106,361.317,409.833,258.69,485.83,91.727,78.188,67.47,1041.441,326.648,398.074,850.827,285.112,294.116,370.53,41,79,354,263,522,257,136.003,143.253 +46.0368,275.191,250.018,357.219,133.534,65,53,607,472,135,99,86,142,577.558,297.103,472.435,272.49,240.26,202.478,187.408,239.842,289.258,406.42,367.828,319.803,414.239,60,290.841,283.427,291.365,80.647,108.825,66.705,910.471,634.697,974.935,372.483,289.945,246.984,357.132,408.023,257.218,481.596,91.059,75.738,67.157,1049.135,324.908,405.244,862.297,287.525,293.113,378.226,42,78,351,264,516,254,136.017,147.017 +46.2036,278.419,256.113,356.701,132.759,63,52,600,464,134,99,85,139,589.844,296.203,469.207,273.906,240.317,203.649,190.352,240.182,284.834,406.646,365.656,319.152,413.943,58,292.877,293.379,295.635,79.912,106.714,68.787,909.386,631.691,982.31,375.64,288.469,245.028,361.091,404.304,256.638,480.024,88.812,75.242,68.55,1052.134,334.682,405.089,867.219,294.627,300.151,384.255,40,76,347,258,507,247,139.072,146.197 +46.3704,282.95,259.751,359.315,133.755,64,52,597,465,133,100,84,139,587.691,304.632,474.183,276.205,240.018,206.406,185.203,241.683,282.196,406.052,362.588,318.926,410.174,58,299.849,289.602,298.251,79.12,107.819,67.725,921.424,640.141,998.125,377.19,292.323,252.272,360.398,404.205,251.132,476.647,90.049,73.77,68.621,1076.927,333.607,412.84,873.442,296.372,307.859,388.825,39,77,343,257,509,247,140.153,145.772 +46.5372,285.44,258.332,362.63,131.383,64,52,596,457,133,98,84,138,593.997,301.928,476.413,278.818,239.961,208.477,188.972,236.953,279.03,401.707,359.787,312.382,404.891,56.5,299.523,293.099,298.562,79.473,108.301,68.164,921.626,641.602,992.677,384.285,295.629,249.402,360.851,400.218,249.038,469.246,90.803,75.611,69.048,1084.452,337.836,416.998,882.523,302.993,310.77,395.216,37,76,345,252,502,245,142.1,150.215 +46.704,288.504,259.71,370.002,131.06,61,51,588,453,134,95,85,136,596.997,305.347,484.271,277.282,246.062,203.187,184.948,235.609,280.112,401.169,357.731,307.568,404.084,57,300.964,299.042,299.847,81.015,107.522,68.065,928.396,648.886,1009.589,387.794,302.431,255.533,363.014,403.597,244.99,467.32,87.973,75.497,68.493,1095.809,339.547,417.62,895.832,305.1,318.327,404.234,39,75,338,251,497,243,145.71,155.026 +46.8708,288.092,264.175,364.304,131.949,61,50,584,458,131,94,84,141,599.385,308.111,484.4,279.71,244.811,206.764,185.26,230.707,275.09,397.22,355.176,311.164,397.564,57.5,306.588,299.536,298.265,78.879,110.198,68.745,928.063,650.394,1007.379,389.145,299.233,261.095,368.854,404.969,248.429,461.995,87.76,75.356,70.185,1100.83,346.152,424.225,896.935,305.742,323.311,405.635,38,77,338,247,496,235,143.422,152.309 +47.0376,291.609,268.39,373.306,129.77,62,51,582,453,129,94,84,141,593.623,308.997,486.224,280.962,246.587,207.876,179.543,233.101,271.704,394.064,350.635,305.433,399.921,56.5,306.797,301.769,305.313,79.643,108.485,67.895,940.99,655.131,1009.618,392.674,302.572,262.31,366.464,403.131,243.674,458.936,89.211,73.784,66.688,1100.25,347.68,428.2,908.377,314.534,323.169,410.102,38,75,336,247,486,238,147.43,154.63 +47.2044,294.464,267.74,377.738,127.349,59,50,584,454,131,95,85,140,598.109,311.516,494.017,285.16,244.298,209.425,179.998,227.62,274.265,390.908,348.684,302.384,395.146,56,307.384,307.654,305.56,80.152,106.87,69.566,943.509,656.559,1026.344,395.931,311.381,266.007,366.804,401.349,239.513,447.436,91.429,75.455,68.067,1127.604,358.287,434.253,911.135,322.742,330.661,414.978,37,75,332,246,483,235,142.384,153.413 +47.3712,297.972,272.232,385.61,128.298,61,50,579,451,129,94,83,138,608.516,312.271,495.613,283.691,248.962,212.531,182.359,229.248,268.703,393.088,345.494,305.489,393.448,55,314.838,308.573,304.598,80.096,107.352,70.869,952.168,663.403,1029.561,399.044,312.085,271.223,365.277,402.551,238.31,447.011,89.58,75.568,69.304,1135.482,355.869,432.839,911.446,323.594,335.623,418.596,37,73,332,241,483,233,146.973,156.073 +47.538,300.649,275.032,386.37,128.114,61,49,571,447,128,93,84,137,604.377,313.353,498.497,292.521,251.166,214.323,183.169,227.747,269.073,393.243,340.763,302.412,390.111,55,314.994,308.446,312.349,80.845,107.833,70.416,959.265,670.502,1039.717,405.578,315.975,276.482,369.717,406.949,238.706,443.867,90.86,74.874,67.754,1149.583,358.5,445.738,929.975,327.844,338.868,426.407,37,73,327,241,474,227,148.297,155.579 +47.7048,306.229,275.584,389.716,126.372,61,50,569,447,127,92,82,139,611.57,315.139,502.834,287.278,251.578,215.281,180.526,224.961,265.317,391.163,339.404,301.487,384.611,54.5,317.964,312.179,313.141,80.817,105.794,68.886,972.477,674.376,1053.241,402.457,319.743,278.473,368.812,408.603,235.097,441.233,88.144,73.189,67.398,1161.054,363.436,446.926,931.927,327.034,341.762,431.024,37,72,327,238,472,230,147.955,156.625 +47.8716,305.634,278.913,387.908,126.925,60,49,570,445,128,93,84,140,616.849,311.942,501.038,291.488,253.953,218.712,179.6,224.292,264.136,396.357,337.157,301.265,388.046,53.5,321.922,312.92,318.26,81.015,108.556,69.68,983.283,677.839,1056.161,407.704,323.177,286.944,372.347,407.896,231.459,441.289,91.23,74.818,68.109,1161.125,363.011,449.726,937.315,338.7,350.553,436.269,35,72,331,233,470,223,152.603,160.332 +48.0384,305.82,281.837,392.92,129.359,60,48,571,441,129,93,83,142,613.641,316.583,503.585,296.565,257.707,220.797,179.059,224.915,268.233,390.979,333.782,298.813,382.288,54.5,319.209,317.243,322.433,80.576,107.465,68.277,989.137,679.72,1071.634,412.681,325.632,287.298,370.82,416.434,229.945,433.302,89.765,73.713,69.275,1173.26,372.855,455.893,949.634,339.456,349.18,443.867,37,72,327,236,468,224,149.107,158.38 +48.2052,309.301,284.82,396.514,127.095,58,49,568,436,124,92,83,143,616.13,317.217,507.986,294.602,260.138,225.662,180.668,225.892,262.372,389.252,335.29,296.449,384.029,55,325.091,320.639,322.334,79.077,108.669,68.362,990.139,689.848,1074.621,417.586,327.994,289.28,369.896,414.352,230.002,425.484,89.41,73.996,67.598,1184.745,375.854,458.708,958.997,344.425,354.667,447.221,37,73,332,233,466,224,152.02,156.837 +48.372,315.837,284.999,402.188,128.269,60,49,569,438,128,91,84,143,624.388,318.663,508.709,301.345,261.29,223.553,182.891,226.458,262.614,391.828,331.374,293.707,379.697,53.5,325.362,322.912,322.179,80.209,108.754,68.136,1001.875,691.245,1078.746,422.193,335.428,298.266,370.987,418.247,226.534,422.736,88.855,73.827,68.223,1195.847,375.543,464.323,957.739,349.896,363.468,452.216,36,71,321,234,461,219,151.04,159.95 +48.5388,318.265,290.317,408.348,129.374,59,51,565,444,125,92,84,145,627.671,327.408,519.028,299.529,263.821,233.165,181.029,222.026,256.412,392.847,334.583,299.735,377.876,55,329.65,326.747,324.952,78.285,105.511,68.547,1013.196,692.997,1091.41,428.521,335.167,299.359,375.689,418.799,225.883,423.006,88.158,75.837,68.408,1207.177,379.446,467.137,973.862,349.932,365.567,457.786,37,73,325,231,458,217,152.222,163.403 +48.7056,320.853,295.142,408.753,128.723,58,47,567,437,123,89,83,144,628.811,324.05,517.318,308.659,264.788,232.338,181.171,222.436,260.808,388.276,331.332,295.263,382.019,54,332.843,330.227,324.125,80.845,107.564,69.439,1021.855,701.906,1089.874,429.53,343.894,303.259,377.218,423.374,228.148,425.385,90.817,74.35,67.342,1215.79,382.558,469.103,975.362,351.299,375.273,464.71,37,71,323,228,454,215,162.438,165.146 +48.8724,320.583,297.628,417.059,129.274,59,48,563,432,122,91,82,145,630.659,323.878,527.265,305.191,271.907,234.651,181.171,221.487,255.53,384.794,327.157,294.141,377.297,52,331.241,327.893,332.626,81.482,108.57,69.467,1026.422,711.579,1106.111,434.11,343.792,307.513,379.003,418.134,223.788,421.929,88.841,75.653,67.498,1219.637,389.276,479.371,979.704,356.701,376.042,468.375,35,69,322,231,453,214,150.386,165.539 +49.0392,325.496,296.733,423.094,127.901,59,48,563,433,123,91,84,146,630.738,330.373,524.546,313.068,270.888,238.434,179.494,225.085,255.857,389.719,328.91,293.014,376.439,53,334.168,330.212,333.376,80.619,108.74,70.388,1030.126,709.678,1114.524,439.54,353.633,313.663,377.303,424.294,223.137,412.228,88.912,73.119,69.674,1234.29,386.999,481.832,984.711,365.156,375.297,476.239,36,70,322,226,451,215,152.376,167.676 +49.206,327.091,303.984,414.892,130.833,57,47,556,426,123,89,82,146,635.42,326.554,523.702,313.373,275.822,241.857,180.972,223.824,255.061,389.394,324.824,297.54,375.628,52.5,335.822,332.39,338.735,82.203,108.485,70.543,1040.705,721.419,1116.877,442.555,356.198,317.549,378.309,427.977,221.524,416.576,89.808,75.936,67.953,1238.208,392.713,487.759,991.104,363.23,381.104,482.826,37,68,326,226,451,210,155.701,166.403 +49.3728,330.784,301.432,424.848,126.683,57,48,554,429,124,88,84,147,637.078,331.31,529.491,319.292,284.061,243.949,185.747,222.252,254.008,389.832,325.695,298.332,377.686,51.5,340.319,336.436,334.776,81.807,110.198,70.501,1043.28,727.597,1122.345,449.889,358.715,324.907,383.336,430.498,219.656,412.299,87.59,73.303,68.323,1244.94,396.659,488.141,992.249,368.633,386.903,488.595,35,68,325,227,447,208,157.535,168.001 +49.5396,330.089,306.007,431.503,126.43,57,47,557,432,123,88,84,150,638.881,329.756,529.003,319.63,283.876,247.788,184.127,224.376,255.587,387.837,324.908,295.458,379.036,52,337.844,336.69,338.141,81.708,109.929,70.473,1056.004,730.297,1132.646,455.433,363.687,327.345,389.879,434.817,217.221,409.948,87.604,76.021,68.764,1260.654,404.721,492.171,1001.796,369.204,390.552,492.135,36,68,321,229,446,210,155.194,167.52 +49.7064,336.918,307.017,436.775,131.37,57,49,555,428,123,91,83,149,641.463,335.385,533.354,326.279,287.453,248.629,181.611,224.334,254.89,386.818,326.049,296.055,377.374,51.5,344.615,342.412,341.887,81.27,108.952,71.096,1067.84,726.706,1141.72,461.523,372.39,330.564,381.255,433.387,216.797,406.917,90.49,76.078,67.313,1267.372,402.628,498.055,1004.738,376.863,394.371,493.977,36,67,321,226,447,208,156.966,169.425 +49.8732,341.493,313.533,438.636,130.904,57,48,547,427,119,91,83,151,650.78,331.263,539.76,325.916,291.164,253.72,182.592,221.728,255.8,390.568,322.235,298.489,377.254,51.5,345.547,347.902,344.459,82.132,109.391,72.824,1072.415,735.652,1142.808,464.339,375.055,333.064,390.078,439.009,212.735,409.027,89.623,74.634,65.365,1276.678,410.039,494.364,1007.341,379.23,400.529,499.349,35,68,318,228,448,207,155.247,169.784 +50.04,341.109,316.744,441.832,126.782,56,49,551,425,122,88,84,152,651.41,329.908,541.12,338.234,295.828,260.013,186.188,224.518,256.64,391.177,321.715,297.342,378.38,52,344.092,350.424,346.706,82.033,108.527,68.532,1078.163,740.522,1151.504,474.491,375.717,337.009,389.78,445.17,217.151,407.214,88.016,74.039,66.716,1286.607,409.459,496.91,1014.483,380.617,401.918,510.145,35,69,323,227,445,205,157.45,170.124 +50.2068,345.058,317.355,444.105,128.978,57,47,547,422,121,88,85,154,650.041,333.29,540.26,337.396,295.704,265.087,182.706,227.945,253.61,395.593,324.046,301.109,378.202,52.5,344.54,347.769,345.784,82.132,110.099,70.119,1084.792,745.163,1159.41,475.947,380.953,344.021,398.405,444.051,211.334,403.504,90.121,74.251,69.119,1296.494,410.661,500.813,1023.464,380.191,405.034,510.726,35,70,323,231,441,204,158.061,172.176 +50.3736,346.498,321.005,452.54,127.985,59,48,551,427,122,91,85,156,649.045,337.449,541.957,342.474,301.53,266.535,191.546,226.473,258.589,392.606,321.744,301.784,374.825,52,352.899,348.313,347.651,81.821,110.779,70.912,1097.667,748.998,1164.941,476.794,387.226,348.159,399.298,447.209,215.438,404.269,88.94,73.345,68.508,1302.83,417.153,509.908,1021.696,382.172,402.168,512.96,36,68,320,233,444,202,159.468,169.968 +50.5404,351.56,320.679,456.412,128.694,58,48,555,427,122,88,86,159,657.334,333.834,548.733,347.263,307.744,269.942,187.268,228.923,250.935,391.375,322.843,300.542,376.745,51,348.944,352.573,353.3,82.896,110.439,70.897,1098.198,753.022,1179.193,490.388,392.834,352.911,400.544,454.602,211.178,405.246,87.675,74.195,66.887,1303.707,418.907,514.476,1026.675,388.949,411.839,519.65,35,67,325,229,443,206,160.832,172.303 +50.7072,354.122,327.256,462.019,129.176,55,47,553,425,122,89,87,159,654.992,336.806,542.67,348.598,310.147,277.779,194.105,233.171,253.695,396.598,321.914,302.929,380.815,53,353.469,350.098,353.554,83.236,109.887,70.883,1115.03,751.646,1178.788,493.518,398.168,359.927,403.589,453.554,211.688,406.874,88.201,72.963,66.048,1318.926,424.098,514.108,1035.585,389.659,410.927,527.493,36,70,325,232,440,204,157.904,174.935 +50.874,353.691,328.09,463.398,130.971,56,48,557,426,123,91,86,166,656.008,338.419,545.607,358.106,314.597,277.304,192.413,230.098,253.496,392.111,327.27,307.1,383.336,53,355.312,355.954,350.691,82.514,110.822,71.662,1120.864,760.927,1181.583,497.484,404.652,364.859,396.111,461.131,213.867,400.006,89.95,74.973,67.256,1319.194,427.931,516.598,1038.386,389.933,415.424,526.471,36,70,328,233,431,202,157.222,172.827 +51.0408,364.366,333.008,466.428,127.901,56,47,555,428,123,92,86,165,663.303,336.807,547.752,362.652,318.92,283.003,193.437,232.605,258.461,396.796,326.545,302.194,385.319,53,353.574,357.016,353.786,81.963,110.779,70.6,1119.239,768.928,1189.418,504.465,404.864,366.378,401.634,466.017,211.008,400.955,90.817,75.058,69.389,1327.398,425.159,516.739,1038.697,390.878,416.431,530.457,36,70,333,236,437,201,158.004,176.647 +51.2076,363.336,332.824,473.07,131.411,56,47,558,431,123,93,86,166,663.065,342.245,552.717,367.931,321.977,286.151,196.819,234.191,258.546,397.178,325.715,307.836,385.132,52,355.887,360.485,356.453,83.999,111.855,72.498,1143.814,767.951,1193.144,507.934,412.137,366.713,407.229,475.478,211.15,401.578,90.092,74.492,67.598,1337.963,425.286,514.646,1045.953,395.329,417.381,537.871,37,67,323,233,444,200,162.197,175.628 +51.3744,365.444,335.028,478.484,131.916,56,47,557,428,120,91,87,166,662.144,336.506,556.449,372.248,332.983,292.396,202.248,239.615,258.83,397.631,328.301,308.431,387.628,52.5,361.484,357.111,355.685,84.056,112.45,72.979,1137.815,771.366,1203.879,517.347,416.699,376.302,410.967,475.803,212.537,400.586,89.637,75.455,66.517,1337.482,433.772,527.672,1048.598,396.48,422.146,535.644,36,69,323,233,440,200,161.074,176.477 +51.5412,367.432,336.068,482.6,129.445,57,47,553,433,123,90,86,167,660.737,337.365,552.679,372.517,338.536,297.448,200.443,234.205,261.192,398.89,327.907,311.844,390.606,52,362.985,362.718,361.385,84.593,112.804,71.634,1144.084,773.301,1217.218,519.021,424.92,377.529,414.551,475.506,210.98,398.887,87.76,71.844,66.929,1338.854,430.519,521.039,1050.776,400.411,425.419,545.303,37,67,323,237,439,199,158.373,175.982 +51.708,371.864,339.181,490.627,133.563,57,46,556,431,124,91,88,172,661.557,342.837,562.751,378.996,338.841,303.129,204.523,239.332,261.462,402.372,328.839,315.786,386.92,51.5,356.569,363.524,365.053,85.173,114.079,74.112,1149.511,778.093,1209.4,529.277,425.815,380.797,412.143,469.435,210.57,397.315,87.973,74.336,67.214,1360.211,436.007,523.542,1059.22,402.288,425.062,547.586,35,68,331,236,444,199,159.66,175.572 +51.8748,370.386,344.324,489.637,132.331,55,47,563,431,122,93,88,173,662.282,335.709,556.561,387.707,349.448,307.852,202.959,236.528,262.515,405.203,332.687,315.795,392.133,51.5,361.809,360.738,362.192,85.272,110.51,73.532,1157.707,782.272,1224.913,533.443,433.597,380.048,413.74,477.511,209.904,396.054,87.376,74.733,70.527,1347.369,442.103,528.379,1052.148,401.497,432.55,547.349,36,67,331,237,443,201,158.942,178.807 +52.0416,378.629,346.711,494.764,133.397,55,47,562,437,124,91,88,177,664.711,338.333,563.798,388.765,350.984,311.111,204.025,242.028,260.694,405.231,332.068,323.367,394.61,53.5,366.447,367.414,355.058,81.043,112.153,72.016,1168.93,782.304,1225.341,541.42,429.92,389.443,414.728,475.756,213.16,397.357,88.357,76.135,69.73,1349.504,440.943,530.048,1049.39,395.56,429.314,550.345,37,70,334,242,446,199,159.951,176.152 +52.2084,375.133,346.183,501.456,134.803,57,47,560,435,124,90,89,179,671.775,339.082,556.965,398.961,356.743,315.015,210.094,245.655,262.7,406.448,334.088,320.455,398.88,52.5,365.303,368.079,363.677,84.82,113.881,72.47,1164.446,783.126,1230.893,540.382,442.726,388.231,421.917,476.831,210.796,402.866,89.566,72.765,65.934,1351.838,442.782,535.989,1055.288,403.965,427.514,554.704,36,69,340,246,446,200,163.931,176.987 +52.3752,384.921,344.661,499.837,136.852,56,47,551,435,124,94,90,185,667.959,339.993,564.789,402.016,361.165,321.984,207.237,252.295,263.126,403.462,335.326,325.319,397.032,52.5,361.841,366.38,366.524,85.216,113.626,72.781,1179.175,785.634,1231.236,547.506,440.863,399.3,420.021,476.398,210.301,400.232,88.045,74.917,69.73,1358.669,439.854,525.423,1058.852,398.267,433.029,559.052,36,69,343,244,446,198,154.778,179.647 +52.542,383.927,346.311,506.712,133.067,57,47,556,436,125,92,91,186,670.321,339.321,563.405,407.695,366.412,326.906,212.155,251.713,267.01,410.496,340.042,327.31,401.313,53.5,364.373,367.44,368.717,84.947,114.801,73.928,1174.533,783.434,1243.695,553.421,445.292,396.229,423.8,477.396,213.06,401.436,88.201,71.915,68.636,1362.912,445.37,531.463,1057.381,403.59,430.274,562.486,37,70,350,247,445,204,160.051,179.562 +52.7088,383.872,353.356,510.749,133.718,55,47,552,439,125,93,94,191,673.842,335.456,563.655,409.352,370.151,333.13,209.826,253.467,269.229,412.69,337.025,331.103,405.529,53,366.901,369.717,363.888,83.886,114.051,74.452,1189.082,790.033,1247.9,562.55,451.749,403.079,425.119,483.915,204.993,398.83,90.277,73.926,68.863,1352.984,445.908,530.755,1056.476,403.017,429.725,562.415,37,69,350,254,446,201,158.174,176.166 +52.8756,384.827,346.652,514.065,136.755,57,48,556,440,125,95,93,193,675.145,338.4,563.455,416.09,377.218,336.618,218.11,253.325,267.536,409.859,343.041,333.555,408.823,53,367.889,365.091,363.508,85.145,114.306,74.424,1191.83,795.431,1246.658,566.602,453.659,405.345,425.034,477.114,210.286,405.784,87.319,72.765,68.294,1366.18,445.455,531.802,1057.975,404.24,429.665,565.07,37,69,354,253,449,202,159.937,179.93 +53.0424,386.643,354.686,512.369,139.103,56,48,551,444,126,95,96,198,669.696,339.216,570.531,425.175,382.621,347.011,217.541,263.414,269.229,417.233,341.288,340.481,410.982,53,368.602,366.928,363.007,85.102,115.637,73.9,1190.147,796.665,1254.748,570.74,454.156,408.161,428.571,482.907,208.815,404.481,90.035,75.172,69.361,1360.749,444.267,534.362,1064.806,400.569,427.339,569.108,37,69,357,259,450,201,156.597,181.288 +53.2092,386.74,355.817,520.209,138.276,56,48,563,445,126,95,95,201,671.103,342.474,571.059,425.843,387.2,350.236,222.544,263.561,272.06,413.85,345.544,337.691,410.223,52.5,371.455,370.721,368.909,86.757,114.546,72.979,1197.155,801.111,1257.75,574.124,462.889,409.323,434.479,488.923,209.805,404.014,90.49,74.959,67.754,1361.003,446.36,535.465,1060.379,402.124,430.671,567.717,37,68,366,261,453,199,158.487,182.548 +53.376,391.911,358.448,520.095,138.018,55,49,556,449,125,98,94,202,665.932,340.041,564.68,432.618,393.992,349.917,221.052,271.953,274.037,417.488,345.792,343.125,419.437,53,369.277,374.793,367.481,87.295,118.923,73.631,1198.849,794.576,1262.491,585.636,462.762,409.054,434.061,485.95,207.654,408.064,88.343,75.327,68.764,1368.329,449.627,532.82,1060.054,402.514,432.901,573.364,37,69,366,267,453,200,157.208,183.142 +53.5428,389.652,351.686,525.309,139.356,55,45,559,450,128,96,97,206,668.155,337.112,568.192,444.997,399.764,358.659,223.539,271.783,274.023,421.097,350.749,345.593,418.044,53.5,368.471,368.769,363.026,88.03,116.416,72.909,1204.429,797.227,1265.89,593.526,469.219,414.051,441.335,491.91,212.169,405.869,90.291,75.143,68.067,1361.668,453.573,530.444,1064.467,396.008,429.058,574.114,37,70,366,270,449,200,158.572,182.788 +53.7096,390.746,358.341,528.207,139.065,57,47,563,450,128,96,94,207,671.123,343.553,574.747,446.227,407.107,358.584,225.444,274.938,280.026,428.329,355.663,355.911,430.129,52.5,368.711,370.268,367.552,85.697,117.959,73.503,1207.68,804.368,1271.506,593.903,468.821,414.782,438.378,494.57,214.603,414.112,89.836,73.204,68.906,1355.445,448.595,527.729,1054.326,398.503,427.869,570.141,38,67,375,276,458,201,158.885,180.453 +53.8764,392.118,357.684,531.659,143.007,56,48,567,456,128,97,99,211,665.76,341.668,570.093,452.4,407.249,366.685,226.766,276.412,277.622,428.003,357.524,352.802,426.7,53,370.267,373.096,369.914,88.497,117.039,76.449,1213.401,802.857,1279.548,599.605,472.068,420.195,441.109,492.274,211.475,411.732,90.377,73.529,69.645,1364.355,447.732,525.423,1054.722,397.31,428.731,569.317,36,70,373,282,457,201,157.819,180.34 +54.0432,390.547,359.094,532.17,140.022,57,48,570,451,126,95,101,216,664.801,339.526,570.84,449.048,410.206,369.612,233.04,282.789,282.601,428.442,362.121,361.993,431.786,52.5,368.245,369.032,369.178,87.974,116.926,73.702,1212.813,804.471,1282.807,604.596,476.296,415.264,443.471,500.127,211.9,415.216,91.343,71.547,69.787,1358.782,448.68,531.873,1053.053,398.012,427.213,569.372,36,69,378,286,456,200,155.36,182.052 +54.21,393.89,362.862,533.115,144.605,57,49,569,455,128,98,99,217,669.398,337.923,568.186,459.478,424.795,380.133,234.391,283.512,281.178,425.342,364.299,362.305,442.188,53.5,372.389,373.097,364.315,85.838,116.855,74.82,1208.115,811.439,1284.708,614.464,483.603,420.149,442.07,507.386,217.377,413.446,88.77,75.356,68.323,1364.581,446.304,531.689,1047.523,398.229,424.93,572.389,37,70,380,289,457,201,152.802,177.581 +54.3768,393.25,359.985,534.398,145.284,57,48,570,460,132,100,101,225,665.159,341.482,567.771,462.577,430.243,378.047,239.011,285.65,289.33,428.753,366.426,366.958,439.916,53.5,371.682,372.12,369.024,88.313,120.834,74.452,1230.163,810.399,1285.309,615.859,481.165,422.708,445.396,506.084,213.995,419.323,89.353,74.733,69.958,1347.963,450.278,524.348,1050.083,397.229,426.467,575.645,37,70,386,293,459,201,153.101,179.788 +54.5436,393.449,359.802,541.456,144.605,54,48,575,464,129,99,99,223,664.477,341.243,571.515,473.79,431.252,388.953,240.276,295.718,288.021,437.571,372.912,370.788,448.199,54.5,374.632,370.933,364.359,90.293,119.631,75.628,1226.899,806.54,1283.931,625.185,485.152,423.111,448.663,508.86,213.98,415.91,90.476,74.676,68.365,1355.43,445.398,528.606,1050.267,394.988,424.428,572.007,37,72,390,295,459,205,150.699,180.821 +54.7104,399.341,360.839,535.58,144.81,56,46,573,464,132,99,101,222,670.86,337.756,570.153,478.305,440.891,391.044,239.85,297.207,293.697,432.136,372.63,373.082,453.257,53.5,369.66,368.51,367.864,89.232,118.526,76.534,1220.653,805.13,1291.584,626.422,484.294,421.871,443.161,517.521,215.863,421.278,91.059,73.713,69.247,1357.043,443.857,524.758,1046.349,393.299,423.025,568.395,37,70,389,301,467,205,151.452,181.048 +54.8772,394.369,361.555,543.962,149.356,58,48,574,470,132,102,103,227,668.837,340.222,570.053,485.455,444.986,393.751,242.343,298.46,290.297,440.557,371.441,379.682,457.717,54.5,369.358,370.803,369.782,91.552,121.089,77.54,1229.321,804.477,1305.243,630.034,478.447,424.456,447.053,518.215,214.957,419.663,90.59,75.37,68.721,1344.809,446.134,528.04,1042.573,388.751,421.89,565.046,38,71,397,305,463,204,151.082,178.458 +55.044,393.852,357.868,542.93,147.999,56,49,579,470,131,102,104,232,665.732,335.728,569.781,487.774,451.413,399.195,248.511,304.504,295.262,437.373,379.824,381.031,457.194,53.5,369.278,370.451,364.895,90.944,120.749,76.308,1231.015,802.61,1302.319,633.688,484.549,426.536,452.601,515.738,220.703,422.651,91.073,75.752,69.958,1351.046,445.667,524.674,1050.026,389.702,418.619,567.877,37,70,401,313,468,204,148.396,178.416 +55.2108,393.62,364.418,545.62,149.715,56,47,589,472,132,104,105,231,662.382,337.46,570.809,489.192,454.783,405.827,252.562,309.216,298.462,440.444,387.763,386.367,461.112,53,366.815,369.358,367.945,88.964,120.466,78.432,1242.15,808.825,1299.221,641.224,486.183,427.882,449.941,518.013,218.17,427.481,89.267,73.09,69.958,1345.572,441.24,523.867,1042.191,386.339,419.572,567.704,37,69,404,316,469,202,147.543,177.914 +55.3776,395.874,360.863,549.104,152.087,58,49,586,472,133,102,105,234,663.442,337.794,569.091,499.128,460.594,406.261,255.746,309.896,299.828,441.619,390.446,392.699,474.189,52.5,366.351,369.701,365.729,90.76,123.143,76.194,1240.272,802.928,1297.843,642.5,487.946,426.309,454.437,523.828,222.048,433.344,93.021,74.195,68.778,1335.318,444.21,519.073,1032.403,383.15,418.403,566.844,36,69,411,316,474,204,149.249,178.331 +55.5444,400.44,362.975,545.577,153.345,56,48,587,482,133,103,105,240,661.381,334.431,567.388,505.74,462.143,412.254,255.618,322.235,301.649,443.09,392.36,395.275,475.524,53.5,359.872,372.312,362.177,90.01,123.44,77.809,1239.377,793.895,1298.444,649.551,488.71,422.503,460.635,526.871,218.283,428.571,90.846,75.965,70.257,1345.968,446.148,517.885,1031.017,379.653,417.704,564.531,37,70,418,319,466,204,146.804,177.454 +55.7112,395.363,366.312,548.124,151.751,57,49,593,482,134,106,106,242,664.843,329.894,568.656,514.38,469.656,418.303,259.212,321.216,307.794,448.016,394.553,398.993,473.92,54.5,367.765,368.952,365.22,89.43,121.273,79.253,1243.474,802.385,1305.817,654.59,490.593,426.663,459.121,524.725,223.307,436.276,92.225,73.798,70.484,1335.997,438.595,517.22,1031.611,381.577,410.417,559.548,38,71,420,332,476,207,148.368,178.387 +55.878,396.053,360.739,547.018,154.924,56,50,589,480,136,107,105,247,662.764,334.278,566.83,519.401,472.827,416.854,262.629,324.542,307.367,450.11,398.866,401.323,479.499,55.5,362.392,370.633,363.791,92.825,122.846,80.018,1244.515,797.664,1304.627,651.533,488.908,424.895,459.175,531.618,225.586,441.884,90.832,75.2,68.92,1330.424,440.392,514.419,1026.633,378.084,410.736,569.828,38,73,420,328,481,207,146.818,176.888 +56.0448,395.436,358.963,545.301,154.555,57,50,599,485,136,107,110,249,661.385,333.529,571.083,525.65,480.591,423.916,265.573,329.158,306.059,453.408,404.623,408.625,489.867,54,362.081,366.321,360.808,90.265,120.268,77.71,1247.399,799.765,1306.398,657.036,487.111,425.628,462.522,524.946,228.827,438.938,89.196,74.874,69.318,1326.521,438.157,506.909,1026.519,375.099,407.244,558.368,38,70,418,337,479,204,147.757,175.543 +56.2116,395.349,355.947,546.178,156.151,56,51,597,486,139,107,112,248,661.419,330.738,571.349,518.353,486.421,420.804,269.106,330.838,316.799,450.592,411.524,416.25,488.268,55,365.543,363.734,358.797,90.477,124.602,78.517,1237.018,795.337,1299.87,657.363,493.428,422.97,466.471,530.408,229.421,442.904,91.016,75.596,69.346,1322.363,433.687,505.41,1023.677,374.329,404.369,556.602,38,72,430,344,476,204,144.587,176.336 +56.3784,392.937,361.759,552.155,153.206,56,49,603,491,140,106,109,252,660.742,331.754,562.931,527.031,484.217,427.075,268.978,333.3,315.334,455.913,408.9,422.712,494.597,54,364.315,363.098,360.398,90.505,122.364,77.37,1245.949,798.586,1310.783,653.609,484.393,423.236,463.479,529.319,227.468,446.275,90.775,73.869,71.309,1320.793,435.243,509.978,1016.152,372.588,403.936,554.664,38,70,431,349,480,208,141.517,177.001 +56.5452,386.719,358.231,548.271,157.205,57,50,607,495,141,110,112,252,659.019,329.774,563.168,530.131,491.129,429.425,268.978,338.663,314.38,460.032,416.036,422.453,502.723,55.5,362.293,361.046,359.677,89.643,122.35,75.684,1249.828,796.082,1308.095,660.582,495.769,421.908,461.447,534.611,232.252,445.68,91.528,74.464,69.56,1310.312,433.645,499.639,1009.292,366.172,404.643,551.649,39,72,435,350,481,206,143.091,175.388 +56.712,389.597,354.152,547.326,158.224,58,51,606,497,144,109,114,256,656.987,329.297,559.484,538.974,496.715,434.023,271.707,347.945,321.152,456.805,420.655,422.585,510.756,54,361.374,357.679,360.624,90.279,124.503,78.474,1250.884,799.519,1313.973,663.377,488.781,423.544,464.255,537.082,235.705,453.767,94.443,74.888,69.46,1313.183,432.796,504.208,1010.042,369.142,397.229,548.492,39,69,449,358,481,210,141.631,173.053 +56.8788,387.155,354.728,547.297,158.684,56,51,615,498,141,107,112,257,656.449,330.652,560.543,546.299,502.645,442.231,279.227,353.761,324.025,466.075,421.637,434.406,512.015,55,366.549,360.692,355.336,90.138,125.862,77.271,1246.189,801.431,1302.581,667.387,488.201,419.89,461.484,534.973,236.059,457.505,93.064,75.625,70.811,1298.05,432.485,504.632,1006.153,365.89,394.063,544.496,38,72,448,361,483,207,139.3,172.077 +57.0456,386.33,349.723,547.055,159.604,59,49,616,503,144,111,112,259,653.056,328.582,561.875,551.535,504.705,441.259,279.249,354.907,323.57,464.688,427.92,436.445,515.373,55.5,362.18,357.147,358.717,91.396,125.48,79.848,1249.535,790.753,1306.588,664.847,483.862,417.435,468.842,543.565,241.848,468.056,92.495,74.789,71.167,1302.222,424.183,496.075,989.802,362.962,392.135,540.253,39,72,456,370,484,207,140.289,175.076 +57.2124,386.186,350.392,546.647,160.452,57,49,616,503,143,110,114,262,652.173,329.164,554.705,549.067,508.816,447.517,279.519,353.549,325.448,472.345,430.293,440.142,524.956,55,354.04,356.955,353.432,90.251,123.327,76.633,1244.257,791.799,1312.498,664.828,490.862,414.116,470.186,532.601,243.461,465.507,91.614,75.54,69.688,1300.383,425.583,494.491,992.886,357.331,389.106,538.507,39,71,460,373,485,210,140.281,169.397 +57.3792,382.979,351.992,538.827,161.923,58,49,621,512,142,116,115,262,649.473,330.061,559.455,553.971,506.868,448.467,282.33,360.301,329.858,468.467,432.395,440.222,531.25,55,360.286,356.148,349.744,90.138,124.177,79.211,1243.617,797.513,1310,665.866,486.757,415.916,476.364,534.066,238.168,465.96,91.642,76.135,71.124,1286.607,423.08,492.044,993.833,353.62,382.795,533.281,37,73,463,377,489,209,136.898,168.483 +57.546,386.788,348.344,536.932,162.94,59,49,620,513,147,113,116,264,645.58,322.991,559.196,560.623,512.314,448.734,284.825,366.38,332.475,471.496,444.606,447.45,528.888,54,355.586,353.176,347.453,91.382,124.998,77.993,1231.409,790.067,1309.074,673.914,482.27,414.358,478.869,538.921,242.57,471.073,91.571,75.922,70.171,1289.804,421.213,487.235,981.698,352.581,380.983,527.958,37,71,464,383,491,208,137.495,169.431 +57.7128,386.603,347.216,540.514,164.699,59,51,623,516,144,118,117,263,644.173,325.018,557.249,561.186,517.518,453.46,288.762,370.146,332.93,468.835,438.584,450.702,534.11,55.5,355.125,356.997,349.431,91.835,124.559,79.352,1238.324,793.559,1305.533,670.686,484.534,411.209,483.469,543.379,248.358,472.334,91.941,76.517,71.579,1268.815,420.421,482.738,977.766,348.65,378.523,528.432,39,72,475,382,488,211,137.317,170.209 +57.8796,378.302,341.48,534.735,165.817,57,51,629,508,148,116,116,269,649.96,325.629,562.06,568.862,519.893,460.129,290.453,372.353,331.821,470.095,450.179,454.064,536.144,54,355.705,349.292,346.925,91.609,125.933,79.749,1228.699,790.426,1299.187,668.937,486.198,412.262,476.662,542.544,248.641,476.795,91.557,75.455,70.612,1272.096,415.909,480.305,970.185,349.888,373.187,525.334,37,71,483,391,490,208,134.837,166.308 +58.0464,378.487,346.141,535.446,165.648,57,51,634,518,149,117,119,269,637.593,316.916,552.07,566.347,518.812,455.303,291.036,379.246,335.861,476.011,453.469,465.086,544.548,55.5,350.423,350.784,344.431,93.589,124.488,78.956,1237.686,787.989,1299.274,667.387,483.614,409.635,478.954,544.931,249.391,478.069,90.448,75.101,70.313,1268.9,413.349,477.802,963.877,341.601,371.844,516.375,39,72,488,397,490,210,131,164.04 +58.2132,372.632,339.701,528.589,166.245,57,51,630,520,150,119,118,270,636.768,321.044,556.484,573.958,524.67,462.762,295.783,378.679,337.326,476.393,459.302,461.513,549.114,55.5,346.684,355.043,344.673,89.487,124.092,79.126,1230.729,786.852,1304.026,669.975,483.121,405.02,476.95,540.746,252.01,482.134,92.04,75.2,70.612,1258.73,413.221,477.363,971.076,339.115,367.466,512.312,40,71,485,404,492,210,131.597,166.954 +58.38,372.789,338.289,535.204,167.744,59,50,642,530,148,117,119,272,630.437,317.447,548.19,573.166,528.651,463.995,300.388,379.896,343.77,482.096,461.145,467.392,553.301,53,354.011,348.303,346.057,93.108,125.607,77.044,1224.889,783.759,1293.778,672.165,474.54,399.819,476.327,543.362,254.402,485.915,90.988,76.701,70.285,1252.351,410.124,477.024,961.869,334.498,370.827,515.618,37,69,494,405,496,211,128.555,166.629 +58.5468,372.079,340.283,524.783,166.638,58,50,643,529,153,119,118,271,634.144,318.21,551.612,578.658,522.822,459.662,299.862,384.296,342.874,481.728,466.868,472.192,560.57,55,350.981,348.472,339.697,92.33,128.256,79.466,1213.215,784.128,1301.188,671.397,474.747,400.532,483.954,539.517,256.043,487.091,92.197,77.069,70.612,1246.029,408.809,472.865,959.761,334.885,365.524,509.452,39,71,491,405,493,211,131.042,165.653 +58.7136,372.547,334.017,528.199,170.757,59,50,647,526,149,118,122,272,629.278,314.885,547.907,583.655,522.438,465.537,297.694,392.23,345.719,483.016,463.1,475.128,562.747,54.5,344.17,343.046,339.491,92.683,124.913,81.066,1208.478,782.99,1292.409,669.022,478.3,398.188,480.112,546.793,255.038,491.977,89.865,76.871,70.811,1237.642,403.349,469.23,944.274,330.435,359.409,503.773,37,72,507,415,497,213,128.527,163.856 +58.8804,371.709,332.389,523.138,169.427,59,50,643,530,150,121,119,271,635.796,317.093,542.952,587.633,525.026,463.541,300.154,387.752,344.424,484.757,472.639,474.033,565.308,54,348.275,342.15,341.944,93.659,123.015,81.505,1209.806,774.986,1283.96,671.383,473.707,395.21,477.003,539.828,258.336,492.883,92.438,75.54,68.678,1233.3,403.222,467.038,943.977,328.619,355.799,493.396,39,69,506,414,489,212,127.176,163.091 +59.0472,367.923,332.786,524.153,168.313,59,50,653,534,152,121,121,274,626.732,313.625,545.427,590.038,524.902,467.085,298.299,396.795,349.218,490.659,473.24,481.875,574.997,54,340.997,344.356,339.188,92.669,126.967,82.921,1203.601,773.312,1285.549,666.8,473.535,391.784,472.232,542.461,256.086,498.605,91.585,77.536,69.574,1234.474,398.597,465.497,938.249,328.217,354.398,496.336,38,70,508,419,489,212,123.282,162.709 +59.214,360.927,327.799,521.672,171.961,59,49,658,530,152,123,124,275,627.426,315.433,545.456,584.396,533.33,465.143,301.525,396.002,353.472,487.701,480.687,485.632,578.943,53,342.65,338.326,333.932,90.859,126.33,82.709,1202.128,770.781,1287.745,664.131,465.778,389.899,468.255,546.833,260.954,503.392,93.121,76.078,70.015,1222.183,401.581,455.907,939.762,322.334,355.059,490.859,36,70,517,420,492,212,125.982,160.799 +59.3808,358.412,325.743,517.879,171.026,59,50,655,539,155,122,124,272,617.075,314.961,541.47,590.812,530.614,466.242,299.024,403.037,353.714,486.187,484.358,490.418,576.697,54,334.866,338.184,335.318,90.59,124.658,79.749,1203.987,765.116,1280.355,661.913,464.15,389.985,469.309,545.817,262.271,505.885,91.656,75.582,69.844,1217.827,392.43,458.693,929.579,321.911,349.585,489.883,38,70,515,429,496,212,123.723,158.96 +59.5476,363.498,328.725,513.617,172.857,60,50,656,540,157,124,122,271,627.365,310.896,539.763,593.947,534.197,464.22,301.902,406.145,348.336,488.536,486.373,489.499,588.532,54,337.044,338.297,335.092,91.962,125.451,80.457,1195.366,762.656,1283.158,660.42,463.824,385.824,469.422,541.431,266.503,501.381,95.837,76.956,70.37,1206.215,396.485,452.929,925.027,321.456,345.483,481.279,38,70,523,431,494,210,123.609,159.172 +59.7144,352.043,322.855,509.3,170.701,58,50,661,546,153,123,120,274,625.615,310.8,542.808,586.772,535.695,466.724,301.405,408.552,352.063,495.697,488.281,491.04,588.239,52.5,339.448,337.646,331.287,89.968,127.208,81.349,1189.795,760.528,1276.871,664.023,463.165,377.415,468.616,542.082,265.71,495.957,92.111,77.112,71.11,1206.102,391.525,448.524,920.654,319.786,345.492,475.427,37,68,525,433,494,215,123.04,157.276 +59.8812,352.872,320.919,512.85,170.728,60,52,664,553,152,126,124,278,620.112,308.568,538.607,598.333,532.121,470.701,301.021,407.589,357.227,496.745,493.246,495.702,590.809,55,335.912,334.553,329.194,90.831,128.723,80.84,1186.563,757.357,1271.708,659.994,460.582,378.746,467.894,539.6,265.682,504.242,91.116,75.568,71.138,1190.162,389.471,446.403,912.909,314.481,343.131,477.672,38,72,527,432,496,210,120.335,160.686 +60.048,353.582,316.107,506.031,173.939,58,50,674,551,160,125,123,273,622.055,307.065,537.219,596.268,534.879,464.56,307.176,407.304,355.364,494.523,494.682,494.123,596.185,54.5,334.045,330.385,329.548,92.613,125.182,79.183,1178.059,757.518,1272.553,655.272,451.968,374.989,467.872,539.119,271.513,504.355,94.784,76.474,71.38,1183.09,388.513,448.807,909.693,312.977,337.467,474.096,38,71,530,442,489,213,120.368,156.118 +60.2148,355.116,317.735,509.71,171.65,59,50,671,550,158,127,124,272,619.66,308.191,531.703,597.219,538.335,461.678,307.04,412.228,359.091,496.207,500.884,492.189,596.226,54.5,329.873,326.993,327.355,91.877,128.411,80.939,1169.489,754.018,1270.606,658.728,451.438,378.208,465.646,545.276,272.758,506.012,93.988,76.205,72.276,1183.981,384.665,441.481,906.666,306.281,335.607,468.071,38,71,536,445,490,211,120.837,153.427 +60.3816,346.853,313.788,501.736,176.34,60,51,677,560,161,127,123,277,609.918,310.96,534.629,596.863,536.122,469.529,303.6,414.515,360.684,495.414,504.327,497.857,597.077,55,332.386,332.153,333.503,90.406,125.919,78.97,1173.816,748.24,1261.059,662.843,450.588,371.554,469.189,544.879,273.254,506.168,92.964,77.451,70.37,1177.065,382.077,440.943,904.148,308.016,335.086,463.077,38,72,540,445,494,211,119.175,156.285 +60.5484,345.854,313.292,499.552,171.848,60,52,679,554,161,127,124,271,611.754,306.922,529.562,600.586,535.576,465.367,305.178,418.507,362.491,489.951,503.175,498.506,597.754,53,333.626,327.027,323.749,92.726,126.032,80.981,1164.32,745.667,1261.836,651.561,445.563,367.315,466.5,544.101,276.834,512.838,90.903,77.296,70.271,1169.385,381.412,430.18,893.031,304.689,331.246,462.885,39,67,535,446,490,213,115.636,152.72 +60.7152,347.51,309.967,497.478,173.151,61,50,681,553,160,128,123,271,608.41,306.446,532.635,595.746,539.202,462.381,298.455,421.479,361.068,496.844,511.847,502.652,599.357,54,328.13,324.563,322.275,92.966,127.052,79.593,1165.41,746.991,1249.442,645.177,441.124,365.785,465.58,544.044,274.867,511.804,92.765,74.308,73.314,1168.126,380.62,435.512,892.749,301.055,325.632,459.214,38,70,539,447,487,214,118.35,155.351 +60.882,340.718,307.795,490.202,171.902,59,50,681,559,162,127,124,270,605.605,304.305,532.26,603.063,536.99,460.653,304.851,419.936,361.907,498.146,509.413,499.837,602.874,53,327.762,322.288,321.837,92.712,131.655,79.579,1156.237,740.078,1243.438,642.471,439.835,359.421,464.702,538.128,280.019,521.562,93.519,76.559,72.276,1167.815,375.769,428.483,897.586,298.962,326.296,455.203,37,69,544,447,485,210,113.978,151.729 +61.0488,342.693,302.682,487.858,173.14,58,51,685,560,165,128,124,270,610.668,302.155,526.662,599.272,535.235,458.353,299.585,422.554,360.727,500.637,514.594,505.962,607.5,54.5,327.451,320.679,319.843,92.698,127.052,78.701,1149.251,728.12,1240.933,641.736,434.309,360.625,465.207,541.469,278.349,516.69,94.528,78.287,70.171,1153.049,371.696,431.439,889.637,301.126,319.351,449.751,40,69,541,454,484,210,112.423,152.944 +61.2156,338.765,301.873,479.678,170.86,60,52,685,567,163,131,124,269,607.694,298.789,523.565,598.549,531.089,463.41,303.29,420.792,360.058,497.651,519.087,508.675,609.72,53,321.766,321.118,321.526,92.245,129.573,80.188,1141.493,737.29,1244.061,643.388,429.807,360.584,460.952,541.503,279.141,522.908,91.87,76.319,70.783,1137.83,367.071,427.705,883.371,297.883,318.653,445.735,37,69,546,458,482,210,116.062,149.508 +61.3824,334.513,303.145,486.211,175.374,62,50,696,565,164,131,122,266,605.149,302.996,524.788,602.02,530.114,459.543,302.428,426.149,366.303,496.872,521.024,509.95,610.064,54,322.29,317.681,320.932,90.109,129.941,79.678,1142.638,724.971,1237.575,642.509,433.247,350.717,464.303,534.76,285.595,521.633,93.547,74.846,72.546,1141.932,367.495,425.555,887.897,295.968,320.536,442.04,39,69,548,454,486,210,115.124,149.21 +61.5492,336.474,302.145,478.546,169.1,60,51,692,562,162,131,124,265,605.862,301.274,525.812,599.47,528.535,455.761,299.273,427.146,365.065,501.047,523.075,513.943,613.227,53.5,318.756,317.283,317.964,89.869,130.564,81.094,1142.395,718.348,1238.929,631.906,426.241,348.905,467.2,538.709,284.831,522.497,95.282,76.786,72.617,1132.371,366.689,424.763,879.524,294.431,315.668,443.033,37,70,547,456,486,209,109.638,148.659 +61.716,331.78,295.793,474.146,171.395,59,50,700,563,165,131,124,265,608.313,299.542,524.346,596.651,532.845,453.065,298.771,424.102,365.649,498.429,521.449,511.704,615.375,53.5,322.106,313.509,314.23,92.896,127.307,80.641,1139.218,725.043,1236.729,638.039,421.474,349.176,460.823,543.622,283.727,519.466,94.87,77.027,71.024,1129.556,362.092,419.685,888.661,290.478,314.124,433.897,37,70,545,461,489,210,109.993,146.918 +61.8828,331.665,295.207,470.162,171.719,60,51,699,570,165,131,122,263,599.084,296.898,521.311,589.101,523.306,455.209,295.783,425.119,363.757,501.047,521.322,503.321,613.708,53.5,319.08,314.713,313.777,91.623,129.771,78.786,1133.424,721.396,1216.316,630.635,423.276,343.664,460.304,538.043,281.972,532.963,93.007,74.86,72.304,1126.487,361.838,421.255,875.069,291.941,307.364,436.701,37,70,549,459,482,211,108.955,148.262 +62.0496,331.292,294.081,469.037,170.978,60,50,704,571,165,134,124,260,600.226,296.931,520.467,590.896,521.485,447.32,298.923,427.833,364.667,497.693,527.454,514.405,615.332,54.5,317.553,320.737,311.543,92.669,128.185,81.392,1121.24,719.47,1222.276,625.441,419.115,344.066,459.563,539.388,289.671,526.562,94.6,75.993,70.768,1108.199,359.942,418.158,872.41,291.605,315.054,430.526,37,72,549,458,477,212,109.723,147.06 +62.2164,328.227,294.27,465.563,173.921,59,49,705,574,165,131,122,260,599.121,296.074,518.8,592.147,523.476,445.449,296.807,429.532,367.327,504.416,525.989,511.918,616.961,54.5,316.069,313.901,313.339,89.331,129.219,81.222,1118.232,720.875,1220.169,625.256,412.995,340.992,459.45,538.459,290.874,529.522,93.803,76.97,72.261,1109.939,359.546,419.063,871.971,288.799,312.378,424.199,38,71,546,459,475,210,107.165,147.357 +62.3832,321.533,291.393,459.974,170.365,58,49,707,571,167,131,122,259,593.784,296.558,516.095,594.06,524.473,445.011,292.767,420.379,370.101,503.935,526.179,512.043,612.471,53,313.763,314.615,312.985,89.43,130.168,78.8,1118.983,709.072,1215.246,619.861,415.405,334.919,460.347,534.916,290.662,529.734,96.32,77.819,72.802,1114.833,352.262,417.196,869.157,288.812,305.644,427.684,37,69,556,461,475,206,108.344,147.428 +62.55,318.819,289.993,459.874,171.267,60,50,705,574,162,134,124,262,595.952,293.707,516.659,589.866,516.878,447.602,290.135,420.255,367.171,506.199,529.44,504.426,619.252,52.5,313.721,309.854,309.421,90.321,128.68,79.013,1110.792,705.958,1215.941,608.79,408.442,331.024,460.007,539.97,287.35,527.057,93.576,77.451,71.38,1092.118,348.967,413.943,867.672,289.752,309.498,419.18,37,68,547,462,467,211,105.672,144.796 +62.7168,318.876,286.527,455.229,171.833,62,48,704,579,168,135,121,253,591.573,295.758,512.652,586.139,517.219,438.729,291.918,417.209,364.838,500.099,523.304,505.693,613.406,52,312.137,315.361,310.157,91.948,129.332,79.862,1104.667,709.35,1202.493,613.454,403.03,331.821,460.012,538.482,293.761,532.057,94.145,77.14,72.603,1100.137,348.797,416.46,871.434,287.61,307.377,417.704,36,68,551,458,467,208,108.287,145.178 +62.8836,321.847,284.815,451.936,171.365,63,50,706,576,167,133,120,259,605.562,297.939,513.239,587.591,510.52,434.153,287.133,422,365.876,501.925,525.395,511.932,618.036,52,310.61,309.039,313.07,88.794,126.669,80.514,1104.557,702.878,1207.222,611.79,402.293,326.556,458.426,528.235,290.322,529.196,92.922,74.365,70.825,1093.461,349.434,409.841,864.984,286.768,299.09,410.294,36,68,546,454,475,206,107.52,142.362 +63.0504,320.155,282.166,439.133,169.214,59,48,714,583,168,134,120,252,588.53,292.862,514.548,585.57,510.181,433.976,290.7,419.562,366.445,497.693,535.003,506.739,621.026,53,310.102,311.457,306.859,90.477,128.68,78.772,1099.614,698.836,1205.384,607.844,400.661,326.679,453.578,540.152,291.709,531.462,93.846,77.338,72.034,1095.71,347.934,409.516,870.981,285.925,302.708,409.946,36,70,551,456,468,207,107.165,144.258 +63.2172,313.094,283.768,439.318,165.053,59,49,708,579,169,137,120,249,559.938,292.758,508.738,579.415,505.189,428.409,289.188,416.384,361.281,502.548,529.963,502.018,621.43,52.5,310.417,303.624,310.177,91.778,127.108,78.021,1096.265,707.22,1201.311,604.145,397.158,328.478,455.389,543.379,291.525,529.408,95.268,75.922,72.432,1089.643,342.814,408.78,866.597,281.391,304.931,406.957,36,69,547,453,466,205,106.312,142.051 +63.384,314.245,281.426,442.585,162.704,58,49,716,579,168,135,121,247,568.441,294.461,509.331,579.061,506.072,427.286,280.959,419.412,362.434,498.825,531.349,501.931,617.882,53,310.474,305.055,308.778,90.534,127.349,78.418,1087.589,699.661,1200.673,597.941,392.269,322.095,455.871,536.472,293.209,528.219,93.235,79.434,72.375,1090.845,341.725,410.393,858.408,280.564,300.351,408.125,37,69,547,457,458,202,105.218,143.409 +63.5508,305.324,278.886,434.446,163.893,60,51,709,582,172,136,118,245,579.877,294.918,507.693,579.784,503.105,422.043,277.136,417.997,359.603,495.91,528.804,502.797,614.783,52,307.619,307.038,305.104,88.384,127.632,79.905,1088.009,700.936,1192.609,590.642,393.27,321.105,454.852,535.927,290.973,529.224,96.42,76.644,71.664,1087.691,341.06,414.098,859.638,283.95,301.397,404.276,37,67,550,455,460,207,106.198,144.767 +63.7176,305.337,273.811,430.055,161.685,60,49,716,575,172,139,119,244,585.04,290.819,511.356,575.02,499.389,422.63,279.552,415.857,359.887,495.782,529.734,496.641,618.901,51.5,304.98,294.358,303.283,90.364,129.02,76.959,1087.334,696.873,1188.152,585.561,391.048,318.683,452.573,543.171,291.667,528.403,93.874,76.092,72.162,1087.959,341.174,410.322,861.915,279.031,301.803,406.393,36,67,538,449,455,201,102.403,141.648 +63.8844,303.988,275.808,425.736,163.949,60,49,712,581,170,136,120,238,590.912,290.916,512.988,567.885,496.767,419.204,282.242,416.889,361.651,499.236,531.25,497.67,612.93,52,304.089,300.568,323.353,88.469,128.227,80.84,1085.041,697.872,1188.012,580.163,387.943,315.866,451.129,537.394,289.473,526.817,93.576,77.381,70.882,1082.33,340.056,405.343,858.747,280.062,302.57,399.247,36,68,537,446,457,203,102.801,140.791 +64.0512,307.312,272.097,429.004,160.326,59,48,717,578,168,137,119,236,596.267,291.167,509.961,564.184,492.875,417.836,273.876,414.812,356.544,495.825,528.077,499.088,615.998,52.5,300.725,299.637,299.34,89.742,127.208,79.735,1074.024,695.646,1185.779,578.962,383.193,317.719,453.377,538.189,290.619,526.448,91.656,75.058,70.185,1084.772,338.014,403.074,860.236,281.2,291.045,398.163,36,69,540,446,448,199,104.208,141.669 +64.218,302.056,273.609,422.838,157.311,58,47,714,583,168,134,119,234,593.857,286.924,508.123,562.421,484.014,411.871,274.919,411.01,353.543,491.636,529.454,497.288,614.924,50.5,304.43,299.297,300.994,90.42,128.426,81.151,1081.875,697.82,1181.714,576.144,388.212,316.616,455.098,536.34,288.652,527.284,95.083,75.469,71.295,1081.086,336.337,404.778,853.486,280.368,297.632,398.981,36,65,542,443,450,199,98.196,139.56 +64.3848,299.636,271.63,425.421,160.17,59,47,719,580,174,136,115,239,600.355,288.325,511.965,563.221,492.976,408.385,271.011,411.214,358.052,494.027,530.017,497.97,611.848,51,308.248,292.397,300.796,89.006,126.202,79.749,1072.648,700.813,1193.348,578.077,376.581,311.211,454.495,537.422,291.426,523.573,93.789,76.857,69.602,1085.244,336.294,407.635,857.757,278.329,299.723,392.949,36,66,536,444,442,197,100.399,139.603 +64.5516,297.31,264.999,421.583,160.128,60,48,718,582,170,134,116,232,601.205,288.941,508.101,556.037,483.463,399.94,268.196,408.276,360.172,494.862,532.311,492.685,604.387,50.5,300.895,300.216,300.768,88.073,125.664,77.766,1072.016,690.817,1182.899,568.337,381.761,309.701,459.89,539.97,291.454,523.8,93.576,77.126,73.029,1079.926,332.221,408.95,852.906,281.961,299.374,376.25,34,67,535,442,440,198,102.671,136.504 +64.7184,298.717,262.902,416.46,159.279,59,47,712,583,171,135,115,229,593.989,292.151,502.456,554.706,480.943,401.127,264.586,405.487,354.197,490.093,528.46,487.575,600.278,50.5,302.182,306.268,300.556,87.563,125.451,78.729,1055.19,682.515,1135.29,567.507,380.301,306.051,457.244,537.705,291.27,522.823,93.192,74.45,71.081,1078.257,332.178,407.338,860.558,277.536,296.707,373.565,36,65,530,439,442,196,99.717,141.337 +64.8852,295.45,264.489,412.382,161.048,60,49,718,584,171,137,114,227,595.15,296.831,503.943,553.64,475.686,399.595,261.857,399.287,351.395,489.329,522.962,483.975,602.563,50,299.976,299.764,300.386,89.798,127.647,80.712,1036.497,681.942,1127.308,565.953,373.502,307.582,456.281,538.747,289.614,525.797,93.405,76.191,71.11,1080.492,332.164,407.352,854.801,280.779,295.9,375.136,35,65,529,436,436,193,100.3,141.4 +65.052,295.08,266.41,408.575,160.298,59,47,723,581,169,133,115,225,594.289,296.35,507.371,545.458,470.246,395.908,261.971,403.802,353.102,492.64,517.838,482.342,596.411,50.5,302.846,297.247,295.211,87.761,127.151,80.684,1039.947,685.253,1128.896,553.935,374.494,305.407,453.451,539.71,287.888,522.993,94.045,76.857,70.185,1088.2,335.064,407.14,856.725,278.921,298.085,373.238,35,66,527,434,434,195,101.536,135.796 +65.2188,295.89,264.415,411.928,157.948,59,48,720,579,170,133,115,221,599.545,294.69,506.111,548.959,468.029,388.188,258.473,398.442,345.648,482.974,520.473,476.582,599.31,50,302.238,302.861,300.061,88.822,125.423,78.205,1050.388,678.6,1155.868,554.744,369.031,305.338,452.297,524.262,290.308,518.588,94.059,76.956,71.138,1081.963,333.168,408.554,855.155,276.474,297.614,374.355,35,65,527,438,434,195,98.637,139.603 +65.3856,291.884,263.878,404.896,160.029,58,49,713,581,169,136,116,219,590.812,297.959,509.718,538.515,463.394,386.695,256.542,397.06,346.928,481.007,512.031,475.779,591.27,50,299.184,298.477,299.509,88.271,126.91,79.664,1054.259,682.496,1166.066,548.831,372.786,304.478,449.597,527.978,288.1,521.817,94.13,77.48,70.342,1086.446,328.897,407.479,859.525,275.159,295.73,376.122,35,65,520,431,424,194,102.219,139.617 +65.5524,296.302,261.052,406.614,158.387,58,48,721,580,169,133,112,219,588.327,292.333,504.329,541.706,456.556,384.552,250.046,394.329,345.534,484.106,514.25,474.373,592.563,49,301.503,300.74,300.443,88.935,124.503,78.786,1059.252,682.823,1175.674,552.428,366.428,304.935,453.384,527.539,285.864,519.056,93.348,74.251,71.735,1088.766,332.504,403.915,868.817,283.262,298.677,373.082,34,64,519,428,427,193,98.106,139.857 +65.7192,290.885,259.837,401.236,159.831,59,48,716,577,170,136,111,216,588.57,291.054,510.219,534.139,455.458,380.291,250.515,390.735,345.662,479.011,515.288,475.411,588.424,49.5,300.061,300.075,293.613,90.307,127.208,77.228,1063.512,680.551,1180.872,546.487,365.423,300.055,451.755,526.353,285.354,519.594,92.31,76.701,71.11,1079.021,330.142,410.308,868.068,281.466,302.205,379.219,34,65,521,423,420,188,98.012,136.561 +65.886,293.621,261.795,406.241,158.076,60,47,719,579,171,133,114,211,587.526,296.031,508.695,532.177,450.589,379.087,246.891,390.299,334.367,480.143,511.449,468,588.561,48.5,301.051,295.734,299.566,90.887,126.783,79.31,1061.172,680.105,1183.979,539.302,363.211,297.827,445.397,525.32,284.675,514.665,92.964,76.871,69.432,1078.922,328.02,408.073,861.335,281.706,301.525,375.189,34,63,512,418,419,190,98.111,139.985 +66.0528,288.418,255.517,402.765,155.401,58,46,718,579,170,133,111,212,590.476,292.473,516.682,529.817,451.496,372.886,244.901,384.468,338.236,481.077,509.368,461.593,586.54,49.5,302.804,302.154,300.089,89.317,127.547,77.809,1070.282,682.372,1176.962,539.321,359.915,299.614,448.808,522.97,284.024,511.28,94.486,74.903,71.152,1089.275,328.572,408.879,860.741,285.086,301.227,374.284,33,66,508,417,413,191,99.419,139.744 +66.2196,285.416,256.182,399.313,157.453,59,47,719,577,174,133,110,208,591.003,293.363,510.319,529.678,442.526,373.098,244.588,381.043,336.771,480.228,507.772,461.712,582.677,49,304.501,296.667,300.004,89.812,126.542,77.965,1062.388,681.461,1178.116,544.008,362.609,297.43,441.293,524.386,287.732,506.168,92.453,77.395,70.086,1090.901,330.948,413.702,864.999,282.498,303.452,375.953,33,65,506,408,418,187,98.196,138.471 +66.3864,288.219,255.008,399.17,157.906,58,48,716,578,172,134,109,206,587.769,295.868,509.976,519.98,443.383,363.006,241.803,379.557,337.795,478.459,501.423,454.677,578.595,49,304.982,300.612,302.875,90.746,123.497,80.117,1047.856,679.286,1165.707,532.511,364.842,298.964,439.75,527.935,280.967,508.349,90.106,75.851,70.953,1096.007,329.321,411.623,870.571,286.033,305.733,376.844,34,64,498,409,410,183,97.614,140.169 +66.5532,281.527,253.607,391.101,155.656,58,45,716,574,171,131,108,206,590.084,295.21,515.597,521.458,434.976,360.935,238.57,374.108,333.514,478.601,498.876,455.169,574.643,48.5,305.448,296.512,302.733,89.006,125.621,76.152,1054.244,674.516,1167.053,530.514,360.979,298.152,434.882,523.078,279.849,503.364,91.073,76.149,70.612,1094.494,332.405,410.449,867.092,287.886,306.044,382.57,33,64,499,404,403,187,98.02,141.64 +66.72,286.991,258.686,394.445,150.999,60,45,711,574,170,133,108,202,596.413,291.116,515.249,515.387,438.513,359.562,236.473,375,330.27,480.069,492.855,444.649,564.262,48,302.465,297.94,304.416,87.436,126.542,80.273,1053.624,676.433,1169.121,526.307,364.304,298.213,437.557,523.522,280.392,511.833,94.088,77.621,69.901,1094.791,325.87,411.666,873.683,293.33,309.487,382.401,33,63,495,406,404,185,97.187,140.16 +66.8868,287.687,256.242,395.069,150.384,58,46,717,567,171,129,107,202,588.395,291.37,512.623,512.878,432.104,357.451,234.889,370.004,328.734,475.069,493.444,446.09,560.966,49,308.375,300.853,302.154,88.497,122.633,78.885,1041.147,678.608,1159.052,527.727,356.187,297.561,440.518,522.151,276.936,507.301,93.96,76.772,69.873,1098.765,328.77,418.752,871.293,294.362,307.05,383.673,33,65,497,400,401,185,95.837,141.315 +67.0536,288.148,255.036,390.007,153.877,58,44,717,569,171,131,107,198,592.357,293.331,516.395,509.987,435.005,354.605,232.919,369.231,330.782,473.237,489.725,440.476,560.594,48,310.327,300.457,302.507,88.426,124.63,79.197,1041.362,673.393,1164.208,526.561,360.611,299.076,434.378,519.67,276.452,506.04,93.931,74.818,70.271,1100.745,330.311,413.985,877.671,293.669,313.483,383.716,33,63,489,394,394,186,95.738,139.518 +67.2204,287.417,258.474,389.627,153.118,58,46,715,568,170,132,107,196,594.653,293.807,516.867,504.638,426.602,350.706,232.738,368.087,320.554,470.505,485.383,439.193,555.832,47.5,312.575,297.12,306.905,89.416,123.61,77.171,1040.361,676.757,1143.937,526.188,360.881,295.777,432.977,520.454,274.131,493.648,90.874,76.758,68.266,1108.482,329.746,417.535,879.213,296.865,311.698,385.172,32,63,489,391,394,181,95.695,138.768 +67.3872,283.417,255.801,387.962,150.481,58,45,707,566,168,131,106,194,589.297,295.821,512.652,501.225,427.072,346.874,227.263,361.897,327.084,464.759,480.222,435.003,551.459,46,309.082,295.055,306.565,87.592,124.772,77.752,1032.274,672.516,1142.448,518.873,363.778,300.112,437.486,514.691,273.112,501.99,92.637,73.812,69.048,1115.031,331.273,414.862,882.664,302.479,319.335,384.352,31,61,485,387,392,180,96.377,139.235 +67.554,285.966,257.742,387.723,151.488,56,45,706,564,169,129,105,191,599.158,299.309,517.232,496.141,422.746,345.069,227.765,359.163,325.206,469.797,476.656,427.722,552.876,48.5,308.432,301.616,307.499,87.224,126.202,76.619,1043.01,675.989,1143.082,521.085,359.034,297.019,430.472,515.229,270.649,497.571,91.315,75.54,69.858,1108.242,330.113,421.001,884.955,297.275,319.972,387.124,33,64,479,383,381,182,95.368,138.754 +67.7208,287.284,253.183,388.351,149.475,57,43,716,570,170,129,104,189,597.235,294.162,514.964,498.362,422.069,343.608,225.145,356.054,315.348,462.806,474.585,422.514,544.194,46.5,308.361,304.048,307.131,90.265,122.888,77.171,1037.096,675.024,1138.126,517.514,356.035,299.627,429.411,512.578,270.437,493.577,90.874,75.455,70.868,1110.052,332.871,419.926,891.758,306.466,321.29,387.944,33,60,473,382,384,178,95.539,137.99 +67.8876,287.815,253.565,389.712,150.087,58,45,703,565,166,129,104,188,597.89,295.888,514.999,492.119,412.035,340.707,222.165,355.695,316.244,468.297,466.515,420.47,537.742,47.5,312.476,302.578,311.401,88.752,121.373,78.446,1025.691,678.947,1140.791,516.541,355.073,300.052,424.963,508.671,272.036,491.595,92.723,75.313,67.128,1112.456,332.801,422.203,887.317,307.117,324.393,390.022,32,63,468,379,381,181,97.5,139.362 +68.0544,282.171,254.996,388.682,146.368,57,43,707,557,169,129,105,188,603.509,297.023,520.588,493.211,413.747,341.89,221.789,348.54,316.628,463.499,464.445,418.653,533.884,47.5,308.05,302.281,307.937,87.266,121.84,76.01,1026.119,676.525,1138.447,516.352,356.796,297.986,431.798,513.795,268.951,488.932,93.917,75.611,67.427,1112.584,331.994,423.15,887.827,312.405,325.937,389.57,33,62,467,372,381,180,98.509,139.56 +68.2212,285.747,255.418,384.794,147.796,58,43,709,564,168,127,102,188,604.844,296.33,516.102,493.988,411.369,336.558,215.576,345.692,311.322,460.102,464.478,418.374,527.644,47.5,309.676,302.069,312.42,87.436,123.313,77.965,1032.991,674.018,1138.469,513.246,357.055,300.906,428.46,509.864,263.007,485.335,92.95,73.869,68.963,1120.023,333.494,422.613,890.684,315.842,332.001,386.572,33,62,460,375,377,177,97.015,142.376 +68.388,288.446,255.774,384.595,148.093,56,43,706,564,170,127,102,185,611.498,299.894,513.217,484.273,404.05,331.912,217.424,346.966,310.924,455.842,463.34,409.657,527.681,46,315.743,305.491,305.081,87.677,123.738,75.5,1030.241,672.444,1133.638,507.209,357.292,294.291,423.336,509.608,265.724,481.752,91.443,74.747,67.498,1119.5,332.588,430.901,895.591,316.874,331.619,396.64,32,60,463,370,369,175,98.552,140.71 +68.5548,287.721,256.057,386.172,143.144,57,42,702,553,168,126,101,185,606.741,299.323,513.74,485.893,406.808,330.672,211.358,345.576,309.515,456.975,462.696,409.764,522.651,47,313.508,303.497,310.666,88.794,123.426,78.418,1035.093,685.972,1133.806,506.356,364.438,295.292,422.979,517.578,260.756,474.557,91.685,75.88,66.247,1132.088,333.649,435.795,898.774,321.71,332.172,397.163,32,62,458,363,368,173,97.571,142.121 +68.7216,287.409,250.778,388.331,144.77,56,42,697,558,166,127,100,180,608.788,302.495,522.764,485.519,401.866,331.813,210.421,345.194,308.079,459.098,455.948,403.406,516.407,46.5,318.274,306.325,313.254,88.356,121.911,77.058,1042.921,689.545,1136.609,508.889,359.791,298.489,422.54,517.847,261.195,473.509,93.163,74.393,68.01,1130.504,334.158,429.812,907.543,324.694,341.254,398.153,32,61,452,363,366,176,95.908,143.593 +68.8884,288.105,253.24,385.745,145.237,56,42,704,560,164,126,102,183,616.047,303.743,519.157,481.996,406.211,329.104,210.179,344.585,305.219,454.201,449.5,401.663,511.789,46,317.948,310.086,310.313,87.606,122.463,75.614,1042.65,691.866,1141.853,509.385,360.393,300.12,428.47,515.922,256.709,473.495,93.263,75.766,68.749,1144.633,339.024,437.803,911.333,327.055,339.553,397.489,31,61,448,357,367,172,93.563,142.192 +69.0552,284.724,256.906,382.549,143.568,56,42,694,552,170,125,99,181,618.804,308.053,522.149,478.475,395.741,330.39,208.872,336.178,299.828,456.649,445.991,390.082,506.536,45,318.613,311.161,310.793,88.356,120.395,76.038,1043.477,688.996,1145.66,504.947,357.423,301.154,425.852,512.172,258.704,474.571,90.334,73.812,68.38,1141.055,339.448,436.771,920.583,330.859,342.784,402.989,31,59,447,358,359,175,98.054,141.117 +69.222,285.625,255.01,386.591,143.399,56,45,697,554,162,124,99,177,616.207,307.108,522.505,477.782,400.358,324.939,207.877,335.762,302.815,450.549,439.769,393.463,503.981,46.5,313.339,306.82,313.735,88.808,120.594,76.152,1049.09,698.742,1147.055,507.711,363.928,302.99,427.636,518.984,254.911,470.946,92.253,73.982,67.398,1150.276,341.018,441.82,920.088,335.129,351.724,406.666,31,62,445,350,355,174,98.808,144.909 +69.3888,288.057,260.568,384.355,143.3,56,42,697,554,163,125,101,175,619.468,308.971,524.277,482.662,399.329,325.805,203.769,334.022,299.159,447.167,437.069,389.531,501.055,45,316.704,306.028,313.735,89.784,122.831,77.171,1052.97,700.401,1148.449,504.067,363.537,307.653,422.756,510.386,256.751,464.785,92.922,74.322,68.593,1154.534,341.159,442.23,916.241,336.812,352.192,405.789,31,59,442,344,353,171,98.665,143.423 +69.5556,289.028,257.348,384.936,143.568,56,43,690,549,165,124,98,178,622.808,315.786,527.648,474.974,392.558,327.03,202.49,328.419,296.03,446.02,437.237,388.435,496.174,45,322.12,308.587,317.397,87.479,123.469,77.072,1056.933,702.105,1163.551,510.066,366.103,308.22,419.374,508.152,252.76,465.691,92.197,74.605,69.176,1156.995,344.936,443.828,922.139,337.151,354.969,408.207,31,59,438,346,355,171,97.997,144.583 +69.7224,287,261.487,392.345,143.766,56,43,685,550,163,125,100,175,629.374,312.318,534.951,476.554,391.508,319.704,202.533,333.031,295.959,446.94,425.753,385.811,495.05,44.5,320.14,313.395,319.773,87.139,121.854,75.217,1059.153,709.471,1164.155,509.015,365.52,307.116,422.524,507.75,249.943,461.768,89.182,75.073,67.74,1158.862,341.923,446.247,932.195,342.157,357.25,414.514,29,60,431,338,352,167,96.207,144.23 +69.8892,291.751,263.683,383.915,142.663,55,41,693,552,163,122,97,173,631.025,311.254,530.951,476.324,394.736,326.255,203.656,329.292,294.01,451.285,425.71,380.291,489.102,44.5,324.368,313.933,314.838,88.95,121.514,78.035,1073.778,710.64,1163.745,505.588,370.703,310.726,424.45,505.5,243.433,455.353,91.557,76.191,67.996,1166.542,344.031,451.607,924.034,343.514,366.361,417.978,31,58,430,338,346,167,96.931,143.084 +70.056,291.596,259.563,385.676,143.356,55,43,693,543,165,125,97,172,629.041,314.775,535.277,476.242,391.427,324.165,199.193,327.501,293.739,444.591,425.966,380.436,493.591,45,323.774,314.088,319.985,88.497,119.517,76.293,1072.557,706.183,1176.657,506.357,369.177,317.736,426.362,511.091,249.476,455.424,89.651,72.75,66.958,1173.614,350.551,447.619,932.987,348.393,368.103,417.936,30,60,429,335,341,169,96.562,143.975 +70.2228,290.202,265.873,387.979,140.669,55,41,686,544,163,121,96,169,629.712,315.905,533.29,476.559,390.371,320.991,201.31,321.824,286.086,442.935,417.366,371.638,482.426,44.5,326.419,314.682,317.114,88.822,121.189,76.223,1076.772,713.789,1183.083,505.119,370.59,313.756,423.814,516.287,241.82,451.628,89.125,74.464,67.114,1176.697,345.7,457.505,938.871,351.207,368.358,423.408,30,59,427,332,342,166,97.059,143.607 +70.3896,292.807,264.868,385.092,141.532,54,42,690,543,162,123,97,173,636.047,317.246,536.031,474.478,392.288,320.042,196.151,323.608,290.126,442.439,410.004,373.874,476.356,44.5,328.229,315.05,319.136,88.398,119.971,76.166,1083.067,722.323,1188.842,507.865,373.777,319.532,424.507,507.242,242.244,452.166,90.988,74.86,67.157,1181.039,354.257,457.604,945.886,355.477,376.605,426.166,30,59,423,329,334,169,96.96,144.329 +70.5564,292.949,262.301,390.178,140.401,54,42,680,540,160,122,96,171,636.271,322.432,543.806,475.336,392.134,323.472,198.709,323.254,281.15,444.237,412.09,364.953,477.151,44,328.158,316.69,319.659,88.356,120.551,77.228,1090.225,729.468,1195.618,505.929,376.057,312.722,423.941,508.348,239.852,445.736,89.907,75.922,67.228,1196.88,354.143,460.702,947.117,360.978,378.05,426.576,30,58,425,325,331,162,100.2,145.291 +70.7232,292.313,263.4,388.738,139.114,53,41,681,540,165,120,95,171,635.93,322.146,540.218,475.843,389.233,325.533,196.605,323.781,281.392,440.656,409.749,362.743,468,44,327.621,314.145,323.704,88.384,121.486,75.784,1089.969,731.605,1199.239,508.02,381.901,321.628,424.808,508.035,235.62,442.961,91.727,73.827,66.289,1199.383,356.901,461.607,954.571,360.511,381.266,432.218,30,58,415,323,329,166,99.22,147.201 +70.89,293.859,264.436,390.121,138.888,53,41,678,538,164,121,95,170,637.136,319.794,541.257,475.718,392.792,321.305,195.013,315.88,280.908,441.661,408.54,363.396,463.983,43,327.621,321.554,324.142,89.077,121.019,76.449,1096.952,731.548,1212.801,508.42,377.415,326.262,426.976,512.183,239.838,446.062,88.187,73.303,68.237,1199.963,358.768,465.313,961.006,362.01,384.596,436.248,30,56,414,323,329,163,99.514,146.239 +71.0568,296.907,265.844,395.293,139.383,54,43,678,538,160,120,97,173,639.75,319.25,545.77,473.855,391.252,321.685,196.221,318.244,280.026,434.669,402.626,360.466,460.834,43,330.845,322.544,326.815,89.218,121.203,75.415,1110.618,729.053,1216.605,510.991,383.86,323.427,427.91,519.381,236.286,441.743,91.045,73.742,68.479,1200.359,358.203,462.781,963.226,365.856,385.106,443.106,30,56,411,319,326,164,99.476,147.431 +71.2236,299.598,268.593,390.604,136.781,55,40,678,530,157,119,95,171,642.064,322.93,544.397,472.224,393.736,321.814,193.822,321.388,277.964,441.293,401.567,356.753,456.869,43.5,333.263,321.059,325.754,88.935,121.358,77.724,1107.19,737.305,1228.578,506.44,382.287,329.954,428.246,518.13,234.658,444.915,89.794,75.158,65.834,1211.575,361.696,474.464,961.741,372.997,391.751,442.328,29,58,413,316,324,164,100.328,148.531 +71.3904,299.083,269.664,390.465,138.831,54,40,676,531,159,120,96,170,648.537,322.794,546.957,478.773,395.156,324.053,194.417,319.591,275.503,439.864,394.539,349.801,455.254,42.5,328.78,326.348,325.627,88.497,123.426,76.959,1122.948,744.307,1228.246,510.761,383.816,333.14,424.794,524.343,233.865,438.712,89.893,72.878,65.92,1220.754,362.007,473.092,974.301,378.28,391.921,448.354,29,56,404,315,320,161,98.125,146.975 +71.5572,299.91,270.235,388.274,138.223,53,41,675,526,157,118,96,168,646.319,328.635,555.363,474.939,393.328,322.282,191.504,312.826,273.283,436.297,391.073,351.74,455.554,42,333.376,322.191,328.596,88.893,120.679,77.483,1137.86,741.752,1229.594,513.082,387.019,331.663,423.503,521.668,232.832,439.094,91.756,73.402,68.166,1223.357,364.751,472.823,980.651,375.543,396.536,452.566,29,55,406,313,319,158,98.154,146.607 +71.724,296.842,270.65,398.403,132.892,54,42,662,534,158,115,94,172,651.672,322.852,556.505,477.881,395.134,320.734,190.693,313.689,271.349,434.485,386.325,349.419,445.949,42,335.384,325.895,329.925,85.994,119.277,76.69,1129.997,740.897,1239.945,515.158,392.462,343.363,419.639,519.347,228.049,441.558,90.547,72.878,68.408,1228.463,369.475,478,982.858,376.25,402.42,456.172,29,55,398,312,321,161,99.603,150.357 +71.8908,306.295,270.556,397.424,136.3,53,41,670,530,158,117,94,175,655.98,322.227,556.025,479.939,397.102,325.738,192.086,316.067,269.585,436.014,380.832,350.621,441.848,43,335.822,332.358,331.976,86.432,119.985,74.976,1142.765,747.056,1246.375,515.616,396.71,341.713,426.829,511.804,232.521,438.429,88.713,70.811,68.038,1235.817,366.378,481.677,979.124,384.225,401.853,458.759,29,57,401,310,314,162,102.034,149.21 +72.0576,303.491,275.011,398.02,135.027,53,40,666,527,158,116,95,171,654.067,325.81,556.047,474.506,394.85,327.448,189.313,318.529,271.093,434.316,381.977,348.288,448.668,43,338.085,327.338,329.317,88.271,118.229,76.676,1151.596,752.687,1245.778,524.059,401.663,342.584,417.879,517.253,227.398,434.137,88.357,73.501,64.327,1245.364,369.772,481.719,986.578,391.182,407.634,458.038,29,57,393,308,315,163,99.078,149.225 +72.2244,308.036,271.107,394.359,135.098,54,39,666,518,157,114,93,169,659.477,324.236,558.081,481.877,392.629,328.051,191.928,316.364,267.963,431.457,383.081,342.52,439.076,42.5,337.505,331.538,338.198,88.058,122.208,75.486,1154.205,758.187,1257.824,520.898,403.696,351.099,421.655,517.96,224.1,429.435,87.078,72.637,65.977,1252.408,373.251,482.497,988.6,388.651,410.525,470.043,29,56,398,309,312,161,99.49,148.913 +72.3912,303.099,276.503,400.633,133.345,53,42,671,527,157,114,95,171,661.72,325.694,556.961,484.882,399.841,329.576,188.843,315.798,267.679,434.33,376.368,340.905,438.202,41.5,345.848,332.301,338.268,86.404,122.336,75.883,1164.756,750.723,1253.392,527.087,397.485,348.438,425.275,514.722,223.095,432.707,89.381,73.147,67.299,1259.098,374.694,489.979,1002.404,395.353,415.299,471.514,29,54,394,308,314,161,100.385,150.908 +72.558,307.438,275.959,402.791,133.514,53,41,668,521,156,113,93,170,661.477,325.074,560.247,479.651,400.765,332.173,189.655,316.134,270.182,431.287,374.821,337.011,437.732,41,344.688,334.507,340.573,89.049,116.713,75.982,1170.476,755.231,1258.276,523.86,405.418,352.765,428.387,518.456,221.708,426.858,90.249,74.025,67.654,1264.572,375.91,488.211,1007.256,393.416,416.745,475.657,28,54,395,300,309,158,100.139,151.064 +72.7248,311.134,276.248,403.631,136.95,53,41,670,516,156,116,94,171,653.904,325.729,559.862,487.289,397.898,336.968,191.217,316.52,265.701,430.607,373.295,335.035,433.004,42.5,348.492,330.83,336.967,88.596,118.965,76.293,1172.125,765.257,1262.387,529.582,411.135,354.516,430.571,524.653,221.666,429.053,88.983,72,66.815,1267.443,377.396,489.725,1008.26,396.866,421.817,477.425,28,57,397,302,308,160,102.261,152.065 +72.8916,308.021,279.748,405.757,133.543,53,40,662,521,156,113,92,173,657.425,328.038,559.367,486.159,409.026,333.494,192.299,316.519,265.957,433.438,368.372,337.138,434.508,42,348.322,335.058,340.616,87.323,122.973,78.29,1178.05,757.4,1273.258,532.348,412.214,357.639,430.898,524.329,218.807,427.608,88.94,72.326,65.905,1266.339,380.663,500.827,1019.716,407.048,425.019,489.727,30,54,399,298,308,157,100.072,153.738 +73.0584,311.238,279.644,406.357,136.512,52,39,651,514,154,113,94,172,663.141,328.257,562.465,492.901,409.545,341.671,191.418,313.859,261.547,436.269,364.741,337.327,430.243,41.5,343.062,336.713,346.017,86.672,119.815,75.741,1187.477,763.729,1287.743,533.663,416.814,360.396,429.623,520.791,218.453,423.006,89.139,73.133,66.019,1280.596,383.053,502.907,1018.938,400.628,430.177,491.367,29,54,391,300,304,158,100.509,151.743 +73.2252,309.045,279.736,408.632,134.971,55,39,656,513,154,114,92,173,658.179,323.076,561.287,493.422,410.598,335.439,189.203,317.496,259.755,434.061,367.24,336.359,426.121,42,349.595,334.846,341.973,88.384,119.73,76.874,1193.433,766.633,1285.009,535.03,416.175,360.252,426.806,526.828,215.976,420.839,90.448,70.91,66.289,1281.77,384.977,508.55,1015.855,405.634,430.729,489.798,29,55,390,300,305,156,98.736,155.013 +73.392,314.799,280.811,408.049,137.106,51,41,654,518,151,114,94,174,665.822,325.891,561.436,498.223,418.994,339.681,191.161,315.684,263.141,426.998,366.228,337.963,425.824,41.5,348.492,338.763,340.432,89.727,118.71,78.418,1187.603,767.674,1290.505,540.453,420.456,365.692,430.966,527.272,213.825,420.088,88.741,71.363,65.109,1277.725,384.34,505.962,1027.75,413.93,437.303,496.544,29,54,393,299,301,156,99.461,153.314 +73.5588,315.807,282.467,411.274,137.219,52,40,657,515,151,111,93,177,666.371,323.93,565.673,502.445,419.972,349.682,189.882,323.025,259.94,434.075,356.986,332.861,425.328,41.5,352.225,339.159,340.432,88.228,121.245,76.506,1204.969,764.373,1286.651,541.171,420.517,368.903,433.515,525.219,213.471,421.618,88.812,73.444,64.91,1293.085,392.232,506.782,1023.521,410.577,436.531,499.724,29,54,388,301,302,159,102.83,154.163 +73.7256,318.862,284.185,416.724,136.625,52,40,654,510,152,112,94,176,662.726,323.804,565.364,508.094,419.321,351.159,190.095,320.99,256.853,429.178,358.538,332.815,425.357,42,350.853,338.353,348.548,88.073,120.565,76.421,1202.164,769.29,1293.993,548.601,426.447,370.083,431.149,530.272,210.117,417.723,91.301,72.481,64.427,1298.969,388.852,513.189,1033.874,417.653,440.08,503.91,29,55,390,297,301,159,103.029,155.634 +73.8924,317.924,283.494,419.855,135.225,53,39,658,510,155,112,93,177,663.912,326.115,563.904,508.26,421.553,350.547,188.886,319.29,260.395,430.749,357.891,334.433,421.368,41,354.106,342.412,346.413,88.61,119.532,76.534,1197.541,768.144,1304.606,551.487,431.684,379.766,436.453,532.516,209.367,418.644,86.424,72.467,63.574,1306.536,392.048,517.856,1038.174,421.414,446.286,510.542,28,54,389,294,297,157,102.574,155.988 +74.0592,316.378,288.932,420.664,135.381,52,39,653,510,153,113,95,179,670.149,326.544,559.24,508.929,426.129,357.83,193.324,320.989,259.399,432.051,356.045,330.297,422.34,41.5,354.799,342.468,345.268,87.931,121.316,77.186,1220.906,768.438,1305.08,557.615,439.646,383.081,443.133,536.586,212.225,419.777,90.234,72.566,66.332,1308.87,393.336,515.919,1040.635,418.841,446.584,513.257,29,54,392,297,295,155,100.74,154.573 +74.226,322.754,288.451,418.647,133.288,51,39,656,512,155,112,94,176,671.719,329.299,567.276,514.195,424.17,358.796,191.703,322.827,257.024,432.249,355.063,338.569,422.811,42,355.59,347.05,341.393,88.935,120.056,75.968,1219.092,776.632,1308.668,561.995,435.525,381.48,439.029,536.43,209.041,413.233,89.594,70.881,66.716,1313.466,397.084,514.462,1042.077,425.289,449.871,526.86,29,55,388,296,295,154,100.624,154.276 +74.3928,326.775,290.813,427.185,136.413,50,38,655,511,155,113,95,181,665.641,330.771,563.575,517.031,424.473,360.355,190.665,328.125,256.825,431.91,354.53,331.952,415.868,42,355.732,346.102,346.046,86.333,118.937,74.778,1216.297,778.279,1310.557,562.807,442.959,385.714,437.868,538.751,205.347,420.06,90.32,72.326,64.896,1321.938,398.498,518.507,1042.374,427.707,450.367,527.666,30,54,389,297,293,155,102.204,154.003 +74.5596,324.566,295.29,427.316,133.429,51,39,647,508,153,110,93,180,668.638,330.094,564.959,523.489,434.834,366.483,190.011,330.234,255.957,433.396,351.866,333.994,417.281,41.5,360.738,344.929,349.411,89.812,118.427,75.345,1219.642,775.348,1309.222,564.668,451.401,391.968,436.707,537.522,204.922,419.607,87.035,71.887,64.512,1318.006,404.24,523.061,1052.968,427.367,457.678,533.591,28,55,391,292,294,158,102.716,157.12 +74.7264,327.241,298.758,428.119,134.08,54,38,650,504,149,109,94,183,664.224,330.123,565.753,527.427,437.336,364.901,194.36,330.489,259.542,432.235,351.046,330.58,412.752,41,359.833,350.259,345.89,90.392,117.988,76.038,1227.165,781.868,1323.271,567.37,453.315,391.689,437.443,536.699,202.771,420.131,90.106,72.977,67.683,1320.282,404.799,521.868,1052.532,430.521,458.216,531.045,28,54,391,295,295,156,103.398,155.323 +74.8932,327.002,296.189,430.202,136.357,53,38,646,510,151,110,94,187,677.63,330.321,561.7,525.315,439.925,370.335,193.664,332.013,256.184,435.731,346.704,333.229,419.275,40.5,361.529,351.504,354.572,86.559,118.894,76.152,1226.745,782.175,1328.281,575.677,452.754,393.264,439.486,535.471,205.191,418.233,89.552,73.77,64.213,1321.698,404.707,529.2,1053.746,429.616,464.139,540.619,28,53,390,295,288,154,101.721,157.927 +75.06,330.401,294.293,432.682,136.965,51,38,652,509,154,111,93,185,672.706,330.409,568.65,536.821,444.332,375.363,194.545,337.222,256.284,433.792,349.077,337.496,419.253,41,361.091,350.33,355.251,90.718,117.634,77.823,1239.466,783.478,1329.278,579.357,457.859,397.395,445.072,538.572,205.064,419.621,88.016,70.188,64.626,1331.358,401.921,528.888,1051.412,438.439,461.518,536.32,28,54,390,292,293,155,101.906,156.979 +75.2268,327.656,291.914,432.805,135.706,51,39,646,500,150,111,95,186,672.492,329.763,570.525,540.505,449.786,376.316,192.967,337.081,253.695,432.929,344.992,334.589,415.895,40.5,359.027,351.362,354.205,88.143,118.271,76.336,1243.194,776.908,1338.748,581.121,463.519,401.973,441.534,543.575,200.875,420.754,89.139,74.096,65.195,1327.483,406.461,533.358,1059.785,436.276,461.461,539.883,28,53,394,294,289,155,101.831,159.144 +75.3936,330.501,297.258,432.625,136.866,52,39,644,503,148,110,95,187,669.014,331,566.56,540.087,450.432,379.923,197.69,336.048,251.632,434.811,349.686,333.437,415.528,41,367.087,353.625,358.489,90.746,118.625,76.817,1236.665,786.951,1337.563,588.372,466.286,401.084,440.716,543.735,202.134,418.261,89.424,71.83,63.972,1330.354,409.148,530.204,1063.038,431.765,463.983,544.776,28,54,396,300,291,154,103.228,157.161 +75.5604,334.868,300.433,436.348,133.019,52,39,647,503,150,109,94,190,673.608,331.206,573.122,544.443,457.129,389.066,202.348,339.299,254.378,432.745,351.994,338.186,416.644,41,371.06,354.021,357.174,88.158,120.452,77.412,1229.197,791.367,1336.119,591.414,469.035,409.444,440.099,550.927,201.837,417.95,89.225,71.335,64.341,1326.79,412.387,526.314,1063.972,435.753,462.226,549.4,28,54,394,296,290,153,100.996,158.238 +75.7272,331.91,300.985,443.235,135.197,53,39,642,506,148,111,94,194,668.513,330.636,567.431,552.394,463.69,386.835,198.155,342.379,252.173,435.335,350.621,338.656,419.139,39.5,366.747,355.067,356.326,88.299,121.599,77.285,1252.673,785.943,1333.491,597.366,473.181,411.534,437.882,556.631,200.294,421.816,89.466,70.23,65.578,1348.599,413.915,536.809,1067.875,438.92,458.053,551.252,28,51,391,296,293,155,102.998,157.644 +75.894,334.486,302.003,443.999,136.441,52,38,642,506,152,110,94,193,669.267,328.295,571.684,555.327,468.519,391.32,200.657,343.044,253.923,441.109,347.906,339.149,414.282,40.5,364.046,358.461,359.423,86.262,119.347,75.727,1248.271,792.601,1336.205,601.539,472.872,417.288,442.496,560.113,201.186,415.698,89.324,73.827,64.882,1352.531,415.697,537.177,1072.543,439.533,462.68,553.883,28,53,397,298,287,157,103.569,159.122 +76.0608,335.071,302.993,447.188,135.437,53,38,642,505,150,110,95,194,670.808,334.054,566.703,563.61,471.351,398.727,199.918,346.668,254.008,437.91,352.944,343.748,415.344,41,368.274,362.378,361.077,87.111,117.804,75.982,1240.185,787.153,1344.653,606.448,476.262,416.403,438.264,552.963,196.997,420.371,88.471,72.241,65.436,1345.304,414.593,533.542,1066.504,435.569,460.267,552.086,29,53,396,299,287,156,103.683,157.375 +76.2276,342.146,299.643,446.293,138.789,51,38,646,501,152,111,95,196,676.356,324.929,567.053,564.036,473.609,403.178,199.804,349.763,249.641,444.902,350.607,340.254,409.799,40,369.575,357.683,361.473,88.511,120.452,75.585,1258.443,786.709,1351.677,605.193,479.217,419.247,438.864,557.381,198.936,419.876,88.741,72.92,64.185,1345.176,417.054,536.059,1068.583,438.355,466.803,558.294,29,51,397,300,287,155,103.157,155.62 +76.3944,336.682,304.53,446.792,139.086,51,38,636,507,152,111,95,196,674.968,329.302,566.464,569.018,474.562,406.52,202.213,351.285,251.96,437.854,347.392,341.796,414.749,40.5,369.024,357.485,361.572,87.238,119.234,76.846,1256.151,788.178,1344.654,610.852,487.434,421.352,441.203,563.009,197.435,417.666,88.414,73.076,64.37,1358.57,421.708,536.554,1083.858,438.227,468.786,561.532,28,53,400,299,283,159,101.75,158.026 +76.5612,337.018,301.317,448.807,133.868,51,39,649,504,150,111,95,199,669.076,329.106,570.402,576.216,482.763,414.069,205.035,353.515,256.142,440.161,347.213,345.14,417.691,39.5,369.222,361.261,362.717,88.016,119.716,76.704,1259.106,788.372,1353.084,614.347,485.341,425.13,446.738,579.169,196.954,421.094,89.694,70.414,65.237,1355.529,424.791,540.232,1078.766,438.595,469.041,564.063,28,51,405,298,285,155,101.252,158.422 +76.728,336.046,305.73,451.143,138.336,51,37,637,502,149,113,97,201,668.503,326.334,567.568,577.019,488.639,415.533,205.456,353.354,254.805,441.746,351.811,344.37,417.595,40,371.329,358.857,362.915,89.699,119.277,77.044,1266.492,796.061,1357.178,627.574,489.399,425.968,438.482,567.015,195.879,428.515,90.789,70.726,63.744,1358.683,425.173,545.974,1083.759,443.219,474.255,566.467,28,52,402,307,281,160,102.6,160.261 +76.8948,335.185,306.924,454.945,140.189,51,38,640,508,148,109,97,204,668.981,327.713,569.122,593.009,491.283,420.287,208.897,362.801,254.748,439.948,351.583,351.726,418.992,38.5,372.205,363.311,362.109,93.419,119.546,74.792,1260.652,798.434,1357.963,626.324,496.354,429.132,442.34,568.232,195.496,420.952,88.812,72.127,64.882,1365.826,427.719,541.434,1080.803,437.577,471.195,571.275,27,50,403,302,282,155,102.233,160.285 +77.0616,339.859,306.508,454.462,138.888,52,39,640,509,149,110,98,206,668.57,331.559,563.69,591.738,495.009,418.403,207.052,361.838,259.271,438.561,351.938,350.084,422.297,40.5,375.882,361.331,364.782,90.378,119.291,75.217,1259.961,800.08,1360.57,629.294,493.577,423.607,440.005,572.28,193.062,427.311,88.357,72.906,64.27,1373.025,428.808,540.543,1079.176,444.817,466.448,571.586,28,53,408,301,284,156,101.508,160.785 +77.2284,341.748,308.921,457.317,138.478,51,37,646,499,150,109,96,206,669.262,329.402,569.867,596.283,502.602,433.063,209.369,363.932,256.227,445.879,350.961,349.7,419.798,40,371.074,361.02,363.382,89.247,120.452,78.659,1273.153,789.632,1368.012,637.129,495.188,431.235,449.53,566.859,193.161,430.044,89.694,72.623,65.834,1376.024,429.982,542.183,1085.117,441.154,467.072,571.247,28,52,409,303,283,158,102.83,157.007 +77.3952,340.569,310.463,463.121,138.676,50,38,639,508,151,111,99,210,668.208,330.509,566.466,606.07,504.181,429.195,208.857,368.192,256.142,445.85,352.802,357.792,419.253,38.5,373.308,362.717,362.717,91.057,121.882,76.095,1265.443,796.958,1363.867,642.636,496.383,433.684,454.356,582.036,194.081,431.149,89.196,71.136,64.441,1364.652,428.808,539.411,1076.984,437.478,465.244,576.408,27,50,412,307,283,156,102.347,159.625 +77.562,344.332,308.114,459.114,139.821,51,39,643,507,148,111,100,207,670.517,333.677,571.42,606.57,509.498,442.138,214.56,370.202,256.213,450.662,358.047,347.505,421.51,39.5,372.488,361.232,367.567,90.76,118.498,77.016,1271.438,797.929,1363.856,643.087,503.902,436.361,456.39,577.332,192.864,431.39,89.011,72.227,66.503,1371.738,429.741,538.916,1075.796,443.7,463.062,573.241,28,51,407,308,279,159,102.347,159.002 +77.7288,339.325,308.893,459.723,142.805,51,39,641,508,153,112,100,210,673.002,328.252,565.372,617.007,523.198,442.556,214.059,368.461,259.044,447.266,356.683,356.124,422.453,40,371.088,366.012,364.4,88.03,118.512,75.302,1268.81,800.524,1376.099,656.364,504.34,439.551,458.038,570.242,193.6,428.925,89.779,72.609,63.716,1376.321,432.429,543.57,1077.521,434.183,465.131,578.953,29,51,411,309,285,159,100.74,159.087 +77.8956,335.511,312.463,462.219,140.57,51,38,638,504,147,113,99,210,670.393,325.442,564.679,620.601,527.969,447.351,216.706,375.448,258.347,450.096,357.015,359.119,426.87,39.5,375.331,361.812,367.822,89.077,121.387,77.341,1265.976,802.871,1371.733,657.107,504.497,432.992,454.574,578.17,193.444,429.237,88.67,72.722,63.844,1376.391,431.849,537.12,1084.466,443.841,462.439,575.899,28,51,415,316,283,159,102.02,158.606 +78.0624,334.295,314.308,460.362,139.029,52,39,636,506,148,111,102,215,667.22,325.428,565.802,620.32,534.672,452.443,218.54,380.136,258.773,451.214,358.368,360.352,429.676,38.5,370.579,367.327,366.224,92.344,119.886,77.058,1273.534,805.965,1371.599,656.957,506.357,441.274,456.896,577.101,193.742,428.685,90.021,70.442,64.867,1380.026,435.979,543.216,1083.872,437.28,463.147,579.943,27,50,418,317,282,158,102.219,159.554 +78.2292,341.771,312.137,463.667,140.768,51,40,636,510,147,110,101,216,667.015,326.086,566.823,635.896,532.996,458.497,214.603,384.78,258.674,454.215,359.164,364.911,430.604,39.5,376.193,366.563,364.994,92.174,120.976,75.996,1267.038,806.836,1376.623,667.482,509.676,438.896,457.699,582.442,196.247,426.943,89.893,71.618,63.844,1382.049,433.39,548.633,1086.885,433.123,461.844,578.275,27,52,420,315,285,158,100.314,157.375 +78.396,339.305,314.113,468.682,143.851,52,39,643,510,149,112,102,219,671.256,324.202,565.902,637.437,538.434,457.6,218.946,390.418,260.936,455.885,362.263,369.503,432.579,40,376.759,366.521,364.442,88.695,121.132,75.203,1277.701,806.624,1379.94,668.51,516.407,444.758,456.35,583.291,192.609,430.795,90.448,72.694,63.147,1379.333,438.256,545.21,1078.766,438.241,460.469,578.501,28,52,424,317,284,160,102.915,155.988 +78.5628,342.459,312.005,462.957,143.017,50,39,641,512,152,109,101,222,667.048,330.447,569.263,644.875,546.708,459.949,220.285,389.952,261.803,456.649,367.113,369.585,433.376,39.5,374.171,366.323,368.529,89.925,119.404,75.684,1276.618,808.836,1371.776,672.066,515.299,444.399,460.738,581.409,189.51,439.717,87.575,73.529,65.735,1375.911,438.143,542.509,1085.272,434.523,456.658,580.678,28,51,422,320,283,159,102.872,155.182 +78.7296,342.501,309.303,471.012,144.728,50,39,641,513,153,111,101,221,670.254,327.613,564.074,657.48,556.165,465.621,225.231,393.168,262.557,456.791,362.418,375.67,437.919,38.5,376.547,370.113,368.119,87.804,121.684,76.449,1270.5,800.718,1379.585,682.075,518.305,443.977,458.87,586.102,194.874,436.729,87.149,72.085,64.54,1375.713,436.12,544.8,1081.185,438.524,458.415,580.466,27,50,426,319,286,160,100.556,157.969 +78.8964,342.672,310.151,470.003,142.536,50,38,640,512,151,113,103,223,666.619,325.161,565.894,659.15,561.37,470.619,226.942,399.173,266.114,460.117,369.687,375.023,437.789,40.5,374.397,370.367,362.929,90.986,120.126,76.888,1275.043,802.432,1370.121,679.857,521.978,451.285,454.598,586.321,191.463,440.015,88.144,70.485,65.706,1378.598,439.529,541.179,1084.056,436.969,453.413,579.505,28,53,428,322,285,161,98.964,159.993 +79.0632,341.363,310.491,465.813,145.633,51,38,645,516,151,112,103,226,663.127,324.67,567.963,672.152,565.138,478.197,223.618,399.836,262.7,458.984,365.364,376.264,439.448,39.5,375.104,365.616,367.624,91,122.35,75.628,1270.849,799.983,1378.405,682.33,523.11,441.587,463.32,590.502,194.577,435.624,88.955,72.467,65.322,1382.233,437.393,550.373,1076.461,431.709,449.956,585.529,28,51,434,327,284,160,100.442,155.465 +79.23,342.685,316.801,470.672,144.883,51,39,641,515,150,111,103,226,671.638,323.377,557.648,672.708,571.536,486.867,227.273,402.84,267.792,462.579,372.247,379.258,443.107,39,377.848,366.238,366.648,88.992,120.509,75.84,1279.375,809.043,1379.694,690.891,521.959,448.566,462.089,582.334,194.364,437.31,90.476,71.193,65.152,1390.578,437.577,542.99,1075.598,430.394,451.104,576.663,27,51,430,333,285,161,101.565,156.101 +79.3968,341.819,314.226,472.845,147.443,50,37,643,517,152,113,107,229,663.893,321.688,556.354,678.654,573.767,487.235,232.455,406.703,260.765,466.415,371.029,381.964,446.147,40,374.015,371.569,366.917,90.859,122.52,77.384,1268.488,802.389,1382.763,692.226,522.322,449.19,461.583,593.476,197.039,434.987,88.67,74.039,65.052,1385.373,436.587,543.188,1079.473,427,454.193,581.668,28,52,435,331,288,161,101.579,154.488 +79.5636,339.205,314.397,472.859,145.802,51,40,635,520,149,112,106,233,663.131,320.1,562.911,679.191,580.992,488.861,231.576,413.68,265.758,465.948,375.84,380.66,444.323,37,376.858,364.994,367.808,89.133,117.676,76.067,1270.331,797.003,1386.621,703.276,525.032,445.634,463.168,586.928,192.822,442.153,88.898,71.618,66.773,1375.019,440.264,544.376,1069.318,426.222,450.565,580.834,26,48,440,332,286,164,100.158,160.941 +79.7304,339.993,315.036,467.694,147.528,52,41,638,519,151,114,107,231,666.605,320.299,560.586,690.166,583.054,497.855,232.344,415.546,270.595,465.849,375.519,389.078,448.583,40,378.71,370,367.171,89.671,120.58,75.84,1270.907,803.873,1374.719,699.309,523.934,444.786,466.443,592.037,199.898,449.277,89.58,71.887,65.82,1382.318,441.509,538.916,1067.14,426.293,447.222,579.222,29,51,443,332,283,163,100.016,155.946 +79.8972,344.402,313.83,474.278,150.709,52,38,649,520,152,113,106,233,667.368,321.707,560.282,696.993,587.524,501.664,232.298,413.573,269.272,469.684,382.487,392.783,452.102,38.5,375.062,364.782,367.384,89.841,120.82,76.86,1267.517,799.315,1376.614,696.297,523.039,447.039,469.662,591.783,196.629,443.47,91.031,74.549,62.408,1388.343,435.003,541.024,1069.205,421.471,444.699,574.16,27,50,452,340,286,162,97.358,156.88 +80.064,339.339,311.552,472.014,150.737,52,39,641,524,150,114,107,235,661.238,315.925,558.814,705.402,593.064,502.386,233.758,422.37,271.007,466.302,380.249,393.746,453.696,38.5,375.09,372.686,363.82,90.279,122.279,77.54,1271.635,799.281,1382.731,710.94,528.998,448.595,462.056,591.238,196.898,448.229,89.936,72.963,63.829,1384.835,436.898,537.162,1073.038,421.287,437.048,575.941,27,50,447,346,286,165,101.238,156.045 +80.2308,340.74,316.376,469.989,152.972,52,40,647,521,153,115,110,238,664.351,319.77,563.189,701.15,602.331,505.379,234.675,423.984,272.344,465.537,383.52,398.136,458.439,38.5,373.464,368.812,364.584,90.548,123.639,76.265,1267.597,793.25,1370.107,712.187,526.386,446.242,462.593,595.356,198.879,454.135,87.405,72.283,66.872,1379.376,439.302,537.389,1062.388,422.659,448.341,573.849,27,50,453,348,288,165,100.3,156.752 +80.3976,338.566,311.207,471.324,152.745,52,39,643,520,153,114,108,241,663.661,316.359,559.337,710.961,605.733,513.965,238.599,426.477,276.128,476.18,386.211,399.035,462.476,39,373.238,365.531,367.652,90.746,121.259,77.157,1258.991,790.519,1370.721,713.969,522.177,444.035,459.197,596.077,197.648,449.9,89.964,73.812,65.394,1372.657,438.906,534.701,1071.058,410.653,441.568,574.386,27,51,450,352,289,160,99.94,155.224 +80.5644,339.546,312.656,474.791,152.774,51,39,645,524,157,115,110,240,662.354,322.556,557.435,723.208,613.537,517.314,238.977,428.244,273.312,473.137,389.333,403.107,464.153,39,372.333,366.266,367.454,90.52,119.999,75.982,1268.167,797.275,1371.839,712.268,522.954,448.711,469.133,591.604,196.176,448.158,90.433,71.547,68.053,1373.775,438.44,534.786,1070.959,412.195,438.239,572.873,28,50,461,350,283,164,96.349,152.391 +80.7312,336.719,309.161,471.822,154.075,53,40,646,522,154,115,109,242,660.083,317.096,558.359,726.372,612.8,518.089,243.688,433.698,274.72,474.836,392.684,406.744,468.184,39.5,374.85,363.679,359.988,90.123,120.056,77.426,1269.989,794.933,1372.746,721.732,524.409,446.117,462.193,591.726,199.544,452.053,91.742,71.674,65.067,1369.178,438.864,537.148,1062.713,409.635,436.411,570.186,29,50,456,354,286,165,100.115,154.064 +80.898,340.441,305.582,477.433,153.127,53,39,651,524,152,116,109,246,657.135,318.257,561.809,725.942,620.943,521.114,244.968,435.653,275.033,476.308,392.374,409.31,469.895,39.5,377.225,365.743,363.057,90.01,120.707,77.455,1274.751,792.231,1372.025,722.735,524.715,446.667,466.187,598.981,198.808,456.996,91.429,72.212,65.749,1375.288,444.224,531.958,1061.992,411.742,431.183,565.888,28,51,459,357,291,164,101.565,152.72 +81.0648,334.716,311.665,471.055,153.396,52,37,649,524,152,118,113,244,661.391,314.889,558.265,734.581,624.858,528.941,245.029,435.412,279.813,477.143,401.535,414.098,470.195,38.5,370.608,365.05,364.075,89.544,123.044,74.58,1266.448,793.296,1378.863,720.481,526.93,447.021,463.456,598.901,201.144,457.619,90.035,72.651,64.427,1367.354,438.991,532.339,1058.159,404.828,428.405,566.326,27,50,466,359,291,165,98.992,150.427 +81.2316,332.372,307.879,471.239,155.178,51,41,651,530,155,115,111,248,659.391,311.818,550.988,741.128,629.337,532.24,247.199,442.661,277.835,481.714,402.515,419.139,475.072,38.5,373.238,364.273,369.83,87.252,122.293,78.503,1259.929,788.518,1382.244,729.226,534.523,445.253,459.848,598.095,197.167,457.42,89.609,71.802,65.792,1361.583,434.395,530.034,1049.856,405.464,425.402,562.381,27,50,465,363,289,167,98.708,154.007 +81.3984,332.036,308.473,469.741,153.283,53,40,650,532,154,117,114,247,665.11,314.419,556.871,742.936,635.624,530.23,246.485,443.977,281.178,481.87,399.949,421.269,477.729,39,371.979,362.279,359.507,90.138,122.336,77.186,1250.848,787.297,1373.423,728.78,524.554,452.223,465.976,594.471,202.205,467.207,89.708,72.312,66.304,1361.13,436.134,529.893,1062.218,400.812,424.268,561.999,28,50,468,366,294,168,99.044,150.243 +81.5652,332.176,306.021,469.266,156.45,52,39,652,530,154,117,110,249,653.089,316.47,559.674,751.136,639.532,541.055,244.712,447.148,281.164,479.69,404.339,421.972,475.114,40,373.266,360.412,361.968,88.794,120.084,76.492,1260.437,782.291,1370.477,726.126,525.684,444.177,466.174,593.409,200.025,463.057,88.528,72.665,68.209,1347.609,441.085,523.839,1050.634,401.632,420.06,560.401,29,51,467,370,293,165,97.628,151.937 +81.732,335.801,304.974,475.041,157.002,53,41,654,537,154,120,115,250,649.334,313.024,550.492,757.509,643.332,541.937,248.01,452.361,281.591,479.506,407.214,427.577,485.406,38.5,370.099,361.586,363.636,90.59,122.109,76.973,1254.659,777.911,1365.712,729.805,524.602,442.414,465.927,600.518,200.945,465.564,91.599,72.779,66.616,1356.237,436.361,524.49,1054.142,400.557,419.989,554.985,27,50,472,376,291,168,98.935,149.847 +81.8988,332.418,302.417,472.865,155.941,52,39,658,533,153,120,114,254,649.702,312.742,556.424,764.478,646.471,544.534,248.042,452.205,285.46,487.729,409.94,430.597,487.646,39,372.347,364.032,361.02,90.972,123.766,76.732,1250.447,779.112,1362.459,732.468,526.987,441.443,466.965,598.356,205.121,468.85,93.149,73.034,66.46,1349.235,432.598,521.802,1050.578,399.27,419.564,553.628,28,50,480,380,294,169,99.386,151.276 +82.0656,330.345,300.838,471.744,155.531,53,41,656,535,157,120,112,254,648.582,313.143,558.58,764.882,653.105,550.827,247.782,454.363,288.22,483.71,413.092,427.478,484.811,38,368.784,360.893,361.473,88.978,120.098,76.846,1263.968,773.351,1360.917,731.505,522.644,448.991,465.339,604.611,202.516,473.948,89.836,73.303,65.408,1340.367,432.669,520.699,1045.415,392.78,414.308,551.04,27,49,480,380,294,169,100.115,151.271 +82.2324,331.08,300.171,470.684,154.725,52,40,653,541,158,120,113,254,644.13,311.649,554.08,776.431,656.545,552.125,252.189,457.451,283.696,488.989,415.711,431.05,489.654,38,367.412,362.675,360.257,88.822,120.792,77.936,1256.652,774.391,1370.23,735.351,524.044,439.307,463.879,594.741,203.578,474.5,89.865,71.32,66.275,1344.639,436.134,522.623,1046.745,393.6,412.437,549.47,28,48,481,384,300,171,100.001,152.196 +82.3992,335.119,301.489,472.71,154.64,53,41,658,539,158,121,114,251,648.504,311.378,549.786,769.944,662.006,554.802,252.388,453.673,287.964,490.121,419.168,436.219,491.764,38,369.703,361.176,361.317,86.078,121.543,74.721,1246.14,767.848,1366.552,739.845,520.581,441.528,458.703,604.618,207.838,472.504,90.945,72.68,65.777,1335.219,429.798,513.613,1042.29,384.96,409.419,549.513,27,49,485,385,292,168,97.821,149.38 +82.566,328.44,301.288,470.821,157.454,53,41,657,543,160,121,116,252,645.007,312.78,544.302,784.121,670.91,552.663,247.952,461.112,288.476,493.136,425.866,436.474,498.225,38.5,369.095,355.59,357.697,88.78,120.31,76.152,1248.719,765.915,1362.285,744.283,525.474,438.301,462.078,604.492,208.178,475.874,90.405,71.49,66.218,1334.399,431.311,516.88,1022.8,387.817,405.565,542.895,27,50,483,388,294,168,98.225,148.99 +82.7328,324.476,302.925,467.183,158.642,51,40,662,548,159,122,115,253,640.528,311.574,546.221,790.244,668.581,561.402,258.328,460.754,291.392,492.329,418.502,441.481,499.129,38,365.828,356.043,352.904,87.634,121.104,78.899,1249.431,773.559,1364.84,735.226,520.075,435.044,461.065,604.747,204.498,480.321,91.159,72.17,66.119,1328.515,428.2,515.664,1022.503,387.11,404.758,538.455,28,48,493,394,301,166,, +82.8996,326.246,299.283,460.704,160.466,50,41,661,548,156,123,119,253,644.52,310.691,548.441,789.488,675.942,562.037,257.136,463.811,290.411,491.183,427.917,442.167,502.015,38.5,361.515,355.916,358.065,89.614,122.491,76.832,1254.201,762.445,1361.587,733.553,516.361,432.875,456.097,607.195,210.867,482.97,93.931,75.143,65.664,1323.551,429.572,512.354,1027.17,383.9,402.718,529.094,28,49,488,393,300,166,, +83.0664,327.13,300.756,468.824,158.189,53,39,662,545,157,127,118,256,644.733,309.107,548.218,793.454,678.307,567.704,257.364,466.132,295.646,498.287,431.772,449.571,505.148,37.5,364.669,358.447,356.001,88.653,122.067,77.072,1246.547,765.17,1356.414,736.918,516.606,427.386,458.957,607.846,209.055,485.646,91.5,72.807,67.327,1325.432,429.741,509.37,1022.361,379.134,399.374,535.641,27,48,496,395,296,165,, +83.2332,324.175,296.91,462.275,158.317,52,40,659,547,157,125,118,255,641.024,305.441,549.185,797.809,679.559,561.388,253.982,466.132,291.89,487.574,432.952,449.376,505.339,38,359.889,355.364,357.457,88.582,121.16,76.902,1255.345,755.725,1362.287,737.544,520.858,431.759,460.244,607.662,212.367,483.692,89.395,73.501,66.83,1321.641,423.009,510.841,1020.537,380.195,399.26,525.757,27,49,494,393,300,169,, +83.4,318.467,299.428,462.276,159.787,52,42,670,546,165,124,114,253,638.848,309.995,547.401,803.129,687.664,566.697,255.817,470.749,293.839,495.301,432.296,451.07,506.848,38.5,361.162,356.198,360.653,89.303,121.344,76.591,1259.89,756.923,1348.022,740.9,514.538,429.961,459.41,603.648,210.937,484.782,91.301,74.407,68.252,1311.458,424.098,506.584,1025.105,373.11,387.699,520.963,28,49,500,400,297,167,, +83.5668,321.578,295.92,465.824,156.521,52,40,667,551,158,120,116,259,635.474,308.885,547.814,805.236,689.756,571.591,259.481,468.821,295.589,499.391,435.767,451.076,513.302,39,362.038,359.041,350.387,88.44,122.931,75.741,1251.561,759.181,1351.991,733.354,510.358,429.189,456.769,606.234,213.018,491.849,89.822,72.991,68.181,1305.857,422.457,504.321,1018.486,371.866,394.443,524.753,28,50,501,404,295,172,, +83.7336,323.706,292.072,469.194,163.124,52,40,671,560,159,124,118,256,636.732,310.106,542.95,810.336,688.104,576.485,257.437,466.089,293.512,498.783,440.737,457.364,515.742,39,360.031,353.455,351.956,89.119,123.582,76.123,1266.184,756.101,1356.614,737.686,511.465,428.703,459.54,601.817,211.022,492.317,91.144,73.189,66.588,1308.544,425.272,501.266,1015.332,369.335,393.522,518.828,28,50,502,405,302,168,, +83.9004,317.995,293.014,464.889,162.573,52,41,673,553,161,124,118,259,635.562,303.927,546.65,819.453,690.849,577.682,255.133,472.162,299.088,501.557,440.604,455.905,518.804,38.5,354.219,348.506,351.504,89.727,120.707,77.37,1253.599,750.057,1340.604,739.776,512.084,425.444,459.86,602.921,216.556,489.343,91.343,71.83,67.086,1298.078,423.32,508.507,1014.172,366.054,386.608,514.925,27,50,508,404,299,165,, +84.0672,316.335,293.014,461.86,158.232,53,40,670,556,159,126,117,255,634.97,305.241,541.456,819.697,693.153,576.258,261.189,466.593,299.088,497,440.1,459.627,520.146,38,357.118,351.108,346.866,84.537,121.656,77.398,1249.495,748.676,1333.467,734.782,511.785,420.371,459.223,606.927,215.297,495.447,90.234,71.802,67.541,1294.839,419.006,503.373,1014.497,365.107,385.63,506.611,28,48,512,413,300,167,, +84.234,316.418,288.182,458.926,162.149,54,39,670,553,159,125,118,259,631.095,308.811,543.767,815.278,698.555,584.17,257.238,473.483,299.771,503.425,446.431,460.89,519.115,39.5,356.057,351.829,348.435,87.479,123.341,75.897,1257.743,753.478,1332.302,739.72,508.236,423.165,454.623,616.837,217.278,491.977,90.32,72.878,66.759,1287.131,423.221,492.921,1002.687,365.885,376.647,510.344,29,50,514,411,298,171,, +84.4008,311.858,289.215,459.945,163.025,55,42,673,557,161,125,116,256,629.328,301.813,542.115,825.336,701.468,582.193,257.552,472.125,295.276,500.948,445.34,462.144,519.891,38.5,355.124,351.377,344.66,87.79,120.622,76.109,1250.29,749.398,1334.555,737.713,505.303,422.654,456.659,608.627,216.047,498.095,92.481,73.841,65.28,1284.854,417.069,496.768,1000.269,365.828,380.09,504.051,28,49,510,413,302,171,, +84.5676,314.334,282.636,458.782,164.213,52,40,677,554,160,125,120,253,625.947,305.862,544.948,822.601,700.077,582.277,258.405,472.436,298.121,503.298,446.799,462.264,527.799,39,351.49,346.187,349.637,88.794,119.22,76.676,1253.313,747.751,1331.877,733.463,498.732,417.194,456.956,606.403,216.825,501.537,91.557,70.839,67.598,1279.521,415.202,495.623,997.412,360.13,378.815,499.243,27,51,521,410,304,170,, +84.7344,314.884,286.47,454.888,160.282,52,41,678,559,165,126,119,258,629.788,300.873,535.995,830.528,703.073,581.532,255.831,468.113,298.761,503.34,448.427,460.801,524.508,37.5,356.382,349.171,346.484,88.285,123.511,78.149,1251.968,744.84,1325.704,729.33,503.207,418.539,456.198,602.666,220.647,495.291,91.4,73.501,67.185,1286.466,417.097,492.596,994.3,356.396,375.754,499.795,27,48,519,420,300,169,, +84.9012,310.821,285.225,451.265,165.577,54,41,682,551,165,124,120,258,631.086,299.556,536.195,833.359,705.082,581.862,257.778,471.866,302.132,500.269,453.941,460.919,528.549,37.5,353.427,344.434,344.886,89.247,119.786,77.738,1260.852,749.631,1326,725.913,496.566,413.947,457.194,605.412,219.26,495.673,92.908,72.708,65.607,1279.62,413.745,489.187,992.433,353.851,373.006,490.547,27,48,521,414,303,166,, +85.068,308.164,282.574,451.649,164.015,54,40,680,561,165,127,121,258,628.286,302.944,532.619,833.945,705.697,584.911,258.858,474.585,304.579,499.42,454.361,465.709,526.25,39,351.645,348.223,345.098,88.341,123.27,76.761,1251.138,744.507,1326.674,726.178,493.819,414.547,452.279,595.427,218.75,501.452,89.993,71.462,66.844,1271.191,411.27,487.391,989.76,353.95,373.119,491.466,28,50,524,426,303,169,, +85.2348,306.444,284.055,454.65,160.989,54,41,684,564,162,129,120,255,627.235,302.928,536.422,836.961,708.954,584.104,258.999,474.243,300.824,500.665,462.54,467.419,525.551,38,351.32,345.692,351.094,88.271,122.222,75.458,1239.38,737.992,1321.116,724.315,490.466,408.149,455.076,593.976,220.661,502.896,89.808,71.83,66.688,1266.735,406.956,486.811,992.32,351.716,370.229,488.002,28,48,525,421,305,169,, +85.4016,311.062,280.684,450.845,164.312,54,39,681,561,163,127,118,256,629.812,299.313,534.436,835.965,712.575,582.032,260.449,475.006,304.892,506.723,458.78,474.025,530.102,37.5,347.304,349.284,340.63,87.38,122.676,79.352,1235.362,744.02,1326.453,724.505,489.994,414.697,458.447,586.631,220.349,498.931,94.273,74.067,67.612,1267.584,414.537,485.722,982.547,350.019,368.004,482.232,28,47,518,425,307,169,, +85.5684,301.679,278.342,445.047,161.852,51,40,687,560,162,128,123,256,617.953,305.788,531.868,835.443,716.36,577.842,256.042,478.02,306.329,508.11,456.614,473.707,533.867,37.5,345.027,341.549,343.302,87.818,122.123,78.63,1235.609,745.768,1315.559,723.459,482.945,402.527,454.201,592.882,219.076,499.78,91.244,73.147,66.602,1258.659,409.954,485.68,980.199,350.189,364.788,475.106,27,48,523,425,307,173,, +85.7352,306.144,278.632,445.382,164.793,55,40,688,564,162,127,121,254,625.31,302.515,529.877,848.535,712.681,585.586,256.482,465.929,302.061,501.146,460.692,472.964,531.136,39,352.253,342.03,337.363,88.44,120.48,75.684,1218.249,740.092,1319.984,720.133,483.738,412.135,449.29,588.541,219.698,497.16,92.481,73.204,67.313,1257.118,405.216,481.422,977.398,348.124,363.994,475.021,29,49,527,424,306,170,, +85.902,307.41,275.351,440.844,157.836,54,42,681,570,164,127,121,254,620.236,298.247,536.258,839.023,712.049,589.947,258.672,469.845,304.593,500.085,462.753,468.694,532.849,38,347.856,340.036,339.626,89.473,124.942,76.393,1227.265,738.227,1314.084,719.258,484.258,407.575,454.34,589.05,221.68,499.596,91.528,73.784,66.56,1259.989,407.069,483.501,976.819,344.448,364.816,475.205,27,49,526,427,310,168,, +86.0688,301.502,273.964,445.341,161.951,53,42,693,565,162,128,123,253,619.404,297.522,529.933,848.87,716.46,584.944,256.312,466.932,306.571,508.124,468.51,470.574,535.881,38.5,345.381,341.761,340.46,87.79,122.024,75.316,1226.18,730.671,1311.262,721.98,483.433,401.543,450.77,582.787,224.468,502.797,90.903,74.025,67.782,1249.975,405.4,481.479,973.014,348.761,360.211,468.615,28,49,535,426,306,169,, +86.2356,301.942,271.899,437.783,162.446,53,41,692,562,161,131,122,249,619.876,298.735,528.932,842.485,710.775,581.47,253.184,466.04,305.219,508.832,468.636,471.767,532.806,37.5,349.114,341.521,336.614,89.43,121.344,75.16,1217.21,732.811,1309.541,715.966,479.122,402.816,455.418,588.594,223.152,500.616,90.775,73.784,67.214,1248.872,404.184,479.527,970.129,340.262,360.452,463.313,27,48,534,427,309,167,, +86.4024,297.861,271.319,437.911,163.709,54,41,698,569,162,132,121,253,617.3,297.943,529.477,847.945,717.339,583.639,249.943,466.528,307.012,503.496,468.496,474.633,535.031,38,350.415,341.605,337.901,84.791,120.636,75.288,1211.968,733.974,1309.446,714.722,472.51,405.254,449.827,587.18,221.609,499.256,91.585,73.812,66.688,1245.435,399.799,485.255,958.163,340.955,359.772,459.99,27,49,534,429,303,168,, +86.5692,298.174,269.579,436.078,161.894,53,41,690,569,165,132,120,252,612.807,295.902,531.724,845.997,710.087,578.651,255.092,465.691,305.674,508.449,464.69,468.892,529.44,37,345.749,337.957,339.711,84.947,122.817,76.69,1212.358,730.853,1322.723,712.135,474.795,395.02,451.161,586.642,223.095,495.673,89.779,75.044,67.455,1237.034,398.357,472.342,962.067,343.599,360.962,458.123,27,47,533,426,307,170,, +86.736,297.296,271.383,433.034,162.092,55,41,700,565,164,130,121,248,614.079,302.241,524.062,850.973,717.559,582.326,254.052,462.437,307.495,502.831,474.076,465.511,537.24,37,341.125,337.024,337.01,85.23,121.783,74.098,1216.714,729.873,1304.235,706.793,471.199,401.578,445.893,591.781,227.482,496.481,91.315,76.304,66.972,1239.947,394.495,480.135,958.701,338.537,358.554,455.351,28,46,535,432,307,169,, +86.9028,294.853,267.261,430.978,163.733,55,41,700,566,164,130,122,247,614.89,296.072,526.593,850.52,717.282,583.32,249.929,459.167,306.542,508.35,472.837,471.47,535.663,37.5,342.001,340.729,333.574,87.521,122.562,75.005,1202.707,727.758,1308.702,701.101,468.496,396.276,447.167,584.671,225.133,495.744,89.566,74.662,67.64,1235.676,395.132,476.26,963.41,337.547,353.892,454.63,28,47,532,433,308,169,, +87.0696,301.416,267.301,431.689,163.365,53,40,696,567,164,132,123,243,612.41,301.942,524.282,846.046,714.623,580.772,254.45,461.716,306.884,510.997,470.535,472.88,530.655,37,341.224,338.65,331.297,85.428,119.985,75.628,1211.318,720.355,1303.101,700.574,462.236,390.619,450.821,580.573,222.147,498.279,91.386,74.619,66.09,1229.509,395.16,468.212,956.013,337.604,355.791,447.362,26,48,534,433,307,169,, +87.2364,294.384,263.949,429.686,161.64,55,41,700,571,167,132,119,245,614.767,296.917,522.773,854.509,720.026,581.116,248.308,454.659,305.347,506.723,471.677,470.407,534.687,37,341.351,333.644,336.741,86.446,120.778,75.387,1205.144,728.136,1300.11,704.442,465.82,388.408,449.884,582.711,226.945,500.701,93.121,74.747,66.531,1224.616,395.004,473.389,955.886,335.921,350.945,448.932,27,47,530,433,311,169,, +87.4032,291.998,263.171,428.961,164.595,53,40,697,572,166,131,120,242,612.528,297.665,520.932,845.458,712.073,576.782,253.611,456.665,309.914,503.85,470.677,467.519,528.587,37,337.788,338.735,334.988,86.064,120.636,75.84,1201.892,727.014,1289.915,697.18,463.165,388.493,451.579,578.758,227.298,498.817,90.22,76.262,67.74,1230.075,390.436,471.79,953.425,335.157,351.03,445.524,27,47,534,432,310,166,, +87.57,291.093,264.187,422.391,161.272,52,41,707,573,165,133,123,244,610.745,301.149,519.844,855.25,716.337,573.225,251.237,458.513,306.67,506.072,473.247,472.688,531.448,38.5,340.347,333.206,334.663,85.654,121.557,73.574,1202.416,724.59,1301.322,694.601,457.26,384.314,446.006,578.673,226.053,492.997,90.021,72.411,67.327,1222.508,391.737,467.378,953.694,335.723,356.938,434.721,28,49,526,431,310,164,, +87.7368,288.776,261.771,422.789,161.131,55,42,700,570,168,134,121,237,617.396,296.14,521.554,850.809,713.656,574.836,249.076,449.886,311.905,507.784,471.045,465.878,531.292,38,340.404,331.226,335.37,88.186,121.882,74.339,1193.54,726.588,1289.787,697.304,457.326,389.105,449.808,573.554,226.662,498.336,89.95,74.35,66.787,1222.551,387.282,467.307,955.278,331.142,352.504,433.49,28,48,532,426,311,170,, +87.9036,289.89,263.765,424.568,161.583,53,42,705,570,166,132,121,239,611.822,298.371,515.128,847.707,712.959,571.238,249.204,445.242,305.817,507.43,467.859,467.122,528.153,36.5,337.42,331.226,334.139,86.036,119.234,77.341,1190.223,722.233,1287.597,687.777,457.171,384.155,444.492,569.775,227.681,492.274,91.301,72.793,66.943,1218.506,389.248,464.973,948.446,338.198,350.336,429.474,27,46,531,433,307,166,, +88.0704,288.412,260.31,416.44,160.593,55,42,710,570,165,132,119,236,607.714,293.901,523.303,838.352,703.745,568.055,246.132,449.787,309.188,506.977,466.145,467.66,528.601,37,340.799,335.073,333.517,86.757,120.339,74.183,1193.519,722.482,1291.554,690.294,454.673,384.409,450.756,570.567,230.228,497.727,92.012,74.846,65.223,1221.801,380.691,470.956,947.315,333.517,350.251,433.731,26,48,529,436,308,165,, +88.2372,289.586,261.163,420.401,162.916,55,42,715,573,166,134,118,238,608.029,297.833,518.592,842.478,713.187,568.085,243.617,447.082,307.154,507.345,471.055,463.581,526.838,36,337.491,330.237,332.471,85.286,118.257,74.226,1187.303,723.944,1286.064,687.493,447.861,383.885,454.385,577.349,228.388,492.543,91.386,73.487,65.735,1214.998,383.053,467.264,949.776,334.45,351.639,432.26,27,45,528,430,311,167,, +88.404,283.524,259.836,416.455,164.92,54,43,709,571,166,134,122,234,609.231,299.125,513.01,844.595,707.521,568.115,241.302,445.978,308.491,500.991,466.527,467.137,532.595,36,337.264,332.541,334.069,86.969,120.523,73.914,1184.056,721.221,1279.236,680.981,451.214,383.365,448.597,572.336,223.888,494.569,91.144,71.108,66.801,1216.483,383.732,462.427,951.982,330.138,352.362,429.474,26,46,529,430,309,167,, +88.5708,287.076,255.036,416.185,158.798,54,41,717,574,166,131,118,232,602.994,298.549,517.182,844.255,700.657,562.973,238.722,441.927,309.928,509.199,471.112,459.927,527.007,35.5,337.137,330.364,336.755,87.436,119.489,75.953,1183.097,722.19,1283.875,682.361,451.763,377.5,448.918,573.115,227.95,488.705,92.253,73.402,65.621,1217.431,380.422,469.952,946.452,336.487,353.793,425.656,26,45,522,424,309,168,, +88.7376,288.682,258.221,415.957,162.531,54,41,705,573,166,134,118,231,609.541,296.818,512.745,845.012,696.432,561.798,238.656,441.728,306.315,503.213,462.476,457.123,519.481,36,337.872,331.594,332.683,86.757,120.41,72.54,1179.035,722.039,1278.151,677.513,449.67,382.371,449.668,571.077,230.115,488.748,91.372,72.92,66.119,1197.799,380.139,464.45,936.509,333.772,349.188,424.03,27,45,524,424,305,162,, +88.9044,286.812,253.341,415.394,157.539,54,41,717,576,168,134,118,233,612.072,300.778,511.206,842.669,700.403,560.099,238.651,436.361,304.238,505.944,462.328,456.217,522.849,37,334.111,325.994,329.756,84.692,118.229,74.877,1169.157,723.939,1270.036,675.062,451.763,376.736,454.948,571.825,226.11,490.023,90.846,72.439,66.048,1196.739,375.571,463.219,949.691,331.311,352.589,421.315,27,47,528,419,307,163,, +89.0712,283.949,252.476,412.917,159.151,54,41,710,573,169,135,116,230,606.195,299.064,511.5,842.081,693.195,555.54,235.01,434.663,305.703,502.533,461.91,451.989,516.974,37,333.164,332.146,332.442,86.616,117.025,73.489,1172.844,714.359,1273.853,671.639,448.851,379.14,445.566,572.798,228.289,491.552,92.268,74.124,65.095,1206.37,378.046,464.464,944.316,334.267,353.708,417.752,27,47,522,426,310,161,, +89.238,287.65,251.684,408.916,159.377,55,42,716,573,170,133,118,227,604.795,295.9,507.156,845.02,691.267,553.046,234.874,431.301,303.683,501.415,458.552,454.177,518.45,37.5,333.574,329.035,332.329,86.602,119.149,71.747,1167.44,719.107,1271.874,665.477,445.818,378.916,455.377,572.999,229.648,487.912,93.092,72.807,66.503,1206.13,378.159,464.549,947.188,334.677,355.309,414.146,27,48,525,421,309,162,, +89.4048,278.644,253.24,403.915,158.486,55,41,715,578,171,135,117,229,604.697,297.963,512.53,845.26,689.015,554.862,235.241,432.99,304.963,503.623,461.018,448.864,514.226,37,334.705,328.017,325.556,85.711,117.464,73.05,1167.831,725.243,1263.074,666.074,444.953,374.825,457.52,571.728,227.582,487.516,91.699,73.926,67.811,1209.213,377.325,464.351,941.954,331.17,348.905,416.508,27,47,521,423,313,160,, +89.5716,282.829,253.735,412.777,154.98,54,41,718,580,170,135,116,222,599.897,300.806,508.308,841.126,687.317,547.218,231.278,421.564,303.839,500.425,459.075,450.056,508.564,37,336.374,331.566,329.883,86.135,120.339,72.427,1160.687,718.076,1264.219,667.464,444.828,376.265,454.198,575.659,226.124,484.202,89.993,72.637,65.777,1201.972,376.731,462.102,936.693,331.877,348.466,415.885,27,47,523,420,308,162,, +89.7384,280.588,249.299,404.832,156.62,54,41,713,576,167,137,117,223,600.595,296.465,513.747,837.285,683.186,545.722,233.716,423.79,301.322,502.264,456.826,444.111,512.682,38,336.43,334.323,330.293,86.885,119.971,71.96,1167.129,716.294,1276.084,652.993,441.36,372.992,452.704,575.025,227.44,481.723,89.296,74.308,66.048,1197.375,371.356,468.396,934.84,335.186,352.22,409.451,27,49,521,413,309,162,, +89.9052,279.169,251.502,399.824,157.935,55,42,713,570,169,137,116,220,607.743,300.869,513.433,835.103,679.49,543.453,233.033,424.341,306.77,497.552,450.999,446.416,508.324,36,329.827,325.839,328.653,86.687,118.554,72.54,1158.609,717.369,1270.13,658.323,439.321,366.833,446.214,563.072,227.624,481.865,91.997,75.172,65.379,1199.228,374.807,459.344,943.171,331.962,357.363,411.106,26,46,517,415,309,163,, +90.072,277.805,249.582,404.839,156.111,54,40,714,575,168,136,114,220,602.336,301.513,514.169,839.243,682.219,544.572,227.97,420.11,303.583,500.609,453.2,444.111,506.734,37,331.424,324.481,324.595,86.602,118.441,74.934,1157.59,721.983,1255.453,657.916,438.947,377.298,445.352,566.803,223.038,478.65,91.215,73.345,64.711,1197.304,372.827,463.389,943.836,337.663,359.744,404.539,25,49,518,412,312,159,, +90.2388,275.93,246.018,402.921,157.482,56,41,712,574,168,136,115,221,608.802,298.068,515.414,822.435,683.442,535.485,227.856,420.322,302.289,495.768,451.551,437.126,503.727,37.5,334.309,326.461,324.227,84.834,117.067,71.606,1154.256,721.683,1263.865,654.814,438.471,370.774,436.651,565.07,224.468,481.893,89.324,72.453,65.123,1206.384,370.946,466.656,951.134,334.499,353.439,403.101,28,47,515,414,302,162,, +90.4056,274.706,248.071,397.2,156.365,54,40,716,573,167,135,115,216,598.108,303.245,513.282,828.592,682.744,534.364,226.083,419.95,301.08,501.458,451.911,436.94,494.682,36,332.344,326.673,331.241,84.127,116.685,72.356,1149.903,728.704,1245.828,649.713,432.506,368.941,437.458,563.88,223.279,475.223,93.064,72.312,66.289,1196.215,370.055,466.727,942.831,339.937,356.957,410.498,26,46,519,407,306,160,, +90.5724,273.785,243.988,401.316,158.062,54,41,718,578,167,137,113,213,609.017,300.409,508.588,824.971,674.778,535.027,224.386,413.007,304.081,494.325,451.452,436.148,494.067,36,334.945,325.91,326.659,86.276,115.722,73.928,1146.456,718.748,1251.249,641.427,431.177,373.891,439.269,565.769,224.241,472.489,91.116,74.053,64.37,1196.597,366.774,470.546,946.919,339.554,357.59,406.372,26,46,510,411,305,157,, +90.7392,274.083,249.052,399.937,154.485,54,39,722,576,168,138,115,215,600.352,298.343,511.657,822.1,669.617,531.844,222.21,414.33,300.632,496.221,447.209,430.491,493.436,37,333.758,324.863,328.328,84.975,115.552,74.325,1163.322,723.558,1248.018,645.551,432.406,372.801,442.167,562.203,223.222,473.765,92.595,72.609,66.958,1192.255,364.808,466.274,950.441,338.608,360.126,406.143,27,47,508,407,305,159,, +90.906,276.703,245.289,398.508,152.279,54,42,716,573,169,134,111,213,604.858,299.538,507.929,823.261,670.843,530.924,219.99,412.251,302.239,493.702,442.004,425.456,494.972,36,332.329,322.997,324.764,85.612,118.738,75.104,1150.437,728.825,1256.598,650.938,428.351,371.229,435.603,565.754,224.1,472.953,91.699,73.954,63.872,1195.734,371.286,468.792,935.208,341.181,358.256,400.416,26,46,505,404,302,157,, +91.0728,272.137,246.237,395.306,155.333,54,39,717,571,169,138,111,208,601.033,300.067,512.587,820.185,667.463,525.518,221.128,406.25,298.128,495.91,441.87,427.252,488.578,36,327.804,326.489,324.807,84.551,118.866,74.381,1139.993,727.982,1248.608,649.935,431.821,368.724,432.377,564.085,222.557,471.029,90.263,73.034,65.834,1159.696,369.512,452.569,939.166,340.008,361.713,398.577,26,46,511,399,303,157,, +91.2396,272.989,248.175,393.601,153.763,54,39,723,574,169,137,110,210,601.102,299.03,511.951,816.018,663.539,522.282,217.25,407.316,291.99,491.494,438.129,418.389,485.227,35.5,337.717,328.752,326.235,86.121,117.308,73.234,1145.427,725.86,1255.378,634.965,431.269,372,437.834,563.964,227.143,468.042,92.381,73.671,65.337,1154.35,348.854,449.938,912.041,346.314,361.657,397.828,27,44,505,394,305,153,, +91.4064,274.142,245.94,395.612,156.351,55,39,723,571,169,137,112,209,603.504,299.409,511.258,807.463,662.741,518.084,218.91,406.836,298.206,490.829,436.63,414.127,479.726,37,334.436,325.669,327.79,84.975,116.713,73.957,1150.897,730.105,1243.896,630.819,431.556,371.539,439.241,559.43,220.208,462.59,91.571,70.556,64.626,1155.708,350.933,452.456,912.323,344.646,365.61,401.519,26,48,502,399,304,151,, +91.5732,270.328,247.213,391.89,152.01,53,40,722,572,167,137,110,207,605.877,297.475,513.217,806.032,662.788,519.563,219.237,397.729,295.66,483.724,434.112,418.02,480.418,35,331.806,327.889,326.928,88.101,114.745,71.946,1139.69,722.08,1246.565,629.003,429.198,371.497,432.391,558.512,218.524,467.816,91.912,73.232,64.882,1172.157,355.303,454.252,917.726,347.007,365.709,393.6,25,45,504,394,302,153,, +91.74,270.072,247.637,397.092,152.915,54,41,720,575,165,135,110,209,607.291,301.288,509.553,807.134,661.037,518.623,217.861,399.087,295.774,486.625,430.313,410.775,480.562,36,335.511,326.716,327.691,83.943,116.94,74.197,1148.735,729.755,1241.076,625.455,430.178,370.117,432.532,579.342,218.283,462.037,88.201,72.17,63.801,1172.807,353.974,460.292,921.913,345.07,364.094,402.509,26,46,496,394,303,154,, +91.9068,269.793,246.052,393.459,153.283,54,40,720,570,166,134,111,207,601.451,300.634,513.633,810.688,658.826,511.45,217.132,394.95,294.764,490.022,427.521,412.412,470.079,35.5,332.584,326.306,327.352,86.757,121.528,71.436,1140.721,731.279,1251.531,621.636,430.133,373.622,436.87,581.017,218.255,460.819,90.675,72.651,63.758,1178.437,362.191,462.654,920.06,349.284,371.036,394.576,25,46,498,391,298,152,, +92.0736,277.193,244.162,393.681,149.931,54,41,715,573,167,136,110,205,606.073,299.953,508.745,813.267,656.739,515.133,212.854,398.896,294.18,487.871,426.702,407.691,465.125,36,336.26,324.481,328.738,87.125,117.747,74.268,1147.975,729.158,1238.228,627.297,428.735,375.594,434.945,583.061,219.047,461.74,89.182,71.349,63.758,1191.618,362.672,465.185,936.127,349.807,371.022,400.246,26,46,494,389,300,151,, +92.2404,274.969,249.285,390.186,149.338,52,40,722,574,170,135,109,203,599.075,300.153,514.323,804.529,650.102,513.065,210.864,393.398,296.798,479.252,420.378,406.478,467.576,34,333.178,329.515,331.467,83.617,115.198,73.234,1140.189,729.74,1232.974,616.239,434.492,374.202,434.301,584.897,215.919,459.828,92.467,72.042,64.64,1191.321,357.354,463.304,944.854,354.403,374.168,397.969,24,44,493,386,297,151,, +92.4072,271.56,245.374,389.485,151.741,52,40,715,561,167,139,108,200,604.248,296.337,513.032,798.754,649.997,511.193,212.612,395.436,288.633,480.95,421.901,398.809,462.236,34.5,331.976,325.598,332.061,84.042,115.736,73.362,1153.714,735.656,1243.892,619.128,427.97,373.338,432.603,578.524,214.773,454.73,91.002,71.972,67.128,1201.236,360.367,466.911,941.375,359.295,375.981,401.165,24,45,493,381,298,151,, +92.574,274.027,245.039,385.021,146.679,52,40,721,565,168,136,107,202,608.908,299.407,513.776,803.363,646.158,505.281,209.665,387.933,292.032,482.875,416.63,400.742,457.222,34.5,335.129,325.556,332.131,83.434,115.948,72.073,1144.592,739.448,1231.694,615.446,431.036,371.448,437.919,570.931,213.966,453.058,89.865,70.825,63.901,1209.637,363.224,471.225,950.285,354.346,375.91,398.832,25,44,487,380,299,152,, +92.7408,272.677,243.186,386.314,150.129,52,40,716,571,168,138,107,200,605.496,297.989,510.019,799.85,650.397,504.288,207.518,391.729,287.736,482.634,413.46,394.227,453.214,35.5,336.543,328.964,329.812,83.179,118.03,74.112,1139.786,736.474,1246.944,620.027,431.039,376.567,437.565,562.827,211.093,449.957,91.329,70.811,65.067,1209.34,365.515,474.365,954.67,357.089,378.092,397.786,26,45,485,375,295,152,, +92.9076,274.206,250.877,387.103,149.408,53,41,721,567,169,137,107,198,608.301,299.27,507.326,797.043,644.992,500.347,208.06,387.596,289.145,484.035,413.943,394.737,449.033,35.5,335.624,329.657,331.368,84.537,115.325,73.801,1144.006,741.502,1238.236,615.361,427.202,374.145,436.566,559.132,210.881,458.171,87.803,70.683,63.374,1220.245,364.567,475.468,949.154,363.212,383.788,398.648,26,45,485,376,293,149,, +93.0744,273.421,247.454,391.943,148.687,53,40,710,570,167,136,110,198,604.148,301.568,512.511,802.557,640.581,499.539,205.769,385.71,286.982,478.077,402.456,389.503,449.263,35.5,334.974,328.879,332.216,86.955,114.589,74.084,1146.131,736.378,1234.482,612.405,429.722,375.976,438.293,551.846,212.424,448.342,88.713,72.439,65.465,1221.801,359.815,477.222,957.314,359.719,383.576,392.299,25,46,479,377,291,149,, +93.2412,274.538,244.752,386.626,149.267,53,39,713,566,169,136,108,197,611.072,301.024,512.752,781.578,638.11,497.697,208.204,390.183,288.305,482.79,400.605,379.895,444.96,35.5,336.699,329.827,334.762,85.81,112.025,71.521,1143.313,740.801,1240.772,614.011,428.663,360.242,436.87,548.82,212.424,441.502,89.552,71.179,65.55,1235.124,362.955,480.432,959.294,362.548,386.069,405.266,25,46,478,371,289,150,, +93.408,272.857,242.785,389.647,148.418,55,39,714,571,170,137,110,196,608.568,300.381,511.743,761.583,615.504,486.715,200.683,379.954,286.47,475.812,398.887,381.625,442.082,35,339.315,329.812,332.824,87.606,114.532,72.611,1146.925,741.595,1233.573,536.037,413.214,357.597,440.334,553.102,209.65,447.266,89.367,71.519,63.787,1226.582,362.63,481.578,965.588,363.891,388.492,400.189,25,45,478,374,291,151,, +93.5748,266.724,246.114,382.762,146.128,51,40,715,563,163,135,106,195,611.269,298.896,511.3,775.214,622.824,478.929,206.577,377.109,283.312,481.813,395.344,382.43,434.296,34.5,341.945,331.976,335.002,85.739,112.408,71.563,1146.783,740.271,1250.014,522.992,401.183,363.843,434.896,543.507,204.71,446.487,89.395,70.074,63.247,1235.747,362.064,482.243,960.384,362.746,388.421,404.234,25,44,471,374,292,149,, +93.7416,269.589,249.307,389.394,147.74,52,40,713,559,167,133,107,196,613.01,305.553,508.178,783.424,622.427,486.614,203.513,376.076,284.18,478.997,396.904,374.355,431.305,34.5,339.88,330.604,331.17,87.365,113.767,73.461,1150.035,742.022,1243.749,530.123,402.754,372.348,437.967,542.672,207.357,444.872,88.77,71.915,61.91,1233.936,365.43,485.849,969.619,368.331,397.872,404.912,25,44,472,368,287,148,, +93.9084,270.787,249.024,388.885,147.033,54,39,711,562,163,135,109,196,606.537,300.457,512.638,782.219,614.464,481.344,202.861,377.533,284.137,478.544,390.988,368.905,426.785,35,335.836,332.089,332.81,86.418,113.725,71.861,1145.143,745.177,1245.621,545.103,400.53,376.014,441.612,549.782,206.239,436.587,89.808,72.906,60.929,1246.369,367.877,482.794,971.147,368.076,398.269,398.648,26,44,467,365,287,147,, +94.0752,272.136,249.392,390.575,147.004,50,39,712,564,168,134,104,196,609.39,304.245,510.662,781.09,618.958,483.961,202.874,373.372,283.27,478.19,384.554,369.914,421.887,35,338.523,333.503,331.976,85.088,111.36,72.413,1162.974,745.942,1242.146,551.856,401.998,375.698,444.831,539.487,204.427,432.99,88.741,71.476,63.431,1244.261,364.695,486.047,980.906,371.838,401.457,405.931,26,44,468,365,285,148,, +94.242,274.296,249.692,386.711,146.594,51,40,713,562,167,137,106,194,613.548,301.541,511.329,786.851,613.013,481.934,200.813,373.769,280.794,481.091,382.388,370.718,419.926,33.5,336.656,332.442,331.735,84.551,115.509,73.744,1154.826,742.142,1237.842,554.53,406.648,379.577,443.445,546.917,205.687,437.14,89.751,72.665,62.649,1252.026,366.448,490.927,981.599,373.195,400.819,406.524,24,43,459,362,285,144,, +94.4088,273.543,248.307,391.115,147.612,54,39,710,562,163,133,105,193,612.188,300.963,515.211,788.14,611.779,478.745,200.57,371.816,278.817,473.746,380.702,368.924,416.647,35,340.22,329.105,334.974,85.923,114.249,72.795,1153.487,740.697,1244.297,558.413,412.023,380.133,448.142,546.399,201.95,438.117,91.116,70.924,64.014,1249.07,367.919,496.019,984.979,373.012,401.06,405.506,25,45,466,358,286,145,, +94.5756,274.97,247.556,388.504,141.885,51,38,712,559,165,133,107,193,609.538,303.83,518.549,782.471,597.557,479.496,199.429,372.934,276.783,475.232,378.697,364.16,416.248,34.5,339.682,335.03,336.444,83.844,114.192,75.09,1159.594,748.117,1247.982,560.26,410.357,380.243,447.748,543.039,202.828,434.421,88.94,70.06,62.763,1253.624,369.278,496.754,979.638,372.969,410,405.888,24,45,462,360,286,144,, +94.7424,273.577,250.145,388.504,141.079,51,39,710,565,165,134,105,190,607.159,300.371,514.084,783.638,600.606,481.066,198.899,372.941,274.976,477.596,372.644,357.92,410.146,35.5,337.208,336.812,342.864,86.135,112.224,73.546,1149.721,747.356,1246.604,559.891,421.506,383.899,448.792,539.048,201.384,427.722,88.485,71.306,63.517,1257.542,371.526,492.723,985.969,379.587,405.225,410.837,25,46,457,355,287,143,, +94.9092,273.322,250.594,387.851,141.744,52,38,709,562,164,135,103,192,610.385,303.73,515.901,784.13,605.307,476.548,200.361,378.107,276.029,473.803,371.37,351.867,408.384,34,343.684,331.99,333.178,84.777,110.737,71.733,1160.357,746.283,1248.99,561.512,419.487,385.062,446.841,540.435,200.153,431.262,86.623,72.524,63.488,1255.138,368.825,491.691,986.196,377.466,412.834,413.793,24,44,454,355,277,143,, +95.076,276.498,249.01,392.89,142.126,50,40,706,560,164,130,106,192,613.271,307.232,509.568,785.139,592.673,471.1,195.127,372.141,272.672,477.567,367.63,350.112,399.595,34.5,344.32,336.331,342.609,84.551,113.031,71.676,1166.18,753.349,1246.888,569.97,424.965,386.603,451.975,542.757,196.332,432.126,88.997,69.72,62.351,1262.69,378.089,496.655,988.459,387.831,414.775,420.014,25,44,458,350,281,143,, +95.2428,283.048,249.568,388.686,143.356,52,37,715,559,165,135,104,193,612.884,301.384,513.669,789.034,592.524,469.418,195.959,366.981,275.759,471.142,369.461,348.454,404.962,34.5,341.577,338.07,335.186,83.886,112.79,74.027,1163.978,749.306,1245.599,565.863,423.04,385.927,447.378,536.729,198.681,428.359,89.808,68.12,62.251,1261.686,371.172,495.057,991.882,384.564,417.736,414.641,25,44,453,349,280,142,, +95.4096,275.595,252.136,388.391,139.453,51,38,698,556,163,134,102,190,612.821,305.348,517.604,786.625,593.881,473.479,194.073,372.368,271.775,469.882,358.51,343.182,395.148,34.5,344.49,335.963,339.739,81.666,115.07,73.348,1163.549,756.43,1258.733,572.217,426.524,390.255,446.094,540.49,193.812,429.294,87.433,67.861,61.213,1260.668,372.134,501.549,994.102,378.852,417.765,416.027,25,44,451,352,279,145,, +95.5764,279.571,251.683,390.628,140.542,52,38,707,559,164,131,105,192,617.57,302.674,520.566,786.752,591.742,473.514,196.28,368.938,273.397,474.977,356.081,345.14,393.717,35,346.484,337.901,342.609,85.032,113.668,73.447,1170.779,760.259,1258.812,574.295,427.386,390.676,447.833,541.384,191.944,427.481,86.13,65.358,62.749,1265.901,371.667,502.567,994.003,389.047,423.234,419.039,25,45,448,347,275,144,, +95.7432,280.206,249.533,389.894,142.098,52,38,700,558,164,133,105,191,615.604,300.659,519.515,783.681,590.342,471.582,196.607,371.475,270.453,471.807,357.603,342.107,391.367,34.5,342.949,338.466,338.198,86.616,113.994,72.767,1168.849,758.716,1253.789,572.714,433.016,390.34,451.845,538.298,193.218,428.515,90.454,68.017,61.924,1267.726,376.589,500.092,996.563,389.202,431.027,420.905,25,44,448,346,275,140,, +95.91,276.399,254.796,396.262,141.716,50,39,703,553,167,133,104,192,614.039,303.525,513.253,779.955,593.59,474.373,196.101,370.798,270.709,468.906,356.18,339.489,388.852,33.5,343.232,334.663,339.541,84.565,110.524,73.815,1171.487,760.008,1262.26,573.115,427.797,391.856,445.44,537.159,189.849,423.119,88.648,66.574,61.952,1277.711,376.547,501.393,1002.758,395.198,429.383,427.254,24,43,448,341,275,144,, +96.0768,279.862,251.896,391.343,140.061,51,38,701,554,162,133,100,191,616.098,300.654,516.567,786.639,584.532,472.261,195.15,376.009,268.575,469.047,351.103,335.742,383.889,33.5,347.757,332.655,345.098,82.854,110.963,70.331,1177.234,754.68,1254.812,572.347,438.928,396.554,445.142,532.552,192.935,425.852,87.538,68.271,60.345,1276.07,378.103,505.198,999.972,388.58,433.506,423.96,24,43,443,343,271,141,, +96.2436,280.959,256.311,390.334,140.005,52,37,705,550,158,132,103,191,614.709,300.686,519.065,781.401,589.822,472.7,194.318,368.416,270.837,470.123,347.948,337.535,384.411,34.5,345.225,335.355,338.48,86.474,111.813,72.186,1179.765,762.484,1267.691,574.38,440.311,397.088,442.229,529.948,188.802,425.526,89.202,66.956,59.833,1276.367,381.257,506.527,1011.315,397.856,434.626,428.23,25,44,447,342,276,141,, +96.4104,282.493,252.663,396.244,138.209,52,38,697,559,159,135,103,193,617.892,304.203,518.262,787.531,589.111,471.398,195.661,366.316,266.953,468.807,345.848,331.315,377.714,34.5,348.223,340.488,342.836,84.127,110.255,72.271,1174.709,753.975,1272.682,574.167,443.975,400.447,442.326,534.395,189.651,423.374,90.71,67.861,61.952,1294.287,374.708,504.476,1012.149,392.483,439.004,428.357,25,44,438,341,272,138,, +96.5772,280.819,250.007,393.166,140.104,52,36,701,552,163,131,103,188,614.255,301.828,521.641,786.647,589.68,471.58,193.678,370.584,266.199,470.321,340.254,330.454,373.11,35,352.14,338.283,343.203,84.89,110.34,70.133,1175.253,768.567,1282.003,576.982,444.119,399.314,443.119,538.752,188.618,425.442,87.282,66.999,59.961,1284.627,379.065,510.94,1011.301,398.719,435.844,432.331,25,45,437,335,271,140,, diff --git a/data/cytokine_example.csv b/data/cytokine_example.csv new file mode 100644 index 0000000..53999fb --- /dev/null +++ b/data/cytokine_example.csv @@ -0,0 +1,13 @@ +Participant ID,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +Replicate,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +Group,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2 +12,7.303412021103958,3.0183106049957953,7.472288517724754,4.2833683797257365,5.307224114720199,5.797461270079848,2.0148504317254647,8.351353410655152,5.949010676727963,8.396508850694618,6.581509124178313,4.82651183775716,4.70854991200212,6.237100849617728,2.1257509092740365 +16,7.470909332838964,3.159377499143629,7.194721366606613,4.206290504442118,5.782422181359651,6.865096419806498,1.7096204158938526,7.666736181836135,6.396742727621743,9.334161028118507,6.756186455901731,5.307861759016582,5.174685699195872,7.299988101063307,3.303965276727033 +20,7.261947587924801,2.760872800583458,7.064868484330388,3.834592707519103,5.336515254122448,6.118002069099847,1.5687725842145999,8.236915858211695,6.662303816752572,9.557423047799322,6.645150296757134,4.593766951122319,4.531075393451904,7.808251556954222,3.377807692287375 +24,7.178267889126078,2.253390838807173,5.583008205065701,3.834592707519103,5.355695459968111,5.598599908645074,0.13906572752021826,7.903972447572472,6.274664620561641,9.661972945972074,5.637980363670573,4.175954613346791,4.258372798513361,8.112823672314509,3.876665068050742 +28,7.057189246086794,1.7144336895534475,4.737346322809824,3.3386151307055925,5.051423706608176,4.9471899877601295,0.13975752722479498,8.682448933222412,6.052569180508415,9.313859321426646,4.9601026824463395,3.7842123981852134,3.981118534241465,7.650683562817428,3.1868241900676892 +32,6.7784682796075115,1.7168442988907406,5.42472806938663,2.926499618854903,4.9899976954659016,4.823701912968817,0.9578522362216607,9.008251509900196,6.706374315133839,9.019332091488385,5.428224999195163,4.0056198119714335,4.198479292444571,7.149583086426804,2.4935222331322247 +36,7.19883327539918,1.921475127949834,5.611103908849838,3.71371000907927,4.73052468719874,5.855645334090556,0.9410981700386614,9.666899975933593,7.293662830814861,9.064955677374822,4.876509086310544,4.477925024922587,4.531104896719646,7.245166684583364,3.2751078579764026 +40,7.1351573120917156,1.8324801326640756,5.451416082512381,3.74555019743639,5.345293141399031,6.271420915498466,1.1608132313399537,9.580334788901121,8.279589266012023,9.017082271347466,4.899086286289969,4.608509835174005,4.699573683819483,7.956012733240144,3.7325196891350143 +44,6.805078044707797,1.5702068426700866,5.559556922018524,3.173376027477184,4.958510886115044,5.602514752976599,1.2310302731366591,9.844202487595897,8.821657979727318,9.162358987530174,4.92587479651267,4.29068900965397,4.3166190774113735,7.971137603593861,3.5431248234944768 +48,6.495573648941756,1.301119260491838,4.006067500381569,3.0227276920576904,4.883857750929148,4.9685787076810914,-0.018741032093890084,9.968871626671714,9.878880865099761,9.217047452402374,4.3873760272622615,3.600469170422337,4.254204052980737,7.696191488688788,3.289785181179364 diff --git a/images/live_cell_fitting-01.png b/images/live_cell_fitting-01.png new file mode 100644 index 0000000..d42d750 Binary files /dev/null and b/images/live_cell_fitting-01.png differ diff --git a/notebooks/live_cell_tutorial.ipynb b/notebooks/live_cell_tutorial.ipynb new file mode 100644 index 0000000..cf7b888 --- /dev/null +++ b/notebooks/live_cell_tutorial.ipynb @@ -0,0 +1,214 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Extracting circadian parameters from live-cell data" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "The aim of this tutorial is to use the cosinor_lite Python package to extract circadian parameters from live-cell data. Here we will use bioluminescence data, but in theory any data (e.g. qPCR, cytokine) could be used." + ] + }, + { + "cell_type": "markdown", + "id": "2", + "metadata": {}, + "source": [ + "## Core methodology - three types of cosinor models" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "The core of the methodology is the possibility to choose between three different cosinor models:\n", + "\n", + "- a) Fixed 24-h period\n", + "\n", + "- b) Free period\n", + "\n", + "- c) Free period with damped amplitude\n", + "\n", + "
\n", + " \"Model\n", + "
\n", + "\n", + "Once a model is chosen, it is fitted independently to each sample. The fitted parameters can be exported for downstream statistical analysis." + ] + }, + { + "cell_type": "markdown", + "id": "4", + "metadata": {}, + "source": [ + "## Loading data and creating a LiveCellDataset" + ] + }, + { + "cell_type": "markdown", + "id": "5", + "metadata": {}, + "source": [ + "We first load the data, where we assume it's in a standardised format (see data folder for examples). The data is assumed to have the following format:\n", + "- participant_id (row 1)\n", + "- replicate (row 2)\n", + "- group (row 3)\n", + "- time (col 1)\n", + "- time series (all the rest of the data from row 4, col 2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import pandas as pd\n", + "\n", + "from cosinor_lite.livecell_cosinor_analysis import CosinorAnalysis\n", + "from cosinor_lite.livecell_dataset import LiveCellDataset\n", + "\n", + "file: Path = Path.cwd().parent / \"data\" / \"bioluminescence_example.csv\"\n", + "\n", + "df_data = pd.read_csv(file, header=None)\n", + "\n", + "participant_id = df_data.iloc[0, 1:].astype(str)\n", + "replicate = df_data.iloc[1, 1:].astype(int)\n", + "group = df_data.iloc[2, 1:].astype(str)\n", + "time = df_data.iloc[3:, 0].to_numpy(dtype=float)\n", + "\n", + "time_rows = df_data.iloc[3:, 1:].apply(pd.to_numeric)\n", + "time_series = time_rows.to_numpy(dtype=float)\n", + "\n", + "dataset = LiveCellDataset(\n", + " ids=participant_id.tolist(),\n", + " group=group.tolist(),\n", + " replicate=replicate.tolist(),\n", + " time_series=time_series,\n", + " time=time,\n", + " group1_label=\"Group 1\",\n", + " group2_label=\"Group 2\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "7", + "metadata": {}, + "source": [ + "We can now plot the data and perform detrending using either:\n", + "- none\n", + "- linear\n", + "- poly2 (linear + quadratic terms)\n", + "- moving_average (need to provide number of window steps)\n", + "\n", + "As measurements are every 10 mins, we'll use a moving_average window of 240 (24 hour moving average window)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "source": [ + "fig, tmp_path = dataset.plot_group_data(\"group1\", method=\"moving_average\", window=240, plot_style=\"line\")" + ] + }, + { + "cell_type": "markdown", + "id": "9", + "metadata": {}, + "source": [ + "## Fitting cosinor parameters" + ] + }, + { + "cell_type": "markdown", + "id": "10", + "metadata": {}, + "source": [ + "We then create a CosinorAnalysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "cosinor_analysis = CosinorAnalysis(\n", + " ids=participant_id.tolist(),\n", + " group=group.tolist(),\n", + " replicate=replicate.tolist(),\n", + " time_series=time_rows.to_numpy(dtype=float),\n", + " time=time,\n", + " group1_label=\"Group 1\",\n", + " group2_label=\"Group 2\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "12", + "metadata": {}, + "source": [ + "We can then fit our chosen cosinor model from , plot the results and export the parameters as a pandas dataframe df_export, which can then be saved as a .csv file for downstream analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13", + "metadata": {}, + "outputs": [], + "source": [ + "df_export, tmp1_path, fig, tmp2_path = cosinor_analysis.fit_cosinor(\n", + " \"group1\",\n", + " method=\"poly2\",\n", + " cosinor_model=\"cosinor_damped\",\n", + " plot_style=\"line\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "14", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cosinor-lite", + "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.11.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/omics_demo.ipynb b/notebooks/omics_demo.ipynb deleted file mode 100644 index 5b57a84..0000000 --- a/notebooks/omics_demo.ipynb +++ /dev/null @@ -1,431 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "03149a0b", - "metadata": {}, - "source": [ - "# Differential rhytmicity analysis of omics datasets" - ] - }, - { - "cell_type": "markdown", - "id": "8e5abd58", - "metadata": {}, - "source": [ - "The aim of this tutorial is to use the cosinor_lite Python package to perform differential rhythmicity analysis on omics data. Here we will use published RNA-seq data, but in theory any types of omics data (RNA-seq, proteomics, metabolomics, lipidomics) could be used. The dataset is from the following publication:\n", - "\n", - "Petrenko V, Saini C, Giovannoni L, Gobet C, Sage D, Unser M, Heddad Masson M, Gu G, Bosco D, Gachon F, Philippe J, Dibner C. 2017. Pancreatic α- and β-cellular clocks have distinct molecular properties and impact on islet hormone secretion and gene expression. Genes Dev 31:383–398. doi:10.1101/gad.290379.116\n" - ] - }, - { - "cell_type": "markdown", - "id": "2f2a8fe9", - "metadata": {}, - "source": [ - "### How does the method actually work?" - ] - }, - { - "cell_type": "markdown", - "id": "1a0d84d7", - "metadata": {}, - "source": [ - "The details of the method are nicely explained in the article: \n", - "\n", - "Pelikan A, Herzel H, Kramer A, Ananthasubramaniam B. 2022. Venn diagram analysis overestimates the extent of circadian rhythm reprogramming. The FEBS Journal 289:6605–6621. doi:10.1111/febs.16095\n", - "\n", - "Here is an adaptation of their figure explaining the methdology:\n", - "\n", - "
\n", - " \"Model\n", - "
\n", - "\n", - "For condition 1 (i.e. alpha cells) and condition 2 (i.e. beta cells), we fit 5 different models:\n", - "\n", - "- Model 1) Arrhythmic in alpha and beta cells\n", - "\n", - "- Model 2) Rhythmic in beta cells only\n", - "\n", - "- Model 3) Rhythmic in alpha cells only\n", - "\n", - "- Model 4) Rhythmic in alpha and beta cells with the same rhythmic parameters (i.e. phase and amplitude)\n", - "\n", - "- Model 5) Rhythmic in both but with differential rhythmicity in alpha vs beta cells\n", - "\n", - "A degree of confidence is calculated for each model (called model weight, which sums to 1 across all models), and a model is chosen if the model weight exceeds a threshold (for this tutorial we will use 0.5). If no model exceeds this threshold, then the model is unclassified, which we define as Model 0\n", - "\n", - "- Model 0) unclassified\n", - "\n", - "Let's start running the code to make things more concrete! First we need to load the required packages." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "ea8f55b1", - "metadata": {}, - "outputs": [], - "source": [ - "from cosinor_lite.datasets import OmicsDataset\n", - "from cosinor_lite.differential_rhytmicity_omics import DifferentialRhythmicity, OmicsHeatmap, TimeSeriesExample\n", - "from pathlib import Path\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pandas as pd\n", - "plt.rcParams.update(\n", - " {\n", - " \"font.size\": 8,\n", - " \"axes.titlesize\": 8,\n", - " \"axes.labelsize\": 8,\n", - " \"xtick.labelsize\": 8,\n", - " \"ytick.labelsize\": 8,\n", - " \"legend.fontsize\": 8,\n", - " \"figure.titlesize\": 8,\n", - " \"pdf.fonttype\": 42,\n", - " },\n", - ")\n", - "plt.style.use(\"seaborn-v0_8-ticks\")" - ] - }, - { - "cell_type": "markdown", - "id": "7ae0da39", - "metadata": {}, - "source": [ - "## Load data\n", - "\n", - "Next, we load in the omics dataset" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "85e7d834", - "metadata": {}, - "outputs": [], - "source": [ - "file: Path = Path.cwd().parent / \"data\" / \"GSE95156_Alpha_Beta.txt\"\n", - "\n", - "df_rna: pd.DataFrame = pd.read_csv(file, sep=\"\\t\")\n", - "df_rna: pd.DataFrame = df_rna.drop(df_rna.columns[0], axis=1)" - ] - }, - { - "cell_type": "markdown", - "id": "f58de732", - "metadata": {}, - "source": [ - "## Defining sample conditions and times\n", - "\n", - "Typically in omics datasets, each row represents a different entity (gene/protein/lipid etc.), and each samples are stored as separate column.\n", - "\n", - "We need to tell the algorithm the names of the samples corresponding to condition 1 and 2, as well as the corresponding times." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "89e5fe76", - "metadata": {}, - "outputs": [], - "source": [ - "df_rna[\"Genes\"] = df_rna[\"gene_name\"].str.split(\"|\").str[1]\n", - "\n", - "columns_cond1: list[str] = [\n", - " \"ZT_0_a_1\",\n", - " \"ZT_4_a_1\",\n", - " \"ZT_8_a_1\",\n", - " \"ZT_12_a_1\",\n", - " \"ZT_16_a_1\",\n", - " \"ZT_20_a_1\",\n", - " \"ZT_0_a_2\",\n", - " \"ZT_4_a_2\",\n", - " \"ZT_8_a_2\",\n", - " \"ZT_12_a_2\",\n", - " \"ZT_16_a_2\",\n", - " \"ZT_20_a_2\",\n", - "]\n", - "\n", - "columns_cond2: list[str] = [\n", - " \"ZT_0_b_1\",\n", - " \"ZT_4_b_1\",\n", - " \"ZT_8_b_1\",\n", - " \"ZT_12_b_1\",\n", - " \"ZT_16_b_1\",\n", - " \"ZT_20_b_1\",\n", - " \"ZT_0_b_2\",\n", - " \"ZT_4_b_2\",\n", - " \"ZT_8_b_2\",\n", - " \"ZT_12_b_2\",\n", - " \"ZT_16_b_2\",\n", - " \"ZT_20_b_2\",\n", - "]\n", - "\n", - "t_cond1: np.ndarray = np.array(\n", - " [\n", - " 0,\n", - " 4,\n", - " 8,\n", - " 12,\n", - " 16,\n", - " 20,\n", - " 0,\n", - " 4,\n", - " 8,\n", - " 12,\n", - " 16,\n", - " 20,\n", - " ],\n", - ")\n", - "\n", - "t_cond2: np.ndarray = t_cond1.copy()" - ] - }, - { - "cell_type": "markdown", - "id": "5ad6104c", - "metadata": {}, - "source": [ - "## Processing the data and visualising the distribution of expression\n", - "\n", - "We next load the data and create a plot of the distribution of all expression values.\n", - "\n", - "In some cases there will be a bimodal distribution, with one large peak at high values and a second, typically smaller peak at very low values. This can be a sign that the small peak at low values represents noise and can be considered as unexpressed." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "ec92dddd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "8.0\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOgAAAHUCAYAAAAwZmQaAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAARkJJREFUeJzt3XlcVnX+///HxXKpCEhWQKVj6XxllHIpY0RTUTKVHVxLMY0UnbByXBDNPdAELbcpW8bKdBqLcUExVyyl1CyXcsuxGFQWEZQAgWvh/fvDn9dHFJQLWY75ut9u3G5yzvV+n/e5vJ68z3XOeb+PTimlEEJokk19N0AIUTkJqBAaJgEVQsMkoEJomARUCA2TgAqhYRJQITRMAiqEhklAhdAwCWg1nTt3Dg8PD2JiYsotv3jxIm3btmXp0qX11LL6tXPnThYvXlwjdV25coWoqCjMZnON1Hej/fv3Ex4eXm5ZYmIiU6ZMsfz+0Ucf8fXXX9fK9qtCAnoH7rvvPvbs2YPRaLQs27JlCy4uLvXXqHrm6+vLa6+9ViN1LV++nNDQUGxtbWukvlspLS0lPj6eN998s9zy8PBwli5disFgqPU2VMSuXrb6B+Hg4ICnpyepqan4+PgA8NVXX9G7d2/La37++Wfi4uIoLi7GycmJmTNn0qpVKw4cOMCiRYsoLS0lPz+fCRMm4O/vz5QpU3BycuL48eNkZmYyePBgIiMjb9r2Rx99RFJSEmVlZTz99NPExMTwzTffEBcXx6ZNm8jLy2Pw4MGsWrWKpKQkfv31V86fP09eXh6DBg1i9OjR7N+/nwULFqCU4tFHH+XNN99k7ty5nDx5ErPZTHh4OAMHDuR///sf0dHRGAwGbG1tiYmJ4cknn2TZsmVs3boVOzs7nnjiCebMmcN//vMfDhw4wPz58zl8+DCxsbGUlJTQtGlT5syZQ4sWLQgPD6d9+/YcPHiQCxcuMG7cOEJDQ8vtX2FhIdu2bePvf/87ACdPnmTGjBkUFxfTuHFjFixYwJ/+9Cfee+89Nm7ciK2tLV27dmXSpElkZmbyt7/9DU9PT44dO0bDhg1ZuHAhzZs3Z+/evcybN48GDRrw2GOPWba3b98+lFJMmjSJo0ePWpbr9XqeeuopNmzYwMCBA2vy41M1SlTL2bNnVc+ePdXmzZvV5MmTlVJKnTt3Tr300ktqyZIlasmSJcpgMKjAwEB19uxZpZRSBw8eVKGhoUoppcaNG6d++eUXpZRS3333nQoICFBKKRUdHa3Gjh2rzGazys7OVh06dFD5+fnltr1nzx4VFRWljEajKisrU2+88YZatWqVpfzChQvViy++qD7//HOllFJLlixRfn5+qqCgQP3+++/K19dXHTlyRO3bt0917NhRXb58WSml1MKFC9U///lPpZRSRUVFKiQkRJ04cULFxsaqTz/9VCml1L59+9T777+vfv/9d+Xt7a1MJpMym81qxowZKiMjQyUmJqro6GhVWlqqfHx81KFDh5RSSiUnJ6uwsDCllFLDhg1Tc+bMUUopdezYMeXl5XXT+7t9+3YVFRVl+T0gIEBt375dKaXUunXr1PTp09Xu3btV//791ZUrV5TRaFRjxoxRn332mTp79qzy8PBQR48eVUopNXfuXDVv3jxVWlqqunTpok6dOqWUUmrq1Klq2LBh5bZ7rf3X27FjhxozZkzlH4ZaJD3oHerZsyfz58/HYDCQnJyMn58fGRkZAPz222+kp6fzyiuvWF6fl5eHwWAgPj6elJQUtm3bxpEjRygqKrK8plu3btjY2ODq6oqLiwsFBQU4Oztb1qempnL06FH69+8PXD08u3YYOG3aNPz9/WndujWDBw+2lPHz88PR0RG4ehj6/fff8/jjj9OyZUuaNGkCwN69eykuLmb9+vXA1V7s1KlTdOvWjUmTJnH48GF69OjB8OHDadCgAa1atWLAgAH07NmTYcOG8dBDD1m2l5aWhrOzMx06dACgX79+zJgxg4KCAgB69OgBQJs2bbh8+fJN72taWpqlvkuXLpGVlcWzzz4LQEhICCEhIbz11lsEBATQqFEjAPr378/69evp0aMH999/P0888YRlGwcPHuTUqVO4urrSunVrAEJDQ6v0ffmRRx4hPT39tq+rDRLQO9SoUSM6depEamoqO3bs4MMPP+Tjjz8GoKysjObNm7NhwwYAlFJkZ2ej1+vp378/Xl5edO7cGW9vbyZOnGips0GDBpZ/63Q61A0jAs1mMyNGjGDkyJEAFBQUoNPpgKsnqXQ6HWfPnqWoqIjGjRsDYGf3f//VZWVllkBf+3BfW56QkICnpycAubm5ODk5odfrSU5OZvfu3SQnJ7Nu3TpWrlzJp59+yo8//siePXuIiIggISGhXF03UkphMpnK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ugpfu2LFilt+R63Om6eUoqCgACcnpwq3W5UP1e3qqIl21GU9WqlDS21RSgGg1+urVf5aJXeddevWqZiYmHK/T506tcLXlpaWqoKCgkp/SktLrd5+QUGBat26tSooKKj2PmilDi21RfbnZnfld1Bvb2/27dvHxYsXMRqNbNy4ER8fnwpfq9frcXR0rPTnjv66CVHL7spDXDc3NyZNmsTIkSMxGAz06tWL3r1713ezhKhxd2VAAfr160e/fv3quxlC1Kq78hBXiHuFBFQIDZOACqFhEtBq0Ov1REVF3dEZYK3UoaW2yP7cTKfU/381VQihOdKDCqFhElAhNEwCKoSGSUCF0DAJaDUVFhYyYcIEgoODCQkJ4dixY1bXcfLkSQYPHkxQUBDh4eGcP3/eqvI1MatEQkICfn5++Pv7s3LlymrVsWvXLsLCwujbty9vvln50LHbef/99+nTpw+BgYG8++67VS5XWFhIYGAg586dAyApKYnAwEACAwN55ZVXyM/Pr1Y9CxcupFevXgQHBxMcHMzq1autrmPv3r0EBgYSEBDApEmTKh36WKlq32Z/j5s6daqKj49XSin19ddfq7CwMKvrCAsLU6mpqUoppdasWaP+/ve/V7nshQsXlI+Pj8rNzVUGg0G9+OKL6ptvvrFq+ykpKWro0KHKZDKp4uJi1bNnT3XmzBmr6khPT1fPPPOMyszMVAaDQT3//PMqJSXFqjqUUio1NVX5+/ur33//XZlMJhUZGam2bt1623I//vijCggIUJ6enurs2bMqKytLdevWTeXm5iqllFq0aJGaO3eu1fUopdTw4cPVsWPHqrwPFdXRvXt3dfr0aaWUUuPGjVNr166tcn1K3aWjWeqbUopt27YxevRoALp37868efOsruff//43Xbp0oaysjIyMDJydnatctiZmlfDx8WHlypXY2tqSm5uL2WzGwcG6AdLbt2/Hz88Pd3d37O3tefvtt2nfvr1VdQAcP36cbt264eTkhK2tLd26dWPHjh23Lbd27VpmzpxpGcCv0+mYM2cOTZs2BaBNmzZkZmZaXY9SihMnTrB8+XICAwN58803b9v73VgHgNlspqioCLPZjMFgoEGDBrdty/UkoNWQm5uLXq9nzZo1hISEEB4eXuEg8tuxs7MjLy+P7t27869//YtBgwZVuaw1s0rcyrVQ+fn54e3tjZubm1Xl//e//1FWVkZERASBgYGsWbMGFxcXq9vh6enJ3r17uXz5MqWlpezatYuLFy/etty8efPo1KmT5XdXV1fL0MPi4mLef/99nn32WavruXTpEh07diQmJoZ169Zx6dKl2x5231gHwKxZswgPD6dbt27k5eXRt2/f27blehLQ29iyZQvdu3cv9zNo0CAuXryIg4MD69evZ8yYMbzyyitW1TF48GAAmjZtyt69e1m4cCFjx47FbDZXqV3WzCpxO+PHj+e7774jIyODtWvXWlXWbDazZ88eFixYwBdffMFPP/3EunXrrG6Dt7c3YWFhhIeH8/LLL/PUU09hb29vdT3XXLp0iYiICNq2bUtoaKjV5Zs2bcqKFSto1qwZdnZ2REREsHv3bqvqyMnJISEhgU2bNrF3717at29v9ZHWXTvcrK5UNKzNYDDQsWNHAgICAOjatStXrlwhNzeX+++/v0p1lJWVkZycjJ+fHwA9evSgpKSE/Px8y+HZrbi7u3PgwAHL7xcuXMDd3d2qfTt9+jRlZWV4eHjg4OBAnz59OHXqlFV1PPDAA3h7e1v229fXl6NHjxIWFmZVPYWFhfTu3ZuRI0cCsHLlSpo3b25VHdecP3+eiIgIfH19mThxYrXqSEtL48iRIwQHBwNX/7+snR7n4MGDtG7dmj/96U8ADBo0iNdff92qOqQHrQa9Xk+XLl3YvPnqVJJHjx6lUaNG3HfffVWuw8bGhn/84x98/fXXAHz77bc0bdq0SuEE62aVqMyZM2eYNWsWRqMRg8HA9u3bbzpEu52ePXvy7bffkp+fj9lsZu/evXh6elpVB1wN1dixYzEajRQUFPDFF19Ua7xvaWkpERERDBkyhEmTJlX7qMLe3p758+eTlZWFUorPPvvM6kkBWrduzeHDh7lw4QJw9Wy3te+N9KDVFBsby4wZM/j3v/+Nra0tCxcuxMbGur93CQkJzJo1i0WLFuHs7MzSpUurXLYmZpXo27cvx48fJzg4GFtbW/r27Wvp0auqffv2jBo1iqFDh2I0Gi2Hqtby8PAgICCA4OBgzGYzI0aM4KmnnrK6ng0bNpCens66dessh9pt27a1+tDykUceISYmhoiICEwmE0899ZSld6+qVq1aMX78eEaMGIGtrS3Nmze3+jKU3CwvhIbJIa4QGiYBFULDJKBCaJgEVAgNk4AKoWESUCE0TAKqAefOncPDw4OYmJhyyy9evEjbtm2tuj5anW0//vjjliFV136sGe5Vm7Kzsxk1alR9N6PeyI0KGnHfffexZ88ejEaj5R7ULVu2VOvGc2u5urqyYcOGWt9Odbi5ufHBBx/UdzPqjQRUIxwcHPD09CQ1NdVyy95XX31V7u6gn3/+mbi4OIqLi3FycmLmzJm0atWKAwcOsGjRIkpLS8nPz2fChAn4+/szZcoUnJycOH78OJmZmQwePJjIyMgqtykrK4uQkBA+/fRTWrZsyeDBgxkxYgSurq4sXryYhg0bkpGRgaenJ3FxcTRo0IC//vWvtGvXjqysLL788ks+++wzkpKSKCsr4+mnnyYmJgaTycTkyZNJT09Hp9MxePBghgwZws6dO1m2bBk6nQ4XFxfi4+MpLi5m+PDhltEt06ZNIyMjAzs7O8aPH0/37t1ZunQp2dnZpKenc/78eXr06MGMGTNq+r+oflg1elTUirNnz6qePXuqzZs3q8mTJyullDp37px66aWX1JIlS9SSJUuUwWBQgYGBloHABw8eVKGhoUqpqwOBf/nlF6WUUt99950KCAhQSikVHR2txo4dq8xms8rOzlYdOnRQ+fn5N23b09NTBQUFlfv54YcflFJKJSYmqiFDhqilS5daBpTv27dPPf744+q///2vKisrU+PGjVMffPCBUkqp1q1bWwah79mzR0VFRSmj0ajKysrUG2+8oVatWqW2b9+uoqKilFJK5eXlqYkTJyqllAoODlYnT55USin1ySefqN27d1veG6WUevXVVy3bSU9PV127dlU5OTlqyZIlKiwsTJWWlqrCwkL1zDPPWOq520kPqiE9e/Zk/vz5GAwGy0iXjIwMAH777TfS09PLDWvLy8vDYDAQHx9PSkoK27Zt48iRIxQVFVle061bN2xsbHB1dcXFxYWCgoKbBobf6hA3LCyMrVu38vnnn5cbEP7kk0/SqlUrAIKDg1m7di0vv/wyAB07dgSuDio/evQo/fv3B67eyG5ra0vv3r2JjY0lIiKCHj16EB0dDcCzzz5LZGQkvr6+9OrVi65du1qmDgHYt28fc+fOBaB58+a0b9+eI0eOAFcHD+j1evR6PS1atKjyNCdaJwHVkEaNGtGpUydSU1PZsWMHH374IR9//DFwdbhT8+bNLUFSSpGdnY1er6d///54eXnRuXNnvL29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WJXrKCwspHfv3owcORKAlStX0rx5c6vacb3z588TERGBr68vEydOtKpsWloaR44cITg4GLj6/2PtlDgHDx6kdevW/OlPfwJg0KBBvP7661bVcT3pQatJr9fTpUsXNm++Orvf0aNHadSoEffdd1+V67CxseEf//gHX3/9NQDffvstTZs2vWU4oWYGrJ85c4ZZs2ZhNBoxGAxs3779pkO12+nZsyfffvst+fn5mM1m9u7di6enp1V1nD9/nrFjx2I0GikoKOCLL76o9jDC0tJSIiIiGDJkCJMmTbL6qMLe3p758+eTlZWFUorPPvvM6nHGrVu35vDhw1y4cAG4epbb2vfketKD3oHY2FhmzJjBv//9b2xtbVm4cCE2Ntb9zUtISGDWrFksWrQIZ2dnli5detsyNTFgvW/fvhw/fpzg4GBsbW3p27evpSevqvbt2zNq1CiGDh2K0Wi0HK5aw8PDg4CAAIKDgzGbzYwYMYKnnnrKqjqu2bBhA+np6axbt85yqN22bdsqH2I+8sgjxMTEEBERgclk4qmnnrL07FXVqlUrxo8fz4gRI7C1taV58+bVvvwEcrO8EJomh7hCaJgEVAgNk4AKoWESUCE0TAIqhIZJQIXQMAmoBpw7dw4PDw9iYmLKLb948SJt27at0rXRO9n2448/bhlede3H2mFftSU7O5tRo0bVdzPqjdyooBH33Xcfe/bswWg0Wu5F3bJli9U3n1eHq6srGzZsqPXtVIebmxsffPBBfTej3khANcLBwQFPT09SU1Mtt+199dVX5e4Q+vnnn4mLi6O4uBgnJydmzpxJq1atOHDgAIsWLaK0tJT8/HwmTJiAv78/U6ZMwcnJiePHj5OZmcngwYOJjIyscpuysrIICQnh008/pWXLlgwePJgRI0bg6urK4sWLadiwIRkZGXh6ehIXF0eDBg3461//Srt27cjKyuLLL7/ks88+IykpibKyMp5++mliYmIwmUxMnjyZ9PR0dDodgwcPZsiQIezcuZNly5ah0+lwcXEhPj6e4uJihg8fbhnlMm3aNDIyMrCzs2P8+PF0796dpUuXkp2dTXp6OufPn6dHjx7MmDGjpv+L6ke1R5KKGnP27FnVs2dPtXnzZjV58mSllFLnzp1TL730klqyZIlasmSJMhgMKjAw0DIo+ODBgyo0NFQpdXVQ8C+//KKUUuq7775TAQEBSimloqOj1dixY5XZbFbZ2dmqQ4cOKj8//6Zte3p6qqCgoHI/P/zwg1JKqcTERDVkyBC1dOlSy2Dyffv2qccff1z997//VWVlZWrcuHHqgw8+UEop1bp1a8sA9D179qioqChlNBpVWVmZeuONN9SqVavU9u3bVVRUlFJKqby8PDVx4kSllFLBwcHq5MmTSimlPvnkE7V7927Le6OUUq+++qplO+np6apr164qJydHLVmyRIWFhanS0lJVWFionnnmGUs9dzvpQTWkZ8+ezJ8/H4PBYBnlkpGRAcBvv/1Genp6uSFteXl5GAwG4uPjSUlJYdu2bRw5coSioiLLa7p164aNjQ2urq64uLhQUFBw06DwWx3ihoWFsXXrVj7//PNyg8KffPJJWrVqBUBwcDBr167l5ZdfBqBjx47A1YHlR48epX///sDVm9ltbW3p3bs3sbGxRERE0KNHD6KjowF49tlniYyMxNfXl169etG1a1fLNCIA+/btY+7cuQA0b96c9u3bc+TIEeDqAIJrj5ps0aLFbac6uVtIQDWkUaNGdOrUidTUVHbs2MGHH37Ixx9/DFwd+tS8eXNLkJRSZGdno9fr6d+/P15eXnTu3Blvb+9yw6yuH82v0+lQVt56bTAYyMjIQKfTcf78eUu47ez+76OjlCo3SKBRo0YAlpvfr91wXlBQgE6nw9HRkS1btpCamsqePXsIDQ1l8+bNREVF4efnx9dff018fDxHjx4lMDCw3Haup5TCZDLVyH5qlZzF1Rg/Pz9WrFiBq6srTk5OluUtW7YkPz+f77//Hrg6OdaYMWO4fPkyaWlpvP766/To0YPU1NTbDvi2xuLFi+nYsSNz584lOjraMgXIjz/+SGZmJmVlZaxfv55nnnnmprKdO3dmw4YNluk/xo8fT2JiIklJScyaNQtfX1/eeOMNHBwcyMzMtIytHTlyJCNGjOD48eM31XdtUPnZs2f54Ycf6NChQ43tqxZJD6ox3bt3Z8qUKYwYMaLccr1ez+LFi4mLi6OkpAQHBwcSEhJwcXFh4MCB+Pv74+joSPv27SkpKSl3mHs7Fy5csAxSvqZt27YMHjyYTZs2sWnTJpycnFi/fj3Lly+nS5cuuLu7ExMTQ2ZmJt7e3pbZIa7Xq1cvTp06xaBBgzCbzXh5eTF06FDMZjM7d+7E398fe3t7+vTpg4eHBxMmTOC1117D3t6ehg0bMmvWrHL1TZs2jRkzZliOIubOnWv1NC13GxluJqy2f/9+li1bxqpVq+q7KX94cogrhIZJDyqEhkkPKoSGSUCF0DAJqBAaJgEVQsMkoEJomARUCA2TgAqhYRJQITRMAiqEhv1/V7w5gGD1DmoAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "rna_data: OmicsDataset = OmicsDataset(\n", - " df=df_rna,\n", - " columns_cond1=columns_cond1,\n", - " columns_cond2=columns_cond2,\n", - " t_cond1=t_cond1,\n", - " t_cond2=t_cond2,\n", - " deduplicate_on_init=True,\n", - ")\n", - "rna_data.expression_histogram()" - ] - }, - { - "cell_type": "markdown", - "id": "b639ef92", - "metadata": {}, - "source": [ - "## Quality control\n", - "\n", - "Another basic technique for quality control is to create a scatterplot of technical replicates" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "22d636f8", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVoAAAE2CAYAAAAgZ1pXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVwdJREFUeJzt3Xl8VPX97/HXmTNzZs2+h7AjoCCIdQGtgqCilsWLYt2oUtvShda27q1etfqrWutSxbb2197WX22tXKmt9qftrbXW/tytWIKgyBL2kD2Z/Wzf+0fImJCFAAlJ4PN8PHzIzJw5+WQmeec73/NdNKWUQgghRL/xDHQBQghxpJOgFUKIfiZBK4QQ/UyCVggh+pkErRBC9DMJWiGE6GcStEII0c8kaIUQop9J0AohRD/zHuoJ3nvvPe68884O923cuJFbbrmFf/zjH9TU1JBIJKirq2PEiBEALF++nHPOOafbc/7617/mt7/9LY7jcM011/DZz372UMvs0oYNG/jWt77Ff//3f/fZOU3TZPHixR3u27VrFzNmzGDs2LG8/PLLAHz44YdMnDgRgFmzZvGtb32r23O+/fbb/Md//AepVIrp06dz22234fUe8lvXwS9/+UtWrVoFwPHHH8+dd96JYRidjvvd735HTk4Oxx9/POeddx5jx45F0zQcxyESiXDnnXcyfvz4Pq2tr9x88828+eab5OTkAJBMJsnNzeWee+5h7NixB3XODRs2cOutt9LS0sL48eO59957CYVCHY6pq6vj1ltvZceOHYTDYW6++WamTZvGj370o8zPA8DWrVu5+uqr+eY3v9nt19u1axff+9732LlzJ67rMnbsWG6//XYKCgoOqv7B4ve//z333nsvZWVlADiOg2ma3HjjjZx99tkHdc5YLMYNN9zA1q1bCQaDPPDAA4waNarDMa7rcs899/DPf/4Tv9/PlVdeyeLFi/nb3/7GI488kjmutraWUaNG8dvf/pYbbriB66+/npKSkt4Xo/rY008/rc4991wVjUYz97355pvqyiuv7NXzP/jgAzVv3jwVj8dVNBpV8+bNUxs3buzrMtWqVavUpz/9aXXWWWf1+bnbW7dunTr11FPVunXrOtw/fvz4Xj0/nU6rWbNmqc2bNyvXddWNN96onnrqqT6t8d///nfmNXddV11//fXql7/8Zafj6uvr1RVXXKGUUmr79u2dXrsnn3xSLVy4sE9r60s33XSTWrVqVYf77r77bnXttdce9DkXLFig3nrrLaWUUg8//LD64Q9/2OmY6667Tj300ENKKaW2bdum5syZo5LJZIdj3nnnHXX++ed3+L3pyjXXXKOef/75zO2f/vSn6qtf/epB1z9YrFq1St10000d7vvrX/+qZsyYcdDnvPvuu9Wjjz6qlFLq9ddfV5/97Gc7HbNy5Up11VVXqXQ6rZLJpFq0aJGqrKzscEx9fb2aM2eOWr9+vVJKqfXr16uvf/3rB1RLnzaL1qxZww9/+EN+85vfEIlEDuocf//735k7d26mVTB37lxefPFFli9f3u1zXnzxRX75y1+SSqVIpVJ873vfY/r06d0e39TUxCuvvMKDDz7ITTfd1OUxX//61znvvPP4zGc+A8CVV17J8uXLicfjrFixAk3TyM3N5f777++2NdHS0sLy5cu58cYbOfbYY3v7EnSwZs0aKioqGD16NAAXX3wxjz76KJdeemm3z9mwYQN33XUXiUSC+vp6rr76aq6++upuj8/Ozua2227LvOYTJ05k165dnY578sknmTt3brfnmT59Ovfffz8A27Zt44477qCxsRHDMLjppps48cQTu63t0Ucf5f3336e6uprFixcTCoV48skn8Xq9VFRU8IMf/IBAIMBPf/pTnnvuOXRd5/TTT+eGG25g9+7dfPWrX2XSpEl88MEHBAIBHnjgAYYPH97ja2uaJrW1tZkWbnvf/e53Wbt2bYf7Lr30Ui677LLM7d27dxONRjnllFMAWLx4MUuWLOG6667r8Lz169ezbNkyAIYPH05ubi6rV69mxowZANi2ze23384dd9yx39+buro6EolE5vYVV1zBlClTAHj00UfZvHkzO3fupKGhgUsuuYQvfelLAPziF7/g+eefx3VdTj75ZG655Ra8Xi8PPfQQr7/+Oi0tLeTk5LBixQqKi4s59dRTmTJlCtXV1dxwww38/Oc/x+v1UlVVxRlnnEFJSQkvvfQSruvys5/9jOLiYp588kn+8Ic/kEqlAHjwwQcZP348s2fPZuHChbz22ms0NTVx2223ccYZZ/T4fQLs3Lmzy/fmqaee4ne/+12H+yZPnsx//Md/dLjv73//O0888QQAM2bM4NZbb2XXrl2Ul5dnjlm3bh3nnHNO5tPbqaeeyt/+9jcmT56cOebBBx/kwgsvzHwCnThxIjt27GDLli2Z38v9Osg/Fp00NDSoWbNmqeeee67TYwfSor3tttvUypUrM7dXrlypbr311m6PdxxHLVmyRNXV1SmllHrmmWfUsmXLevW1umqVtfnrX/+qvvKVryillNq9e7c666yzlOu6auHCherDDz9USin1xBNPqFdeeaXL57uuq5YtW9Zt7b1t0f7pT39S1113XeZ2VVWVOvfcc3t8zt13361effVVpVRrC+qEE07o1ddSSqm6ujp11llnqTfffLPTYwsWLMh87/u+do7jqB/+8Ifq85//vFJKqUsvvVStWbNGKaXU1q1b1VlnnaUsy+q2tkceeURddtllmfOdcsopqqWlRSml1IMPPqgqKyvVK6+8oi666CKVSCSUZVnqy1/+snryySfV9u3b1YQJEzJf76677lL33HNPp/pvuukmNXPmTLVgwQJ1xhlnqNmzZ6t77713v63I7qxevVpdeumlmduWZalJkyZ1Ou76669XDz74oHJdV3300Udq6tSpHX5Pnn322V7/zP7jH/9Qp5xyijrjjDPUjTfeqJ5//nll27ZSqvU1vOCCC1Q0GlUtLS1qzpw56t///rf65z//qZYvX64sy1Ku66pbb71V/frXv1ZVVVXqK1/5Sub5N954o/rFL36hlGr9+XzttdeUUq2/vyeccILauXOnSiQS6oQTTsh8qrr55pvVr371KxWNRtWSJUtUIpFQSin1ox/9SH3ve99TSil11llnZc77//7f/1P/63/9r07f16pVq9TJJ5+sFixYoObMmaNmzJihrr/+erV58+ZevS5dmTx5srIsK3P70ksvVf/61786HLNy5Uq1dOlSlUgkVHNzs1qwYEGH39nt27er008/PfN9tfn+97/f5ae+7vRJi1YpxQ033MDs2bOZP3/+IZ9rX5qmdXu8x+Phxz/+MS+//DJbtmzh7bffxuM59Gt8M2fO5Hvf+x7RaJQ//elPzJs3D03TOPvss1m2bBlz5sxh9uzZnH766V0+/2c/+xm1tbUd+nkOhuu6ne7r6fWA1r7If/7znzz++ON89NFHHVpAPdmxYwfLli1j8eLFnHrqqZ0e37p1a4fWQE1NDQsXLgRaW4fHHHMMd999N/F4nMrKSm699dbMsbZts3v37h5rO+GEEzL/nj17NhdffDFz5szh3HPPZfLkydx3333MmzePYDAIwEUXXcQf/vAHZs6cSUFBAccffzwAxx57LO+++26X3+M3vvENFi1axJYtW1i6dCmnnnpql63I3rRoe/ve3HLLLdx1110sWLCAqVOncuqpp+Lz+TKP/+53v+uxj769M888k1dffZW33nqLN954gx/+8If86U9/4qc//SkAF1xwQeb7mTNnDu+88w51dXWsWbOGiy66CIB0Oo2u61x55ZV85zvf4ZlnnmHLli2sXr26w6eAadOmZf49YcKEzHufl5eXaY2Xl5fT0tJCJBLhoYce4oUXXqCqqop//vOfHT7FzZw5E2htDTY1NXX5vc2ePZt7772XWCzGl770JcrLy7tsMfa2RdtVluybDRdddBFbt27lkksuoaSkhNNOO410Op15fOXKlXz2s5/N/My1KS8vp6qqqsvvoyt9ErQ//vGPicVi3HzzzYd8rpKSEmpqajK3a2pqKC0t7fb4eDzORRddxIIFCzj55JOZMGECv/nNbw65Dp/PxznnnMNLL73ECy+8kPlIvHz5ci644AL+8Y9/cP/997NmzRq+8pWvdHjuW2+9xRNPPMH//b//t8sLSgeitLSU2trazO3a2toeXw+Ab37zm0QiEebMmcMFF1zQq4t969ev50tf+hJf+tKXWLJkSZfHaJrW4SJccXExf/zjHzsdF41GMQyjw2N79uyhqKiIa6+9ttva2v8w33PPPaxbt45XX32VG264geXLl3cZbLZtA+D3+zvU2dUvWXujR4/m+uuv5+abb+bPf/4zubm5HR7f95e2K719bxKJBHfddVcmAOfPn5+5MFxbW0t1dXWm+6EnTU1N/OQnP+GWW27hzDPP5Mwzz+SrX/0qn/70p2loaADo8P64rouu6ziOw9VXX83SpUuB1vdH0zTWrl3Lt771LZYuXcrcuXPxeDwdXrf270f7PwwAuq53uL17926uuOIKlixZwplnnklhYSHr16/PPN72/uyvkQAQiUQyf1Q//elPc/LJJ3d4/LLLLuvwB687JSUl1NbWZi6wdfX+NDc3s2TJEq6//noA7r777sx7A/DSSy/x2GOPdTq31+vt9Br05JCbfq+//jpPPfUUDz/8cKc342DMnDmTv/zlL8TjceLxOH/+858zfw27UlVVhaZpfOUrX2H69Om8+uqrOI5zyHUALFy4kF//+tdompa5Kj1v3jwAli5dytVXX826des6PKempobrr7+ee++9l2HDhh1yDVOnTqWqqopNmzYBsGrVKmbNmtXjc1577TW++c1vcvbZZ/POO+8A9PiaNDQ08IUvfIHbbrut25AFGDVqFDt37txvzVlZWYwaNSoTtO+++y6LFi3Ctu1e1ZZMJjn77LMpLS3ly1/+MgsXLmT9+vVMnz6dP/3pTySTSWzbZtWqVZ1+CQ/EvHnzGDlyZJe/SL1RXl5OMBjk7bffBlrfm65+Vp988snMH///+Z//wbKsTH/f6tWr+dSnPtWrAMrKyuJvf/sbzz33XOa+bdu2kZ+fn+nLfOmllzBNk+bmZl5++WVmzJjB9OnT+eMf/0g8HsdxHL71rW+xatUq3nnnHaZPn87ll1/OuHHjeO211w76d6eyspJRo0axdOlSpk6desi/h8OHD2fJkiXcc889+/2j2Z1Zs2ZlRtK89dZbhEKhTkG7evVqvvOd76CUorq6mr/+9a+ZUQ5NTU1Eo9EuW9U7duzoEMj7c8gt2p/+9Kc4jpPp7G8zf/58vvCFLxzw+Y4//ngWL17MJZdcgm3bXHrppUyaNKnb4ydOnMhxxx3H+eefTyAQ4OSTT2bnzp0opXr1w9uTKVOmkEqlOlx4uu6667j22mvx+XwEAgHuuOOODs9ZuXIlLS0tPPDAAzzwwAOZ+0ePHs3DDz98wDUYhsH999/PddddRyqVYsqUKVx++eU9PufrX/86l19+OdnZ2YwaNYqKigq2b9/eaWhLmyeeeIJYLMZjjz2WCZ2uhpzNnj2bN954g3Hjxu237vvvv5877riDn//85+i6zo9+9CMMw+i2tvaCwSBf/vKXufLKKwkEAuTk5HDvvfdSUlLC+vXrufjii7Ftm9NOO43Pfe5z7NmzZ7/1dOfGG2/kqquu4oorruj29enJAw88wG233UY0GqWioiLznj/11FPU1NRw7bXXsmzZMq677jqef/55IpEIK1asyHyE3bZtW6bF1d4Xv/hFvvGNb2S6Q6C1Ffmzn/2Me++9l4ceeohAIEBxcTE/+clPMq2rcDjM5ZdfTjQa5Ytf/CITJkxgwoQJfPTRR1xyySU4jsMpp5zCFVdcQX19PcuXL2f+/Pn4fD4mTpzY6b3ordNPP52nnnqKCy64AMMwmDJlChs2bDioc7VZtmwZzzzzDM8++yyLFi064Odfe+21fPe732XevHkYhsEPfvADoPWPwiOPPMJ//ud/ctZZZ/E///M/mQbUd7/7XSoqKoDu3xtoHXJ5IL/PmjrYPxfiqNPQ0MDXvvY1nnrqqYEu5Yj3q1/9itNPP51jjjmm18959NFHgdY/tKL/rFu3jp/97GcHFLR9O+q9l371q1/x7LPPdro/HA7z29/+ttP9qVSq20kL11xzDQsWLOh0/3333cfrr7/e6f6DbVn2p3fffZe77rqry8ceeughxowZ0+n+6667jo0bN3a6/9RTT+U73/lOp/tfeOEFHn/88S6/Rm+H4+Xn5zNv3jxeeOEFLrjggv0eLw5eXl5erz45iMPv5z//+QFfj5IWrRBC9DNZ60AIIfqZBK0QQvQzCVohhOhnA3IxrL+cdNJJmKZJUVHRQJcihOgHtbW1GIbR7cy/weqICtp0Ot1nkxWEEIOPbdsHPYFhIB1RQVtcXAzA3/72twGuRAjRH+bMmTPQJRwU6aMVQoh+JkErhBD9TIJWCCH6mQStEEL0MwlaIYToZxK0QgjRzyRohRCin0nQCiEOi1gsNtAlDBgJWiFEv6usrOTpp58+6B0chjoJWiFEv6qsrOSNN97AcZwOG68eTSRohRD9pi1koXX78hNPPHGAKxoYErRCiH6xb8iedNJJh7xh6lB1RC0qI4QYHDZt2tQpZNO2i+m4GLqHgE8f4AoPLwlaIUSfGzFiBGVlZZSWlmZCtro5Sdp28Xs9lOYEj6qwlaAVQvQ5n8/HBRdcgMfjQdM0TMclbbvkhgyaEiaW4x5VQSt9tEKIPlFZWcm//vWvzG1d1zN9sobuwe/10JQw8Xs9+PSjK3qkRSuEOGTtL3yVlZVRXl7e4fGAT6c0J4jluPikj1YIIQ7MvqMLysrKujwu4NOPuoBtc3S134UQfUqGcPWOBK0Q4qBIyPaeBK0Q4oDV19dLyB4A6aMVQhywgoICTj/9dBKJhIRsL0jQCiF6zXEcdL31gtakSZMGuJqhQ7oOhBC9UllZyR//+EfS6fRAlzLkSNAKIfar7cJXXV0dGzduHOhyhpzDHrSxWIz58+ezY8cOAB544AFmz57NwoULWbhwIb/5zW8Od0lCiB7sO7rguOOOG+CKhp7D2ke7evVq/vf//t9s2bIlc9+aNWtYsWKFvHlCDEIyhKtvHNYW7cqVK7n99tspLi4GQCnF+vXreeyxx5g/fz533303pmn2eA7TNInFYl3+p5RCKXU4vhUhjngSsn3nsLZo77nnng63GxsbmTZtGrfccgulpaXcdNNN/OQnP+Haa6/t9hyPP/44K1as6Pbx7OzsPqtXiKOVaZqsWbMGkJDtC5oagCbg7Nmz+a//+i8qKio63L9u3Tq++93v8uyzz3b7XNM0u231LliwAICXX36574oV4ijV3NxMVVUVU6ZMGTQhO2fOHAD+9re/DXAlB2ZAx9FWVVXx73//m4ULFwLgum5mjF53DMPAMIwuHxssPwxCDFXRaJSsrCwAcnJymDp16gBXdGQY0OFdPp+Pe++9l+rqapRSPPnkk5xzzjkDWZIQR63KykpWrlzJtm3bBrqUI86ABu2wYcO45ZZbuOaaazjvvPPweDwsXbp0IEsS4qjUfkvw2traDo+lLIeWlEXKcgaouqFvQLoO2vehLliwINO3KoQ4/HraErw5YbK9MYFSkBXwHnV7ffUVmRkmxFGspyFcKcthW2OCnY2tmypGUzaW4w5kuUOWBK0QR6n9jZM1HRcUFEQM6mNpPBpH3V5ffUVW7xLiKKSUoq6uDuh+nKyhe8gKeCEFw/KCVOSFpNvgIEnQCnEU0jSNWbNmMWrUKEaNGtXl0Mi2DRULIkfnhop9ST4HCHEU2b59e2aauqZpjB49usfx5wGfTlbAJyF7iCRohThKVFZW8uKLL/LKK6/ImiCHmQStEEeB9he+IpHIAFdz9JGgFeIIJ6twDTwJWiGOYBKyg4OMOhDiCLV27douQzZlOZiOiyEjCQ4bCVohjlDZ2dnous6UKVM6hOzW+jjxtE3Y72VkQVjC9jCQoBXiCDVixAguuugicnJyMt0F0ZTFzqYkAa9OUzJJQdiQoD0MpI9WiCPI+vXraW5uBlrXKvAEwqTtjusTaEoBau//pb/2cJAWrRBHiLYLX+FwmHkLLqQxrUjbLn6vJ7PqVlbAR3leiHjapiDiJxKQCDgc5FUW4gjQfnTB+PHjwesjHU+RGzJoSphYjkvApxPw6YwsCGM5Mq32cJKgFWKIax+yx085gfGTp4ICv9dDU8LE7/V0WHWrLXDF4SNBK8QQtm/Ilo49lurmFH6vh7yQgcejSct1EJCLYUIMUR9//HGHcbLHTT0B01HkhgzStovHo8mCMIOEtGiFGKJGjBhBYWEhw4cP56STTspc+Oqqu0AMLAlaIYYov9/PggUL0HUdTdMy68fKha7BR4JWiCGksrISj8fDpEmTAPB6O/4Ky4WuwUmCVoghorKyktdffwMXRXZuPsOHlQ10SaKXpBNHiCGgLWQtx2X4uOOwjQgpyxnoskQvSdAKMci1DeFyUYyaMImTTjoJ01Gy9fcQIl0HQgyg/S1Z2H6c7KTJU8gbOZHaaJqsgFdGFQwhErRCDJCU5VDdnOy0HkFb+DbX12VCdvKUqZSNPY5Y2kHTIC8kq24NJRK0QgwQ03FJ226H9QiAT8LXn8XUaSfiQTF+8lSqm1MUZwdoSph4PLLq1lAiQSvEADF0T6cJBqbjkjRt8iOtgXrc8VPJCvhIWY5MRhjCJGiFGCBdTTBY98FaPvx4E1OnzyQc9GcCVSYjDG0StEIMoPYTDCorK3n37bdQCsymasaWTuwQqDIZYeiSoBViEGg/uuDEE6dxwuTjZLfaI4h09AgxwGRL8COfBK0QA6h9yE6eMpXxk6d22uNLDH0StEIMkFQqxerVq4FPxslWN6eobk7K9NojjPTRCjFAAoEAn/nMZ9i2bRtjJk6iurl1j6+alhSG1yRftgI/YkjQCnGYJRIJQqEQAAUFBRQUFGTGyda0pGhOmACYtpOZLSaGtsPedRCLxZg/fz47duwA4O2332bhwoXMnTuX22+/Hdu2D3dJQhw2lZWVPP3001RXV3e4v22cbEHET07IoDg7QNp2ZeGYI8RhDdrVq1dz2WWXsWXLFgBM0+Smm27i4Ycf5s9//jOpVIpnnnnmcJYkxGHTduHLsix27dpFynKojaaojaZIWQ4Bn05+2CAr4JUZYEeYw/ourly5kttvv53i4mIA1qxZQ0VFBaNHj0bTNC6++GJeeOGFHs9hmiaxWKzL/5RSKKUOx7cixH6lLIeWlEXKcjIhqxQce/wUxkyYxMd7ory1uZ73tjaytT6eCdvSnCDluUHpNjiCHNY+2nvuuafD7T179lBSUpK5XVxczJ49e3o8x+OPP86KFSu6fTw7O/vQihSiD7RfmWvn5o/4uLJ1dMHICcdRNOpYNtfF2VYfJ227+HSNprhFea6bmf0lAXtkGdCLYa7buf9pfwO1ly1bxtKlS7t8bMGCBX1SlxCHqm1lrtptG1m7+l0Mr4dJU6ZSNOpY8sJ+mhIx0DS8uoe4aWN4NekmOIINaNCWlpZSW1ubuV1bW0tpaWmPzzEMA8MwunxMZtOIwcLQPRi6xo4dO/FoGlOnTuOEE09kT0uKpoRJXtgg7PcST9sYXg9jiiLSij2CDWjQTp06laqqKjZt2sTYsWNZtWoVs2bNGsiShOgTAZ9OWW6I8+aew85tWxkzdiyWq8gLGXg8n7ReZTWuo8OABq1hGNx///1cd911pFIppkyZwuWXXz6QJQlxyKq27SCvqBi/Vyc3HEAbOZqNtTFQkBXwdrjIJQF7dBiQoH355Zcz/z7llFP4wx/+MBBlCHFIutrv6733/83rr79BxZjxjJk0DYC6WJqE6VCaE4AUFERcCdijjMwME+IgdLXf18cfruOtt97EUQrl0XlnSz3NKYdk2mJkYQSAUYVhueh1FJJ3XIiD0H6/r7TtsqayktdffwPXVRSMGE9LaDjbGuKgHCxXURdNkhfyMTwvJK3Zo5C0aIU4CG37fdW0pNi+6UM2r3sfx1WUjTmWYNk40rbCdmBnU4oReSHK84OMKoyQE+p6xIw4skmLVoheaj/TK+DTyQsZ7Nj8ERsqV5MyHbKHjWPYuONIWS6NCZNjSrOoyA8xpiiLKRV5FET8A/0tiAEiLVohemHfPtm8kEHMtEE30DSN3OHHMPrYKTQmLEKGDkpRlB2gLCfIhNIsmU57lJOgFWI/UpZDfTxNNGWTE/KxqzFJQ9xEKYgb+WRPOA3LGySRcjB0D1kBH0GfTtDQKZM1CwQStEL0qK0lG03Z1Lak2NWUpG7nFnIKSsnJjrC9IY6rfGA71ESTjC7MYkxxhJqWFIURP3myeLdAglaIHrWNLijODhBP22z9eD21G9eyZ8tHJEpPoKrJJGk6TCzLxpeE5qRJTUuKrIBXQlZkyMUwIbqRshzSe/fuakqYNOzYyI4NldiOi55TQsrVOKYom7Ch05SwKM0NUpgVoDDil+4C0YG0aIXoQvuLXwDVVRvY9MH76B6NirHHssNTTGNNjN0taXICXiYNy2J4Xpiy3IC0ZEUnErRCtNM2rTZtOZkJCf/z1ntUrV8NaARLx/B+Io8djS04CkqyA4wvCTNrQglFWQFZIEZ0SYJWiL32bcUCvPv+WjasfQ/HcdEKR/FhLIdtDQ24CnQvFGYZ5IX9ZAd8ZAV8A1i9GMykj1YIOg7hyt07e6sg7Gf48OH4g2G8RaN5L57Hpto4zWmbqGmhazpZfh8jCsJEJGRFDyRoxVGvrSXbEDNpTrSOGvB7PUQCXkoLsolMmMG6dD7NcYuWlIlyXQyPh+F5AU4/poiJpdnSXSB6JF0H4qjUfolD03GJpmx0XSNluUQ3fURudoiUPYLNtTE21iXZ1ZQiYds4SiM35KUsEuTMCSVMH1Mg6xeI/TqgoF2/fj27d+/m5JNPJisrK3P/Sy+9xNlnn93nxQnRH/adThsydGpjaarqYjRs34hT/TGOAn3UKXzcoqiJpkhYNqBREPZTlOVnckUu40uy8UtLVvRCr7sOnnjiCa677jpWrlzJeeedx5tvvpl57LHHHuuX4oToD22TEAI+nfq4SWPCAqWw67Zh7t6A4yqag2Vsbnb4qLqFXQ0J4qaNpkFu2GByWTbnTCojK+jFcjpvMCrEvnrdon3mmWd45plnCIVCvPvuu3zzm9/k0UcfZdq0aSil+rNGIfqUsXfh7c01UUxHUdeSYueWDezZWInrKlLZw6lM5FJb20Q06RIOaPh1neH5IU4ZncfJo4sI+734vR5ZxFv0ygH9lIRCIQBOOukkfvCDH/D1r3+dLVu2yO6zYtBov5RhdwI+nbBfx+v1kBfysXPLxzRs+QAAb+FINjqF1MSSJE0XU4HrKnJDBmMKw5w+roQpFbmUy2Ix4gD0ukU7efJkbr31Vr70pS8xYsQITjvtNK6//nquuuoqHKf7H2ohDpeutpfpKghTlkNj3KK6McWu6l3EPv43jgs1vhJWV4doiEZJKtABHxAK+BhXGmHmxBImlmXLxS9xwHrdor3zzjsZPXo0NTU1mfsuvPBC7rvvPkaMGNEvxQlxIPbdXqa7/tO6WIqNNVH2xFJsjfto8pfwsZXHS3vC7GyxSLbrCQv7YWJJNhdMLmf6mEIJWXFQet2iNQyDa665ptP9M2bMYMaMGQB8+9vf5sEHH+y76sRRratdZnvS1ve6szFB2O/t1H+ashyiKYvNNXE2VEfZVBtjS02U7Q1hUioMdOwCyzJgckUe/+vE4ZwxvkhCVhy0Ph1Hu2XLlr48nTiK9bYbYF+m7RJP2x1CNmU51MVS1LSkaYiZrFm7hlhNNRtiJexptknR+RqDH5hSkccVM0YyfYyErDg0MmFBDErtuwGaEiaW4+43aKMpi9pYGg8aWxvi5Id9+HQPH1ZH2dOUJGraRHdtpmHLB1i2wpPQSZLb6Tw+4NjyCFeeNoozJ5TIBS9xyCRoxaDUtstsU8LscRhV++4FgETapilhYToOm2pjNMRNttTG0DQNu24rzVvXYdoum5wCNrs5nc4X0uDkMXlcMLWMGeOKJGRFn5CgFYNSwKdTmhPEctzM0oP79tm2dS/UxUxs1yU74CVlOtREU5RkBaiPmlS3pAh4vWz86AMCTVtIWQ7r0gWsdwrZt08W4JiyMGdPLuOEEQUyRlb0mT4NWpm4IPpSwKdnWpRd9dmajktdzGR3U4LdzSk0jdZQ9rbO+GpOKuqjJqnaKnwNm0naDh+YhXzkFLFvyHqAT43I4dJTR/CpkfkyRlb0qT4N2tNOO60vTydExr59trGUjUKRMG1qY2nyQj6qauNkhb3URFN40GhOWtQ2t1BQsxHlOKy3ug5ZgGOKgsyeWMLkYbkSsqLPHXDQvv322/zyl78kkUiglMJ1XXbu3Mnf//53brzxxv6oUYgOfbam7bKtIY5P9xA2dPLDfnY1xKhPpNlYF2td7jCZxrZcGhMmmlVBgSfOx910FwzL0Vg+ZzzD8kIUhP0SsqLPHXAn1G233cY555yD4zhcccUVjBw5knPOOac/ahNHgf1NmW17HKA0J0hB2MByXHY1JdnWEKcmmibk8+D1egn6vCTSDrWxJNUNMTY3mTSa0KBCfNxNSzbHgM9MGcGowgj5YYNIQC5biL53wD9VwWCQRYsWsWPHDrKzs7n77rtZtGhRf9QmjnD7Gyvb1eOGTydtOdTF0qzb2YxSLmlH4bqKXc0p6qNJQvFqZuh1vOGOpEUFuv36w3MNZk0s5tTRBRRG/LKpoug3B9yi9fv9NDQ0MHr0aN5//300TSORSPRHbeIIt78ps109rlxFNG2zuzlJyrRpTtqs39XMlro4m/e04I9WM86zB0NzKPHEuv3aEwoDLJk+klNHF1KRH5aQFf3qgFu0V199Nd/+9rdZsWIFF110Ec8//zyTJ0/uj9rEEW5/U2bbHt/RmCCy93ETlyy/j6KIwUe7WmiIt24902LCaL2eCd49AGywC/nYKejy6xYG4a5FUxlTFAE0IgGvhKzoVwcctOeffz7nnXcemqbx7LPPUlVVxcSJEwH405/+xLx58/q8SDE0dDXO9UDWKuhO+55V5Sq218dZu6OZ5oRFbUucZhPG6PVMahey3Y0uMIAvzTyGU8YUHnQ9Qhyog+r5b1t/NhQKcdxxx2Xu/8UvfiFBe5TqanuYmmgapSAr4O1yyJS5t6tgWF6o0zTbtl1pTdulMMvPrsYksZRNTTTJ/1u3my118b3HqF6HbMQL86aUcuGJw/v3xRBiH4NmwsK3v/1tPvjgAwKB1osXy5cvl9EMQ0j7/tSalhR7WlI0JSwKIn5I2RREOq9VsO80W9dVtKQslKtoTJhEUza7mpJUbm9kR3OSHfVxdjQm2VAdJWVD6y5eilJPFOg5ZI8vDbF8zgSmjcyjODt4GF4RIT7Rp0F7KDstrF27lpUrV5Kbm9t3BYnDpn1oahroHg8FEYPq5iTFWX5ct/Mf4fbTbF1XUd2SojHe2rINGl6Ksvx8uLuFrY1J1u9sYnNtjLhpEbM/OYdC4y1rBOWeFra7OXQVsicNz+bexVMZV5zdj6+AEN0bFIMGGxsbaWho4MYbb2T37t3MnTuXr33ta10Gt2mamKbZ5XlkCvDA2Tc0GxMm9TETw+vB4/HQmDDx751Su2/fbcCnUxtNUVUXJ562aEpa5IcNWpKtkxM05bKzKUlNi0XbO5+rJWlSrS1TBw/b3dwu6yqJwFWnj6ZEWrFiAA2KoK2vr+e0007jzjvvxO/38+Uvf5nS0lIuvvjiTsc+/vjjrFixottzZWdLq2WgtF+bwO/TMbweDK+H4uxApg8W6HbsrOW4WI7C0D3sakiw2Xapa0mytT5JbXMqE7JtfbIf2UVscIq6rUcDzj++nFGFEVkgRgyoQdFHO27cOB555JHM7SVLlvDHP/6xy6BdtmwZS5cu7fI8CxYsOKivL/pewNc6Nda03Q5LHXa3zqyxdzGYrXVxaqJJNlZHqYmmaEikaUmCtfe87S98eVCAoqvuAoBFJ5Yx59hhlMnaBWKAHVDQbtmyhRdffJHq6mo8Hg+lpaXMnDmTY489FoCnn376oIqorKyktraW2bNnA+C6Lrre9S+GYRgYRter3ctuvINLV0sdAp0ugNVGU2yrT7CtMc7uliQf746ysaaZaAradxK1D9mP7UI+7ObCF8DJw3M4e2IJw/NDMq1WDLhef55auXIl3/jGN1BKcfzxxzNp0iRc1+Wmm27iiSeeAFpnjR0My7L4/ve/TywWwzRNfve738mIg0GqN9t5txfw6WQFfJmQTVvO3ucqQoZOY8JkW0OCD3Y1URtN0Rgz2dYQo/4QQvak4dmcMiaf7KCPvJDM+BIDr9d/6n/xi1/w+9//nnA43OH+q666iosuuoirrrrqoIs48cQTufzyy1m8eDGO4zB37lwZjzsIHew+Xm2bIrakTD6ujrOruXXK9oi8MJoGjuuwuTbGhj1R1u9sojHd8fkHErIV2T5OHJXPyIIwXo+OxyOfcsTA63XQ6rqO19v5cI/H0+X9B+rzn/88n//85w/5PKL/tPWvBg2dumgan66RFTR6nPmVshy21sfZ1ZigLm6yoz6BV9dIpG32NKeJpyx2NCXY2RinLpruFLIA7t5Q3V/IlkY8HF+RQ2HYICdkkLt3zzAhBlqvE/Kyyy5j8eLFzJ07l5KSEgBqa2v5y1/+wmWXXdZvBYrBo23tgY01MSzbpSlpURTxdzvzC1rDOZa20TQNTVM0J00akiaW6dKYtGiIptjVnOowNnZfVU4+TW6QJhWgu5AdmWswsTSbM8aXMH1sPtkBv6xhIAaNXgftkiVLOOmkk/j73/9OZWUlSilKSkq4++67ZVGZo0TrSAKDeNom4NPZ3pAg5PdmVtbqKtQM3YPP42FbfZytDXGakibptENVbYzqaIrmrodEU+FpYo8bwdr7I9o2ZrYrw7O9LDxxGGXZIT49vpDh+ZE++X6F6CsH9Jn/2GOPzYww6MqVV17Jk08+echFicGlbYKB2ju7K+z3YtouPo9GbUuKvLCRmT7bvhuhpiVJY8Iibds0JtJsr4tT3ZKiPp4mnra7Ddm2PtlmN8Br1iicHq7Zloc1Pn/mWM6cUEoibZMbOrgLskL0pz4d9xKLdb/+pxia2i6ARVM2zQmTnFDr0DpD95AT8qFpGmnLpbolBYBpu0T8Xhzl8v7WRnY1JalpMdnTkqQunkbDQ13UJt3NkOv2F75q3AhON10FAPl+WHrmMZw2rhjbcckKdF5qUYjBYNCsdSAGn7YVtKIpG92jURczyQoa1MfT+DwatuMypjiLulgaO+2SFfSydmdzZprtlpoWWlIOa3Y2oSmHeFqxJ5ruVcju78JXnh/OOraEM8YXM7Ig3GmsrhCDiYzkFl1q35KtjaVJpG2Sps3m2ihhQ6c4L8TWujjVTUlyw62t3OqmFCnLZlhekA17WthQG+PD3S3E0ja2DbiQ6ubrHUjI5gfgnEnlnDiigMJIoMPUXyEGIwla0SXTcYmmbEKGF69mkhvyMaE0i4aYiQJ2NiaxXBcFlGYH8Pt0lHJZv1vx/rYGHFeRTrskTJtYN32xbUZ4GnsdsqNyvCyYVsHUkflU5IVl1pcYEgbFWgdi8FGuorYlRUvKJmjolOcGcRWU5ARwXUV9PE1u0CBp2liOAhx2NaeojabQ0GhImOyJJmjpYlzsvupVmJTyst3J7TFkh2W3huyFnxpOUVZQugrEkNHroH3ppZc4++yzezzmwgsvPNR6xABrG2EQTVtYriIS0HFcyA8bZAdbJwBEUxZejwfbVURTFut2NbOnOcUHu5upqotS32KysyVOQ7J3XzOuDF4xx2Ch033Ierhw6jAmV+SRHfCTFfD13TctRD/rddA+9thj+w3aq6+++lDrEQOoOWGyvTGBUhBP2yRNh9yQD11r/aTS9nmlbeLC5tooOxqSJC2b2qhJ0rTZ2ZSkvsUkuZ8PN6P1BuLKR42bBZAZL9uVUbk6S88Yx4TSXPLChnQXiCFHfmIF0NqS3daYYFdjEsPnobYlhQeNeNqmNCdILG3TEG/dPSFoeLAcl6TpsLUxgUftnfEVb13se38h23bhy0XjFXMMcdX92NeID46ryOfUMUUMywtJd4EYknodtFVVVXzuc5/r9vH/+q//6pOCxMAwHRf2bqS4dlczmlKMK8km5NMpCPuJpi3Stkt9LE3I0LH3zgQLeT1UN6eojaWxbZv9LerVfnTBRruAuOp6yUsAH3B8RS5jC7Myq4AJMRT1OmiLiopYvnx5f9YiBpChe8gKeImnbXKDPsJG67+LsvzkhX00JNJsqY2RF/ahezyU5QZJmA5BQ8d2FTiK+riihyULer1bLUBIg5NG53LS6EImD88lL9R9IAsx2PU6aMPhMKecckp/1iIGUMCnkxcySNsuzUkLy2ldMyvoa+2PdV1oSprsbkqRFdQZkRfGtG1iKZvmhEVT2s7sgtCVAwnZoA7nTi7hwhOHM6ogTF7IyMxIE2Io6nXQfvTRRySTSYLBzot7/J//839kicMhLmU5NCZMGuMmCdNmWG6QnU1JNtXGqWlJtw7hUrClLsquphQhv059LE1tS5LdsZ77C4o9sV6HbGFI45xJ5Vx6yggmlOb0uPxi+w0ehRjMej0x3OPxsGjRIjZt2tTpseeff75PixKHX9sEBVcpYmmbtTub2FAdZWdjktXbGnlvSwOvfVzD+9sa+WhPE5XbG1i/K7bfkAWoccPscHL2G7IlES+f/dRIThyZT3FW94uKt81a292UpLo52evdHoQYKL0O2nHjxvH5z3+eyy+/nBdeeKHDYzJRYegzdA9oEE3ZDMsLYbuKuGlR3ZzkX1vreWd7Ax/XxKhrSdOUgrqk6rGroFXbz4XGaru8x5AtjWhMH1NIQU6AgpBByOi+ldp+g8e2JRqFGMx63XWgaRqLFy9mwoQJfPOb32T16tXcfPPN6Loui8kMQft+9A74dEbkhfAALSmbwkiAZNqicmcLdVELpVxakhbRXjYex+j15GgpVtvltIZr9z8jPuDs48r5zNRy8sMBSrMDPfbJGrqnwwaPsmKXGOwO+Cd0ypQprFq1iqqqKq688kr27NnTH3WJftT20XtrXZyNNVGaEyYpy6EuliJlO+SFfIwqDFOUHebY8hzCfp2auIm5/yYs8MmFrwq9mTJPtMdjQxpMGhZhfEk2+eEAfq8HfxddBu03hWzbXbc8N9jrfcuEGEi9btG27x7Iy8vjP//zP3nssce4+OKLcV356DaUtPXHto2LtWyXpOny9uY64pbNiPwQM8YVMrEsC4VLll8n6PFQ04tz7zu6YPfemV9dCQHjSyOMKgyTsl08HrrcraG7TSElYMVQ0esW7e23397pvq997Wvcd999jBs3rk+LEv3L0D1oGtTH0hREWvs5dzbFqYmlsVz4sDpKY8wiO+gFpYGmkRsxevjw3+pAhnBFNDhtfB7HDcvhzGNKCfo87GlOddkVIH2yYqjrdYt22rRpXd5/2mmncdppp/VZQaL/tG37DZAT9NIY10mkHfLCBkGfTk1LkpSlcF2Xv6/fRdx02R1NsqE6SiJt0lP37AFNRvBAeUGA7FCAvLCfplSaYbkhRheGKdi7vmx70icrhjpZ6+Ao0ZwwWbe7mermNF6P1tqijadwXDhWz6I0N8iwvDDVzQk21SZ5dVMddS1pNA1qo06PM76CmByrt3Ys7C9kfcC04TmcOCafoiw/E0tzMR2H0YURhuWFunxOW5+s7KIghioJ2qNAynLYVBvj/a1NJGyHsE+nLmYSS5lontYuhLLcAM0Ji/W7W2hJtq7UHU3TYyu2TRKDd+zh5GpJNjiFdDvjywNzji3kvCnl5IeDuK5L0NApDvgpiPS8qaL0yYqhTIL2CNacMImZNkqp1otfjk191KTWdXEUxFI2oKhpTrNhd4w90QRNcZOERY8t2DZeHGz27njrRqih522+Z04s4Jtzj6Uir3WPL9dVeDyatFLFEU+C9ghV05Lk/e1NmLZLyO/FsRWWrcgJ+3AdhaFr1OsaVXUJlOsSMx12NydI9jJkx+j1jNXred0a2eMyh5nj8wwuOnEk44qzAQ45WGUKrhhK5KrCEShlOXxUHWXjnhgakEjbFGb5OKYkm2NLsimI+PF4NExH4dMh7TooFCmrN7O9PrnwFdBsSvczThZad6w9cVQhE8u7H+p1IGQKrhhqJGiPQNGURXPSQvfA+uoWNGBYXohjy7PJixjkBn0EfV4Mr0bQq+PXdVKWS7oXKbvvbrWbnIIej88LwBnjizlhRB6OS2bSwaGQ4V5iqJGugyNUyO9ldGGE+nia4QUhsoMG2UGDiN9LU9xk4+Yo2xsS7GpKYOGSTDr7bc0eyJbgPmBMYYjS/CB5IYOIX89Mkmg/6eBgtA33qmlJgQauK2ttiMFNgnaI6U3fZFbAR1HET200RX7Yj2Ur1u1qJmh42NGQYs2OJjbWxaiLpWmMW+g6RPeTsgcSsjkGTCzPYVJZDiMKwgR8HsYUhTG8HnJDBk0Js9PsrwPRtnZuPG3jKmhMmPhlVIIYxCRoh5DupqK2PdYWwABpy6UlaZOyHTQ0PqxuoSGepqYpSU08RV0sTdqyMR1wnU/W2eqKhkuFpxnYf8j6NZg2Mo+F04ZTEDHw6zq5YYPS7ACNCbPPJh1oHg2v3jfBLUR/k6AdQtr3TbYPl/YBDJC2Hd7bVk9D3GJXc4LsgBfX1aiqi7G7KUnSah3ClUr37uKXwsMb1kiGeZqpcvPoacbX+NJsFp80gk8fU4zfp3eYZLDv7UMhs8XEUCJBO4S0DxeA5qSZubCUtltDd3NNlLpYmtVbG2lKWTRE00QCXrIMHzsaEzTETNJ2a1Sa+/l62VqKFhUAwEKnys3v9tj8AJTnhZk9sYhPH1PcYZnDaMoimrLICvj6bINFmS0mhhIJ2iGkLVxiKZvdzUmq6uLYrktpdoBIwEddLI3pKEJ+L6btEk9ZWK5iV2McUDTEFOlefq3Rej2TvXuotEupcroPWIBsP4SDBiPyQxxbnpNZ5jBlOWytj7OzKYmmFOV5IUYWhPssFGW2mBgq5PPWEBPw6Rg+D/G0TWPcZFdTig3VMXy6Rl7IR9K0qYumyQ0bmJaiKZEmkXZpPIiQBQjsZ/qCAQS9rVuSnzAil4Isf2a4lem4xNM2AW9rt0E8bctQLHFUkhbtENR2wWtHQ5yErQgZHnY0BjB0nYaEieMqIgEvRVkGDfEUCVeR6uW524fsJxe+uuYHggaU5AYoCBt49dbWZdtwK0P3EPZ7aUq2tmgLIn7pSxVHpUETtC+++CIrVqzAsiwWLFjA8uXLB7qkQSvg06nID1KcHaAhYRLxe6luTJNyHBxHsas5SVVtjMaETdpxcXo5P6DrkO1+FdpheQaRoI9pFQUUZhlU5ITx6Z4Ow61GFoQpCBuARiTglY/64qg0KIK2traWH/zgB6xatYqsrCy++MUv8s9//pMzzjhjoEsblNougEUCPna3pGhOJtmYjuH1aERTFvXxNFUNcRqaLRK9HMt/oCFbFPIwoTybvHCAUUUhxhRFyA/7Kc4OdBgRIf2oQgySoH3ttdeYPn06+fmtF10uvPBCXnjhhS6D1jRNTLPr6+VH+m68bQt3N8RN4mkbTdMYmRdmS12MHfEEkyty2BNL0pxIE01YpA/g5fDS2ne6v5A1gJyQzsTyLCaX5xIO+MgKeBmeH8KjaTLcSoguDIqgrampobi4OHO7uLi4200fH3/8cVasWNHtubKzs/u8vsGg7Qr+npYUSdNhdFEY03JYv6eZ3Y1JGuMma7Y1sSfautBK8/7Gbu3jY6eIBjdEvQrRXcgGgOywh6BPJydoEE05FGYHiPh9ZAd8RAI+GW4lRBcGRdB2tbljd1uYL1u2jKVLl3b52IIFC/q0rsEkmrLY1ZhA0zQaY2m8moe4aRFLOpnhXGnbIZp2iPcyZMs9zexxIzh715StV+Fujw15IBTUKIgEyAn4GFscoTAUoDjLT3luiEjAJ90EQnRjUARtaWkpb7/9duZ2TU0NpaWlXR5rGAaGYXT5WHfhfKRQmoYGeHSNhniK3c1JaqJJmpImGh7QHJrjaexeXPxqW7ug3g3xpjUCdz8j/bKDOn6fl8KIn7Dfi1fzUJQdYHxJVpf7fAkhPjEoOtJmzJjBm2++SV1dHZZl8dxzzzFr1qyBLuuwSVnOfpcPbFsoJpG2sR3Fut3NfLwnxpa6BHUxE01TxBM2rssBrcJV74Zwe1iBqyAAYwuDTBqWy4iCEMNzg5w8Op8zxhczLC9IdtA46JDtzfctxJFgULRoS0pKuOGGG1i6dCmmaTJ79mzOOeecgS6r3zUnTOoTaWJJB7/Pk1koBuiwQlfbgjF5YR+WE8Sre/jnhiQtKZO0Y5JMKdJ7F5Pd35qyvd2t1gA+NSqbwkgAv8+L7SomlEYI+72MKcwiaOiHdNGrpwVyhDjSDIqgBTj//PM5//zzB7qMw6Y5YVK5o4m6mEnStDlpdD5p2yWWsoil7cwCMWG/Tjz9SYvPp3toTlgYupdEWpFIKWwbHBdclx5nfx3IluARP3g9Xnw+D8Pyg0RTNiG/lzGFEcaXRgga3kO66NXdAjlCHIkGRdfB0Shm2sRNhxEFYWyl2NOSxu/1oIBoysZ2FVvrYlTVxdnVmCDg0zFtF8t2CPg9HFMWxnVtHLs1XJP7CdmRnoZeh2yuH/IjfiJ+D44LsZTFsNwgxw/L5fiKXIqzg2Ttvfh1sGT1LXE0GTQt2qNNxPASNnRqoymG5QQZXRimIOInbTnUxtLsaIiRshQnj86n0bHYWhenPmZSH09R3ZKiujmJ7YBXp1d7gjeqEKbSqXLyug1ZDSiO6AzLDZMT0ombLi42uxttRhaECPu9mQVjutPbTRNl9S1xNJGgHSA5IYPjK3JJmA4hQycnZJCyHBriJnUtaZpTDtUNcVAwoTSbpOWwsaaFPS1p6uNpGmJpWtImsV5eR2pRAV4xx5DGS3d9snkROHFEHjlBg5Tt4irFqPwg9QmbEfmtW4n39BH/YPpdj+wpJkK0kqAdQDkhg5xQ67/bQmp7Q4IttTHq42kaEyauFiPg86B7NGIpmw93N1MXTdGcdDD3sxDWKL2BFjdAg2r9Imm6XwtW1yBsBMgL+YgEvJxQmEVDLIXpQmG4db+vMujxI/6B9LvKxTBxNJGgHWBtH7XTltN6wcnw4vO2btPi9+kUZwVoSlqkTZsdjXGqoynSpkNyPyHbduHLVh5eMceQpOuxx23ysn2MKQ5zxoRS0pZLaU6AkYURUpZNcXaAaMrGr/cchAfS79rTbhG96XoQYiiRoB1AbdNq4+nW8a8tSZOE5VCU5Sfs19ndpFEbTdOcSLGjPkltwiJlOqQOYAjXFiefZDct2QDg90F22MeogiyOKcomJ2gQyfWSFWztQ06YrX8AEpZDdUuStON0u3j3gfS7dhXK+2vlSgiLoUqCdgBFUxY7m5IEvDoN8TQ5QR/HFobZXBMnblp4NI3KHU1srI2xqymFBzAtelyKu7e71fo1KMr1c2JFLqGAzsSyXMqyg5TnBknbDqbdOo0hL2SA0tjVlMT1etjVmKAg7O826Ho7DberUG5JWd12PUhXgxjKJGgHSHPCpLo5RSJtE/B6UAo0DWpa0uyJJmmIm9S0pNlan6SmOYVpts746qnHoLchG/FCeX6A8pwgU0bk4vfqhP1eQoYHrw5pm0zYeTwa4YCOz+sBNJSm0VeXsPYN5Z66HmTcrRjKJGgP0qF8jG2brNCUtIimbII+nXDAS9DnpSVlYu/ts123o4mGpEnSbB3B1VPIlniivQtZHbL8Otl+g9GFEfJDfvLDfioKQjTFTey9zeX2YefTPQzLDRJP2xREDCJ9tMFi22uoXIXm0TB0T7ddDzLuVgxlErQH4VA/xrZNVhhVGKGqLkZBxI/u0SjODrC5xsVyFVvrkyT2rg7j0cCjWvtUu9uSptYNU+1mEXX9XYasBuQG4ITh+TQlLIpzA4wsiICmkbYdmuKtM9SiXg+G10NB2MisyAUwsiDcp2Ne217DaMqmOWGSEzLICngpzQl2uVOujLsVQ5k0Cw5C+4+xads94A0HI4YXn9fDx3uihPxeCiKt67huqY2BBtkBL5ayaUxY1DWmSbqtLdqePrC7eHjXqui2JZvjp7XFnLTJCRkUhQNE0zb5EYOCiJ/sgI+ckEFxduv24v59PtYHfPohzwZrr+01DBo6cbN1qcf9vZZ9XYMQh4u0aA/CoX6M9ft0iiJ+DF0j6PPSGLepjaZpSZiYjmJzTZRtdXEsyyK59zkOnSeAjdHrCWkWa+0SQEN1MxEh4IMxRVlYtkvI76EsJ0BB2Et5boCI4aUgYpAXMmhMmIfto3nbaxhN2a2jG9I2WQGvdAmII5IE7UE41I+xpuNieD2MKAiztS6O5bR2QSRshx11CRqTFq5LT1t2dbjwVeOGqXGzOh3j94DPC7lhHyHDS26uj9GFETyaxvEVuUwaltNhcRi/Tz9sH83bXsOCiIvrhvB4NOkSEEcsCdqDtL9hTD1dLDN0D6btsm5XM5ajCPk81MdMPq5uwXIcaqMmoPB6NDRUpy6DfUcX1LiRLmtwXQjoHiryIpTk+CmK+CnJCWI7DiMLwxRnBw/oe+prsiODOFpI0PaD/V0sS1sOOxvjVNUnKIr4MS2X5pSJDdholOX6CRkeEpaLkTA7rMrV1RCu1jhufTNdIOwD24LCHC8FkQB+r4e8kMHw/AgluQFSaQdN00hZzkH/sRBC9J4EbT9ou9AT8OnUxdJE/J9cwElZDptqY6zfFaW6JUkibaJrHtAgP+hlfU0Mr6Zh2g4hr4eckE5jwsGi65DV0TC01gtlRREdj65TmuWnMDuI3+fBtB1yQn7GF2cxtiQb23XxKIilbKpJdjtiQiYICNF3JGj7gbH3gs7mmihK06iPp4kEvKQth+qWFDsaE5khXjHTZnhuAJ/uZe2uJpoTJj7dS1M8TTxtgwY+HQw3zXFdjJMN6ZAX8aE0RW4wQEV+gNPHFlOS4ydtKSzXZXRhBN2jUZYTxHRc6mNpirMDPQ78H0wTBKRlLYY6Cdp+EPDp5IcN4mmbwiw/SdOhPpbmo90t1MdNtjfESJk244rCpEyb/HAAV4Ff95ATNKhuTpMwHbw+DduCnKBOfczPe9YwsrR0h/VkAwEPWUGDsOEj5NfJDwfIDRtkBQzywx6Spo3u0cgKeDNh36BBTUuq26v8KcshvXcfr4GeICAta3EkkKDtJ1kBH/lhg6Tp4Pd6iKVsqhriBH1emuIWAa+O7vEwpjibxoRFdUscx1XUR9PUx0xSpoUG+L0ujuZB02CPm8Ouvef3ACEvlOWEKIwY6JpGcVaQ/JCPxngaDzCuNAvLcTMTAQAaE2Zmum9eqPPGiu2DDeg0ceFwG0wtayEOlgxa7CcBn07e3tlOeSEDn64RT9lsqYvRkrYZlh8mL+IjP2LguA46OtGETdy08WkKw+dhpLeeaWozVsIirVrH0epAnh8qcnwUZxmEfN7WmVwRP5GgjotGaW4QF/i4OkrS/GT/MdNxW6f8GjpKgcfTefxY+2CDzhMXDjeZeiuOBNKi7Scpy6ExYZK2XUzbxfB5qMgL0ZBIY9ouugdMW7GnJcXuaJrNu6PsbkkSTZooDUqdesboe0BBha+FdVYBXiDghZLsAJMq8vB6IG25DC+IEPTpHFeeTXPCJMvvI8sPSdOhIj+Iq1p3RlCuojlhsqvJIWzouG6oU92DLdhk6q04EkjQ9pN9P/K6Cgyvh6DPS0lW695gPq+HLbVxahsTbG2I0ZxsXZe2nHrG+/aggO2eQrap/Myy3QFDJxLwke33khvy4SqoKAgSS7X2xU4szyHi12mIWyQshx0NCcrzQvh0DyYuOSGDsjwvibTdZYu2p2Brf1Gq7Xs8HBeoZLytGOokaPtJWxjtbEzg0z3E0y5pR5EV8LUu8p1O8/HOGGnLJuQ38Oo6AUNRZNVwjLYHDdiuFVFjlDEy6EfzQFPcYlhugOxg60wvw+vFsh32NKYoyg4Q9nspzQ6geTRiaYdxxRHqomkKwp/0xWYFWtcU6Gm6a1fBtm/fbZv2F6hkdIAQXZOg7WPtl/4DiKdsEpaNhgelXD6uTYALCdNiW2Oc5qRFYcSP4dPJt2oYpdegVGvI7tBL8SqIBH1EfF4CmgdNacSTDqar0DRQHoibDuNCPpSCuGkTNrz4vR6SpkN++JNlDQ/lY3j7FvqOxgQaMCwvlLlABbC1Pk4sbRPxe7vdhUGIo5EEbR9q3+qzHJfdTQm2NiRojJkEDR1dg4KgwfamOLubU5TmBLBtRcTQCeb6ybWaMXSdlmA5tl5GseOQsFxyDC85IS9+r87uaBIvis21URoTBkpBeW6AbQ2toxYMrwcz4JIXMrpcP+BgP4a377uN+Ft/bNr349ZFU2ysiRI2vLQkzB53YRDiaCNB24fat/o218T4YGcz63ZFyQ76CBqti8gUZgWojabw6hqm5eD1erAdRSRg0JA/iULVRGHxKLSEyebaOFlBjbTj0pi0SO/d9jY7ZJAX8DE6P0xt3CQn6CdseMkO+jITETwerct1XQ/Wvq1hoMO/90TTNMRN0rYibOjIRuJCfEKC9hDs2yfZ1uqraUmRsm18OoT8OjubkxSFDdwcl4+qW0jZLtlBA8dwKQ64RJWPlOkwrDCXhJlFJOijKNtPynSIWw5+nwdD9xDyeQlaDobXQ3l+kKKcAGV5IRylGJ4XIi9s9OtogX1bw23/bklZGLqHsUURalrSFGf5+2wXBiGOBBK0B6mrGUsAXo/WOqje23qxynEhJ+ClJDuAi8K0HUqyA6BB445NpHdtYOL4aWz1ZqE0OKY4jIuitsUk6Pfi83koDPspyjKoj1kUZvnJCfqYWJqNqxSOC9lBLxV5ocO6zGF7am9/sd+rM64kwvC8kHQbCNGOBO1Baj/4P5qyifhtYmmL+rhJc9JiXHGEWLp1Ay7bVaRNh5DhJT8cYHtTAl/zDtw9H6OhqK1vQMvNRlOKtKPQlMKne5hakUMibZMX8ePTPYT9PkbkhynODmDsnW2mcCnK8pOzd4LB4Q64tvHCSoHf52F4XihTixCilQTtQdp38H9e2EfadimM+GlJmNRF04woCJEfNjIXqrICPgJenXRtFTXVG9A1jbzRE1ibyKOlMU5OwKAg0jobK0fXqImmKYj4GZYbZnh+kKaERUHEj1KKhriJApoSFjXRNNnBztNp+0pPw7ba+qXb9w0LITqSoD1ImkfrMPg/4NWxHUXKcijPC2XWCIimLCzHxXYcdjWnqK6uonbzWlwF4fKxGCXHkNhYS2HYT1PCJJa2GJabhYPGmCIfQUOjMGJgu6p1URjbwbRd6mMpTEdRmhNA7Z351V3QHsr41n3Hz+aHjQ77dg22mWRCDEYStAfJ0D2Zwf+G14OCLodUpS2HumiKd6oaSNVsJdC0maBPp3zMsQTKxpK2XYoiBprmoSDsZ8qwPE4YmUNz0kap1gkGIUPHdhWuUsTTDsXZAUzbxXEVfq/e4+SDQ139qv3auptrosTTNvlhI3MemSIrxP5J0B6ktoCJpVr7ZRviZqcgS1mt680mTRdN0wh5LEzHJZE3EitvJPmGl7Jcg7Dfh0fTyA8bTCzLImB4yQ60hrbrqsyaCW2aEmZmQ8X97bV1qKtftbVY62JplKZlln1sfx6ZIitEzyRoD0HAp2PunRW1b5C1tSTrY+be3WXTxDxllFXkMXbMCCL+1u29x5dmkxtKURjxEzJ0GhMmjQkrE9omHYOyIOzH7/P0uvV4qB/t2/6gRPw+6uPpzLKP0kUgRO9J0B6i9mNnNQ3cvVNv21qSjXt2YDk+Jg/LoS5mUhAuwq/rGF4dy1WZBbjzwkaXrc99gzIS8B5Q67EvPtq3tVgjAa90EQhxECRoD1HburOxdGufamPCxL938sLGD9dRufpdnGA+Y6ZNpzQnl/LcIJatKM0N0LJ3nYO8dou+7Nv67Mug7IvvtS/OI4vPiKPNgAft5s2bufjiixk+fDgAhYWF/OIXvxjgqg6MtreftH1L9OMP1/Hx2tVoGuQX5OPRdMpzg4wtitCYMElZTqYl237lq676XdsH3FAPKdmaRhyNBjxo16xZw6JFi7j11lsHupSD1v7jPcCaNZX8+7130DQYO3Ey/tJx5IcNirP9+LtoofY2fAZLSB1K2MvWNOJoNOBBu3btWtatW8eiRYvIysri1ltv5Zhjjun2eNM0MU2zy8eUGpiFTD4ZgWDzr/f/zUdr/gW0huyI8ZNxXPDqGvG0g+20bvHdtuBLynKoj6eJpuwhsTPtoYa9jLsVR6MBD9pAIMDFF1/MokWL+Mc//sFXv/pVXnjhBXy+rhclefzxx1mxYkW358vOzu7T+nrbegv4dCrXruWjNf/C6/EwYvxxnHryyQSM1hZrQ9zsdmRCNGXTvLc13NOY2MEQUoca9jLuVhyNDlvQvvjii9xzzz0d7isrK+Ppp5/O3J45cyYPPPAAmzZtYuLEiV2eZ9myZSxdurTLxxYsWNB3BXPgrbfiokJ8Ph/Dx05g0pQTyAq2zqBq3WHB7hSQ7aevAp0ujO1rMIRUX4S9jLsVR5vDFrTnn38+559/fqf7f/7zn3PppZcSiUSA1o//Xm/3ZRmGgWF0vWiJpvXtPPsDbb2NrBjG4sUXYwRCGF69w8WsrgKyfWi1vzDWk4EOqcEQ9kIMNQPedfDGG2/g9/tZsmQJb7zxBo7jMGbMmIEuC+hd623dunWUlJRQUFAAQGFebpfn6iogh2poDXTYCzHUDHjQ3nHHHXznO9/h6aefJhAI8NBDD+HxDI4LJPsLwsrKyswfisWLFxMKdd6+uzdfQ0JLiCPbgAft8OHD+fWvfz3QZXSruyBsC1mA4447jmAweLhLE0IMEYOj6TjEtA/ZadOmcdJJJ/V5/7AQ4sghQXuAJGSFEAdqwLsOBpP9jZndtGmThKwQ4oBJ0O7VmzGzI0aMoKysjNLSUglZIUSvSdDu1Zsxsz6fjwsuuACPxyMhK4ToNemj3au7MbOVlZX861//yhyn67qErBDigEiLdq+uxsy2v/BVVlZGeXn5AFcphBiKJGjbaT9mdt/RBWVlZQNZmhBiCJOugy7IEC4hRF+SoN2HhKwQoq9J0LbT0NAgISuE6HPSR9tOfn4+p59+OolEQkJWCNFnJGj3MWnSpIEuQQhxhJGuAyGE6GcStEII0c8kaIUQop9J0AohRD+ToBVCiH4mQSuEEP1MglYIIfrZETWOtqamBsdxmDNnzkCXIoToB7t370bXh96u0UdUi9bv9+P1DvzfDqUULS0tKKUGupReG2o1D7V6YejVPBjr9Xq9+P3+gS7jgGlqML2KR4hYLManPvUp/vWvfxGJRAa6nF4ZajUPtXph6NU81OodzI6oFq0QQgxGErRCCNHPJGiFEKKfSdAKIUQ/k6AVQoh+JkErhBD9TIK2HxiGwfLlyzEMY6BL6bWhVvNQqxeGXs1Drd7BTMbRCiFEP5MWrRBC9DMJWiGE6GcStEII0c8kaIUQop9J0PaTzZs3c+KJJ7Jw4UIWLlzINddcM9AldevFF1/kM5/5DOeeey4rVqwY6HJ65dvf/jZz587NvL5//etfB7qkLsViMebPn8+OHTsAePvtt1m4cCFz587l9ttvx7btAa6wo33rfeCBB5g9e3bmdf7Nb34zwBUOUUr0i2effVbdddddA13GftXU1KhZs2ap+vp6ZZqmuuqqq9Srr7460GXt1znnnKMaGxsHuowevffee2revHlq0qRJavv27SqdTqtZs2apzZs3K9d11Y033qieeuqpgS4zY996lVLqc5/7nPrggw8GuLKhT1q0/WTt2rWsW7eORYsWcdVVV/Hxxx8PdEldeu2115g+fTr5+fn4fD4uvPBCXnjhhYEuq0eNjY00NDRw4403Mn/+fFasWDGo1kxts3LlSm6//XaKi4sBWLNmDRUVFYwePRpN07j44osH1Wu9b71KKdavX89jjz3G/PnzufvuuzFNc4CrHJokaPtJIBDg4osv5ve//z2f//zn+epXv4plWQNdVic1NTWZXyyA4uJi9uzZM4AV7V99fT2nnXYa9913H08//TRvv/02q1atGuiyOrnnnns46aSTMrf37NlDSUlJ5vZge633rbexsZFp06Zxyy238Oyzz9LY2MhPfvKTAaxw6JKgPUQvvvgiZ555Zof/PvvZz3L99dezaNEiAGbOnEkwGGTTpk0DXG1nrut2uk/TtAGopPfGjRvHI488Ql5eHqFQiCVLlvDKK68MdFn7NdRe6/z8fB5//HEqKirwer1cc801Q+J1HowGft+XIe7888/n/PPP73T/z3/+cy699NLMyvRKqUGxzc6+SktLefvttzO3a2pqKC0tHcCK9q+yspLa2lpmz54NtAbYUNhHqrS0lNra2szt2traQf1aV1VV8e9//5uFCxcCQ+d1HoykRdtP3njjDZ599tnMvx3HYcyYMQNcVWczZszgzTffpK6uDsuyeO6555g1a9ZAl9Ujy7L4/ve/TywWwzRNfve733HOOecMdFn7NXXqVKqqqjKfbFatWjWoX2ufz8e9995LdXU1SimefPLJIfE6D0aDr4l1hLjjjjv4zne+w9NPP00gEOChhx7C4xl8f9dKSkq44YYbWLp0KaZpMnv27EH/y3TiiSdy+eWXs3jxYhzHYe7cucybN2+gy9ovwzC4//77ue6660ilUkyZMoXLL798oMvq1rBhw7jlllu45pprsG2bT33qUyxdunSgyxqSZFEZIYToZ4OviSWEEEcYCVohhOhnErRCCNHPJGiFEKKfSdAKIUQ/k6AVQoh+JkErhBD9TIJWCCH6mcwME/3mvffe48477+xw38aNG3EchwkTJpBIJKirq2PEiBEALF++vMdZab/+9a/57W9/i+M4XHPNNXz2s5/tl7o3bNjAt771Lf77v/+7X84vjkIDuRiuOLo8/fTT6txzz1XRaFQppdSbb76prrzyyl4994MPPlDz5s1T8XhcRaNRNW/ePLVx48Y+r3HVqlXq05/+tDrrrLP6/Nzi6CVdB+KwWLNmDT/84Q9ZsWJFZkWzA/H3v/+duXPnEgqFiEQizJ07lxdffLHH57z44otccsklLFiwgHPPPZc333yzx+Obmpp45ZVXePDBBw+4PiF6IkEr+l1jYyPXXnstt912G8ccc8xBnWPfRbNLSkp6XDTbdV2eeuopfvKTn/Dcc8+xbNkyfvWrX/X4NXJzc3nkkUcoKys7qBqF6I700Yp+pZTihhtuYPbs2cyfP/+QzrOvnhbN9ng8/PjHP+bll19my5YtvP3224Ny9TRxdJCfPNGvfvzjHxOLxbj55psP6TwlJSXU1NRkbu9vgfJ4PM5FF13E9u3bOfnkk1myZMkhfX0hDoUEreg3r7/+Ok899RQPP/wwPp/vkM41c+ZM/vKXvxCPx4nH4/z5z39m5syZ3R5fVVWFpml85StfYfr06bz66qs4jnNINQhxsKTrQPSbn/70pziOw7JlyzrcP3/+fL7whS8c0LmOP/54Fi9ezCWXXIJt21x66aVMmjSp2+MnTpzIcccdx/nnn08gEODkk09m586dKKUG9T5d4sgkC38LIUQ/kxatGDR+9atfZfZZay8cDvPb3/620/2pVKrbSQvXXHMNCxYs6HT/fffdx+uvv97p/tGjR/Pwww8feNFC9IK0aIUQop/JxTAhhOhnErRCCNHPJGiFEKKfSdAKIUQ/k6AVQoh+JkErhBD9TIJWCCH62f8HnKVsE885HogAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "rna_data.replicate_scatterplot(sample1=\"ZT_0_a_1\", sample2=\"ZT_0_a_2\")" - ] - }, - { - "cell_type": "markdown", - "id": "f7c75c45", - "metadata": {}, - "source": [ - "In some cases this may reveal that measurements below a certain threshold look visually less correlated between samples. Here we will defines genes as non-expressed using the threshold of <0, as used in the original 2017 article." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "3d59d590", - "metadata": {}, - "outputs": [], - "source": [ - "rna_data.add_is_expressed(mean_min=0)" - ] - }, - { - "cell_type": "markdown", - "id": "f7794808", - "metadata": {}, - "source": [ - "## Fitting rhythmic models to the omics dataset\n", - "\n", - "Now things get exciting! We can finally start fitting the rhythmic models to the data. The output of calling DifferentialRhythmicity().extract_all_circadian_params() is a dataframe that contains the model weights across the 5 different models, as well as the amplitude and phase from the selected model for each condition. This can take some time (~5 mins), so go and get a coffee!" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "0de5e8df", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Fitting models to genes expressed in both conditions: 100%|██████████| 11147/11147 [07:37<00:00, 24.39it/s]\n", - "Fitting models to genes expressed in cond1 only: 100%|██████████| 760/760 [00:07<00:00, 104.93it/s]\n", - "Fitting models to genes expressed in cond2 only: 100%|██████████| 478/478 [00:04<00:00, 105.43it/s]\n" - ] - } - ], - "source": [ - "dr = DifferentialRhythmicity(dataset=rna_data)\n", - "rhythmic_all = dr.extract_all_circadian_params()" - ] - }, - { - "cell_type": "markdown", - "id": "e135eb6c", - "metadata": {}, - "source": [ - "## Heatmap of model selection\n", - "\n", - "We can display the results as a heatmap, where we'll visualise models 2-5 using z-scores for each sample.\n", - "\n", - "Note that genes expressed that are only expressed in one condition are given the subclass \"a\", while genes that are expressed in both conditions are given the subclass \"b\"." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "cbb9bcab", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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BK4/4HQ6GT58uKzOJpx94fyzlYQvFAjn33E4/2xqn8IVlp0zDAaDwRC+mBWXwWAwGEoVJnAZDAaDoVRhApfBYDAYShUmcBkMBoOhVGEC10nmz5/PpZdeSo8ePXjllVdk3qeeeooxY8YUu2f27NlceumlXHrppTz11FPF4sjIyKBPnz6kpqYC8Pnnn9OnTx/69OnDv/71L44fP16svh9//JGrrrqKSy+9lJEjR+IuwtkWU6ZMoXfv3vTu3ZsHHngAt9vN1q1bueqqq7jkkku48847ycoSj5sQYu6PwmPujyK8P4qtfW8p4uDBg1bnzp2tw4cPW26327rxxhutb775pti9q1atstq2bWuNHj26WD1ZWVlW69atrbS0NMvj8VhXXHGFtXLlyiJ1rFu3zurdu7fVpEkTa/fu3db+/futiy66yDp8+LBlWZY1ceJE67HHHis2X3p6unXhhRdamzdvtizLsu655x5r2rRpReL6+eefrd69e1uZmZmW3++3Ro0aZU2ZMsXq27evtXr1asuyLOuFF16wnn322SLxhRrm/ig85v4o2vvDrLiAlStX0q5dOypUqIDD4aB///7MmzevWJ3Hjh3j+eef5/bbby9WD4DP58Pv95OTk4PP58Pn8xEVFVWkjo8//piHH36YxMREAGw2G48++igVKlQAoFGjRuzbt6/YfCtXrqRFixY0PDmPfuzYsXTv3r1IXGXLlmXcuHHExsZis9lo2LAhv/76K+np6bRp0waAK6+8sti/MyWFuT8Kj7k/ivb+CMtBksFy8ODBvL9ggMTERA4cOFCszoceeoh77rmnSL+s+REXF8ddd91Fz549iYmJoXXr1rRq1apIHU8++eSf/n9iYmLe7zQ7O5s333yT66+/vth8O3fupEyZMowYMYKUlBTOP/98HnjggSJx1apVi1q1agFw+PBh/vvf/zJw4EBSUlLyrlF8Z0oKc38UHnN/FO13xqy4AL/f/5d/VpxTQj/55BOqVatG+/bti83xR7Zs2cKMGTNYunQpy5cvJyIigrffflviPnr0KDfffDONGzfmsssuKzaPz+fj66+/5r777mPWrFnk5OTw5ptvFqkjNTWVG264gSuvvJKkpKS//HvF5NySwNwfxYe5P84ME7iAqlWrcujQobz/f/DgQapWrVpsvnnz5rFy5Ur69evHSy+9xJIlS3j88ceLzbdixQrat29PxYoVcTqdDBgwgDVr1hSb7xR79uzhmmuuoWXLljz22GPF6qpUqRLnnXceNWvWxG6307NnT9avX19kf/7mzZu55pprGDhwIMOGDfvLd+bQoUPF+p0pScz9UTyY++PMMYELaN++Pd999x1paWl4PB7mzJlD586di803ZcoU5s6dy+zZs7nzzjvp2rUrY8eOLTZfw4YNWbFiBZmZmViWxZIlS2jSpEmx+QBcLhc333wzAwcO5L777iv21UiHDh3YtGkTe/bsAeDrr7+mcePGRfJnHzlyhFtuuYVx48blbedUr16dmJiYvAfcjBkz6NSpU5H4Qg1zfxQ95v4oHOaMC6hSpQr33XcfQ4YMwe1207Vr1yI7uAwFTn1pBwwYgNPppGnTptx2223F6pw9eza7du3is88+47PPPgOgcePGf9l7LyqqVavG448/zrBhw3C73TRo0IBRo0YVyZ/97rvvkpGRwauvvsqrr74KQOfOnXnuuecYN24c6enp1KhRg+eee65IfKGGuT+KHnN/FA7TZNdgMBgMpQqzVWgwGAyGUoUJXAaDwWAoVZjAZTAYDIZShQlcBoPBYChVmMBlMBgMhlKFCVwGg8FgKFWYwGUwGAyGUoUpQA5j/v3vf7Nx40Y8Hg+7du2iTp06QG5vtm+++YYqVaoU2jFx4kSSk5PZvn07a9asYcKECX/69xkZGTzwwAO8+OKLRESY9yRD6GDuj9KLCVxhzH/+8x/g/5tfzp49u0j//K1bt5KSkkLz5s3Zvn37aa+Ji4ujTZs2fPDBB1x77bVF6jcYCoO5P0ovJnD9A+natSvvvfcea9asYenSpRw6dIj9+/dzxRVXcPz4cb777jvKlSvH5MmTiY6OZvbs2bz77rv4fD7q1q3LI488QlxcHG+//Tb9+/fP+3N37drFDTfcwP79+2nQoAHPPfccTqeT3r17c+WVV3LNNdeYt0pDyGPuj9DH/Jb+4axfv57Jkyfz3//+l5dffpmOHTvy+eefY7PZWLFiBdu3b+fDDz9k+vTpzJ49m7p16/Lqq69iWRZLly7NGxQHud2uX3jhBRYsWMDevXtZtWoVAOXLlyc+Pp4tW7aU1I9pMJwR5v4ITcyK6x9OUlIScXFxxMXFAeTNQDrrrLM4ceIE3377LTt37uTqq68GwOv1cvbZZ3P06FEsy8r77wBat26dN9G1bt26HD16NO/fVa9enZ07dxZZR2qDQYG5P0ITE7j+4Tgcjj/9/8jIP38lfD4fvXr1yhsrkZWVhdvtxrKsv1z7x/9vs9n4Y//myMhI7HZ7UX98g6FYMfdHaGK2Cg0F0rZtWxYuXEhaWhqQOxL8tddeo3z58liWRWZmZkB/TmpqKjVr1izOj2owyDH3R8lgApehQBo2bMjw4cMZMmQIl156KcePH+euu+4CcmfurF69+m//jOPHj5ORkUHDhg2L++MaDFLM/VEymHlchjNm69atvPTSS7zyyisFXjd16lScTieDBg0SfTKDoeQx90fxYVZchjOmfv36nHPOOfz000/5XpORkcHq1avzDq8Nhn8K5v4oPsyKy2AwGAylCrPiMhgMBkOpwgQug8FgMJQqTOAyGAwGQ6nCBC6DwWAwlCpM4DIYDAZDqcIELoPBYDCUKkzgMhgMBkOpwgQug8FgMJQq/g/1lasWtmPXGwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "heatmap: OmicsHeatmap = OmicsHeatmap(\n", - " df=rhythmic_all,\n", - " columns_cond1=columns_cond1,\n", - " columns_cond2=columns_cond2,\n", - " t_cond1=t_cond1,\n", - " t_cond2=t_cond2,\n", - " cond1_label=\"Alpha cells\",\n", - " cond2_label=\"Beta cells\",\n", - " show_unexpressed=False,\n", - ")\n", - "heatmap.plot_heatmap()" - ] - }, - { - "cell_type": "markdown", - "id": "52787ba5", - "metadata": {}, - "source": [ - "## Showing individual examples\n", - "\n", - "Finally, we can manually select genes of interest to show the underlying data (as points) and the fitted cosinor models from the selected model." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "1944f9e9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fitting model 2\n", - "(, )\n" - ] - }, - { - "data": { - "image/png": "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uHABHx8fADp27MiOHTv4/PPP8fLysmibK1eupGLFinh4eDB79myWLl2a53mDwcDAgQP54osvKFu2rEXbFsIeST90MoWvNyGcga2q76SkpCjdunVTFEVR4uPjle7du5vcLi4uTpk8ebLV4xHCnkg/dA5yhCoeEhgYSHR0NAcPHmT79u0kJydz9epV2rdvz82bN4mPj6dixYosWrSI0qVLs379er799lsMBgO1atVi3LhxuLu759nnsmXLaNmypfH+9evX6du3LxcuXKBSpUrMmjWLJ554gqZNmzJx4kT69etH+fLlbf3WhbAb0g8dj1xDFY905MgRFi1axPLly5k1axZNmzZlw4YN6HQ69uzZw+nTp1m5ciUrVqxg/fr11KpVy1jO635xcXHGNQ1BLeI9cuRINm3aRMWKFfnhhx8AcHV15fnnnyc+Pt5m71EIeyf90DHIEap4pAYNGuDu7m78ppuz5FW1atW4desW+/fv5/z583Tq1AmArKwsqlev/tB+zp8/T9WqVY3369SpwzPPPANA7dq1uX79uvG5qlWrcv78eau9JyEcjfRDxyAJVTxSyZIl89x3dc37kTEYDAQHBzN69GgAMjIy0Ov1D+1Hp9Plee39t3U6Hcp9JaVdXV1xcXGxSPxCOAPph45BTvmKInnttdfYunUr165dA2DSpEnMmTPnoe1q1KjB5cuXC7TPS5cu8fTTT1s0TiGcmfRD+yAJVRRJnTp1GDBgABEREYSEhHDz5k0GDRr00HaBgYHs37//sfszGAz8/vvvvP7669YIVwinJP3QPsjybcImUlNT6d+/P999990jt9u6dSu//PILw4cPt1FkQhQf0g+tS45QhU14eHgQGhrKpk2b8t3GYDAQExNDZGSkDSMToviQfmhdcoQqhBBCWIAcoQohhBAWIAlVCCGEsABJqEIIIYQFSEIVQgghLEASqhBCCGEBklCFEEIIC5CEKoQQQliAJFQhhBDCAiShCiGEEBbw/yb2pN2KNkXjAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "example = TimeSeriesExample(\n", - " df=rhythmic_all,\n", - " columns_cond1=columns_cond1,\n", - " columns_cond2=columns_cond2,\n", - " t_cond1=t_cond1,\n", - " t_cond2=t_cond2,\n", - " cond1_label=\"Alpha cells\",\n", - " cond2_label=\"Beta cells\",\n", - ")\n", - "\n", - "# example.plot_time_series(\"Scg2\", xticks=np.arange(0, 25, 4))\n", - "# example.plot_time_series(\"Upk3a\", xticks=np.arange(0, 25, 4))\n", - "# example.plot_time_series(\"Kcnk3\", xticks=np.arange(0, 25, 4))\n", - "\n", - "example.plot_time_series(\"Ntrk1\", xticks=np.arange(0, 25, 4))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cosinor-lite", - "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.11.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/omics_tutorial.ipynb b/notebooks/omics_tutorial.ipynb new file mode 100644 index 0000000..6739159 --- /dev/null +++ b/notebooks/omics_tutorial.ipynb @@ -0,0 +1,364 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Differential rhytmicity analysis of omics datasets" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "The aim of this tutorial is to use the cosinor_lite Python package to perform differential rhythmicity analysis on omics data. Here we will use published RNA-seq data, but in theory any types of omics data (RNA-seq, proteomics, metabolomics, lipidomics) could be used. The dataset is from the following publication:\n", + "\n", + "Petrenko V, Saini C, Giovannoni L, Gobet C, Sage D, Unser M, Heddad Masson M, Gu G, Bosco D, Gachon F, Philippe J, Dibner C. 2017. Pancreatic α- and β-cellular clocks have distinct molecular properties and impact on islet hormone secretion and gene expression. Genes Dev 31:383–398. doi:10.1101/gad.290379.116\n" + ] + }, + { + "cell_type": "markdown", + "id": "2", + "metadata": {}, + "source": [ + "### How does the method actually work?" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "The details of the method are nicely explained in the article: \n", + "\n", + "Pelikan A, Herzel H, Kramer A, Ananthasubramaniam B. 2022. Venn diagram analysis overestimates the extent of circadian rhythm reprogramming. The FEBS Journal 289:6605–6621. doi:10.1111/febs.16095\n", + "\n", + "Here is an adaptation of their figure explaining the methdology:\n", + "\n", + "
\n", + " \"Model\n", + "
\n", + "\n", + "For condition 1 (i.e. alpha cells) and condition 2 (i.e. beta cells), we fit 5 different models:\n", + "\n", + "- Model 1) Arrhythmic in alpha and beta cells\n", + "\n", + "- Model 2) Rhythmic in beta cells only\n", + "\n", + "- Model 3) Rhythmic in alpha cells only\n", + "\n", + "- Model 4) Rhythmic in alpha and beta cells with the same rhythmic parameters (i.e. phase and amplitude)\n", + "\n", + "- Model 5) Rhythmic in both but with differential rhythmicity in alpha vs beta cells\n", + "\n", + "A degree of confidence is calculated for each model (called model weight, which sums to 1 across all models), and a model is chosen if the model weight exceeds a threshold (for this tutorial we will use 0.5). If no model exceeds this threshold, then the model is unclassified, which we define as Model 0\n", + "\n", + "- Model 0) unclassified\n", + "\n", + "Let's start running the code to make things more concrete! First we need to load the required packages." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4", + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from cosinor_lite.datasets import OmicsDataset\n", + "from cosinor_lite.differential_rhytmicity_omics import DifferentialRhythmicity, OmicsHeatmap, TimeSeriesExample\n", + "\n", + "plt.rcParams.update(\n", + " {\n", + " \"font.size\": 8,\n", + " \"axes.titlesize\": 8,\n", + " \"axes.labelsize\": 8,\n", + " \"xtick.labelsize\": 8,\n", + " \"ytick.labelsize\": 8,\n", + " \"legend.fontsize\": 8,\n", + " \"figure.titlesize\": 8,\n", + " \"pdf.fonttype\": 42,\n", + " },\n", + ")\n", + "plt.style.use(\"seaborn-v0_8-ticks\")" + ] + }, + { + "cell_type": "markdown", + "id": "5", + "metadata": {}, + "source": [ + "## Load data\n", + "\n", + "Next, we load in the omics dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "file: Path = Path.cwd().parent / \"data\" / \"GSE95156_Alpha_Beta.txt\"\n", + "\n", + "df_rna: pd.DataFrame = pd.read_csv(file, sep=\"\\t\")\n", + "df_rna: pd.DataFrame = df_rna.drop(df_rna.columns[0], axis=1)" + ] + }, + { + "cell_type": "markdown", + "id": "7", + "metadata": {}, + "source": [ + "## Defining sample conditions and times\n", + "\n", + "Typically in omics datasets, each row represents a different entity (gene/protein/lipid etc.), and each samples are stored as separate column.\n", + "\n", + "We need to tell the algorithm the names of the samples corresponding to condition 1 and 2, as well as the corresponding times." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "source": [ + "df_rna[\"Genes\"] = df_rna[\"gene_name\"].str.split(\"|\").str[1]\n", + "\n", + "columns_cond1: list[str] = [\n", + " \"ZT_0_a_1\",\n", + " \"ZT_4_a_1\",\n", + " \"ZT_8_a_1\",\n", + " \"ZT_12_a_1\",\n", + " \"ZT_16_a_1\",\n", + " \"ZT_20_a_1\",\n", + " \"ZT_0_a_2\",\n", + " \"ZT_4_a_2\",\n", + " \"ZT_8_a_2\",\n", + " \"ZT_12_a_2\",\n", + " \"ZT_16_a_2\",\n", + " \"ZT_20_a_2\",\n", + "]\n", + "\n", + "columns_cond2: list[str] = [\n", + " \"ZT_0_b_1\",\n", + " \"ZT_4_b_1\",\n", + " \"ZT_8_b_1\",\n", + " \"ZT_12_b_1\",\n", + " \"ZT_16_b_1\",\n", + " \"ZT_20_b_1\",\n", + " \"ZT_0_b_2\",\n", + " \"ZT_4_b_2\",\n", + " \"ZT_8_b_2\",\n", + " \"ZT_12_b_2\",\n", + " \"ZT_16_b_2\",\n", + " \"ZT_20_b_2\",\n", + "]\n", + "\n", + "t_cond1: np.ndarray = np.array(\n", + " [\n", + " 0,\n", + " 4,\n", + " 8,\n", + " 12,\n", + " 16,\n", + " 20,\n", + " 0,\n", + " 4,\n", + " 8,\n", + " 12,\n", + " 16,\n", + " 20,\n", + " ],\n", + ")\n", + "\n", + "t_cond2: np.ndarray = t_cond1.copy()" + ] + }, + { + "cell_type": "markdown", + "id": "9", + "metadata": {}, + "source": [ + "## Processing the data and visualising the distribution of expression\n", + "\n", + "We next load the data and create a plot of the distribution of all expression values.\n", + "\n", + "In some cases there will be a bimodal distribution, with one large peak at high values and a second, typically smaller peak at very low values. This can be a sign that the small peak at low values represents noise and can be considered as unexpressed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "rna_data: OmicsDataset = OmicsDataset(\n", + " df=df_rna,\n", + " columns_cond1=columns_cond1,\n", + " columns_cond2=columns_cond2,\n", + " t_cond1=t_cond1,\n", + " t_cond2=t_cond2,\n", + " deduplicate_on_init=True,\n", + ")\n", + "rna_data.expression_histogram()" + ] + }, + { + "cell_type": "markdown", + "id": "11", + "metadata": {}, + "source": [ + "## Quality control\n", + "\n", + "Another basic technique for quality control is to create a scatterplot of technical replicates" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "rna_data.replicate_scatterplot(sample1=\"ZT_0_a_1\", sample2=\"ZT_0_a_2\")" + ] + }, + { + "cell_type": "markdown", + "id": "13", + "metadata": {}, + "source": [ + "In some cases this may reveal that measurements below a certain threshold look visually less correlated between samples. Here we will defines genes as non-expressed using the threshold of <0, as used in the original 2017 article." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "rna_data.add_is_expressed(mean_min=0)" + ] + }, + { + "cell_type": "markdown", + "id": "15", + "metadata": {}, + "source": [ + "## Fitting rhythmic models to the omics dataset\n", + "\n", + "Now things get exciting! We can finally start fitting the rhythmic models to the data. The output of calling DifferentialRhythmicity().extract_all_circadian_params() is a dataframe that contains the model weights across the 5 different models, as well as the amplitude and phase from the selected model for each condition. This can take some time (~5 mins), so go and get a coffee!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "dr = DifferentialRhythmicity(dataset=rna_data)\n", + "rhythmic_all = dr.extract_all_circadian_params()" + ] + }, + { + "cell_type": "markdown", + "id": "17", + "metadata": {}, + "source": [ + "## Heatmap of model selection\n", + "\n", + "We can display the results as a heatmap, where we'll visualise models 2-5 using z-scores for each sample.\n", + "\n", + "Note that genes expressed that are only expressed in one condition are given the subclass \"a\", while genes that are expressed in both conditions are given the subclass \"b\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "heatmap: OmicsHeatmap = OmicsHeatmap(\n", + " df=rhythmic_all,\n", + " columns_cond1=columns_cond1,\n", + " columns_cond2=columns_cond2,\n", + " t_cond1=t_cond1,\n", + " t_cond2=t_cond2,\n", + " cond1_label=\"Alpha cells\",\n", + " cond2_label=\"Beta cells\",\n", + " show_unexpressed=False,\n", + ")\n", + "heatmap.plot_heatmap()" + ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [ + "## Showing individual examples\n", + "\n", + "Finally, we can manually select genes of interest to show the underlying data (as points) and the fitted cosinor models from the selected model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "example = TimeSeriesExample(\n", + " df=rhythmic_all,\n", + " columns_cond1=columns_cond1,\n", + " columns_cond2=columns_cond2,\n", + " t_cond1=t_cond1,\n", + " t_cond2=t_cond2,\n", + " cond1_label=\"Alpha cells\",\n", + " cond2_label=\"Beta cells\",\n", + ")\n", + "\n", + "# example.plot_time_series(\"Scg2\", xticks=np.arange(0, 25, 4))\n", + "# example.plot_time_series(\"Upk3a\", xticks=np.arange(0, 25, 4))\n", + "# example.plot_time_series(\"Kcnk3\", xticks=np.arange(0, 25, 4))\n", + "\n", + "example.plot_time_series(\"Ntrk1\", xticks=np.arange(0, 25, 4))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cosinor-lite", + "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.11.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/setup_notebook.py b/notebooks/setup_notebook.py deleted file mode 100644 index 48d42c3..0000000 --- a/notebooks/setup_notebook.py +++ /dev/null @@ -1,15 +0,0 @@ -import matplotlib.pyplot as plt - -plt.rcParams.update( - { - "font.size": 8, - "axes.titlesize": 8, - "axes.labelsize": 8, - "xtick.labelsize": 8, - "ytick.labelsize": 8, - "legend.fontsize": 8, - "figure.titlesize": 8, - "pdf.fonttype": 42, - }, -) -plt.style.use("seaborn-v0_8-ticks") diff --git a/pyproject.toml b/pyproject.toml index 65d034f..0727e15 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,8 @@ dependencies = [ "pingouin", "pydantic>=2.11.9", "tqdm>=4.67.1", + "openpyxl>=3.1.5", + "gradio>=5.50.0", ] name = "cosinor-lite" version = "0.0.0" @@ -114,8 +116,6 @@ lint.ignore = [ "FA102", # Flake8-future-annotations - Missing `from __future__ import annotations`, but uses PEP 604 union ] -# Avoid trying to fix flake8-bugbear (`B`) violations. -#unfixable = ["B"] line-length = 119 # Ignore `E402` (import violations) in all `__init__.py` files, and in `path/to/file.py`. @@ -126,8 +126,5 @@ line-length = 119 [tool.ty.environment] root = "./src/cosinor_lite" -# [tool.ty.rules] -# invalid-type-form = "ignore" - -# [tool.uv.sources] -# cosinor-lite = { workspace = true } +[tool.interrogate] +exclude = ["tests", "app.py"] diff --git a/run.sh b/run.sh index 6610aea..9d38ce5 100755 --- a/run.sh +++ b/run.sh @@ -4,22 +4,19 @@ set -e THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -# install core and development Python dependencies into the currently activated venv +# install core and development Python dependencies using uv function install { - python -m pip install --upgrade pip - python -m pip install --editable "$THIS_DIR/[dev]" + uv sync --extra dev } # run linting, formatting, and other static code quality tools function lint { - pre-commit run --all-files + uv run pre-commit run --all-files } # same as `lint` but with any special considerations for CI function lint:ci { - # We skip no-commit-to-branch since that blocks commits to `main`. - # All merged PRs are commits to `main` so this must be disabled. - SKIP=no-commit-to-branch pre-commit run --all-files + SKIP=no-commit-to-branch uv run pre-commit run --all-files } # execute tests that are not marked as `slow` @@ -34,10 +31,9 @@ function test:ci { COVERAGE_DIR="$INSTALLED_PKG_DIR" run-tests } -# (example) ./run.sh test tests/test_states_info.py::test__slow_add function run-tests { PYTEST_EXIT_STATUS=0 - python -m pytest ${@:-"$THIS_DIR/tests/"} \ + uv run python -m pytest ${@:-"$THIS_DIR/tests/"} \ --cov "${COVERAGE_DIR:-$THIS_DIR/src}" \ --cov-report html \ --cov-report term \ @@ -50,56 +46,12 @@ function run-tests { return $PYTEST_EXIT_STATUS } -function test:wheel-locally { - deactivate || true - rm -rf test-env || true - python -m venv test-env - source test-env/bin/activate - clean || true - pip install build - build - pip install ./dist/*.whl pytest pytest-cov - test:ci - deactivate || true -} - -# serve the html test coverage report on localhost:8000 function serve-coverage-report { - python -m http.server --directory "$THIS_DIR/test-reports/htmlcov/" 8000 -} - -# build a wheel and sdist from the Python source code -function build { - python -m build --sdist --wheel "$THIS_DIR/" + python -m http.server 8000 \ + --bind 127.0.0.1 \ + --directory "$THIS_DIR/test-reports/htmlcov/" } -function release:test { - lint - clean - build - publish:test -} - -function release:prod { - release:test - publish:prod -} - -function publish:test { - try-load-dotenv || true - twine upload dist/* \ - --repository testpypi \ - --username=__token__ \ - --password="$TEST_PYPI_TOKEN" -} - -function publish:prod { - try-load-dotenv || true - twine upload dist/* \ - --repository pypi \ - --username=__token__ \ - --password="$PROD_PYPI_TOKEN" -} # remove all files generated by tests, builds, or operating this codebase function clean { @@ -122,17 +74,6 @@ function clean { -exec rm {} + } -# export the contents of .env as environment variables -function try-load-dotenv { - if [ ! -f "$THIS_DIR/.env" ]; then - echo "no .env file found" - return 1 - fi - - while read -r line; do - export "$line" - done < <(grep -v '^#' "$THIS_DIR/.env" | grep -v '^$') -} # print all functions in this file function help { diff --git a/src/cosinor_lite/base_models.py b/src/cosinor_lite/base_models.py deleted file mode 100644 index a2e56df..0000000 --- a/src/cosinor_lite/base_models.py +++ /dev/null @@ -1,73 +0,0 @@ -from __future__ import annotations - -from abc import ABC, abstractmethod - -import pandas as pd -import statsmodels.formula.api as smf -from pydantic.dataclasses import dataclass - - -@dataclass -class ModelResult: - name: int - llf: float - bic: float - alpha_phase: float - alpha_amp: float - beta_phase: float - beta_amp: float - - -@dataclass -class ModelResultOneCondition: - name: int - llf: float - bic: float - phase: float - amp: float - - -class BaseModel(ABC): - name: str - k: int - formula: str - - def fit(self, df: pd.DataFrame) -> ModelResult: - # df must already contain: y, constant, cos_wt, sin_wt, is_alpha, is_beta - model = smf.ols(self.formula, data=df).fit() - n = len(df) - alpha_phase, alpha_amp, beta_phase, beta_amp = self.extract(model.params) - return ModelResult( - name=self.name, - llf=model.llf, - bic=bic(model.llf, self.k, n), - alpha_phase=alpha_phase, - alpha_amp=alpha_amp, - beta_phase=beta_phase, - beta_amp=beta_amp, - ) - - @abstractmethod - def extract(self, params: pd.Series) -> tuple[float, float, float, float]: ... - - -class BaseModelOneCondition(ABC): - name: str - k: int - formula: str - - def fit(self, df: pd.DataFrame) -> ModelResultOneCondition: - # df must already contain: y, constant, cos_wt, sin_wt, is_alpha, is_beta - model = smf.ols(self.formula, data=df).fit() - n = len(df) - phase, amp = self.extract(model.params) - return ModelResultOneCondition( - name=self.name, - llf=model.llf, - bic=bic(model.llf, self.k, n), - phase=phase, - amp=amp, - ) - - @abstractmethod - def extract(self, params: pd.Series) -> tuple[float, float]: ... diff --git a/src/cosinor_lite/cities.json b/src/cosinor_lite/cities.json deleted file mode 100644 index c37c112..0000000 --- a/src/cosinor_lite/cities.json +++ /dev/null @@ -1,233 +0,0 @@ -[ - { - "city": "Montgomery", - "state": "Alabama", - "lat": 32.3792233, - "lng": -86.3077368, - "capital": true - }, - { - "city": "Juneau", - "state": "Alaska", - "lat": 58.3019444, - "lng": -134.4197222, - "capital": true - }, - { - "city": "Phoenix", - "state": "Arizona", - "lat": 33.4483771, - "lng": -112.0740373, - "capital": true - }, - { - "city": "Little Rock", - "state": "Arkansas", - "lat": 34.7464809, - "lng": -92.2895948, - "capital": true - }, - { - "city": "Sacramento", - "state": "California", - "lat": 38.5757647, - "lng": -121.4788515, - "capital": true - }, - { - "city": "Denver", - "state": "Colorado", - "lat": 39.7392364, - "lng": -104.9848623, - "capital": true - }, - { - "city": "Hartford", - "state": "Connecticut", - "lat": 41.7658043, - "lng": -72.6733723, - "capital": true - }, - { - "city": "Dover", - "state": "Delaware", - "lat": 39.158168, - "lng": -75.5243682, - "capital": true - }, - { - "city": "Tallahassee", - "state": "Florida", - "lat": 30.4382559, - "lng": -84.2807329, - "capital": true - }, - { - "city": "Atlanta", - "state": "Georgia", - "lat": 33.7489954, - "lng": -84.3879824, - "capital": true - }, - { - "city": "Honolulu", - "state": "Hawaii", - "lat": 21.3069444, - "lng": -157.8583333, - "capital": true - }, - { - "city": "Boise", - "state": "Idaho", - "lat": 43.6150186, - "lng": -116.2023137, - "capital": true - }, - { - "city": "Springfield", - "state": "Illinois", - "lat": 39.7983633, - "lng": -89.6549613, - "capital": true - }, - { - "city": "Indianapolis", - "state": "Indiana", - "lat": 39.7683331, - "lng": -86.1583502, - "capital": true - }, - { - "city": "Des Moines", - "state": "Iowa", - "lat": 41.6005448, - "lng": -93.6091064, - "capital": true - }, - { - "city": "Topeka", - "state": "Kansas", - "lat": 39.0558243, - "lng": -95.6890185, - "capital": true - }, - { - "city": "Frankfort", - "state": "Kentucky", - "lat": 38.2009055, - "lng": -84.8732835, - "capital": true - }, - { - "city": "Baton Rouge", - "state": "Louisiana", - "lat": 30.4582829, - "lng": -91.1403196, - "capital": true - }, - { - "city": "Augusta", - "state": "Maine", - "lat": 44.3106241, - "lng": -69.7794897, - "capital": true - }, - { - "city": "Annapolis", - "state": "Maryland", - "lat": 38.9784453, - "lng": -76.4921829, - "capital": true - }, - { - "city": "Boston", - "state": "Massachusetts", - "lat": 42.3600825, - "lng": -71.0588801, - "capital": true - }, - { - "city": "Lansing", - "state": "Michigan", - "lat": 42.732535, - "lng": -84.5555347, - "capital": true - }, - { - "city": "Oklahoma City", - "state": "Oklahoma", - "lat": 42.732535, - "lng": -84.5555347, - "capital": true - }, - { - "city": "Salem", - "state": "Oregon", - "lat": 42.732535, - "lng": -84.5555347, - "capital": true - }, - { - "city": "St. Paul", - "state": "Minnesota", - "lat": 44.9537029, - "lng": -93.0899578, - "capital": true - }, - { - "city": "Jackson", - "state": "Mississippi", - "lat": 32.2987573, - "lng": -90.1848103, - "capital": true - }, - { - "city": "Jefferson City", - "state": "Missouri", - "lat": 38.5767017, - "lng": -92.1735164, - "capital": true - }, - { - "city": "Helena", - "state": "Montana", - "lat": 46.5958056, - "lng": -112.0270318, - "capital": true - }, - { - "city": "Lincoln", - "state": "Nebraska", - "lat": 40.813616, - "lng": -96.7025955, - "capital": true - }, - { - "city": "Carson City", - "state": "Nevada", - "lat": 39.1637984, - "lng": -119.7674034, - "capital": true - }, - { - "city": "Concord", - "state": "New Hampshire", - "lat": 43.2081366, - "lng": -71.5375718, - "capital": true - }, - { - "city": "Trenton", - "state": "New Jersey", - "lat": 40.2205824, - "lng": -74.759717, - "capital": true - }, - { - "city": "Santa Fe", - "state": "New Mexico", - "lat": 35.6869752, - "lng": -105.937799, - "capital": true - } -] diff --git a/src/cosinor_lite/livecell_cosinor_analysis.py b/src/cosinor_lite/livecell_cosinor_analysis.py new file mode 100644 index 0000000..c80b55b --- /dev/null +++ b/src/cosinor_lite/livecell_cosinor_analysis.py @@ -0,0 +1,727 @@ +from __future__ import annotations + +import os +import tempfile + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +from numpy.typing import NDArray +from scipy.optimize import curve_fit +from scipy.stats import f as f_dist + +from cosinor_lite.livecell_dataset import LiveCellDataset + +plt.rcParams.update( + { + "font.size": 8, + "axes.titlesize": 8, + "axes.labelsize": 8, + "xtick.labelsize": 8, + "ytick.labelsize": 8, + "legend.fontsize": 8, + "figure.titlesize": 8, + "pdf.fonttype": 42, + }, +) +plt.style.use("seaborn-v0_8-ticks") + + +def constant_model(x: NDArray[np.float64], mesor: float) -> NDArray[np.float64]: + """ + Evaluate a constant model at the supplied mesor. + + Parameters + ---------- + x : NDArray[np.float64] + Time values at which the constant model is evaluated. + mesor : float + The mesor (mean level) used as the constant prediction. + + Returns + ------- + NDArray[np.float64] + The mesor value supplied by the caller broadcast over ``x``. + + """ + return np.full_like(x, mesor) + + +def cosine_model_24(x: NDArray[np.float64], amplitude: float, acrophase: float, mesor: float) -> NDArray[np.float64]: + """ + Evaluate a 24 h cosine model for the provided time points. + + Parameters + ---------- + x : NDArray[np.float64] + Time values at which to evaluate the curve. + amplitude : float + Cosine amplitude. + acrophase : float + Phase shift (in hours) applied to the cosine. + mesor : float + Baseline offset of the curve. + + Returns + ------- + NDArray[np.float64] + The cosine values with a fixed 24 h period. + + """ + period = 24.0 + return amplitude * np.cos(2 * np.pi * (x - acrophase) / period) + mesor + + +def cosine_model_free_period( + x: NDArray[np.float64], + amplitude: float, + acrophase: float, + period: float, + mesor: float, +) -> NDArray[np.float64]: + """ + Evaluate a cosine model allowing the period to vary. + + Parameters + ---------- + x : NDArray[np.float64] + Time values at which to evaluate the cosine. + amplitude : float + Cosine amplitude. + acrophase : float + Phase shift (in hours) applied to the cosine. + period : float + Oscillation period in hours. + mesor : float + Baseline offset for the model. + + Returns + ------- + NDArray[np.float64] + The cosine values with the requested period. + + """ + return amplitude * np.cos(2 * np.pi * (x - acrophase) / period) + mesor + + +def cosine_model_damped( # noqa: PLR0913 + x: NDArray[np.float64], + amplitude: float, + damp: float, + acrophase: float, + period: float, + mesor: float, +) -> NDArray[np.float64]: + """ + Evaluate a damped cosine model that decays exponentially over time. + + Parameters + ---------- + x : NDArray[np.float64] + Time values at which to evaluate the cosine. + amplitude : float + Initial amplitude of the oscillation. + damp : float + Exponential damping coefficient (positive values decay). + acrophase : float + Phase shift (in hours) applied to the cosine. + period : float + Oscillation period in hours. + mesor : float + Baseline offset for the model. + + Returns + ------- + NDArray[np.float64] + The damped cosine evaluated at ``x``. + + """ + return amplitude * np.exp(-damp * x) * np.cos(2 * np.pi * (x - acrophase) / period) + mesor + + +def _metrics(y_true: NDArray[np.float64], y_pred: NDArray[np.float64], p: int) -> tuple[float, float, float]: + """ + Compute residual sum of squares and R-squared metrics. + + Parameters + ---------- + y_true : NDArray[np.float64] + Observed values. + y_pred : NDArray[np.float64] + Predicted values from a model. + p : int + Number of model parameters used in the fit. + + Returns + ------- + tuple[float, float, float] + Residual sum of squares, R-squared, and adjusted R-squared. + + """ + y_true = np.asarray(y_true, float) + y_pred = np.asarray(y_pred, float) + n: int = y_true.size + rss: float = np.sum((y_true - y_pred) ** 2) + sst: float = np.sum((y_true - np.mean(y_true)) ** 2) + r2 = np.nan + r2_adj = np.nan + if sst > 0: + r2 = 1.0 - (rss / sst) + if n > p and n > 1: + r2_adj = 1.0 - (rss / (n - p)) / (sst / (n - 1)) + return rss, r2, r2_adj + + +def _sanitize_xy( + x: NDArray[np.float64], + y: NDArray[np.float64], + min_points: int = 4, +) -> tuple[NDArray[np.float64], NDArray[np.float64]]: + """ + Remove non-finite values, sort by time, and validate point count. + + Parameters + ---------- + x : NDArray[np.float64] + Candidate time points. + y : NDArray[np.float64] + Candidate measurements aligned with ``x``. + min_points : int, optional + Minimum required number of finite points after cleaning, by default 4. + + Returns + ------- + tuple[NDArray[np.float64], NDArray[np.float64]] + Cleaned and sorted ``x`` and ``y`` arrays. + + Raises + ------ + ValueError + If fewer than ``min_points`` observations remain after cleaning. + + """ + x = np.asarray(x, float) + y = np.asarray(y, float) + ok = np.isfinite(x) & np.isfinite(y) + x, y = x[ok], y[ok] + order: NDArray[np.float64] = np.argsort(x) + x, y = x[order], y[order] + if y.size < min_points: + msg = f"Not enough valid points after cleaning (need ≥{min_points}, got {y.size})." + raise ValueError( + msg, + ) + return x, y + + +class CosinorAnalysis(LiveCellDataset): + """ + Extend ``LiveCellDataset`` with cosinor model fitting utilities. + + Parameters + ---------- + *args + Positional arguments forwarded to ``LiveCellDataset``. + period : float, optional + Default oscillation period for fits, by default 24.0. + method : str, optional + Default detrending method, by default ``"ols"``. + t_lower : float, optional + Lower bound on time window (hours) used when fitting, by default 0.0. + t_upper : float, optional + Upper bound on time window (hours) used when fitting, by default 720.0. + **kwargs + Keyword arguments forwarded to ``LiveCellDataset``. + + """ + + def __init__( + self, + *args, # noqa: ANN002 + period: float = 24.0, + method: str = "ols", + t_lower: float = 0.0, + t_upper: float = 720.0, + **kwargs, # noqa: ANN003 + ) -> None: + """ + Initialize the cosinor analysis object with dataset metadata. + + Parameters + ---------- + *args + Positional arguments passed to ``LiveCellDataset``. + period : float, optional + Default oscillation period (hours), by default 24.0. + method : str, optional + Default detrending method, by default ``"ols"``. + t_lower : float, optional + Lower time bound (hours), by default 0.0. + t_upper : float, optional + Upper time bound (hours), by default 720.0. + **kwargs + Keyword arguments forwarded to ``LiveCellDataset``. + + """ + super().__init__(*args, **kwargs) + + self.t_lower = t_lower + self.t_upper = t_upper + self.period = period + self.method = method + + def fit_cosinor_24( + self, + x: NDArray[np.float64], + y: NDArray[np.float64], + ) -> tuple[dict, NDArray[np.float64], NDArray[np.float64]]: + """ + Fit a fixed 24 h cosinor model to the supplied data. + + Parameters + ---------- + x : NDArray[np.float64] + Time values (hours). + y : NDArray[np.float64] + Measurements aligned with ``x``. + + Returns + ------- + tuple[dict, NDArray[np.float64], NDArray[np.float64]] + Fit summary metrics, high-resolution prediction times, and predictions. + + """ + x, y = _sanitize_xy(x, y) + + p0_const: list[float] = [float(np.mean(y))] + params_const, _ = curve_fit(constant_model, x, y, p0=p0_const) + yhat_const: float = constant_model(x, *params_const) + + p0_cos: list[float] = [ + float(np.std(y)), + 0.0, + float(np.mean(y)), + ] + params_cos, _ = curve_fit(cosine_model_24, x, y, p0=p0_cos) + amp_fit, acro_fit, mesor_fit = params_cos + yhat_cos: NDArray[np.float64] = cosine_model_24(x, amp_fit, acro_fit, mesor_fit) + + rss_cos, r2, r2_adj = _metrics(y, yhat_cos, p=3) + rss_const, _, _ = _metrics(y, np.full_like(x, yhat_const), p=1) + + n = len(y) + p1, p2 = 1, 3 + num = max(rss_const - rss_cos, 0.0) + den = max(rss_cos, 1e-12) + f_stat = (num / (p2 - p1)) / (den / max(n - p2, 1)) + p_val = np.nan + if n > p2: + p_val = f_dist.sf(f_stat, p2 - p1, n - p2) + + t_test_acro = np.linspace(0.0, 24.0, 1440) + y_test_acro = cosine_model_24(t_test_acro, amp_fit, acro_fit, mesor_fit) + amplitude = abs(amp_fit) + acrophase = t_test_acro[int(np.argmax(y_test_acro))] + mesor = mesor_fit + + t_test: NDArray[np.float64] = np.linspace(float(x[0]), float(x[-1]), 1440) + y_test = cosine_model_24(t_test, amp_fit, acro_fit, mesor_fit) + + results = { + "mesor": mesor, + "amplitude": amplitude, + "acrophase": acrophase, + "p-val osc": p_val, + "r2": r2, + "r2_adj": r2_adj, + } + return results, t_test, y_test + + def fit_cosinor_free_period( + self, + x: NDArray[np.float64], + y: NDArray[np.float64], + ) -> tuple[dict, NDArray[np.float64], NDArray[np.float64]]: + """ + Fit a cosinor model with a free (bounded) period parameter. + + Parameters + ---------- + x : NDArray[np.float64] + Time values (hours). + y : NDArray[np.float64] + Measurements aligned with ``x``. + + Returns + ------- + tuple[dict, NDArray[np.float64], NDArray[np.float64]] + Fit summary metrics, high-resolution prediction times, and predictions. + + """ + x, y = _sanitize_xy(x, y) + + p0_const = [float(np.mean(y))] + params_const, _ = curve_fit(constant_model, x, y, p0=p0_const) + yhat_const = constant_model(x, *params_const) + + p0_24 = [float(np.std(y)), 0.0, float(np.mean(y))] + params_24, _ = curve_fit(cosine_model_24, x, y, p0=p0_24) + amp0, acro0, mesor0 = params_24 + p0_free = [amp0, acro0, 24.0, mesor0] # [A, phase, period, mesor] + + bounds = ([-np.inf, -np.inf, 20.0, -np.inf], [np.inf, np.inf, 28.0, np.inf]) + params_free, _ = curve_fit( + cosine_model_free_period, + x, + y, + p0=p0_free, + bounds=bounds, + ) + amp_fit, acro_fit, period_fit, mesor_fit = params_free + yhat_free = cosine_model_free_period( + x, + amp_fit, + acro_fit, + period_fit, + mesor_fit, + ) + + rss_free, r2, r2_adj = _metrics(y, yhat_free, p=4) + rss_const, _, _ = _metrics(y, yhat_const, p=1) + + n = len(y) + p1, p2 = 1, 4 + num = max(rss_const - rss_free, 0.0) + den = max(rss_free, 1e-12) + f_stat = (num / (p2 - p1)) / (den / max(n - p2, 1)) + p_val = np.nan + if n > p2: + p_val = f_dist.sf(f_stat, p2 - p1, n - p2) + + t_test_acro = np.linspace(0.0, float(period_fit), 2000) + y_test_acro = cosine_model_free_period( + t_test_acro, + amp_fit, + acro_fit, + period_fit, + mesor_fit, + ) + amplitude = abs(amp_fit) + acrophase = t_test_acro[int(np.argmax(y_test_acro))] + mesor = mesor_fit + period = float(period_fit) + + t_test = np.linspace(float(x[0]), float(x[-1]), 1440) + y_test = cosine_model_free_period( + t_test, + amp_fit, + acro_fit, + period_fit, + mesor_fit, + ) + + results = { + "mesor": mesor, + "amplitude": amplitude, + "acrophase": acrophase, + "period": period, + "p-val osc": p_val, + "r2": r2, + "r2_adj": r2_adj, + } + return results, t_test, y_test + + def fit_cosinor_damped( + self, + x: NDArray[np.float64], + y: NDArray[np.float64], + ) -> tuple[dict, NDArray[np.float64], NDArray[np.float64]]: + """ + Fit a damped cosinor model with exponential decay. + + Parameters + ---------- + x : NDArray[np.float64] + Time values (hours). + y : NDArray[np.float64] + Measurements aligned with ``x``. + + Returns + ------- + tuple[dict, NDArray[np.float64], NDArray[np.float64]] + Fit summary metrics, high-resolution prediction times, and predictions. + + """ + x, y = _sanitize_xy(x, y) + + p0_const = [float(np.mean(y))] + params_const, _ = curve_fit(constant_model, x, y, p0=p0_const) + yhat_const = constant_model(x, *params_const) + + p0_24 = [float(np.std(y)), 0.0, float(np.mean(y))] + params_24, _ = curve_fit(cosine_model_24, x, y, p0=p0_24) + amp0, acro0, mesor0 = params_24 + + p0_damped = [amp0, 0.01, acro0, 24.0, mesor0] + bounds = ( + [-np.inf, 0.0, -np.inf, 20.0, -np.inf], + [np.inf, np.inf, np.inf, 28.0, np.inf], + ) + params_damped, _ = curve_fit( + cosine_model_damped, + x, + y, + p0=p0_damped, + bounds=bounds, + ) + amp_fit, damp_fit, acro_fit, period_fit, mesor_fit = params_damped + yhat_damped = cosine_model_damped( + x, + amp_fit, + damp_fit, + acro_fit, + period_fit, + mesor_fit, + ) + + rss_damped, r2, r2_adj = _metrics(y, yhat_damped, p=5) + rss_const, _, _ = _metrics(y, yhat_const, p=1) + + n = len(y) + p1, p2 = 1, 5 + num = max(rss_const - rss_damped, 0.0) + den = max(rss_damped, 1e-12) + f_stat = (num / (p2 - p1)) / (den / max(n - p2, 1)) + p_val = np.nan + if n > p2: + p_val = f_dist.sf(f_stat, p2 - p1, n - p2) + + t_test_acro = np.linspace(0.0, float(period_fit), 1440) + y_test_acro = cosine_model_damped( + t_test_acro, + amp_fit, + damp_fit, + acro_fit, + period_fit, + mesor_fit, + ) + amplitude = abs(amp_fit) + acrophase = t_test_acro[int(np.argmax(y_test_acro))] + mesor = mesor_fit + period = float(period_fit) + damp = float(damp_fit) + + t_test = np.linspace(float(x[0]), float(x[-1]), 1440) + y_test = cosine_model_damped( + t_test, + amp_fit, + damp_fit, + acro_fit, + period_fit, + mesor_fit, + ) + + results = { + "mesor": mesor, + "amplitude": amplitude, + "acrophase": acrophase, + "period": period, + "damp": damp, + "p-val osc": p_val, + "r2": r2, + "r2_adj": r2_adj, + } + return results, t_test, y_test + + def get_cosinor_fits( + self, + x: NDArray[np.float64], + y: NDArray[np.float64], + method: str = "cosinor_24", + ) -> tuple[dict, NDArray[np.float64], NDArray[np.float64]]: + """ + Dispatch to the requested cosinor model and return its fit. + + Parameters + ---------- + x : NDArray[np.float64] + Time values (hours). + y : NDArray[np.float64] + Measurements aligned with ``x``. + method : str, optional + Cosinor model name (``"cosinor_24"``, ``"cosinor_free_period"``, ``"cosinor_damped"``). + + Returns + ------- + tuple[dict, NDArray[np.float64], NDArray[np.float64]] + Fit summary metrics, prediction times, and predictions. + + Raises + ------ + ValueError + If an unknown model name is supplied. + + """ + if method == "cosinor_24": + results, t_test, model_predictions_cosine = self.fit_cosinor_24(x, y) + elif method == "cosinor_free_period": + results, t_test, model_predictions_cosine = self.fit_cosinor_free_period( + x, + y, + ) + elif method == "cosinor_damped": + results, t_test, model_predictions_cosine = self.fit_cosinor_damped(x, y) + else: + msg = f"Unknown cosine model: {method}" + raise ValueError(msg) + + return results, t_test, model_predictions_cosine + + def group_selector( + self, + group: str, + ) -> tuple[np.ndarray, np.ndarray, np.ndarray, str, int, str]: + """ + Retrieve group-specific data and plotting metadata. + + Parameters + ---------- + group : str + Group name (``"group1"`` or ``"group2"``). + + Returns + ------- + tuple[np.ndarray, np.ndarray, np.ndarray, str, int, str] + Tuple containing IDs, replicates, data matrix, color, number of unique IDs, + and group label. + + Raises + ------ + ValueError + If ``group`` is not ``"group1"`` or ``"group2"``. + + """ + if group == "group1": + ids, replicates, data = self.get_group1_ids_replicates_data() + color = self.color_group1 + group_label = self.group1_label + elif group == "group2": + ids, replicates, data = self.get_group2_ids_replicates_data() + color = self.color_group2 + group_label = self.group2_label + else: + msg = "group must be 'group1' or 'group2'" + raise ValueError(msg) + + ids = np.asarray(ids) + replicates = np.asarray(replicates) + data = np.asarray(data) + + n_group = len(np.unique(ids)) + return ids, replicates, data, color, n_group, group_label + + def fit_cosinor( # noqa: PLR0913 + self, + group: str, + method: str = "linear", + window: int = 5, + cosinor_model: str = "cosinor_24", + m: int = 5, + plot_style: str = "scatter", + ) -> tuple[pd.DataFrame, str, plt.Figure, str]: + """ + Detrend each replicate in a group and fit the selected cosinor model. + + Parameters + ---------- + group : str + Group name (``"group1"`` or ``"group2"``). + method : str, optional + Detrending method provided to ``get_trend``, by default ``"linear"``. + window : int, optional + Window size for moving-average detrending, by default 5. + cosinor_model : str, optional + Name of cosinor model to fit, by default ``"cosinor_24"``. + m : int, optional + Number of subplot columns, by default 5. + plot_style : str, optional + Plot style for data (``"scatter"`` or ``"line"``), by default ``"scatter"``. + + Returns + ------- + tuple[pd.DataFrame, str, plt.Figure, str] + DataFrame of fit metrics, CSV path, generated figure, and PDF path. + + Raises + ------ + ValueError + If ``group`` is not ``"group1"`` or ``"group2"``. + + """ + ids, _replicates, data, color, n_group, group_label = self.group_selector(group) + n = np.ceil(n_group / m).astype(int) + + study_list = np.unique(ids).tolist() + + fig = plt.figure(figsize=(5 * m / 2.54, 5 * n / 2.54)) + + to_export_list = [] + + for i, id_curr in enumerate(study_list): + mask = np.array(ids) == id_curr + n_reps = np.sum(mask) + + ax = fig.add_subplot(n, m, i + 1) + + for j in range(n_reps): + exp_info = {"id": id_curr, "replicate": j + 1, "group": group_label} + + x = self.time + y = data[:, mask][:, j] + + valid_mask = ~np.isnan(y) + x_valid = x[valid_mask] + y_valid = y[valid_mask] + + range_mask = (x_valid >= self.t_lower) & (x_valid <= self.t_upper) + x_fit = x_valid[range_mask] + y_fit = y_valid[range_mask] + + x_processed, y_processed = self.get_trend( + x_fit, + y_fit, + method=method, + window=window, + ) + y_detrended = y_fit - y_processed + np.mean(y_fit) + + if plot_style == "scatter": + ax.scatter(x_processed, y_detrended, s=4, alpha=0.8, color=color) + else: + ax.plot(x_processed, y_detrended, color=color) + + results, t_test, model_predictions_cosine = self.get_cosinor_fits( + x_processed, + y_detrended, + method=cosinor_model, + ) + to_export_list.append({**exp_info, **results}) + ax.plot(t_test, model_predictions_cosine, color="k", linestyle="--") + + ax.set_title(f"ID: {id_curr} (n={n_reps}) - {group_label}") + ax.set_xlabel("Time (h)") + if i % m == 0: + ax.set_ylabel("Expression") + + plt.tight_layout() + + df_export = pd.DataFrame(to_export_list) + fd, tmp1_path = tempfile.mkstemp(suffix=".csv") + os.close(fd) + df_export.to_csv(tmp1_path, index=False) + + fd, tmp2_path = tempfile.mkstemp(suffix=".pdf") + os.close(fd) + fig.savefig(tmp2_path) + + return df_export, tmp1_path, fig, tmp2_path diff --git a/src/cosinor_lite/livecell_dataset.py b/src/cosinor_lite/livecell_dataset.py new file mode 100644 index 0000000..2f45d8b --- /dev/null +++ b/src/cosinor_lite/livecell_dataset.py @@ -0,0 +1,395 @@ +from __future__ import annotations + +import os +import tempfile + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import statsmodels.api as sm +from pydantic import ConfigDict, field_validator, model_validator +from pydantic.dataclasses import dataclass + +plt.rcParams.update( + { + "font.size": 8, + "axes.titlesize": 8, + "axes.labelsize": 8, + "xtick.labelsize": 8, + "ytick.labelsize": 8, + "legend.fontsize": 8, + "figure.titlesize": 8, + "pdf.fonttype": 42, + }, +) +plt.style.use("seaborn-v0_8-ticks") + + +@dataclass(config=ConfigDict(arbitrary_types_allowed=True)) +class LiveCellDataset: + """ + Handles live cell dataset operations: validation, trend analysis, and plotting. + + Attributes: + ids (list[str]): Unique identifiers for each sample. + group (list[str]): Group labels for each sample. + replicate (list[int]): Replicate numbers for each sample. + time_series (np.ndarray): 2D array of time series data (shape: [timepoints, samples]). + time (np.ndarray): 1D array of timepoints. + group1_label (str): Label for group 1 (default: "group1"). + group2_label (str): Label for group 2 (default: "group2"). + color_group1 (str): Color for plotting group 1 (default: "tab:blue"). + color_group2 (str): Color for plotting group 2 (default: "tab:orange"). + + Methods: + _to_2d_f64(v): Converts input to a 2D numpy array of float64 type. + _check_columns(): Validates that ids, group, and replicate lengths match time_series columns. + get_group1_ids_replicates_data(): Returns ids, replicates, and data for group 1. + get_group2_ids_replicates_data(): Returns ids, replicates, and data for group 2. + linear_trend(x, y): Fits a linear trend to the data. + poly2_trend(x, y): Fits a second-order polynomial trend to the data. + moving_average_trend(x, y, window): Computes a moving average trend. + get_trend(x, y, method, window): Applies the specified detrending method. + plot_group_data(group, method, window, m, plot_style): Plots time series data for the specified group. + + """ + + ids: list[str] + group: list[str] + replicate: list[int] + time_series: np.ndarray + time: np.ndarray + + group1_label: str = "group1" + group2_label: str = "group2" + + color_group1: str = "tab:blue" + color_group2: str = "tab:orange" + + @field_validator("time_series", mode="before") + @classmethod + def _to_2d_f64(cls, v: object) -> np.ndarray: + """ + Converts the input object to a 2D NumPy array of type float64. + + Parameters + ---------- + v : object + The input object to be converted. Should be convertible to a NumPy array. + + Returns + ------- + np.ndarray + A 2D NumPy array of dtype float64. + + Raises + ------ + ValueError + If the input cannot be converted to a 2D array. + + """ + a = np.asarray(v, dtype=np.float64) + two_d_array_dims = 2 + if a.ndim != two_d_array_dims: + msg = "expected 2D array" + raise ValueError(msg) + return a + + @model_validator(mode="after") + def _check_columns(self) -> LiveCellDataset: + """ + Validates that the lengths of `ids`, `group`, and `replicate` match the number of columns in `time_series`. + + Parameters + ---------- + self : LiveCellDataset + The instance of the LiveCellDataset being validated. + + Returns + ------- + LiveCellDataset + The validated instance. + + Raises + ------ + ValueError + If the length of `ids`, `group`, or `replicate` does not match the number of columns in `time_series`. + + """ + if len(self.ids) != self.time_series.shape[1]: + msg = "Length of ids must match number of columns in time_series" + raise ValueError( + msg, + ) + if len(self.group) != self.time_series.shape[1]: + msg = "Length of group must match number of columns in time_series" + raise ValueError( + msg, + ) + if len(self.replicate) != self.time_series.shape[1]: + msg = "Length of replicate must match number of columns in time_series" + raise ValueError( + msg, + ) + return self + + def get_group1_ids_replicates_data(self) -> tuple[list[str], list[int], np.ndarray]: + """ + Retrieves the IDs, replicate numbers, and time series data for samples belonging to group1. + + Returns: + tuple[list[str], list[int], np.ndarray]: + - ids: List of sample IDs in group1. + - replicates: List of replicate numbers corresponding to group1 samples. + - data: 2D NumPy array of time series data for group1 samples (columns correspond to samples). + + """ + mask = np.array(self.group) == self.group1_label + ids = list(np.array(self.ids)[mask]) + replicates = list(np.array(self.replicate)[mask]) + data = self.time_series[:, mask] + return ids, replicates, data + + def get_group2_ids_replicates_data(self) -> tuple[list[str], list[int], np.ndarray]: + """ + Retrieves the IDs, replicate numbers, and time series data for samples belonging to group2. + + Returns: + tuple[list[str], list[int], np.ndarray]: + - ids: List of sample IDs in group2. + - replicates: List of replicate numbers corresponding to group2 samples. + - data: 2D NumPy array of time series data for group2 samples (columns correspond to samples). + + """ + mask = np.array(self.group) == self.group2_label + ids = list(np.array(self.ids)[mask]) + replicates = list(np.array(self.replicate)[mask]) + data = self.time_series[:, mask] + return ids, replicates, data + + def linear_trend(self, x: np.ndarray, y: np.ndarray) -> tuple[np.ndarray, np.ndarray]: + """ + Fits a linear regression model to the provided data and returns the input x values along with the predicted linear trend. + + Parameters + ---------- + x : np.ndarray + The independent variable values. + y : np.ndarray + The dependent variable values. + + Returns + ------- + tuple[np.ndarray, np.ndarray] + A tuple containing the original x values and the predicted linear fit values. + + """ + model = sm.OLS(y, sm.add_constant(x)).fit() + linear_fit = model.predict(sm.add_constant(x)) + return x, linear_fit + + def poly2_trend(self, x: np.ndarray, y: np.ndarray) -> tuple[np.ndarray, np.ndarray]: + """ + Fits a second-degree polynomial (quadratic) trend to the given data. + + Args: + x (np.ndarray): 1D array of independent variable values. + y (np.ndarray): 1D array of dependent variable values. + + Returns: + tuple[np.ndarray, np.ndarray]: + - x: The input array of independent variable values. + - poly_fit: The fitted quadratic values corresponding to x. + + """ + coeffs = np.polyfit(x, y, 2) + poly_fit = np.polyval(coeffs, x) + return x, poly_fit + + def moving_average_trend(self, x: np.ndarray, y: np.ndarray, window: int = 5) -> tuple[np.ndarray, np.ndarray]: + """ + Computes the moving average trend of the input data using a specified window size. + + Parameters + ---------- + x : np.ndarray + The array of x-values (e.g., time points). + y : np.ndarray + The array of y-values (e.g., measurements corresponding to x). + window : int, optional + The size of the moving average window. Must be at least 1. Default is 5. + + Returns + ------- + tuple[np.ndarray, np.ndarray] + A tuple containing: + - x values corresponding to valid (finite) moving average points. + - The moving average values (trend) for the valid points. + + Raises + ------ + ValueError + If the window size is less than 1. + + """ + if window < 1: + msg = "Window size must be at least 1." + raise ValueError(msg) + y_series = pd.Series(y) + ma_fit = y_series.rolling(window=window, center=True).mean().to_numpy() + good = np.isfinite(x) & np.isfinite(ma_fit) + return x[good], ma_fit[good] + + def get_trend( + self, + x: np.ndarray, + y: np.ndarray, + method: str = "linear", + window: int = 5, + ) -> tuple[np.ndarray, np.ndarray]: + """ + Computes the trend of the given data using the specified method. + + Parameters + ---------- + x : np.ndarray + The independent variable data (e.g., time points). + y : np.ndarray + The dependent variable data (e.g., measurements). + method : str, optional + The detrending method to use. Options are: + - "none": No detrending, returns x and zeros for y. + - "linear": Applies a linear trend. + - "poly2": Applies a quadratic (2nd degree polynomial) trend. + - "moving_average": Applies a moving average trend. + Default is "linear". + window : int, optional + The window size for the moving average method. Default is 5. + + Returns + ------- + tuple[np.ndarray, np.ndarray] + A tuple containing: + - The x values (possibly unchanged). + - The trend values corresponding to y. + + Raises + ------ + ValueError + If an unknown detrending method is specified. + + """ + if method == "none": + return np.asarray(x, float), np.zeros_like(np.asarray(y, float)) + if method == "linear": + return self.linear_trend(x, y) + if method == "poly2": + return self.poly2_trend(x, y) + if method == "moving_average": + return self.moving_average_trend(x, y, window=window) + msg = f"Unknown detrending method: {method}" + raise ValueError(msg) + + def plot_group_data( + self, + group: str, + method: str = "linear", + window: int = 5, + m: int = 5, + plot_style: str = "scatter", + ) -> tuple[plt.Figure, str]: + """ + Plots data for a specified group, with options for trend fitting and plot style. + + Parameters + ---------- + group : str + The group to plot, must be either 'group1' or 'group2'. + method : str, optional + The method used for trend fitting. Default is "linear". + Use "none" to skip trend fitting. + window : int, optional + The window size for trend fitting (if applicable). Default is 5. + m : int, optional + Number of columns in the subplot grid. Default is 5. + plot_style : str, optional + The style of the plot, either "scatter" or "line". Default is "scatter". + + Returns + ------- + fig : matplotlib.figure.Figure + The matplotlib Figure object containing the plots. + tmp_path : str + The path to the saved temporary PDF file of the figure. + + Raises + ------ + ValueError + If the group argument is not 'group1' or 'group2'. + + """ + if group == "group1": + ids, _replicates, data = self.get_group1_ids_replicates_data() + color = self.color_group1 + group_label = self.group1_label + elif group == "group2": + ids, _replicates, data = self.get_group2_ids_replicates_data() + color = self.color_group2 + group_label = self.group2_label + else: + msg = "group must be 'group1' or 'group2'" + raise ValueError(msg) + + n_group = len(np.unique(ids)) + n_cols = m + n_rows = int(np.ceil(n_group / n_cols)) + + study_list = np.unique(ids).tolist() + fig = plt.figure(figsize=(5 * n_cols / 2.54, 5 * n_rows / 2.54)) + + for i, id_curr in enumerate(study_list): + mask = np.array(ids) == id_curr + n_reps = int(np.sum(mask)) + ax = fig.add_subplot(n_rows, n_cols, i + 1) + + for j in range(n_reps): + x = self.time + y = data[:, mask][:, j] + + if plot_style == "scatter": + ax.scatter(x, y, s=4, alpha=0.8, color=color) + else: + ax.plot(x, y, color=color) + + valid_mask = ~np.isnan(y) + x_fit = x[valid_mask] + y_fit = y[valid_mask] + + x_processed, y_processed = self.get_trend( + x_fit, + y_fit, + method=method, + window=window, + ) + if method != "none": + ax.plot( + x_processed, + y_processed, + color="black", + linestyle="--", + linewidth=0.8, + ) + + ax.set_title(f"ID: {id_curr} (n={n_reps}) - {group_label}") + ax.set_xlabel("Time (h)") + if i % n_cols == 0: + ax.set_ylabel("Expression") + + plt.tight_layout() + + fd, tmp_path = tempfile.mkstemp(suffix=".pdf") + os.close(fd) + + fig.savefig(tmp_path) + + return fig, tmp_path diff --git a/src/cosinor_lite/models.py b/src/cosinor_lite/models.py deleted file mode 100644 index db8d7dc..0000000 --- a/src/cosinor_lite/models.py +++ /dev/null @@ -1,117 +0,0 @@ -from __future__ import annotations - -import numpy as np -import pandas as pd -from pydantic.dataclasses import dataclass - -from cosinor_lite.base_models import BaseModel, BaseModelOneCondition -from cosinor_lite.utils import amp_from_ab, phase_from_ab - - -@dataclass -class M0: - name: int = 0 - alpha_phase: float = np.nan - alpha_amp: float = np.nan - beta_phase: float = np.nan - beta_amp: float = np.nan - amp: float = np.nan - phase: float = np.nan - bic: float = np.nan - - -class M1(BaseModel): - name: int = 1 - k: int = 3 - formula: str = "y ~ is_alpha:constant + is_beta:constant -1" - - def extract(self, params: pd.Series) -> tuple[float, float, float, float]: - # No rhythmic terms → phases/amps are NaN - return (np.nan, np.nan, np.nan, np.nan) - - -class M1OneCondition(BaseModelOneCondition): - name: int = 1 - k: int = 1 - formula: str = "y ~ 1" - - def extract(self, params: pd.Series) -> tuple[float, float]: - # No rhythmic terms → phases/amps are NaN - return (np.nan, np.nan) - - -class M2(BaseModel): - name: int = 2 - k: int = 5 - formula: str = "y ~ is_alpha:constant + is_beta:constant + is_beta:cos_wt + is_beta:sin_wt -1" - - def extract(self, params: pd.Series) -> tuple[float, float, float, float]: - # beta has rhythmic terms, alpha does not - a: float = params["is_beta:cos_wt"] - b: float = params["is_beta:sin_wt"] - beta_phase: float = phase_from_ab(a, b) - beta_amp: float = amp_from_ab(a, b) - return (np.nan, np.nan, beta_phase, beta_amp) - - -class M3(BaseModel): - name: int = 3 - k: int = 5 - formula: str = "y ~ is_alpha:constant + is_beta:constant + is_alpha:cos_wt + is_alpha:sin_wt -1" - - def extract(self, params: pd.Series) -> tuple[float, float, float, float]: - # alpha has rhythmic terms, beta does not - a: float = params["is_alpha:cos_wt"] - b: float = params["is_alpha:sin_wt"] - alpha_phase: float = phase_from_ab(a, b) - alpha_amp: float = amp_from_ab(a, b) - return (alpha_phase, alpha_amp, np.nan, np.nan) - - -class MOscOneCondition(BaseModelOneCondition): - name: int = 3 - k: int = 3 - formula: str = "y ~ 1 + cos_wt + sin_wt" - - def extract(self, params: pd.Series) -> tuple[float, float]: - # alpha has rhythmic terms, beta does not - a: float = params["cos_wt"] - b: float = params["sin_wt"] - phase: float = phase_from_ab(a, b) - amp: float = amp_from_ab(a, b) - return (phase, amp) - - -class M4(BaseModel): - name: int = 4 - k: int = 5 - formula: str = "y ~ is_alpha:constant + is_beta:constant + cos_wt + sin_wt -1" - - def extract(self, params: pd.Series) -> tuple[float, float, float, float]: - # shared rhythmic terms for both alpha and beta - a: float = params["cos_wt"] - b: float = params["sin_wt"] - ph: float = phase_from_ab(a, b) - am: float = amp_from_ab(a, b) - return (ph, am, ph, am) - - -class M5(BaseModel): - name: int = 5 - k: int = 7 - formula: str = ( - "y ~ is_alpha:constant + is_beta:constant + " - "is_alpha:cos_wt + is_alpha:sin_wt + is_beta:cos_wt + is_beta:sin_wt -1" - ) - - def extract(self, params: pd.Series) -> tuple[float, float, float, float]: - a_cond1: float = params["is_alpha:cos_wt"] - b_cond1: float = params["is_alpha:sin_wt"] - a_cond2: float = params["is_beta:cos_wt"] - b_cond2: float = params["is_beta:sin_wt"] - - alpha_phase: float = phase_from_ab(a_cond1, b_cond1) - alpha_amp: float = amp_from_ab(a_cond1, b_cond1) - beta_phase: float = phase_from_ab(a_cond2, b_cond2) - beta_amp: float = amp_from_ab(a_cond2, b_cond2) - return (alpha_phase, alpha_amp, beta_phase, beta_amp) diff --git a/src/cosinor_lite/datasets.py b/src/cosinor_lite/omics_dataset.py similarity index 50% rename from src/cosinor_lite/datasets.py rename to src/cosinor_lite/omics_dataset.py index d2fbfca..57d6aa7 100644 --- a/src/cosinor_lite/datasets.py +++ b/src/cosinor_lite/omics_dataset.py @@ -9,9 +9,47 @@ from pydantic.dataclasses import dataclass from scipy.stats import spearmanr +plt.rcParams.update( + { + "font.size": 8, + "axes.titlesize": 8, + "axes.labelsize": 8, + "xtick.labelsize": 8, + "ytick.labelsize": 8, + "legend.fontsize": 8, + "figure.titlesize": 8, + "pdf.fonttype": 42, + }, +) +plt.style.use("seaborn-v0_8-ticks") + @dataclass(config=ConfigDict(arbitrary_types_allowed=True)) class OmicsDataset: + """ + Represent an omics expression table and derived metrics. + + Parameters + ---------- + df : pandas.DataFrame + Input table containing gene expression measurements. + columns_cond1 : list[str] + Column names for condition 1 samples. + columns_cond2 : list[str] + Column names for condition 2 samples. + t_cond1 : numpy.ndarray + Time points associated with ``columns_cond1``. + t_cond2 : numpy.ndarray + Time points associated with ``columns_cond2``. + cond1_label : str, optional + Display label for condition 1, by default ``"cond1"``. + cond2_label : str, optional + Display label for condition 2, by default ``"cond2"``. + deduplicate_on_init : bool, optional + Whether to deduplicate genes immediately after initialization, by default ``False``. + + """ + df: pd.DataFrame columns_cond1: list[str] @@ -23,10 +61,29 @@ class OmicsDataset: deduplicate_on_init: bool = False - # --- validators --- @field_validator("t_cond1", "t_cond2", mode="before") @classmethod def _to_1d_f64(cls, v: object) -> np.ndarray: # ← return type fixes ANN206 + """ + Coerce incoming arrays to one-dimensional ``float64`` np.ndarrays. + + Parameters + ---------- + v : object + Sequence-like data to convert. + + Returns + ------- + numpy.ndarray + Converted one-dimensional array. + + Raises + ------ + ValueError + If the incoming value cannot be reshaped to one dimension. + + + """ a = np.asarray(v, dtype=np.float64) if a.ndim != 1: text: str = "expected 1D array" @@ -35,6 +92,21 @@ def _to_1d_f64(cls, v: object) -> np.ndarray: # ← return type fixes ANN206 @model_validator(mode="after") def _check_columns(self) -> Self: + """ + Ensure all requested columns are present in the DataFrame. + + Returns + ------- + Self + The validated dataset instance. + + Raises + ------ + ValueError + If any required columns are missing. + + + """ missing = [c for c in (self.columns_cond1 + self.columns_cond2) if c not in self.df.columns] if missing: text = f"Missing columns: {missing}" # satisfies EM101 (no string literal in raise) @@ -42,6 +114,7 @@ def _check_columns(self) -> Self: return self def __post_init__(self) -> None: + """Populate derived columns and optionally deduplicate entries.""" self.add_detected_timepoint_counts() self.add_mean_expression() self.add_number_detected() @@ -50,13 +123,23 @@ def __post_init__(self) -> None: def detected_timepoint_counts(self, cond: str) -> list[int]: """ - Count number of timepoints with detected values for each gene. + Count detected time points per gene for the requested condition. + + Parameters + ---------- + cond : str + Either ``"cond1"`` or ``"cond2"`` specifying which condition to evaluate. + + Returns + ------- + list[int] + Number of distinct time points detected for each gene. - Args: - cond (str): "cond1" or "cond2" + Raises + ------ + ValueError + If ``cond`` is not a recognized condition label. - Returns: - list[int]: List of counts for each gene. """ if cond == "cond1": @@ -69,37 +152,29 @@ def detected_timepoint_counts(self, cond: str) -> list[int]: text = f"Invalid condition: {cond}" # satisfies EM101 (no string literal in raise) raise ValueError(text) - # y-like frame, boolean mask of non-NaN - mask = y.notna() # shape: (n_rows, n_cols) + mask = y.notna() - # t_beta must be length n_cols and aligned to those columns - # Group columns by time, check if ANY non-NaN per group, then count groups per row - detected_timepoints = ( - mask.T.groupby(t) - .any() # (n_rows, n_unique_times) booleans - .T.sum(axis=1) # per-row counts - .to_numpy() - ) + detected_timepoints = mask.T.groupby(t).any().T.sum(axis=1).to_numpy() return detected_timepoints def add_detected_timepoint_counts(self) -> None: - """Add two columns to self.df with counts for cond1 and cond2.""" - self.df["detected_cond1"] = self.detected_timepoint_counts("cond1") - self.df["detected_cond2"] = self.detected_timepoint_counts("cond2") + """Augment the DataFrame with detected time-point counts for each condition.""" + self.df["detected_timepoints_cond1"] = self.detected_timepoint_counts("cond1") + self.df["detected_timepoints_cond2"] = self.detected_timepoint_counts("cond2") def add_mean_expression(self) -> None: - """Add two columns to self.df with mean expression for cond1 and cond2.""" + """Compute mean expression for both conditions and store in the DataFrame.""" self.df["mean_cond1"] = self.df[self.columns_cond1].mean(axis=1) self.df["mean_cond2"] = self.df[self.columns_cond2].mean(axis=1) def add_number_detected(self) -> None: - """Add two columns to self.df with number of detected values for cond1 and cond2.""" + """Store the count of non-null measurements for each condition.""" self.df["num_detected_cond1"] = self.df[self.columns_cond1].count(axis=1) self.df["num_detected_cond2"] = self.df[self.columns_cond2].count(axis=1) def deduplicate_genes(self) -> None: - """Deduplicate self.df by 'Genes', keeping entry with highest total mean expression.""" + """Remove duplicate gene entries, keeping the highest combined mean expression.""" if not {"mean_cond1", "mean_cond2"}.issubset(self.df): self.add_mean_expression() @@ -117,9 +192,21 @@ def add_is_expressed( mean_min: float | None = None, num_detected_min: int | None = None, ) -> None: - """Add is_expressed_cond1/cond2 based on thresholds.""" - # Ensure prerequisite columns exist - if not {"detected_cond1", "detected_cond2"}.issubset(self.df): + """ + Flag genes as expressed based on configurable thresholds. + + Parameters + ---------- + detected_min : int | None, optional + Minimum detected time points required, by default ``None``. + mean_min : float | None, optional + Minimum mean expression required, by default ``None``. + num_detected_min : int | None, optional + Minimum number of detected samples required, by default ``None``. + + + """ + if not {"detected_timepoints_cond1", "detected_timepoints_cond2"}.issubset(self.df): self.add_detected_timepoint_counts() if not {"mean_cond1", "mean_cond2"}.issubset(self.df): self.add_mean_expression() @@ -127,7 +214,6 @@ def add_is_expressed( self.add_number_detected() def _mask(which: Literal["cond1", "cond2"]) -> pd.Series: - # start with all-True masks m_detected = pd.Series(True, index=self.df.index) m_mean = pd.Series(True, index=self.df.index) m_num = pd.Series(True, index=self.df.index) @@ -144,10 +230,24 @@ def _mask(which: Literal["cond1", "cond2"]) -> pd.Series: self.df["is_expressed_cond1"] = _mask("cond1") self.df["is_expressed_cond2"] = _mask("cond2") - def expression_histogram(self, bins: int = 20) -> None: - """Plot histogram of mean expression for cond1 and cond2.""" + def expression_histogram(self, bins: int = 20) -> plt.Figure: + """ + Plot histograms of mean expression for both conditions. + + Parameters + ---------- + bins : int, optional + Number of histogram bins, by default 20. + + Returns + ------- + matplotlib.figure.Figure + Figure containing the histogram panels. + + + """ print(plt.rcParams["font.size"]) - plt.figure(figsize=(6 / 2.54, 12 / 2.54)) + fig = plt.figure(figsize=(6 / 2.54, 12 / 2.54)) plt.subplot(2, 1, 1) plt.hist(self.df["mean_cond1"].to_numpy().flatten(), bins=bins) plt.xlabel("Mean Expression") @@ -161,24 +261,54 @@ def expression_histogram(self, bins: int = 20) -> None: plt.title(f"Mean expression ({self.cond2_label})") plt.gca().xaxis.set_major_locator(plt.MaxNLocator(nbins=10)) plt.tight_layout() - plt.show() - def replicate_scatterplot(self, sample1: str, sample2: str) -> None: - """Scatterplot of two replicates.""" + return fig + + def replicate_scatterplot(self, sample1: str, sample2: str) -> plt.Figure: + """ + Create a scatterplot comparing two samples with correlation annotations. + + Parameters + ---------- + sample1 : str + Column name of the first sample. + sample2 : str + Column name of the second sample. + + Returns + ------- + matplotlib.figure.Figure + Figure containing the scatter plot. + + Raises + ------ + ValueError + If either sample column is missing from the DataFrame. + + + """ if sample1 not in self.df.columns or sample2 not in self.df.columns: text = f"Samples {sample1} and/or {sample2} not in DataFrame columns." raise ValueError(text) - plt.figure(figsize=(8 / 2.54, 8 / 2.54)) - x: np.ndarray = self.df[sample1].to_numpy().flatten() - y: np.ndarray = self.df[sample2].to_numpy().flatten() + fig = plt.figure(figsize=(8 / 2.54, 8 / 2.54)) + xy = self.df[[sample1, sample2]].dropna() + x: np.ndarray = xy[sample1].to_numpy().flatten() + y: np.ndarray = xy[sample2].to_numpy().flatten() r_pearson: float = np.corrcoef(x, y)[0, 1] r_spearman: float = spearmanr(x, y).statistic plt.scatter(x, y, alpha=0.1, s=4) plt.xlabel(sample1) plt.ylabel(sample2) - plt.title(f"{sample1} vs {sample2} (Pearson R = {r_pearson:.2f}, Spearman R = {r_spearman:.2f})") + plt.title(f"Pearson R = {r_pearson:.2f}, Spearman R = {r_spearman:.2f}") plt.axis("equal") - plt.plot([x.min(), x.max()], [x.min(), x.max()], color="grey", linestyle="--", alpha=0.8) + plt.plot( + [x.min(), x.max()], + [x.min(), x.max()], + color="grey", + linestyle="--", + alpha=0.8, + ) plt.tight_layout() - plt.show() + + return fig diff --git a/src/cosinor_lite/differential_rhytmicity_omics.py b/src/cosinor_lite/omics_differential_rhytmicity.py similarity index 50% rename from src/cosinor_lite/differential_rhytmicity_omics.py rename to src/cosinor_lite/omics_differential_rhytmicity.py index 8574dbb..1cba7b8 100644 --- a/src/cosinor_lite/differential_rhytmicity_omics.py +++ b/src/cosinor_lite/omics_differential_rhytmicity.py @@ -1,15 +1,21 @@ from __future__ import annotations from abc import ABC, abstractmethod +from collections.abc import Sequence +from dataclasses import dataclass as std_dataclass +from typing import Self, cast +import gradio as gr import matplotlib.pyplot as plt import numpy as np import pandas as pd import statsmodels.formula.api as smf from pydantic import ConfigDict, field_validator, model_validator -from pydantic.dataclasses import dataclass +from pydantic.dataclasses import dataclass as pydantic_dataclass from tqdm import tqdm +from cosinor_lite.omics_dataset import OmicsDataset + plt.rcParams.update( { "font.size": 8, @@ -22,25 +28,79 @@ "pdf.fonttype": 42, }, ) +plt.style.use("seaborn-v0_8-ticks") + W: float = 2 * np.pi / 24.0 RAD2H: float = 24.0 / (2.0 * np.pi) def phase_from_ab(a: float, b: float) -> float: + """ + Convert cosine and sine coefficients to a phase value in hours. + + Parameters + ---------- + a : float + Cosine-term regression coefficient. + b : float + Sine-term regression coefficient. + + Returns + ------- + float + Phase value constrained to the ``[0, 24)`` hour interval. + + """ return (np.arctan2(b, a) * RAD2H) % 24.0 def amp_from_ab(a: float, b: float) -> float: + """ + Compute the amplitude implied by cosine and sine coefficients. + + Parameters + ---------- + a : float + Cosine-term regression coefficient. + b : float + Sine-term regression coefficient. + + Returns + ------- + float + Non-negative amplitude derived from the Euclidean norm. + + """ return float(np.hypot(a, b)) def bic(llf: float, k: int, n: int) -> float: + """ + Evaluate the Bayesian Information Criterion for a fitted model. + + Parameters + ---------- + llf : float + Log-likelihood of the fitted model. + k : int + Number of estimated parameters. + n : int + Number of observations used during fitting. + + Returns + ------- + float + BIC score, where lower values indicate preferred models. + + """ return k * np.log(n) - 2.0 * llf -@dataclass +@std_dataclass class ModelResult: + """Store parameter estimates and metrics for dual-condition models.""" + name: int llf: float bic: float @@ -50,8 +110,10 @@ class ModelResult: beta_amp: float -@dataclass +@std_dataclass class ModelResultOneCondition: + """Store parameter estimates and metrics for single-condition models.""" + name: int llf: float bic: float @@ -60,14 +122,29 @@ class ModelResultOneCondition: class BaseModel(ABC): - name: str + """Template for two-condition cosinor models sharable across datasets.""" + + name: int k: int formula: str def fit(self, df: pd.DataFrame) -> ModelResult: - # df must already contain: y, constant, cos_wt, sin_wt, is_alpha, is_beta + """ + Fit the configured statsmodels OLS formula to the supplied design matrix. + + Parameters + ---------- + df : pandas.DataFrame + Design matrix containing predictors and response values. + + Returns + ------- + ModelResult + Bundle of model metadata, BIC, and derived phase/amplitude values. + + """ model = smf.ols(self.formula, data=df).fit() - n = len(df) + n: int = len(df) alpha_phase, alpha_amp, beta_phase, beta_amp = self.extract(model.params) return ModelResult( name=self.name, @@ -84,12 +161,27 @@ def extract(self, params: pd.Series) -> tuple[float, float, float, float]: ... class BaseModelOneCondition(ABC): - name: str + """Template for single-condition cosinor models.""" + + name: int k: int formula: str def fit(self, df: pd.DataFrame) -> ModelResultOneCondition: - # df must already contain: y, constant, cos_wt, sin_wt, is_alpha, is_beta + """ + Fit a single-condition OLS cosinor model on the provided design matrix. + + Parameters + ---------- + df : pandas.DataFrame + Design matrix containing predictors and response values. + + Returns + ------- + ModelResultOneCondition + Bundle of model metadata plus the fitted phase and amplitude. + + """ model = smf.ols(self.formula, data=df).fit() n = len(df) phase, amp = self.extract(model.params) @@ -105,11 +197,10 @@ def fit(self, df: pd.DataFrame) -> ModelResultOneCondition: def extract(self, params: pd.Series) -> tuple[float, float]: ... -# ----- Five concrete models ----- - - -@dataclass +@std_dataclass class M0: + """Fallback result used when all cosinor models fall below the weight cutoff.""" + name: int = 0 alpha_phase: float = np.nan alpha_amp: float = np.nan @@ -125,8 +216,7 @@ class M1(BaseModel): k: int = 3 formula: str = "y ~ is_alpha:constant + is_beta:constant -1" - def extract(self, params: pd.Series) -> tuple[float, float, float, float]: - # No rhythmic terms → phases/amps are NaN + def extract(self, params: pd.Series) -> tuple[float, float, float, float]: # noqa: ARG002 return (np.nan, np.nan, np.nan, np.nan) @@ -135,8 +225,7 @@ class M1OneCondition(BaseModelOneCondition): k: int = 1 formula: str = "y ~ 1" - def extract(self, params: pd.Series) -> tuple[float, float]: - # No rhythmic terms → phases/amps are NaN + def extract(self, params: pd.Series) -> tuple[float, float]: # noqa: ARG002 return (np.nan, np.nan) @@ -146,9 +235,8 @@ class M2(BaseModel): formula: str = "y ~ is_alpha:constant + is_beta:constant + is_beta:cos_wt + is_beta:sin_wt -1" def extract(self, params: pd.Series) -> tuple[float, float, float, float]: - # beta has rhythmic terms, alpha does not - a: float = params["is_beta:cos_wt"] - b: float = params["is_beta:sin_wt"] + a: float = cast(float, params["is_beta:cos_wt"]) + b: float = cast(float, params["is_beta:sin_wt"]) beta_phase: float = phase_from_ab(a, b) beta_amp: float = amp_from_ab(a, b) return (np.nan, np.nan, beta_phase, beta_amp) @@ -160,9 +248,8 @@ class M3(BaseModel): formula: str = "y ~ is_alpha:constant + is_beta:constant + is_alpha:cos_wt + is_alpha:sin_wt -1" def extract(self, params: pd.Series) -> tuple[float, float, float, float]: - # alpha has rhythmic terms, beta does not - a: float = params["is_alpha:cos_wt"] - b: float = params["is_alpha:sin_wt"] + a: float = cast(float, params["is_alpha:cos_wt"]) + b: float = cast(float, params["is_alpha:sin_wt"]) alpha_phase: float = phase_from_ab(a, b) alpha_amp: float = amp_from_ab(a, b) return (alpha_phase, alpha_amp, np.nan, np.nan) @@ -174,9 +261,8 @@ class MOscOneCondition(BaseModelOneCondition): formula: str = "y ~ 1 + cos_wt + sin_wt" def extract(self, params: pd.Series) -> tuple[float, float]: - # alpha has rhythmic terms, beta does not - a: float = params["cos_wt"] - b: float = params["sin_wt"] + a: float = cast(float, params["cos_wt"]) + b: float = cast(float, params["sin_wt"]) phase: float = phase_from_ab(a, b) amp: float = amp_from_ab(a, b) return (phase, amp) @@ -188,9 +274,8 @@ class M4(BaseModel): formula: str = "y ~ is_alpha:constant + is_beta:constant + cos_wt + sin_wt -1" def extract(self, params: pd.Series) -> tuple[float, float, float, float]: - # shared rhythmic terms for both alpha and beta - a: float = params["cos_wt"] - b: float = params["sin_wt"] + a: float = cast(float, params["cos_wt"]) + b: float = cast(float, params["sin_wt"]) ph: float = phase_from_ab(a, b) am: float = amp_from_ab(a, b) return (ph, am, ph, am) @@ -205,10 +290,10 @@ class M5(BaseModel): ) def extract(self, params: pd.Series) -> tuple[float, float, float, float]: - a_cond1: float = params["is_alpha:cos_wt"] - b_cond1: float = params["is_alpha:sin_wt"] - a_cond2: float = params["is_beta:cos_wt"] - b_cond2: float = params["is_beta:sin_wt"] + a_cond1: float = cast(float, params["is_alpha:cos_wt"]) + b_cond1: float = cast(float, params["is_alpha:sin_wt"]) + a_cond2: float = cast(float, params["is_beta:cos_wt"]) + b_cond2: float = cast(float, params["is_beta:sin_wt"]) alpha_phase: float = phase_from_ab(a_cond1, b_cond1) alpha_amp: float = amp_from_ab(a_cond1, b_cond1) @@ -217,26 +302,89 @@ def extract(self, params: pd.Series) -> tuple[float, float, float, float]: return (alpha_phase, alpha_amp, beta_phase, beta_amp) -# ----- Runner utilities ----- - MODELS: tuple[BaseModel, ...] = (M1(), M2(), M3(), M4(), M5()) -MODELS_ONE_CONDITION: tuple[BaseModelOneCondition, ...] = (M1OneCondition(), MOscOneCondition()) +MODELS_ONE_CONDITION: tuple[BaseModelOneCondition, ...] = ( + M1OneCondition(), + MOscOneCondition(), +) def akaike_weights_from_bics(bics: np.ndarray) -> np.ndarray: + """ + Convert BIC scores into normalized Akaike weights. + + Parameters + ---------- + bics : numpy.ndarray + Array of BIC values where lower entries indicate better fits. + + Returns + ------- + numpy.ndarray + Non-negative weights that sum to one after exponentiation and scaling. + + """ d: np.ndarray = bics - np.nanmin(bics) w: np.ndarray = np.exp(-0.5 * d) return w / np.nansum(w) +def _weight_mapping(model_ids: Sequence[int], weights: np.ndarray) -> dict[str, float]: + """ + Align Akaike weights with ``w_model{n}`` keys expected in result tables. + + Parameters + ---------- + model_ids : collections.abc.Sequence[int] + Sequence of model identifiers that produced ``weights``. + weights : numpy.ndarray + Akaike weights in positional order matching ``model_ids``. + + Returns + ------- + dict[str, float] + Mapping of weight column names to values (or ``nan`` when absent). + + """ + mapping: dict[str, float] = {f"w_model{i}": np.nan for i in range(1, len(MODELS) + 1)} + for idx, model_id in enumerate(model_ids): + if idx < len(weights): + mapping[f"w_model{model_id}"] = float(weights[idx]) + return mapping + + def build_design( alpha_vals: np.ndarray, beta_vals: np.ndarray, t_cond1: np.ndarray, t_cond2: np.ndarray, ) -> pd.DataFrame: - df_cond1: pd.DataFrame = pd.DataFrame({"y": alpha_vals, "time": t_cond1, "dataset": "alpha"}).dropna() - df_cond2: pd.DataFrame = pd.DataFrame({"y": beta_vals, "time": t_cond2, "dataset": "beta"}).dropna() + """ + Construct the full design matrix for simultaneously fitting both conditions. + + Parameters + ---------- + alpha_vals : numpy.ndarray + Expression values for condition 1 samples. + beta_vals : numpy.ndarray + Expression values for condition 2 samples. + t_cond1 : numpy.ndarray + Zeitgeber time points corresponding to ``alpha_vals``. + t_cond2 : numpy.ndarray + Zeitgeber time points corresponding to ``beta_vals``. + + Returns + ------- + pandas.DataFrame + Design matrix including indicator, cosine, and sine predictors. + + """ + df_cond1: pd.DataFrame = pd.DataFrame( + {"y": alpha_vals, "time": t_cond1, "dataset": "alpha"}, + ).dropna() + df_cond2: pd.DataFrame = pd.DataFrame( + {"y": beta_vals, "time": t_cond2, "dataset": "beta"}, + ).dropna() df: pd.DataFrame = pd.concat([df_cond1, df_cond2], ignore_index=True) df["constant"] = 1.0 df["cos_wt"] = np.cos(W * df["time"].to_numpy().astype(float)) @@ -250,7 +398,25 @@ def build_design_cond1( alpha_vals: np.ndarray, t_cond1: np.ndarray, ) -> pd.DataFrame: - df_cond1: pd.DataFrame = pd.DataFrame({"y": alpha_vals, "time": t_cond1, "dataset": "alpha"}).dropna() + """ + Construct the design matrix for condition 1 only. + + Parameters + ---------- + alpha_vals : numpy.ndarray + Expression values for condition 1 samples. + t_cond1 : numpy.ndarray + Zeitgeber time points associated with ``alpha_vals``. + + Returns + ------- + pandas.DataFrame + Single-condition design matrix with cosine and sine predictors. + + """ + df_cond1: pd.DataFrame = pd.DataFrame( + {"y": alpha_vals, "time": t_cond1, "dataset": "alpha"}, + ).dropna() df: pd.DataFrame = pd.concat([df_cond1], ignore_index=True) df["constant"] = 1.0 df["cos_wt"] = np.cos(W * df["time"].to_numpy().astype(float)) @@ -262,7 +428,25 @@ def build_design_cond2( beta_vals: np.ndarray, t_cond2: np.ndarray, ) -> pd.DataFrame: - df_cond2: pd.DataFrame = pd.DataFrame({"y": beta_vals, "time": t_cond2, "dataset": "beta"}).dropna() + """ + Construct the design matrix for condition 2 only. + + Parameters + ---------- + beta_vals : numpy.ndarray + Expression values for condition 2 samples. + t_cond2 : numpy.ndarray + Zeitgeber time points associated with ``beta_vals``. + + Returns + ------- + pandas.DataFrame + Single-condition design matrix with cosine and sine predictors. + + """ + df_cond2: pd.DataFrame = pd.DataFrame( + {"y": beta_vals, "time": t_cond2, "dataset": "beta"}, + ).dropna() df: pd.DataFrame = pd.concat([df_cond2], ignore_index=True) df["constant"] = 1.0 df["cos_wt"] = np.cos(W * df["time"].to_numpy().astype(float)) @@ -270,76 +454,118 @@ def build_design_cond2( return df -@dataclass(config=ConfigDict(arbitrary_types_allowed=True)) +@pydantic_dataclass(config=ConfigDict(arbitrary_types_allowed=True)) class DifferentialRhythmicity: + """ + Coordinate cosinor model selection across an :class:`OmicsDataset`. + + Parameters + ---------- + dataset : OmicsDataset + Dataset containing expression values and metadata required for fitting. + BIC_cutoff : float, optional + Minimum Akaike weight threshold for accepting a rhythmic model, by default ``0.5``. + + """ + dataset: OmicsDataset BIC_cutoff: float = 0.5 @property def df(self) -> pd.DataFrame: + """pandas.DataFrame: Alias to the underlying dataset table.""" return self.dataset.df @property def columns_cond1(self) -> list[str]: + """list[str]: Column names belonging to condition 1.""" return self.dataset.columns_cond1 @property def columns_cond2(self) -> list[str]: + """list[str]: Column names belonging to condition 2.""" return self.dataset.columns_cond2 @property def t_cond1(self) -> np.ndarray: + """numpy.ndarray: Zeitgeber time points for condition 1.""" return self.dataset.t_cond1 @property def t_cond2(self) -> np.ndarray: + """numpy.ndarray: Zeitgeber time points for condition 2.""" return self.dataset.t_cond2 @property def cond1_label(self) -> str: + """str: Human-readable label for condition 1.""" return self.dataset.cond1_label @property def cond2_label(self) -> str: + """str: Human-readable label for condition 2.""" return self.dataset.cond2_label - def rhythmic_genes_expressed_both(self) -> pd.DataFrame: + def rhythmic_genes_expressed_both(self, progress: gr.Progress | None = None) -> pd.DataFrame: + """ + Evaluate rhythmicity for genes expressed in both conditions. + + Parameters + ---------- + progress : gradio.Progress | None, optional + Progress reporter used when running inside a Gradio app, by default ``None``. + + Returns + ------- + pandas.DataFrame + Per-gene summaries containing model identity, weights, and fitted parameters. + + """ df: pd.DataFrame = self.df mask: pd.Series = (df["is_expressed_cond1"]) & (df["is_expressed_cond2"]) df_to_analyse: pd.DataFrame = df[mask].reset_index(drop=True) + progress_manager = progress or gr.Progress() + model_ids: list[int] = [model.name for model in MODELS] rows: list[dict] = [] - for gene, row in tqdm( + for gene, row in progress_manager.tqdm( df_to_analyse.set_index("Genes").iterrows(), total=len(df_to_analyse), desc="Fitting models to genes expressed in both conditions", ): alpha_vec: np.ndarray = row[self.columns_cond1].to_numpy(float) beta_vec: np.ndarray = row[self.columns_cond2].to_numpy(float) - design: pd.DataFrame = build_design(alpha_vec, beta_vec, self.t_cond1, self.t_cond2) - results: list[BaseModel] = [m.fit(design) for m in MODELS] - bics: np.ndarray = np.array([r.bic for r in results]) + design: pd.DataFrame = build_design( + alpha_vec, + beta_vec, + self.t_cond1, + self.t_cond2, + ) + results: list[ModelResult] = [model.fit(design) for model in MODELS] + bics: np.ndarray = np.array([result.bic for result in results], dtype=float) weights: np.ndarray = akaike_weights_from_bics(bics) - if np.max(weights) < self.BIC_cutoff: - best: M0 = M0() + best_result: ModelResult | M0 + if float(np.nanmax(weights)) < self.BIC_cutoff: + best_result = M0() chosen_model_biw: float = np.nan model: int = 0 else: - pick: int = int(np.argmax(weights)) - best: BaseModel = results[pick] - chosen_model_biw: np.ndarray = weights[pick] - model: int = best.name + pick: int = int(np.nanargmax(weights)) + best_result = results[pick] + chosen_model_biw = float(weights[pick]) + model = int(best_result.name) + weight_columns = _weight_mapping(model_ids, weights) rows.append( { "gene": gene, "model": model, "chosen_model_bicw": chosen_model_biw, # "weight": weights[pick], - **{f"w_model{i}": weights[i - 1] for i in range(1, 6)}, - "alpha_phase": best.alpha_phase, - "alpha_amp": best.alpha_amp, - "beta_phase": best.beta_phase, - "beta_amp": best.beta_amp, + **weight_columns, + "alpha_phase": best_result.alpha_phase, + "alpha_amp": best_result.alpha_amp, + "beta_phase": best_result.beta_phase, + "beta_amp": best_result.beta_amp, }, ) @@ -349,10 +575,20 @@ def rhythmic_genes_expressed_both(self) -> pd.DataFrame: return df_results def rhythmic_genes_expressed_cond1(self) -> pd.DataFrame: + """ + Evaluate rhythmicity for genes uniquely expressed in condition 1. + + Returns + ------- + pandas.DataFrame + Per-gene summaries containing model identity, weights, and fitted parameters. + + """ df: pd.DataFrame = self.df mask: pd.Series = (df["is_expressed_cond1"]) & ~(df["is_expressed_cond2"]) df_to_analyse: pd.DataFrame = df[mask].reset_index(drop=True) + model_ids: list[int] = [model.name for model in MODELS_ONE_CONDITION] rows: list[dict] = [] for gene, row in tqdm( df_to_analyse.set_index("Genes").iterrows(), @@ -361,27 +597,29 @@ def rhythmic_genes_expressed_cond1(self) -> pd.DataFrame: ): alpha_vec: np.ndarray = row[self.columns_cond1].to_numpy(float) design: pd.DataFrame = build_design_cond1(alpha_vec, self.t_cond1) - results: list[BaseModelOneCondition] = [m.fit(design) for m in MODELS_ONE_CONDITION] - bics: np.ndarray = np.array([r.bic for r in results]) + results: list[ModelResultOneCondition] = [model.fit(design) for model in MODELS_ONE_CONDITION] + bics: np.ndarray = np.array([result.bic for result in results], dtype=float) weights: np.ndarray = akaike_weights_from_bics(bics) - if np.max(weights) < self.BIC_cutoff: - best: M0 = M0() + best_result: ModelResultOneCondition | M0 + if float(np.nanmax(weights)) < self.BIC_cutoff: + best_result = M0() chosen_model_biw: float = np.nan model: int = 0 else: - pick: int = int(np.argmax(weights)) - best: BaseModel = results[pick] - chosen_model_biw: np.ndarray = weights[pick] - model: int = [1, 3][pick] + pick: int = int(np.nanargmax(weights)) + best_result = results[pick] + chosen_model_biw = float(weights[pick]) + model = int(best_result.name) + weight_columns = _weight_mapping(model_ids, weights) rows.append( { "gene": gene, "model": model, "chosen_model_bicw": chosen_model_biw, # "weight": weights[pick], - **{f"w_model{model}": weights[i - 1] for i, model in enumerate([1, 3])}, - "alpha_phase": best.phase, - "alpha_amp": best.amp, + **weight_columns, + "alpha_phase": getattr(best_result, "phase", np.nan), + "alpha_amp": getattr(best_result, "amp", np.nan), "beta_phase": np.nan, "beta_amp": np.nan, }, @@ -393,10 +631,20 @@ def rhythmic_genes_expressed_cond1(self) -> pd.DataFrame: return df_results def rhythmic_genes_expressed_cond2(self) -> pd.DataFrame: + """ + Evaluate rhythmicity for genes uniquely expressed in condition 2. + + Returns + ------- + pandas.DataFrame + Per-gene summaries containing model identity, weights, and fitted parameters. + + """ df: pd.DataFrame = self.df mask: pd.Series = ~(df["is_expressed_cond1"]) & (df["is_expressed_cond2"]) df_to_analyse: pd.DataFrame = df[mask].reset_index(drop=True) + model_ids: list[int] = [model.name for model in MODELS_ONE_CONDITION] rows: list[dict] = [] for gene, row in tqdm( df_to_analyse.set_index("Genes").iterrows(), @@ -405,29 +653,31 @@ def rhythmic_genes_expressed_cond2(self) -> pd.DataFrame: ): beta_vec: np.ndarray = row[self.columns_cond2].to_numpy(float) design: pd.DataFrame = build_design_cond2(beta_vec, self.t_cond2) - results: list[BaseModelOneCondition] = [m.fit(design) for m in MODELS_ONE_CONDITION] - bics: np.ndarray = np.array([r.bic for r in results]) + results: list[ModelResultOneCondition] = [model.fit(design) for model in MODELS_ONE_CONDITION] + bics: np.ndarray = np.array([result.bic for result in results], dtype=float) weights: np.ndarray = akaike_weights_from_bics(bics) - if np.max(weights) < self.BIC_cutoff: - best: M0 = M0() + best_result: ModelResultOneCondition | M0 + if float(np.nanmax(weights)) < self.BIC_cutoff: + best_result = M0() chosen_model_biw: float = np.nan model: int = 0 else: - pick: int = int(np.argmax(weights)) - best: BaseModel = results[pick] - chosen_model_biw: np.ndarray = weights[pick] - model: int = [1, 2][pick] + pick: int = int(np.nanargmax(weights)) + best_result = results[pick] + chosen_model_biw = float(weights[pick]) + model = int(best_result.name) + weight_columns = _weight_mapping(model_ids, weights) rows.append( { "gene": gene, "model": model, "chosen_model_bicw": chosen_model_biw, # "weight": weights[pick], - **{f"w_model{model}": weights[i - 1] for i, model in enumerate([1, 2])}, + **weight_columns, "alpha_phase": np.nan, "alpha_amp": np.nan, - "beta_phase": best.phase, - "beta_amp": best.amp, + "beta_phase": getattr(best_result, "phase", np.nan), + "beta_amp": getattr(best_result, "amp", np.nan), }, ) @@ -437,14 +687,34 @@ def rhythmic_genes_expressed_cond2(self) -> pd.DataFrame: return df_results def extract_all_circadian_params(self) -> pd.DataFrame: + """ + Combine rhythmicity results from all subsets into a single table. + + Returns + ------- + pandas.DataFrame + Dataset joined with cosinor parameters and model weights. + + """ rhythmic_analysis_expressed_both = self.rhythmic_genes_expressed_both() rhythmic_analysis_cond1 = self.rhythmic_genes_expressed_cond1() rhythmic_analysis_cond2 = self.rhythmic_genes_expressed_cond2() - results_total = pd.concat([rhythmic_analysis_expressed_both, rhythmic_analysis_cond1, rhythmic_analysis_cond2]) + results_total = pd.concat( + [ + rhythmic_analysis_expressed_both, + rhythmic_analysis_cond1, + rhythmic_analysis_cond2, + ], + ) - df_pre_export = self.df.merge(results_total, left_on="Genes", right_on="gene", how="right") + df_pre_export = self.df.merge( + results_total, + left_on="Genes", + right_on="gene", + how="right", + ) column_list: list = [ "Genes", *self.columns_cond1, @@ -470,8 +740,32 @@ def extract_all_circadian_params(self) -> pd.DataFrame: return df_export -@dataclass(config=ConfigDict(arbitrary_types_allowed=True)) +@pydantic_dataclass(config=ConfigDict(arbitrary_types_allowed=True)) class OmicsHeatmap: + """ + Generate clustered heatmaps highlighting rhythmic expression patterns. + + Parameters + ---------- + df : pandas.DataFrame + Source table with model classifications and expression data. + columns_cond1 : list[str] + Column names for condition 1 replicates. + columns_cond2 : list[str] + Column names for condition 2 replicates. + t_cond1 : numpy.ndarray + Zeitgeber time points for condition 1 samples. + t_cond2 : numpy.ndarray + Zeitgeber time points for condition 2 samples. + cond1_label : str, optional + Human-readable label for condition 1, by default ``"cond1"``. + cond2_label : str, optional + Human-readable label for condition 2, by default ``"cond2"``. + show_unexpressed : bool, optional + Whether to include non-expressed entries when plotting, by default ``True``. + + """ + df: pd.DataFrame columns_cond1: list[str] @@ -483,10 +777,28 @@ class OmicsHeatmap: show_unexpressed: bool = True - # --- validators --- @field_validator("t_cond1", "t_cond2", mode="before") @classmethod - def _to_1d_f64(cls, v: object) -> np.ndarray: # ← return type fixes ANN206 + def _to_1d_f64(cls, v: object) -> np.ndarray: + """ + Coerce input to a one-dimensional ``float64`` NumPy array. + + Parameters + ---------- + v : object + Sequence-like structure representing time points. + + Returns + ------- + numpy.ndarray + Flattened array in ``float64`` precision. + + Raises + ------ + ValueError + If ``v`` cannot be interpreted as a one-dimensional array. + + """ a = np.asarray(v, dtype=np.float64) if a.ndim != 1: text: str = "expected 1D array" @@ -495,23 +807,53 @@ def _to_1d_f64(cls, v: object) -> np.ndarray: # ← return type fixes ANN206 @model_validator(mode="after") def _check_columns(self) -> Self: + """ + Confirm that required expression columns exist in the DataFrame. + + Returns + ------- + Self + The validated :class:`OmicsHeatmap` instance. + + Raises + ------ + ValueError + If any specified column names are absent. + + """ missing = [c for c in (self.columns_cond1 + self.columns_cond2) if c not in self.df.columns] if missing: - text = f"Missing columns: {missing}" # satisfies EM101 (no string literal in raise) + text = f"Missing columns: {missing}" raise ValueError(text) return self - def timepoint_means(self, df: pd.DataFrame, columns: list[str], times: np.ndarray) -> np.ndarray: + def timepoint_means( + self, + df: pd.DataFrame, + columns: list[str], + times: np.ndarray, + ) -> np.ndarray: """ - Compute mean expression across columns at each unique timepoint. - - Args: - df: DataFrame with expression values. - columns: Subset of column names to use. - times: 1D array of timepoints, length must equal len(columns). - - Returns: - np.ndarray of shape (n_genes, n_unique_times). + Average replicates at identical time points for a collection of genes. + + Parameters + ---------- + df : pandas.DataFrame + Table containing the expression measurements. + columns : list[str] + Subset of column names whose values should be aggregated. + times : numpy.ndarray + Zeitgeber time labels corresponding to ``columns``. + + Returns + ------- + numpy.ndarray + Array where each column represents the mean expression at a unique time. + + Raises + ------ + ValueError + If the number of columns differs from the number of time labels provided. """ if len(columns) != len(times): @@ -528,41 +870,76 @@ def timepoint_means(self, df: pd.DataFrame, columns: list[str], times: np.ndarra return result def get_z_score(self, arr: np.ndarray) -> np.ndarray: - """Compute z-score normalization for each row in a 2D array.""" - arr: np.ndarray = (arr - np.mean(arr, axis=1).reshape(-1, 1)) / np.where( - np.std(arr, axis=1).reshape(-1, 1) == 0, - 1, - np.std(arr, axis=1).reshape(-1, 1), - ) - return arr + """ + Z-score normalize each gene profile independently. + + Parameters + ---------- + arr : numpy.ndarray + Matrix of expression values where rows correspond to genes. - def plot_heatmap(self, cmap: str = "bwr") -> None: + Returns + ------- + numpy.ndarray + Z-score normalized matrix preserving the original shape. + + """ + means: np.ndarray = np.mean(arr, axis=1, keepdims=True) + stds: np.ndarray = np.std(arr, axis=1, keepdims=True) + safe_stds: np.ndarray = np.where(stds == 0, 1, stds) + return (arr - means) / safe_stds + + def plot_heatmap(self, cmap: str = "bwr") -> plt.Figure: # noqa: PLR0915 + """ + Render the full alpha/beta heatmap split by rhythmic subclasses. + + Parameters + ---------- + cmap : str, optional + Matplotlib colormap name used for heat intensity, by default ``"bwr"``. + + Returns + ------- + matplotlib.figure.Figure + Figure containing the subplot grid of heatmaps. + + """ df: pd.DataFrame = self.df - df: pd.DataFrame = df.sort_values(by=["alpha_phase", "beta_phase"]).reset_index(drop=True) + df_sorted: pd.DataFrame = df.sort_values(by=["alpha_phase", "beta_phase"]).reset_index( + drop=True, + ) t_unique: np.ndarray = np.unique(self.t_cond1).astype(int) - mean_cond1: np.ndarray = self.timepoint_means(df, self.columns_cond1, self.t_cond1) - mean_cond2: np.ndarray = self.timepoint_means(df, self.columns_cond2, self.t_cond2) + mean_cond1: np.ndarray = self.timepoint_means( + df_sorted, + self.columns_cond1, + self.t_cond1, + ) + mean_cond2: np.ndarray = self.timepoint_means( + df_sorted, + self.columns_cond2, + self.t_cond2, + ) z_cond1: np.ndarray = self.get_z_score(mean_cond1) z_cond2: np.ndarray = self.get_z_score(mean_cond2) - total_rows: int = (df["model"].isin([2, 3, 4, 5])).sum() + total_rows: int = (df_sorted["model"].isin([2, 3, 4, 5])).sum() m2: int = 2 m3: int = 3 m4: int = 4 m5: int = 5 - n_m2a: int = ((df["model"] == m2) & (df["subclass"] == "b")).sum() - n_m2b: int = ((df["model"] == m2) & (df["subclass"] == "c")).sum() - n_m3a: int = ((df["model"] == m3) & (df["subclass"] == "a")).sum() - n_m3b: int = ((df["model"] == m3) & (df["subclass"] == "c")).sum() - n_m4: int = (df["model"] == m4).sum() - n_m5: int = (df["model"] == m5).sum() + n_m2a: int = ((df_sorted["model"] == m2) & (df_sorted["subclass"] == "b")).sum() + n_m2b: int = ((df_sorted["model"] == m2) & (df_sorted["subclass"] == "c")).sum() + n_m3a: int = ((df_sorted["model"] == m3) & (df_sorted["subclass"] == "a")).sum() + n_m3b: int = ((df_sorted["model"] == m3) & (df_sorted["subclass"] == "c")).sum() + n_m4: int = (df_sorted["model"] == m4).sum() + n_m5: int = (df_sorted["model"] == m5).sum() - _fig, axes = plt.subplots( + fig, axes = plt.subplots( nrows=6, ncols=2, gridspec_kw={ @@ -574,19 +951,19 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: n_m4 / total_rows, n_m5 / total_rows, ], - "width_ratios": [1, 1], # Equal column widths + "width_ratios": [1, 1], }, - figsize=(12 / 2.54, 18 / 2.54), # Adjust figure size as needed + figsize=(12 / 2.54, 18 / 2.54), ) vmin_global = -2.5 vmax_global = 2.5 - mask = (df["model"] == m2) & (df["subclass"] == "b") + mask = (df_sorted["model"] == m2) & (df_sorted["subclass"] == "b") z_cond1_filtered = z_cond1[mask.to_numpy()].copy() if not self.show_unexpressed: z_cond1_filtered[:] = 0 - im1 = axes[0, 0].imshow( + axes[0, 0].imshow( z_cond1_filtered, aspect="auto", cmap=cmap, @@ -600,21 +977,20 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: axes[0, 0].set_xticks([]) axes[0, 0].set_yticks([]) - # Add text to the left of the y-axis axes[0, 0].text( -0.2, 0.5, - "M2a", # Coordinates: (x, y) - transform=axes[0, 0].transAxes, # Use axis-relative coordinates + "M2a", + transform=axes[0, 0].transAxes, ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed + va="center", + rotation=0, + fontsize=8, ) - mask = (df["model"] == m2) & (df["subclass"] == "c") + mask = (df_sorted["model"] == m2) & (df_sorted["subclass"] == "c") z_cond1_filtered = z_cond1[mask.to_numpy()] - im2 = axes[1, 0].imshow( + axes[1, 0].imshow( z_cond1_filtered, aspect="auto", cmap=cmap, @@ -626,20 +1002,19 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: axes[1, 0].set_xticks([]) axes[1, 0].set_yticks([]) - # Add text to the left of the y-axis axes[1, 0].text( -0.2, 0.5, - "M2b", # Coordinates: (x, y) - transform=axes[1, 0].transAxes, # Use axis-relative coordinates + "M2b", + transform=axes[1, 0].transAxes, ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed + va="center", + rotation=0, + fontsize=8, ) - mask = (df["model"] == m3) & (df["subclass"] == "a") + mask = (df_sorted["model"] == m3) & (df_sorted["subclass"] == "a") z_cond1_filtered = z_cond1[mask.to_numpy()] - im2 = axes[2, 0].imshow( + axes[2, 0].imshow( z_cond1_filtered, aspect="auto", cmap=cmap, @@ -651,20 +1026,19 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: axes[2, 0].set_xticks([]) axes[2, 0].set_yticks([]) - # Add text to the left of the y-axis axes[2, 0].text( -0.2, 0.5, - "M3a", # Coordinates: (x, y) - transform=axes[2, 0].transAxes, # Use axis-relative coordinates + "M3a", + transform=axes[2, 0].transAxes, ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed + va="center", + rotation=0, + fontsize=8, ) - mask = (df["model"] == m3) & (df["subclass"] == "c") + mask = (df_sorted["model"] == m3) & (df_sorted["subclass"] == "c") z_cond1_filtered = z_cond1[mask.to_numpy()] - im3 = axes[3, 0].imshow( + axes[3, 0].imshow( z_cond1_filtered, aspect="auto", cmap=cmap, @@ -675,21 +1049,21 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: ) axes[3, 0].set_xticks([]) axes[3, 0].set_yticks([]) - # Add text to the left of the y-axis + axes[3, 0].text( -0.2, 0.5, - "M3b", # Coordinates: (x, y) - transform=axes[3, 0].transAxes, # Use axis-relative coordinates + "M3b", + transform=axes[3, 0].transAxes, ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed + va="center", + rotation=0, + fontsize=8, ) - mask = df["model"] == m4 + mask = df_sorted["model"] == m4 z_cond1_filtered = z_cond1[mask.to_numpy()] - im4 = axes[4, 0].imshow( + axes[4, 0].imshow( z_cond1_filtered, aspect="auto", cmap=cmap, @@ -704,17 +1078,17 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: axes[4, 0].text( -0.2, 0.5, - "M4", # Coordinates: (x, y) - transform=axes[4, 0].transAxes, # Use axis-relative coordinates + "M4", + transform=axes[4, 0].transAxes, ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed + va="center", + rotation=0, + fontsize=8, ) - mask = df["model"] == m5 + mask = df_sorted["model"] == m5 z_cond1_filtered = z_cond1[mask.to_numpy()] - im5 = axes[5, 0].imshow( + axes[5, 0].imshow( z_cond1_filtered, aspect="auto", cmap=cmap, @@ -731,17 +1105,17 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: axes[5, 0].text( -0.2, 0.5, - "M5", # Coordinates: (x, y) - transform=axes[5, 0].transAxes, # Use axis-relative coordinates + "M5", + transform=axes[5, 0].transAxes, ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed + va="center", + rotation=0, + fontsize=8, ) - mask = (df["model"] == m2) & (df["subclass"] == "b") + mask = (df_sorted["model"] == m2) & (df_sorted["subclass"] == "b") z_cond2_filtered = z_cond2[mask.to_numpy()] - im6 = axes[0, 1].imshow( + axes[0, 1].imshow( z_cond2_filtered, aspect="auto", cmap=cmap, @@ -755,9 +1129,9 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: axes[0, 1].set_xticks([]) axes[0, 1].set_yticks([]) - mask = (df["model"] == m2) & (df["subclass"] == "c") + mask = (df_sorted["model"] == m2) & (df_sorted["subclass"] == "c") z_cond2_filtered = z_cond2[mask.to_numpy()] - im7 = axes[1, 1].imshow( + axes[1, 1].imshow( z_cond2_filtered, aspect="auto", cmap=cmap, @@ -770,11 +1144,11 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: axes[1, 1].set_xticks([]) axes[1, 1].set_yticks([]) - mask = (df["model"] == m3) & (df["subclass"] == "a") + mask = (df_sorted["model"] == m3) & (df_sorted["subclass"] == "a") z_cond2_filtered = z_cond2[mask.to_numpy()].copy() if not self.show_unexpressed: z_cond2_filtered[:] = 0 - im8 = axes[2, 1].imshow( + axes[2, 1].imshow( z_cond2_filtered, aspect="auto", cmap=cmap, @@ -787,9 +1161,9 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: axes[2, 1].set_xticks([]) axes[2, 1].set_yticks([]) - mask = (df["model"] == m3) & (df["subclass"] == "c") + mask = (df_sorted["model"] == m3) & (df_sorted["subclass"] == "c") z_cond2_filtered = z_cond2[mask.to_numpy()] - im9 = axes[3, 1].imshow( + axes[3, 1].imshow( z_cond2_filtered, aspect="auto", cmap=cmap, @@ -802,9 +1176,9 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: axes[3, 1].set_xticks([]) axes[3, 1].set_yticks([]) - mask = df["model"] == m4 + mask = df_sorted["model"] == m4 z_cond2_filtered = z_cond2[mask.to_numpy()] - im10 = axes[4, 1].imshow( + axes[4, 1].imshow( z_cond2_filtered, aspect="auto", cmap=cmap, @@ -817,9 +1191,9 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: axes[4, 1].set_xticks([]) axes[4, 1].set_yticks([]) - mask = df["model"] == m5 + mask = df_sorted["model"] == m5 z_cond2_filtered = z_cond2[mask.to_numpy()] - im11 = axes[5, 1].imshow( + axes[5, 1].imshow( z_cond2_filtered, aspect="auto", cmap=cmap, @@ -833,9 +1207,35 @@ def plot_heatmap(self, cmap: str = "bwr") -> None: axes[5, 1].set_yticks([]) axes[5, 1].set_xlabel("Time(h)") + return fig -@dataclass(config=ConfigDict(arbitrary_types_allowed=True)) + +@pydantic_dataclass(config=ConfigDict(arbitrary_types_allowed=True)) class TimeSeriesExample: + """ + Plot raw observations alongside cosinor model predictions for genes. + + Parameters + ---------- + df : pandas.DataFrame + Table containing expression measurements and model metadata. + columns_cond1 : list[str] + Column names for condition 1 samples. + columns_cond2 : list[str] + Column names for condition 2 samples. + t_cond1 : numpy.ndarray + Zeitgeber times corresponding to condition 1 measurements. + t_cond2 : numpy.ndarray + Zeitgeber times corresponding to condition 2 measurements. + cond1_label : str, optional + Display label for condition 1, by default ``"cond1"``. + cond2_label : str, optional + Display label for condition 2, by default ``"cond2"``. + deduplicate_on_init : bool, optional + Whether the underlying dataset should deduplicate genes immediately, by default ``False``. + + """ + df: pd.DataFrame columns_cond1: list[str] @@ -847,10 +1247,28 @@ class TimeSeriesExample: deduplicate_on_init: bool = False - # --- validators --- @field_validator("t_cond1", "t_cond2", mode="before") @classmethod - def _to_1d_f64(cls, v: object) -> np.ndarray: # ← return type fixes ANN206 + def _to_1d_f64(cls, v: object) -> np.ndarray: + """ + Convert an iterable of time points into a one-dimensional ``float64`` array. + + Parameters + ---------- + v : object + Sequence-like input representing time points. + + Returns + ------- + numpy.ndarray + Flattened array of times in ``float64`` precision. + + Raises + ------ + ValueError + If the supplied object cannot be interpreted as one-dimensional. + + """ a = np.asarray(v, dtype=np.float64) if a.ndim != 1: text: str = "expected 1D array" @@ -859,13 +1277,43 @@ def _to_1d_f64(cls, v: object) -> np.ndarray: # ← return type fixes ANN206 @model_validator(mode="after") def _check_columns(self) -> Self: + """ + Ensure both condition-specific column sets appear in the DataFrame. + + Returns + ------- + Self + The validated :class:`TimeSeriesExample` instance. + + Raises + ------ + ValueError + If any required column is missing from ``df``. + + """ missing = [c for c in (self.columns_cond1 + self.columns_cond2) if c not in self.df.columns] if missing: - text = f"Missing columns: {missing}" # satisfies EM101 (no string literal in raise) + text = f"Missing columns: {missing}" raise ValueError(text) return self def plot_time_series(self, gene: str, xticks: np.ndarray | None = None) -> None: + """ + Visualize observed expression values with corresponding model fits. + + Parameters + ---------- + gene : str + Gene identifier to visualize. + xticks : numpy.ndarray | None, optional + Custom x-axis tick positions, by default ``None`` for automatic values. + + Raises + ------ + ValueError + If the requested gene is absent from the DataFrame. + + """ if xticks is None: xticks = np.unique(np.concatenate((self.t_cond1, self.t_cond2))).astype(int) df: pd.DataFrame = self.df @@ -910,7 +1358,7 @@ def plot_time_series(self, gene: str, xticks: np.ndarray | None = None) -> None: plt.plot(t_test, y_test_cond1) plt.ylabel("Expression Level") plt.xticks(xticks) - # plt.xlim(xticks[0], xticks[-1]) + plt.title(f"Time Series for {gene}") plt.xlabel("Time (h)") plt.subplot(1, 2, 2) @@ -920,7 +1368,10 @@ def plot_time_series(self, gene: str, xticks: np.ndarray | None = None) -> None: plt.xlabel("Time (h)") plt.xticks(xticks) - plt.xlim(xticks[0] - 0.05 * (xticks[-1] - xticks[0]), xticks[-1] + 0.05 * (xticks[-1] - xticks[0])) + plt.xlim( + xticks[0] - 0.05 * (xticks[-1] - xticks[0]), + xticks[-1] + 0.05 * (xticks[-1] - xticks[0]), + ) plt.tight_layout() plt.show() @@ -932,8 +1383,32 @@ def get_test_function_expressed_both( t_cond2: np.ndarray, model: int, ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + """ + Produce fitted curves for genes expressed in both conditions. + + Parameters + ---------- + alpha_vec : numpy.ndarray + Expression values for condition 1 samples. + beta_vec : numpy.ndarray + Expression values for condition 2 samples. + t_cond1 : numpy.ndarray + Zeitgeber times for ``alpha_vec``. + t_cond2 : numpy.ndarray + Zeitgeber times for ``beta_vec``. + model : int + Model identifier selected for the gene. + + Returns + ------- + tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray] + Common time grid plus fitted values for condition 1 and condition 2. + + """ design: pd.DataFrame = build_design(alpha_vec, beta_vec, t_cond1, t_cond2) t_test: np.ndarray = np.linspace(0, 24, 100) + y_test_cond1: np.ndarray + y_test_cond2: np.ndarray if model == 0: print("No model selected") y_test_cond1 = np.full_like(t_test, np.nan) @@ -941,8 +1416,12 @@ def get_test_function_expressed_both( else: model_formula: str = MODELS[model - 1].formula res = smf.ols(model_formula, data=design).fit() - df_cond1: pd.DataFrame = pd.DataFrame({"time": t_test, "dataset": "alpha"}).dropna() - df_cond2: pd.DataFrame = pd.DataFrame({"time": t_test, "dataset": "beta"}).dropna() + df_cond1: pd.DataFrame = pd.DataFrame( + {"time": t_test, "dataset": "alpha"}, + ).dropna() + df_cond2: pd.DataFrame = pd.DataFrame( + {"time": t_test, "dataset": "beta"}, + ).dropna() df_test: pd.DataFrame = pd.concat([df_cond1, df_cond2], ignore_index=True) df_test["constant"] = 1.0 df_test["cos_wt"] = np.cos(W * df_test["time"].to_numpy().astype(float)) @@ -950,8 +1429,8 @@ def get_test_function_expressed_both( df_test["is_alpha"] = (df_test["dataset"] == "alpha").astype(int) df_test["is_beta"] = (df_test["dataset"] == "beta").astype(int) y_test = res.predict(exog=df_test) - y_test_cond1: np.ndarray = y_test[df_test["dataset"] == "alpha"].to_numpy() - y_test_cond2: np.ndarray = y_test[df_test["dataset"] == "beta"].to_numpy() + y_test_cond1 = y_test[df_test["dataset"] == "alpha"].to_numpy() + y_test_cond2 = y_test[df_test["dataset"] == "beta"].to_numpy() return t_test, y_test_cond1, y_test_cond2 def get_test_function_expressed_cond1( @@ -960,8 +1439,28 @@ def get_test_function_expressed_cond1( t_cond1: np.ndarray, model: int, ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + """ + Produce fitted curves for genes expressed only in condition 1. + + Parameters + ---------- + alpha_vec : numpy.ndarray + Expression values for condition 1 samples. + t_cond1 : numpy.ndarray + Zeitgeber times for ``alpha_vec``. + model : int + Model identifier selected for the gene. + + Returns + ------- + tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray] + Common time grid, fitted values for condition 1, and ``nan`` placeholders for condition 2. + + """ design: pd.DataFrame = build_design_cond1(alpha_vec, t_cond1) t_test: np.ndarray = np.linspace(0, 24, 100) + y_test_cond1: np.ndarray + y_test_cond2: np.ndarray if model == 0: print("No model selected") y_test_cond1 = np.full_like(t_test, np.nan) @@ -969,18 +1468,18 @@ def get_test_function_expressed_cond1( else: print(f"Fitting model {model}") print(MODELS_ONE_CONDITION) - if model == 1: - model_formula: str = MODELS_ONE_CONDITION[0].formula - else: - model_formula: str = MODELS_ONE_CONDITION[1].formula + model_index: int = 0 if model == 1 else 1 + model_formula: str = MODELS_ONE_CONDITION[model_index].formula res = smf.ols(model_formula, data=design).fit() - df_test: pd.DataFrame = pd.DataFrame({"time": t_test, "dataset": "alpha"}).dropna() + df_test: pd.DataFrame = pd.DataFrame( + {"time": t_test, "dataset": "alpha"}, + ).dropna() df_test["constant"] = 1.0 df_test["cos_wt"] = np.cos(W * df_test["time"].to_numpy().astype(float)) df_test["sin_wt"] = np.sin(W * df_test["time"].to_numpy().astype(float)) - y_test = res.predict(exog=df_test) - y_test_cond1: np.ndarray = y_test.to_numpy() - y_test_cond2: np.ndarray = np.full_like(t_test, np.nan) + y_test = res.predict(exog=df_test).to_numpy() + y_test_cond1 = y_test + y_test_cond2 = np.full_like(t_test, np.nan) return t_test, y_test_cond1, y_test_cond2 def get_test_function_expressed_cond2( @@ -989,8 +1488,28 @@ def get_test_function_expressed_cond2( t_cond2: np.ndarray, model: int, ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + """ + Produce fitted curves for genes expressed only in condition 2. + + Parameters + ---------- + beta_vec : numpy.ndarray + Expression values for condition 2 samples. + t_cond2 : numpy.ndarray + Zeitgeber times for ``beta_vec``. + model : int + Model identifier selected for the gene. + + Returns + ------- + tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray] + Common time grid, ``nan`` placeholders for condition 1, and fitted values for condition 2. + + """ design: pd.DataFrame = build_design_cond2(beta_vec, t_cond2) t_test: np.ndarray = np.linspace(0, 24, 100) + y_test_cond1: np.ndarray + y_test_cond2: np.ndarray if model == 0: print("No model selected") y_test_cond1 = np.full_like(t_test, np.nan) @@ -998,17 +1517,17 @@ def get_test_function_expressed_cond2( else: print(f"Fitting model {model}") print(MODELS_ONE_CONDITION) - if model == 1: - model_formula: str = MODELS_ONE_CONDITION[0].formula - else: - model_formula: str = MODELS_ONE_CONDITION[1].formula + model_index: int = 0 if model == 1 else 1 + model_formula: str = MODELS_ONE_CONDITION[model_index].formula res = smf.ols(model_formula, data=design).fit() - df_test: pd.DataFrame = pd.DataFrame({"time": t_test, "dataset": "alpha"}).dropna() + df_test: pd.DataFrame = pd.DataFrame( + {"time": t_test, "dataset": "alpha"}, + ).dropna() df_test["constant"] = 1.0 df_test["cos_wt"] = np.cos(W * df_test["time"].to_numpy().astype(float)) df_test["sin_wt"] = np.sin(W * df_test["time"].to_numpy().astype(float)) - y_test = res.predict(exog=df_test) - y_test_cond1: np.ndarray = np.full_like(t_test, np.nan) - y_test_cond2: np.ndarray = y_test.to_numpy() + y_test = res.predict(exog=df_test).to_numpy() + y_test_cond1 = np.full_like(t_test, np.nan) + y_test_cond2 = y_test return t_test, y_test_cond1, y_test_cond2 diff --git a/src/cosinor_lite/states_info.py b/src/cosinor_lite/states_info.py deleted file mode 100644 index 63acc75..0000000 --- a/src/cosinor_lite/states_info.py +++ /dev/null @@ -1,25 +0,0 @@ -"""Utility functions for working with cities and states.""" - -import json -from pathlib import Path -from typing import List - -THIS_DIR = Path(__file__).parent -CITIES_JSON_FPATH = THIS_DIR / "cities.json" - - -def is_city_capitol_of_state(city_name: str, state: str) -> bool: - """Return True if `city_name` is the capitol of `state`.""" - cities_json_contents = CITIES_JSON_FPATH.read_text() - cities: List[dict] = json.loads(cities_json_contents) - matching_cities: List[dict] = [city for city in cities if city["city"] == city_name] - if len(matching_cities) == 0: - return False - matched_city = matching_cities[0] - return matched_city["state"] == state - - -# pylint: disable=invalid-name -def slow_add(a: int, b: int) -> int: - """Return the sum of `a` and `b`.""" - return a + b diff --git a/src/cosinor_lite/utils.py b/src/cosinor_lite/utils.py deleted file mode 100644 index a71df0d..0000000 --- a/src/cosinor_lite/utils.py +++ /dev/null @@ -1,64 +0,0 @@ -import numpy as np -import pandas as pd - -W: float = 2 * np.pi / 24.0 -RAD2H: float = 24.0 / (2.0 * np.pi) - - -def phase_from_ab(a: float, b: float) -> float: - return (np.arctan2(b, a) * RAD2H) % 24.0 - - -def amp_from_ab(a: float, b: float) -> float: - return float(np.hypot(a, b)) - - -def bic(llf: float, k: int, n: int) -> float: - return k * np.log(n) - 2.0 * llf - - -def akaike_weights_from_bics(bics: np.ndarray) -> np.ndarray: - d: np.ndarray = bics - np.nanmin(bics) - w: np.ndarray = np.exp(-0.5 * d) - return w / np.nansum(w) - - -def build_design( - alpha_vals: np.ndarray, - beta_vals: np.ndarray, - t_cond1: np.ndarray, - t_cond2: np.ndarray, -) -> pd.DataFrame: - df_cond1: pd.DataFrame = pd.DataFrame({"y": alpha_vals, "time": t_cond1, "dataset": "alpha"}).dropna() - df_cond2: pd.DataFrame = pd.DataFrame({"y": beta_vals, "time": t_cond2, "dataset": "beta"}).dropna() - df: pd.DataFrame = pd.concat([df_cond1, df_cond2], ignore_index=True) - df["constant"] = 1.0 - df["cos_wt"] = np.cos(W * df["time"].to_numpy().astype(float)) - df["sin_wt"] = np.sin(W * df["time"].to_numpy().astype(float)) - df["is_alpha"] = (df["dataset"] == "alpha").astype(int) - df["is_beta"] = (df["dataset"] == "beta").astype(int) - return df - - -def build_design_cond1( - alpha_vals: np.ndarray, - t_cond1: np.ndarray, -) -> pd.DataFrame: - df_cond1: pd.DataFrame = pd.DataFrame({"y": alpha_vals, "time": t_cond1, "dataset": "alpha"}).dropna() - df: pd.DataFrame = pd.concat([df_cond1], ignore_index=True) - df["constant"] = 1.0 - df["cos_wt"] = np.cos(W * df["time"].to_numpy().astype(float)) - df["sin_wt"] = np.sin(W * df["time"].to_numpy().astype(float)) - return df - - -def build_design_cond2( - beta_vals: np.ndarray, - t_cond2: np.ndarray, -) -> pd.DataFrame: - df_cond2: pd.DataFrame = pd.DataFrame({"y": beta_vals, "time": t_cond2, "dataset": "beta"}).dropna() - df: pd.DataFrame = pd.concat([df_cond2], ignore_index=True) - df["constant"] = 1.0 - df["cos_wt"] = np.cos(W * df["time"].to_numpy().astype(float)) - df["sin_wt"] = np.sin(W * df["time"].to_numpy().astype(float)) - return df diff --git a/src/cosinor_lite/visualisation.py b/src/cosinor_lite/visualisation.py deleted file mode 100644 index 996f9af..0000000 --- a/src/cosinor_lite/visualisation.py +++ /dev/null @@ -1,553 +0,0 @@ -from __future__ import annotations - -from typing import Self - -import matplotlib.pyplot as plt -import numpy as np -import pandas as pd -import statsmodels.formula.api as smf -from pydantic import ConfigDict, field_validator, model_validator -from pydantic.dataclasses import dataclass - - -@dataclass(config=ConfigDict(arbitrary_types_allowed=True)) -class OmicsHeatmap: - df: pd.DataFrame - - columns_cond1: list[str] - columns_cond2: list[str] - t_cond1: np.ndarray - t_cond2: np.ndarray - cond1_label: str = "cond1" - cond2_label: str = "cond2" - - deduplicate_on_init: bool = False - - # --- validators --- - @field_validator("t_cond1", "t_cond2", mode="before") - @classmethod - def _to_1d_f64(cls, v: object) -> np.ndarray: # ← return type fixes ANN206 - a = np.asarray(v, dtype=np.float64) - if a.ndim != 1: - text: str = "expected 1D array" - raise ValueError(text) - return a - - @model_validator(mode="after") - def _check_columns(self) -> Self: - missing = [c for c in (self.columns_cond1 + self.columns_cond2) if c not in self.df.columns] - if missing: - text = f"Missing columns: {missing}" # satisfies EM101 (no string literal in raise) - raise ValueError(text) - return self - - def timepoint_means(self, df: pd.DataFrame, columns: list[str], times: np.ndarray) -> np.ndarray: - """ - Compute mean expression across columns at each unique timepoint. - - Args: - df: DataFrame with expression values. - columns: Subset of column names to use. - times: 1D array of timepoints, length must equal len(columns). - - Returns: - np.ndarray of shape (n_genes, n_unique_times). - - """ - if len(columns) != len(times): - text: str = f"Length of columns ({len(columns)}) must match length of times ({len(times)})" - raise ValueError(text) - - values: np.ndarray = df[columns].to_numpy() - unique_times: np.ndarray = np.unique(times) - - result: np.ndarray = np.column_stack( - [values[:, times == t].mean(axis=1) for t in unique_times], - ) - - return result - - def get_z_score(self, arr: np.ndarray) -> np.ndarray: - """Compute z-score normalization for each row in a 2D array.""" - arr: np.ndarray = (arr - np.mean(arr, axis=1).reshape(-1, 1)) / np.where( - np.std(arr, axis=1).reshape(-1, 1) == 0, - 1, - np.std(arr, axis=1).reshape(-1, 1), - ) - return arr - - def plot_heatmap(self, cmap: str = "bwr") -> None: - df: pd.DataFrame = self.df - df: pd.DataFrame = df.sort_values(by=["alpha_phase", "beta_phase"]).reset_index(drop=True) - - t_unique: np.ndarray = np.unique(self.t_cond1).astype(int) - - mean_cond1: np.ndarray = self.timepoint_means(df, self.columns_cond1, self.t_cond1) - mean_cond2: np.ndarray = self.timepoint_means(df, self.columns_cond2, self.t_cond2) - - z_cond1: np.ndarray = self.get_z_score(mean_cond1) - z_cond2: np.ndarray = self.get_z_score(mean_cond2) - - total_rows: int = (df["model"].isin([2, 3, 4, 5])).sum() - - m2: int = 2 - m3: int = 3 - m4: int = 4 - m5: int = 5 - - n_m2a: int = ((df["model"] == m2) & (df["subclass"] == "b")).sum() - n_m2b: int = ((df["model"] == m2) & (df["subclass"] == "c")).sum() - n_m3a: int = ((df["model"] == m3) & (df["subclass"] == "a")).sum() - n_m3b: int = ((df["model"] == m3) & (df["subclass"] == "c")).sum() - n_m4: int = (df["model"] == m4).sum() - n_m5: int = (df["model"] == m5).sum() - - _fig, axes = plt.subplots( - nrows=6, - ncols=2, - gridspec_kw={ - "height_ratios": [ - n_m2a / total_rows, - n_m2b / total_rows, - n_m3a / total_rows, - n_m3b / total_rows, - n_m4 / total_rows, - n_m5 / total_rows, - ], - "width_ratios": [1, 1], # Equal column widths - }, - figsize=(12 / 2.54, 18 / 2.54), # Adjust figure size as needed - ) - - vmin_global = -2.5 - vmax_global = 2.5 - - mask = (df["model"] == m2) & (df["subclass"] == "b") - z_cond1_filtered = z_cond1[mask.to_numpy()] - im1 = axes[0, 0].imshow( - z_cond1_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - - axes[0, 0].set_title("Alpha cells") - axes[0, 0].set_xticks([]) - axes[0, 0].set_yticks([]) - - # Add text to the left of the y-axis - axes[0, 0].text( - -0.2, - 0.5, - "M2a", # Coordinates: (x, y) - transform=axes[0, 0].transAxes, # Use axis-relative coordinates - ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed - ) - - mask = (df["model"] == m2) & (df["subclass"] == "c") - z_cond1_filtered = z_cond1[mask.to_numpy()] - im2 = axes[1, 0].imshow( - z_cond1_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - axes[1, 0].set_xticks([]) - axes[1, 0].set_yticks([]) - - # Add text to the left of the y-axis - axes[1, 0].text( - -0.2, - 0.5, - "M2b", # Coordinates: (x, y) - transform=axes[1, 0].transAxes, # Use axis-relative coordinates - ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed - ) - mask = (df["model"] == m3) & (df["subclass"] == "a") - z_cond1_filtered = z_cond1[mask.to_numpy()] - im2 = axes[2, 0].imshow( - z_cond1_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - axes[2, 0].set_xticks([]) - axes[2, 0].set_yticks([]) - - # Add text to the left of the y-axis - axes[2, 0].text( - -0.2, - 0.5, - "M3a", # Coordinates: (x, y) - transform=axes[2, 0].transAxes, # Use axis-relative coordinates - ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed - ) - mask = (df["model"] == m3) & (df["subclass"] == "c") - z_cond1_filtered = z_cond1[mask.to_numpy()] - im3 = axes[3, 0].imshow( - z_cond1_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - axes[3, 0].set_xticks([]) - axes[3, 0].set_yticks([]) - # Add text to the left of the y-axis - axes[3, 0].text( - -0.2, - 0.5, - "M3b", # Coordinates: (x, y) - transform=axes[3, 0].transAxes, # Use axis-relative coordinates - ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed - ) - - mask = df["model"] == m4 - z_cond1_filtered = z_cond1[mask.to_numpy()] - im4 = axes[4, 0].imshow( - z_cond1_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - axes[4, 0].set_xticks([]) - axes[4, 0].set_yticks([]) - - axes[4, 0].text( - -0.2, - 0.5, - "M4", # Coordinates: (x, y) - transform=axes[4, 0].transAxes, # Use axis-relative coordinates - ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed - ) - - mask = df["model"] == m5 - z_cond1_filtered = z_cond1[mask.to_numpy()] - im5 = axes[5, 0].imshow( - z_cond1_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - - axes[5, 0].set_xticks(range(len(t_unique)), t_unique) - axes[5, 0].set_yticks([]) - axes[5, 0].set_xlabel("Time(h)") - - axes[5, 0].text( - -0.2, - 0.5, - "M5", # Coordinates: (x, y) - transform=axes[5, 0].transAxes, # Use axis-relative coordinates - ha="center", - va="center", # Align text - rotation=0, # Rotate text vertically - fontsize=8, # Adjust font size as needed - ) - - mask = (df["model"] == m2) & (df["subclass"] == "b") - z_cond2_filtered = z_cond2[mask.to_numpy()] - im6 = axes[0, 1].imshow( - z_cond2_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - - axes[0, 1].set_title("Beta cells") - axes[0, 1].set_xticks([]) - axes[0, 1].set_yticks([]) - - mask = (df["model"] == m2) & (df["subclass"] == "c") - z_cond2_filtered = z_cond2[mask.to_numpy()] - im7 = axes[1, 1].imshow( - z_cond2_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - - axes[1, 1].set_xticks([]) - axes[1, 1].set_yticks([]) - - mask = (df["model"] == m3) & (df["subclass"] == "a") - z_cond2_filtered = z_cond2[mask.to_numpy()] - im8 = axes[2, 1].imshow( - z_cond2_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - - axes[2, 1].set_xticks([]) - axes[2, 1].set_yticks([]) - - mask = (df["model"] == m3) & (df["subclass"] == "c") - z_cond2_filtered = z_cond2[mask.to_numpy()] - im9 = axes[3, 1].imshow( - z_cond2_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - - axes[3, 1].set_xticks([]) - axes[3, 1].set_yticks([]) - - mask = df["model"] == m4 - z_cond2_filtered = z_cond2[mask.to_numpy()] - im10 = axes[4, 1].imshow( - z_cond2_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - - axes[4, 1].set_xticks([]) - axes[4, 1].set_yticks([]) - - mask = df["model"] == m5 - z_cond2_filtered = z_cond2[mask.to_numpy()] - im11 = axes[5, 1].imshow( - z_cond2_filtered, - aspect="auto", - cmap=cmap, - vmin=vmin_global, - vmax=vmax_global, - rasterized=False, - interpolation="none", - ) - - axes[5, 1].set_xticks(range(len(t_unique)), t_unique) - axes[5, 1].set_yticks([]) - axes[5, 1].set_xlabel("Time(h)") - - -@dataclass(config=ConfigDict(arbitrary_types_allowed=True)) -class TimeSeriesExample: - df: pd.DataFrame - - columns_cond1: list[str] - columns_cond2: list[str] - t_cond1: np.ndarray - t_cond2: np.ndarray - cond1_label: str = "cond1" - cond2_label: str = "cond2" - - deduplicate_on_init: bool = False - - # --- validators --- - @field_validator("t_cond1", "t_cond2", mode="before") - @classmethod - def _to_1d_f64(cls, v: object) -> np.ndarray: # ← return type fixes ANN206 - a = np.asarray(v, dtype=np.float64) - if a.ndim != 1: - text: str = "expected 1D array" - raise ValueError(text) - return a - - @model_validator(mode="after") - def _check_columns(self) -> Self: - missing = [c for c in (self.columns_cond1 + self.columns_cond2) if c not in self.df.columns] - if missing: - text = f"Missing columns: {missing}" # satisfies EM101 (no string literal in raise) - raise ValueError(text) - return self - - def plot_time_series(self, gene: str, xticks: np.ndarray | None = None) -> None: - if xticks is None: - xticks = np.unique(np.concatenate((self.t_cond1, self.t_cond2))).astype(int) - df: pd.DataFrame = self.df - df_curr = df[df["Genes"] == gene] - if df_curr.empty: - msg = f"Gene '{gene}' not found in the DataFrame." - raise ValueError(msg) - if len(df_curr) > 1: - df_curr = df_curr.loc[[df_curr["mean_cond2"].idxmax()]] - - alpha_vec: np.ndarray = df_curr[self.columns_cond1].to_numpy(float).flatten() - beta_vec: np.ndarray = df_curr[self.columns_cond2].to_numpy(float).flatten() - - is_expressed_cond1: bool = df_curr["is_expressed_cond1"].to_numpy()[0] - is_expressed_cond2: bool = df_curr["is_expressed_cond2"].to_numpy()[0] - - model: int = df_curr["model"].to_numpy()[0] - - if is_expressed_cond1 and is_expressed_cond2: - t_test, y_test_cond1, y_test_cond2 = self.get_test_function_expressed_both( - alpha_vec, - beta_vec, - self.t_cond1, - self.t_cond2, - model, - ) - elif is_expressed_cond1 and not is_expressed_cond2: - t_test, y_test_cond1, y_test_cond2 = self.get_test_function_expressed_cond1( - alpha_vec, - self.t_cond1, - model, - ) - elif not is_expressed_cond1 and is_expressed_cond2: - t_test, y_test_cond1, y_test_cond2 = self.get_test_function_expressed_cond2( - beta_vec, - self.t_cond2, - model, - ) - plt.figure(figsize=(12 / 2.54, 6 / 2.54)) - plt.subplot(1, 2, 1) - plt.scatter(self.t_cond1, alpha_vec, s=4) - plt.plot(t_test, y_test_cond1) - plt.ylabel("Expression Level") - plt.xticks(xticks) - # plt.xlim(xticks[0], xticks[-1]) - plt.title(f"Time Series for {gene}") - plt.xlabel("Time (h)") - plt.subplot(1, 2, 2) - plt.scatter(self.t_cond2, beta_vec, s=4, color="r") - plt.plot(t_test, y_test_cond2, color="r") - plt.title(f"Time Series for {gene}") - plt.xlabel("Time (h)") - - plt.xticks(xticks) - plt.xlim(xticks[0] - 0.05 * (xticks[-1] - xticks[0]), xticks[-1] + 0.05 * (xticks[-1] - xticks[0])) - plt.tight_layout() - plt.show() - - def get_test_function_expressed_both( - self, - alpha_vec: np.ndarray, - beta_vec: np.ndarray, - t_cond1: np.ndarray, - t_cond2: np.ndarray, - model: int, - ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: - design: pd.DataFrame = build_design(alpha_vec, beta_vec, t_cond1, t_cond2) - t_test: np.ndarray = np.linspace(0, 24, 100) - if model == 0: - print("No model selected") - y_test_cond1 = np.full_like(t_test, np.nan) - y_test_cond2 = np.full_like(t_test, np.nan) - else: - model_formula: str = MODELS[model - 1].formula - res = smf.ols(model_formula, data=design).fit() - df_cond1: pd.DataFrame = pd.DataFrame({"time": t_test, "dataset": "alpha"}).dropna() - df_cond2: pd.DataFrame = pd.DataFrame({"time": t_test, "dataset": "beta"}).dropna() - df_test: pd.DataFrame = pd.concat([df_cond1, df_cond2], ignore_index=True) - df_test["constant"] = 1.0 - df_test["cos_wt"] = np.cos(W * df_test["time"].to_numpy().astype(float)) - df_test["sin_wt"] = np.sin(W * df_test["time"].to_numpy().astype(float)) - df_test["is_alpha"] = (df_test["dataset"] == "alpha").astype(int) - df_test["is_beta"] = (df_test["dataset"] == "beta").astype(int) - y_test = res.predict(exog=df_test) - print(y_test) - y_test_cond1: np.ndarray = y_test[df_test["dataset"] == "alpha"].to_numpy() - y_test_cond2: np.ndarray = y_test[df_test["dataset"] == "beta"].to_numpy() - return t_test, y_test_cond1, y_test_cond2 - - def get_test_function_expressed_cond1( - self, - alpha_vec: np.ndarray, - t_cond1: np.ndarray, - model: int, - ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: - design: pd.DataFrame = build_design_cond1(alpha_vec, t_cond1) - t_test: np.ndarray = np.linspace(0, 24, 100) - if model == 0: - print("No model selected") - y_test_cond1 = np.full_like(t_test, np.nan) - y_test_cond2 = np.full_like(t_test, np.nan) - else: - print(f"Fitting model {model}") - print(MODELS_ONE_CONDITION) - if model == 1: - model_formula: str = MODELS_ONE_CONDITION[0].formula - else: - model_formula: str = MODELS_ONE_CONDITION[1].formula - res = smf.ols(model_formula, data=design).fit() - df_test: pd.DataFrame = pd.DataFrame({"time": t_test, "dataset": "alpha"}).dropna() - df_test["constant"] = 1.0 - df_test["cos_wt"] = np.cos(W * df_test["time"].to_numpy().astype(float)) - df_test["sin_wt"] = np.sin(W * df_test["time"].to_numpy().astype(float)) - y_test = res.predict(exog=df_test) - print(y_test) - y_test_cond1: np.ndarray = y_test.to_numpy() - y_test_cond2: np.ndarray = np.full_like(t_test, np.nan) - return t_test, y_test_cond1, y_test_cond2 - - def get_test_function_expressed_cond2( - self, - beta_vec: np.ndarray, - t_cond2: np.ndarray, - model: int, - ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: - design: pd.DataFrame = build_design_cond2(beta_vec, t_cond2) - t_test: np.ndarray = np.linspace(0, 24, 100) - if model == 0: - print("No model selected") - y_test_cond1 = np.full_like(t_test, np.nan) - y_test_cond2 = np.full_like(t_test, np.nan) - else: - print(f"Fitting model {model}") - print(MODELS_ONE_CONDITION) - if model == 1: - model_formula: str = MODELS_ONE_CONDITION[0].formula - else: - model_formula: str = MODELS_ONE_CONDITION[1].formula - res = smf.ols(model_formula, data=design).fit() - df_test: pd.DataFrame = pd.DataFrame({"time": t_test, "dataset": "alpha"}).dropna() - df_test["constant"] = 1.0 - df_test["cos_wt"] = np.cos(W * df_test["time"].to_numpy().astype(float)) - df_test["sin_wt"] = np.sin(W * df_test["time"].to_numpy().astype(float)) - y_test = res.predict(exog=df_test) - print(y_test) - y_test_cond1: np.ndarray = np.full_like(t_test, np.nan) - y_test_cond2: np.ndarray = y_test.to_numpy() - - return t_test, y_test_cond1, y_test_cond2 diff --git a/test-reports/report.xml b/test-reports/report.xml deleted file mode 100644 index 422ef87..0000000 --- a/test-reports/report.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/conftest.py b/tests/conftest.py index fd33401..dffafdb 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,22 +1,8 @@ -""" -Register pytest plugins, fixtures, and hooks to be used during test execution. - -Docs: https://stackoverflow.com/questions/34466027/in-pytest-what-is-the-use-of-conftest-py-files -""" - - -import sys -from pathlib import Path - -THIS_DIR = Path(__file__).parent -TESTS_DIR_PARENT = (THIS_DIR / "..").resolve() - -# add the parent directory of tests/ to PYTHONPATH -# so that we can use "from tests. import ..." in our tests and fixtures -sys.path.insert(0, str(TESTS_DIR_PARENT)) +"""Register pytest plugins, fixtures, and hooks to be used during test execution.""" # module import paths to python files containing fixtures pytest_plugins = [ - # e.g. "tests/fixtures/example_fixture.py" should be registered as: - "tests.fixtures.example_fixture", + "tests.fixtures.livecell_dataset_fixture", + "tests.fixtures.cosinor_analysis_fixture", + "tests.fixtures.omics_dataset_fixture", ] diff --git a/tests/data/Bioluminescence_test_data_1.csv b/tests/data/Bioluminescence_test_data_1.csv new file mode 100644 index 0000000..3b168e5 --- /dev/null +++ b/tests/data/Bioluminescence_test_data_1.csv @@ -0,0 +1,583 @@ +Participant ID,1,1,1,2,3,3,4,4,5,5,6,6,7,7,7,8,8,8,9,9,10,10,11,11,11,12,12,12,12,13,13,13,14,14,14,15,15,15,16,16,17,17,18,18,18,19,19,19,19,20,20,20,21,21,22,22,23,23,24,24 +Replicate,1,2,3,1,1,2,1,2,1,2,1,2,1,2,3,1,2,3,1,2,1,2,1,2,3,1,2,3,4,1,2,3,1,2,3,1,2,3,1,2,1,2,1,2,3,1,2,3,4,1,2,3,1,2,1,2,1,2,1,2 +Group,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_1,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_2,group_1,group_1,group_2,group_2 +0,919.123,834.821,1227.032,152.91,186,131,540,406,307,189,140,282,564.071,298.783,506.62,295.221,342.331,293.212,564.754,578.906,193.281,287.944,441.721,479.457,558.449,133.5,390.942,407.189,406.213,94.713,124.118,73.916,1112.212,747.835,1086.323,595.233,491.795,408.985,800.394,1221.799,258.223,352.672,95.439,102.981,73.726,1480.701,526.498,574.276,1155.453,345.919,358.793,505.006,106,161,747,444,704,538,159.523,158.988 +0.1668,920.718,838.938,1222.663,156.901,203,121,685,510,288,193,148,302,563.009,303.439,506.763,294.169,343.17,294.523,581.508,582.121,203.778,314.142,445.127,483.091,563.356,123.5,397.305,409.621,412.28,94.812,127.433,75.856,1134.266,756.197,1097.5,597.067,488.03,405.678,826.948,1302.709,282.085,355.342,94.344,103.773,72.361,1479.018,528.973,583.327,1166.273,351.159,357.759,504.341,37,210,725,482,727,537,161.031,157.595 +0.3336,926.536,829.957,1225.876,157.411,203,122,742,519,282,187,153,308,573.158,309.183,509.595,295.857,341.492,293.326,600.822,571.641,218.427,343.226,448.68,487.388,561.829,176.5,402.113,409.225,410.455,99.068,128.184,77.698,1141.821,772.681,1107.573,592.63,484.517,405.846,851.039,1328.244,297.13,359.474,94.557,102.584,71.28,1498.607,528.648,585.689,1170.658,346.882,361.077,505.984,103,250,704,472,696,509,161.23,156.396 +0.5004,922.005,832.11,1218.498,162.01,201,125,763,506,274,179,157,325,576.119,315.781,520.51,295.43,346.911,293.589,626.038,569.885,225.011,372.495,448.767,493.572,568.015,185.5,404.248,416.833,419.251,102.236,127.844,80.446,1150.813,779.686,1113.342,592.573,485.683,405.848,884.628,1349.927,311.976,365.494,97.5,103.264,71.707,1515.381,536.766,590.626,1176.598,352.448,363.184,514.34,104,267,691,456,667,489,162.415,156.561 +0.6672,917.688,836.875,1213.635,165.166,198,127,779,499,266,172,161,329,580.757,323.214,527.845,299.789,343.682,298.941,642.972,563.413,239.726,405.118,462.399,492.359,563.074,185,404.403,420.142,420.241,103.862,131.612,82.953,1171.562,799.399,1122.771,588.15,479.08,398.337,906.121,1358.807,328.748,365.732,96.69,100.899,71.565,1515.961,538.351,593.341,1176.725,353.099,365.362,516.903,107,263,690,444,646,486,165.882,159.958 +0.834,914.059,838.414,1203.028,168.563,187,127,795,495,262,170,165,336,585.023,325.576,531.391,298.163,342.744,296.591,663.599,558.696,249.968,423.106,456.528,499.031,559.504,185.5,408.179,424.271,425.854,110.055,132.093,85.815,1183.079,806.467,1135.094,589.473,475.982,400.34,942.986,1355.804,340.594,367.998,99.491,100.616,73.342,1528.492,540.119,592.676,1179.172,358.779,366.139,521.024,115,256,684,429,646,488,167.077,156.236 +1.0008,911.542,822.959,1209.939,171.833,178,128,817,487,259,164,166,351,584.569,340.437,539.817,296.678,349.058,301.699,681.921,555.637,261.562,452.134,464.054,507.088,563.144,186.5,412.52,431.03,421.81,112.021,136.286,86.92,1189.657,820.118,1145.487,583.755,475.936,398.012,978.761,1339.758,352.907,377.969,101.354,99.271,73.243,1541.674,545.366,592.012,1182.793,364.769,370.396,524.848,127,246,685,418,653,485,170,157.105 +1.1676,903.943,820.438,1207.446,172.37,171,128,830,484,250,160,171,356,594.352,342.274,545.283,301.93,347.238,303.913,695.492,556.459,270.14,471.92,471.965,512.072,570.423,185,427.58,432.345,427.283,113.562,132.249,87.982,1205.764,827.091,1165.166,585.433,469.054,396.772,995.489,1323.429,371.419,385.206,99.477,99.88,73.072,1548.803,545.111,591.701,1183.5,362.957,372.446,527.043,133,237,676,406,682,484,166.323,155.67 +1.3344,904.455,815.071,1188.23,176.234,166,125,827,475,247,161,171,366,599.442,342.441,552.027,303.919,350.169,304.612,709.077,562.52,278.988,495.032,476.712,513.546,574.728,181.5,423.083,439.472,432.826,114.538,137.604,89.639,1220.81,854.657,1162.175,579.61,469.352,393.897,1006.066,1301.916,384.369,400.516,100.586,99.271,73.157,1556.03,547.176,604.203,1187.22,371.879,377.282,532.468,139,224,680,399,703,484,169.765,156.859 +1.5012,899.353,811.06,1191.886,179.475,162,121,829,472,239,156,172,380,595.643,342.374,561.503,306.479,354.79,307.003,715.436,574.049,285.672,510.148,475.733,513.868,578.042,177,423.931,437.068,440.32,116.263,138.128,92.132,1234.006,865.305,1184.913,570.884,464.113,395.212,1020.843,1281.975,395.465,397.786,100.557,97.005,73.157,1567.897,549.779,597.316,1184.349,373.585,381.581,542.973,140,214,673,391,717,483,167.162,158.11 +1.668,892.033,809.514,1179.736,183.721,154,118,829,473,237,156,172,389,606.961,351.523,567.975,303.814,353.311,304.961,721.254,572.703,294.991,532.495,485.425,525.202,578.971,174,429.248,443.785,439.726,118.695,143.624,93.705,1241.761,889.096,1197.378,570.116,458.646,401.175,1025.538,1265.108,414.926,414.027,102.591,96.609,75.02,1564.573,548.972,597.584,1186.994,375.396,382.415,540.454,141,207,670,390,728,482,172.895,152.431 +1.8348,889.904,805.21,1168.767,186.382,149,116,811,471,231,152,176,392,602.009,355.255,577.91,308.855,356.483,307.116,726.333,568.724,307.339,548.078,490.688,524.843,580.677,168.5,432.458,446.881,442.173,122.824,141.471,92.756,1257.578,891.527,1204.669,561.725,466.081,395.665,1034.757,1242.703,424.38,428.26,101.866,95.221,74.167,1582.535,551.829,596.99,1191.519,381.155,387.056,545.775,144,193,663,385,729,481,170.696,156.17 +2.0016,879.028,799.729,1162.092,186.637,144,113,814,469,227,153,175,396,605.204,360.45,570.345,308.119,363.921,310.683,726.091,572.703,315.433,569.18,496.16,530.57,586.015,161.5,431.143,443.544,440.476,121.636,144.743,94.725,1261.385,906.515,1222.524,559.663,461.248,401.458,1033.895,1224.532,447.237,437.805,103.003,93.692,78.02,1592.012,552.226,595.208,1180.784,385.57,388.938,546.44,140,183,652,387,732,481,176.266,151.921 +2.1684,880.114,793.934,1151.403,187.91,142,112,801,471,225,152,177,399,607.399,361.924,579.423,306.493,365.357,308.063,721.254,581.031,327.525,579.823,494.923,539.609,592.545,154,433.83,449.116,446.697,118.709,144.814,94.626,1267.46,911.078,1218.845,553.462,466.379,400.458,1037.812,1200.598,460.032,450.566,103.643,95.108,77.011,1591.884,553.513,595.972,1179.398,387.141,393.168,557.576,134,174,643,382,726,484,178.138,152.488 +2.3352,871.843,789.265,1150.842,195.68,136,109,789,474,223,148,171,397,605.068,367.432,587.311,314.592,364.703,313.147,723.9,579.94,341.053,600.926,497.574,538.302,591.884,151,430.888,443.261,450.346,117.903,149.064,92.487,1286.76,922.727,1233.709,556.975,464.727,408.34,1034.531,1190.174,477.709,466.258,102.278,94.471,80.594,1578.519,553.343,586.354,1169.328,391.216,397.711,556.982,133,169,636,385,729,491,179.254,153.957 +2.502,862.042,784.338,1137.759,195.964,138,109,785,476,222,149,178,403,607.775,368.765,590.419,319.095,369.681,317.115,720.728,590.803,348.351,613.041,508.165,548.675,601.793,143.5,438.524,446.867,445.708,119.784,150.452,95.532,1285.943,937.756,1235.66,555.453,469.239,414.457,1024.859,1180.558,498.769,486.581,104.254,92.319,80.679,1573.936,558.095,592.62,1169.116,392.687,399.409,563.292,127,160,646,392,727,488,177.86,151.594 +2.6688,853.289,777.43,1123.476,198.539,138,108,771,480,215,148,175,403,608.87,365.187,590.587,316.433,376.323,315.555,715.763,590.987,361.794,634.214,510.7,552.819,605.858,143,437.11,450.119,453.301,117.338,150.679,96.297,1289.188,941.206,1239.169,555.254,466.579,414.527,1020.207,1162.699,514.733,498.846,104.354,91.936,81.774,1563.894,552.254,593.836,1163.204,398.08,402.833,570.862,127,159,658,401,724,502,178.827,149.783 +2.8356,853.599,776.242,1126.252,198.992,135,109,768,492,215,151,176,398,616.34,369.878,591.67,316.606,373.222,315.361,714.444,600.589,378.949,651.636,517.668,561.037,613.548,141,434.565,448.14,452.028,119.303,150.126,96.099,1298.102,949.698,1239.359,559.663,465.968,418.162,1012.953,1144.458,528.264,512.867,102.491,91.837,83.509,1571.956,547.318,583.837,1166.457,402.852,407.785,575.111,125,157,664,407,740,511,179.467,148.749 +3.0024,844.109,771.66,1104.307,205.772,134,105,760,496,218,149,174,406,608.839,368.627,592.4,321.999,378.172,317.948,708.423,603.79,390.813,653.165,522.269,566.018,618.078,138,436.813,447.447,448.875,122.131,148.313,96.609,1303.836,960.382,1257.768,560.53,471.062,422.4,1008.654,1144.698,550.781,527.553,105.292,94.329,85.371,1548.845,547.841,583.384,1154.279,404.651,407.115,574.19,121,155,674,414,744,524,183.92,150.306 +3.1692,839.212,764.927,1094.728,206.125,139,108,764,505,220,153,174,407,615.397,374.292,596.453,322.999,382.381,324.739,703.771,607.529,402.165,670.063,534.549,570.641,623.646,137,438.326,445.481,451.109,118.214,151.826,94.838,1307.857,962.444,1254.555,557.515,477.508,431.44,1004.214,1129.035,570.157,545.497,106.984,92.149,84.575,1543.131,547.403,586.439,1156.882,404.339,411.817,576.881,120,154,678,430,750,530,182.511,149.004 +3.336,835.581,754.72,1089.648,206.493,141,108,761,514,218,155,179,397,612.738,371.786,602.396,322.778,385.553,322.268,702.633,609.455,414.114,681.075,534.546,575.21,629.181,135.5,439.019,447.716,455.861,116.008,149.049,94.994,1308.786,968.404,1256.086,565.266,481.059,436.347,988.136,1114.334,576.412,552.89,110.155,92.446,84.646,1533.174,542.155,578.108,1141.974,403.32,416.406,578.227,118,153,688,440,776,548,184.998,148.919 +3.5028,824.097,758.182,1086.076,213.443,140,109,756,519,225,160,183,409,617.661,374.071,602.893,330.693,389.194,321.061,689.702,614.78,426.675,700.238,540.271,578.787,634.253,134.5,436.248,444.732,451.138,114.806,151.968,92.685,1311.726,968.082,1253.403,562.749,488.127,448.889,982.777,1113.088,599.383,574.913,108.492,91.781,85.4,1522.128,539.143,574.756,1131.366,407.2,417.454,580.507,114,155,707,450,791,567,180.932,148.451 +3.6696,817.201,749.494,1071.026,213.895,141,109,758,534,228,162,179,407,609.2,375.265,604.62,329.986,386.534,326.559,687.768,616.083,436.263,707.258,546.964,586.653,636.423,135.5,438.722,445.496,450.699,114.368,149.418,91.693,1301.176,970.688,1249.148,564.669,495.652,450.733,979.935,1099.647,614.513,583.481,108.335,91.228,87.988,1515.155,535.055,568.873,1128.212,404.396,419.437,582.56,116,155,715,459,804,574,185.186,149.23 +3.8364,812.192,738.601,1060.732,213.216,144,109,763,537,235,168,181,407,613.95,378.494,607.711,329.647,390.09,325.488,686.331,624.382,451.84,719.316,547.197,594.204,644.436,136.5,434.141,445.199,445.241,109.659,149.545,93.082,1292.184,971.361,1259.636,574.411,498.067,458.759,962.344,1098.458,625.736,593.324,109.259,92.743,88.073,1504.476,527.7,564.63,1115.2,409.622,419.564,581.583,116,157,734,471,829,604,183.564,145.918 +4.0032,805.481,738.917,1046.257,215.608,144,110,758,546,242,168,180,406,608.419,374.97,611.378,329.42,388.497,326.162,680.072,626.124,459.906,727.596,558.703,600.688,649.477,137.5,430.804,437.591,445.948,112.275,145.806,92.926,1305.052,978.66,1246.279,577.341,505.578,461.097,957.197,1084.352,639.691,604.413,110.255,89.628,87.305,1481.521,527.616,554.432,1107.308,406.365,416.59,582.192,114,161,740,478,850,617,181.018,146.414 +4.17,806.835,730.615,1039.375,219.274,145,108,766,540,246,176,183,402,604.749,372.878,610.093,330.311,387.857,332.928,670.541,619.425,469.807,737.05,553.81,606.537,651.9,141.5,430.874,445.142,446.655,109.659,146.811,91.325,1294.537,975.841,1240.225,584.708,511.264,471.74,950.862,1077.384,650.277,618.349,109.515,90.577,91.031,1471.819,518.012,552.282,1099.826,404.863,422.099,583.028,119,164,748,488,870,627,185.869,144.008 +4.3368,795.421,725.972,1032.356,224.793,143,107,766,549,251,180,182,403,605.204,385.141,613.116,335.85,392.565,329.873,670.526,632.554,481.315,741.763,561.631,606.637,653.565,141,431.666,433.504,444.859,108.429,150.877,92.317,1293.401,975.84,1237.263,585.419,510.81,480.057,941.713,1065.119,663.68,620.346,111.378,92.644,91.855,1457.081,513.373,556.002,1094.154,405.033,424.294,589.896,116,166,753,489,894,647,183.92,142.663 +4.5036,786.458,724.707,1020.774,225.558,143,110,768,557,256,183,185,405,603.349,377.793,607.265,336.252,388.426,339.745,660.569,624.58,488.698,744.452,566.033,610.384,662.607,144.5,418.516,435.484,439.118,108.358,145.664,90.291,1285.802,970.546,1235.655,590.482,515.738,482.445,941.416,1056.239,669.964,629.127,107.255,91.639,92.495,1448.397,505.551,538.987,1078.526,411.959,420.895,587.376,118,171,757,492,902,665,185.171,146.015 +4.6704,783.953,709.908,1010.572,228.148,142,106,767,553,258,190,184,404,603.165,378.728,610.72,340.183,391.356,339.688,661.55,622.98,496.991,749.448,570.372,614.511,661.542,146,427.169,432.755,439.783,107.114,146.273,90.22,1275.415,969.658,1230.25,597.892,522.01,485.862,923.755,1049.838,672.356,638.162,109.828,92.219,91.358,1433.192,504.844,540.529,1067.805,405.685,423.515,584.288,120,172,756,494,919,673,185.42,141.71 +4.8372,767.346,698.827,995.68,229.337,144,105,767,554,265,189,184,400,601.131,374.367,609.149,334.399,390.232,338.43,655.832,627.512,508.03,753.468,578.708,623.269,673.597,148.5,426.349,436.205,431.68,106.209,147.817,89.71,1277.415,969.686,1227.236,609.014,522.011,490.717,921.252,1036.624,678.428,639.734,112.217,89.642,94.073,1416.121,497.589,521.477,1056.561,402.427,422.212,582.419,121,176,755,501,940,681,182.119,140.959 +5.004,761.799,693.519,992.018,230.214,137,103,767,552,271,195,183,398,593.768,379.378,611.518,337.691,393.418,345.168,655.505,621.762,519.098,755.52,578.462,630.104,673.635,149,426.392,423.281,433.278,105.417,143.341,89.299,1271.945,964.348,1224.646,609.569,530.706,496.807,908.822,1026.328,679.291,640.966,111.293,91.681,91.756,1405.81,491.365,519.851,1041.469,404.665,422.991,583.608,121,177,760,492,956,699,182.782,138.962 +5.1708,747.922,689.52,969.25,230.143,134,99,767,550,273,197,185,404,589.409,375.683,605.347,341.994,395.549,346.166,647.609,627.724,532.782,755.222,583.977,632.703,681.712,150,420.142,428.739,435.017,105.403,141.754,87.798,1265.816,961.873,1216.095,610.147,525.536,499.795,899.815,1020.564,690.401,641.122,110.042,90.265,93.149,1386.575,486.698,521.604,1033.86,404.523,422.043,583.028,123,177,756,492,963,698,184.247,139.161 +5.3376,740.385,681.443,960.302,238.734,133,99,763,539,269,199,182,395,581.64,374.544,605.138,335.728,389.322,349.49,646.671,625.501,532.37,758.633,581.63,636.18,674.031,153.5,412.718,426.208,424.511,105.389,143.497,88.421,1258.956,954.144,1212.031,618.742,534.103,500.488,890.539,1014.216,694.336,648.458,110.539,93.154,95.012,1365.784,479.244,507.687,1029.292,398.759,417.199,581.045,127,180,750,485,970,691,178.656,138.552 +5.5044,738.261,674.604,954.635,233.413,131,97,768,540,276,203,182,391,575.384,371.724,601.426,341.401,396.149,347.378,640.116,625.926,536.026,768.031,591.256,631.147,689.048,151,410.427,417.257,422.022,103.636,142.321,86.622,1249.807,955.37,1201.795,620.236,539.742,502.046,882.081,1005.211,692.071,642.935,111.463,90.634,95.211,1356.35,475.213,501.294,1014.837,393.647,415.981,582.235,125,177,749,490,973,703,180.349,136.668 +5.6712,731.339,667.351,937.108,236.923,129,99,768,530,273,202,180,386,573.436,368.488,602.322,344.497,393.759,349.363,648.168,620.601,540.749,755.435,586.948,642.482,694.85,150.5,409.013,414.683,417.639,103.381,137.689,86.679,1243.495,955.432,1195.858,617.547,540.46,500.587,878.287,1011.496,694.902,647.92,110.169,91.596,94.728,1333.451,469.245,491.351,1000.82,399.397,411.987,576.541,123,178,737,481,971,699,179.979,134.7 +5.838,721.399,662.057,933.997,243.433,127,95,766,523,275,203,179,382,569.689,367.65,596.623,344.12,391.597,347.888,640.443,623.694,543.736,753.963,594.91,639.591,698.112,150,400.501,412.591,412.039,105.191,139.53,87.685,1235.473,942.491,1187.394,627.617,539.374,504.524,872.029,993.736,697.167,648.713,113.156,91.214,93.107,1319.364,456.855,486.33,986.974,390.418,412.695,574.261,122,178,730,479,973,701,182.298,132.434 +6.0048,707.467,643.127,916.59,242.272,124,94,766,520,276,203,182,382,562.678,365.541,600.169,344.441,391.569,347.496,645.39,621.544,542.384,750.495,601.672,640.712,699.702,150,402.155,406.341,409.748,103.636,136.286,86.169,1234.452,940.446,1178.574,626.536,535.419,501.902,863.389,992.407,701.158,640.683,110.497,90.251,94.301,1300.242,444.083,478.452,977.002,389.639,407.894,565.905,126,174,721,476,973,706,177.12,132.264 +6.1716,703.272,637.465,903.127,243.631,120,94,770,509,276,202,181,380,555.446,362.249,602.748,344.29,392.351,349.134,635.344,622.704,547.875,754.119,602.6,644.428,698.098,152.5,397.588,406.468,404.927,101.514,137.065,86.948,1224.749,935.583,1169.81,630.39,535.867,508.205,866.288,977.276,703.705,640.981,110.155,91.016,95.424,1278.772,444.889,466.953,953.68,386.013,404.467,566.188,124,181,717,469,969,699,177.641,131.031 +6.3384,690.3,629.536,895.505,247.368,122,92,760,506,276,201,174,373,548.482,362.774,589.008,344.427,390.758,354.667,630.895,623.863,543.281,756.355,604.925,646.221,706.25,148.5,391.946,406.185,402.664,102.391,136.612,86.735,1214.412,928.294,1175.469,629.722,543.674,511.136,857.351,975.438,698.822,640.372,111.535,89.232,94.912,1262.153,432.612,460.688,944.147,387.684,400.912,560.665,121,176,707,467,975,691,175.171,128.865 +6.5052,678.366,621.852,883.95,247.948,119,91,757,506,274,200,177,372,548.629,358.137,584.491,347.151,387.345,345.777,632.659,622.718,549.07,750.354,603.082,656.45,710.462,150,391.125,398.733,394.095,102.787,133.836,87.359,1209.014,924.668,1161.746,634.131,537.607,506.874,857.351,953.492,696.799,639.366,111.179,89.119,95.197,1235.973,431.594,452.258,924.925,381.283,399.184,554.009,122,178,695,467,965,692,176.892,125.876 +6.672,673.141,619.749,872.896,249.448,118,92,752,505,272,197,178,368,535.724,351.896,585.584,343.281,395.708,346.181,627.68,625.009,557.89,745.075,610.837,646.886,715.415,150,380.789,395.127,386.699,100.397,135.281,86.027,1201.016,912.823,1157.621,637.416,534.358,507.275,859.769,953.973,698.313,627.314,108.378,90.846,97.017,1219.708,422.005,445.766,911.05,378.634,395.828,558.172,121,179,696,470,956,693,171.928,127.717 +6.8388,662.003,609.655,854.927,250.651,121,93,758,494,272,195,175,369,530.622,349.909,577.644,344.489,392.792,348.95,627.106,616.581,590.295,752.293,609.837,650.142,712.997,148.5,381.595,392.568,387.35,103.112,137.618,86.013,1197.656,902.218,1150.212,632.509,535.966,503.023,852.854,950.664,694.223,634.324,110.724,89.019,97.259,1195.197,407.182,430.491,898.788,372.261,392.485,555.737,121,176,693,458,955,696,170.121,128.015 +7.0056,649.861,600.278,848.924,251.897,121,91,750,495,260,195,175,364,528.545,343.758,571.629,349.943,390.801,347.312,622.957,618.561,643.043,752.632,612.308,658.245,716.264,147,374.284,381.27,379.686,103.324,134.275,87.968,1193.943,899.339,1147.379,629.722,537.373,504.97,851.567,938.079,699.459,630.175,108.676,90.648,95.396,1174.618,402.939,420.124,885.832,368.522,386.934,550.751,119,175,684,459,958,687,169.396,125.694 +7.1724,636.388,592.571,826.753,256.001,120,89,759,490,261,188,175,362,514.462,344.263,564.397,348.058,393.631,348.341,628.682,623.015,696.815,752.859,615.771,662.193,717.132,148.5,374.086,376.872,373.733,103.155,134.601,84.341,1193.597,897.351,1135.094,627.233,537.776,509.961,840.354,925.621,690.5,626.039,108.349,88.75,96.676,1152.921,393.831,419.558,875.776,362.404,383.124,543.344,121,176,687,459,951,690,170.548,123.624 +7.3392,625.478,577.698,814.323,254.784,119,90,756,490,257,186,175,364,511.078,337.971,562.942,347.524,390.573,349.716,620.226,618.631,745.807,747.24,620.525,653.741,721.073,148.5,364.753,373.591,368.628,103.381,132.547,87.203,1176.702,883.582,1136.286,629.196,534.018,509.227,847.226,924.518,699.162,621.875,111.279,88.524,95.538,1129.698,387.084,407.606,848.875,358.779,383.407,537.708,118,179,687,454,958,689,164.506,121.146 +7.506,616.184,568.489,804.229,254.303,119,91,753,493,256,183,171,355,507.693,339.077,558.153,345.324,390.246,346.995,617.873,624.797,781.043,746.504,623.632,654.725,722.288,148,357.697,367.525,361.897,102.193,133.737,86.99,1170.285,882.739,1121.58,629.708,527.468,507.073,841.104,915.412,686.495,617.089,110.312,88.694,95.382,1113.291,380.578,397.904,839.455,353.921,373.054,536.192,120,176,683,463,957,698,167.356,121.628 +7.6728,603.684,559.637,783.47,255.109,123,93,756,497,250,179,168,352,504.122,333.667,544.128,354.356,390.147,342.008,620.695,625.659,809.423,752.519,621.176,659.236,722.261,148.5,359.423,358.814,359.536,101.316,134.615,87.6,1159.124,867.391,1119.178,621.046,524.007,498.848,834.062,897.863,691.534,617.924,108.037,88.821,93.491,1085.838,373.11,393.321,823.176,349.644,366.086,527.114,120,177,683,460,966,696,161.805,118.526 +7.8396,595.893,544.451,779.567,256.638,122,95,754,498,242,179,168,351,496.565,326.077,541.729,351.598,394.57,344.63,613.669,629.661,828.627,742.258,627.13,655.757,726.281,148,351.829,352.847,350.882,101.246,133,88.945,1155.147,863.272,1102.775,622.084,520.355,493.494,827.656,898.387,684.132,612.486,108.079,88.864,95.197,1059.262,366.208,380.663,804.138,343.356,365.308,519.849,120,176,689,461,969,706,158.001,116.147 +8.0064,582.633,534.779,762.61,256.779,127,94,758,497,240,172,171,352,487.333,313.53,540.06,349.462,389.777,343.338,621.193,625.009,839.595,741.324,620.653,661.261,724.114,148,342.609,352.409,346.13,104.583,132.787,87.43,1137.844,848.602,1095.798,616.282,519.604,496.288,827.458,888.46,678.442,612.769,108.591,89.487,94.329,1051.03,355.162,380.012,791.678,338.569,357.901,515.005,119,177,674,466,975,711,157.717,112.988 +8.1732,574.951,520.328,746.47,262.044,125,95,754,502,241,173,167,352,485.237,316.759,531.322,350.706,387.274,343.681,615.502,626.14,843.052,742.371,625.189,668.331,721.395,149.5,338.41,344.603,340.418,101.684,134.091,88.393,1129.373,840.706,1090.797,612.086,519.097,493.055,828.716,881.885,673.588,613.548,110.497,89.062,96.05,1016.096,350.508,368.103,780.349,337.705,356.088,505.7,119,180,682,470,984,721,156.308,115.835 +8.34,555.507,518.288,732.722,257.062,127,98,756,508,237,171,168,348,475.09,314.971,525.934,349.603,386.662,338.854,617.807,631.216,838.855,745.344,626.282,661.106,725.542,149.5,331.764,340.389,331.17,104.625,130.988,88.364,1120.005,839.948,1080.866,608.843,505.034,484,817.927,879.311,676.786,607.302,107.567,88.467,94.671,999.279,341.23,359.221,768.369,329.93,343.511,501.381,117,182,683,472,993,724,155.284,112.903 +8.5068,551.972,508.131,712.298,261.138,130,99,761,517,229,170,164,344,461.472,299.624,511.772,349.601,392.394,340.027,617.035,628.332,842.17,739.767,623.065,661.188,728.321,151,322.403,332.598,328.709,103.395,131.867,88.733,1102.981,828.052,1079.318,609.355,510.429,475.823,815.184,875.875,673.545,609.497,111.307,88.821,90.945,980.425,335.361,351.909,753.943,325.298,338.512,487.969,120,182,689,481,1010,736,152.567,110.368 +8.6736,536.992,498.805,701.402,263.063,133,100,765,520,229,169,163,346,458.788,298.765,508.101,349.335,388.234,339.307,621.577,633.281,829.324,748.132,624.585,666.742,726.108,151.5,321.074,327.465,321.696,104.102,134.615,89.172,1105.739,813.651,1062.129,599.878,507.809,478.258,804.847,861.466,672.399,603.053,110.027,88.906,92.964,954.288,328.713,344.568,736.786,317.92,335.765,486.354,121,182,697,478,1014,738,148.968,109.207 +8.8404,523.476,486.922,686.423,260.063,134,100,768,525,225,161,163,343,451.244,298.426,500.995,351.088,386.719,337.807,614.067,633.776,823.762,743.928,625.175,659.138,732.244,151,313.749,318.189,313.975,105.7,133.581,91.58,1090.84,806.403,1055.689,598.76,501.494,475.205,809.712,856.799,664.643,602.204,108.364,91.257,90.362,937.938,323.862,336.266,721.907,308.275,330.794,468.085,120,182,692,481,1037,753,147.232,106.771 +9.0072,516.754,475.667,673.185,262.851,137,105,779,538,222,163,164,344,444.532,290.294,493.516,348.638,382.41,334.249,618.533,637.665,803.79,743.207,626.381,667.351,729.007,152,305.307,319.207,307.272,106.138,133.51,88.294,1075.195,801.677,1042.278,590.895,495.312,467.427,799.884,844.95,669.228,604.144,105.563,88.793,91.67,916.864,314.951,328.713,702.403,303.828,317.877,468.524,123,181,701,482,1050,763,145.44,109.207 +9.174,505.363,467.596,655.311,260.119,140,102,775,536,241,159,162,342,439.93,282.997,485.072,344.116,382.78,336.266,618.072,636.18,799.778,748.443,624.85,657.907,731.876,152.5,300.089,302.507,303.299,105.163,132.816,88.336,1064.026,787.251,1027.909,583.556,491.497,462.111,798.965,845.727,666.822,605.277,109.274,88.51,91.884,894.559,305.136,324.329,686.067,299.806,315.243,461.57,124,181,708,489,1067,768,143.765,103.188 +9.3408,491.072,457.926,645.978,258.506,142,106,780,546,221,160,161,339,431.653,285.015,479.985,343.526,381.898,332.096,616.029,635.43,793.988,744.325,630.129,660.001,725.556,155,297.855,293.896,294.263,101.529,132.702,90.291,1054.1,776.084,1020.739,574.653,486.673,452.446,788.628,838.671,665.959,607.458,106.686,90.874,91.827,878.011,294.98,312.66,673.309,291.507,308.728,455.622,124,186,715,494,1074,779,142.552,105.157 +9.5076,479.987,443.465,628.143,262.242,141,106,781,555,214,161,161,343,426.703,274.825,469.958,340.565,378.783,331.259,611.411,638.513,776.036,748.755,631.095,663.777,726.919,153.5,292.496,299.34,289.809,103.409,133.326,88.577,1043.052,766.554,1012.924,574.71,476.998,452.311,784.938,825.507,656.377,605.319,109.331,91.611,92.922,858.493,296.734,307.37,660.014,284.284,298.928,448.087,124,183,719,496,1102,794,141.291,101.007 +9.6744,469.818,435.915,613.996,264.04,143,107,787,562,220,157,162,339,424.889,271.29,464.952,342.393,378.029,325.228,620.226,627.865,763.859,753.694,624.203,650.002,724.439,157.5,285.85,283.799,288.338,106.266,135.238,92.699,1022.442,747.982,997.939,574.852,477.015,444.106,779.847,820.996,652.627,605.249,106.544,89.458,91.585,838.479,285.561,292.534,648.105,279.554,293.263,435.653,126,189,732,503,1118,806,137.63,100.214 +9.8412,459.14,425.532,600.938,259.129,147,105,802,571,219,157,159,339,414.999,264.828,449.984,345.162,373.521,327.214,608.016,636.18,753.702,744.282,626.719,655.418,727.953,155,279.684,277.012,275.654,106.167,130.181,91.183,1019.336,739.623,984.643,564.569,468.673,440.136,774.417,817.178,655.372,604.286,106.928,89.317,92.552,822.242,282.859,291.02,637.144,272.656,291.493,427.028,124,186,732,510,1131,813,136.529,100.639 +10.008,452.142,417.215,588.31,258.35,147,108,804,577,216,155,160,334,408.272,262.246,448.439,335.977,369.78,323.032,608.646,642.981,741.611,742.442,624.118,651.772,724.976,157,271.61,273.335,267.623,106.52,132.646,90.872,997.71,730.056,975.298,560.146,465.335,429.579,762.468,812.045,660.935,607.061,106.942,89.515,92.467,810.517,273.638,285.844,628.135,268.252,281.692,415.287,125,189,737,507,1150,817,136.025,97.741 +10.1748,444.405,408.533,574.409,255.789,148,110,799,589,216,157,158,332,397.077,256.195,434.562,337.567,370.292,322.108,603.272,638.683,732.265,745.91,624.495,650.284,724.469,153.5,264.483,266.93,267.835,105.714,133.907,89.03,983.77,721.851,966.238,552.665,454.712,423.606,759.442,800.223,653.193,607.741,107.695,89.119,89.637,785.412,267.697,274.359,616.098,258.862,275.956,410.826,122,185,735,513,1161,835,134.344,96.227 +10.3416,430.78,395.806,565.726,255.251,152,110,810,593,213,159,157,326,397.514,253.592,430.892,336.218,364.049,314.464,611.847,630.778,713.587,749.533,624.712,645.626,722.586,155.5,259.534,260.496,264.13,101.783,129.997,91.368,970.76,712.229,946.443,546.507,453.245,416.311,752.372,799.997,646.725,609.696,107.852,88.736,89.836,774.408,264.176,268.885,598.065,256.823,268.932,400.048,126,185,740,512,1184,831,128.441,94.953 +10.5084,426.202,388.081,550.124,252.703,154,108,806,603,211,157,157,332,392.329,246.307,426.735,334.54,364.319,313.905,611.993,637.311,713.757,748.769,625.076,642.024,726.678,156.5,255.745,257.682,256.098,104.696,131.243,89.115,947.19,691.179,925.47,534.048,448.354,410.894,741.71,793.082,647.433,616.154,108.534,87.66,91.358,762.726,258.674,264.388,590.894,248.283,261.766,390.418,126,187,752,512,1198,842,127.573,92.858 +10.6752,413.945,384.905,541.177,253.736,148,111,812,612,217,155,157,324,387.797,242.418,417.484,324.789,352.714,309.224,607.978,633.437,701.31,746.405,623.439,646.178,720.04,157.5,251.135,250.145,248.363,106.662,132.844,89.894,936.137,691.575,924.94,529.511,440.419,402.478,736.605,792.39,644.659,619.199,107.809,85.805,92.012,746.758,252.366,258.674,585.944,244.7,255.067,383.96,127,188,749,519,1214,854,127.36,92.934 +10.842,401.525,373.061,526.737,252.335,155,111,826,621,215,158,153,324,379.487,237.735,412.434,322.702,350.068,305.15,598.756,631.754,685.719,741.055,621.72,643.41,719.583,156.5,245.083,244.616,244.673,104.639,129.657,88.634,920.611,669.062,901.49,524.221,432.396,397.616,736.464,776.524,641.219,612.995,106.06,88.283,92.353,736.744,251.008,255.562,572.083,234.361,253.58,369.542,125,188,755,516,1215,864,122.287,94.775 +11.0088,399.886,363.765,511.488,251.429,154,110,827,620,215,156,154,323,374.086,230.969,405.055,320.327,348.347,304.536,592.714,630.863,677.568,735.253,616.82,632.341,717.876,158.5,239.738,240.006,239.243,104.272,128.382,88.18,903.452,657.898,893.381,517.309,432.642,387.158,727.57,777.585,641.686,619.468,107.041,89.416,89.751,720.394,243.738,252.804,563.654,227.974,246.215,360.577,128,189,745,518,1231,869,125.768,90.456 +11.1756,389.789,356.633,504.943,250.17,152,109,827,627,215,157,154,325,368.086,230.435,396.98,317.921,345.965,299.011,588.615,629.619,667.041,738.734,621.762,634.103,708.04,156.5,237.956,235.962,232.3,102.264,130.124,86.92,884.347,646.873,875.182,514.686,420.8,382.966,719.015,771.278,641.418,619.029,107.511,86.088,92.41,707.792,240.103,250.06,556.115,225.566,238.227,352.448,126,187,745,520,1237,870,118.469,92.198 +11.3424,383.107,347.076,489.589,248.033,153,113,832,635,216,157,150,323,363.285,225.439,382.376,309.152,341.876,291.996,594.051,631.669,660.085,740.447,621.049,633.956,710.62,157,235.326,230.009,229.189,103.126,130.323,88.988,874.422,638.587,862.144,504.722,417.982,375.147,715.338,766.442,634.086,625.147,105.491,86.74,90.732,697.014,238.236,243.78,545.847,220.227,229.602,344.701,125,189,736,523,1256,874,119.237,89.776 +11.5092,375.034,342.335,481.673,247.594,153,114,841,641,217,156,153,320,358.598,222.485,380.53,306.462,330.641,282.825,586.129,627.356,650.127,738.366,615.29,622.463,711.014,157,226.106,223.024,224.749,99.874,127.844,90.447,850.864,619.9,847.574,496.971,404.304,363.427,700.42,754.168,638.177,621.111,105.207,87.731,88.77,694.186,238.476,242.408,537.417,213.556,226.048,343.016,126,188,728,520,1254,877,119.28,87.169 +11.676,365.127,331.676,466.166,244.084,155,112,838,642,216,158,152,315,355.799,216.666,372.03,300.779,326.63,283.34,577.592,618.476,650.341,729.379,611.134,625.402,705.345,155,222.331,219.064,221.298,103.126,128.92,88.988,830.929,612.521,831.654,493.06,401.175,358.616,703.842,749.94,635.148,626.591,105.747,86.131,89.737,680.268,233.455,238.123,531.76,210.696,218.91,332.309,125,185,725,526,1270,884,116.989,87.496 +11.8428,359.05,326.489,463.863,246.66,156,111,851,649,219,158,149,312,353.447,213.846,373.261,298.772,322.463,278.52,577.619,617.981,632.004,730.398,610.05,617.725,703.182,157.5,217.731,216.363,216.049,102.688,126.583,85.744,822.905,591.631,816.339,485.223,392.723,353.175,690.253,745.698,629.232,633.474,105.235,86.188,87.518,669.59,226.412,232.564,529.327,199.153,215.723,318.217,127,188,716,528,1278,890,113.541,85.966 +12.0096,349.587,321.144,451.212,240.546,154,112,844,656,220,161,146,309,345.026,211.221,366.47,288.191,313.744,273.524,570.65,611.462,633.398,731.176,607.259,616.196,707.551,154.5,214.761,209.662,216.59,102.151,125.195,87.968,798.537,579.057,791.727,473.874,389.182,345.706,685.742,733.014,628.453,627.328,106.885,87.858,90.121,660.227,224.531,227.586,521.208,198.544,208.939,316.319,124,185,718,529,1281,891,112.703,87.027 +12.1764,343.666,310.921,444.815,239.767,153,112,843,648,219,158,148,305,343.185,204.299,359.449,284.751,307.913,263.918,560.364,607.588,625.816,723.548,605.447,604.203,699.061,156,211.471,203.98,212.531,100.991,127.985,92.076,782.095,567.703,778.201,468.483,381.637,335.108,678.799,722.988,626.939,634.636,105.008,90.69,89.267,651.967,220.585,226.412,515.098,196.122,204.931,309.04,126,186,718,526,1278,889,114.386,86.164 +12.3432,336.031,307.124,434.478,238.366,155,107,848,654,222,158,145,300,343.543,203.034,350.651,278.984,301.328,257.74,556.61,605.721,620.894,723.321,597.782,602.544,689.377,154,206.889,202.933,203.595,99.69,124.586,87.529,759.493,550.635,767.046,461.714,373.593,331.806,670.598,714.603,623.91,627.781,106.003,87.561,88.684,645.418,214.333,224.955,507.022,191.024,199.451,300.812,122,186,713,527,1278,887,111.968,85.046 +12.51,329.19,304.301,425.225,237.446,151,111,846,658,220,157,145,299,337.694,201.517,349.85,276.155,297.716,255.095,545.422,602.554,610.481,720.264,598.677,596.085,689.246,152.5,208.445,197.771,205.037,101.189,127.475,89.059,747.885,546.466,750.304,450.094,369.123,324.602,667.869,709.003,625.297,635.174,105.477,84.956,89.239,632.052,213.287,219.354,501.832,185.741,194.975,297.328,123,182,717,531,1286,887,108.595,83.176 +12.6768,320.484,296.698,418.175,236.894,153,110,850,662,221,157,144,296,334.392,198.028,336.854,272.336,294.658,249.791,541.019,594.762,602.216,717.321,595.929,588.381,686.378,152.5,203.205,195.188,198.047,101.175,126.356,88.974,725.035,532.44,736.472,439.811,356.404,312.519,659.794,699.473,622.382,634.14,103.799,85.465,89.097,628.432,210.373,217.94,497.603,181.478,193.885,290.317,122,183,713,524,1279,885,109.579,84.097 +12.8436,312.757,287.612,405.626,230.172,153,108,850,658,221,156,143,293,333.281,195.812,334.159,259.74,284.077,242.32,531.162,593.999,593.624,714.094,587.616,587.613,683.454,151.5,199.672,193.301,193.175,97.513,125.379,83.931,718.53,523.842,723.507,436.426,349.241,310.188,654.562,700.066,613.522,640.485,104.567,85.281,86.708,621.544,209.397,212.212,489.371,177.909,185.189,281.48,120,183,711,531,1273,878,107.97,83.984 +13.0104,310.243,288.79,401.074,231.573,153,107,853,654,221,159,141,288,328.916,189.529,331.554,259.692,275.174,235.068,526.182,586.08,587.337,712.254,589.734,584.316,671.966,150.5,197.189,190.671,193.597,97.88,123.353,85.503,698.45,510.806,709.109,428.846,343.25,299.792,649.118,681.302,613.465,636.987,101.496,87.292,87.604,621.671,206.045,210.896,491.903,175.233,185.387,278.123,121,180,713,529,1276,871,105.595,84.168 +13.1772,303.503,278.743,393.293,223.76,153,107,840,659,222,158,142,282,327.16,189.671,323.064,251.073,269.243,228.073,518.72,574.754,589.428,705.956,585.789,576.27,665.751,151,193.995,189.255,190.558,99.309,123.622,85.744,680.401,505.847,693.764,417.681,334.394,290.605,640.097,686.576,610.663,639.876,103.117,86.343,87.632,611.954,204.235,214.63,494.109,170.573,182.045,271.24,120,182,708,528,1281,866,105.31,83.743 +13.344,300.441,280.351,384.143,223.534,148,105,849,660,220,156,135,275,321.907,187.734,319.761,245.718,261.549,219.354,511.032,566.227,578.944,694.477,577.995,569.262,663.225,150.5,189.991,187.828,191.009,97.428,124.047,84.356,668.165,495.499,685.481,411.025,328.297,282.951,633.196,678.064,599.256,641.236,103.6,85.112,85.187,609.097,203.358,210.373,481.125,170.403,181.195,263.635,120,181,710,526,1270,862,103.162,83.587 +13.5108,292.805,272.247,381.432,222.699,148,106,837,653,218,155,134,276,320.547,184.566,315.526,236.443,257.509,216.403,499.006,560.769,575.544,693.925,572.038,561.475,662.465,150,188.297,183.968,186.714,95.321,122.9,83.01,653.013,484.729,665.822,405.251,325.033,275.03,627.073,658.592,600.374,638.431,102.633,87.674,87.575,596.835,202.424,209.043,482.738,168.208,172.712,258.012,121,179,706,533,1271,853,105.332,82.029 +13.6776,291.784,263.34,368.2,218.198,149,105,837,648,219,154,138,269,317.075,182.142,311.158,229.41,248.72,211.08,492.71,555.169,554.561,692.171,575.478,553.272,658.063,147,183.104,178.317,186.909,95.109,121.285,84.639,645.064,474.67,650.646,397.798,317.494,270.154,618.702,653.276,594.981,649.294,102.989,85.451,85.826,596.764,199.115,205.904,480.277,162.77,171.494,256.03,117,177,704,527,1258,850,106.662,83.191 +13.8444,282.096,263.171,365.175,218.807,147,106,835,648,214,159,132,264,313.683,181.506,305.777,229.503,239.703,202,478.567,549.188,558.061,690.911,568.964,545.649,650.993,147,183.492,175.073,183.111,90.923,121.597,81.608,628.193,464.957,641.744,385.482,311.868,262.4,618.999,646.488,588.428,644.663,102.79,86.485,86.239,593.751,199.199,208.068,478.792,160.079,168.123,250.804,118,176,705,524,1250,840,100.378,83.46 +14.0112,285.337,258.903,361.276,216.075,145,103,829,647,218,157,133,262,317.972,177.273,302.157,222.296,233.957,195.494,473.064,538.611,551.716,676.163,567.26,538.742,642.448,146.5,179.837,176.39,182.326,94.289,117.404,82.783,611.691,457.299,626.197,378.086,299.979,255.957,606.23,641.157,581.125,643.176,101.083,86.839,85.67,592.903,196.144,204.22,470.899,157.402,164.993,249.614,116,177,698,523,1246,840,99.222,81.718 +14.178,277.002,255.333,357.968,211.504,144,102,822,638,215,152,132,259,318.291,176.258,299.828,216.899,227.074,192.383,460.983,528.189,548.444,669.243,557.011,532.778,637.638,144,181.846,174.434,178.552,90.556,116.143,80.97,604.045,446.237,612.297,371.601,298.364,249.317,603.529,633.281,581.522,642.255,103.814,85.253,84.262,595.845,194.094,205.295,470.503,154.739,162.685,242.859,116,172,697,516,1242,827,99.679,82.525 +14.3448,272.483,246.51,347.922,208.263,142,101,826,634,214,154,129,250,315.524,177.255,297.633,213.315,226.462,187.092,446.392,519.266,543.153,668.591,554.248,526.972,630.935,145,183.605,173.707,177.147,92.182,117.687,80.871,592.707,438.561,604.403,368.259,290.45,241.689,595.865,630.085,578.351,647.849,102.875,87.32,83.466,587.132,196.173,203.527,473.714,152.417,160.05,235.763,115,175,692,520,1235,820,100.876,84.309 +14.5116,269.817,249.307,344.99,202.248,141,99,813,627,213,153,126,250,315.838,172.709,293.322,202.892,217.146,185.741,437.306,506.441,534.802,671.663,543.174,519.143,621.082,142,175.969,173.099,176.097,89.877,115.888,79.284,577.88,433.353,596.173,362.726,281.763,234.28,587.72,616.708,573.355,641.505,102.576,87.377,85.115,581.885,194.193,204.956,471.649,151.496,156.283,233.186,114,170,695,518,1226,806,100.072,83.219 +14.6784,266.096,241.338,341.016,204.526,140,99,818,625,209,150,126,240,315.49,172.405,293.038,202.707,212.254,173.783,429.008,495.68,527.263,657.396,544.461,514.439,615.179,143.5,178.462,171.257,177.952,88.519,112.956,78.392,565.417,418.589,590.642,349.855,275.158,230.829,588.031,607.517,568.557,645.442,99.377,86.188,82.129,583.794,197.347,203.315,472.413,152.261,158.365,232.548,112,175,683,512,1212,805,99.137,84.041 +14.8452,261.242,239.81,339.673,198.723,137,98,811,617,211,154,127,237,315.313,173.525,287.04,196.901,204.901,169.568,418.189,491.014,518.713,649.598,539.875,503.854,609.936,140,175.65,172.444,177.22,88.618,114.741,80.928,560.484,417.132,576.874,348.376,275.909,227.016,575.8,600.164,560.122,634.65,101.283,84.814,83.836,587.599,193.811,200.557,470.051,145.307,154.895,227.691,111,169,681,508,1210,793,100.673,83.474 +15.012,257.737,235.53,332.451,195.581,138,98,801,618,207,149,126,230,316.623,169.973,284.912,189.228,198.316,165.212,407.685,484.495,510.833,641.559,532.269,492.529,603.143,135.5,174.816,169.059,172.908,87.544,112.984,75.318,546.013,412.092,568.229,340.411,267.214,220.62,570.61,591.991,562.472,639.848,101.254,86.527,83.978,586.213,198.605,202.396,467.392,146.469,151.921,225.991,109,162,675,509,1192,782,101.142,86.703 +15.1788,254.067,237.173,330.113,199.006,136,97,804,607,206,151,121,224,317.447,171.99,284.877,190.386,195.287,163.719,391.014,482.247,510.904,640.073,528.63,483.742,597.445,137.5,172.627,168.922,174.425,86.865,113.622,76.225,537.784,404.036,561.557,335.263,262.871,218.152,565.987,590.407,556.74,636.434,101.083,83.922,86.438,584.219,194.362,203.655,470.362,147.063,152.941,221.912,110,165,671,494,1178,774,91.701,83.126 +15.3456,254.351,233.119,328.053,192.737,134,97,789,599,206,148,119,220,312.495,173.291,284.687,185.07,189.541,161.125,380.543,471.952,500.377,629.713,517.97,477.914,590.187,135.5,176.677,173.614,173.873,86.045,109.839,76.876,527.256,401.311,554.015,329.46,260.361,210.905,560.472,588.866,550.88,633.404,99.363,83.073,84.376,582.564,192.227,205.267,469.16,145.959,152.148,222.195,108,163,659,494,1164,764,88.006,75.068 +15.5124,250.43,230.647,321.916,191.562,131,95,785,597,199,144,118,217,322.15,170.212,279.108,180.26,187.735,158.549,375.281,462.874,492.411,630.831,508.519,475.567,583.58,134,176.483,170.446,173.996,86.978,113.267,75.955,519.242,392.612,541.369,325.009,252.817,204.927,554.504,581.216,545.304,631.279,100.046,85.324,82.812,584.388,198.026,206.271,469.909,144.911,148.536,223.314,104,164,656,488,1162,753,89.345,72.745 +15.6792,248.668,229.765,318.379,189.312,130,93,769,588,200,146,116,208,316.898,169.517,279.265,176.98,181.847,151.846,361.395,458.038,488.428,619.579,508.649,461.343,577.543,132.5,177.994,168.81,176.691,85.734,109.344,72.91,513.155,392.4,534.693,316.361,249.586,198.886,548.311,573.778,542.304,618.859,101.055,84.927,82.229,584.459,195.918,204.305,470.121,146.369,146.808,218.726,104,161,648,479,1139,739,89.043,75.905 +15.846,248.285,227.555,313.407,184.882,130,93,767,579,197,140,116,201,326.879,172.809,280.701,174.355,174.906,150.023,356.007,444.789,477.503,604.888,500.163,457.222,563.115,130,178.741,172.47,176.378,85.833,112.545,73.094,512.387,378.714,526.693,313.588,245.436,197.72,539.586,565.124,536.458,622.47,98.723,84.814,81.746,591.573,198.266,209.114,470.871,145.307,144.528,219.689,102,158,630,474,1133,726,92.232,77.683 +16.0128,245.699,226.318,307.213,181.782,127,90,760,573,195,140,114,201,323.513,172.499,277.685,173.331,174.451,147.985,342.319,433.886,466.578,607.436,490.87,450.863,560.881,127.5,175.43,166.264,175.289,82.001,108.522,75.106,504.125,380.392,521.884,306.093,242.209,191.731,536.574,563.045,527.457,616.338,98.78,84.064,81.916,591.092,198.266,207.714,473.601,145.081,149.938,215.058,99,156,623,468,1113,714,93.435,79.646 +16.1796,242.499,220.486,309.74,182.391,127,90,754,572,190,138,112,192,326.635,173.408,280.024,168.137,172.303,144.472,331.264,422.97,461.599,601.987,483.012,439.953,552.139,125.5,177.13,172.5,174.075,81.845,104.23,73.491,497.96,376.782,521.705,306.548,237.645,193.288,531.809,559.242,516.757,612.854,97.187,83.667,79.015,595.406,201.236,211.264,475.468,144.344,148.14,218.372,98,153,614,461,1106,712,96.917,80.767 +16.3464,242.513,221.161,302.989,179.73,124,87,735,558,192,138,112,189,328.548,175.927,278.274,166.117,166.501,142.865,322.816,412.902,454.984,595.42,477.688,435.596,542.862,126,178.085,170.035,177.378,81.704,106.61,71.607,488.808,372.887,511.157,295.469,239.844,188.111,528.217,551.507,510.176,611.622,97.372,81.954,79.641,599.281,200.826,210.274,478.41,147.786,147.715,218.032,100,152,604,451,1082,688,95.297,82.324 +16.5132,238.275,219.684,303.214,179.277,121,86,733,554,186,138,106,182,334.226,171.845,276.7,164.087,164.851,137.362,313.496,405.167,443.319,586.079,473.169,426.22,537.948,122.5,181.394,170.449,176.289,82.227,107.403,70.233,482.582,373.084,517.417,295.511,235.213,183.773,522.052,545.624,508.138,605.404,98.254,83.158,78.361,603.737,200.798,212.325,482.441,143.438,145.279,214.477,96,149,591,437,1071,683,98.026,84.814 +16.68,239.965,215.892,301.594,176.673,119,84,724,547,183,136,106,178,334.855,170.753,281.398,161.577,160.513,133.05,301.009,391.267,436.804,584.805,466.062,417.85,526.074,118,179.966,169.837,175.71,78.522,105.986,70.7,482.634,368.695,509.725,289.595,230.584,181.182,516.679,537.536,499.66,598.309,94.742,83.724,79.982,605.25,201.83,211.434,486.033,146.072,146.893,215.553,92,144,580,435,1058,667,99.547,87.248 +16.8468,238.247,217.586,296.409,172.3,117,85,718,538,181,131,104,174,335.49,170.703,282.441,158.875,159.105,131.102,297.475,380.209,426.334,576.073,460.848,407.748,516.974,115.5,180.857,168.564,179.117,77.843,103.975,69.765,478.624,362.28,504.694,284.887,227.803,182.457,515.279,535.486,491.621,596.978,98.02,81.175,77.768,606.664,201.095,215.861,488.777,146.115,145.506,214.675,90,141,567,421,1039,655,99.092,87.828 +17.0136,237.845,216.083,294.503,173.106,115,80,709,528,177,130,103,168,340.995,177.057,283.95,159.427,158.041,132.852,288.901,377.268,426.448,562.259,448.722,401.153,513.981,113.5,182.85,170.771,179.202,79.837,102.204,67.329,476.755,366.4,506.312,285.373,227.058,177.812,509.623,526.973,488.295,591.27,93.903,82.52,79.129,615.448,204.178,219.722,498.069,145.265,148.211,213.939,88,139,557,416,1025,639,100.414,91.833 +17.1804,236.107,215.741,294.835,170.955,112,81,699,521,173,126,102,165,343.867,178.044,282.467,156.655,155.18,131.564,282.985,363.863,414.698,559.684,445.156,396.037,507.697,111,182.257,172.496,181.139,79.243,99.612,68.731,474.288,363.699,503.349,281.389,220.8,176.548,502.863,526.068,484.672,585.874,95.524,81.94,79.257,618.375,205.097,220.316,497.009,147.106,150.222,219.25,86,136,548,404,1008,635,101.593,91.21 +17.3472,236.419,215.786,293.087,166.907,109,79,691,511,192,125,99,161,345.551,178.75,283.136,155.891,152.433,127.787,271.71,357.047,407.3,554.178,439.599,388.123,497.136,107,184.136,173.108,180.346,75.864,102.02,68.179,472.055,366.777,500.179,278.6,218.564,175.006,498.89,521.387,478.544,585.407,94.713,81.317,78.987,630.935,209.27,222.678,502.85,150.123,152.473,219.788,81,133,535,396,986,617,104.166,90.191 +17.514,233.439,213.813,293.674,164.898,109,76,676,506,168,121,98,156,351.142,176.695,284.528,154.053,150.651,128.17,263.041,347.05,402.876,541.978,438.273,383.067,489.499,107.5,184.293,175.431,187.686,76.401,99.739,67.994,468.949,363.021,505.027,278.751,221.26,175.599,503.627,512.847,471.623,575.394,96.59,81.855,75.233,622.746,209.284,228.364,511.647,150.448,152.983,216.233,81,134,532,385,974,604,104.619,95.328 +17.6808,233.794,210.545,294.057,163.992,109,73,663,499,166,122,97,152,352.164,179.338,288.311,153.084,148.414,125.635,258.955,339.739,393.388,540.308,429.204,378.719,484.746,104,183.571,178.419,186.965,73.771,99.824,67.612,465.787,363.074,502.29,272.745,216.395,172.945,497.193,514.869,464.179,575.21,93.405,81.133,77.764,630.101,214.079,231.885,516.866,153.252,151.666,214.689,81,127,514,377,963,591,105.971,96.213 +17.8476,237.406,211.405,291.301,161.246,106,74,651,494,164,119,95,149,355.213,179.67,290.352,151.417,152.087,126.285,249.581,326.009,389.291,527.485,422.595,362.163,473.24,103,190.049,179.667,188.535,77.08,100.731,67.499,464.426,363.037,494.239,273.291,215.994,171.9,494.676,505.635,458.701,566.174,97.557,80.453,78.575,645.715,213.753,234.12,521.364,153.606,156.892,222.394,79,127,509,365,943,585,105.843,95.144 +18.0144,233.36,215.095,291.249,162.223,104,73,644,478,160,114,91,149,357.006,183.575,293.044,151.343,146.48,123.668,240.764,323.336,385.009,521.541,417.606,355.649,467.095,100,192.395,181.577,186.88,74.421,97.317,64.368,470.896,365.833,497.064,272.205,217.061,170.213,492.145,498.89,453.889,561.331,93.249,79.943,76.001,658.289,221.419,240.103,532.156,155.094,153.946,222.238,76,124,495,356,921,564,104.891,97.747 +18.1812,232.922,216.731,289.452,158.84,100,73,638,475,156,114,91,140,364.51,185.757,292.196,149.574,148.973,122.599,238.843,311.529,381.353,517.819,407.243,353.549,460.522,99,192.268,182.156,191.646,74.648,97.062,64.382,465.732,364.473,501.725,270.205,216.546,169.929,485.951,496.062,448.95,558.088,91.614,81.487,76.556,662.461,223.894,242.465,537.53,157.36,159.512,226.458,76,122,483,347,913,547,106.468,96.969 +18.348,231.801,209.83,287.744,157.156,98,71,623,468,152,110,90,137,367.626,187.857,296.526,150.805,146.452,123.724,233.267,307.683,370.926,512.073,402.967,346.783,450.25,95,195.648,183.231,192.692,74.902,95.348,64.481,469.845,373.456,502.011,264.77,214.807,174.969,480.677,492.103,442.029,550.086,92.154,79.476,75.916,668.784,226.129,240.994,540.642,160.928,159.88,229.348,71,119,466,333,881,539,107.762,98.61 +18.5148,237.62,212.537,293.739,154.467,97,70,614,462,149,106,90,134,372.751,186.968,298.071,149.319,146.826,125.831,224.086,305.293,363.998,505.081,393.703,339.717,449.688,93,198.971,187.025,193.993,72.526,97.841,63.646,465.922,373.418,503.821,266.352,211.704,171.29,481.073,487.507,433.82,552.366,92.993,81.26,75.546,680.197,225.478,248.787,550.656,160.759,160.079,228.087,70,116,450,327,867,531,111.684,99.247 +18.6816,236.29,212.947,286.288,151.707,93,67,598,454,145,102,89,131,371.953,191.083,299.699,151.711,144.362,124.276,219.227,294.758,360.314,498.599,389.46,332.224,443.22,90.5,198.603,189.03,197.896,74.577,93.252,63.688,466.166,375.726,499.041,267.599,211.476,168.882,474.681,488.822,432.943,541.291,91.116,78.046,77.025,692.531,228.279,251.036,558.024,161.254,165.262,231.557,67,114,442,321,848,515,112.054,101.384 +18.8484,238.468,213.103,283.545,149.98,91,69,592,440,141,106,87,129,381.628,192.741,302.585,151.544,143.442,122.698,218.646,284.054,346.772,489.314,380.929,325.799,435.044,89,206.239,188.394,202.251,74.04,94.838,62.569,471.762,375.816,513.804,269.48,212.667,165.974,465.617,488.808,423.389,532.963,89.922,78.414,76.769,694.087,232.847,256.807,561.334,169.129,165.517,234.531,66,112,430,313,836,497,111.727,102.756 +19.0152,239,216.505,286.613,149.216,92,66,585,439,141,101,87,126,395.142,196.556,300.839,147.733,145.67,124.63,211.616,285.581,347.355,488.961,380.022,318.544,420.06,88,206.766,192.934,206.13,71.013,91.892,61.903,476.291,371.266,507.743,267.67,211.278,169.137,467.979,486.149,412.251,526.944,92.41,79.873,75.048,702.912,237.953,257.896,576.821,169.653,171.437,233.256,66,110,418,305,821,492,111.755,106.591 +19.182,238.735,214.93,291.226,147.985,88,63,574,429,137,98,86,124,393.136,198.517,306.226,150.977,144.366,123.421,205.522,278.893,341.722,478.586,371.045,313.529,421.085,85,209.411,197.462,208.407,73.361,93.096,61.181,480.907,382.648,521.526,265.428,209.354,172.949,465.83,480.606,408.84,525.67,87.817,79.377,73.314,722.614,238.194,268.348,591.559,172.613,172.783,241.024,64,106,414,294,808,477,116.9,104.171 +19.3488,242.432,218.869,291.088,146.951,85,62,560,421,136,96,83,122,397.155,199.176,310.902,151.201,148.939,124.743,203.195,271.61,334.111,475.232,360.917,312.151,415.23,83,204.528,200.699,208.445,72.258,92.033,61.974,483.197,388.017,520.868,267.599,215.19,174.856,472.631,477.538,402.273,517.328,88.94,80.991,75.375,729.149,245.859,271.87,593.044,175.983,176.117,243.963,62,104,405,290,782,463,115.223,107.157 +19.5156,245.331,218.665,293.498,145.918,84,62,556,414,134,94,82,120,405.347,199.453,309.632,151.814,146.073,126.029,199.585,263.988,327.98,465.764,359.447,307.85,400.888,81.5,214.609,206.196,210.751,70.943,93.096,62.272,488.793,387.683,530.356,267.859,215.965,173.629,466.48,471.981,402.089,509.383,91.144,79.731,73.655,746.22,246.227,273.256,600.965,177.371,179.74,247.702,60,103,393,278,764,451,117.085,108.742 +19.6824,244.007,217.3,294.537,145.847,84,59,538,406,130,93,81,119,403.561,206.028,319.212,154.33,144.902,126.598,198.543,260.92,320.44,462.579,351.315,298.078,396.281,79.5,220.261,209.846,217.958,71.424,91.75,60.742,487.648,393.947,533.122,270.286,213.177,177.815,462.733,472.362,391.021,505.559,90.746,79.094,75.361,758.667,250.81,285.094,615.999,183.504,184.335,253.849,57,102,381,272,749,442,119.7,110.765 +19.8492,244.574,222.71,292.493,141.05,81,59,530,402,128,89,82,116,417.948,205.567,319.045,151.332,146.229,123.634,196.034,253.44,321.337,458.333,345.487,294.297,396.688,79,219.644,211.745,216.038,71.211,91.736,62.059,493.053,401.74,535.251,270.376,213.445,175.812,462.393,474.936,392.875,501.905,90.462,78.428,74.124,773.588,257.471,288.743,621.827,186.024,188.69,255.123,58,100,371,264,738,429,117.924,110.171 +20.016,248.005,219.119,296.826,142.918,80,59,520,400,124,90,82,112,416.617,211.848,327.895,153.947,147.049,127.49,192.697,251.149,309.572,451.71,343.681,288.064,388.987,76,227.204,212.466,217.897,70.476,91.552,59.665,500.079,400.63,540.269,271.907,216.962,179.527,461.616,474.172,385.219,492.09,88.457,78.088,71.024,780.533,259.749,295.659,640.355,189.494,190.387,260.222,56,96,364,259,716,417,120.98,110.199 +20.1828,252.802,222.592,300.763,139.974,81,59,514,386,123,86,78,112,427.033,210.952,333.476,152.225,146.727,126.837,187.995,246.949,304.01,445.723,337.411,282.924,381.115,74.5,228.406,216.441,226.27,71.056,88.818,60.062,513.317,404.248,538.866,272.466,216.687,181.95,459.466,476.873,377.562,491.056,87.831,75.781,73.513,802.908,265.491,301.232,637.37,192.058,194.629,263.437,54,95,356,249,705,406,123.055,114.543 +20.3496,253.543,225.436,302.236,137.936,78,56,502,383,120,88,76,111,430.112,213.933,337.422,153.126,146.196,129.457,185.726,244.772,302.332,449.006,327.919,285.504,374.017,74,228.929,219.353,227.869,69.302,87.486,57.668,510.534,417.438,557.887,277.394,220.335,182.741,463.044,473.805,377.562,482.616,92.794,76.871,72.887,809.117,267.895,305.928,658.006,197.17,201.714,269.328,53,95,344,242,689,392,124.346,115.831 +20.5164,250.309,226.587,303.47,137.809,77,56,497,372,117,86,77,109,436.288,220.692,341.606,157.64,147.608,128.765,183.734,240.19,295.56,438.477,330.679,278.152,372.304,71.5,235.141,226.856,231.495,70.787,88.945,59.778,523.559,424.587,560.075,276.135,221.26,182.347,463.765,477.594,370.443,477.234,88.229,77.791,70.64,827.405,277.202,312.024,675.855,203.133,202.506,274.186,51,92,342,239,674,383,127.191,119.314 +20.6832,252.088,230.322,302.713,138.488,76,55,488,370,115,82,77,105,443.81,221.461,340.566,157.331,151.911,130.647,184.773,239.426,294.806,435.193,324.52,275.448,367.758,71.5,239.474,226.345,237.788,67.591,89.696,59.042,526.908,424.412,566.174,281.005,222.419,188.106,457.812,470.199,363.762,478.381,87.419,77.154,71.494,845.049,278.002,314.173,677.329,206.503,208.685,280.12,53,90,332,233,665,374,128.114,120.599 +20.85,256.538,232.133,305.735,139.323,75,53,475,363,115,81,77,106,446.94,223.253,347.626,159.128,153.296,132.437,179.147,236.669,292.559,427.621,314.895,272.543,363.096,70,242.701,230.461,239.183,69.642,87.345,60.033,536.696,434.585,574.334,282.562,225.195,191.674,458.533,469.605,362.333,467.688,88.94,76.998,71.067,861.222,287.838,329.519,690.763,212.976,212.277,284.015,50,90,324,228,649,369,131.639,121.562 +21.0168,258.192,235.252,305.403,137.327,74,54,469,355,115,80,77,105,452.54,226.588,354.157,158.76,153.659,133.464,178.315,228.27,287.509,429.999,312.127,266.255,360.705,68.5,247.478,238.496,244.807,68.242,87.614,59.141,540.919,440.796,583.075,287.686,228.33,191.787,451.35,470.807,350.827,466.994,90.035,78.442,71.934,877.954,290.949,333.126,698.853,213.131,218.06,291.238,49,88,319,220,629,358,132.193,125.156 +21.1836,262.752,239.388,312.298,134.836,73,52,463,357,111,79,75,104,457.27,230.352,357.36,161.821,155.102,133.585,177.229,229.344,282.274,420.29,309.888,259.216,359.377,67,254.105,244.05,248.122,70.292,88.534,58.9,552.316,452.226,587.794,288.363,228.338,198.01,451.661,471.288,352.001,465.026,85.613,75.851,71.579,887.261,298.672,338.034,716.533,222.167,222.557,291.847,49,85,315,216,621,350,134.595,125.481 +21.3504,267.195,241.065,311.142,132.19,73,53,458,344,108,78,74,103,464.787,236.278,361.552,166.178,157.227,137.71,174.033,230.56,278.561,420.997,304.848,260.71,348.78,67.5,251.602,241.717,255.124,66.955,83.973,57.384,563.465,455.137,602.92,288.639,233.759,198.143,449.497,465.024,349.199,456.302,88.585,77.72,71.835,901.489,304.216,347.623,725.188,225.453,231.069,298.673,48,87,305,211,603,342,133.032,127.122 +21.5172,270.858,243.908,317.867,133.817,73,52,446,342,108,75,74,101,476.535,235.716,366.983,163.82,155.855,137.851,173.522,224.381,274.052,417.006,303.778,252.532,349.009,66.5,257.906,247.509,255.787,69.161,87.09,55.203,571.641,466.603,606.297,295.985,238.162,202.22,451.802,461.927,344.189,454.701,86.921,76.743,72.93,929.211,307.597,355.105,743.321,228.753,231.041,304.919,49,84,301,207,592,332,135.667,128.085 +21.684,272.741,246.878,321.462,131.482,68,52,446,336,106,75,73,100,478.503,240.239,375.866,166.107,161.933,139.905,175.143,223.9,269.556,412.01,293.291,252.083,340.254,65,265.122,251.152,258.749,66.856,86.183,57.88,574.855,474.475,614.732,295.917,238.125,204.768,450.911,453.23,340.948,450.509,88.045,76.772,70.911,947.287,312.448,360.522,755.781,235.976,240.133,318.43,46,84,294,204,581,331,140.067,130.793 +21.8508,278.672,247.627,324.729,131.553,71,51,432,335,104,74,73,99,485.394,243.126,382.19,171.347,159.396,143.252,172.173,218.428,269.073,412.392,291.869,251.583,338.232,64,264.74,256.38,267.388,64.565,86.055,57.002,588.129,483.004,630.731,301.573,245.098,211.859,450.614,454.899,335.98,447.79,86.822,76.163,68.977,954.698,323.409,368.711,774.55,243,246.553,319.69,46,82,290,198,574,320,141.076,133.688 +22.0176,280.629,251.084,329.162,130.322,71,50,429,328,103,74,72,100,496.828,246.132,385.799,172.817,165.558,143.755,169.595,223.151,263.937,407.184,289.751,245.478,332.564,64.5,270.376,259.277,274.267,66.814,87.245,57.838,597.885,491.362,635.446,306.536,248.841,211.987,447.8,461.008,332.895,452.733,86.637,75.497,69.361,972.505,325.898,373.308,776.742,250.62,248.589,331.587,46,83,287,194,563,314,141.105,133.886 +22.1844,286.147,256.384,332.04,132.968,70,50,421,329,102,73,73,99,494.436,254.208,390.806,172.693,167.913,145.86,171.676,213.719,262.387,403.702,286.268,244.983,337.482,63.5,273.448,266.721,272.444,68.44,84.596,56.549,615.434,500.444,649.75,310.303,253.394,219.329,450.105,458.533,327.177,454.46,87.646,75.299,68.749,998.614,330.283,381.328,789.174,251.512,254.005,332.975,45,82,280,192,548,304,145.042,137.622 +22.3512,287.85,257.46,341.437,128.51,68,50,419,323,102,72,72,100,493.982,256.165,398.753,176.116,167.022,147.69,172.198,216.307,255.046,402.811,284.964,242.055,331.006,61.5,281.509,271.601,280.674,67.676,86.82,56.96,627.222,506.596,651.947,311.341,256,221.118,460.371,457.671,326.823,454.73,84.447,75.441,68.707,1005.87,339.929,391.483,803.403,258.692,262.207,341.515,44,79,274,187,546,303,147.444,137.013 +22.518,290.97,261.207,341.741,128.991,67,50,412,318,100,72,72,98,506.72,255.703,405.138,180.504,172.15,150.878,171.15,216.533,257.564,396.923,281.544,239.587,327.511,62.5,283.361,271.557,283.163,67.832,84.554,57.427,632.265,517.668,672.706,321.579,257.301,222.83,465.434,453.98,323.44,449.093,87.817,73.43,71.565,1023.691,346.152,398.512,817.221,267.161,265.516,348.78,45,80,267,183,528,297,146.492,140.876 +22.6848,296.125,264.893,345.581,128.552,67,48,404,314,98,71,72,99,505.961,261.182,408.433,178.933,172.765,152.617,172.155,214.186,251.106,397.433,279.2,240.018,326.856,61.5,286.642,277.697,283.842,67.422,85.744,58.291,648.48,529.468,680.717,324.576,261.57,228.083,455.083,461.121,319.704,449.886,87.206,73.288,67.811,1044.864,348.401,404.919,830.036,268.578,272.034,358.24,45,78,273,183,528,286,150.869,142.843 +22.8516,300.178,266.842,353.62,128.284,66,49,405,311,98,71,73,98,516.302,265.79,415.02,182.687,176.402,153.982,171.122,212.305,249.114,393.993,276.537,236.273,322.334,61,292.609,281.035,290.191,70.391,85.574,56.166,667.716,544.048,695.542,326.001,269.73,236.693,454.249,458.024,311.608,441.969,85.229,74.506,69.318,1062.685,355.897,407.522,840.643,275.022,282.682,360.067,44,78,268,176,521,281,153.442,144.484 +23.0184,305.238,271.378,355.045,128.312,65,47,396,305,95,71,70,100,519.228,265.315,418.684,189.791,179.347,162.087,169.879,214.483,248.688,389.691,274.837,233.356,317.183,61.5,295.875,284.641,294.928,67.167,86.027,57.611,669.939,546.308,706.43,332.964,272.74,241.517,445.623,460.852,312.458,438.174,86.907,75.922,70.285,1080.279,364.016,417.592,853.981,277.769,286.288,364.628,45,78,263,179,516,277,154.181,145.998 +23.1852,306.758,277.838,365.913,129.855,65,49,394,302,96,67,71,100,522.325,268.997,427.024,189.817,183.327,163.763,172.215,211.612,248.474,389.238,268.942,232.506,318.629,62,298.421,291.911,296.724,69.359,84.738,56.775,682.644,558.51,715.099,338.77,274.133,245.581,444.492,466.494,308.523,434.605,84.888,74.195,67.555,1100.151,370.706,420.732,864.631,282.669,293.754,376.836,44,80,254,174,500,273,154.479,149.182 +23.352,313.747,277.133,365.885,129.6,65,48,393,296,97,68,71,98,525.92,270.216,433.117,194.25,189.156,165.952,171.216,217.749,244.178,390.979,267.459,234.7,316.73,60.5,303.044,297.625,296.384,70.547,86.112,57.739,706.527,565.924,729.672,342.446,279.275,254.314,444.393,462.846,305.395,438.858,83.665,73.912,69.745,1115.398,376.391,427.181,876.893,292.902,296.738,379.316,43,78,253,170,500,268,157.208,148.927 +23.5188,318.35,282.849,375.758,129.189,65,47,388,302,96,66,70,99,535.056,276.423,433.07,197.23,188.417,166.442,173.025,210.75,233.523,389.266,263.808,232.902,318.077,62,307.88,298.813,305.208,70.193,86.084,57.668,711.689,579.155,743.465,348.837,287.751,257.545,444.859,458.066,301.008,434.307,84.973,73.529,68.934,1130.631,376.731,433.843,886.653,295.874,307.194,389.645,46,78,249,172,492,263,160.889,153.753 +23.6856,322.728,286.88,376.696,126.288,66,48,385,297,95,67,73,99,543.21,279.337,440.804,198.935,194.743,173.37,171.231,212.39,231.105,389.323,265.391,229.255,310.881,59.5,312.561,304.338,309.28,68.511,86.367,58.121,724.002,588.41,763.231,356.434,293.818,262.482,452.453,468.587,296.903,435.214,86.48,76.998,69.873,1152.37,384.736,448.057,898.929,300.246,306.953,396.409,43,76,250,169,487,262,159.724,151.842 +23.8524,324.675,293.487,389.599,127.448,67,47,382,294,94,67,71,99,543.551,279.541,446.308,205.197,197.901,177.13,174.247,210.537,229.597,383.945,262.082,227.251,311.939,60,317.397,307.227,314.823,67.323,86.183,57.427,746.057,597.991,770.949,364.393,298.481,266.943,446.613,468.643,297.201,429.209,84.646,74.591,70.015,1174.618,394.326,451.353,914.233,302.638,315.91,405.252,44,76,245,166,479,259,161.699,156.866 +24.0192,331.69,297.038,392.479,124.972,66,47,380,291,93,69,73,98,547.811,286.103,454.357,206.721,200.742,177.715,174.161,215.996,229.185,382.091,256.313,229.976,313.062,61.5,321.682,314.261,315.997,68.468,85.715,56.35,755.657,602.393,782.787,369.882,301.558,275.138,451.392,472.758,299.026,427.977,86.267,75.568,69.46,1182.595,394.227,459.188,930.13,312.146,320.863,409.865,44,79,248,163,477,250,166.83,158.677 +24.186,336.207,297.504,396.387,126.373,65,45,375,289,94,66,70,102,554.775,286.528,461.826,213.446,206.419,182.687,175.312,212.701,226.453,387.158,257.924,231.514,318.162,61,323.875,318.331,322.716,69.345,85.517,56.846,769.294,616.044,795.881,374.076,310.117,281.77,446.853,476.619,291.483,433.103,86.153,73.912,66.105,1200.628,402.501,462.243,931.361,316.448,324.428,417.195,45,77,248,163,476,254,167.583,160.063 +24.3528,337.941,307.249,406.16,124.476,65,48,373,290,96,68,71,103,552.957,288.693,454.601,212.115,208.305,189.408,176.067,213.21,225.956,381.553,262.771,227.982,311.037,62.5,326.009,320.821,324.34,69.515,84.993,58.419,787.695,626.963,816.511,382.122,311.565,289.563,445.679,469.506,286.84,426.433,83.58,76.05,69.147,1222.565,404.495,467.576,938.475,318.924,325.362,422.402,45,80,244,162,476,250,167.868,160.969 +24.5196,349.968,307.195,411.183,126.458,64,48,369,286,94,65,73,101,559.224,291.469,466.774,218.946,212.305,193.842,180.766,210.495,225.913,384.567,257.203,228.469,311.939,62,330.039,324.125,328.313,68.044,85.276,57.115,800.209,630.117,826.738,388.821,321.202,299.914,448.833,472.419,290.704,420.683,84.49,74.591,68.308,1238.321,412.613,471.847,946.82,324.018,336.201,431.939,45,79,241,160,471,248,169.843,162.54 +24.6864,347.303,312.297,415.209,125.609,64,47,375,282,95,67,71,105,559.196,297.146,471.118,221.514,212.811,193.556,177.518,214.483,227.606,382.345,261.865,227.897,310.881,60,326.758,329.83,328.158,71.098,86.225,58.107,820.464,644.869,844.553,396.452,329.412,304.865,456.525,476.392,285.807,422.085,86.239,72.906,68.963,1245.138,414.961,478.834,958.149,331.857,343.092,439.283,44,76,243,161,464,247,169.687,163.218 +24.8532,354.288,315.015,416.215,125.467,66,48,373,285,92,68,73,106,560.314,298.908,473.415,227.012,222.301,202.645,179.076,212.616,226.852,383.591,257.698,232.392,313.537,61,332.952,338.034,336.161,71.848,86.155,57.682,833.193,659.926,847.842,399.94,333.234,310.502,458.59,480.974,284.576,423.459,87.718,75.37,66.773,1257.995,417.45,484.138,975.616,335.211,344.663,449.81,44,78,246,161,470,244,174.064,163.275 +25.02,358.025,317.708,428.362,129.345,66,50,369,282,93,68,72,107,565.71,303.612,473.827,233.377,224.824,204.145,183.977,215.642,227.919,384.086,256.2,231.829,312.453,63,338.622,337.765,341.21,72.484,86.027,59.254,845.444,660.599,869.835,409.019,340.085,314.661,453.824,480.408,283.882,422.666,85.656,73.274,67.91,1279.507,419.94,489.795,984.131,342.682,351.157,454.607,46,80,246,161,462,240,176.736,166.035 +25.1868,366.936,323.902,433.251,126.203,65,47,367,286,95,67,73,107,564.849,302.772,476.964,236.155,229.567,203.609,186.532,215.331,229.996,387.582,257.245,231.217,313.452,62.5,343.394,340.361,340.608,72.032,87.727,58.574,854.035,668.394,883.466,417.416,343.243,324.663,454.857,483.632,278.844,422.453,84.063,73.713,66.915,1292.802,422.924,492.044,988.841,347.026,352.105,455.272,45,80,240,161,463,240,176.04,167.761 +25.3536,370.598,327.592,439.479,128.977,64,47,365,286,94,67,73,108,569.098,303.492,486.382,243.018,234.021,210.996,186.324,217.028,231.034,385.176,258.437,236.454,312.637,64,342.892,344.78,343.613,71.579,88.35,58.815,869.497,679.233,893.133,421.713,353.225,326.071,458.42,483.887,278.434,425.852,84.092,75.129,68.223,1310.92,431.127,494.35,999.25,346.743,360.992,467.017,46,82,243,162,462,240,181.029,171.001 +25.5204,374.451,333.564,449.864,129.076,64,49,371,284,94,67,72,112,568.897,303.96,483.977,246.899,238.596,218.337,192.342,217.565,236.553,385.035,259.084,234.701,313.933,63.5,347.512,346.413,346.452,70.716,88.223,59.014,883.039,693.163,904.02,432.218,360.386,334.855,457.161,484.028,279.821,424.62,84.575,74.067,67.242,1313.961,434.663,501.535,1005.672,348.922,359.591,470.115,45,82,241,164,461,242,181.782,170.336 +25.6872,377.832,340.411,452.828,128.835,62,48,368,283,93,66,74,114,573.376,308.56,493.008,249.303,245.536,221.302,189.937,217.495,237.35,390.667,253.48,236.426,313.742,63.5,352.57,347.349,350.974,70.716,88.534,58.461,898.52,698.039,920.25,434.707,364.736,340.341,457.769,483.675,279.778,424.521,83.054,73.727,68.792,1329.293,445.893,508.394,1008.84,355.105,365.788,476.851,45,82,242,162,461,242,183.26,172.784 +25.854,380.844,345.78,470.458,128.68,63,49,365,283,95,67,73,115,581.927,314.884,497.547,258.041,253.939,232.937,192.029,224.141,234.633,389.62,258.674,240.876,314.386,64,353.323,350.86,350.141,70.999,90.22,58.39,909.146,705.74,929.424,444.745,370.139,350.405,461.149,488.723,280.372,425.994,85.585,72.807,68.891,1336.761,443.772,505.707,1010.608,357.893,369.213,481.69,47,81,246,165,464,241,183.345,174.949 +26.0208,384.855,348.008,471.393,126.882,64,48,364,280,95,70,74,116,578.603,312.671,502.04,256.395,253.852,230.9,194.774,223.547,239.527,391.941,260.703,237.84,318.812,65,356.439,358.585,350.585,71.876,91.141,59.438,921.513,715.271,942.307,447.97,375.608,354.836,465.518,492.216,269.545,424.663,85.187,73.742,65.251,1349.094,445.427,509.738,1019.476,358.445,374.448,481.704,47,83,246,165,460,241,184.383,170.548 +26.1876,391.126,350.62,472.514,130.548,66,49,365,285,96,68,74,118,583.093,316.836,503.328,267.084,262.826,237.076,197.27,222.967,237.948,392.097,257.754,240.678,319.463,66.5,362.333,358.558,353.224,73.191,88.591,59.353,934.035,721.971,957.879,458.381,385.116,361.22,464.585,497.476,275.207,422.991,84.902,72.736,68.394,1356.958,447.449,512.949,1024.03,359.945,378.679,487.421,48,85,243,165,465,240,183.715,172.218 +26.3544,390.05,357.311,485.147,130.463,63,49,365,286,96,67,76,121,583.524,317.256,503.905,270.41,264.557,242.083,199.525,227.025,237.137,399.089,257.842,245.138,322.367,65.5,359.196,358.005,360.936,73.078,87.557,59.07,949.333,723.196,974.752,467.972,390.817,367.237,472.179,488.115,279,429.478,86.566,73.812,67.427,1367.933,450.434,517.404,1028.203,364.982,378.014,496.689,49,82,247,166,466,242,184.497,174.312 +26.5212,402.515,358.515,482.6,129.288,64,49,369,288,98,71,75,124,589.678,315.753,504.895,274.923,273.931,245.383,201.687,231.536,241.874,399.329,261.432,245.167,324.668,68,364.751,364.673,359.325,74.209,88.279,60.473,962.945,741.305,985.859,478.686,396.356,374.403,472.801,502.439,272.815,431.716,84.959,76.29,67.1,1378.584,451.735,520.53,1025.345,371.151,383.603,502.165,50,86,250,172,471,243,185.861,170.464 +26.688,399.423,363.753,499.51,130.138,68,50,373,287,97,70,74,125,590.315,321.12,513.325,280.729,279.896,251.539,205.334,233.275,247.208,398.353,263.21,249.593,329.675,69.5,365.095,361.642,357.66,74.605,88.067,60.728,984.056,750.369,990.454,482.728,396.615,386.093,473.282,503.118,275.532,438.499,83.85,75.639,67.74,1385.868,453.446,517.022,1042.813,372.312,384.098,503.934,52,87,253,171,465,245,187.439,176.18 +26.8548,405.606,366.342,494.268,130.024,66,49,371,294,98,69,75,127,586.449,318.72,511.414,287.978,282.946,262.265,207.918,238.521,243.709,397.362,265.208,251.328,328.458,68.5,366.582,367.027,363.353,74.987,90.149,61.209,992.142,748.805,997.868,489.151,406.803,391.285,481.398,507.304,271.102,433.727,85.826,73.841,67.996,1388.187,459.033,528.549,1042.714,377.49,386.872,501.5,50,87,250,171,470,241,186.415,174.369 +27.0216,411.875,370.317,502.753,134.383,68,48,376,291,100,71,77,131,591.327,323.489,515.221,291.389,293.316,263.473,211.417,237.857,246.682,404.566,267.431,255.406,326.332,71,368.751,370.444,370.065,73.827,92.246,60.175,1005.997,767.919,1009.16,497.342,416.375,393.114,479.744,512.012,271.555,436.092,84.319,74.11,66.46,1397.494,461.282,526.442,1050.96,377.501,386.079,512.159,53,89,254,176,472,248,185.818,176.534 +27.1884,412.186,374.097,512.415,134.001,69,47,374,294,100,70,77,134,594.179,321.35,519.851,296.171,296.326,265.539,213.864,240.388,248.033,402.315,267.429,259.344,331.952,70,365.317,374.434,370.475,75.128,91.665,61.577,1018.879,766.973,1033.745,504.607,414.745,395.85,482.487,506.54,271.47,440.992,84.888,75.143,67.484,1402.076,460.674,529.27,1046.858,374.57,390.084,510.048,50,90,256,175,480,247,190.892,179.392 +27.3552,419.947,374.109,518.072,135.926,69,52,379,300,98,71,77,137,597.163,325.243,520.102,303.577,304.66,275.591,216.587,247.402,253.354,403.688,265.221,261.417,336.345,71.5,370.264,373.167,369.287,76.514,92.161,61.988,1025.934,773.187,1037.813,516.547,429.317,402.089,486.814,513.172,273.678,441.403,86.338,75.455,68.38,1394.792,464.422,528.86,1054.411,376.807,390.262,515.345,53,90,259,182,481,249,189.045,178.515 +27.522,421.197,379.869,521.696,136.025,71,52,383,300,100,73,79,139,594.838,319.617,525.319,305.102,308.028,282.578,220.379,246.525,256.981,404.622,271.276,266.652,342.022,73,372.106,375.745,371.596,78.225,92.841,61.733,1045.26,774.449,1040.804,513.266,431.336,406.013,485.867,512.521,273.508,449.518,85.841,72.623,68.294,1411.326,465.058,526.611,1053.477,383.492,396.394,523.347,54,92,268,184,476,248,191.29,178.727 +27.6888,421.441,385.044,527.867,137.285,70,51,389,302,101,74,79,144,600.919,323.587,525.82,312.411,319.8,288.529,224.114,251.87,258.29,408.09,273.209,266.863,342.662,74.5,373.394,371.69,371.822,77.589,90.73,62.286,1043.738,775.685,1053.137,525.745,437.099,411.461,486.998,512.493,274.513,455.622,87.732,73.869,68.536,1414.494,464.818,531.604,1048.994,383.733,395.672,522.766,56,93,266,189,487,252,189.983,176.214 +27.8556,424.497,388.343,534.679,136.138,72,50,390,305,102,73,80,147,603.859,325.428,527.751,317.108,323.001,290.445,226.112,254.316,260.253,411.444,278.461,269.682,343.578,76,375.42,374.629,372.587,76.684,93.606,62.158,1057.452,790.361,1070.357,525.765,441.783,417.041,492.159,518.998,275.037,454.871,86.936,76.135,68.465,1418.837,464.195,524.094,1060.351,379.272,395.644,528.884,56,96,268,192,488,258,190.523,179.831 +28.0224,427.015,390.377,541.206,139.974,74,52,390,305,101,73,82,149,593.817,326.669,527.737,322.957,328.884,297.674,231.614,260.34,262.116,417.204,279.355,275.49,346.188,76,376.443,376.532,371.08,79.229,95.617,64.921,1065.608,795.021,1071.76,540.387,444.98,421.681,487.38,528.034,274.81,455.055,89.339,74.166,68.038,1412.712,466.444,526.017,1058.951,387.288,400.119,526.179,56,96,273,197,497,258,187.154,178.628 +28.1892,432.697,390.505,536.446,138.997,72,53,397,315,103,76,84,150,597.762,332.012,531.387,327.597,336.552,306.221,237.236,258.46,266.74,422.017,281.714,279.015,351.654,76.5,373.238,376.787,372.05,77.447,93.407,65.246,1074.024,800.086,1076.973,545.97,448.536,425.178,489.218,529.872,276.24,458.483,86.353,75.016,69.261,1417.96,467.18,526.074,1054.213,380.376,398.476,529.408,57,96,276,199,507,262,191.035,180.142 +28.356,435.098,392.514,551.133,144.022,74,54,400,313,104,76,83,158,599.742,324.035,528.538,337.778,344.777,308.065,237.821,265.883,270.893,424.295,287.145,282.902,358.311,77.5,378.498,378.091,370.961,78.197,96.694,64.113,1085.617,802.739,1083.414,551.234,454.279,427.726,494.492,524.555,277.768,468.326,85.613,74.237,69.787,1410.407,465.935,524.532,1053.689,384.441,393.349,529.961,58,97,281,204,511,263,192.57,181.699 +28.5228,430.24,397.201,558.338,140.752,76,52,405,319,106,77,85,160,597.226,327.871,535.98,342.438,347.998,315.563,245.046,267.425,271.761,428.074,289.648,284.638,367.339,79.5,376.985,378.103,372.771,78.126,94.654,63.575,1095.353,804.918,1093.23,552.085,455.769,432.123,498.89,531.795,273.664,468.113,85.329,75.781,67.853,1408.087,465.369,523.726,1050.182,380.306,395.842,526.477,58,101,288,207,517,269,190.509,181.925 +28.6896,434.762,395.686,563.119,143.272,76,53,407,324,106,78,84,165,608.235,329.259,531.386,350.675,352.638,315.355,248.786,275.683,273.127,427.805,289.765,294.74,366.483,81,372.149,381.384,370.947,77.603,97.714,65.43,1094.819,813.58,1104.513,560.645,461.919,438.598,494.577,529.193,273.041,471.073,87.575,77.579,69.247,1407.635,463.432,519.723,1050.493,381.835,397.556,532.453,61,101,289,211,516,271,190.523,178.331 +28.8564,439.128,397.985,564.369,140.767,79,55,413,328,110,79,85,167,599.173,329.932,533.033,350.206,360.582,327.073,257.65,279.387,279.045,442.34,296.791,298.291,372.884,81,374.228,378.966,372.319,80.134,96.368,65.473,1106.147,807.817,1110.445,568.323,466.018,438.913,503.57,533.916,277.471,485.349,83.878,75.894,68.607,1400.676,467.307,521.251,1046.321,379.782,394.482,526.165,60,102,290,219,521,272,190.395,179.703 +29.0232,441.861,399.496,565.911,145.465,77,56,419,331,106,78,86,173,597.123,329.021,531.169,357.554,367.835,335.046,258.671,282.074,281.022,455.842,298.206,302.349,371.836,84,373.167,378.244,375.43,79.088,96.878,66.436,1110.718,814.198,1115.857,571.89,470.254,442.279,507.77,539.544,277.768,482.771,89.083,75.214,68.849,1395.33,460.872,518.648,1046.448,381.75,394.242,530.244,63,105,300,226,526,275,188.149,182.604 +29.19,439.915,397.937,565.585,148.565,81,57,420,332,108,82,90,175,600.218,326.912,532.94,362.836,374.204,339.462,261.932,288.692,285.332,468.311,304.853,305.004,376.901,85,372.22,381.087,371.385,79.894,100.561,68.207,1115.506,822.819,1118.18,568.92,473.309,441.706,514.459,533.873,282.906,492.6,88.485,74.166,68.323,1397.027,462.88,515.905,1034.553,372.488,393.647,535.187,63,107,302,228,536,279,188.263,177.694 +29.3568,441.17,398.102,574.454,151.608,79,58,428,338,112,80,88,182,601,333.267,531.329,366.19,381.013,341.671,266.043,288.466,291.805,474.241,307.949,315.121,388.492,86,370.749,378.711,370.565,82.382,98.082,66.309,1127.601,822.501,1125.148,585.125,476.817,444.614,519.054,541.934,282.821,496.254,88.016,75.455,67.029,1379.673,460.122,511.803,1030.847,373.338,390.743,532.765,63,109,311,235,542,288,187.808,178.216 +29.5236,447.673,400.753,575.972,147.249,81,59,433,343,113,83,90,184,599.711,323.739,534.615,376.345,381.541,353.778,273.354,297.699,295.375,478.431,309.888,318.373,391.242,87,370.551,375.331,370.014,79.823,99.598,66.833,1119.894,823.25,1128.252,585.94,478.32,455.455,521.656,549.244,281.066,501.65,86.907,73.926,69.176,1377.792,456.699,512.015,1032.078,375.349,389.568,530.442,64,110,319,240,551,286,190.082,176.124 +29.6904,447.032,406.144,580.551,150.787,83,57,432,347,114,83,91,189,593.322,331.592,530.371,380.884,390.268,354.256,275.758,301.786,301.663,478.983,315.3,316.804,403.688,88.5,368.501,380.32,370.82,82.524,98.946,67.654,1129.281,823.455,1129.619,596.739,480.715,451.565,526.45,551.563,284.505,511.861,86.879,76.205,68.294,1368.414,457.081,506.994,1019.476,372.644,390.432,535.371,66,111,325,248,559,289,184.298,176.76 +29.8572,442.812,402.012,578.682,151.877,83,58,441,351,115,86,93,193,592.323,326.588,534.865,384.439,393.556,355.338,283.042,303.469,302.872,477.949,316.507,327.55,397.678,89.5,369.194,373.578,364.64,82.283,101.028,66.465,1135.513,819.737,1136.439,585.841,485.823,451.841,523.296,551.973,283.642,521.69,89.566,75.639,68.038,1373.365,456.006,503.402,1017.1,373.55,389.568,530.003,67,112,328,254,563,293,188.888,181.401 +30.024,445.142,399.842,581.168,156.377,86,60,450,360,114,86,93,200,588.405,328.085,527.329,388.868,399.451,363.769,287.618,313.07,306.087,479.988,322.608,329.251,410.401,90,368.556,377.99,368.273,82.184,99.371,67.031,1133.736,821.722,1143.37,605.581,485.747,450.758,520.496,556.915,285.269,528.559,88.457,76.899,68.636,1359.235,454.224,500.488,1009.094,371.312,385.39,523.177,68,112,332,264,574,302,185.378,174.992 +30.1908,446.293,400.62,581.58,155.599,87,62,458,360,117,87,95,200,593.396,327.136,533.985,389.896,405.983,368.067,292.686,315.936,310.027,479.436,326.874,336.416,410.76,92.5,367.108,372.63,365.751,83.655,101.921,68.887,1137.785,821.867,1143.636,600.387,493.991,455.81,526.119,558.414,293.676,541.248,90.192,73.529,71.295,1351.244,451.89,494.335,999.434,370.647,384.639,519.65,70,115,342,270,579,302,186.813,175.982 +30.3576,441.798,404.17,581.679,153.448,86,62,464,368,118,89,96,205,587.276,324.403,530.994,397.701,407.242,373.409,296.366,326.304,316.742,480.157,334.433,345.855,418.035,92.5,370.523,375.048,368.6,82.665,104.046,68.079,1143.152,825.701,1151.128,606.917,488.398,455.302,523.205,558.684,294.865,547.027,89.637,77.919,68.849,1337.426,441.679,497.942,989.802,367.021,383.421,527.256,69,116,350,275,594,311,184.951,177.142 +30.5244,443.508,397.055,589.663,152.047,89,62,467,371,118,92,96,210,588.086,322.881,529.841,397.862,413.278,374.658,302.338,330.156,315.348,477.228,344.37,352.122,423.561,96,365.432,370.248,365.531,84.447,103.422,69.85,1139.876,819.791,1149.535,608.349,490.296,455.739,525.743,562.819,298.913,559.475,89.139,76.885,68.963,1332.065,440.392,489.527,994.498,364.274,379.413,520.614,73,119,355,286,595,315,185.52,175.034 +30.6912,441.164,399.32,585.188,156.236,91,64,473,375,118,90,100,213,585.911,325.524,527.2,405.289,419.012,384.309,308.355,335.172,321.877,476.633,342.279,354.539,426.362,97,361.671,373.767,360.144,85.578,105.717,70.658,1154.363,829.457,1155.067,614.295,490.708,452.598,530.664,563.427,302.197,568.709,88.514,74.563,70.029,1305.97,438.044,485.227,978.912,359.388,380.589,521.647,72,122,364,288,602,319,184.596,175.275 +30.858,439.389,402.614,588.427,158.161,91,62,480,384,121,91,100,220,586.589,321.675,530.42,413.455,425.535,384.595,310.971,335.75,325.448,475.954,346.746,361.512,438.086,98.5,357.924,368.146,362.364,85.79,105.788,69.269,1149.522,828.35,1157.297,615.758,493.311,451.104,532.064,560.839,303.895,570.097,90.078,78.754,70.584,1307.045,436.87,480.644,973.155,354.034,375.065,514,73,124,375,297,613,321,181.611,172.699 +31.0248,440.417,405.691,583.41,158.826,89,64,482,389,122,93,101,222,574.514,321.798,530.792,411.305,425.552,391.968,316.674,344.701,328.748,480.752,350.069,365.218,437.281,99,357.98,369.956,358.814,85.465,104.032,70.346,1142.391,827.895,1161.352,613.741,491.942,453.802,531.668,570.724,310.703,584.826,90.149,75.299,72.503,1298.799,433.942,472.979,976.62,356.385,370.562,512.088,76,122,373,304,625,325,183.516,171.638 +31.1916,440.359,401.115,587.24,163.808,93,66,495,393,123,95,101,226,584.408,318.892,525.059,415.765,433.526,392.759,321.78,351.131,332.034,473.944,357.184,372.856,447.209,100,355.657,366.581,352.729,84.928,105.986,70.884,1143.387,822.104,1152.309,619.241,495.647,445.519,527.906,565.435,312.925,590.066,89.395,77.904,69.873,1282.746,430.944,470.079,962.137,352.561,367.843,508.094,74,126,385,308,624,324,180.389,174.242 +31.3584,441.831,398.144,580.029,161.218,95,66,498,396,125,96,104,232,578.648,321.621,522.006,420.974,435.389,397.446,330.712,353.85,334.666,481.021,359.529,375.684,458.582,102.5,349.532,359.762,352.132,88.067,105.703,70.119,1154.368,821.865,1162.919,622.825,489.447,456.166,526.308,569.267,315.84,593.72,89.211,78.867,70.811,1271.36,428.327,462.201,949.861,347.576,363.197,503.519,76,129,391,320,635,333,179.835,171.695 +31.5252,437.67,397.522,578.675,163.426,95,66,505,402,126,98,108,234,574.968,320.223,524.788,425.659,439.796,398.741,331.892,360.167,341.906,483.653,365.868,381.41,457.618,101,349.694,359.857,348.138,84.815,105.023,72.131,1148.179,819.448,1157.259,616.141,496.27,450.366,525.531,574.061,320.171,610.305,88.045,76.531,72.233,1257.542,426.898,457.647,946.254,345.551,362.872,499.752,75,127,402,328,641,338,175.642,169.77 +31.692,429.329,395.699,580.391,169.299,96,65,511,404,128,97,108,240,572.492,316.732,524.439,426.438,444.019,402.019,339.922,364.174,347.71,486.215,371.426,388.215,466.159,102.5,352.457,353.623,348.374,86.37,106.355,75.7,1148.86,811.224,1155.362,620.876,488.115,449.091,529.646,574.344,323.044,616.621,88.258,77.805,71.735,1247.274,419.204,460.702,938.079,342.237,355.295,498.152,76,129,405,336,650,346,180.119,170.124 +31.8588,434.544,394.409,572.545,167.898,95,68,522,414,129,102,110,242,570.58,319.889,519.012,429.892,447.202,401.721,342.715,371.95,348.976,490.418,378.4,392.301,468.806,103,343.253,350.563,349.236,85.79,109.485,72.797,1148.074,810.4,1156.304,624.744,490.297,442.548,529.165,574.372,323.794,623.476,89.154,76.658,70.754,1238.349,415.753,446.445,922.804,336.048,352.405,494.923,77,129,415,342,662,351,175.614,168.935 +32.0256,430.652,393.009,580.955,168.591,99,70,526,416,130,102,111,248,572.005,314.245,518.146,434.179,445.057,401.661,343.469,376.708,355.947,490.319,379.527,399.969,474.713,105,345.024,353.936,345.194,89.594,109.074,72.853,1136.314,801.892,1151.369,623.55,488.102,442.414,534.75,577.483,323.2,631.817,89.452,76.984,71.437,1221.844,406.121,448.708,912.564,334.277,349.516,490.051,77,133,419,346,663,356,176.143,167.223 +32.1924,426.532,388.114,577.091,170.828,99,70,537,429,131,98,111,248,567.791,315.07,517.719,435.583,447.998,402.542,357.435,384.172,356.487,499.561,385.061,405.614,481.253,106.5,346.011,350.478,337.949,88.307,110.222,72.853,1138.745,803.171,1153.53,616.669,489.206,443.015,526.365,577.186,325.974,640.159,90.86,76.531,69.816,1211.745,407.083,438.737,911.333,334.802,344.999,483.621,80,133,430,355,678,361,173.226,166.237 +32.3592,427.462,382.512,577.378,171.847,100,71,538,428,134,104,113,256,565.937,313.892,517.625,439.745,448.329,409.507,356.042,393.604,366.403,502.448,389.256,411.157,490.221,107,340.983,349.072,342.467,88.449,112.276,73.887,1143.463,793.811,1156.648,623.886,483.621,439.377,527.185,581.004,331.932,650.314,89.907,80.099,70.285,1200.925,401.242,437.775,901.206,327.395,345.395,483.876,78,136,439,360,678,367,170.994,162.879 +32.526,422.298,383.46,569.292,173.871,103,71,546,434,139,107,113,256,568.051,311.913,516.352,435.539,455.196,411.825,360.621,395.842,370.414,505.463,398.342,411.775,496.16,108.5,337.228,343.103,337.595,86.073,112.517,72.981,1140.952,793.156,1148.541,618.047,489.263,434.731,532.318,582.008,328.479,657.253,90.547,77.437,71.152,1176.782,396.928,427.648,898.859,320.087,339.702,474.939,80,137,450,369,688,368,169.644,164.266 +32.6928,417.814,378.65,574.013,173.913,102,71,552,438,138,107,114,259,561.692,306.464,510.441,441.624,455.11,415.389,362.43,405.436,370.315,508.478,401.79,418.78,499.724,110.5,332.773,342.208,339.443,87.346,110.845,73.207,1137.715,795.165,1152.829,616.653,482.605,430.025,530.451,576.154,334.593,662.168,92.367,77.31,70.626,1167.376,394.255,421.538,879.736,317.268,336.374,468.368,82,139,451,377,693,371,167.825,162.95 +32.8596,416.9,379.008,562.373,176.418,101,75,561,450,139,110,116,265,565.051,313.787,509.933,444.303,461.851,406.761,369.439,405.656,370.841,507.345,405.046,423.289,507.602,110,333.988,337.701,336.136,86.695,113.126,72.641,1137.089,791.205,1137.259,620.071,479.474,427.174,523.919,588.739,335.754,666.416,90.604,78.258,72.475,1158.098,394,418.822,876.144,311.037,329.93,465.691,81,139,458,384,710,380,165.849,161.917 +33.0264,414.517,376.787,560.341,176.362,104,72,562,458,141,110,116,270,557.823,308.296,505.689,442.661,465.928,407.61,376.337,408.645,378.494,510.884,406.053,430.76,517.894,110.5,327.932,336.221,332.414,91.263,113.395,74.369,1131.125,782.041,1139.888,618.333,477.236,427.868,528.783,581.654,339.433,677.392,88.585,77.933,71.508,1147.151,386.773,416.616,868.577,311.079,329.023,457.491,82,139,465,393,721,378,166.546,158.691 +33.1932,409.157,374.59,552.315,176.461,105,74,574,461,140,112,116,271,554.115,303.945,508.423,449.13,468.768,414.943,378.513,411.902,382.733,511.69,415.909,433.5,522.184,111.5,324.017,331.352,328.062,88.35,113.267,74.171,1131.075,783.417,1141.806,620.821,475.706,418.846,527.539,591.312,341.641,689.062,91.67,78.556,72.29,1135.68,380.663,410.195,863.33,310.102,324.463,458.823,82,141,475,400,721,385,163.661,156.116 +33.36,404.121,365.055,554.93,179.32,106,73,578,466,142,111,119,272,553.886,302.155,500.243,448.95,468.32,417.198,381.599,421.334,389.49,517.224,420.244,437.987,526.42,112,325.27,333.319,324.463,87.742,114.061,73.094,1123.556,777.158,1135.707,615.06,471.499,416.78,527.128,590.096,341.047,694.09,92.851,77.819,72.745,1124.875,376.137,405.641,842.326,303.262,320.058,454.432,83,141,478,405,723,392,160.591,159.271 +33.5268,401.541,360.61,548.391,180.891,105,76,589,471,143,115,116,277,548.585,298.725,494.64,449.725,466.165,412.197,381.997,428.911,392.022,514.549,424.72,444.15,529.185,111,322.749,327.7,320.228,89.933,112.332,74.511,1122.927,769.644,1136.654,618.003,475.494,413.426,523.254,592.429,346.453,699.882,92.524,77.055,71.735,1108.878,374.963,399.375,835.113,302.539,316.801,442.621,81,141,486,409,732,393,160.761,157.573 +33.6936,395.968,356.379,545.297,180.99,108,75,590,477,145,114,121,277,548.499,301.845,501.03,449.007,462.645,408.583,390.428,424.949,398.723,525.759,430.427,448.482,537.254,112,315.9,325.917,319.362,87.925,111.922,75.7,1116.836,770.264,1125.263,608.556,468.801,411.03,518.446,589.785,347.246,703.324,91.77,78.358,71.465,1100.038,370.677,396.164,831.747,293.249,310.428,434.463,83,141,493,410,740,404,157.165,153.767 +33.8604,394.238,357.567,537.616,180.508,109,76,598,488,145,115,120,281,547.638,295.363,492.901,454.571,468.604,409.539,388.725,433.882,399.661,522.093,435.866,444.788,541.901,114.5,315.342,321.256,312.184,89.424,115.69,72.754,1115.459,765.914,1127.08,610.369,467.199,409.312,519.903,586.448,347.67,709.385,92.438,77.239,71.494,1087.479,367.849,388.597,825.283,291.054,308.969,437.607,83,146,507,422,745,403,159.269,151.941 +34.0272,386.868,348.604,536.475,183.721,107,76,605,489,147,115,122,282,540.763,296.775,491.327,445.817,466.323,408.08,389.564,435.624,401.24,527.386,438.641,458.198,546.333,115,315.417,317.524,312.42,88.208,112.531,74.511,1107.516,757.764,1112.575,608.053,463.484,406.322,521.204,581.244,350.204,722.174,93.675,78.428,71.067,1075.57,358.839,389.587,814.18,284.85,304.777,423.912,84,146,509,429,749,407,154.749,150.243 +34.194,386.328,345.398,533.108,181.726,108,76,615,499,150,119,119,285,540.785,297.457,485.008,452.305,463.639,407.57,396.504,443.046,403.972,523.905,442.145,462.278,549.807,114,309.118,314.569,311.255,88.166,116.058,72.726,1105.224,762.867,1109.616,599.422,458.091,398.915,521.006,580.523,355.893,727.301,90.405,81.104,72.247,1053.958,358.811,381.455,806.43,283.746,295.203,425.994,84,144,510,432,754,409,153.527,152.451 +34.3608,381.455,342.406,526.346,185.264,108,78,621,506,150,119,125,283,539.104,289.37,482.611,448.098,468.882,407.924,399.263,444.618,408.083,531.533,449.433,471.253,554.037,115.5,304.614,310.389,306.763,89.255,115.605,76.423,1100.245,747.667,1111.668,604.848,454.713,397.46,515.618,583.096,352.695,729.949,91.13,79.547,72.19,1051.921,350.805,373.987,802.823,275.248,289.708,414.664,83,148,520,439,767,416,155.701,147.116 +34.5276,380.887,337.101,520.72,181.867,107,76,621,506,151,122,123,284,535.881,291.617,481.436,450.452,460.371,407.875,400.657,444.079,414.072,529.679,447.506,466.428,560.938,113.5,307.004,309.358,304.444,90.23,115.421,75.332,1095.004,755.704,1107.188,591.539,453.131,392.314,509.283,582.503,353.501,733.334,94.045,79.207,73.2,1040.182,349.448,371.809,790.645,275.248,283.689,410.599,83,144,523,439,773,416,149.846,148.574 +34.6944,377.876,334.027,520.611,184.146,111,79,632,510,152,123,124,287,531.335,290.54,483.805,442.219,458.013,405.417,401.362,444.803,416.59,527.768,458.511,469.428,567.024,114,302.264,304.157,302.122,89.933,117.673,74.071,1085.102,748.311,1097.867,591.411,444.441,389.689,514.034,582.531,352.709,735.742,93.761,78.612,71.494,1026.307,340.693,369.546,784.408,267.062,285.02,403.872,83,145,523,448,770,421,150.158,143.098 +34.8612,373.059,332.786,505.548,184.33,110,78,638,517,155,121,123,291,533.798,287.123,473.107,443.125,458.551,399.991,403.118,455.31,416.604,532.326,454.634,474.897,567.501,113.5,301.192,303.253,297.035,87.996,114.882,76.168,1067.828,736.221,1095.12,587.846,441.597,377.979,504.108,580.565,363.21,745.033,92.652,80.17,73.584,1007.595,335.983,365.472,776.671,267.487,280.389,399.383,83,144,534,451,772,423,149.618,146.579 +35.028,367.036,330.321,507.366,186.75,110,80,636,519,154,124,126,293,534.17,287.37,478.209,444.569,454.646,398.869,402.819,456.202,418.652,529.523,461.669,479.697,573.737,114.5,296.257,302.264,299.255,90.358,118.282,75.205,1076.128,737.838,1085.348,586.467,439.179,377.77,507.53,575.998,360.182,759.747,94.059,78.612,75.134,1000.509,335.148,359.136,768.072,264.881,279.724,391.721,83,146,533,457,781,426,147.131,143.706 +35.1948,365.02,320.014,500.54,184.231,111,78,649,528,159,124,125,291,525.862,283.498,468.755,445.464,453.347,396.201,403.061,460.734,417.785,534.519,467.236,482.8,571.517,114,295.748,296.706,292.92,90.329,117.588,76.225,1071.032,731.52,1082.245,579.997,431.438,369.604,502.708,583.832,360.705,749.862,95.851,78.046,73.086,989.364,330.269,352.305,758.044,258.069,268.365,392.641,81,147,543,460,788,425,145.909,139.801 +35.3616,358.025,319.478,500.803,186.75,109,79,655,526,155,123,127,291,518.112,283.684,469.173,445.251,447.332,394.763,403.814,457.76,420.573,535.921,472.419,485.637,576.966,113,296.554,294.118,286.656,87.6,118.395,75.87,1058.279,724.559,1075.568,577.522,427.841,369.346,500.233,576.677,369.99,749.125,94.457,79.66,74.067,972.052,327.426,354.186,753.433,256.879,264.683,381.637,82,144,541,463,787,428,144.8,140.777 +35.5284,356.296,315.598,493.387,189.326,111,77,657,534,157,126,125,296,520.968,286.24,469.265,438.98,446.337,391.416,403.772,459.913,431.91,532.793,470.928,481.313,580.866,115.5,286.203,291.487,292.609,89.438,115.364,75.304,1049.628,722.491,1075.7,570.868,422.456,361.886,494.69,577.582,364.456,756.447,94.031,79.094,73.2,972.462,324.809,344.271,750.916,250.28,262.757,379.937,84,147,545,469,787,432,147.003,141.923 +35.6952,356.234,313.42,485.484,183.919,109,78,665,536,162,125,128,288,516.545,282.615,463.227,436.283,443.697,387.6,406.438,462.096,424.897,536.034,477.035,491.62,589.231,115,287.32,289.397,286.387,86.412,120.577,74.766,1053.687,722.057,1059.604,567.195,418.464,355.73,493.333,579.971,362.276,759.62,93.547,79.434,74.352,958.007,320.75,345.586,746.008,248.623,261.213,371.171,84,146,549,469,792,434,143.621,138.74 +35.862,344.32,308.445,479.735,185.632,109,80,668,546,159,126,127,292,518.441,281.87,460.441,437.935,444.572,388.255,401.425,467.108,425.737,536.713,481.719,490.759,591.658,113.5,282.279,286.182,282.407,88.958,117.149,75.814,1037.799,705.784,1051.104,564.568,410.965,346.096,494.195,569.635,366.522,764.832,94.941,79.065,72.645,945.123,313.792,338.897,739.799,240.295,255.775,370.661,80,147,553,472,795,435,137.31,139.659 +36.0288,342.43,304.647,478.627,185.052,112,81,677,547,159,125,126,288,515.307,280.67,452.926,430.556,435.915,383.929,408.138,460.196,423.247,539.756,485.236,492.44,589.698,115.5,284.585,282.661,277.188,89.057,119.401,76.324,1028.968,699.314,1050.122,549.798,412.179,345.582,492.329,568.998,367.386,765.611,92.751,81.218,75.006,947.428,312.207,338.048,731.808,241.612,252.971,361.271,83,148,559,476,801,435,140.431,137.296 +36.1956,341.57,305.155,473.634,186.552,109,82,680,550,165,130,131,288,515.071,276.986,448.476,427.417,435.096,375.551,404.54,464.218,429.122,538.312,484.223,494.285,591.517,115,281.802,280.701,278.084,88.859,116.313,75.276,1026.436,699.529,1035.135,547.218,405.968,339.803,491.381,563.922,370.315,775.539,92.154,76.503,72.887,932.337,308.7,331.033,721.935,236.471,254.925,360.025,83,147,565,479,801,442,140.124,134.633 +36.3624,335.909,300.688,468.696,184.471,109,79,681,555,165,130,127,287,511.772,278.587,450.923,428.62,428.89,378.488,403.502,464.7,432.366,535.609,492.458,500.728,597.502,112.5,275.767,280.997,276.248,86.497,118.211,75.205,1015.128,695.058,1038.099,545.117,402.642,333.499,486.574,562.084,369.721,767.523,92.765,79.419,72.418,933.058,303.919,331.655,715.359,240.154,248.963,359.345,79,146,563,481,805,437,138.873,135.018 +36.5292,327.122,296.737,463.153,183.891,110,80,685,553,164,130,128,283,507.321,272.17,444.592,427.169,428.718,367.885,397.997,463.199,428.937,535.906,490.474,495.008,600.399,112.5,278.27,273.663,271.511,88.053,119.826,77.485,1005.839,686.446,1029.755,540.121,396.691,335.17,477.58,558.973,370.386,767.098,93.903,78.145,75.063,922.719,304.952,319.18,719.559,233.384,241.881,350.338,80,145,562,482,803,432,137.424,130.306 +36.696,325.854,295.963,461.627,184.797,107,79,686,562,168,130,126,285,509.603,269.83,448.469,422.415,421.562,365.498,395.916,467.837,430.929,535.694,495.772,493.699,602.374,112.5,278.454,272.405,270.026,85.635,117.687,74.851,1008.988,685.697,1022.04,537.281,389.753,322.877,478.924,549.612,369.141,767.933,96.846,79.773,71.081,910.824,299.026,323.734,702.502,230.735,241.655,346.344,82,143,570,486,807,437,133.544,134.947 +36.8628,326.579,291.582,456.597,187.882,108,83,684,566,164,130,129,283,503.514,271.68,442.127,422.94,419.879,366.122,399.164,458.412,431.441,542.374,491.181,498.591,604.854,112,273.661,268.475,267.806,89.679,117.333,74.921,1002.133,675.144,1012.037,531.496,389.495,317.534,476.619,551.606,376.274,764.251,93.405,78.697,74.494,901.291,297.498,321.995,701.215,228.229,239.304,342.124,81,143,567,484,812,436,133.615,129.358 +37.0296,320.172,284.656,453.105,184.047,106,80,702,569,167,130,126,280,499.857,269.175,440.074,415.092,414.863,358.246,396.589,461.655,431.853,535.326,502.712,501.931,599.569,108.5,266.406,266.976,266.435,87.275,119.812,74.426,987.978,672.664,1012.309,526.181,384.681,314.538,474.484,547.307,372.523,765.087,96.747,77.791,73.015,894.743,295.164,323.239,694.044,225.311,235.324,340.396,77,140,567,485,808,439,134.112,131.056 +37.1964,316.163,285.886,444.616,182.603,109,79,698,565,169,129,128,281,498.51,264.924,438.212,411.602,411.663,352.345,390.929,458.157,431.099,540.096,497.249,501.848,608.786,108.5,269.38,268.027,261.856,88.194,119.104,75.927,977.687,668.565,996.221,521.082,379.86,309.848,470.199,545.016,374.179,763.5,94.273,81.048,72.389,893.357,293.566,313.678,699.447,222.889,232.789,333.541,78,139,567,483,810,440,132.435,127.236 +37.3632,315.566,281.469,443.04,185.66,107,78,706,574,169,131,128,279,500.831,265.295,434.642,412.287,406.46,351.602,388.895,458.823,429.122,539.162,500.843,498.14,605.843,108,264.011,260.298,266.639,86.073,120.095,76.409,977.129,651.381,1002.204,512.055,371.703,302.859,477.566,541.835,374.122,771.233,94.5,78.202,73.57,886.752,287.131,316.875,698.033,221.431,228.455,331.006,76,140,571,481,812,433,133.501,130.448 +37.53,312.284,279.044,437.286,181.244,107,80,706,575,170,135,125,274,500.723,263.493,431.7,401.094,404.419,341.191,384.515,456.514,436.078,538.765,499.173,498.152,605.915,108,264.441,257.542,260.171,86.214,118.707,75.757,963.763,651.48,988.035,511.546,366.345,301.017,466.339,534.863,378.227,759.79,94.898,79.674,75.219,876.738,283.892,312.632,688.429,217.805,227.79,326.361,77,139,568,479,805,435,132.023,128.594 +37.6968,308.25,278.482,430.993,181.188,105,79,704,573,170,131,125,270,495.864,263.965,433.969,402.483,393.94,341.233,378.285,457.19,432.053,531.915,500.559,500.771,602.515,107.5,261.99,258.806,259.743,87.459,116.228,77.089,956.017,643.6,984.027,505.197,356.224,294.418,464.628,533.633,371.165,758.43,94.685,78.57,73.513,881.83,284.429,309.987,683.648,210.894,223.541,322.763,76,139,569,483,805,431,128.882,128.354 +37.8636,304.671,272.714,424.906,182.362,104,81,709,582,167,132,124,269,496.694,261.215,432.501,395.991,390.954,332.162,381.528,456.528,431.853,534.831,501.817,494.555,602.563,106,260.64,257.712,252.069,87.148,115.676,75.261,957.621,639.819,969.085,496.744,363.797,289.986,456.143,529.504,370.018,756.292,93.491,78.088,72.276,874.192,280.257,306.225,682.333,211.007,224.037,320.979,73,139,575,487,804,433,127.972,124.547 +38.0304,304.272,272.739,422.483,180.919,108,78,708,577,170,132,123,268,497.145,262.813,429.673,390.963,385.306,328.591,374.104,449.235,434.556,532.453,505.346,490.517,600.915,107,260.298,257.132,261.387,86.837,115.619,75.12,943.281,630.142,973.263,490.888,357.474,280.121,457.515,524.484,368.391,753.445,94.671,78.598,75.432,860.954,279.139,303.396,679.405,212.31,218.853,314.634,75,139,569,479,807,430,128.598,129.273 +38.1972,300.372,266.566,419.879,179.121,105,77,708,584,168,132,125,262,501.696,256.751,423.728,392.421,381.767,321.244,367.263,450.523,426.576,530.712,499.639,493.365,601.205,105,259.353,256.735,253.935,85.762,118.636,76.083,943.15,631.11,965.968,486.907,352.568,281.296,447.504,513.469,373.811,745.981,95.239,78.018,72.802,857.135,278.022,308.106,677.708,209.52,219.434,307.836,73,137,566,480,800,428,125.229,125.58 +38.364,295.933,266.418,419.656,179.249,103,77,716,579,171,131,126,263,499.098,259.843,423.501,385.632,378.313,318.286,367.405,451.104,432.949,532.34,509.043,486.514,603.719,102.5,260.072,253.907,253.44,86.695,115.775,75.346,938.354,627.551,964.763,482.752,345.04,281.025,452.849,514.331,376.33,744.678,95.439,80.991,73.84,856.145,277.626,303.198,679.504,207.367,218.343,309.819,72,133,569,482,796,431,126.921,125.764 +38.5308,294.952,264.486,407.637,182.66,102,78,716,580,173,133,125,257,495.241,259.638,427.314,380.7,368.475,313.218,361.204,442.196,429.62,524.81,506.23,489.923,596,100,257.285,249.505,253.497,85.225,117.63,73.363,929.352,622.919,953.455,473.118,338.475,269.716,447.122,510.414,368.801,739.424,94.358,78.811,74.849,857.092,277.372,301.02,671.81,208.642,217.394,304.451,69,131,565,475,795,422,129.635,125.127 +38.6976,291.457,258.745,409.294,178.541,103,78,723,577,171,131,121,254,493.81,254.276,421.305,373.283,365.829,306.901,359.444,441.14,425.452,526.537,505.771,491.295,602.714,102,254.557,252.32,254.049,84.532,118.013,73.392,919.434,609.174,950.142,468.547,332.951,272.074,448.451,502.043,373.118,730.204,95.481,77.961,74.536,851.633,273.1,301.416,679.943,206.333,217.904,305.301,71,133,558,469,794,421,123.606,122.425 +38.8644,289.355,259.583,401.486,177.197,100,78,718,581,170,137,122,251,500.115,256.39,425.253,371.173,360.983,302.94,350.651,439.108,424.798,528.603,508.111,488.323,596.509,101,254.854,248.118,252.339,86.243,117.262,72.216,917.129,608.133,942.042,457.708,335.668,264.648,439.684,502.312,372.481,727.131,95.126,79.901,72.29,852.524,273.638,299.676,675.077,206.872,214.817,306.561,70,132,557,473,787,422,123.325,121.213 +39.0312,287.426,255.574,402.678,172.724,101,78,719,578,172,134,122,250,498.397,256.298,420.421,366.775,358.25,297.543,347.167,434.364,422.55,522.829,496.863,486.457,601.283,100.5,254.967,246.472,249.028,84.518,117.205,75.233,907.354,603.747,929.821,460.158,329.794,262.877,435.046,502.991,362.885,724.044,94.514,81.345,73.513,842.142,273.609,294.104,674.314,204.875,211.758,297.143,69,132,556,466,787,413,123.964,120.698 +39.198,282.572,255.39,392.497,172.809,98,76,723,574,167,130,120,242,499.957,256.959,419.032,366.544,347.748,295.296,343.142,429.818,417.173,518.824,501.733,482.049,591.729,98.5,252.366,248.174,250.187,84.164,115.846,73.859,899.811,606.177,935.18,456.116,326.931,259.269,428.456,499.47,365.036,724.596,92.851,79.589,74.295,843.953,269.324,299.521,667.949,203.685,211.503,294.962,69,128,557,462,785,422,123.851,121.972 +39.3648,281.584,255.292,388.643,173.276,98,76,720,581,170,128,121,241,497.674,255.059,418.048,354.005,349.107,285.611,336.6,421.32,413.417,518.158,505.842,481.253,591.638,97,251.177,246.2,250.527,83.061,116.695,75.233,891.297,597.766,923.937,446.735,319.545,256.185,435.682,490.377,363.394,720.956,94.145,78.527,73.243,844.872,269.395,297.017,674.13,202.637,207.127,296.195,67,127,549,464,773,410,123.265,122.312 +39.5316,275.547,251.542,380.972,174.083,98,77,718,579,171,131,118,237,496.78,252.087,416.736,355.332,339.111,285.273,335.505,419.904,415.878,510.091,500.728,477.829,593.412,97.5,251.858,246.787,248.311,84.023,119.146,74.383,890.711,593.674,921.739,442.868,314.84,251.101,426.604,476.647,361.951,712.473,94.301,78.74,73.783,839.483,269.89,296.352,664.597,201.051,209.832,293.164,68,127,547,458,765,407,121.406,119.71 +39.6984,271.596,248.614,381.246,172.441,94,76,723,575,168,130,118,231,497.889,251.846,416.41,347.592,332.414,276.262,326.584,419.944,409.264,512.157,501.098,475.1,586.101,96,253.466,243.493,243.34,82.142,116.001,72.301,885.229,591.602,915.785,438.687,313.416,247.65,427.975,480.338,363.762,709.499,95.296,76.304,74.536,845.466,267.881,297.908,670.848,201.66,207.396,294.198,65,127,542,456,766,405,122.358,122.934 +39.8652,272.346,247.51,380.989,171.21,94,76,722,575,170,129,116,230,498.783,254.258,416.027,349.231,329.509,273.665,326.914,409.353,405.593,519.107,489.385,467.292,585.619,94.5,252.876,246.333,250.346,83.966,114.84,71.805,882.797,587.062,915.328,433.512,315.124,246.16,421.004,473.154,362.475,708.097,93.277,81.642,71.707,841.181,260.003,298.658,675.488,201.093,210.724,294.892,66,123,543,452,763,402,122.486,121.25 +40.032,271.311,245.048,373.06,168.266,94,74,726,571,169,128,116,227,500.107,256.151,412.252,344.047,327.338,268.01,321.254,406.648,411.753,510.94,493.308,465.907,580.351,94,255.589,245.196,247.365,83.358,116.412,71.097,875.657,592.403,912.508,431.052,306.423,243.439,422.8,470.241,355.313,696.243,93.32,77.664,74.337,842.015,265.491,299.818,667.284,200.286,206.574,291.932,65,123,540,449,752,397,121.373,125.424 +40.1988,267.033,241.609,371.106,167.374,95,77,723,572,169,130,117,225,497.724,252.204,417.289,336.915,317.256,267.592,315.92,400.416,404.142,511.917,493.671,465.436,572.776,91,252.547,244.234,250.184,82.439,114.16,73.406,868.454,590.691,913.867,422.278,305.227,238.304,415.518,469.874,354.86,697.602,96.007,79.561,73.726,845.495,269.663,299.987,678.274,200.272,207.651,288.858,64,118,534,444,753,392,122.941,122.913 +40.3656,268.287,238.838,366.638,166.454,94,74,716,569,169,127,114,219,504.823,253.575,414.638,332.96,314.597,264.423,311.341,395.842,398.794,504.331,493.776,454.351,574.488,89.5,251.63,247.118,247.006,81.463,114.429,73.887,867.855,579.206,906.984,426.021,304.384,237.555,420.495,472.362,352.482,689.147,93.803,77.89,73.029,839.54,265.463,299.591,675.855,201.617,208.104,288.788,61,118,530,435,740,387,120.454,123.868 +40.5324,267.232,239.954,366.789,165.251,92,73,713,571,169,127,114,217,501.052,257.002,413.946,332.045,311.228,257.074,304.784,389.568,398.779,505.774,490.503,456.67,573.993,91,251.644,242.73,248.25,81.788,112.106,71.465,862.046,578.499,903.177,413.425,298,237.383,416.621,464.02,351.633,679.885,94.543,80.198,73.285,851.59,269.974,299.422,682.927,204.039,207.721,288.915,62,120,526,433,736,390,122.387,124.618 +40.6992,263.327,238.994,364.389,165.874,89,72,714,566,165,129,113,213,506.653,256.455,413.216,327.158,304.246,251.676,303.336,383.306,392.663,497.877,484.103,453.192,567.137,88,250.247,244.1,246.941,82.425,114.528,72.23,860.981,578.071,902.702,414.23,296.216,235.315,408.349,461.997,345.363,676.968,94.017,78.499,73.911,841.52,261.615,304.16,680.381,205.455,207.75,287.895,62,114,523,428,734,384,121.875,124.519 +40.866,262.963,239.852,357.684,163.298,90,72,717,564,166,128,112,210,507.478,254.279,413.633,319.97,302.312,250.577,294.701,375.476,395.792,494.438,484.746,446.898,563.724,86.5,256.297,242.249,247.316,81.477,114.656,72.556,856.805,578.025,898.928,406.893,295.406,226.894,410.498,459.721,347.331,674.362,91.926,77.522,71.792,851.873,265.279,305.291,686.166,206.234,208.316,290.275,59,114,518,422,722,378,123.382,123.344 +41.0328,260.621,240.055,361.716,161.345,88,69,713,560,166,125,110,204,503.631,252.973,411.352,322.369,295.7,245.679,287.646,371.397,390.088,499.193,485.675,440.42,551.205,86.5,252.224,243.568,250.852,81.081,115.151,70.884,863.029,574.093,898.743,406.78,293.215,233.008,408.631,455.648,346.014,661.091,93.149,77.154,72.574,853.571,269.437,305.334,685.119,203.586,209.647,286.493,60,113,511,419,712,379,120.738,123.585 +41.1996,258.553,233.926,351.559,158.331,86,71,721,558,165,123,112,203,506.775,258.214,416.233,318.031,291.141,243.924,284.361,365.846,386.83,486.3,474.266,439.236,553.682,82.5,251.658,245.251,250.711,82.199,114.372,70.898,853.023,575.748,890.813,399.167,284.939,226.809,405.11,451.873,338.881,655.908,91.997,79.207,72.773,857.955,265.943,306.352,692.389,204.861,211.22,290.799,56,109,507,419,704,374,122.429,122.679 +41.3664,259.427,236.768,359.144,159.335,84,69,709,556,166,125,108,199,508.845,257.095,415.328,312.643,283.571,236.052,279.782,359.756,383.174,492.513,477.871,432.655,544.406,83.5,249.664,244.247,249.933,81.322,113.112,71.026,840.33,580.429,890.733,399.912,284.098,226.879,401.533,447.32,340.254,656.984,94.102,79.589,72.219,851.491,269.564,306.423,694.454,205.824,209.52,294.268,57,110,507,408,702,367,123.168,123.557 +41.5332,259.496,234.629,351.97,158.614,86,69,706,551,166,124,108,197,507.936,259.135,419.142,308.942,285.676,232.457,272.997,353.893,380.187,484.177,475.298,433.188,540.274,81.5,256.637,244.94,246.708,83.33,113.508,69.907,849.561,577.123,884.129,393.087,283.549,226.667,398.238,442.639,336.051,643.955,93.021,78.358,71.949,857.191,270.144,312.844,692.842,206.843,210.441,290.756,55,108,498,404,695,367,122.5,124.08 +41.7,258.872,233.774,353.544,154.962,84,69,712,553,160,127,105,192,514.392,259.643,415.586,307.184,277.863,232.423,271.343,348.322,378.067,482.535,469.303,429.473,542.948,82,252.054,244.12,250.654,82.199,115.236,70.714,845.537,576.839,889.42,393.211,283.858,225.234,395.368,442.102,330.163,640.131,92.822,77.296,72.546,865.706,271.092,311.033,699.192,210.865,213.981,291.478,56,108,487,396,694,361,123.907,123.783 +41.8668,257.337,233.83,351.167,153.858,85,69,702,546,162,122,103,191,511.636,259.811,417.653,296.938,278.162,229.838,264.265,339.801,376.033,473.548,465.27,422.255,534.829,79.5,254.954,247.645,250.654,81.308,112.885,71.592,844.272,580.876,884.053,391.945,279.502,225.478,391.267,437.69,327.247,633.474,93.761,79.179,71.565,871.293,270.653,316.366,702.785,213.641,215.369,292.257,52,107,483,396,682,352,122.685,125.241 +42.0336,259.268,235.604,345.236,155.118,82,67,702,548,163,120,105,187,514.177,260.874,419.62,301.827,271.101,224.942,260.937,337.832,369.532,476.095,458.185,416.772,527.581,78.5,257.401,245.096,249.862,78.932,111.27,70.148,846.67,576.307,880.262,390.229,279.271,220.768,390.956,440.674,324.162,623.971,93.661,76.234,71.28,872.962,268.447,314.683,700.522,216.828,218.372,297.88,53,104,479,382,674,351,121.648,123.868 +42.2004,255.574,234.832,345.378,154.622,83,67,697,546,160,122,103,185,520.739,259.911,417.912,295.975,265.968,223.454,256.599,331.02,368.522,472.614,456.869,412.865,522.184,78,254.147,246.496,255.49,82.708,113.437,70.927,847.689,577.123,881.135,387.47,280.947,220.113,381.538,434.353,322.676,624.609,91.884,78.896,70.953,881.589,273.256,317.115,707.481,215.752,220.609,291.847,54,102,479,380,666,344,125.357,126.585 +42.3672,256.126,232.045,347.331,151.268,79,66,692,542,159,120,101,182,523.795,263.084,419.393,297.132,268.072,218.953,253.47,327.508,359.333,464.688,450.693,404.834,517.002,77,253.976,250.909,253.17,81.053,111.468,71.082,839.187,579.155,890.839,380.745,279.016,221.994,378.413,431.808,320.794,617.032,92.922,76.8,72.816,886.78,273.369,321.231,717.706,216.29,218.938,302.044,51,103,472,376,665,341,125.371,126.033 +42.534,257.675,233.742,342.302,153.306,80,64,686,530,155,116,100,176,524.396,263.837,423.812,292.366,262.126,216.885,248.62,321.545,355.933,471.878,451.183,406.974,515.862,75,258.064,250.357,252.888,80.69,112.875,71.28,837.954,584.846,882.367,380.601,273.483,216.036,372.87,424.313,318.26,614.185,90.362,77.168,71.579,891.546,275.533,324.046,724.609,221.941,219.618,294.764,51,99,461,369,660,339,126.395,127.929 +42.7008,255.743,230.195,345.215,147.022,78,64,686,528,154,115,102,176,522.141,265.17,418.254,288.355,259.015,213.055,242.563,314.654,353.842,463.513,446.884,398.866,512.527,74,260.083,250.563,253.936,80.944,111.657,68.816,841.704,578.123,891.518,378.541,270.084,219.946,375.698,424.624,315.713,605.036,92.296,77.735,71.465,895.888,274.698,325.191,719.22,218.896,222.21,301.378,49,99,455,355,642,333,125.782,126.075 +42.8676,257.622,234.336,346.992,151.891,75,64,681,530,155,116,97,170,524.725,262.52,428.408,287.949,255.503,210.727,238.594,310.286,350.371,459.664,439.147,395.445,504.986,73.5,261.401,253.455,254.118,79.148,112.11,69.028,837.41,582.813,892.93,374.559,271.795,220.863,372.064,426.208,308.212,596.864,93.476,77.862,71.934,901.998,278.093,328.246,725.386,220.482,227.903,304.14,49,98,451,354,634,325,126.565,129.489 +43.0344,256.811,231.565,344.561,148.367,76,64,672,524,155,116,96,168,526.412,267.419,424.801,282.415,252.346,210.049,235.507,303.233,346.089,457.244,436.318,395.259,494.824,73,262.442,252.971,259.334,81.496,108.91,69.708,844.268,580.199,887.292,378.74,273.128,218.804,371.711,419.675,306.414,584.501,94.429,78.258,70.057,906.44,279.295,338.854,735.004,224.249,229.999,302.426,49,97,446,350,628,325,127.247,126.684 +43.2012,260.317,232.17,340.257,146.898,76,63,668,522,155,115,97,165,532.31,272.949,430.937,285.075,249.118,206.919,233.545,298.149,341.522,451.186,434.239,383.308,490.998,71,266.449,258.419,259.548,81.34,111.091,69.41,837.539,579.462,893.641,375.242,271.89,222.307,366.309,419.463,302.635,583.283,91.173,78.004,69.247,916.651,284.401,336.648,745.145,233.455,230.353,312.212,48,94,440,339,622,319,127.077,132.216 +43.368,256.838,234.884,342.773,146.44,74,61,668,521,153,115,96,162,535.788,269.887,431.773,284.619,249.758,209.18,229.264,291.563,339.602,448.087,428.217,381.851,483.734,69,262.917,254.344,259.239,81.171,109.179,67.654,845.444,582.445,891.066,371.019,270.155,219.719,365.347,417.384,303.258,575.663,94.998,77.791,71.024,919.721,284.288,339.802,738.922,231.769,234.758,310.017,47,91,433,335,618,318,126.38,131.65 +43.5348,258.272,231.989,342.743,146.294,75,62,664,516,153,114,94,162,539.13,270.713,435.339,278.663,245.763,205.688,226.775,289.708,334.026,441.774,418.822,377.686,480.305,69.5,265.728,257.57,264.201,80.223,109.901,70.43,842.963,587.6,897.15,374.246,275.036,221.33,371.654,417.865,301.22,570.805,91.827,79.476,69.83,924.374,290.879,350.098,742.458,231.982,237.604,313.359,46,93,432,330,612,312,126.594,131.311 +43.7016,254.424,232.902,339.119,144.732,74,60,656,512,151,111,93,159,538.27,274.027,434.979,278.374,246.602,207.285,221.676,286.67,331.479,444.831,418.714,373.747,477.984,69.5,267.467,258.334,266.124,80.364,110.411,67.527,848.915,588.559,893.803,374.232,276.766,222.051,367.341,416.649,296.479,569.078,93.746,78.103,71.408,932.803,292.152,349.858,752.259,237.59,241.117,315.385,48,91,420,327,604,306,127.503,130.858 +43.8684,257.379,235.487,342.755,145.968,73,60,658,513,149,111,92,157,544.393,271.25,433.519,276.256,243.958,203.508,213.961,285.502,325.69,440.246,417.168,368.338,470.263,68,269.126,263.876,263.94,78.823,109.929,69.665,842.56,593.405,898.625,367.693,273.383,220.141,363.891,416.748,298.573,560.495,91.841,77.225,70.228,940.71,289.662,353.479,758.61,241.1,244.516,317.141,46,90,415,314,602,303,128.826,134.013 +44.0352,261.374,233.335,343.282,141.933,72,59,646,507,150,110,94,153,546.731,274.32,439.981,275.255,245.322,204.038,218.341,279.001,323.101,439.142,413.956,363.563,468.807,67,267.354,258.589,266.067,81.072,110.722,68.462,844.074,597.287,906.437,366.099,277.587,222.455,366.875,415.914,293.308,549.108,91.372,75.667,70.356,941.261,290.652,355.869,767.351,241.951,247.85,324.793,43,91,414,316,593,296,128.797,133.826 +44.202,259.995,239.502,342.799,141.526,71,58,645,506,150,111,91,153,550.472,281.584,443.388,272.604,242.592,201.2,211.728,280.885,322.944,433.098,410.718,359.473,462.979,66,268.221,262.497,273.397,78.101,108.924,68.292,859.799,596.574,907.216,369.497,273.738,223.326,364.683,413.68,284.406,547.069,92.595,77.607,71.863,951.671,298.53,352.743,769.67,244.186,251.103,329.674,44,88,403,311,585,295,131.27,135.457 +44.3688,265.009,237.456,340.647,140.503,73,58,642,503,145,108,90,151,552.035,277.104,444.91,269.428,241.783,200.72,205.37,269.98,317.24,434.287,405.005,358.613,455.424,65.5,273.072,264.082,264.883,79.219,109.193,68.051,850.547,599.439,916.143,364.395,273.425,226.241,364.838,411.219,280.443,537.141,92.083,76.092,69.048,958.135,303.042,364.921,787.817,246.816,256.609,328.206,44,87,399,305,573,290,131.028,132.556 +44.5356,260.523,238.355,347.853,139.529,69,56,639,493,145,106,91,151,550.266,277.119,446.264,276.893,241.499,200.648,206.693,264.471,315.419,426.178,402.048,349.417,454.167,65.5,275.018,270.95,271.271,79.615,107.876,68.164,858.349,597.146,918.066,370.024,276.525,225.223,363.962,411.629,280.882,533.204,89.552,78.981,72.361,969.436,300.553,364.977,785.582,251.299,259.523,336.722,44,87,389,300,570,287,131.838,135.414 +44.7024,264.708,239.508,343.28,139.352,66,57,629,495,144,104,90,146,556.319,283.655,450.615,276.355,240.942,200.037,203.418,260.708,313.072,425.838,397.966,343.635,445.694,64,275.627,267.641,274.92,77.168,107.564,68.447,863.199,604.116,925.062,372.526,273.014,224.951,365.814,406.836,276.254,527.072,91.557,74.45,69.887,979.124,303.254,365.939,790.801,257.372,259.664,341.147,43,85,388,297,561,282,134.041,138.216 +44.8692,263.442,243.761,348.672,138.581,69,56,631,492,144,105,88,145,557.715,282.576,449.183,268.47,239.876,196.869,201.53,257.304,308.221,423.106,392.331,341.826,443.107,63.5,283.583,273.201,274.623,80.619,108.23,68.122,864.004,612.071,927.135,370.905,275.844,230.277,368.868,409.989,275.108,525.117,89.779,74.818,67.1,986.422,307.37,373.93,802.766,257.215,263.226,340.383,43,84,384,295,555,276,133.771,136.914 +45.036,266.483,243.532,347.971,136.589,68,58,631,494,139,105,89,144,559.603,285.487,454.008,271.554,240.374,194.241,200.279,257.687,305.034,419.101,390.078,343.465,441.374,62,281.519,274.104,279.075,81.072,109.589,67.498,872.161,608.455,933.226,367.777,277.247,235.357,371.993,405.167,269.489,519.466,89.509,76.545,70.555,996.931,310.157,376.321,815.029,264.093,273.409,343.12,42,82,378,290,551,277,132.41,136.376 +45.2028,265.766,242.545,355.491,137.003,68,57,617,484,143,104,88,145,564.434,293.435,455.316,270.197,234.629,198.228,196.752,256.426,300.496,415.874,386.985,337.917,435.809,61.5,281.098,273.659,282.23,77.96,107.791,67.513,881.721,610.598,944.916,373.351,279.849,229.442,364.174,405.789,272.546,511.62,92.623,77.423,68.081,1006.11,311.925,384.651,818.579,268.942,279.993,353.317,41,82,373,280,542,269,137.793,139.168 +45.3696,271.474,248.897,347.638,134.954,66,55,617,481,140,106,88,143,571.445,288.585,465.764,270.207,240.589,199.189,196.254,250.931,300.852,417.87,382.996,334.399,432.14,62,285.985,278.32,279.974,76.871,106.573,69.821,881.034,620.413,944.528,374.119,282.57,235.046,363.891,405.436,266.616,507.924,91.272,76.177,69.105,1017.92,322.037,383.944,828.126,275.831,278.385,357.569,41,83,362,277,538,268,136.571,141.541 +45.5364,271.986,245.831,353.52,134.001,65,54,612,478,140,101,86,142,573.164,293.372,463.274,271.613,238.499,198.539,193.808,249.232,293.654,415.365,380.818,333.074,425.908,61.5,283.496,282.425,286.353,78.016,108.726,69.24,883.236,618.429,948.313,371.929,281.415,238.403,366.38,405.322,262.893,499.582,89.509,73.713,69.773,1023.365,319.039,392.275,841.223,276.135,283.683,363.058,41,82,357,270,533,263,137.722,141.018 +45.7032,271.711,247.543,351.934,132.873,63,52,609,476,138,100,88,141,574.027,293.215,464.326,269.948,240.118,200.604,193.479,245.224,297.282,415.251,376,325.121,426.447,59.5,286.352,281.166,289.807,78.681,107.182,69.878,892.599,618.568,959.125,373.336,287.269,241.383,363.679,408.151,258.237,497.132,89.68,76.729,69.474,1027.142,324.838,395.047,838.338,281.338,290.205,366.076,41,78,353,268,529,260,138.632,142.9 +45.87,273.586,254.216,356.409,133.694,64,52,602,473,137,98,86,143,575.3,298.42,462.944,272.561,239.791,200.889,190.508,244.147,290.653,409.166,378.343,322.933,424.664,60,294.014,288.006,289.142,79.487,107.04,67.272,894.129,630.623,961.761,377.702,290.53,241.106,361.317,409.833,258.69,485.83,91.727,78.188,67.47,1041.441,326.648,398.074,850.827,285.112,294.116,370.53,41,79,354,263,522,257,136.003,143.253 +46.0368,275.191,250.018,357.219,133.534,65,53,607,472,135,99,86,142,577.558,297.103,472.435,272.49,240.26,202.478,187.408,239.842,289.258,406.42,367.828,319.803,414.239,60,290.841,283.427,291.365,80.647,108.825,66.705,910.471,634.697,974.935,372.483,289.945,246.984,357.132,408.023,257.218,481.596,91.059,75.738,67.157,1049.135,324.908,405.244,862.297,287.525,293.113,378.226,42,78,351,264,516,254,136.017,147.017 +46.2036,278.419,256.113,356.701,132.759,63,52,600,464,134,99,85,139,589.844,296.203,469.207,273.906,240.317,203.649,190.352,240.182,284.834,406.646,365.656,319.152,413.943,58,292.877,293.379,295.635,79.912,106.714,68.787,909.386,631.691,982.31,375.64,288.469,245.028,361.091,404.304,256.638,480.024,88.812,75.242,68.55,1052.134,334.682,405.089,867.219,294.627,300.151,384.255,40,76,347,258,507,247,139.072,146.197 +46.3704,282.95,259.751,359.315,133.755,64,52,597,465,133,100,84,139,587.691,304.632,474.183,276.205,240.018,206.406,185.203,241.683,282.196,406.052,362.588,318.926,410.174,58,299.849,289.602,298.251,79.12,107.819,67.725,921.424,640.141,998.125,377.19,292.323,252.272,360.398,404.205,251.132,476.647,90.049,73.77,68.621,1076.927,333.607,412.84,873.442,296.372,307.859,388.825,39,77,343,257,509,247,140.153,145.772 +46.5372,285.44,258.332,362.63,131.383,64,52,596,457,133,98,84,138,593.997,301.928,476.413,278.818,239.961,208.477,188.972,236.953,279.03,401.707,359.787,312.382,404.891,56.5,299.523,293.099,298.562,79.473,108.301,68.164,921.626,641.602,992.677,384.285,295.629,249.402,360.851,400.218,249.038,469.246,90.803,75.611,69.048,1084.452,337.836,416.998,882.523,302.993,310.77,395.216,37,76,345,252,502,245,142.1,150.215 +46.704,288.504,259.71,370.002,131.06,61,51,588,453,134,95,85,136,596.997,305.347,484.271,277.282,246.062,203.187,184.948,235.609,280.112,401.169,357.731,307.568,404.084,57,300.964,299.042,299.847,81.015,107.522,68.065,928.396,648.886,1009.589,387.794,302.431,255.533,363.014,403.597,244.99,467.32,87.973,75.497,68.493,1095.809,339.547,417.62,895.832,305.1,318.327,404.234,39,75,338,251,497,243,145.71,155.026 +46.8708,288.092,264.175,364.304,131.949,61,50,584,458,131,94,84,141,599.385,308.111,484.4,279.71,244.811,206.764,185.26,230.707,275.09,397.22,355.176,311.164,397.564,57.5,306.588,299.536,298.265,78.879,110.198,68.745,928.063,650.394,1007.379,389.145,299.233,261.095,368.854,404.969,248.429,461.995,87.76,75.356,70.185,1100.83,346.152,424.225,896.935,305.742,323.311,405.635,38,77,338,247,496,235,143.422,152.309 +47.0376,291.609,268.39,373.306,129.77,62,51,582,453,129,94,84,141,593.623,308.997,486.224,280.962,246.587,207.876,179.543,233.101,271.704,394.064,350.635,305.433,399.921,56.5,306.797,301.769,305.313,79.643,108.485,67.895,940.99,655.131,1009.618,392.674,302.572,262.31,366.464,403.131,243.674,458.936,89.211,73.784,66.688,1100.25,347.68,428.2,908.377,314.534,323.169,410.102,38,75,336,247,486,238,147.43,154.63 +47.2044,294.464,267.74,377.738,127.349,59,50,584,454,131,95,85,140,598.109,311.516,494.017,285.16,244.298,209.425,179.998,227.62,274.265,390.908,348.684,302.384,395.146,56,307.384,307.654,305.56,80.152,106.87,69.566,943.509,656.559,1026.344,395.931,311.381,266.007,366.804,401.349,239.513,447.436,91.429,75.455,68.067,1127.604,358.287,434.253,911.135,322.742,330.661,414.978,37,75,332,246,483,235,142.384,153.413 +47.3712,297.972,272.232,385.61,128.298,61,50,579,451,129,94,83,138,608.516,312.271,495.613,283.691,248.962,212.531,182.359,229.248,268.703,393.088,345.494,305.489,393.448,55,314.838,308.573,304.598,80.096,107.352,70.869,952.168,663.403,1029.561,399.044,312.085,271.223,365.277,402.551,238.31,447.011,89.58,75.568,69.304,1135.482,355.869,432.839,911.446,323.594,335.623,418.596,37,73,332,241,483,233,146.973,156.073 +47.538,300.649,275.032,386.37,128.114,61,49,571,447,128,93,84,137,604.377,313.353,498.497,292.521,251.166,214.323,183.169,227.747,269.073,393.243,340.763,302.412,390.111,55,314.994,308.446,312.349,80.845,107.833,70.416,959.265,670.502,1039.717,405.578,315.975,276.482,369.717,406.949,238.706,443.867,90.86,74.874,67.754,1149.583,358.5,445.738,929.975,327.844,338.868,426.407,37,73,327,241,474,227,148.297,155.579 +47.7048,306.229,275.584,389.716,126.372,61,50,569,447,127,92,82,139,611.57,315.139,502.834,287.278,251.578,215.281,180.526,224.961,265.317,391.163,339.404,301.487,384.611,54.5,317.964,312.179,313.141,80.817,105.794,68.886,972.477,674.376,1053.241,402.457,319.743,278.473,368.812,408.603,235.097,441.233,88.144,73.189,67.398,1161.054,363.436,446.926,931.927,327.034,341.762,431.024,37,72,327,238,472,230,147.955,156.625 +47.8716,305.634,278.913,387.908,126.925,60,49,570,445,128,93,84,140,616.849,311.942,501.038,291.488,253.953,218.712,179.6,224.292,264.136,396.357,337.157,301.265,388.046,53.5,321.922,312.92,318.26,81.015,108.556,69.68,983.283,677.839,1056.161,407.704,323.177,286.944,372.347,407.896,231.459,441.289,91.23,74.818,68.109,1161.125,363.011,449.726,937.315,338.7,350.553,436.269,35,72,331,233,470,223,152.603,160.332 +48.0384,305.82,281.837,392.92,129.359,60,48,571,441,129,93,83,142,613.641,316.583,503.585,296.565,257.707,220.797,179.059,224.915,268.233,390.979,333.782,298.813,382.288,54.5,319.209,317.243,322.433,80.576,107.465,68.277,989.137,679.72,1071.634,412.681,325.632,287.298,370.82,416.434,229.945,433.302,89.765,73.713,69.275,1173.26,372.855,455.893,949.634,339.456,349.18,443.867,37,72,327,236,468,224,149.107,158.38 +48.2052,309.301,284.82,396.514,127.095,58,49,568,436,124,92,83,143,616.13,317.217,507.986,294.602,260.138,225.662,180.668,225.892,262.372,389.252,335.29,296.449,384.029,55,325.091,320.639,322.334,79.077,108.669,68.362,990.139,689.848,1074.621,417.586,327.994,289.28,369.896,414.352,230.002,425.484,89.41,73.996,67.598,1184.745,375.854,458.708,958.997,344.425,354.667,447.221,37,73,332,233,466,224,152.02,156.837 +48.372,315.837,284.999,402.188,128.269,60,49,569,438,128,91,84,143,624.388,318.663,508.709,301.345,261.29,223.553,182.891,226.458,262.614,391.828,331.374,293.707,379.697,53.5,325.362,322.912,322.179,80.209,108.754,68.136,1001.875,691.245,1078.746,422.193,335.428,298.266,370.987,418.247,226.534,422.736,88.855,73.827,68.223,1195.847,375.543,464.323,957.739,349.896,363.468,452.216,36,71,321,234,461,219,151.04,159.95 +48.5388,318.265,290.317,408.348,129.374,59,51,565,444,125,92,84,145,627.671,327.408,519.028,299.529,263.821,233.165,181.029,222.026,256.412,392.847,334.583,299.735,377.876,55,329.65,326.747,324.952,78.285,105.511,68.547,1013.196,692.997,1091.41,428.521,335.167,299.359,375.689,418.799,225.883,423.006,88.158,75.837,68.408,1207.177,379.446,467.137,973.862,349.932,365.567,457.786,37,73,325,231,458,217,152.222,163.403 +48.7056,320.853,295.142,408.753,128.723,58,47,567,437,123,89,83,144,628.811,324.05,517.318,308.659,264.788,232.338,181.171,222.436,260.808,388.276,331.332,295.263,382.019,54,332.843,330.227,324.125,80.845,107.564,69.439,1021.855,701.906,1089.874,429.53,343.894,303.259,377.218,423.374,228.148,425.385,90.817,74.35,67.342,1215.79,382.558,469.103,975.362,351.299,375.273,464.71,37,71,323,228,454,215,162.438,165.146 +48.8724,320.583,297.628,417.059,129.274,59,48,563,432,122,91,82,145,630.659,323.878,527.265,305.191,271.907,234.651,181.171,221.487,255.53,384.794,327.157,294.141,377.297,52,331.241,327.893,332.626,81.482,108.57,69.467,1026.422,711.579,1106.111,434.11,343.792,307.513,379.003,418.134,223.788,421.929,88.841,75.653,67.498,1219.637,389.276,479.371,979.704,356.701,376.042,468.375,35,69,322,231,453,214,150.386,165.539 +49.0392,325.496,296.733,423.094,127.901,59,48,563,433,123,91,84,146,630.738,330.373,524.546,313.068,270.888,238.434,179.494,225.085,255.857,389.719,328.91,293.014,376.439,53,334.168,330.212,333.376,80.619,108.74,70.388,1030.126,709.678,1114.524,439.54,353.633,313.663,377.303,424.294,223.137,412.228,88.912,73.119,69.674,1234.29,386.999,481.832,984.711,365.156,375.297,476.239,36,70,322,226,451,215,152.376,167.676 +49.206,327.091,303.984,414.892,130.833,57,47,556,426,123,89,82,146,635.42,326.554,523.702,313.373,275.822,241.857,180.972,223.824,255.061,389.394,324.824,297.54,375.628,52.5,335.822,332.39,338.735,82.203,108.485,70.543,1040.705,721.419,1116.877,442.555,356.198,317.549,378.309,427.977,221.524,416.576,89.808,75.936,67.953,1238.208,392.713,487.759,991.104,363.23,381.104,482.826,37,68,326,226,451,210,155.701,166.403 +49.3728,330.784,301.432,424.848,126.683,57,48,554,429,124,88,84,147,637.078,331.31,529.491,319.292,284.061,243.949,185.747,222.252,254.008,389.832,325.695,298.332,377.686,51.5,340.319,336.436,334.776,81.807,110.198,70.501,1043.28,727.597,1122.345,449.889,358.715,324.907,383.336,430.498,219.656,412.299,87.59,73.303,68.323,1244.94,396.659,488.141,992.249,368.633,386.903,488.595,35,68,325,227,447,208,157.535,168.001 +49.5396,330.089,306.007,431.503,126.43,57,47,557,432,123,88,84,150,638.881,329.756,529.003,319.63,283.876,247.788,184.127,224.376,255.587,387.837,324.908,295.458,379.036,52,337.844,336.69,338.141,81.708,109.929,70.473,1056.004,730.297,1132.646,455.433,363.687,327.345,389.879,434.817,217.221,409.948,87.604,76.021,68.764,1260.654,404.721,492.171,1001.796,369.204,390.552,492.135,36,68,321,229,446,210,155.194,167.52 +49.7064,336.918,307.017,436.775,131.37,57,49,555,428,123,91,83,149,641.463,335.385,533.354,326.279,287.453,248.629,181.611,224.334,254.89,386.818,326.049,296.055,377.374,51.5,344.615,342.412,341.887,81.27,108.952,71.096,1067.84,726.706,1141.72,461.523,372.39,330.564,381.255,433.387,216.797,406.917,90.49,76.078,67.313,1267.372,402.628,498.055,1004.738,376.863,394.371,493.977,36,67,321,226,447,208,156.966,169.425 +49.8732,341.493,313.533,438.636,130.904,57,48,547,427,119,91,83,151,650.78,331.263,539.76,325.916,291.164,253.72,182.592,221.728,255.8,390.568,322.235,298.489,377.254,51.5,345.547,347.902,344.459,82.132,109.391,72.824,1072.415,735.652,1142.808,464.339,375.055,333.064,390.078,439.009,212.735,409.027,89.623,74.634,65.365,1276.678,410.039,494.364,1007.341,379.23,400.529,499.349,35,68,318,228,448,207,155.247,169.784 +50.04,341.109,316.744,441.832,126.782,56,49,551,425,122,88,84,152,651.41,329.908,541.12,338.234,295.828,260.013,186.188,224.518,256.64,391.177,321.715,297.342,378.38,52,344.092,350.424,346.706,82.033,108.527,68.532,1078.163,740.522,1151.504,474.491,375.717,337.009,389.78,445.17,217.151,407.214,88.016,74.039,66.716,1286.607,409.459,496.91,1014.483,380.617,401.918,510.145,35,69,323,227,445,205,157.45,170.124 +50.2068,345.058,317.355,444.105,128.978,57,47,547,422,121,88,85,154,650.041,333.29,540.26,337.396,295.704,265.087,182.706,227.945,253.61,395.593,324.046,301.109,378.202,52.5,344.54,347.769,345.784,82.132,110.099,70.119,1084.792,745.163,1159.41,475.947,380.953,344.021,398.405,444.051,211.334,403.504,90.121,74.251,69.119,1296.494,410.661,500.813,1023.464,380.191,405.034,510.726,35,70,323,231,441,204,158.061,172.176 +50.3736,346.498,321.005,452.54,127.985,59,48,551,427,122,91,85,156,649.045,337.449,541.957,342.474,301.53,266.535,191.546,226.473,258.589,392.606,321.744,301.784,374.825,52,352.899,348.313,347.651,81.821,110.779,70.912,1097.667,748.998,1164.941,476.794,387.226,348.159,399.298,447.209,215.438,404.269,88.94,73.345,68.508,1302.83,417.153,509.908,1021.696,382.172,402.168,512.96,36,68,320,233,444,202,159.468,169.968 +50.5404,351.56,320.679,456.412,128.694,58,48,555,427,122,88,86,159,657.334,333.834,548.733,347.263,307.744,269.942,187.268,228.923,250.935,391.375,322.843,300.542,376.745,51,348.944,352.573,353.3,82.896,110.439,70.897,1098.198,753.022,1179.193,490.388,392.834,352.911,400.544,454.602,211.178,405.246,87.675,74.195,66.887,1303.707,418.907,514.476,1026.675,388.949,411.839,519.65,35,67,325,229,443,206,160.832,172.303 +50.7072,354.122,327.256,462.019,129.176,55,47,553,425,122,89,87,159,654.992,336.806,542.67,348.598,310.147,277.779,194.105,233.171,253.695,396.598,321.914,302.929,380.815,53,353.469,350.098,353.554,83.236,109.887,70.883,1115.03,751.646,1178.788,493.518,398.168,359.927,403.589,453.554,211.688,406.874,88.201,72.963,66.048,1318.926,424.098,514.108,1035.585,389.659,410.927,527.493,36,70,325,232,440,204,157.904,174.935 +50.874,353.691,328.09,463.398,130.971,56,48,557,426,123,91,86,166,656.008,338.419,545.607,358.106,314.597,277.304,192.413,230.098,253.496,392.111,327.27,307.1,383.336,53,355.312,355.954,350.691,82.514,110.822,71.662,1120.864,760.927,1181.583,497.484,404.652,364.859,396.111,461.131,213.867,400.006,89.95,74.973,67.256,1319.194,427.931,516.598,1038.386,389.933,415.424,526.471,36,70,328,233,431,202,157.222,172.827 +51.0408,364.366,333.008,466.428,127.901,56,47,555,428,123,92,86,165,663.303,336.807,547.752,362.652,318.92,283.003,193.437,232.605,258.461,396.796,326.545,302.194,385.319,53,353.574,357.016,353.786,81.963,110.779,70.6,1119.239,768.928,1189.418,504.465,404.864,366.378,401.634,466.017,211.008,400.955,90.817,75.058,69.389,1327.398,425.159,516.739,1038.697,390.878,416.431,530.457,36,70,333,236,437,201,158.004,176.647 +51.2076,363.336,332.824,473.07,131.411,56,47,558,431,123,93,86,166,663.065,342.245,552.717,367.931,321.977,286.151,196.819,234.191,258.546,397.178,325.715,307.836,385.132,52,355.887,360.485,356.453,83.999,111.855,72.498,1143.814,767.951,1193.144,507.934,412.137,366.713,407.229,475.478,211.15,401.578,90.092,74.492,67.598,1337.963,425.286,514.646,1045.953,395.329,417.381,537.871,37,67,323,233,444,200,162.197,175.628 +51.3744,365.444,335.028,478.484,131.916,56,47,557,428,120,91,87,166,662.144,336.506,556.449,372.248,332.983,292.396,202.248,239.615,258.83,397.631,328.301,308.431,387.628,52.5,361.484,357.111,355.685,84.056,112.45,72.979,1137.815,771.366,1203.879,517.347,416.699,376.302,410.967,475.803,212.537,400.586,89.637,75.455,66.517,1337.482,433.772,527.672,1048.598,396.48,422.146,535.644,36,69,323,233,440,200,161.074,176.477 +51.5412,367.432,336.068,482.6,129.445,57,47,553,433,123,90,86,167,660.737,337.365,552.679,372.517,338.536,297.448,200.443,234.205,261.192,398.89,327.907,311.844,390.606,52,362.985,362.718,361.385,84.593,112.804,71.634,1144.084,773.301,1217.218,519.021,424.92,377.529,414.551,475.506,210.98,398.887,87.76,71.844,66.929,1338.854,430.519,521.039,1050.776,400.411,425.419,545.303,37,67,323,237,439,199,158.373,175.982 +51.708,371.864,339.181,490.627,133.563,57,46,556,431,124,91,88,172,661.557,342.837,562.751,378.996,338.841,303.129,204.523,239.332,261.462,402.372,328.839,315.786,386.92,51.5,356.569,363.524,365.053,85.173,114.079,74.112,1149.511,778.093,1209.4,529.277,425.815,380.797,412.143,469.435,210.57,397.315,87.973,74.336,67.214,1360.211,436.007,523.542,1059.22,402.288,425.062,547.586,35,68,331,236,444,199,159.66,175.572 +51.8748,370.386,344.324,489.637,132.331,55,47,563,431,122,93,88,173,662.282,335.709,556.561,387.707,349.448,307.852,202.959,236.528,262.515,405.203,332.687,315.795,392.133,51.5,361.809,360.738,362.192,85.272,110.51,73.532,1157.707,782.272,1224.913,533.443,433.597,380.048,413.74,477.511,209.904,396.054,87.376,74.733,70.527,1347.369,442.103,528.379,1052.148,401.497,432.55,547.349,36,67,331,237,443,201,158.942,178.807 +52.0416,378.629,346.711,494.764,133.397,55,47,562,437,124,91,88,177,664.711,338.333,563.798,388.765,350.984,311.111,204.025,242.028,260.694,405.231,332.068,323.367,394.61,53.5,366.447,367.414,355.058,81.043,112.153,72.016,1168.93,782.304,1225.341,541.42,429.92,389.443,414.728,475.756,213.16,397.357,88.357,76.135,69.73,1349.504,440.943,530.048,1049.39,395.56,429.314,550.345,37,70,334,242,446,199,159.951,176.152 +52.2084,375.133,346.183,501.456,134.803,57,47,560,435,124,90,89,179,671.775,339.082,556.965,398.961,356.743,315.015,210.094,245.655,262.7,406.448,334.088,320.455,398.88,52.5,365.303,368.079,363.677,84.82,113.881,72.47,1164.446,783.126,1230.893,540.382,442.726,388.231,421.917,476.831,210.796,402.866,89.566,72.765,65.934,1351.838,442.782,535.989,1055.288,403.965,427.514,554.704,36,69,340,246,446,200,163.931,176.987 +52.3752,384.921,344.661,499.837,136.852,56,47,551,435,124,94,90,185,667.959,339.993,564.789,402.016,361.165,321.984,207.237,252.295,263.126,403.462,335.326,325.319,397.032,52.5,361.841,366.38,366.524,85.216,113.626,72.781,1179.175,785.634,1231.236,547.506,440.863,399.3,420.021,476.398,210.301,400.232,88.045,74.917,69.73,1358.669,439.854,525.423,1058.852,398.267,433.029,559.052,36,69,343,244,446,198,154.778,179.647 +52.542,383.927,346.311,506.712,133.067,57,47,556,436,125,92,91,186,670.321,339.321,563.405,407.695,366.412,326.906,212.155,251.713,267.01,410.496,340.042,327.31,401.313,53.5,364.373,367.44,368.717,84.947,114.801,73.928,1174.533,783.434,1243.695,553.421,445.292,396.229,423.8,477.396,213.06,401.436,88.201,71.915,68.636,1362.912,445.37,531.463,1057.381,403.59,430.274,562.486,37,70,350,247,445,204,160.051,179.562 +52.7088,383.872,353.356,510.749,133.718,55,47,552,439,125,93,94,191,673.842,335.456,563.655,409.352,370.151,333.13,209.826,253.467,269.229,412.69,337.025,331.103,405.529,53,366.901,369.717,363.888,83.886,114.051,74.452,1189.082,790.033,1247.9,562.55,451.749,403.079,425.119,483.915,204.993,398.83,90.277,73.926,68.863,1352.984,445.908,530.755,1056.476,403.017,429.725,562.415,37,69,350,254,446,201,158.174,176.166 +52.8756,384.827,346.652,514.065,136.755,57,48,556,440,125,95,93,193,675.145,338.4,563.455,416.09,377.218,336.618,218.11,253.325,267.536,409.859,343.041,333.555,408.823,53,367.889,365.091,363.508,85.145,114.306,74.424,1191.83,795.431,1246.658,566.602,453.659,405.345,425.034,477.114,210.286,405.784,87.319,72.765,68.294,1366.18,445.455,531.802,1057.975,404.24,429.665,565.07,37,69,354,253,449,202,159.937,179.93 +53.0424,386.643,354.686,512.369,139.103,56,48,551,444,126,95,96,198,669.696,339.216,570.531,425.175,382.621,347.011,217.541,263.414,269.229,417.233,341.288,340.481,410.982,53,368.602,366.928,363.007,85.102,115.637,73.9,1190.147,796.665,1254.748,570.74,454.156,408.161,428.571,482.907,208.815,404.481,90.035,75.172,69.361,1360.749,444.267,534.362,1064.806,400.569,427.339,569.108,37,69,357,259,450,201,156.597,181.288 +53.2092,386.74,355.817,520.209,138.276,56,48,563,445,126,95,95,201,671.103,342.474,571.059,425.843,387.2,350.236,222.544,263.561,272.06,413.85,345.544,337.691,410.223,52.5,371.455,370.721,368.909,86.757,114.546,72.979,1197.155,801.111,1257.75,574.124,462.889,409.323,434.479,488.923,209.805,404.014,90.49,74.959,67.754,1361.003,446.36,535.465,1060.379,402.124,430.671,567.717,37,68,366,261,453,199,158.487,182.548 +53.376,391.911,358.448,520.095,138.018,55,49,556,449,125,98,94,202,665.932,340.041,564.68,432.618,393.992,349.917,221.052,271.953,274.037,417.488,345.792,343.125,419.437,53,369.277,374.793,367.481,87.295,118.923,73.631,1198.849,794.576,1262.491,585.636,462.762,409.054,434.061,485.95,207.654,408.064,88.343,75.327,68.764,1368.329,449.627,532.82,1060.054,402.514,432.901,573.364,37,69,366,267,453,200,157.208,183.142 +53.5428,389.652,351.686,525.309,139.356,55,45,559,450,128,96,97,206,668.155,337.112,568.192,444.997,399.764,358.659,223.539,271.783,274.023,421.097,350.749,345.593,418.044,53.5,368.471,368.769,363.026,88.03,116.416,72.909,1204.429,797.227,1265.89,593.526,469.219,414.051,441.335,491.91,212.169,405.869,90.291,75.143,68.067,1361.668,453.573,530.444,1064.467,396.008,429.058,574.114,37,70,366,270,449,200,158.572,182.788 +53.7096,390.746,358.341,528.207,139.065,57,47,563,450,128,96,94,207,671.123,343.553,574.747,446.227,407.107,358.584,225.444,274.938,280.026,428.329,355.663,355.911,430.129,52.5,368.711,370.268,367.552,85.697,117.959,73.503,1207.68,804.368,1271.506,593.903,468.821,414.782,438.378,494.57,214.603,414.112,89.836,73.204,68.906,1355.445,448.595,527.729,1054.326,398.503,427.869,570.141,38,67,375,276,458,201,158.885,180.453 +53.8764,392.118,357.684,531.659,143.007,56,48,567,456,128,97,99,211,665.76,341.668,570.093,452.4,407.249,366.685,226.766,276.412,277.622,428.003,357.524,352.802,426.7,53,370.267,373.096,369.914,88.497,117.039,76.449,1213.401,802.857,1279.548,599.605,472.068,420.195,441.109,492.274,211.475,411.732,90.377,73.529,69.645,1364.355,447.732,525.423,1054.722,397.31,428.731,569.317,36,70,373,282,457,201,157.819,180.34 +54.0432,390.547,359.094,532.17,140.022,57,48,570,451,126,95,101,216,664.801,339.526,570.84,449.048,410.206,369.612,233.04,282.789,282.601,428.442,362.121,361.993,431.786,52.5,368.245,369.032,369.178,87.974,116.926,73.702,1212.813,804.471,1282.807,604.596,476.296,415.264,443.471,500.127,211.9,415.216,91.343,71.547,69.787,1358.782,448.68,531.873,1053.053,398.012,427.213,569.372,36,69,378,286,456,200,155.36,182.052 +54.21,393.89,362.862,533.115,144.605,57,49,569,455,128,98,99,217,669.398,337.923,568.186,459.478,424.795,380.133,234.391,283.512,281.178,425.342,364.299,362.305,442.188,53.5,372.389,373.097,364.315,85.838,116.855,74.82,1208.115,811.439,1284.708,614.464,483.603,420.149,442.07,507.386,217.377,413.446,88.77,75.356,68.323,1364.581,446.304,531.689,1047.523,398.229,424.93,572.389,37,70,380,289,457,201,152.802,177.581 +54.3768,393.25,359.985,534.398,145.284,57,48,570,460,132,100,101,225,665.159,341.482,567.771,462.577,430.243,378.047,239.011,285.65,289.33,428.753,366.426,366.958,439.916,53.5,371.682,372.12,369.024,88.313,120.834,74.452,1230.163,810.399,1285.309,615.859,481.165,422.708,445.396,506.084,213.995,419.323,89.353,74.733,69.958,1347.963,450.278,524.348,1050.083,397.229,426.467,575.645,37,70,386,293,459,201,153.101,179.788 +54.5436,393.449,359.802,541.456,144.605,54,48,575,464,129,99,99,223,664.477,341.243,571.515,473.79,431.252,388.953,240.276,295.718,288.021,437.571,372.912,370.788,448.199,54.5,374.632,370.933,364.359,90.293,119.631,75.628,1226.899,806.54,1283.931,625.185,485.152,423.111,448.663,508.86,213.98,415.91,90.476,74.676,68.365,1355.43,445.398,528.606,1050.267,394.988,424.428,572.007,37,72,390,295,459,205,150.699,180.821 +54.7104,399.341,360.839,535.58,144.81,56,46,573,464,132,99,101,222,670.86,337.756,570.153,478.305,440.891,391.044,239.85,297.207,293.697,432.136,372.63,373.082,453.257,53.5,369.66,368.51,367.864,89.232,118.526,76.534,1220.653,805.13,1291.584,626.422,484.294,421.871,443.161,517.521,215.863,421.278,91.059,73.713,69.247,1357.043,443.857,524.758,1046.349,393.299,423.025,568.395,37,70,389,301,467,205,151.452,181.048 +54.8772,394.369,361.555,543.962,149.356,58,48,574,470,132,102,103,227,668.837,340.222,570.053,485.455,444.986,393.751,242.343,298.46,290.297,440.557,371.441,379.682,457.717,54.5,369.358,370.803,369.782,91.552,121.089,77.54,1229.321,804.477,1305.243,630.034,478.447,424.456,447.053,518.215,214.957,419.663,90.59,75.37,68.721,1344.809,446.134,528.04,1042.573,388.751,421.89,565.046,38,71,397,305,463,204,151.082,178.458 +55.044,393.852,357.868,542.93,147.999,56,49,579,470,131,102,104,232,665.732,335.728,569.781,487.774,451.413,399.195,248.511,304.504,295.262,437.373,379.824,381.031,457.194,53.5,369.278,370.451,364.895,90.944,120.749,76.308,1231.015,802.61,1302.319,633.688,484.549,426.536,452.601,515.738,220.703,422.651,91.073,75.752,69.958,1351.046,445.667,524.674,1050.026,389.702,418.619,567.877,37,70,401,313,468,204,148.396,178.416 +55.2108,393.62,364.418,545.62,149.715,56,47,589,472,132,104,105,231,662.382,337.46,570.809,489.192,454.783,405.827,252.562,309.216,298.462,440.444,387.763,386.367,461.112,53,366.815,369.358,367.945,88.964,120.466,78.432,1242.15,808.825,1299.221,641.224,486.183,427.882,449.941,518.013,218.17,427.481,89.267,73.09,69.958,1345.572,441.24,523.867,1042.191,386.339,419.572,567.704,37,69,404,316,469,202,147.543,177.914 +55.3776,395.874,360.863,549.104,152.087,58,49,586,472,133,102,105,234,663.442,337.794,569.091,499.128,460.594,406.261,255.746,309.896,299.828,441.619,390.446,392.699,474.189,52.5,366.351,369.701,365.729,90.76,123.143,76.194,1240.272,802.928,1297.843,642.5,487.946,426.309,454.437,523.828,222.048,433.344,93.021,74.195,68.778,1335.318,444.21,519.073,1032.403,383.15,418.403,566.844,36,69,411,316,474,204,149.249,178.331 +55.5444,400.44,362.975,545.577,153.345,56,48,587,482,133,103,105,240,661.381,334.431,567.388,505.74,462.143,412.254,255.618,322.235,301.649,443.09,392.36,395.275,475.524,53.5,359.872,372.312,362.177,90.01,123.44,77.809,1239.377,793.895,1298.444,649.551,488.71,422.503,460.635,526.871,218.283,428.571,90.846,75.965,70.257,1345.968,446.148,517.885,1031.017,379.653,417.704,564.531,37,70,418,319,466,204,146.804,177.454 +55.7112,395.363,366.312,548.124,151.751,57,49,593,482,134,106,106,242,664.843,329.894,568.656,514.38,469.656,418.303,259.212,321.216,307.794,448.016,394.553,398.993,473.92,54.5,367.765,368.952,365.22,89.43,121.273,79.253,1243.474,802.385,1305.817,654.59,490.593,426.663,459.121,524.725,223.307,436.276,92.225,73.798,70.484,1335.997,438.595,517.22,1031.611,381.577,410.417,559.548,38,71,420,332,476,207,148.368,178.387 +55.878,396.053,360.739,547.018,154.924,56,50,589,480,136,107,105,247,662.764,334.278,566.83,519.401,472.827,416.854,262.629,324.542,307.367,450.11,398.866,401.323,479.499,55.5,362.392,370.633,363.791,92.825,122.846,80.018,1244.515,797.664,1304.627,651.533,488.908,424.895,459.175,531.618,225.586,441.884,90.832,75.2,68.92,1330.424,440.392,514.419,1026.633,378.084,410.736,569.828,38,73,420,328,481,207,146.818,176.888 +56.0448,395.436,358.963,545.301,154.555,57,50,599,485,136,107,110,249,661.385,333.529,571.083,525.65,480.591,423.916,265.573,329.158,306.059,453.408,404.623,408.625,489.867,54,362.081,366.321,360.808,90.265,120.268,77.71,1247.399,799.765,1306.398,657.036,487.111,425.628,462.522,524.946,228.827,438.938,89.196,74.874,69.318,1326.521,438.157,506.909,1026.519,375.099,407.244,558.368,38,70,418,337,479,204,147.757,175.543 +56.2116,395.349,355.947,546.178,156.151,56,51,597,486,139,107,112,248,661.419,330.738,571.349,518.353,486.421,420.804,269.106,330.838,316.799,450.592,411.524,416.25,488.268,55,365.543,363.734,358.797,90.477,124.602,78.517,1237.018,795.337,1299.87,657.363,493.428,422.97,466.471,530.408,229.421,442.904,91.016,75.596,69.346,1322.363,433.687,505.41,1023.677,374.329,404.369,556.602,38,72,430,344,476,204,144.587,176.336 +56.3784,392.937,361.759,552.155,153.206,56,49,603,491,140,106,109,252,660.742,331.754,562.931,527.031,484.217,427.075,268.978,333.3,315.334,455.913,408.9,422.712,494.597,54,364.315,363.098,360.398,90.505,122.364,77.37,1245.949,798.586,1310.783,653.609,484.393,423.236,463.479,529.319,227.468,446.275,90.775,73.869,71.309,1320.793,435.243,509.978,1016.152,372.588,403.936,554.664,38,70,431,349,480,208,141.517,177.001 +56.5452,386.719,358.231,548.271,157.205,57,50,607,495,141,110,112,252,659.019,329.774,563.168,530.131,491.129,429.425,268.978,338.663,314.38,460.032,416.036,422.453,502.723,55.5,362.293,361.046,359.677,89.643,122.35,75.684,1249.828,796.082,1308.095,660.582,495.769,421.908,461.447,534.611,232.252,445.68,91.528,74.464,69.56,1310.312,433.645,499.639,1009.292,366.172,404.643,551.649,39,72,435,350,481,206,143.091,175.388 +56.712,389.597,354.152,547.326,158.224,58,51,606,497,144,109,114,256,656.987,329.297,559.484,538.974,496.715,434.023,271.707,347.945,321.152,456.805,420.655,422.585,510.756,54,361.374,357.679,360.624,90.279,124.503,78.474,1250.884,799.519,1313.973,663.377,488.781,423.544,464.255,537.082,235.705,453.767,94.443,74.888,69.46,1313.183,432.796,504.208,1010.042,369.142,397.229,548.492,39,69,449,358,481,210,141.631,173.053 +56.8788,387.155,354.728,547.297,158.684,56,51,615,498,141,107,112,257,656.449,330.652,560.543,546.299,502.645,442.231,279.227,353.761,324.025,466.075,421.637,434.406,512.015,55,366.549,360.692,355.336,90.138,125.862,77.271,1246.189,801.431,1302.581,667.387,488.201,419.89,461.484,534.973,236.059,457.505,93.064,75.625,70.811,1298.05,432.485,504.632,1006.153,365.89,394.063,544.496,38,72,448,361,483,207,139.3,172.077 +57.0456,386.33,349.723,547.055,159.604,59,49,616,503,144,111,112,259,653.056,328.582,561.875,551.535,504.705,441.259,279.249,354.907,323.57,464.688,427.92,436.445,515.373,55.5,362.18,357.147,358.717,91.396,125.48,79.848,1249.535,790.753,1306.588,664.847,483.862,417.435,468.842,543.565,241.848,468.056,92.495,74.789,71.167,1302.222,424.183,496.075,989.802,362.962,392.135,540.253,39,72,456,370,484,207,140.289,175.076 +57.2124,386.186,350.392,546.647,160.452,57,49,616,503,143,110,114,262,652.173,329.164,554.705,549.067,508.816,447.517,279.519,353.549,325.448,472.345,430.293,440.142,524.956,55,354.04,356.955,353.432,90.251,123.327,76.633,1244.257,791.799,1312.498,664.828,490.862,414.116,470.186,532.601,243.461,465.507,91.614,75.54,69.688,1300.383,425.583,494.491,992.886,357.331,389.106,538.507,39,71,460,373,485,210,140.281,169.397 +57.3792,382.979,351.992,538.827,161.923,58,49,621,512,142,116,115,262,649.473,330.061,559.455,553.971,506.868,448.467,282.33,360.301,329.858,468.467,432.395,440.222,531.25,55,360.286,356.148,349.744,90.138,124.177,79.211,1243.617,797.513,1310,665.866,486.757,415.916,476.364,534.066,238.168,465.96,91.642,76.135,71.124,1286.607,423.08,492.044,993.833,353.62,382.795,533.281,37,73,463,377,489,209,136.898,168.483 +57.546,386.788,348.344,536.932,162.94,59,49,620,513,147,113,116,264,645.58,322.991,559.196,560.623,512.314,448.734,284.825,366.38,332.475,471.496,444.606,447.45,528.888,54,355.586,353.176,347.453,91.382,124.998,77.993,1231.409,790.067,1309.074,673.914,482.27,414.358,478.869,538.921,242.57,471.073,91.571,75.922,70.171,1289.804,421.213,487.235,981.698,352.581,380.983,527.958,37,71,464,383,491,208,137.495,169.431 +57.7128,386.603,347.216,540.514,164.699,59,51,623,516,144,118,117,263,644.173,325.018,557.249,561.186,517.518,453.46,288.762,370.146,332.93,468.835,438.584,450.702,534.11,55.5,355.125,356.997,349.431,91.835,124.559,79.352,1238.324,793.559,1305.533,670.686,484.534,411.209,483.469,543.379,248.358,472.334,91.941,76.517,71.579,1268.815,420.421,482.738,977.766,348.65,378.523,528.432,39,72,475,382,488,211,137.317,170.209 +57.8796,378.302,341.48,534.735,165.817,57,51,629,508,148,116,116,269,649.96,325.629,562.06,568.862,519.893,460.129,290.453,372.353,331.821,470.095,450.179,454.064,536.144,54,355.705,349.292,346.925,91.609,125.933,79.749,1228.699,790.426,1299.187,668.937,486.198,412.262,476.662,542.544,248.641,476.795,91.557,75.455,70.612,1272.096,415.909,480.305,970.185,349.888,373.187,525.334,37,71,483,391,490,208,134.837,166.308 +58.0464,378.487,346.141,535.446,165.648,57,51,634,518,149,117,119,269,637.593,316.916,552.07,566.347,518.812,455.303,291.036,379.246,335.861,476.011,453.469,465.086,544.548,55.5,350.423,350.784,344.431,93.589,124.488,78.956,1237.686,787.989,1299.274,667.387,483.614,409.635,478.954,544.931,249.391,478.069,90.448,75.101,70.313,1268.9,413.349,477.802,963.877,341.601,371.844,516.375,39,72,488,397,490,210,131,164.04 +58.2132,372.632,339.701,528.589,166.245,57,51,630,520,150,119,118,270,636.768,321.044,556.484,573.958,524.67,462.762,295.783,378.679,337.326,476.393,459.302,461.513,549.114,55.5,346.684,355.043,344.673,89.487,124.092,79.126,1230.729,786.852,1304.026,669.975,483.121,405.02,476.95,540.746,252.01,482.134,92.04,75.2,70.612,1258.73,413.221,477.363,971.076,339.115,367.466,512.312,40,71,485,404,492,210,131.597,166.954 +58.38,372.789,338.289,535.204,167.744,59,50,642,530,148,117,119,272,630.437,317.447,548.19,573.166,528.651,463.995,300.388,379.896,343.77,482.096,461.145,467.392,553.301,53,354.011,348.303,346.057,93.108,125.607,77.044,1224.889,783.759,1293.778,672.165,474.54,399.819,476.327,543.362,254.402,485.915,90.988,76.701,70.285,1252.351,410.124,477.024,961.869,334.498,370.827,515.618,37,69,494,405,496,211,128.555,166.629 +58.5468,372.079,340.283,524.783,166.638,58,50,643,529,153,119,118,271,634.144,318.21,551.612,578.658,522.822,459.662,299.862,384.296,342.874,481.728,466.868,472.192,560.57,55,350.981,348.472,339.697,92.33,128.256,79.466,1213.215,784.128,1301.188,671.397,474.747,400.532,483.954,539.517,256.043,487.091,92.197,77.069,70.612,1246.029,408.809,472.865,959.761,334.885,365.524,509.452,39,71,491,405,493,211,131.042,165.653 +58.7136,372.547,334.017,528.199,170.757,59,50,647,526,149,118,122,272,629.278,314.885,547.907,583.655,522.438,465.537,297.694,392.23,345.719,483.016,463.1,475.128,562.747,54.5,344.17,343.046,339.491,92.683,124.913,81.066,1208.478,782.99,1292.409,669.022,478.3,398.188,480.112,546.793,255.038,491.977,89.865,76.871,70.811,1237.642,403.349,469.23,944.274,330.435,359.409,503.773,37,72,507,415,497,213,128.527,163.856 +58.8804,371.709,332.389,523.138,169.427,59,50,643,530,150,121,119,271,635.796,317.093,542.952,587.633,525.026,463.541,300.154,387.752,344.424,484.757,472.639,474.033,565.308,54,348.275,342.15,341.944,93.659,123.015,81.505,1209.806,774.986,1283.96,671.383,473.707,395.21,477.003,539.828,258.336,492.883,92.438,75.54,68.678,1233.3,403.222,467.038,943.977,328.619,355.799,493.396,39,69,506,414,489,212,127.176,163.091 +59.0472,367.923,332.786,524.153,168.313,59,50,653,534,152,121,121,274,626.732,313.625,545.427,590.038,524.902,467.085,298.299,396.795,349.218,490.659,473.24,481.875,574.997,54,340.997,344.356,339.188,92.669,126.967,82.921,1203.601,773.312,1285.549,666.8,473.535,391.784,472.232,542.461,256.086,498.605,91.585,77.536,69.574,1234.474,398.597,465.497,938.249,328.217,354.398,496.336,38,70,508,419,489,212,123.282,162.709 +59.214,360.927,327.799,521.672,171.961,59,49,658,530,152,123,124,275,627.426,315.433,545.456,584.396,533.33,465.143,301.525,396.002,353.472,487.701,480.687,485.632,578.943,53,342.65,338.326,333.932,90.859,126.33,82.709,1202.128,770.781,1287.745,664.131,465.778,389.899,468.255,546.833,260.954,503.392,93.121,76.078,70.015,1222.183,401.581,455.907,939.762,322.334,355.059,490.859,36,70,517,420,492,212,125.982,160.799 +59.3808,358.412,325.743,517.879,171.026,59,50,655,539,155,122,124,272,617.075,314.961,541.47,590.812,530.614,466.242,299.024,403.037,353.714,486.187,484.358,490.418,576.697,54,334.866,338.184,335.318,90.59,124.658,79.749,1203.987,765.116,1280.355,661.913,464.15,389.985,469.309,545.817,262.271,505.885,91.656,75.582,69.844,1217.827,392.43,458.693,929.579,321.911,349.585,489.883,38,70,515,429,496,212,123.723,158.96 +59.5476,363.498,328.725,513.617,172.857,60,50,656,540,157,124,122,271,627.365,310.896,539.763,593.947,534.197,464.22,301.902,406.145,348.336,488.536,486.373,489.499,588.532,54,337.044,338.297,335.092,91.962,125.451,80.457,1195.366,762.656,1283.158,660.42,463.824,385.824,469.422,541.431,266.503,501.381,95.837,76.956,70.37,1206.215,396.485,452.929,925.027,321.456,345.483,481.279,38,70,523,431,494,210,123.609,159.172 +59.7144,352.043,322.855,509.3,170.701,58,50,661,546,153,123,120,274,625.615,310.8,542.808,586.772,535.695,466.724,301.405,408.552,352.063,495.697,488.281,491.04,588.239,52.5,339.448,337.646,331.287,89.968,127.208,81.349,1189.795,760.528,1276.871,664.023,463.165,377.415,468.616,542.082,265.71,495.957,92.111,77.112,71.11,1206.102,391.525,448.524,920.654,319.786,345.492,475.427,37,68,525,433,494,215,123.04,157.276 +59.8812,352.872,320.919,512.85,170.728,60,52,664,553,152,126,124,278,620.112,308.568,538.607,598.333,532.121,470.701,301.021,407.589,357.227,496.745,493.246,495.702,590.809,55,335.912,334.553,329.194,90.831,128.723,80.84,1186.563,757.357,1271.708,659.994,460.582,378.746,467.894,539.6,265.682,504.242,91.116,75.568,71.138,1190.162,389.471,446.403,912.909,314.481,343.131,477.672,38,72,527,432,496,210,120.335,160.686 +60.048,353.582,316.107,506.031,173.939,58,50,674,551,160,125,123,273,622.055,307.065,537.219,596.268,534.879,464.56,307.176,407.304,355.364,494.523,494.682,494.123,596.185,54.5,334.045,330.385,329.548,92.613,125.182,79.183,1178.059,757.518,1272.553,655.272,451.968,374.989,467.872,539.119,271.513,504.355,94.784,76.474,71.38,1183.09,388.513,448.807,909.693,312.977,337.467,474.096,38,71,530,442,489,213,120.368,156.118 +60.2148,355.116,317.735,509.71,171.65,59,50,671,550,158,127,124,272,619.66,308.191,531.703,597.219,538.335,461.678,307.04,412.228,359.091,496.207,500.884,492.189,596.226,54.5,329.873,326.993,327.355,91.877,128.411,80.939,1169.489,754.018,1270.606,658.728,451.438,378.208,465.646,545.276,272.758,506.012,93.988,76.205,72.276,1183.981,384.665,441.481,906.666,306.281,335.607,468.071,38,71,536,445,490,211,120.837,153.427 +60.3816,346.853,313.788,501.736,176.34,60,51,677,560,161,127,123,277,609.918,310.96,534.629,596.863,536.122,469.529,303.6,414.515,360.684,495.414,504.327,497.857,597.077,55,332.386,332.153,333.503,90.406,125.919,78.97,1173.816,748.24,1261.059,662.843,450.588,371.554,469.189,544.879,273.254,506.168,92.964,77.451,70.37,1177.065,382.077,440.943,904.148,308.016,335.086,463.077,38,72,540,445,494,211,119.175,156.285 +60.5484,345.854,313.292,499.552,171.848,60,52,679,554,161,127,124,271,611.754,306.922,529.562,600.586,535.576,465.367,305.178,418.507,362.491,489.951,503.175,498.506,597.754,53,333.626,327.027,323.749,92.726,126.032,80.981,1164.32,745.667,1261.836,651.561,445.563,367.315,466.5,544.101,276.834,512.838,90.903,77.296,70.271,1169.385,381.412,430.18,893.031,304.689,331.246,462.885,39,67,535,446,490,213,115.636,152.72 +60.7152,347.51,309.967,497.478,173.151,61,50,681,553,160,128,123,271,608.41,306.446,532.635,595.746,539.202,462.381,298.455,421.479,361.068,496.844,511.847,502.652,599.357,54,328.13,324.563,322.275,92.966,127.052,79.593,1165.41,746.991,1249.442,645.177,441.124,365.785,465.58,544.044,274.867,511.804,92.765,74.308,73.314,1168.126,380.62,435.512,892.749,301.055,325.632,459.214,38,70,539,447,487,214,118.35,155.351 +60.882,340.718,307.795,490.202,171.902,59,50,681,559,162,127,124,270,605.605,304.305,532.26,603.063,536.99,460.653,304.851,419.936,361.907,498.146,509.413,499.837,602.874,53,327.762,322.288,321.837,92.712,131.655,79.579,1156.237,740.078,1243.438,642.471,439.835,359.421,464.702,538.128,280.019,521.562,93.519,76.559,72.276,1167.815,375.769,428.483,897.586,298.962,326.296,455.203,37,69,544,447,485,210,113.978,151.729 +61.0488,342.693,302.682,487.858,173.14,58,51,685,560,165,128,124,270,610.668,302.155,526.662,599.272,535.235,458.353,299.585,422.554,360.727,500.637,514.594,505.962,607.5,54.5,327.451,320.679,319.843,92.698,127.052,78.701,1149.251,728.12,1240.933,641.736,434.309,360.625,465.207,541.469,278.349,516.69,94.528,78.287,70.171,1153.049,371.696,431.439,889.637,301.126,319.351,449.751,40,69,541,454,484,210,112.423,152.944 +61.2156,338.765,301.873,479.678,170.86,60,52,685,567,163,131,124,269,607.694,298.789,523.565,598.549,531.089,463.41,303.29,420.792,360.058,497.651,519.087,508.675,609.72,53,321.766,321.118,321.526,92.245,129.573,80.188,1141.493,737.29,1244.061,643.388,429.807,360.584,460.952,541.503,279.141,522.908,91.87,76.319,70.783,1137.83,367.071,427.705,883.371,297.883,318.653,445.735,37,69,546,458,482,210,116.062,149.508 +61.3824,334.513,303.145,486.211,175.374,62,50,696,565,164,131,122,266,605.149,302.996,524.788,602.02,530.114,459.543,302.428,426.149,366.303,496.872,521.024,509.95,610.064,54,322.29,317.681,320.932,90.109,129.941,79.678,1142.638,724.971,1237.575,642.509,433.247,350.717,464.303,534.76,285.595,521.633,93.547,74.846,72.546,1141.932,367.495,425.555,887.897,295.968,320.536,442.04,39,69,548,454,486,210,115.124,149.21 +61.5492,336.474,302.145,478.546,169.1,60,51,692,562,162,131,124,265,605.862,301.274,525.812,599.47,528.535,455.761,299.273,427.146,365.065,501.047,523.075,513.943,613.227,53.5,318.756,317.283,317.964,89.869,130.564,81.094,1142.395,718.348,1238.929,631.906,426.241,348.905,467.2,538.709,284.831,522.497,95.282,76.786,72.617,1132.371,366.689,424.763,879.524,294.431,315.668,443.033,37,70,547,456,486,209,109.638,148.659 +61.716,331.78,295.793,474.146,171.395,59,50,700,563,165,131,124,265,608.313,299.542,524.346,596.651,532.845,453.065,298.771,424.102,365.649,498.429,521.449,511.704,615.375,53.5,322.106,313.509,314.23,92.896,127.307,80.641,1139.218,725.043,1236.729,638.039,421.474,349.176,460.823,543.622,283.727,519.466,94.87,77.027,71.024,1129.556,362.092,419.685,888.661,290.478,314.124,433.897,37,70,545,461,489,210,109.993,146.918 +61.8828,331.665,295.207,470.162,171.719,60,51,699,570,165,131,122,263,599.084,296.898,521.311,589.101,523.306,455.209,295.783,425.119,363.757,501.047,521.322,503.321,613.708,53.5,319.08,314.713,313.777,91.623,129.771,78.786,1133.424,721.396,1216.316,630.635,423.276,343.664,460.304,538.043,281.972,532.963,93.007,74.86,72.304,1126.487,361.838,421.255,875.069,291.941,307.364,436.701,37,70,549,459,482,211,108.955,148.262 +62.0496,331.292,294.081,469.037,170.978,60,50,704,571,165,134,124,260,600.226,296.931,520.467,590.896,521.485,447.32,298.923,427.833,364.667,497.693,527.454,514.405,615.332,54.5,317.553,320.737,311.543,92.669,128.185,81.392,1121.24,719.47,1222.276,625.441,419.115,344.066,459.563,539.388,289.671,526.562,94.6,75.993,70.768,1108.199,359.942,418.158,872.41,291.605,315.054,430.526,37,72,549,458,477,212,109.723,147.06 +62.2164,328.227,294.27,465.563,173.921,59,49,705,574,165,131,122,260,599.121,296.074,518.8,592.147,523.476,445.449,296.807,429.532,367.327,504.416,525.989,511.918,616.961,54.5,316.069,313.901,313.339,89.331,129.219,81.222,1118.232,720.875,1220.169,625.256,412.995,340.992,459.45,538.459,290.874,529.522,93.803,76.97,72.261,1109.939,359.546,419.063,871.971,288.799,312.378,424.199,38,71,546,459,475,210,107.165,147.357 +62.3832,321.533,291.393,459.974,170.365,58,49,707,571,167,131,122,259,593.784,296.558,516.095,594.06,524.473,445.011,292.767,420.379,370.101,503.935,526.179,512.043,612.471,53,313.763,314.615,312.985,89.43,130.168,78.8,1118.983,709.072,1215.246,619.861,415.405,334.919,460.347,534.916,290.662,529.734,96.32,77.819,72.802,1114.833,352.262,417.196,869.157,288.812,305.644,427.684,37,69,556,461,475,206,108.344,147.428 +62.55,318.819,289.993,459.874,171.267,60,50,705,574,162,134,124,262,595.952,293.707,516.659,589.866,516.878,447.602,290.135,420.255,367.171,506.199,529.44,504.426,619.252,52.5,313.721,309.854,309.421,90.321,128.68,79.013,1110.792,705.958,1215.941,608.79,408.442,331.024,460.007,539.97,287.35,527.057,93.576,77.451,71.38,1092.118,348.967,413.943,867.672,289.752,309.498,419.18,37,68,547,462,467,211,105.672,144.796 +62.7168,318.876,286.527,455.229,171.833,62,48,704,579,168,135,121,253,591.573,295.758,512.652,586.139,517.219,438.729,291.918,417.209,364.838,500.099,523.304,505.693,613.406,52,312.137,315.361,310.157,91.948,129.332,79.862,1104.667,709.35,1202.493,613.454,403.03,331.821,460.012,538.482,293.761,532.057,94.145,77.14,72.603,1100.137,348.797,416.46,871.434,287.61,307.377,417.704,36,68,551,458,467,208,108.287,145.178 +62.8836,321.847,284.815,451.936,171.365,63,50,706,576,167,133,120,259,605.562,297.939,513.239,587.591,510.52,434.153,287.133,422,365.876,501.925,525.395,511.932,618.036,52,310.61,309.039,313.07,88.794,126.669,80.514,1104.557,702.878,1207.222,611.79,402.293,326.556,458.426,528.235,290.322,529.196,92.922,74.365,70.825,1093.461,349.434,409.841,864.984,286.768,299.09,410.294,36,68,546,454,475,206,107.52,142.362 +63.0504,320.155,282.166,439.133,169.214,59,48,714,583,168,134,120,252,588.53,292.862,514.548,585.57,510.181,433.976,290.7,419.562,366.445,497.693,535.003,506.739,621.026,53,310.102,311.457,306.859,90.477,128.68,78.772,1099.614,698.836,1205.384,607.844,400.661,326.679,453.578,540.152,291.709,531.462,93.846,77.338,72.034,1095.71,347.934,409.516,870.981,285.925,302.708,409.946,36,70,551,456,468,207,107.165,144.258 +63.2172,313.094,283.768,439.318,165.053,59,49,708,579,169,137,120,249,559.938,292.758,508.738,579.415,505.189,428.409,289.188,416.384,361.281,502.548,529.963,502.018,621.43,52.5,310.417,303.624,310.177,91.778,127.108,78.021,1096.265,707.22,1201.311,604.145,397.158,328.478,455.389,543.379,291.525,529.408,95.268,75.922,72.432,1089.643,342.814,408.78,866.597,281.391,304.931,406.957,36,69,547,453,466,205,106.312,142.051 +63.384,314.245,281.426,442.585,162.704,58,49,716,579,168,135,121,247,568.441,294.461,509.331,579.061,506.072,427.286,280.959,419.412,362.434,498.825,531.349,501.931,617.882,53,310.474,305.055,308.778,90.534,127.349,78.418,1087.589,699.661,1200.673,597.941,392.269,322.095,455.871,536.472,293.209,528.219,93.235,79.434,72.375,1090.845,341.725,410.393,858.408,280.564,300.351,408.125,37,69,547,457,458,202,105.218,143.409 +63.5508,305.324,278.886,434.446,163.893,60,51,709,582,172,136,118,245,579.877,294.918,507.693,579.784,503.105,422.043,277.136,417.997,359.603,495.91,528.804,502.797,614.783,52,307.619,307.038,305.104,88.384,127.632,79.905,1088.009,700.936,1192.609,590.642,393.27,321.105,454.852,535.927,290.973,529.224,96.42,76.644,71.664,1087.691,341.06,414.098,859.638,283.95,301.397,404.276,37,67,550,455,460,207,106.198,144.767 +63.7176,305.337,273.811,430.055,161.685,60,49,716,575,172,139,119,244,585.04,290.819,511.356,575.02,499.389,422.63,279.552,415.857,359.887,495.782,529.734,496.641,618.901,51.5,304.98,294.358,303.283,90.364,129.02,76.959,1087.334,696.873,1188.152,585.561,391.048,318.683,452.573,543.171,291.667,528.403,93.874,76.092,72.162,1087.959,341.174,410.322,861.915,279.031,301.803,406.393,36,67,538,449,455,201,102.403,141.648 +63.8844,303.988,275.808,425.736,163.949,60,49,712,581,170,136,120,238,590.912,290.916,512.988,567.885,496.767,419.204,282.242,416.889,361.651,499.236,531.25,497.67,612.93,52,304.089,300.568,323.353,88.469,128.227,80.84,1085.041,697.872,1188.012,580.163,387.943,315.866,451.129,537.394,289.473,526.817,93.576,77.381,70.882,1082.33,340.056,405.343,858.747,280.062,302.57,399.247,36,68,537,446,457,203,102.801,140.791 +64.0512,307.312,272.097,429.004,160.326,59,48,717,578,168,137,119,236,596.267,291.167,509.961,564.184,492.875,417.836,273.876,414.812,356.544,495.825,528.077,499.088,615.998,52.5,300.725,299.637,299.34,89.742,127.208,79.735,1074.024,695.646,1185.779,578.962,383.193,317.719,453.377,538.189,290.619,526.448,91.656,75.058,70.185,1084.772,338.014,403.074,860.236,281.2,291.045,398.163,36,69,540,446,448,199,104.208,141.669 +64.218,302.056,273.609,422.838,157.311,58,47,714,583,168,134,119,234,593.857,286.924,508.123,562.421,484.014,411.871,274.919,411.01,353.543,491.636,529.454,497.288,614.924,50.5,304.43,299.297,300.994,90.42,128.426,81.151,1081.875,697.82,1181.714,576.144,388.212,316.616,455.098,536.34,288.652,527.284,95.083,75.469,71.295,1081.086,336.337,404.778,853.486,280.368,297.632,398.981,36,65,542,443,450,199,98.196,139.56 +64.3848,299.636,271.63,425.421,160.17,59,47,719,580,174,136,115,239,600.355,288.325,511.965,563.221,492.976,408.385,271.011,411.214,358.052,494.027,530.017,497.97,611.848,51,308.248,292.397,300.796,89.006,126.202,79.749,1072.648,700.813,1193.348,578.077,376.581,311.211,454.495,537.422,291.426,523.573,93.789,76.857,69.602,1085.244,336.294,407.635,857.757,278.329,299.723,392.949,36,66,536,444,442,197,100.399,139.603 +64.5516,297.31,264.999,421.583,160.128,60,48,718,582,170,134,116,232,601.205,288.941,508.101,556.037,483.463,399.94,268.196,408.276,360.172,494.862,532.311,492.685,604.387,50.5,300.895,300.216,300.768,88.073,125.664,77.766,1072.016,690.817,1182.899,568.337,381.761,309.701,459.89,539.97,291.454,523.8,93.576,77.126,73.029,1079.926,332.221,408.95,852.906,281.961,299.374,376.25,34,67,535,442,440,198,102.671,136.504 +64.7184,298.717,262.902,416.46,159.279,59,47,712,583,171,135,115,229,593.989,292.151,502.456,554.706,480.943,401.127,264.586,405.487,354.197,490.093,528.46,487.575,600.278,50.5,302.182,306.268,300.556,87.563,125.451,78.729,1055.19,682.515,1135.29,567.507,380.301,306.051,457.244,537.705,291.27,522.823,93.192,74.45,71.081,1078.257,332.178,407.338,860.558,277.536,296.707,373.565,36,65,530,439,442,196,99.717,141.337 +64.8852,295.45,264.489,412.382,161.048,60,49,718,584,171,137,114,227,595.15,296.831,503.943,553.64,475.686,399.595,261.857,399.287,351.395,489.329,522.962,483.975,602.563,50,299.976,299.764,300.386,89.798,127.647,80.712,1036.497,681.942,1127.308,565.953,373.502,307.582,456.281,538.747,289.614,525.797,93.405,76.191,71.11,1080.492,332.164,407.352,854.801,280.779,295.9,375.136,35,65,529,436,436,193,100.3,141.4 +65.052,295.08,266.41,408.575,160.298,59,47,723,581,169,133,115,225,594.289,296.35,507.371,545.458,470.246,395.908,261.971,403.802,353.102,492.64,517.838,482.342,596.411,50.5,302.846,297.247,295.211,87.761,127.151,80.684,1039.947,685.253,1128.896,553.935,374.494,305.407,453.451,539.71,287.888,522.993,94.045,76.857,70.185,1088.2,335.064,407.14,856.725,278.921,298.085,373.238,35,66,527,434,434,195,101.536,135.796 +65.2188,295.89,264.415,411.928,157.948,59,48,720,579,170,133,115,221,599.545,294.69,506.111,548.959,468.029,388.188,258.473,398.442,345.648,482.974,520.473,476.582,599.31,50,302.238,302.861,300.061,88.822,125.423,78.205,1050.388,678.6,1155.868,554.744,369.031,305.338,452.297,524.262,290.308,518.588,94.059,76.956,71.138,1081.963,333.168,408.554,855.155,276.474,297.614,374.355,35,65,527,438,434,195,98.637,139.603 +65.3856,291.884,263.878,404.896,160.029,58,49,713,581,169,136,116,219,590.812,297.959,509.718,538.515,463.394,386.695,256.542,397.06,346.928,481.007,512.031,475.779,591.27,50,299.184,298.477,299.509,88.271,126.91,79.664,1054.259,682.496,1166.066,548.831,372.786,304.478,449.597,527.978,288.1,521.817,94.13,77.48,70.342,1086.446,328.897,407.479,859.525,275.159,295.73,376.122,35,65,520,431,424,194,102.219,139.617 +65.5524,296.302,261.052,406.614,158.387,58,48,721,580,169,133,112,219,588.327,292.333,504.329,541.706,456.556,384.552,250.046,394.329,345.534,484.106,514.25,474.373,592.563,49,301.503,300.74,300.443,88.935,124.503,78.786,1059.252,682.823,1175.674,552.428,366.428,304.935,453.384,527.539,285.864,519.056,93.348,74.251,71.735,1088.766,332.504,403.915,868.817,283.262,298.677,373.082,34,64,519,428,427,193,98.106,139.857 +65.7192,290.885,259.837,401.236,159.831,59,48,716,577,170,136,111,216,588.57,291.054,510.219,534.139,455.458,380.291,250.515,390.735,345.662,479.011,515.288,475.411,588.424,49.5,300.061,300.075,293.613,90.307,127.208,77.228,1063.512,680.551,1180.872,546.487,365.423,300.055,451.755,526.353,285.354,519.594,92.31,76.701,71.11,1079.021,330.142,410.308,868.068,281.466,302.205,379.219,34,65,521,423,420,188,98.012,136.561 +65.886,293.621,261.795,406.241,158.076,60,47,719,579,171,133,114,211,587.526,296.031,508.695,532.177,450.589,379.087,246.891,390.299,334.367,480.143,511.449,468,588.561,48.5,301.051,295.734,299.566,90.887,126.783,79.31,1061.172,680.105,1183.979,539.302,363.211,297.827,445.397,525.32,284.675,514.665,92.964,76.871,69.432,1078.922,328.02,408.073,861.335,281.706,301.525,375.189,34,63,512,418,419,190,98.111,139.985 +66.0528,288.418,255.517,402.765,155.401,58,46,718,579,170,133,111,212,590.476,292.473,516.682,529.817,451.496,372.886,244.901,384.468,338.236,481.077,509.368,461.593,586.54,49.5,302.804,302.154,300.089,89.317,127.547,77.809,1070.282,682.372,1176.962,539.321,359.915,299.614,448.808,522.97,284.024,511.28,94.486,74.903,71.152,1089.275,328.572,408.879,860.741,285.086,301.227,374.284,33,66,508,417,413,191,99.419,139.744 +66.2196,285.416,256.182,399.313,157.453,59,47,719,577,174,133,110,208,591.003,293.363,510.319,529.678,442.526,373.098,244.588,381.043,336.771,480.228,507.772,461.712,582.677,49,304.501,296.667,300.004,89.812,126.542,77.965,1062.388,681.461,1178.116,544.008,362.609,297.43,441.293,524.386,287.732,506.168,92.453,77.395,70.086,1090.901,330.948,413.702,864.999,282.498,303.452,375.953,33,65,506,408,418,187,98.196,138.471 +66.3864,288.219,255.008,399.17,157.906,58,48,716,578,172,134,109,206,587.769,295.868,509.976,519.98,443.383,363.006,241.803,379.557,337.795,478.459,501.423,454.677,578.595,49,304.982,300.612,302.875,90.746,123.497,80.117,1047.856,679.286,1165.707,532.511,364.842,298.964,439.75,527.935,280.967,508.349,90.106,75.851,70.953,1096.007,329.321,411.623,870.571,286.033,305.733,376.844,34,64,498,409,410,183,97.614,140.169 +66.5532,281.527,253.607,391.101,155.656,58,45,716,574,171,131,108,206,590.084,295.21,515.597,521.458,434.976,360.935,238.57,374.108,333.514,478.601,498.876,455.169,574.643,48.5,305.448,296.512,302.733,89.006,125.621,76.152,1054.244,674.516,1167.053,530.514,360.979,298.152,434.882,523.078,279.849,503.364,91.073,76.149,70.612,1094.494,332.405,410.449,867.092,287.886,306.044,382.57,33,64,499,404,403,187,98.02,141.64 +66.72,286.991,258.686,394.445,150.999,60,45,711,574,170,133,108,202,596.413,291.116,515.249,515.387,438.513,359.562,236.473,375,330.27,480.069,492.855,444.649,564.262,48,302.465,297.94,304.416,87.436,126.542,80.273,1053.624,676.433,1169.121,526.307,364.304,298.213,437.557,523.522,280.392,511.833,94.088,77.621,69.901,1094.791,325.87,411.666,873.683,293.33,309.487,382.401,33,63,495,406,404,185,97.187,140.16 +66.8868,287.687,256.242,395.069,150.384,58,46,717,567,171,129,107,202,588.395,291.37,512.623,512.878,432.104,357.451,234.889,370.004,328.734,475.069,493.444,446.09,560.966,49,308.375,300.853,302.154,88.497,122.633,78.885,1041.147,678.608,1159.052,527.727,356.187,297.561,440.518,522.151,276.936,507.301,93.96,76.772,69.873,1098.765,328.77,418.752,871.293,294.362,307.05,383.673,33,65,497,400,401,185,95.837,141.315 +67.0536,288.148,255.036,390.007,153.877,58,44,717,569,171,131,107,198,592.357,293.331,516.395,509.987,435.005,354.605,232.919,369.231,330.782,473.237,489.725,440.476,560.594,48,310.327,300.457,302.507,88.426,124.63,79.197,1041.362,673.393,1164.208,526.561,360.611,299.076,434.378,519.67,276.452,506.04,93.931,74.818,70.271,1100.745,330.311,413.985,877.671,293.669,313.483,383.716,33,63,489,394,394,186,95.738,139.518 +67.2204,287.417,258.474,389.627,153.118,58,46,715,568,170,132,107,196,594.653,293.807,516.867,504.638,426.602,350.706,232.738,368.087,320.554,470.505,485.383,439.193,555.832,47.5,312.575,297.12,306.905,89.416,123.61,77.171,1040.361,676.757,1143.937,526.188,360.881,295.777,432.977,520.454,274.131,493.648,90.874,76.758,68.266,1108.482,329.746,417.535,879.213,296.865,311.698,385.172,32,63,489,391,394,181,95.695,138.768 +67.3872,283.417,255.801,387.962,150.481,58,45,707,566,168,131,106,194,589.297,295.821,512.652,501.225,427.072,346.874,227.263,361.897,327.084,464.759,480.222,435.003,551.459,46,309.082,295.055,306.565,87.592,124.772,77.752,1032.274,672.516,1142.448,518.873,363.778,300.112,437.486,514.691,273.112,501.99,92.637,73.812,69.048,1115.031,331.273,414.862,882.664,302.479,319.335,384.352,31,61,485,387,392,180,96.377,139.235 +67.554,285.966,257.742,387.723,151.488,56,45,706,564,169,129,105,191,599.158,299.309,517.232,496.141,422.746,345.069,227.765,359.163,325.206,469.797,476.656,427.722,552.876,48.5,308.432,301.616,307.499,87.224,126.202,76.619,1043.01,675.989,1143.082,521.085,359.034,297.019,430.472,515.229,270.649,497.571,91.315,75.54,69.858,1108.242,330.113,421.001,884.955,297.275,319.972,387.124,33,64,479,383,381,182,95.368,138.754 +67.7208,287.284,253.183,388.351,149.475,57,43,716,570,170,129,104,189,597.235,294.162,514.964,498.362,422.069,343.608,225.145,356.054,315.348,462.806,474.585,422.514,544.194,46.5,308.361,304.048,307.131,90.265,122.888,77.171,1037.096,675.024,1138.126,517.514,356.035,299.627,429.411,512.578,270.437,493.577,90.874,75.455,70.868,1110.052,332.871,419.926,891.758,306.466,321.29,387.944,33,60,473,382,384,178,95.539,137.99 +67.8876,287.815,253.565,389.712,150.087,58,45,703,565,166,129,104,188,597.89,295.888,514.999,492.119,412.035,340.707,222.165,355.695,316.244,468.297,466.515,420.47,537.742,47.5,312.476,302.578,311.401,88.752,121.373,78.446,1025.691,678.947,1140.791,516.541,355.073,300.052,424.963,508.671,272.036,491.595,92.723,75.313,67.128,1112.456,332.801,422.203,887.317,307.117,324.393,390.022,32,63,468,379,381,181,97.5,139.362 +68.0544,282.171,254.996,388.682,146.368,57,43,707,557,169,129,105,188,603.509,297.023,520.588,493.211,413.747,341.89,221.789,348.54,316.628,463.499,464.445,418.653,533.884,47.5,308.05,302.281,307.937,87.266,121.84,76.01,1026.119,676.525,1138.447,516.352,356.796,297.986,431.798,513.795,268.951,488.932,93.917,75.611,67.427,1112.584,331.994,423.15,887.827,312.405,325.937,389.57,33,62,467,372,381,180,98.509,139.56 +68.2212,285.747,255.418,384.794,147.796,58,43,709,564,168,127,102,188,604.844,296.33,516.102,493.988,411.369,336.558,215.576,345.692,311.322,460.102,464.478,418.374,527.644,47.5,309.676,302.069,312.42,87.436,123.313,77.965,1032.991,674.018,1138.469,513.246,357.055,300.906,428.46,509.864,263.007,485.335,92.95,73.869,68.963,1120.023,333.494,422.613,890.684,315.842,332.001,386.572,33,62,460,375,377,177,97.015,142.376 +68.388,288.446,255.774,384.595,148.093,56,43,706,564,170,127,102,185,611.498,299.894,513.217,484.273,404.05,331.912,217.424,346.966,310.924,455.842,463.34,409.657,527.681,46,315.743,305.491,305.081,87.677,123.738,75.5,1030.241,672.444,1133.638,507.209,357.292,294.291,423.336,509.608,265.724,481.752,91.443,74.747,67.498,1119.5,332.588,430.901,895.591,316.874,331.619,396.64,32,60,463,370,369,175,98.552,140.71 +68.5548,287.721,256.057,386.172,143.144,57,42,702,553,168,126,101,185,606.741,299.323,513.74,485.893,406.808,330.672,211.358,345.576,309.515,456.975,462.696,409.764,522.651,47,313.508,303.497,310.666,88.794,123.426,78.418,1035.093,685.972,1133.806,506.356,364.438,295.292,422.979,517.578,260.756,474.557,91.685,75.88,66.247,1132.088,333.649,435.795,898.774,321.71,332.172,397.163,32,62,458,363,368,173,97.571,142.121 +68.7216,287.409,250.778,388.331,144.77,56,42,697,558,166,127,100,180,608.788,302.495,522.764,485.519,401.866,331.813,210.421,345.194,308.079,459.098,455.948,403.406,516.407,46.5,318.274,306.325,313.254,88.356,121.911,77.058,1042.921,689.545,1136.609,508.889,359.791,298.489,422.54,517.847,261.195,473.509,93.163,74.393,68.01,1130.504,334.158,429.812,907.543,324.694,341.254,398.153,32,61,452,363,366,176,95.908,143.593 +68.8884,288.105,253.24,385.745,145.237,56,42,704,560,164,126,102,183,616.047,303.743,519.157,481.996,406.211,329.104,210.179,344.585,305.219,454.201,449.5,401.663,511.789,46,317.948,310.086,310.313,87.606,122.463,75.614,1042.65,691.866,1141.853,509.385,360.393,300.12,428.47,515.922,256.709,473.495,93.263,75.766,68.749,1144.633,339.024,437.803,911.333,327.055,339.553,397.489,31,61,448,357,367,172,93.563,142.192 +69.0552,284.724,256.906,382.549,143.568,56,42,694,552,170,125,99,181,618.804,308.053,522.149,478.475,395.741,330.39,208.872,336.178,299.828,456.649,445.991,390.082,506.536,45,318.613,311.161,310.793,88.356,120.395,76.038,1043.477,688.996,1145.66,504.947,357.423,301.154,425.852,512.172,258.704,474.571,90.334,73.812,68.38,1141.055,339.448,436.771,920.583,330.859,342.784,402.989,31,59,447,358,359,175,98.054,141.117 +69.222,285.625,255.01,386.591,143.399,56,45,697,554,162,124,99,177,616.207,307.108,522.505,477.782,400.358,324.939,207.877,335.762,302.815,450.549,439.769,393.463,503.981,46.5,313.339,306.82,313.735,88.808,120.594,76.152,1049.09,698.742,1147.055,507.711,363.928,302.99,427.636,518.984,254.911,470.946,92.253,73.982,67.398,1150.276,341.018,441.82,920.088,335.129,351.724,406.666,31,62,445,350,355,174,98.808,144.909 +69.3888,288.057,260.568,384.355,143.3,56,42,697,554,163,125,101,175,619.468,308.971,524.277,482.662,399.329,325.805,203.769,334.022,299.159,447.167,437.069,389.531,501.055,45,316.704,306.028,313.735,89.784,122.831,77.171,1052.97,700.401,1148.449,504.067,363.537,307.653,422.756,510.386,256.751,464.785,92.922,74.322,68.593,1154.534,341.159,442.23,916.241,336.812,352.192,405.789,31,59,442,344,353,171,98.665,143.423 +69.5556,289.028,257.348,384.936,143.568,56,43,690,549,165,124,98,178,622.808,315.786,527.648,474.974,392.558,327.03,202.49,328.419,296.03,446.02,437.237,388.435,496.174,45,322.12,308.587,317.397,87.479,123.469,77.072,1056.933,702.105,1163.551,510.066,366.103,308.22,419.374,508.152,252.76,465.691,92.197,74.605,69.176,1156.995,344.936,443.828,922.139,337.151,354.969,408.207,31,59,438,346,355,171,97.997,144.583 +69.7224,287,261.487,392.345,143.766,56,43,685,550,163,125,100,175,629.374,312.318,534.951,476.554,391.508,319.704,202.533,333.031,295.959,446.94,425.753,385.811,495.05,44.5,320.14,313.395,319.773,87.139,121.854,75.217,1059.153,709.471,1164.155,509.015,365.52,307.116,422.524,507.75,249.943,461.768,89.182,75.073,67.74,1158.862,341.923,446.247,932.195,342.157,357.25,414.514,29,60,431,338,352,167,96.207,144.23 +69.8892,291.751,263.683,383.915,142.663,55,41,693,552,163,122,97,173,631.025,311.254,530.951,476.324,394.736,326.255,203.656,329.292,294.01,451.285,425.71,380.291,489.102,44.5,324.368,313.933,314.838,88.95,121.514,78.035,1073.778,710.64,1163.745,505.588,370.703,310.726,424.45,505.5,243.433,455.353,91.557,76.191,67.996,1166.542,344.031,451.607,924.034,343.514,366.361,417.978,31,58,430,338,346,167,96.931,143.084 +70.056,291.596,259.563,385.676,143.356,55,43,693,543,165,125,97,172,629.041,314.775,535.277,476.242,391.427,324.165,199.193,327.501,293.739,444.591,425.966,380.436,493.591,45,323.774,314.088,319.985,88.497,119.517,76.293,1072.557,706.183,1176.657,506.357,369.177,317.736,426.362,511.091,249.476,455.424,89.651,72.75,66.958,1173.614,350.551,447.619,932.987,348.393,368.103,417.936,30,60,429,335,341,169,96.562,143.975 +70.2228,290.202,265.873,387.979,140.669,55,41,686,544,163,121,96,169,629.712,315.905,533.29,476.559,390.371,320.991,201.31,321.824,286.086,442.935,417.366,371.638,482.426,44.5,326.419,314.682,317.114,88.822,121.189,76.223,1076.772,713.789,1183.083,505.119,370.59,313.756,423.814,516.287,241.82,451.628,89.125,74.464,67.114,1176.697,345.7,457.505,938.871,351.207,368.358,423.408,30,59,427,332,342,166,97.059,143.607 +70.3896,292.807,264.868,385.092,141.532,54,42,690,543,162,123,97,173,636.047,317.246,536.031,474.478,392.288,320.042,196.151,323.608,290.126,442.439,410.004,373.874,476.356,44.5,328.229,315.05,319.136,88.398,119.971,76.166,1083.067,722.323,1188.842,507.865,373.777,319.532,424.507,507.242,242.244,452.166,90.988,74.86,67.157,1181.039,354.257,457.604,945.886,355.477,376.605,426.166,30,59,423,329,334,169,96.96,144.329 +70.5564,292.949,262.301,390.178,140.401,54,42,680,540,160,122,96,171,636.271,322.432,543.806,475.336,392.134,323.472,198.709,323.254,281.15,444.237,412.09,364.953,477.151,44,328.158,316.69,319.659,88.356,120.551,77.228,1090.225,729.468,1195.618,505.929,376.057,312.722,423.941,508.348,239.852,445.736,89.907,75.922,67.228,1196.88,354.143,460.702,947.117,360.978,378.05,426.576,30,58,425,325,331,162,100.2,145.291 +70.7232,292.313,263.4,388.738,139.114,53,41,681,540,165,120,95,171,635.93,322.146,540.218,475.843,389.233,325.533,196.605,323.781,281.392,440.656,409.749,362.743,468,44,327.621,314.145,323.704,88.384,121.486,75.784,1089.969,731.605,1199.239,508.02,381.901,321.628,424.808,508.035,235.62,442.961,91.727,73.827,66.289,1199.383,356.901,461.607,954.571,360.511,381.266,432.218,30,58,415,323,329,166,99.22,147.201 +70.89,293.859,264.436,390.121,138.888,53,41,678,538,164,121,95,170,637.136,319.794,541.257,475.718,392.792,321.305,195.013,315.88,280.908,441.661,408.54,363.396,463.983,43,327.621,321.554,324.142,89.077,121.019,76.449,1096.952,731.548,1212.801,508.42,377.415,326.262,426.976,512.183,239.838,446.062,88.187,73.303,68.237,1199.963,358.768,465.313,961.006,362.01,384.596,436.248,30,56,414,323,329,163,99.514,146.239 +71.0568,296.907,265.844,395.293,139.383,54,43,678,538,160,120,97,173,639.75,319.25,545.77,473.855,391.252,321.685,196.221,318.244,280.026,434.669,402.626,360.466,460.834,43,330.845,322.544,326.815,89.218,121.203,75.415,1110.618,729.053,1216.605,510.991,383.86,323.427,427.91,519.381,236.286,441.743,91.045,73.742,68.479,1200.359,358.203,462.781,963.226,365.856,385.106,443.106,30,56,411,319,326,164,99.476,147.431 +71.2236,299.598,268.593,390.604,136.781,55,40,678,530,157,119,95,171,642.064,322.93,544.397,472.224,393.736,321.814,193.822,321.388,277.964,441.293,401.567,356.753,456.869,43.5,333.263,321.059,325.754,88.935,121.358,77.724,1107.19,737.305,1228.578,506.44,382.287,329.954,428.246,518.13,234.658,444.915,89.794,75.158,65.834,1211.575,361.696,474.464,961.741,372.997,391.751,442.328,29,58,413,316,324,164,100.328,148.531 +71.3904,299.083,269.664,390.465,138.831,54,40,676,531,159,120,96,170,648.537,322.794,546.957,478.773,395.156,324.053,194.417,319.591,275.503,439.864,394.539,349.801,455.254,42.5,328.78,326.348,325.627,88.497,123.426,76.959,1122.948,744.307,1228.246,510.761,383.816,333.14,424.794,524.343,233.865,438.712,89.893,72.878,65.92,1220.754,362.007,473.092,974.301,378.28,391.921,448.354,29,56,404,315,320,161,98.125,146.975 +71.5572,299.91,270.235,388.274,138.223,53,41,675,526,157,118,96,168,646.319,328.635,555.363,474.939,393.328,322.282,191.504,312.826,273.283,436.297,391.073,351.74,455.554,42,333.376,322.191,328.596,88.893,120.679,77.483,1137.86,741.752,1229.594,513.082,387.019,331.663,423.503,521.668,232.832,439.094,91.756,73.402,68.166,1223.357,364.751,472.823,980.651,375.543,396.536,452.566,29,55,406,313,319,158,98.154,146.607 +71.724,296.842,270.65,398.403,132.892,54,42,662,534,158,115,94,172,651.672,322.852,556.505,477.881,395.134,320.734,190.693,313.689,271.349,434.485,386.325,349.419,445.949,42,335.384,325.895,329.925,85.994,119.277,76.69,1129.997,740.897,1239.945,515.158,392.462,343.363,419.639,519.347,228.049,441.558,90.547,72.878,68.408,1228.463,369.475,478,982.858,376.25,402.42,456.172,29,55,398,312,321,161,99.603,150.357 +71.8908,306.295,270.556,397.424,136.3,53,41,670,530,158,117,94,175,655.98,322.227,556.025,479.939,397.102,325.738,192.086,316.067,269.585,436.014,380.832,350.621,441.848,43,335.822,332.358,331.976,86.432,119.985,74.976,1142.765,747.056,1246.375,515.616,396.71,341.713,426.829,511.804,232.521,438.429,88.713,70.811,68.038,1235.817,366.378,481.677,979.124,384.225,401.853,458.759,29,57,401,310,314,162,102.034,149.21 +72.0576,303.491,275.011,398.02,135.027,53,40,666,527,158,116,95,171,654.067,325.81,556.047,474.506,394.85,327.448,189.313,318.529,271.093,434.316,381.977,348.288,448.668,43,338.085,327.338,329.317,88.271,118.229,76.676,1151.596,752.687,1245.778,524.059,401.663,342.584,417.879,517.253,227.398,434.137,88.357,73.501,64.327,1245.364,369.772,481.719,986.578,391.182,407.634,458.038,29,57,393,308,315,163,99.078,149.225 +72.2244,308.036,271.107,394.359,135.098,54,39,666,518,157,114,93,169,659.477,324.236,558.081,481.877,392.629,328.051,191.928,316.364,267.963,431.457,383.081,342.52,439.076,42.5,337.505,331.538,338.198,88.058,122.208,75.486,1154.205,758.187,1257.824,520.898,403.696,351.099,421.655,517.96,224.1,429.435,87.078,72.637,65.977,1252.408,373.251,482.497,988.6,388.651,410.525,470.043,29,56,398,309,312,161,99.49,148.913 +72.3912,303.099,276.503,400.633,133.345,53,42,671,527,157,114,95,171,661.72,325.694,556.961,484.882,399.841,329.576,188.843,315.798,267.679,434.33,376.368,340.905,438.202,41.5,345.848,332.301,338.268,86.404,122.336,75.883,1164.756,750.723,1253.392,527.087,397.485,348.438,425.275,514.722,223.095,432.707,89.381,73.147,67.299,1259.098,374.694,489.979,1002.404,395.353,415.299,471.514,29,54,394,308,314,161,100.385,150.908 +72.558,307.438,275.959,402.791,133.514,53,41,668,521,156,113,93,170,661.477,325.074,560.247,479.651,400.765,332.173,189.655,316.134,270.182,431.287,374.821,337.011,437.732,41,344.688,334.507,340.573,89.049,116.713,75.982,1170.476,755.231,1258.276,523.86,405.418,352.765,428.387,518.456,221.708,426.858,90.249,74.025,67.654,1264.572,375.91,488.211,1007.256,393.416,416.745,475.657,28,54,395,300,309,158,100.139,151.064 +72.7248,311.134,276.248,403.631,136.95,53,41,670,516,156,116,94,171,653.904,325.729,559.862,487.289,397.898,336.968,191.217,316.52,265.701,430.607,373.295,335.035,433.004,42.5,348.492,330.83,336.967,88.596,118.965,76.293,1172.125,765.257,1262.387,529.582,411.135,354.516,430.571,524.653,221.666,429.053,88.983,72,66.815,1267.443,377.396,489.725,1008.26,396.866,421.817,477.425,28,57,397,302,308,160,102.261,152.065 +72.8916,308.021,279.748,405.757,133.543,53,40,662,521,156,113,92,173,657.425,328.038,559.367,486.159,409.026,333.494,192.299,316.519,265.957,433.438,368.372,337.138,434.508,42,348.322,335.058,340.616,87.323,122.973,78.29,1178.05,757.4,1273.258,532.348,412.214,357.639,430.898,524.329,218.807,427.608,88.94,72.326,65.905,1266.339,380.663,500.827,1019.716,407.048,425.019,489.727,30,54,399,298,308,157,100.072,153.738 +73.0584,311.238,279.644,406.357,136.512,52,39,651,514,154,113,94,172,663.141,328.257,562.465,492.901,409.545,341.671,191.418,313.859,261.547,436.269,364.741,337.327,430.243,41.5,343.062,336.713,346.017,86.672,119.815,75.741,1187.477,763.729,1287.743,533.663,416.814,360.396,429.623,520.791,218.453,423.006,89.139,73.133,66.019,1280.596,383.053,502.907,1018.938,400.628,430.177,491.367,29,54,391,300,304,158,100.509,151.743 +73.2252,309.045,279.736,408.632,134.971,55,39,656,513,154,114,92,173,658.179,323.076,561.287,493.422,410.598,335.439,189.203,317.496,259.755,434.061,367.24,336.359,426.121,42,349.595,334.846,341.973,88.384,119.73,76.874,1193.433,766.633,1285.009,535.03,416.175,360.252,426.806,526.828,215.976,420.839,90.448,70.91,66.289,1281.77,384.977,508.55,1015.855,405.634,430.729,489.798,29,55,390,300,305,156,98.736,155.013 +73.392,314.799,280.811,408.049,137.106,51,41,654,518,151,114,94,174,665.822,325.891,561.436,498.223,418.994,339.681,191.161,315.684,263.141,426.998,366.228,337.963,425.824,41.5,348.492,338.763,340.432,89.727,118.71,78.418,1187.603,767.674,1290.505,540.453,420.456,365.692,430.966,527.272,213.825,420.088,88.741,71.363,65.109,1277.725,384.34,505.962,1027.75,413.93,437.303,496.544,29,54,393,299,301,156,99.461,153.314 +73.5588,315.807,282.467,411.274,137.219,52,40,657,515,151,111,93,177,666.371,323.93,565.673,502.445,419.972,349.682,189.882,323.025,259.94,434.075,356.986,332.861,425.328,41.5,352.225,339.159,340.432,88.228,121.245,76.506,1204.969,764.373,1286.651,541.171,420.517,368.903,433.515,525.219,213.471,421.618,88.812,73.444,64.91,1293.085,392.232,506.782,1023.521,410.577,436.531,499.724,29,54,388,301,302,159,102.83,154.163 +73.7256,318.862,284.185,416.724,136.625,52,40,654,510,152,112,94,176,662.726,323.804,565.364,508.094,419.321,351.159,190.095,320.99,256.853,429.178,358.538,332.815,425.357,42,350.853,338.353,348.548,88.073,120.565,76.421,1202.164,769.29,1293.993,548.601,426.447,370.083,431.149,530.272,210.117,417.723,91.301,72.481,64.427,1298.969,388.852,513.189,1033.874,417.653,440.08,503.91,29,55,390,297,301,159,103.029,155.634 +73.8924,317.924,283.494,419.855,135.225,53,39,658,510,155,112,93,177,663.912,326.115,563.904,508.26,421.553,350.547,188.886,319.29,260.395,430.749,357.891,334.433,421.368,41,354.106,342.412,346.413,88.61,119.532,76.534,1197.541,768.144,1304.606,551.487,431.684,379.766,436.453,532.516,209.367,418.644,86.424,72.467,63.574,1306.536,392.048,517.856,1038.174,421.414,446.286,510.542,28,54,389,294,297,157,102.574,155.988 +74.0592,316.378,288.932,420.664,135.381,52,39,653,510,153,113,95,179,670.149,326.544,559.24,508.929,426.129,357.83,193.324,320.989,259.399,432.051,356.045,330.297,422.34,41.5,354.799,342.468,345.268,87.931,121.316,77.186,1220.906,768.438,1305.08,557.615,439.646,383.081,443.133,536.586,212.225,419.777,90.234,72.566,66.332,1308.87,393.336,515.919,1040.635,418.841,446.584,513.257,29,54,392,297,295,155,100.74,154.573 +74.226,322.754,288.451,418.647,133.288,51,39,656,512,155,112,94,176,671.719,329.299,567.276,514.195,424.17,358.796,191.703,322.827,257.024,432.249,355.063,338.569,422.811,42,355.59,347.05,341.393,88.935,120.056,75.968,1219.092,776.632,1308.668,561.995,435.525,381.48,439.029,536.43,209.041,413.233,89.594,70.881,66.716,1313.466,397.084,514.462,1042.077,425.289,449.871,526.86,29,55,388,296,295,154,100.624,154.276 +74.3928,326.775,290.813,427.185,136.413,50,38,655,511,155,113,95,181,665.641,330.771,563.575,517.031,424.473,360.355,190.665,328.125,256.825,431.91,354.53,331.952,415.868,42,355.732,346.102,346.046,86.333,118.937,74.778,1216.297,778.279,1310.557,562.807,442.959,385.714,437.868,538.751,205.347,420.06,90.32,72.326,64.896,1321.938,398.498,518.507,1042.374,427.707,450.367,527.666,30,54,389,297,293,155,102.204,154.003 +74.5596,324.566,295.29,427.316,133.429,51,39,647,508,153,110,93,180,668.638,330.094,564.959,523.489,434.834,366.483,190.011,330.234,255.957,433.396,351.866,333.994,417.281,41.5,360.738,344.929,349.411,89.812,118.427,75.345,1219.642,775.348,1309.222,564.668,451.401,391.968,436.707,537.522,204.922,419.607,87.035,71.887,64.512,1318.006,404.24,523.061,1052.968,427.367,457.678,533.591,28,55,391,292,294,158,102.716,157.12 +74.7264,327.241,298.758,428.119,134.08,54,38,650,504,149,109,94,183,664.224,330.123,565.753,527.427,437.336,364.901,194.36,330.489,259.542,432.235,351.046,330.58,412.752,41,359.833,350.259,345.89,90.392,117.988,76.038,1227.165,781.868,1323.271,567.37,453.315,391.689,437.443,536.699,202.771,420.131,90.106,72.977,67.683,1320.282,404.799,521.868,1052.532,430.521,458.216,531.045,28,54,391,295,295,156,103.398,155.323 +74.8932,327.002,296.189,430.202,136.357,53,38,646,510,151,110,94,187,677.63,330.321,561.7,525.315,439.925,370.335,193.664,332.013,256.184,435.731,346.704,333.229,419.275,40.5,361.529,351.504,354.572,86.559,118.894,76.152,1226.745,782.175,1328.281,575.677,452.754,393.264,439.486,535.471,205.191,418.233,89.552,73.77,64.213,1321.698,404.707,529.2,1053.746,429.616,464.139,540.619,28,53,390,295,288,154,101.721,157.927 +75.06,330.401,294.293,432.682,136.965,51,38,652,509,154,111,93,185,672.706,330.409,568.65,536.821,444.332,375.363,194.545,337.222,256.284,433.792,349.077,337.496,419.253,41,361.091,350.33,355.251,90.718,117.634,77.823,1239.466,783.478,1329.278,579.357,457.859,397.395,445.072,538.572,205.064,419.621,88.016,70.188,64.626,1331.358,401.921,528.888,1051.412,438.439,461.518,536.32,28,54,390,292,293,155,101.906,156.979 +75.2268,327.656,291.914,432.805,135.706,51,39,646,500,150,111,95,186,672.492,329.763,570.525,540.505,449.786,376.316,192.967,337.081,253.695,432.929,344.992,334.589,415.895,40.5,359.027,351.362,354.205,88.143,118.271,76.336,1243.194,776.908,1338.748,581.121,463.519,401.973,441.534,543.575,200.875,420.754,89.139,74.096,65.195,1327.483,406.461,533.358,1059.785,436.276,461.461,539.883,28,53,394,294,289,155,101.831,159.144 +75.3936,330.501,297.258,432.625,136.866,52,39,644,503,148,110,95,187,669.014,331,566.56,540.087,450.432,379.923,197.69,336.048,251.632,434.811,349.686,333.437,415.528,41,367.087,353.625,358.489,90.746,118.625,76.817,1236.665,786.951,1337.563,588.372,466.286,401.084,440.716,543.735,202.134,418.261,89.424,71.83,63.972,1330.354,409.148,530.204,1063.038,431.765,463.983,544.776,28,54,396,300,291,154,103.228,157.161 +75.5604,334.868,300.433,436.348,133.019,52,39,647,503,150,109,94,190,673.608,331.206,573.122,544.443,457.129,389.066,202.348,339.299,254.378,432.745,351.994,338.186,416.644,41,371.06,354.021,357.174,88.158,120.452,77.412,1229.197,791.367,1336.119,591.414,469.035,409.444,440.099,550.927,201.837,417.95,89.225,71.335,64.341,1326.79,412.387,526.314,1063.972,435.753,462.226,549.4,28,54,394,296,290,153,100.996,158.238 +75.7272,331.91,300.985,443.235,135.197,53,39,642,506,148,111,94,194,668.513,330.636,567.431,552.394,463.69,386.835,198.155,342.379,252.173,435.335,350.621,338.656,419.139,39.5,366.747,355.067,356.326,88.299,121.599,77.285,1252.673,785.943,1333.491,597.366,473.181,411.534,437.882,556.631,200.294,421.816,89.466,70.23,65.578,1348.599,413.915,536.809,1067.875,438.92,458.053,551.252,28,51,391,296,293,155,102.998,157.644 +75.894,334.486,302.003,443.999,136.441,52,38,642,506,152,110,94,193,669.267,328.295,571.684,555.327,468.519,391.32,200.657,343.044,253.923,441.109,347.906,339.149,414.282,40.5,364.046,358.461,359.423,86.262,119.347,75.727,1248.271,792.601,1336.205,601.539,472.872,417.288,442.496,560.113,201.186,415.698,89.324,73.827,64.882,1352.531,415.697,537.177,1072.543,439.533,462.68,553.883,28,53,397,298,287,157,103.569,159.122 +76.0608,335.071,302.993,447.188,135.437,53,38,642,505,150,110,95,194,670.808,334.054,566.703,563.61,471.351,398.727,199.918,346.668,254.008,437.91,352.944,343.748,415.344,41,368.274,362.378,361.077,87.111,117.804,75.982,1240.185,787.153,1344.653,606.448,476.262,416.403,438.264,552.963,196.997,420.371,88.471,72.241,65.436,1345.304,414.593,533.542,1066.504,435.569,460.267,552.086,29,53,396,299,287,156,103.683,157.375 +76.2276,342.146,299.643,446.293,138.789,51,38,646,501,152,111,95,196,676.356,324.929,567.053,564.036,473.609,403.178,199.804,349.763,249.641,444.902,350.607,340.254,409.799,40,369.575,357.683,361.473,88.511,120.452,75.585,1258.443,786.709,1351.677,605.193,479.217,419.247,438.864,557.381,198.936,419.876,88.741,72.92,64.185,1345.176,417.054,536.059,1068.583,438.355,466.803,558.294,29,51,397,300,287,155,103.157,155.62 +76.3944,336.682,304.53,446.792,139.086,51,38,636,507,152,111,95,196,674.968,329.302,566.464,569.018,474.562,406.52,202.213,351.285,251.96,437.854,347.392,341.796,414.749,40.5,369.024,357.485,361.572,87.238,119.234,76.846,1256.151,788.178,1344.654,610.852,487.434,421.352,441.203,563.009,197.435,417.666,88.414,73.076,64.37,1358.57,421.708,536.554,1083.858,438.227,468.786,561.532,28,53,400,299,283,159,101.75,158.026 +76.5612,337.018,301.317,448.807,133.868,51,39,649,504,150,111,95,199,669.076,329.106,570.402,576.216,482.763,414.069,205.035,353.515,256.142,440.161,347.213,345.14,417.691,39.5,369.222,361.261,362.717,88.016,119.716,76.704,1259.106,788.372,1353.084,614.347,485.341,425.13,446.738,579.169,196.954,421.094,89.694,70.414,65.237,1355.529,424.791,540.232,1078.766,438.595,469.041,564.063,28,51,405,298,285,155,101.252,158.422 +76.728,336.046,305.73,451.143,138.336,51,37,637,502,149,113,97,201,668.503,326.334,567.568,577.019,488.639,415.533,205.456,353.354,254.805,441.746,351.811,344.37,417.595,40,371.329,358.857,362.915,89.699,119.277,77.044,1266.492,796.061,1357.178,627.574,489.399,425.968,438.482,567.015,195.879,428.515,90.789,70.726,63.744,1358.683,425.173,545.974,1083.759,443.219,474.255,566.467,28,52,402,307,281,160,102.6,160.261 +76.8948,335.185,306.924,454.945,140.189,51,38,640,508,148,109,97,204,668.981,327.713,569.122,593.009,491.283,420.287,208.897,362.801,254.748,439.948,351.583,351.726,418.992,38.5,372.205,363.311,362.109,93.419,119.546,74.792,1260.652,798.434,1357.963,626.324,496.354,429.132,442.34,568.232,195.496,420.952,88.812,72.127,64.882,1365.826,427.719,541.434,1080.803,437.577,471.195,571.275,27,50,403,302,282,155,102.233,160.285 +77.0616,339.859,306.508,454.462,138.888,52,39,640,509,149,110,98,206,668.57,331.559,563.69,591.738,495.009,418.403,207.052,361.838,259.271,438.561,351.938,350.084,422.297,40.5,375.882,361.331,364.782,90.378,119.291,75.217,1259.961,800.08,1360.57,629.294,493.577,423.607,440.005,572.28,193.062,427.311,88.357,72.906,64.27,1373.025,428.808,540.543,1079.176,444.817,466.448,571.586,28,53,408,301,284,156,101.508,160.785 +77.2284,341.748,308.921,457.317,138.478,51,37,646,499,150,109,96,206,669.262,329.402,569.867,596.283,502.602,433.063,209.369,363.932,256.227,445.879,350.961,349.7,419.798,40,371.074,361.02,363.382,89.247,120.452,78.659,1273.153,789.632,1368.012,637.129,495.188,431.235,449.53,566.859,193.161,430.044,89.694,72.623,65.834,1376.024,429.982,542.183,1085.117,441.154,467.072,571.247,28,52,409,303,283,158,102.83,157.007 +77.3952,340.569,310.463,463.121,138.676,50,38,639,508,151,111,99,210,668.208,330.509,566.466,606.07,504.181,429.195,208.857,368.192,256.142,445.85,352.802,357.792,419.253,38.5,373.308,362.717,362.717,91.057,121.882,76.095,1265.443,796.958,1363.867,642.636,496.383,433.684,454.356,582.036,194.081,431.149,89.196,71.136,64.441,1364.652,428.808,539.411,1076.984,437.478,465.244,576.408,27,50,412,307,283,156,102.347,159.625 +77.562,344.332,308.114,459.114,139.821,51,39,643,507,148,111,100,207,670.517,333.677,571.42,606.57,509.498,442.138,214.56,370.202,256.213,450.662,358.047,347.505,421.51,39.5,372.488,361.232,367.567,90.76,118.498,77.016,1271.438,797.929,1363.856,643.087,503.902,436.361,456.39,577.332,192.864,431.39,89.011,72.227,66.503,1371.738,429.741,538.916,1075.796,443.7,463.062,573.241,28,51,407,308,279,159,102.347,159.002 +77.7288,339.325,308.893,459.723,142.805,51,39,641,508,153,112,100,210,673.002,328.252,565.372,617.007,523.198,442.556,214.059,368.461,259.044,447.266,356.683,356.124,422.453,40,371.088,366.012,364.4,88.03,118.512,75.302,1268.81,800.524,1376.099,656.364,504.34,439.551,458.038,570.242,193.6,428.925,89.779,72.609,63.716,1376.321,432.429,543.57,1077.521,434.183,465.131,578.953,29,51,411,309,285,159,100.74,159.087 +77.8956,335.511,312.463,462.219,140.57,51,38,638,504,147,113,99,210,670.393,325.442,564.679,620.601,527.969,447.351,216.706,375.448,258.347,450.096,357.015,359.119,426.87,39.5,375.331,361.812,367.822,89.077,121.387,77.341,1265.976,802.871,1371.733,657.107,504.497,432.992,454.574,578.17,193.444,429.237,88.67,72.722,63.844,1376.391,431.849,537.12,1084.466,443.841,462.439,575.899,28,51,415,316,283,159,102.02,158.606 +78.0624,334.295,314.308,460.362,139.029,52,39,636,506,148,111,102,215,667.22,325.428,565.802,620.32,534.672,452.443,218.54,380.136,258.773,451.214,358.368,360.352,429.676,38.5,370.579,367.327,366.224,92.344,119.886,77.058,1273.534,805.965,1371.599,656.957,506.357,441.274,456.896,577.101,193.742,428.685,90.021,70.442,64.867,1380.026,435.979,543.216,1083.872,437.28,463.147,579.943,27,50,418,317,282,158,102.219,159.554 +78.2292,341.771,312.137,463.667,140.768,51,40,636,510,147,110,101,216,667.015,326.086,566.823,635.896,532.996,458.497,214.603,384.78,258.674,454.215,359.164,364.911,430.604,39.5,376.193,366.563,364.994,92.174,120.976,75.996,1267.038,806.836,1376.623,667.482,509.676,438.896,457.699,582.442,196.247,426.943,89.893,71.618,63.844,1382.049,433.39,548.633,1086.885,433.123,461.844,578.275,27,52,420,315,285,158,100.314,157.375 +78.396,339.305,314.113,468.682,143.851,52,39,643,510,149,112,102,219,671.256,324.202,565.902,637.437,538.434,457.6,218.946,390.418,260.936,455.885,362.263,369.503,432.579,40,376.759,366.521,364.442,88.695,121.132,75.203,1277.701,806.624,1379.94,668.51,516.407,444.758,456.35,583.291,192.609,430.795,90.448,72.694,63.147,1379.333,438.256,545.21,1078.766,438.241,460.469,578.501,28,52,424,317,284,160,102.915,155.988 +78.5628,342.459,312.005,462.957,143.017,50,39,641,512,152,109,101,222,667.048,330.447,569.263,644.875,546.708,459.949,220.285,389.952,261.803,456.649,367.113,369.585,433.376,39.5,374.171,366.323,368.529,89.925,119.404,75.684,1276.618,808.836,1371.776,672.066,515.299,444.399,460.738,581.409,189.51,439.717,87.575,73.529,65.735,1375.911,438.143,542.509,1085.272,434.523,456.658,580.678,28,51,422,320,283,159,102.872,155.182 +78.7296,342.501,309.303,471.012,144.728,50,39,641,513,153,111,101,221,670.254,327.613,564.074,657.48,556.165,465.621,225.231,393.168,262.557,456.791,362.418,375.67,437.919,38.5,376.547,370.113,368.119,87.804,121.684,76.449,1270.5,800.718,1379.585,682.075,518.305,443.977,458.87,586.102,194.874,436.729,87.149,72.085,64.54,1375.713,436.12,544.8,1081.185,438.524,458.415,580.466,27,50,426,319,286,160,100.556,157.969 +78.8964,342.672,310.151,470.003,142.536,50,38,640,512,151,113,103,223,666.619,325.161,565.894,659.15,561.37,470.619,226.942,399.173,266.114,460.117,369.687,375.023,437.789,40.5,374.397,370.367,362.929,90.986,120.126,76.888,1275.043,802.432,1370.121,679.857,521.978,451.285,454.598,586.321,191.463,440.015,88.144,70.485,65.706,1378.598,439.529,541.179,1084.056,436.969,453.413,579.505,28,53,428,322,285,161,98.964,159.993 +79.0632,341.363,310.491,465.813,145.633,51,38,645,516,151,112,103,226,663.127,324.67,567.963,672.152,565.138,478.197,223.618,399.836,262.7,458.984,365.364,376.264,439.448,39.5,375.104,365.616,367.624,91,122.35,75.628,1270.849,799.983,1378.405,682.33,523.11,441.587,463.32,590.502,194.577,435.624,88.955,72.467,65.322,1382.233,437.393,550.373,1076.461,431.709,449.956,585.529,28,51,434,327,284,160,100.442,155.465 +79.23,342.685,316.801,470.672,144.883,51,39,641,515,150,111,103,226,671.638,323.377,557.648,672.708,571.536,486.867,227.273,402.84,267.792,462.579,372.247,379.258,443.107,39,377.848,366.238,366.648,88.992,120.509,75.84,1279.375,809.043,1379.694,690.891,521.959,448.566,462.089,582.334,194.364,437.31,90.476,71.193,65.152,1390.578,437.577,542.99,1075.598,430.394,451.104,576.663,27,51,430,333,285,161,101.565,156.101 +79.3968,341.819,314.226,472.845,147.443,50,37,643,517,152,113,107,229,663.893,321.688,556.354,678.654,573.767,487.235,232.455,406.703,260.765,466.415,371.029,381.964,446.147,40,374.015,371.569,366.917,90.859,122.52,77.384,1268.488,802.389,1382.763,692.226,522.322,449.19,461.583,593.476,197.039,434.987,88.67,74.039,65.052,1385.373,436.587,543.188,1079.473,427,454.193,581.668,28,52,435,331,288,161,101.579,154.488 +79.5636,339.205,314.397,472.859,145.802,51,40,635,520,149,112,106,233,663.131,320.1,562.911,679.191,580.992,488.861,231.576,413.68,265.758,465.948,375.84,380.66,444.323,37,376.858,364.994,367.808,89.133,117.676,76.067,1270.331,797.003,1386.621,703.276,525.032,445.634,463.168,586.928,192.822,442.153,88.898,71.618,66.773,1375.019,440.264,544.376,1069.318,426.222,450.565,580.834,26,48,440,332,286,164,100.158,160.941 +79.7304,339.993,315.036,467.694,147.528,52,41,638,519,151,114,107,231,666.605,320.299,560.586,690.166,583.054,497.855,232.344,415.546,270.595,465.849,375.519,389.078,448.583,40,378.71,370,367.171,89.671,120.58,75.84,1270.907,803.873,1374.719,699.309,523.934,444.786,466.443,592.037,199.898,449.277,89.58,71.887,65.82,1382.318,441.509,538.916,1067.14,426.293,447.222,579.222,29,51,443,332,283,163,100.016,155.946 +79.8972,344.402,313.83,474.278,150.709,52,38,649,520,152,113,106,233,667.368,321.707,560.282,696.993,587.524,501.664,232.298,413.573,269.272,469.684,382.487,392.783,452.102,38.5,375.062,364.782,367.384,89.841,120.82,76.86,1267.517,799.315,1376.614,696.297,523.039,447.039,469.662,591.783,196.629,443.47,91.031,74.549,62.408,1388.343,435.003,541.024,1069.205,421.471,444.699,574.16,27,50,452,340,286,162,97.358,156.88 +80.064,339.339,311.552,472.014,150.737,52,39,641,524,150,114,107,235,661.238,315.925,558.814,705.402,593.064,502.386,233.758,422.37,271.007,466.302,380.249,393.746,453.696,38.5,375.09,372.686,363.82,90.279,122.279,77.54,1271.635,799.281,1382.731,710.94,528.998,448.595,462.056,591.238,196.898,448.229,89.936,72.963,63.829,1384.835,436.898,537.162,1073.038,421.287,437.048,575.941,27,50,447,346,286,165,101.238,156.045 +80.2308,340.74,316.376,469.989,152.972,52,40,647,521,153,115,110,238,664.351,319.77,563.189,701.15,602.331,505.379,234.675,423.984,272.344,465.537,383.52,398.136,458.439,38.5,373.464,368.812,364.584,90.548,123.639,76.265,1267.597,793.25,1370.107,712.187,526.386,446.242,462.593,595.356,198.879,454.135,87.405,72.283,66.872,1379.376,439.302,537.389,1062.388,422.659,448.341,573.849,27,50,453,348,288,165,100.3,156.752 +80.3976,338.566,311.207,471.324,152.745,52,39,643,520,153,114,108,241,663.661,316.359,559.337,710.961,605.733,513.965,238.599,426.477,276.128,476.18,386.211,399.035,462.476,39,373.238,365.531,367.652,90.746,121.259,77.157,1258.991,790.519,1370.721,713.969,522.177,444.035,459.197,596.077,197.648,449.9,89.964,73.812,65.394,1372.657,438.906,534.701,1071.058,410.653,441.568,574.386,27,51,450,352,289,160,99.94,155.224 +80.5644,339.546,312.656,474.791,152.774,51,39,645,524,157,115,110,240,662.354,322.556,557.435,723.208,613.537,517.314,238.977,428.244,273.312,473.137,389.333,403.107,464.153,39,372.333,366.266,367.454,90.52,119.999,75.982,1268.167,797.275,1371.839,712.268,522.954,448.711,469.133,591.604,196.176,448.158,90.433,71.547,68.053,1373.775,438.44,534.786,1070.959,412.195,438.239,572.873,28,50,461,350,283,164,96.349,152.391 +80.7312,336.719,309.161,471.822,154.075,53,40,646,522,154,115,109,242,660.083,317.096,558.359,726.372,612.8,518.089,243.688,433.698,274.72,474.836,392.684,406.744,468.184,39.5,374.85,363.679,359.988,90.123,120.056,77.426,1269.989,794.933,1372.746,721.732,524.409,446.117,462.193,591.726,199.544,452.053,91.742,71.674,65.067,1369.178,438.864,537.148,1062.713,409.635,436.411,570.186,29,50,456,354,286,165,100.115,154.064 +80.898,340.441,305.582,477.433,153.127,53,39,651,524,152,116,109,246,657.135,318.257,561.809,725.942,620.943,521.114,244.968,435.653,275.033,476.308,392.374,409.31,469.895,39.5,377.225,365.743,363.057,90.01,120.707,77.455,1274.751,792.231,1372.025,722.735,524.715,446.667,466.187,598.981,198.808,456.996,91.429,72.212,65.749,1375.288,444.224,531.958,1061.992,411.742,431.183,565.888,28,51,459,357,291,164,101.565,152.72 +81.0648,334.716,311.665,471.055,153.396,52,37,649,524,152,118,113,244,661.391,314.889,558.265,734.581,624.858,528.941,245.029,435.412,279.813,477.143,401.535,414.098,470.195,38.5,370.608,365.05,364.075,89.544,123.044,74.58,1266.448,793.296,1378.863,720.481,526.93,447.021,463.456,598.901,201.144,457.619,90.035,72.651,64.427,1367.354,438.991,532.339,1058.159,404.828,428.405,566.326,27,50,466,359,291,165,98.992,150.427 +81.2316,332.372,307.879,471.239,155.178,51,41,651,530,155,115,111,248,659.391,311.818,550.988,741.128,629.337,532.24,247.199,442.661,277.835,481.714,402.515,419.139,475.072,38.5,373.238,364.273,369.83,87.252,122.293,78.503,1259.929,788.518,1382.244,729.226,534.523,445.253,459.848,598.095,197.167,457.42,89.609,71.802,65.792,1361.583,434.395,530.034,1049.856,405.464,425.402,562.381,27,50,465,363,289,167,98.708,154.007 +81.3984,332.036,308.473,469.741,153.283,53,40,650,532,154,117,114,247,665.11,314.419,556.871,742.936,635.624,530.23,246.485,443.977,281.178,481.87,399.949,421.269,477.729,39,371.979,362.279,359.507,90.138,122.336,77.186,1250.848,787.297,1373.423,728.78,524.554,452.223,465.976,594.471,202.205,467.207,89.708,72.312,66.304,1361.13,436.134,529.893,1062.218,400.812,424.268,561.999,28,50,468,366,294,168,99.044,150.243 +81.5652,332.176,306.021,469.266,156.45,52,39,652,530,154,117,110,249,653.089,316.47,559.674,751.136,639.532,541.055,244.712,447.148,281.164,479.69,404.339,421.972,475.114,40,373.266,360.412,361.968,88.794,120.084,76.492,1260.437,782.291,1370.477,726.126,525.684,444.177,466.174,593.409,200.025,463.057,88.528,72.665,68.209,1347.609,441.085,523.839,1050.634,401.632,420.06,560.401,29,51,467,370,293,165,97.628,151.937 +81.732,335.801,304.974,475.041,157.002,53,41,654,537,154,120,115,250,649.334,313.024,550.492,757.509,643.332,541.937,248.01,452.361,281.591,479.506,407.214,427.577,485.406,38.5,370.099,361.586,363.636,90.59,122.109,76.973,1254.659,777.911,1365.712,729.805,524.602,442.414,465.927,600.518,200.945,465.564,91.599,72.779,66.616,1356.237,436.361,524.49,1054.142,400.557,419.989,554.985,27,50,472,376,291,168,98.935,149.847 +81.8988,332.418,302.417,472.865,155.941,52,39,658,533,153,120,114,254,649.702,312.742,556.424,764.478,646.471,544.534,248.042,452.205,285.46,487.729,409.94,430.597,487.646,39,372.347,364.032,361.02,90.972,123.766,76.732,1250.447,779.112,1362.459,732.468,526.987,441.443,466.965,598.356,205.121,468.85,93.149,73.034,66.46,1349.235,432.598,521.802,1050.578,399.27,419.564,553.628,28,50,480,380,294,169,99.386,151.276 +82.0656,330.345,300.838,471.744,155.531,53,41,656,535,157,120,112,254,648.582,313.143,558.58,764.882,653.105,550.827,247.782,454.363,288.22,483.71,413.092,427.478,484.811,38,368.784,360.893,361.473,88.978,120.098,76.846,1263.968,773.351,1360.917,731.505,522.644,448.991,465.339,604.611,202.516,473.948,89.836,73.303,65.408,1340.367,432.669,520.699,1045.415,392.78,414.308,551.04,27,49,480,380,294,169,100.115,151.271 +82.2324,331.08,300.171,470.684,154.725,52,40,653,541,158,120,113,254,644.13,311.649,554.08,776.431,656.545,552.125,252.189,457.451,283.696,488.989,415.711,431.05,489.654,38,367.412,362.675,360.257,88.822,120.792,77.936,1256.652,774.391,1370.23,735.351,524.044,439.307,463.879,594.741,203.578,474.5,89.865,71.32,66.275,1344.639,436.134,522.623,1046.745,393.6,412.437,549.47,28,48,481,384,300,171,100.001,152.196 +82.3992,335.119,301.489,472.71,154.64,53,41,658,539,158,121,114,251,648.504,311.378,549.786,769.944,662.006,554.802,252.388,453.673,287.964,490.121,419.168,436.219,491.764,38,369.703,361.176,361.317,86.078,121.543,74.721,1246.14,767.848,1366.552,739.845,520.581,441.528,458.703,604.618,207.838,472.504,90.945,72.68,65.777,1335.219,429.798,513.613,1042.29,384.96,409.419,549.513,27,49,485,385,292,168,97.821,149.38 +82.566,328.44,301.288,470.821,157.454,53,41,657,543,160,121,116,252,645.007,312.78,544.302,784.121,670.91,552.663,247.952,461.112,288.476,493.136,425.866,436.474,498.225,38.5,369.095,355.59,357.697,88.78,120.31,76.152,1248.719,765.915,1362.285,744.283,525.474,438.301,462.078,604.492,208.178,475.874,90.405,71.49,66.218,1334.399,431.311,516.88,1022.8,387.817,405.565,542.895,27,50,483,388,294,168,98.225,148.99 +82.7328,324.476,302.925,467.183,158.642,51,40,662,548,159,122,115,253,640.528,311.574,546.221,790.244,668.581,561.402,258.328,460.754,291.392,492.329,418.502,441.481,499.129,38,365.828,356.043,352.904,87.634,121.104,78.899,1249.431,773.559,1364.84,735.226,520.075,435.044,461.065,604.747,204.498,480.321,91.159,72.17,66.119,1328.515,428.2,515.664,1022.503,387.11,404.758,538.455,28,48,493,394,301,166,, +82.8996,326.246,299.283,460.704,160.466,50,41,661,548,156,123,119,253,644.52,310.691,548.441,789.488,675.942,562.037,257.136,463.811,290.411,491.183,427.917,442.167,502.015,38.5,361.515,355.916,358.065,89.614,122.491,76.832,1254.201,762.445,1361.587,733.553,516.361,432.875,456.097,607.195,210.867,482.97,93.931,75.143,65.664,1323.551,429.572,512.354,1027.17,383.9,402.718,529.094,28,49,488,393,300,166,, +83.0664,327.13,300.756,468.824,158.189,53,39,662,545,157,127,118,256,644.733,309.107,548.218,793.454,678.307,567.704,257.364,466.132,295.646,498.287,431.772,449.571,505.148,37.5,364.669,358.447,356.001,88.653,122.067,77.072,1246.547,765.17,1356.414,736.918,516.606,427.386,458.957,607.846,209.055,485.646,91.5,72.807,67.327,1325.432,429.741,509.37,1022.361,379.134,399.374,535.641,27,48,496,395,296,165,, +83.2332,324.175,296.91,462.275,158.317,52,40,659,547,157,125,118,255,641.024,305.441,549.185,797.809,679.559,561.388,253.982,466.132,291.89,487.574,432.952,449.376,505.339,38,359.889,355.364,357.457,88.582,121.16,76.902,1255.345,755.725,1362.287,737.544,520.858,431.759,460.244,607.662,212.367,483.692,89.395,73.501,66.83,1321.641,423.009,510.841,1020.537,380.195,399.26,525.757,27,49,494,393,300,169,, +83.4,318.467,299.428,462.276,159.787,52,42,670,546,165,124,114,253,638.848,309.995,547.401,803.129,687.664,566.697,255.817,470.749,293.839,495.301,432.296,451.07,506.848,38.5,361.162,356.198,360.653,89.303,121.344,76.591,1259.89,756.923,1348.022,740.9,514.538,429.961,459.41,603.648,210.937,484.782,91.301,74.407,68.252,1311.458,424.098,506.584,1025.105,373.11,387.699,520.963,28,49,500,400,297,167,, +83.5668,321.578,295.92,465.824,156.521,52,40,667,551,158,120,116,259,635.474,308.885,547.814,805.236,689.756,571.591,259.481,468.821,295.589,499.391,435.767,451.076,513.302,39,362.038,359.041,350.387,88.44,122.931,75.741,1251.561,759.181,1351.991,733.354,510.358,429.189,456.769,606.234,213.018,491.849,89.822,72.991,68.181,1305.857,422.457,504.321,1018.486,371.866,394.443,524.753,28,50,501,404,295,172,, +83.7336,323.706,292.072,469.194,163.124,52,40,671,560,159,124,118,256,636.732,310.106,542.95,810.336,688.104,576.485,257.437,466.089,293.512,498.783,440.737,457.364,515.742,39,360.031,353.455,351.956,89.119,123.582,76.123,1266.184,756.101,1356.614,737.686,511.465,428.703,459.54,601.817,211.022,492.317,91.144,73.189,66.588,1308.544,425.272,501.266,1015.332,369.335,393.522,518.828,28,50,502,405,302,168,, +83.9004,317.995,293.014,464.889,162.573,52,41,673,553,161,124,118,259,635.562,303.927,546.65,819.453,690.849,577.682,255.133,472.162,299.088,501.557,440.604,455.905,518.804,38.5,354.219,348.506,351.504,89.727,120.707,77.37,1253.599,750.057,1340.604,739.776,512.084,425.444,459.86,602.921,216.556,489.343,91.343,71.83,67.086,1298.078,423.32,508.507,1014.172,366.054,386.608,514.925,27,50,508,404,299,165,, +84.0672,316.335,293.014,461.86,158.232,53,40,670,556,159,126,117,255,634.97,305.241,541.456,819.697,693.153,576.258,261.189,466.593,299.088,497,440.1,459.627,520.146,38,357.118,351.108,346.866,84.537,121.656,77.398,1249.495,748.676,1333.467,734.782,511.785,420.371,459.223,606.927,215.297,495.447,90.234,71.802,67.541,1294.839,419.006,503.373,1014.497,365.107,385.63,506.611,28,48,512,413,300,167,, +84.234,316.418,288.182,458.926,162.149,54,39,670,553,159,125,118,259,631.095,308.811,543.767,815.278,698.555,584.17,257.238,473.483,299.771,503.425,446.431,460.89,519.115,39.5,356.057,351.829,348.435,87.479,123.341,75.897,1257.743,753.478,1332.302,739.72,508.236,423.165,454.623,616.837,217.278,491.977,90.32,72.878,66.759,1287.131,423.221,492.921,1002.687,365.885,376.647,510.344,29,50,514,411,298,171,, +84.4008,311.858,289.215,459.945,163.025,55,42,673,557,161,125,116,256,629.328,301.813,542.115,825.336,701.468,582.193,257.552,472.125,295.276,500.948,445.34,462.144,519.891,38.5,355.124,351.377,344.66,87.79,120.622,76.109,1250.29,749.398,1334.555,737.713,505.303,422.654,456.659,608.627,216.047,498.095,92.481,73.841,65.28,1284.854,417.069,496.768,1000.269,365.828,380.09,504.051,28,49,510,413,302,171,, +84.5676,314.334,282.636,458.782,164.213,52,40,677,554,160,125,120,253,625.947,305.862,544.948,822.601,700.077,582.277,258.405,472.436,298.121,503.298,446.799,462.264,527.799,39,351.49,346.187,349.637,88.794,119.22,76.676,1253.313,747.751,1331.877,733.463,498.732,417.194,456.956,606.403,216.825,501.537,91.557,70.839,67.598,1279.521,415.202,495.623,997.412,360.13,378.815,499.243,27,51,521,410,304,170,, +84.7344,314.884,286.47,454.888,160.282,52,41,678,559,165,126,119,258,629.788,300.873,535.995,830.528,703.073,581.532,255.831,468.113,298.761,503.34,448.427,460.801,524.508,37.5,356.382,349.171,346.484,88.285,123.511,78.149,1251.968,744.84,1325.704,729.33,503.207,418.539,456.198,602.666,220.647,495.291,91.4,73.501,67.185,1286.466,417.097,492.596,994.3,356.396,375.754,499.795,27,48,519,420,300,169,, +84.9012,310.821,285.225,451.265,165.577,54,41,682,551,165,124,120,258,631.086,299.556,536.195,833.359,705.082,581.862,257.778,471.866,302.132,500.269,453.941,460.919,528.549,37.5,353.427,344.434,344.886,89.247,119.786,77.738,1260.852,749.631,1326,725.913,496.566,413.947,457.194,605.412,219.26,495.673,92.908,72.708,65.607,1279.62,413.745,489.187,992.433,353.851,373.006,490.547,27,48,521,414,303,166,, +85.068,308.164,282.574,451.649,164.015,54,40,680,561,165,127,121,258,628.286,302.944,532.619,833.945,705.697,584.911,258.858,474.585,304.579,499.42,454.361,465.709,526.25,39,351.645,348.223,345.098,88.341,123.27,76.761,1251.138,744.507,1326.674,726.178,493.819,414.547,452.279,595.427,218.75,501.452,89.993,71.462,66.844,1271.191,411.27,487.391,989.76,353.95,373.119,491.466,28,50,524,426,303,169,, +85.2348,306.444,284.055,454.65,160.989,54,41,684,564,162,129,120,255,627.235,302.928,536.422,836.961,708.954,584.104,258.999,474.243,300.824,500.665,462.54,467.419,525.551,38,351.32,345.692,351.094,88.271,122.222,75.458,1239.38,737.992,1321.116,724.315,490.466,408.149,455.076,593.976,220.661,502.896,89.808,71.83,66.688,1266.735,406.956,486.811,992.32,351.716,370.229,488.002,28,48,525,421,305,169,, +85.4016,311.062,280.684,450.845,164.312,54,39,681,561,163,127,118,256,629.812,299.313,534.436,835.965,712.575,582.032,260.449,475.006,304.892,506.723,458.78,474.025,530.102,37.5,347.304,349.284,340.63,87.38,122.676,79.352,1235.362,744.02,1326.453,724.505,489.994,414.697,458.447,586.631,220.349,498.931,94.273,74.067,67.612,1267.584,414.537,485.722,982.547,350.019,368.004,482.232,28,47,518,425,307,169,, +85.5684,301.679,278.342,445.047,161.852,51,40,687,560,162,128,123,256,617.953,305.788,531.868,835.443,716.36,577.842,256.042,478.02,306.329,508.11,456.614,473.707,533.867,37.5,345.027,341.549,343.302,87.818,122.123,78.63,1235.609,745.768,1315.559,723.459,482.945,402.527,454.201,592.882,219.076,499.78,91.244,73.147,66.602,1258.659,409.954,485.68,980.199,350.189,364.788,475.106,27,48,523,425,307,173,, +85.7352,306.144,278.632,445.382,164.793,55,40,688,564,162,127,121,254,625.31,302.515,529.877,848.535,712.681,585.586,256.482,465.929,302.061,501.146,460.692,472.964,531.136,39,352.253,342.03,337.363,88.44,120.48,75.684,1218.249,740.092,1319.984,720.133,483.738,412.135,449.29,588.541,219.698,497.16,92.481,73.204,67.313,1257.118,405.216,481.422,977.398,348.124,363.994,475.021,29,49,527,424,306,170,, +85.902,307.41,275.351,440.844,157.836,54,42,681,570,164,127,121,254,620.236,298.247,536.258,839.023,712.049,589.947,258.672,469.845,304.593,500.085,462.753,468.694,532.849,38,347.856,340.036,339.626,89.473,124.942,76.393,1227.265,738.227,1314.084,719.258,484.258,407.575,454.34,589.05,221.68,499.596,91.528,73.784,66.56,1259.989,407.069,483.501,976.819,344.448,364.816,475.205,27,49,526,427,310,168,, +86.0688,301.502,273.964,445.341,161.951,53,42,693,565,162,128,123,253,619.404,297.522,529.933,848.87,716.46,584.944,256.312,466.932,306.571,508.124,468.51,470.574,535.881,38.5,345.381,341.761,340.46,87.79,122.024,75.316,1226.18,730.671,1311.262,721.98,483.433,401.543,450.77,582.787,224.468,502.797,90.903,74.025,67.782,1249.975,405.4,481.479,973.014,348.761,360.211,468.615,28,49,535,426,306,169,, +86.2356,301.942,271.899,437.783,162.446,53,41,692,562,161,131,122,249,619.876,298.735,528.932,842.485,710.775,581.47,253.184,466.04,305.219,508.832,468.636,471.767,532.806,37.5,349.114,341.521,336.614,89.43,121.344,75.16,1217.21,732.811,1309.541,715.966,479.122,402.816,455.418,588.594,223.152,500.616,90.775,73.784,67.214,1248.872,404.184,479.527,970.129,340.262,360.452,463.313,27,48,534,427,309,167,, +86.4024,297.861,271.319,437.911,163.709,54,41,698,569,162,132,121,253,617.3,297.943,529.477,847.945,717.339,583.639,249.943,466.528,307.012,503.496,468.496,474.633,535.031,38,350.415,341.605,337.901,84.791,120.636,75.288,1211.968,733.974,1309.446,714.722,472.51,405.254,449.827,587.18,221.609,499.256,91.585,73.812,66.688,1245.435,399.799,485.255,958.163,340.955,359.772,459.99,27,49,534,429,303,168,, +86.5692,298.174,269.579,436.078,161.894,53,41,690,569,165,132,120,252,612.807,295.902,531.724,845.997,710.087,578.651,255.092,465.691,305.674,508.449,464.69,468.892,529.44,37,345.749,337.957,339.711,84.947,122.817,76.69,1212.358,730.853,1322.723,712.135,474.795,395.02,451.161,586.642,223.095,495.673,89.779,75.044,67.455,1237.034,398.357,472.342,962.067,343.599,360.962,458.123,27,47,533,426,307,170,, +86.736,297.296,271.383,433.034,162.092,55,41,700,565,164,130,121,248,614.079,302.241,524.062,850.973,717.559,582.326,254.052,462.437,307.495,502.831,474.076,465.511,537.24,37,341.125,337.024,337.01,85.23,121.783,74.098,1216.714,729.873,1304.235,706.793,471.199,401.578,445.893,591.781,227.482,496.481,91.315,76.304,66.972,1239.947,394.495,480.135,958.701,338.537,358.554,455.351,28,46,535,432,307,169,, +86.9028,294.853,267.261,430.978,163.733,55,41,700,566,164,130,122,247,614.89,296.072,526.593,850.52,717.282,583.32,249.929,459.167,306.542,508.35,472.837,471.47,535.663,37.5,342.001,340.729,333.574,87.521,122.562,75.005,1202.707,727.758,1308.702,701.101,468.496,396.276,447.167,584.671,225.133,495.744,89.566,74.662,67.64,1235.676,395.132,476.26,963.41,337.547,353.892,454.63,28,47,532,433,308,169,, +87.0696,301.416,267.301,431.689,163.365,53,40,696,567,164,132,123,243,612.41,301.942,524.282,846.046,714.623,580.772,254.45,461.716,306.884,510.997,470.535,472.88,530.655,37,341.224,338.65,331.297,85.428,119.985,75.628,1211.318,720.355,1303.101,700.574,462.236,390.619,450.821,580.573,222.147,498.279,91.386,74.619,66.09,1229.509,395.16,468.212,956.013,337.604,355.791,447.362,26,48,534,433,307,169,, +87.2364,294.384,263.949,429.686,161.64,55,41,700,571,167,132,119,245,614.767,296.917,522.773,854.509,720.026,581.116,248.308,454.659,305.347,506.723,471.677,470.407,534.687,37,341.351,333.644,336.741,86.446,120.778,75.387,1205.144,728.136,1300.11,704.442,465.82,388.408,449.884,582.711,226.945,500.701,93.121,74.747,66.531,1224.616,395.004,473.389,955.886,335.921,350.945,448.932,27,47,530,433,311,169,, +87.4032,291.998,263.171,428.961,164.595,53,40,697,572,166,131,120,242,612.528,297.665,520.932,845.458,712.073,576.782,253.611,456.665,309.914,503.85,470.677,467.519,528.587,37,337.788,338.735,334.988,86.064,120.636,75.84,1201.892,727.014,1289.915,697.18,463.165,388.493,451.579,578.758,227.298,498.817,90.22,76.262,67.74,1230.075,390.436,471.79,953.425,335.157,351.03,445.524,27,47,534,432,310,166,, +87.57,291.093,264.187,422.391,161.272,52,41,707,573,165,133,123,244,610.745,301.149,519.844,855.25,716.337,573.225,251.237,458.513,306.67,506.072,473.247,472.688,531.448,38.5,340.347,333.206,334.663,85.654,121.557,73.574,1202.416,724.59,1301.322,694.601,457.26,384.314,446.006,578.673,226.053,492.997,90.021,72.411,67.327,1222.508,391.737,467.378,953.694,335.723,356.938,434.721,28,49,526,431,310,164,, +87.7368,288.776,261.771,422.789,161.131,55,42,700,570,168,134,121,237,617.396,296.14,521.554,850.809,713.656,574.836,249.076,449.886,311.905,507.784,471.045,465.878,531.292,38,340.404,331.226,335.37,88.186,121.882,74.339,1193.54,726.588,1289.787,697.304,457.326,389.105,449.808,573.554,226.662,498.336,89.95,74.35,66.787,1222.551,387.282,467.307,955.278,331.142,352.504,433.49,28,48,532,426,311,170,, +87.9036,289.89,263.765,424.568,161.583,53,42,705,570,166,132,121,239,611.822,298.371,515.128,847.707,712.959,571.238,249.204,445.242,305.817,507.43,467.859,467.122,528.153,36.5,337.42,331.226,334.139,86.036,119.234,77.341,1190.223,722.233,1287.597,687.777,457.171,384.155,444.492,569.775,227.681,492.274,91.301,72.793,66.943,1218.506,389.248,464.973,948.446,338.198,350.336,429.474,27,46,531,433,307,166,, +88.0704,288.412,260.31,416.44,160.593,55,42,710,570,165,132,119,236,607.714,293.901,523.303,838.352,703.745,568.055,246.132,449.787,309.188,506.977,466.145,467.66,528.601,37,340.799,335.073,333.517,86.757,120.339,74.183,1193.519,722.482,1291.554,690.294,454.673,384.409,450.756,570.567,230.228,497.727,92.012,74.846,65.223,1221.801,380.691,470.956,947.315,333.517,350.251,433.731,26,48,529,436,308,165,, +88.2372,289.586,261.163,420.401,162.916,55,42,715,573,166,134,118,238,608.029,297.833,518.592,842.478,713.187,568.085,243.617,447.082,307.154,507.345,471.055,463.581,526.838,36,337.491,330.237,332.471,85.286,118.257,74.226,1187.303,723.944,1286.064,687.493,447.861,383.885,454.385,577.349,228.388,492.543,91.386,73.487,65.735,1214.998,383.053,467.264,949.776,334.45,351.639,432.26,27,45,528,430,311,167,, +88.404,283.524,259.836,416.455,164.92,54,43,709,571,166,134,122,234,609.231,299.125,513.01,844.595,707.521,568.115,241.302,445.978,308.491,500.991,466.527,467.137,532.595,36,337.264,332.541,334.069,86.969,120.523,73.914,1184.056,721.221,1279.236,680.981,451.214,383.365,448.597,572.336,223.888,494.569,91.144,71.108,66.801,1216.483,383.732,462.427,951.982,330.138,352.362,429.474,26,46,529,430,309,167,, +88.5708,287.076,255.036,416.185,158.798,54,41,717,574,166,131,118,232,602.994,298.549,517.182,844.255,700.657,562.973,238.722,441.927,309.928,509.199,471.112,459.927,527.007,35.5,337.137,330.364,336.755,87.436,119.489,75.953,1183.097,722.19,1283.875,682.361,451.763,377.5,448.918,573.115,227.95,488.705,92.253,73.402,65.621,1217.431,380.422,469.952,946.452,336.487,353.793,425.656,26,45,522,424,309,168,, +88.7376,288.682,258.221,415.957,162.531,54,41,705,573,166,134,118,231,609.541,296.818,512.745,845.012,696.432,561.798,238.656,441.728,306.315,503.213,462.476,457.123,519.481,36,337.872,331.594,332.683,86.757,120.41,72.54,1179.035,722.039,1278.151,677.513,449.67,382.371,449.668,571.077,230.115,488.748,91.372,72.92,66.119,1197.799,380.139,464.45,936.509,333.772,349.188,424.03,27,45,524,424,305,162,, +88.9044,286.812,253.341,415.394,157.539,54,41,717,576,168,134,118,233,612.072,300.778,511.206,842.669,700.403,560.099,238.651,436.361,304.238,505.944,462.328,456.217,522.849,37,334.111,325.994,329.756,84.692,118.229,74.877,1169.157,723.939,1270.036,675.062,451.763,376.736,454.948,571.825,226.11,490.023,90.846,72.439,66.048,1196.739,375.571,463.219,949.691,331.311,352.589,421.315,27,47,528,419,307,163,, +89.0712,283.949,252.476,412.917,159.151,54,41,710,573,169,135,116,230,606.195,299.064,511.5,842.081,693.195,555.54,235.01,434.663,305.703,502.533,461.91,451.989,516.974,37,333.164,332.146,332.442,86.616,117.025,73.489,1172.844,714.359,1273.853,671.639,448.851,379.14,445.566,572.798,228.289,491.552,92.268,74.124,65.095,1206.37,378.046,464.464,944.316,334.267,353.708,417.752,27,47,522,426,310,161,, +89.238,287.65,251.684,408.916,159.377,55,42,716,573,170,133,118,227,604.795,295.9,507.156,845.02,691.267,553.046,234.874,431.301,303.683,501.415,458.552,454.177,518.45,37.5,333.574,329.035,332.329,86.602,119.149,71.747,1167.44,719.107,1271.874,665.477,445.818,378.916,455.377,572.999,229.648,487.912,93.092,72.807,66.503,1206.13,378.159,464.549,947.188,334.677,355.309,414.146,27,48,525,421,309,162,, +89.4048,278.644,253.24,403.915,158.486,55,41,715,578,171,135,117,229,604.697,297.963,512.53,845.26,689.015,554.862,235.241,432.99,304.963,503.623,461.018,448.864,514.226,37,334.705,328.017,325.556,85.711,117.464,73.05,1167.831,725.243,1263.074,666.074,444.953,374.825,457.52,571.728,227.582,487.516,91.699,73.926,67.811,1209.213,377.325,464.351,941.954,331.17,348.905,416.508,27,47,521,423,313,160,, +89.5716,282.829,253.735,412.777,154.98,54,41,718,580,170,135,116,222,599.897,300.806,508.308,841.126,687.317,547.218,231.278,421.564,303.839,500.425,459.075,450.056,508.564,37,336.374,331.566,329.883,86.135,120.339,72.427,1160.687,718.076,1264.219,667.464,444.828,376.265,454.198,575.659,226.124,484.202,89.993,72.637,65.777,1201.972,376.731,462.102,936.693,331.877,348.466,415.885,27,47,523,420,308,162,, +89.7384,280.588,249.299,404.832,156.62,54,41,713,576,167,137,117,223,600.595,296.465,513.747,837.285,683.186,545.722,233.716,423.79,301.322,502.264,456.826,444.111,512.682,38,336.43,334.323,330.293,86.885,119.971,71.96,1167.129,716.294,1276.084,652.993,441.36,372.992,452.704,575.025,227.44,481.723,89.296,74.308,66.048,1197.375,371.356,468.396,934.84,335.186,352.22,409.451,27,49,521,413,309,162,, +89.9052,279.169,251.502,399.824,157.935,55,42,713,570,169,137,116,220,607.743,300.869,513.433,835.103,679.49,543.453,233.033,424.341,306.77,497.552,450.999,446.416,508.324,36,329.827,325.839,328.653,86.687,118.554,72.54,1158.609,717.369,1270.13,658.323,439.321,366.833,446.214,563.072,227.624,481.865,91.997,75.172,65.379,1199.228,374.807,459.344,943.171,331.962,357.363,411.106,26,46,517,415,309,163,, +90.072,277.805,249.582,404.839,156.111,54,40,714,575,168,136,114,220,602.336,301.513,514.169,839.243,682.219,544.572,227.97,420.11,303.583,500.609,453.2,444.111,506.734,37,331.424,324.481,324.595,86.602,118.441,74.934,1157.59,721.983,1255.453,657.916,438.947,377.298,445.352,566.803,223.038,478.65,91.215,73.345,64.711,1197.304,372.827,463.389,943.836,337.663,359.744,404.539,25,49,518,412,312,159,, +90.2388,275.93,246.018,402.921,157.482,56,41,712,574,168,136,115,221,608.802,298.068,515.414,822.435,683.442,535.485,227.856,420.322,302.289,495.768,451.551,437.126,503.727,37.5,334.309,326.461,324.227,84.834,117.067,71.606,1154.256,721.683,1263.865,654.814,438.471,370.774,436.651,565.07,224.468,481.893,89.324,72.453,65.123,1206.384,370.946,466.656,951.134,334.499,353.439,403.101,28,47,515,414,302,162,, +90.4056,274.706,248.071,397.2,156.365,54,40,716,573,167,135,115,216,598.108,303.245,513.282,828.592,682.744,534.364,226.083,419.95,301.08,501.458,451.911,436.94,494.682,36,332.344,326.673,331.241,84.127,116.685,72.356,1149.903,728.704,1245.828,649.713,432.506,368.941,437.458,563.88,223.279,475.223,93.064,72.312,66.289,1196.215,370.055,466.727,942.831,339.937,356.957,410.498,26,46,519,407,306,160,, +90.5724,273.785,243.988,401.316,158.062,54,41,718,578,167,137,113,213,609.017,300.409,508.588,824.971,674.778,535.027,224.386,413.007,304.081,494.325,451.452,436.148,494.067,36,334.945,325.91,326.659,86.276,115.722,73.928,1146.456,718.748,1251.249,641.427,431.177,373.891,439.269,565.769,224.241,472.489,91.116,74.053,64.37,1196.597,366.774,470.546,946.919,339.554,357.59,406.372,26,46,510,411,305,157,, +90.7392,274.083,249.052,399.937,154.485,54,39,722,576,168,138,115,215,600.352,298.343,511.657,822.1,669.617,531.844,222.21,414.33,300.632,496.221,447.209,430.491,493.436,37,333.758,324.863,328.328,84.975,115.552,74.325,1163.322,723.558,1248.018,645.551,432.406,372.801,442.167,562.203,223.222,473.765,92.595,72.609,66.958,1192.255,364.808,466.274,950.441,338.608,360.126,406.143,27,47,508,407,305,159,, +90.906,276.703,245.289,398.508,152.279,54,42,716,573,169,134,111,213,604.858,299.538,507.929,823.261,670.843,530.924,219.99,412.251,302.239,493.702,442.004,425.456,494.972,36,332.329,322.997,324.764,85.612,118.738,75.104,1150.437,728.825,1256.598,650.938,428.351,371.229,435.603,565.754,224.1,472.953,91.699,73.954,63.872,1195.734,371.286,468.792,935.208,341.181,358.256,400.416,26,46,505,404,302,157,, +91.0728,272.137,246.237,395.306,155.333,54,39,717,571,169,138,111,208,601.033,300.067,512.587,820.185,667.463,525.518,221.128,406.25,298.128,495.91,441.87,427.252,488.578,36,327.804,326.489,324.807,84.551,118.866,74.381,1139.993,727.982,1248.608,649.935,431.821,368.724,432.377,564.085,222.557,471.029,90.263,73.034,65.834,1159.696,369.512,452.569,939.166,340.008,361.713,398.577,26,46,511,399,303,157,, +91.2396,272.989,248.175,393.601,153.763,54,39,723,574,169,137,110,210,601.102,299.03,511.951,816.018,663.539,522.282,217.25,407.316,291.99,491.494,438.129,418.389,485.227,35.5,337.717,328.752,326.235,86.121,117.308,73.234,1145.427,725.86,1255.378,634.965,431.269,372,437.834,563.964,227.143,468.042,92.381,73.671,65.337,1154.35,348.854,449.938,912.041,346.314,361.657,397.828,27,44,505,394,305,153,, +91.4064,274.142,245.94,395.612,156.351,55,39,723,571,169,137,112,209,603.504,299.409,511.258,807.463,662.741,518.084,218.91,406.836,298.206,490.829,436.63,414.127,479.726,37,334.436,325.669,327.79,84.975,116.713,73.957,1150.897,730.105,1243.896,630.819,431.556,371.539,439.241,559.43,220.208,462.59,91.571,70.556,64.626,1155.708,350.933,452.456,912.323,344.646,365.61,401.519,26,48,502,399,304,151,, +91.5732,270.328,247.213,391.89,152.01,53,40,722,572,167,137,110,207,605.877,297.475,513.217,806.032,662.788,519.563,219.237,397.729,295.66,483.724,434.112,418.02,480.418,35,331.806,327.889,326.928,88.101,114.745,71.946,1139.69,722.08,1246.565,629.003,429.198,371.497,432.391,558.512,218.524,467.816,91.912,73.232,64.882,1172.157,355.303,454.252,917.726,347.007,365.709,393.6,25,45,504,394,302,153,, +91.74,270.072,247.637,397.092,152.915,54,41,720,575,165,135,110,209,607.291,301.288,509.553,807.134,661.037,518.623,217.861,399.087,295.774,486.625,430.313,410.775,480.562,36,335.511,326.716,327.691,83.943,116.94,74.197,1148.735,729.755,1241.076,625.455,430.178,370.117,432.532,579.342,218.283,462.037,88.201,72.17,63.801,1172.807,353.974,460.292,921.913,345.07,364.094,402.509,26,46,496,394,303,154,, +91.9068,269.793,246.052,393.459,153.283,54,40,720,570,166,134,111,207,601.451,300.634,513.633,810.688,658.826,511.45,217.132,394.95,294.764,490.022,427.521,412.412,470.079,35.5,332.584,326.306,327.352,86.757,121.528,71.436,1140.721,731.279,1251.531,621.636,430.133,373.622,436.87,581.017,218.255,460.819,90.675,72.651,63.758,1178.437,362.191,462.654,920.06,349.284,371.036,394.576,25,46,498,391,298,152,, +92.0736,277.193,244.162,393.681,149.931,54,41,715,573,167,136,110,205,606.073,299.953,508.745,813.267,656.739,515.133,212.854,398.896,294.18,487.871,426.702,407.691,465.125,36,336.26,324.481,328.738,87.125,117.747,74.268,1147.975,729.158,1238.228,627.297,428.735,375.594,434.945,583.061,219.047,461.74,89.182,71.349,63.758,1191.618,362.672,465.185,936.127,349.807,371.022,400.246,26,46,494,389,300,151,, +92.2404,274.969,249.285,390.186,149.338,52,40,722,574,170,135,109,203,599.075,300.153,514.323,804.529,650.102,513.065,210.864,393.398,296.798,479.252,420.378,406.478,467.576,34,333.178,329.515,331.467,83.617,115.198,73.234,1140.189,729.74,1232.974,616.239,434.492,374.202,434.301,584.897,215.919,459.828,92.467,72.042,64.64,1191.321,357.354,463.304,944.854,354.403,374.168,397.969,24,44,493,386,297,151,, +92.4072,271.56,245.374,389.485,151.741,52,40,715,561,167,139,108,200,604.248,296.337,513.032,798.754,649.997,511.193,212.612,395.436,288.633,480.95,421.901,398.809,462.236,34.5,331.976,325.598,332.061,84.042,115.736,73.362,1153.714,735.656,1243.892,619.128,427.97,373.338,432.603,578.524,214.773,454.73,91.002,71.972,67.128,1201.236,360.367,466.911,941.375,359.295,375.981,401.165,24,45,493,381,298,151,, +92.574,274.027,245.039,385.021,146.679,52,40,721,565,168,136,107,202,608.908,299.407,513.776,803.363,646.158,505.281,209.665,387.933,292.032,482.875,416.63,400.742,457.222,34.5,335.129,325.556,332.131,83.434,115.948,72.073,1144.592,739.448,1231.694,615.446,431.036,371.448,437.919,570.931,213.966,453.058,89.865,70.825,63.901,1209.637,363.224,471.225,950.285,354.346,375.91,398.832,25,44,487,380,299,152,, +92.7408,272.677,243.186,386.314,150.129,52,40,716,571,168,138,107,200,605.496,297.989,510.019,799.85,650.397,504.288,207.518,391.729,287.736,482.634,413.46,394.227,453.214,35.5,336.543,328.964,329.812,83.179,118.03,74.112,1139.786,736.474,1246.944,620.027,431.039,376.567,437.565,562.827,211.093,449.957,91.329,70.811,65.067,1209.34,365.515,474.365,954.67,357.089,378.092,397.786,26,45,485,375,295,152,, +92.9076,274.206,250.877,387.103,149.408,53,41,721,567,169,137,107,198,608.301,299.27,507.326,797.043,644.992,500.347,208.06,387.596,289.145,484.035,413.943,394.737,449.033,35.5,335.624,329.657,331.368,84.537,115.325,73.801,1144.006,741.502,1238.236,615.361,427.202,374.145,436.566,559.132,210.881,458.171,87.803,70.683,63.374,1220.245,364.567,475.468,949.154,363.212,383.788,398.648,26,45,485,376,293,149,, +93.0744,273.421,247.454,391.943,148.687,53,40,710,570,167,136,110,198,604.148,301.568,512.511,802.557,640.581,499.539,205.769,385.71,286.982,478.077,402.456,389.503,449.263,35.5,334.974,328.879,332.216,86.955,114.589,74.084,1146.131,736.378,1234.482,612.405,429.722,375.976,438.293,551.846,212.424,448.342,88.713,72.439,65.465,1221.801,359.815,477.222,957.314,359.719,383.576,392.299,25,46,479,377,291,149,, +93.2412,274.538,244.752,386.626,149.267,53,39,713,566,169,136,108,197,611.072,301.024,512.752,781.578,638.11,497.697,208.204,390.183,288.305,482.79,400.605,379.895,444.96,35.5,336.699,329.827,334.762,85.81,112.025,71.521,1143.313,740.801,1240.772,614.011,428.663,360.242,436.87,548.82,212.424,441.502,89.552,71.179,65.55,1235.124,362.955,480.432,959.294,362.548,386.069,405.266,25,46,478,371,289,150,, +93.408,272.857,242.785,389.647,148.418,55,39,714,571,170,137,110,196,608.568,300.381,511.743,761.583,615.504,486.715,200.683,379.954,286.47,475.812,398.887,381.625,442.082,35,339.315,329.812,332.824,87.606,114.532,72.611,1146.925,741.595,1233.573,536.037,413.214,357.597,440.334,553.102,209.65,447.266,89.367,71.519,63.787,1226.582,362.63,481.578,965.588,363.891,388.492,400.189,25,45,478,374,291,151,, +93.5748,266.724,246.114,382.762,146.128,51,40,715,563,163,135,106,195,611.269,298.896,511.3,775.214,622.824,478.929,206.577,377.109,283.312,481.813,395.344,382.43,434.296,34.5,341.945,331.976,335.002,85.739,112.408,71.563,1146.783,740.271,1250.014,522.992,401.183,363.843,434.896,543.507,204.71,446.487,89.395,70.074,63.247,1235.747,362.064,482.243,960.384,362.746,388.421,404.234,25,44,471,374,292,149,, +93.7416,269.589,249.307,389.394,147.74,52,40,713,559,167,133,107,196,613.01,305.553,508.178,783.424,622.427,486.614,203.513,376.076,284.18,478.997,396.904,374.355,431.305,34.5,339.88,330.604,331.17,87.365,113.767,73.461,1150.035,742.022,1243.749,530.123,402.754,372.348,437.967,542.672,207.357,444.872,88.77,71.915,61.91,1233.936,365.43,485.849,969.619,368.331,397.872,404.912,25,44,472,368,287,148,, +93.9084,270.787,249.024,388.885,147.033,54,39,711,562,163,135,109,196,606.537,300.457,512.638,782.219,614.464,481.344,202.861,377.533,284.137,478.544,390.988,368.905,426.785,35,335.836,332.089,332.81,86.418,113.725,71.861,1145.143,745.177,1245.621,545.103,400.53,376.014,441.612,549.782,206.239,436.587,89.808,72.906,60.929,1246.369,367.877,482.794,971.147,368.076,398.269,398.648,26,44,467,365,287,147,, +94.0752,272.136,249.392,390.575,147.004,50,39,712,564,168,134,104,196,609.39,304.245,510.662,781.09,618.958,483.961,202.874,373.372,283.27,478.19,384.554,369.914,421.887,35,338.523,333.503,331.976,85.088,111.36,72.413,1162.974,745.942,1242.146,551.856,401.998,375.698,444.831,539.487,204.427,432.99,88.741,71.476,63.431,1244.261,364.695,486.047,980.906,371.838,401.457,405.931,26,44,468,365,285,148,, +94.242,274.296,249.692,386.711,146.594,51,40,713,562,167,137,106,194,613.548,301.541,511.329,786.851,613.013,481.934,200.813,373.769,280.794,481.091,382.388,370.718,419.926,33.5,336.656,332.442,331.735,84.551,115.509,73.744,1154.826,742.142,1237.842,554.53,406.648,379.577,443.445,546.917,205.687,437.14,89.751,72.665,62.649,1252.026,366.448,490.927,981.599,373.195,400.819,406.524,24,43,459,362,285,144,, +94.4088,273.543,248.307,391.115,147.612,54,39,710,562,163,133,105,193,612.188,300.963,515.211,788.14,611.779,478.745,200.57,371.816,278.817,473.746,380.702,368.924,416.647,35,340.22,329.105,334.974,85.923,114.249,72.795,1153.487,740.697,1244.297,558.413,412.023,380.133,448.142,546.399,201.95,438.117,91.116,70.924,64.014,1249.07,367.919,496.019,984.979,373.012,401.06,405.506,25,45,466,358,286,145,, +94.5756,274.97,247.556,388.504,141.885,51,38,712,559,165,133,107,193,609.538,303.83,518.549,782.471,597.557,479.496,199.429,372.934,276.783,475.232,378.697,364.16,416.248,34.5,339.682,335.03,336.444,83.844,114.192,75.09,1159.594,748.117,1247.982,560.26,410.357,380.243,447.748,543.039,202.828,434.421,88.94,70.06,62.763,1253.624,369.278,496.754,979.638,372.969,410,405.888,24,45,462,360,286,144,, +94.7424,273.577,250.145,388.504,141.079,51,39,710,565,165,134,105,190,607.159,300.371,514.084,783.638,600.606,481.066,198.899,372.941,274.976,477.596,372.644,357.92,410.146,35.5,337.208,336.812,342.864,86.135,112.224,73.546,1149.721,747.356,1246.604,559.891,421.506,383.899,448.792,539.048,201.384,427.722,88.485,71.306,63.517,1257.542,371.526,492.723,985.969,379.587,405.225,410.837,25,46,457,355,287,143,, +94.9092,273.322,250.594,387.851,141.744,52,38,709,562,164,135,103,192,610.385,303.73,515.901,784.13,605.307,476.548,200.361,378.107,276.029,473.803,371.37,351.867,408.384,34,343.684,331.99,333.178,84.777,110.737,71.733,1160.357,746.283,1248.99,561.512,419.487,385.062,446.841,540.435,200.153,431.262,86.623,72.524,63.488,1255.138,368.825,491.691,986.196,377.466,412.834,413.793,24,44,454,355,277,143,, +95.076,276.498,249.01,392.89,142.126,50,40,706,560,164,130,106,192,613.271,307.232,509.568,785.139,592.673,471.1,195.127,372.141,272.672,477.567,367.63,350.112,399.595,34.5,344.32,336.331,342.609,84.551,113.031,71.676,1166.18,753.349,1246.888,569.97,424.965,386.603,451.975,542.757,196.332,432.126,88.997,69.72,62.351,1262.69,378.089,496.655,988.459,387.831,414.775,420.014,25,44,458,350,281,143,, +95.2428,283.048,249.568,388.686,143.356,52,37,715,559,165,135,104,193,612.884,301.384,513.669,789.034,592.524,469.418,195.959,366.981,275.759,471.142,369.461,348.454,404.962,34.5,341.577,338.07,335.186,83.886,112.79,74.027,1163.978,749.306,1245.599,565.863,423.04,385.927,447.378,536.729,198.681,428.359,89.808,68.12,62.251,1261.686,371.172,495.057,991.882,384.564,417.736,414.641,25,44,453,349,280,142,, +95.4096,275.595,252.136,388.391,139.453,51,38,698,556,163,134,102,190,612.821,305.348,517.604,786.625,593.881,473.479,194.073,372.368,271.775,469.882,358.51,343.182,395.148,34.5,344.49,335.963,339.739,81.666,115.07,73.348,1163.549,756.43,1258.733,572.217,426.524,390.255,446.094,540.49,193.812,429.294,87.433,67.861,61.213,1260.668,372.134,501.549,994.102,378.852,417.765,416.027,25,44,451,352,279,145,, +95.5764,279.571,251.683,390.628,140.542,52,38,707,559,164,131,105,192,617.57,302.674,520.566,786.752,591.742,473.514,196.28,368.938,273.397,474.977,356.081,345.14,393.717,35,346.484,337.901,342.609,85.032,113.668,73.447,1170.779,760.259,1258.812,574.295,427.386,390.676,447.833,541.384,191.944,427.481,86.13,65.358,62.749,1265.901,371.667,502.567,994.003,389.047,423.234,419.039,25,45,448,347,275,144,, +95.7432,280.206,249.533,389.894,142.098,52,38,700,558,164,133,105,191,615.604,300.659,519.515,783.681,590.342,471.582,196.607,371.475,270.453,471.807,357.603,342.107,391.367,34.5,342.949,338.466,338.198,86.616,113.994,72.767,1168.849,758.716,1253.789,572.714,433.016,390.34,451.845,538.298,193.218,428.515,90.454,68.017,61.924,1267.726,376.589,500.092,996.563,389.202,431.027,420.905,25,44,448,346,275,140,, +95.91,276.399,254.796,396.262,141.716,50,39,703,553,167,133,104,192,614.039,303.525,513.253,779.955,593.59,474.373,196.101,370.798,270.709,468.906,356.18,339.489,388.852,33.5,343.232,334.663,339.541,84.565,110.524,73.815,1171.487,760.008,1262.26,573.115,427.797,391.856,445.44,537.159,189.849,423.119,88.648,66.574,61.952,1277.711,376.547,501.393,1002.758,395.198,429.383,427.254,24,43,448,341,275,144,, +96.0768,279.862,251.896,391.343,140.061,51,38,701,554,162,133,100,191,616.098,300.654,516.567,786.639,584.532,472.261,195.15,376.009,268.575,469.047,351.103,335.742,383.889,33.5,347.757,332.655,345.098,82.854,110.963,70.331,1177.234,754.68,1254.812,572.347,438.928,396.554,445.142,532.552,192.935,425.852,87.538,68.271,60.345,1276.07,378.103,505.198,999.972,388.58,433.506,423.96,24,43,443,343,271,141,, +96.2436,280.959,256.311,390.334,140.005,52,37,705,550,158,132,103,191,614.709,300.686,519.065,781.401,589.822,472.7,194.318,368.416,270.837,470.123,347.948,337.535,384.411,34.5,345.225,335.355,338.48,86.474,111.813,72.186,1179.765,762.484,1267.691,574.38,440.311,397.088,442.229,529.948,188.802,425.526,89.202,66.956,59.833,1276.367,381.257,506.527,1011.315,397.856,434.626,428.23,25,44,447,342,276,141,, +96.4104,282.493,252.663,396.244,138.209,52,38,697,559,159,135,103,193,617.892,304.203,518.262,787.531,589.111,471.398,195.661,366.316,266.953,468.807,345.848,331.315,377.714,34.5,348.223,340.488,342.836,84.127,110.255,72.271,1174.709,753.975,1272.682,574.167,443.975,400.447,442.326,534.395,189.651,423.374,90.71,67.861,61.952,1294.287,374.708,504.476,1012.149,392.483,439.004,428.357,25,44,438,341,272,138,, +96.5772,280.819,250.007,393.166,140.104,52,36,701,552,163,131,103,188,614.255,301.828,521.641,786.647,589.68,471.58,193.678,370.584,266.199,470.321,340.254,330.454,373.11,35,352.14,338.283,343.203,84.89,110.34,70.133,1175.253,768.567,1282.003,576.982,444.119,399.314,443.119,538.752,188.618,425.442,87.282,66.999,59.961,1284.627,379.065,510.94,1011.301,398.719,435.844,432.331,25,45,437,335,271,140,, diff --git a/src/cosinor_lite/live_cell_dataset.py b/tests/fixtures/__init__.py similarity index 100% rename from src/cosinor_lite/live_cell_dataset.py rename to tests/fixtures/__init__.py diff --git a/tests/fixtures/cosinor_analysis_fixture.py b/tests/fixtures/cosinor_analysis_fixture.py new file mode 100644 index 0000000..ee770ca --- /dev/null +++ b/tests/fixtures/cosinor_analysis_fixture.py @@ -0,0 +1,24 @@ +"""Unit tests for cosinor analysis utilities.""" + +from __future__ import annotations + +import pytest + +from cosinor_lite.livecell_cosinor_analysis import CosinorAnalysis +from cosinor_lite.livecell_dataset import LiveCellDataset + + +@pytest.fixture(scope="session") +def cosinor_analysis(bioluminescence_dataset: LiveCellDataset) -> CosinorAnalysis: + """Return a ``CosinorAnalysis`` instance seeded from the dataset fixture.""" + return CosinorAnalysis( + ids=bioluminescence_dataset.ids, + group=bioluminescence_dataset.group, + replicate=bioluminescence_dataset.replicate, + time_series=bioluminescence_dataset.time_series, + time=bioluminescence_dataset.time, + group1_label=bioluminescence_dataset.group1_label, + group2_label=bioluminescence_dataset.group2_label, + color_group1=bioluminescence_dataset.color_group1, + color_group2=bioluminescence_dataset.color_group2, + ) diff --git a/tests/fixtures/example_fixture.py b/tests/fixtures/example_fixture.py deleted file mode 100644 index db837b5..0000000 --- a/tests/fixtures/example_fixture.py +++ /dev/null @@ -1,14 +0,0 @@ -"""Example pytest fixture.""" - -from uuid import uuid4 - -import pytest - -from tests.consts import PROJECT_DIR - - -@pytest.fixture(scope="session") -def test_session_id() -> str: - """Demonstrate how pytest fixtures are used.""" - test_session_id = str(PROJECT_DIR.name) + str(uuid4())[:6] - return test_session_id diff --git a/tests/fixtures/livecell_dataset_fixture.py b/tests/fixtures/livecell_dataset_fixture.py new file mode 100644 index 0000000..7bb8734 --- /dev/null +++ b/tests/fixtures/livecell_dataset_fixture.py @@ -0,0 +1,38 @@ +# tests/fixtures/livecell_dataset_fixture.py +import pandas as pd +import pytest + +from cosinor_lite.livecell_dataset import LiveCellDataset +from tests.consts import PROJECT_DIR + + +@pytest.fixture( + scope="session", + params=[ + "bioluminescence_example.csv", + "qpcr_example.csv", + "single_cell_example.csv", + ], +) +def bioluminescence_dataset(request: pytest.FixtureRequest) -> LiveCellDataset: + """Return a LiveCellDataset built from several example files.""" + filename = request.param + file = PROJECT_DIR / "tests" / "test_data" / filename + + df_data: pd.DataFrame = pd.read_csv(file, index_col=0, header=None) + + participant_id: pd.Series[str] = df_data.iloc[0, :].astype(str) + replicate: pd.Series[int] = df_data.iloc[1, :].astype(int) + group: pd.Series[str] = df_data.iloc[2, :].astype(str) + time = df_data.index[3:].to_numpy(dtype=float) + time_rows = df_data.iloc[3:].apply(pd.to_numeric) + + return LiveCellDataset( + ids=participant_id.tolist(), + group=group.tolist(), + replicate=replicate.tolist(), + time_series=time_rows.to_numpy(dtype=float), + time=time, + group1_label="Group 1", + group2_label="Group 2", + ) diff --git a/tests/fixtures/omics_dataset_fixture.py b/tests/fixtures/omics_dataset_fixture.py new file mode 100644 index 0000000..df7c475 --- /dev/null +++ b/tests/fixtures/omics_dataset_fixture.py @@ -0,0 +1,39 @@ +from __future__ import annotations + +import numpy as np +import pandas as pd +import pytest + +from cosinor_lite.omics_dataset import OmicsDataset +from tests.consts import PROJECT_DIR + + +def _columns_for_condition(data: pd.DataFrame, suffix: str) -> list[str]: + """Return expression columns that contain the given condition suffix.""" + return [column for column in data.columns if f"_{suffix}_" in column] + + +def _extract_timepoints(columns: list[str]) -> np.ndarray: + """Extract zeitgeber time values from column names.""" + return np.asarray([float(column.split("_")[1]) for column in columns], dtype=float) + + +@pytest.fixture(scope="session") +def omics_dataset() -> OmicsDataset: + """Return an ``OmicsDataset`` populated with alpha/beta expression data.""" + file = PROJECT_DIR / "tests" / "test_data" / "GSE95156_Alpha_Beta.csv" + dataframe = pd.read_csv(file) + columns_cond1 = _columns_for_condition(dataframe, "a") + columns_cond2 = _columns_for_condition(dataframe, "b") + + dataset = OmicsDataset( + df=dataframe.copy(), + columns_cond1=columns_cond1, + columns_cond2=columns_cond2, + t_cond1=_extract_timepoints(columns_cond1), + t_cond2=_extract_timepoints(columns_cond2), + cond1_label="Alpha", + cond2_label="Beta", + ) + + return dataset diff --git a/tests/test_data/GSE95156_Alpha_Beta.csv b/tests/test_data/GSE95156_Alpha_Beta.csv new file mode 100644 index 0000000..0472301 --- /dev/null +++ b/tests/test_data/GSE95156_Alpha_Beta.csv @@ -0,0 +1,101 @@ +Unnamed: 0,gene_name,ZT_0_a_1,ZT_4_a_1,ZT_8_a_1,ZT_12_a_1,ZT_16_a_1,ZT_20_a_1,ZT_0_a_2,ZT_4_a_2,ZT_8_a_2,ZT_12_a_2,ZT_16_a_2,ZT_20_a_2,ZT_0_b_1,ZT_4_b_1,ZT_8_b_1,ZT_12_b_1,ZT_16_b_1,ZT_20_b_1,ZT_0_b_2,ZT_4_b_2,ZT_8_b_2,ZT_12_b_2,ZT_16_b_2,ZT_20_b_2 +1,ENSMUSG00000000001|Gnai3,5.21257288664975,4.97433680974948,5.18439042243561,5.11141506683397,4.72619558289174,4.90900320377913,4.67050834523666,4.96904990783596,5.18558475348983,5.0627812821099,4.78194839591953,4.91548826855172,6.02077015156944,5.45470432619129,5.82523181475896,5.74584475793277,5.48914272853758,5.85046213617587,5.29828493601712,5.70435150533922,5.69832274365148,5.50367675122733,5.4235104017499,5.54802077946833 +3,ENSMUSG00000000028|Cdc45,0.184519394812012,0.512578434302474,0.182007369408326,0.66807010455708,0.323858442157409,0.321661292851492,0.261030927277802,-0.437269632287699,0.592482781988891,0.0133858372073543,0.559252131068257,-0.0652017618021949,0.819789385638511,0.561282350703038,0.541903907379743,0.294699024560891,0.931832842615669,0.591007894069664,0.803632594702474,0.485963966401581,1.18609398089446,0.938563263959061,0.955716611211992,0.696273133077087 +5,ENSMUSG00000000037|Scml2,-2.18574128766452,-1.56208675059526,-1.43586353278925,-1.05881895282545,-2.46700430913977,-1.79885410540941,-1.08771732349223,-1.86989682365411,-1.06009252454032,-1.41924135415906,-2.10876746631793,-2.26750590136763,-3.27808059355473,-2.29651891687164,-3.65155340071635,-2.71125070682457,-2.81758472385108,-2.69202178529737,-2.62251124281439,-2.50426666654887,-1.70030738112015,-2.3982938308816,-3.95003318465993,-3.04930949594164 +7,ENSMUSG00000000056|Narf,1.3798424798799,1.8500916570151,1.55795485314043,2.13259262854345,1.5558364972157,1.16426348871046,1.40360541763726,2.11052225317104,1.79521305114007,2.12600394914109,1.62840821783015,1.82386726736609,1.49946904692935,1.8523125517143,1.60810788961086,2.00340667759805,1.78002581478088,1.32320768284098,1.7493894414463,1.89230686598551,1.70539606112513,1.75324905323557,1.78736272349504,2.03771954430567 +8,ENSMUSG00000000058|Cav2,2.5730697603149,2.02768908605418,2.09552915629973,1.62172031878828,1.94746842013256,2.25452632757688,2.04523870330071,2.44695821238335,2.44822157668416,1.5030686240726,1.71571561306825,2.10476762879395,-3.462129404961,-1.67032015136136,-1.41028729956819,-2.92490082902526,-2.120561349384,-1.99936416796083,-2.36478185601474,-2.16696573976946,-2.27814719089344,-2.79011506195478,-2.75893464814112,-1.3882266310465 +9,ENSMUSG00000000078|Klf6,3.45052755317535,3.92419940080187,2.96958632525943,3.42643774618294,3.44393251441376,3.25190169585205,3.06007738011164,3.22679199686806,4.67318247594152,3.42688921913147,3.46655927425982,3.53742623359347,2.98828290120308,2.86490141996643,2.3816294107304,2.92315222702633,2.66317223916545,3.03294856413769,2.72770136779904,3.00926617847123,3.33950619121033,2.95448703729902,3.0395483642056,2.96392740595873 +10,ENSMUSG00000000085|Scmh1,1.57962331040779,1.85560955487359,1.93410159818831,1.5660023398482,2.41342424263999,2.57879197969704,2.12126940790305,2.23718983073347,1.78287788915067,1.86483901018183,2.33725017374482,1.93506118091017,1.61870220495618,1.68409197169127,1.51979037716061,1.51412855012253,2.31759916822578,1.94265664737031,2.31897726573636,1.64618510383373,1.68406226442009,1.57336549916379,2.13587612326563,1.84227409720804 +11,ENSMUSG00000000088|Cox5a,2.86412798280212,2.17099315916554,2.65628458196535,2.73995423852567,2.38567319865963,2.36727736819482,2.39163994065855,1.77290940090742,2.78487786074305,2.59828484816663,2.29428075932595,2.66423517467467,4.42667872093675,3.74680990225155,4.19677684022746,3.74012882663465,4.09175776010394,4.17106273033875,3.878060077512,4.17229712400695,3.99796100833238,3.5894100323968,3.90264529780137,3.628166802118 +17,ENSMUSG00000000126|Wnt9a,-1.07445246263388,-1.12522600957192,-3.05760839064152,-2.45473165692201,-1.59825916083339,-1.514850314138,-1.61987677395046,-0.85010562613462,-1.17435221636264,-1.13366483216283,-2.05342685669244,-1.04041491739353,-2.68227031767142,-1.66772226042967,-1.93726088597099,-2.56792435442991,-2.30957918008361,-3.46635804867177,-2.63947684499869,-2.16436784883777,-3.08696943604839,-2.52592835590483,-3.50137829685505,-2.68282420468274 +18,ENSMUSG00000000127|Fer,2.5783470558356,2.54409991614559,2.56227689437104,2.66749846632705,2.78836480118853,3.00838276685555,2.82848354729497,2.52720998783662,2.62346304976729,2.59465818688886,2.9119462124926,2.59746713690314,3.10060375149211,3.05776608910531,3.0861309517684,3.16405542822872,2.88539465825404,3.03906014893335,3.11476863315555,2.97870965987139,3.01609042292402,3.05931497160821,3.05237391652703,2.92180046321939 +19,ENSMUSG00000000131|Xpo6,2.53862844930509,2.81089832929782,2.39113849560221,2.73962660684193,3.15639805253471,3.2294066911843,3.06773675995538,2.43562644290909,2.60245642936183,2.53515706956956,3.10603818794571,2.82838441761589,2.30416230061411,2.55308166760272,2.39701225248966,2.57753819011324,2.99891912003699,2.71531792957745,3.09286630380301,2.21422711299259,2.19230810488467,2.35032774941965,2.94269156295404,2.79380151958307 +20,ENSMUSG00000000134|Tfe3,2.23691992665498,2.26134725038941,2.20772786875758,2.25693643503227,2.53009306073133,2.60087783222744,2.39349837807574,2.39613957075211,2.29120897394093,2.24923921156251,2.43521235908308,2.27937065318909,1.79148621622192,1.86985901192119,1.56351165217702,1.82629924985702,1.99133846571604,1.89353555059168,2.16455699698237,1.68550754346153,1.90574357145025,1.8237602872103,1.93729828646817,1.88923213878654 +21,ENSMUSG00000000142|Axin2,1.96136344552499,2.07766391583331,1.98399671832236,1.83661016902198,1.9274650484208,2.06238721071578,2.01892739594965,2.35229858261109,2.19982478320383,2.06955625754926,2.07609715931281,2.01723823745374,0.787335612978814,1.43848991223447,0.841937144560321,1.15250587737013,1.1703128699124,1.08786252992825,1.23465960089924,1.34677666128258,0.847110029942101,0.793567571998347,1.36882035016422,1.00262079134518 +22,ENSMUSG00000000148|Baat1,1.89268705925366,2.14180097692119,2.05892525984495,2.06073517130217,2.06208591039638,1.97305529060852,2.03919250309341,1.92771671836064,1.98395139952956,2.05644269559712,1.86413234132662,2.16875759553323,1.59489858232944,1.9512420814664,1.70495319636702,2.14554556054997,1.97143874078467,1.86945250360989,1.90025647636098,2.01449927286771,2.03006634610123,2.15463374237028,1.84856791805016,2.07872575234159 +23,ENSMUSG00000000149|Gna12,4.31685197439924,4.0722930211003,4.36209257950553,4.17222958552504,4.05227591633601,4.19422270313622,3.93050240502269,4.1821976205975,4.32268359551859,4.06497302177396,4.12843653601751,4.0049896168959,3.76945505249837,3.79995396899633,3.95901466165163,3.87235564874572,4.10256752120301,4.0869577645581,3.87333880669834,3.87365985719779,3.81091809327304,3.92459471499942,4.01242725875374,3.86610776737802 +26,ENSMUSG00000000159|Igsf5,0.531910439631897,0.637834534796141,0.726099187720544,0.576303600880935,1.17749580531095,1.15395448529125,0.956265504355142,0.247087204646029,0.624766288148233,0.820647804194528,1.17548811065175,0.965646496734435,1.8152374959766,1.33860632557959,1.63730364174945,1.46150927689056,1.93525524877289,1.78867114165518,1.99814989514604,1.81339891585337,1.70719127508097,1.6142364157938,1.50328201012016,1.63859559813395 +27,ENSMUSG00000000167|Pih1d2,0.488075974456279,0.663459521109446,0.577142096909311,0.412226261018731,0.439249461012919,0.390640053269273,0.670009204680771,0.196531198829268,0.576876843213114,0.690687004247133,0.311892106543746,0.416471046225547,0.992114668023578,1.23929374866542,0.861167504281203,0.888581622325146,0.703959099548835,0.945470077506158,0.815266660178901,0.834796814843115,1.11906498327401,1.07973819461052,0.790231147898943,0.934455582051924 +28,ENSMUSG00000000168|Dlat,3.8421603289725,3.57988770473422,3.87563173597222,3.684829306016,3.25966592160009,3.44663550495193,3.33504540319275,3.86589542527787,3.79661960480359,3.55069835450955,3.39229892102821,3.60747692163857,4.07769936701538,3.76781534296572,3.94539546155654,3.9097837626277,3.47109456395668,3.79165463715172,3.55073230927102,3.91787438479611,3.88851813812012,3.90955189949127,3.55252363021511,3.68414482414596 +29,ENSMUSG00000000171|Sdhd,6.50485074501025,5.98009531022001,6.61917463037837,6.37617513132435,5.97585373416307,6.01039039390759,6.07269415637311,6.36047648787428,6.40563341021582,6.52900852140011,6.1082667243001,6.30848015879321,6.69535057708853,6.16783684007409,6.55546589873215,6.21814326089532,6.21317138013679,6.50782650781597,5.96225203442394,6.67012292367864,6.48829976938199,6.33778474115713,6.13608323781498,6.24426449027007 +32,ENSMUSG00000000184|Ccnd2,8.03333306982066,7.37094597239797,7.36831488991027,7.19007903703072,8.05736163026849,8.17844947668328,7.56813307892259,7.88102102432574,7.45553804582145,7.1887273440116,7.92676650787817,7.82243588084652,7.94343740644314,7.73492481835371,7.93130158104977,7.67402354442793,8.07436479441417,8.05135473985728,7.83607900698722,7.93524608321815,7.83932856816766,7.90623157277275,8.11357756667067,7.87255687064515 +33,ENSMUSG00000000194|Gpr107,2.87020329245912,2.71835837455958,2.74820779675855,2.72478468276757,2.94805575418808,2.88745020986727,2.94223239479963,2.83529355488001,2.85958364893243,2.65558561171121,2.94616871336367,2.79773764884554,2.82605017107096,2.94254817285187,2.74335618282622,2.75554198331486,2.97921549580747,2.76967650035694,2.90799611808394,2.832742012175,2.8103280538858,2.83964375639611,2.86607639411755,2.83938361927746 +34,ENSMUSG00000000197|Nalcn,4.06985259816499,4.12775178004953,4.05678504970849,3.95859094262613,3.98280080453338,3.98366472179812,4.01636311068752,4.13941797830698,4.25828851260849,4.06902103360186,3.93967687183428,4.04334112214246,3.74274562286731,3.69950628791843,3.89071183665768,3.6363652711876,3.5222545399765,3.54993119274229,3.46869131769733,3.70877955714089,3.52711776791052,3.65031742962404,3.49434068024645,3.56451407564774 +35,ENSMUSG00000000202|Btbd17,2.14930009485253,2.22794474490532,2.56590101246647,2.19121591153401,2.40973575408415,2.50161513260947,2.44209012272214,2.3261535187685,2.2035189593061,2.22816400887918,2.48233425501343,2.25709330770677,3.21408719451722,3.18647107573551,3.38734428673799,2.87033835586227,3.12772327881706,3.07989227697727,3.10218140090971,3.0735202363475,3.18001617648586,2.99476233233904,3.05712635464912,2.95417383685538 +37,ENSMUSG00000000214|Th,-0.737677858742417,0.360543789496933,-1.08010386135554,-0.808257336560244,0.0014189435512563,-0.213920890940867,-1.12601793898773,-0.676022428642562,-1.36964214343902,-1.31465453863324,-0.168404857947126,-0.904901918098516,4.47821975836014,4.25780853441154,4.1780832781334,4.35118341904784,4.63554986324527,4.59448173519772,4.87032898707162,3.96909482559072,4.0992598796511,4.42292456184233,4.75395994793853,4.42922234790169 +38,ENSMUSG00000000215|Ins2,9.53498577729123,11.8313443618587,9.35471847346014,9.66258803425741,11.2988628275883,9.61082425389079,9.86349716275945,9.81027221558471,9.10004852255162,8.1432515125213,9.9411973393443,10.2447410345874,17.6652650557318,17.2898204209166,17.7428753846158,17.3288936436212,16.9875018848449,17.5899447284651,16.9549401619341,17.8704672189037,17.6089103444224,17.4368496510221,16.9991874940784,17.071348027902 +39,ENSMUSG00000000216|Scnn1g,-0.224901688227111,0.0627343071883959,0.0366212317411356,-0.405687269916003,0.0470885110361814,-0.422107202470325,-0.237448539813626,0.335559275703055,0.148654242912187,0.0181044790960394,-0.568575423643255,0.106623722628726,1.90635622981002,2.59823286733592,2.92084184361292,2.94669033939085,2.052084914132,1.694493363485,1.73138071667012,2.51310036172042,2.94716266444733,3.09176670847704,2.1101328684597,2.13618710272165 +44,ENSMUSG00000000253|Gmpr,4.86438014748725,4.80251074610717,5.18418083991172,4.91162746475035,4.44753484269072,4.39260072665192,4.52264848472204,5.32147244841622,5.11179127857755,4.89694368520287,4.63088805260137,4.46772225818755,5.84230358834843,5.87844183104832,6.37567881354449,6.12723200572936,5.62799040357004,5.80119034034362,5.67741926219813,6.31998504126554,6.06322422570091,6.16952414668312,5.71042732690614,5.51723959261591 +46,ENSMUSG00000000266|Mid2,2.34260733991893,2.45040405534336,2.57356895112769,2.44749731023773,2.30240503049185,2.31299396960339,1.9059482355495,2.68030808454191,2.36287807318296,2.31847205420355,2.11084511844703,2.26881855928785,3.3003502996364,3.35133932411031,3.44973710446816,3.28993132552909,3.10399332707838,3.21826763276939,2.98459311371196,3.47633466475986,3.46215325935519,3.17014788242161,2.84860792169826,3.003661239436 +47,ENSMUSG00000000275|Trim25,3.38340505517817,3.60767100450468,3.75854471942133,3.2457743787337,3.53512952224855,3.4274723985848,3.15249516585913,3.9157274582564,3.39130002080326,3.35238011763182,3.35443870936466,3.34546007360848,3.41904974930284,3.82642617570451,3.84345362170865,3.58724878767259,3.68903489292739,3.66722470219263,3.69614827164162,3.9684393961038,3.52742856100812,3.64702987158856,3.74040094402897,3.66643879135975 +48,ENSMUSG00000000276|Dgke,2.4383038095857,2.45179292144365,2.70156950189099,2.16875135919748,2.09389608240597,2.42773790113019,2.13791761907578,2.24210450771775,2.31330927182629,2.19294771282911,1.87833914559868,2.01056836806698,3.34502839698466,3.64504658481448,3.52061165436538,3.26656426437729,2.9967658670453,3.11936551706921,3.20029666279083,3.51761477791758,3.51757552844963,3.329184135425,2.87909421393606,3.20540320760405 +49,ENSMUSG00000000278|Scpep1,4.07299574620218,4.12584802559617,4.46162804064246,4.13550255997706,3.68954980395395,3.70518393897264,3.73376610679503,4.3472270128815,4.18495495390461,4.17801118626592,3.66030035089433,3.86942345708954,5.31293615383676,5.02476382944532,5.19498282633408,5.06257531979466,4.87238826114201,5.30582769462638,4.85487407031805,5.498401799582,5.0632263478527,5.01774233111886,4.87002741243199,5.11957975846339 +50,ENSMUSG00000000282|Mnt,2.2200787546497,2.60531295378026,2.36881808869937,2.44060024770943,2.84009532542508,2.68194929327307,2.74648825265108,3.06925959297619,2.892826551257,2.32882418897683,3.00555388292988,2.70572441291183,2.27132560935384,2.39687710794743,2.35150884738953,2.35499210586512,3.10040120503558,2.85842432319347,3.03822697946273,2.17605881789419,2.36621732690228,2.39572751559873,3.05481167130747,2.82532633808552 +52,ENSMUSG00000000295|Hddc2,-0.705677279422106,-0.437370067781449,0.327074481025879,-0.439248232557568,-1.01786630454343,-0.591153119642253,-0.718027632973893,-0.0819143352007092,-0.348775337136391,-0.0427019390545849,-0.998383307751489,-0.59043433865013,0.950968859802968,1.01980660627383,1.35323122873359,0.603112531458655,-0.0702227697191595,0.538747694998539,0.357884470872713,1.18472420305265,1.40071446068535,1.21579218573848,0.213884169317731,1.16327298573775 +53,ENSMUSG00000000296|Tpd52l1,1.72555368650394,1.9770590954454,3.04489314405024,2.17562503826881,1.24342389776969,1.46334221130699,1.76766491874837,1.83124001886432,2.0905574643425,2.30032141516512,0.731408653089597,1.66627414614176,2.99942339169629,2.88974214001557,3.60551950423814,2.99470233940207,2.62674134394301,2.88524737289552,2.50942507128031,2.92473325766142,3.24659855467247,3.28709699092832,1.91115134366721,2.57220731311591 +54,ENSMUSG00000000301|Pemt,-0.0234903792219094,0.0295147249995635,0.220935559799394,-0.0077160476414681,-0.357313596341573,-0.350590932783309,-0.581294566467501,-0.421096998922594,0.547709249503465,0.226658998652542,-0.767636832575248,0.352570044649819,0.564242131069295,-0.0092146687005076,0.360042200552573,0.18721899328239,-0.651746853476118,0.442504099290194,0.289874081044081,0.425195215975816,0.337941259849557,-0.283840813251859,-0.159509410949567,0.022904572004536 +55,ENSMUSG00000000303|Cdh1,4.90563014520806,5.03483779039472,5.04535487924895,4.58627850943662,5.07948665297514,5.14246740235959,4.76007763999096,5.40748060837022,4.96036322333107,4.66003775215667,4.9121967754976,4.83917414174812,6.36021739954426,6.51121017109428,6.75415740350216,6.24570053534056,6.49427344091117,6.5951226268458,6.56336659275913,6.70101722824036,6.21189323478049,6.27837204342654,6.49149481077394,6.36553851991091 +56,ENSMUSG00000000305|Cdh4,-0.416265237872681,0.317924565358003,0.364247470658537,-0.561323087962475,0.254624894330564,0.505417856999781,-0.0900294469149663,0.163850186669207,0.0406321240212337,-0.0815109515537049,-0.115842844914742,0.10578836891061,1.05511559618909,2.15753612821361,1.73852800738966,1.59447561005163,1.57397401672848,1.70448172447725,1.66476803446779,0.901219749135597,1.63251648963663,1.22487083778951,1.80241917564783,2.17769797974471 +57,ENSMUSG00000000308|Ckmt1,3.11598438935244,2.53698714506095,3.16323126114605,2.83871050761754,2.4636171111008,2.66377160231801,2.52138514879681,2.90098478415011,2.99950187167958,2.7687506500237,2.28551013941071,2.51385811408886,3.56666827943282,3.25899752070715,3.63173285218232,3.47888233256168,2.93442727669791,3.17038105279374,3.0822999802173,3.55026836107239,3.39852379232033,3.53109486524048,2.83271697362508,2.77077279655441 +58,ENSMUSG00000000317|Bcl6b,2.12816044841067,1.70076239658285,1.44828173493159,1.65951664599185,2.31245418747117,2.15759686343792,2.23276941840297,1.5916559391197,1.78751949325324,1.34584063753256,2.03985113013036,2.0174231158378,2.23246651428502,1.51415304387441,2.31502689867195,1.99918124855406,2.43635835832253,2.51777566031082,2.15918969868789,1.65392561902325,2.62049071172326,1.76675795028878,2.54845257479191,2.0207463419693 +61,ENSMUSG00000000325|Arvcf,2.97439793973105,3.27036339409972,3.06783180859699,3.1271152921968,3.23885211134973,3.28411534104207,3.41840515059227,2.95195354403197,3.06840474567289,3.06870117048128,3.26924542627604,3.2599898540356,1.46495336195934,1.91366385421083,1.32757110870846,1.71666494243304,1.9969967321028,1.70213665291719,2.11790410868835,1.39825406495277,1.46449095900774,1.76159868020795,1.98096893841649,1.96806826742971 +62,ENSMUSG00000000326|Comt,3.41476927869807,3.35413757988234,3.29448063410855,3.03192135029474,3.3193102780886,3.27276895364912,3.12024731684826,3.29521935168122,3.30135629176149,3.05124584125134,3.24312489135195,3.21349084958311,4.73926772051013,4.80048282702653,5.04041566638482,5.03058836790675,4.78368891052498,4.74826022201998,4.56995107693136,5.01540794138275,4.84641486962909,5.07939069838953,4.68338923940923,4.65422667999526 +63,ENSMUSG00000000339|Rtcd1,1.37866856637044,1.16739496847792,1.73146459043424,1.55597312050017,1.37503602678205,1.5298955495579,1.53293244497684,1.27754337988505,1.57146749286377,1.46434148748605,1.37077960551951,1.51164230966185,1.59855841405052,1.5675434653896,1.6667738328707,1.61223181158957,1.45941207946935,1.60818555751548,1.54512619488574,1.24793973593256,1.43935269888081,1.64249233059542,1.42071275991843,1.27527930908556 +64,ENSMUSG00000000340|Dbt,2.09893666279948,2.22003401698269,2.1872227767649,1.87693256471378,1.67765136566201,1.93207247597556,1.86362661821049,1.89169885762682,2.08685094094139,1.86429383990827,1.78289688533987,1.98426005371522,2.47050355454419,2.12547413352692,2.14899406875754,2.18062581881305,2.28536493137113,1.84310857682505,2.24696239447015,2.28122418962702,1.90480187836441,2.10725865476852,2.26610214698693,2.2507421419218 +65,ENSMUSG00000000346|Dazap2,4.89301294286537,5.18475478562513,5.47947098122455,5.0229313426769,4.65146277070867,4.6577262274279,4.65723303719464,5.36541779522453,5.29275949731896,4.98958445777616,4.78517202120597,4.76319604790541,5.47673821795525,5.49398572378903,5.83298962121984,5.50165185525385,4.99160609197325,5.34605902215163,5.05114439835492,5.78214203142388,5.60584218543348,5.5263882835678,4.93191721950966,5.24795791454128 +66,ENSMUSG00000000355|Mcts1,3.48275207430104,3.1691194559159,3.35733581901992,3.29130150055005,3.51991176562987,3.15290964970629,3.49586317846141,3.19845441409635,3.43579087421792,3.54471053161232,3.33138021910481,3.55991650523129,3.56221567255587,3.44961666184843,3.01775551090718,3.14422532383198,3.42614903629971,3.42059735060615,3.15643225137055,3.22239058938448,3.40656005967849,3.00998951760657,3.36553124901627,3.48371028015838 +68,ENSMUSG00000000365|Rnf17,-1.73195578782186,-0.833641302711147,-1.03937799883968,-1.5088236949858,-1.26472843234838,-1.23407148767921,-2.07681056887002,-1.18740513757154,-1.31177567046159,-1.98304511426662,-1.57991555567756,-1.95799437960914,-2.83741595451427,-1.69962638385251,-3.17819526198749,-2.50000888370617,-3.76827666520307,-4.75400304608708,-3.01968729027104,-2.44871484746795,-2.93305262514974,-3.18343168109281,-3.41384008239741,-2.6402022981942 +69,ENSMUSG00000000374|Trappc10,4.07222885217912,3.93067248188072,3.89907149741956,3.96976097330632,4.05327026526907,4.08026937627148,4.11038068779701,3.90190662008546,3.96258789052179,3.83408433459974,3.95979503777,3.89386223509016,4.00202689633661,4.46995731135851,4.2792544283492,4.51603220777308,4.63617518063567,4.3334734079852,4.69855183729673,4.13071565900884,4.02400263603252,4.45245096094294,4.74354922932204,4.6123230704432 +70,ENSMUSG00000000378|Ccm2,2.027761381967,1.76873458930414,1.97522514524237,1.54234139552571,1.94247642034771,2.04202134480071,1.85256706029148,1.7129692590232,1.9224347143401,1.65311788525455,1.89897731956196,1.77237343401488,2.79685460946704,2.76354086027418,2.91270245768727,3.0067261132019,2.84341918974576,2.9745897149693,3.06589929629865,3.05651536553457,2.87218310932942,2.93569935263709,2.89271692276618,2.82805863299314 +72,ENSMUSG00000000384|Tbrg4,1.91404903325457,2.15222798315405,1.75108899361342,1.99486759805679,2.2239777426706,2.21786305054456,2.33905976372085,1.52239289320978,1.88738407239539,2.01375958007903,2.41711739390817,2.07084407737054,1.78913007458511,1.78016730948512,1.61544435871077,1.80383481873893,1.99183483070664,1.80502043437483,2.43819527292389,1.20589446634709,1.71693753628481,2.13627291153801,2.11184466042953,2.1223447675788 +73,ENSMUSG00000000385|Tmprss2,-1.89916982769554,-1.43167278046048,-2.38429072147743,-2.03222234623788,-0.792840927126234,-0.324109412283786,-0.869246005612903,-2.27314433792082,-2.22702417445121,-3.04199861974381,-2.14300310406243,-1.32313981966786,2.39475796932334,1.82485345009335,1.98794766903398,1.77782589271112,2.63019411737576,2.47542162918351,2.60472915962531,1.63918533696512,1.92854714206641,1.79075280580697,2.46847710685281,2.42175130646346 +75,ENSMUSG00000000392|Fap,4.77896400022573,4.06717015947977,4.63072726510865,4.71059947288271,4.37924804658352,4.60498159658676,4.33269710014148,4.48785479472885,4.31313077612983,4.43241261074394,4.32213674117856,4.71693685681237,3.52591812618977,2.8072630119227,3.14316743096347,3.27614410836737,2.86360917947751,3.68626485101892,3.06572070212941,3.93803997184547,3.7542792205166,2.84365980354681,3.01290188068359,3.79450433936733 +76,ENSMUSG00000000394|Gcg,17.2030741442252,16.6258332548218,17.3324623948254,16.9803684313918,16.5475431164214,16.7600292466526,16.5753953213081,17.1657684445491,17.1819058102523,17.0233282465545,16.6390369391765,16.8900200266059,7.14292540951727,10.8971733730587,5.20052164800392,6.54331827622918,8.1512940427125,6.68459260583883,8.53826326974274,7.03436666959412,6.4036830619878,5.34389868345437,7.07406254500794,6.83110352090755 +77,ENSMUSG00000000399|Ndufa9,5.25795223930864,4.82862356043443,4.9740375738648,5.15910378916182,4.83903574202863,4.85761935151245,4.79519238487083,5.13217370934737,5.22169382610957,5.045249519733,4.73682204172723,4.87924929279851,5.35178864569931,4.90585258432075,5.31756057185148,5.12997342012164,4.89031268727062,5.24335146997145,4.55102309175414,5.35831212683903,5.20023226782436,5.07850579700026,4.94546562026263,4.92019829887794 +79,ENSMUSG00000000409|Lck,1.10725388164219,1.38525440641549,1.33278963798912,1.3641023576248,1.91598767734505,1.29376531589567,1.48370228475709,1.21579904287159,1.17133804035654,1.60113495276151,1.64051440409482,1.62033290559596,-2.22465476798745,-2.93047462346776,-3.91181904363821,-3.91181904363821,-1.61279702011673,-2.5095602436748,-1.94501183500968,-3.26728215262629,-3.91181904363821,-2.92259891487598,-2.30660973172708,-2.49814352742185 +81,ENSMUSG00000000416|Cttnbp2,-1.40849232042142,-0.369875520758892,-1.61978033141101,-0.986846901701099,-0.0120907063614095,-0.574016438832812,-0.210064858344065,-0.773766876480293,-1.1684102547908,-0.866565463749043,-0.417480850551777,-0.714815387982263,1.87414618849733,2.57527430004431,2.01727844090557,2.60689302661716,3.03097638724707,2.38759641533927,2.74214332596,2.36311232474575,2.1847644967242,2.32295776511635,2.86713638927995,2.78976712999582 +82,ENSMUSG00000000420|Galnt1,3.87750286946204,3.72325443711448,4.02331702580475,3.67006709316167,3.71867177874383,3.80209236477073,3.61488900231656,3.80967869604117,3.8955599683388,3.72876021432439,3.65259065783797,3.75574485224449,4.15828216256881,4.00360856062167,4.27015350172661,4.13077290271345,3.79169834232143,4.16505939132087,3.76057415721957,4.29322160306929,4.06978136480591,3.98746278372266,3.77174195265905,3.80452285203737 +84,ENSMUSG00000000439|Mkrn2,3.29903172223036,2.9734343497657,3.545619131425,3.21115289007277,3.13956085699458,3.1715917977322,3.04204438168817,3.15326423657932,3.48512733513419,3.27840252049183,3.09933348076909,3.13548770697058,3.63591782632037,3.48221719522824,3.81014940067018,3.7681236573219,3.48553987772629,3.6931312806667,3.60490082241252,3.81068317866928,3.66888350813287,3.80231143548564,3.58728306295374,3.64618645460716 +85,ENSMUSG00000000440|Pparg,-2.84493663103183,-2.41451068308577,-2.73881668319464,-2.16567709458471,-2.40122806358238,-2.76618470014132,-3.34982287614572,-3.34982287614572,-3.34982287614572,-3.34982287614572,-2.43007986977689,-2.80650490565029,2.77589366967234,1.95341073372888,2.76590359996003,2.46507538152061,2.86979599400108,2.7797144119445,2.27339267490167,2.85294009676482,2.31265382111757,2.27282843132524,2.92797516235035,2.95788009279252 +86,ENSMUSG00000000441|Raf1,3.35198049866846,3.63021290693732,3.17801694493349,3.58005899851263,3.83240208943393,3.69419517122546,3.83451462703715,3.24558782949338,3.48377596724705,3.54508167469046,3.91316237404067,3.66971637864304,2.96460207408516,3.25004256327007,2.94164416915235,3.23425971024014,3.48292622049342,3.01124833173954,3.43397489713944,2.84132491046563,3.09145671881871,3.16138738124127,3.4133373883136,3.40556397345392 +88,ENSMUSG00000000489|Pdgfb,-2.09324830209404,-2.19236022938054,-2.04379244354486,-2.08077756572716,-1.53205685330578,-1.10244367729394,-1.42976778672808,-1.96905789840563,-3.40943405268001,-2.34965727846081,-1.86331786947006,-2.00184049608144,-0.123318697559025,-0.852014071442162,-1.01141263605316,-0.709725717345249,0.154085763322741,-0.465583943554023,0.0519975636731065,-0.582761487516509,-1.3055792217025,-0.603924779467522,-0.792191012486044,-0.124140893741863 +90,ENSMUSG00000000531|Grasp,-0.348710764414957,-0.577907118712314,-0.397107681175622,-0.2607742516818,0.339623602134752,-0.467313203175625,-0.436929772466952,-0.635249137537899,-1.13775928018283,-0.821168986579487,-0.605953555596733,-0.314673219174602,1.13050622292279,1.34798244076748,0.86414270934972,1.37134400271851,0.887439563606827,1.24700062032721,1.3306567195047,0.744765082808263,0.553871818092349,0.696345941450197,0.943372160786667,0.468516626122645 +91,ENSMUSG00000000532|Acvr1b,3.54757859047952,3.86109641913907,3.81704023478077,3.68191923943642,3.52910674871812,3.72692996750836,3.56363358274233,3.90515308975845,3.70191718843203,3.74766232176406,3.55166976768841,3.50776902267239,3.12681287494217,3.55137601008974,3.2167168642302,3.32912947943969,3.37252196953652,3.14791250741057,3.17796308751281,3.53528970126711,3.31612131571919,3.36427496244184,3.24678660909008,3.24335056766532 +92,ENSMUSG00000000538|Tom1l2,3.29769860158425,3.48820323263791,3.39077251855124,3.38794022603701,3.61194823102738,3.5676729953229,3.53437463912527,3.70079931705669,3.46849917678147,3.36678392575863,3.49917978305372,3.43343996428135,3.45297012572043,3.32081027631003,3.39958265955591,3.45333836160056,3.86757797233135,3.52828893072761,3.79835063408918,3.25231878289937,3.3702257824501,3.49958657689086,3.80984597281607,3.77814596223301 +93,ENSMUSG00000000544|Gpa33,1.02406331736955,0.728801299081272,0.578307769781276,0.908325249595576,0.837554929662087,0.794256321880987,-0.1120492004735,0.984762864623332,0.438428635496799,0.949703637665294,0.418748017668069,0.584041403320486,1.43844100841801,1.25543191321719,1.10079699860328,2.12165246418197,1.70987596142302,1.77143532625711,1.78944560595694,1.04937191424159,1.31033590051985,1.76208202123058,1.65588006781304,1.30593905934642 +94,ENSMUSG00000000552|Zfp385a,-1.06961229018149,-2.31344106857459,-0.319031744426201,-1.28929400251373,-0.402783815445934,-0.560867257610191,-0.880195831846457,-0.462040263512145,-1.76353369600901,-2.0006548538476,-0.614716726066206,-1.0788816769672,-2.14315890583583,-1.99735391076224,-2.24369684057438,-2.85398985714512,-1.25836628554204,-1.88343943236786,-1.21465468267243,-2.4689245476805,-2.5478580242128,-1.76545797508154,-1.95217899715238,-2.14371279284716 +97,ENSMUSG00000000561|Wdr77,2.888320645316,2.75382113186961,2.68695681672635,2.96985080859177,2.81394401149639,2.72978323531503,2.82305438751351,2.59838812911373,2.80746002979417,3.0328046672976,2.73120310332308,2.78506385764242,2.56042110089945,1.9415515735446,2.29467655057571,2.19799754133603,2.19425352288057,2.36556489093717,2.16248725495235,2.16378359295231,2.31206990938631,2.10173562766567,2.41209665327374,2.27651261131469 +98,ENSMUSG00000000562|Adora3,-3.1922365156275,-2.45317552025246,-3.08611656779031,-3.18707631404326,-2.74852794817806,-3.11348458473699,-1.89368588480481,-1.9493883111565,-2.83123011925237,-3.69712276074139,-2.77737975437257,-2.45104258275866,0.19783514832907,-0.408950369971349,-1.12361276153683,-1.44312859836048,0.523639184674583,-0.33098403199574,1.15720201038213,0.0460930438660498,-0.773752800691223,-1.25537310822813,-0.14590280489536,0.397686469014347 +99,ENSMUSG00000000563|Atp5f1,4.72874284504193,4.29107279694833,4.70626346309865,4.45529662286182,3.99915105843244,4.01238362306062,4.11625698123307,4.46034063872519,4.60001334179425,4.61625804196165,3.98422363474954,4.3402594849636,5.10952859423873,4.62516855482477,4.949542303411,4.8096055833397,4.47838945671456,4.76624421240972,4.29444067265996,5.03386068772593,4.86756152710872,4.86772398462349,4.47480989636866,4.73166274361515 +101,ENSMUSG00000000568|Hnrnpd,2.58313565364286,2.74975593992481,2.83093675444519,2.58133771247682,3.04514478940237,3.07014760474524,2.97094779907115,2.78293502235419,2.76427628702329,2.87546462926074,2.75343095171808,2.72744220797305,2.47708503938049,2.5055658318268,2.41800080845703,2.46420374910887,2.93516883036232,2.81958573115478,2.98008775012679,2.19862414913494,2.59396950846137,2.5939725504381,2.90419290120761,2.76442968092048 +102,ENSMUSG00000000579|Dynlt1c,-0.19778630896144,0.149413628112235,-0.45255050465541,0.0185563580040324,-0.422175514202534,0.109878773777373,0.0500334906686064,-0.27027503267054,-0.373499289533847,-0.148882775092591,-0.186781825291686,-0.312013645170805,-1.8349223544367,-0.920270634287593,-1.04302409797874,-1.6872861953253,-1.21647362085321,-0.991257424198387,-1.28196469330951,-0.535435829591574,-1.09182718581439,-1.39049765779,-1.55256224162971,-1.34194746202227 +103,ENSMUSG00000000581|C1d,3.10102803751549,2.21666643400996,3.06984489304994,2.89213439131917,2.56993554076987,2.52519387251754,2.40203680722418,2.92306501156799,2.891487022666,2.86490715641687,2.48213698428645,2.70241688436349,2.8561244151044,2.96939088014982,3.42436333011538,3.04463309137919,2.67800919749221,2.84778041548188,2.52943434664864,3.38121153070006,3.21003779631525,3.02402284427886,2.6927957110725,2.53708541255534 +104,ENSMUSG00000000594|Gm2a,4.42387916769236,4.19949989894242,4.59639975105414,4.13790507498425,3.96887025164711,4.03039971137685,3.88608750011715,4.61407582523171,4.48948258244802,4.12470280657526,4.11167316832962,3.99065862701827,3.27481334547136,3.11456270001717,3.62964245769879,3.14029346322879,2.94868363873378,3.08178361575435,2.79349029067827,3.66851612520725,3.383896827249,3.40800058870617,2.67338285978517,2.70796439973832 +105,ENSMUSG00000000600|Krit1,2.72972905358192,2.81666094633095,2.26893813818129,2.51276473018668,2.96874893209992,2.70380880202639,2.84308334463569,2.31781532784976,2.49878336002687,2.64785176217632,2.92195531993534,2.9339489832267,2.52515724442329,2.73861156203854,2.40070101670593,2.72063962858074,2.84718419464653,2.36274315648898,2.76665818229612,2.49233842348338,2.63285841569934,2.59242971081944,2.81276670947068,2.92848677094428 +106,ENSMUSG00000000605|Clcn4-2,4.04696788492332,3.98774018692977,3.72442948098902,3.87592114856395,4.10486593621599,3.80822878390063,4.05627251090746,3.74115551652904,3.9524105649929,3.93078759451083,3.958477400389,3.92912447208946,4.50304284020256,4.34595414159997,4.66289826364813,4.4831646413066,4.4489047976456,4.46446231797204,4.39097850441652,4.65176724339473,4.41970619946552,4.45457989705896,4.50093315137013,4.50512087724321 +109,ENSMUSG00000000627|Sema4f,2.48373982807234,2.54267783475868,3.12887045928559,3.04113428655484,2.71269575541524,2.80898329252946,2.43712007174642,2.41323713740592,3.05755446234168,3.02320759937284,2.318177658311,2.2843241518295,-4.08536871723601,-1.66796026187123,-2.92479285528709,-3.54814014130027,-2.93541638329031,-3.32007812414239,-3.26531404820539,-3.29488510816328,-2.70806500183481,-2.15538588578191,-3.38217396041613,-2.80640155084196 +111,ENSMUSG00000000631|Myo18a,2.74565467120222,3.28960002805819,2.99696931934719,3.02668148453785,3.17626378829817,3.1802826291737,3.2229395219673,3.13837342803507,2.89816655882061,3.08765511562398,3.28627147155729,3.07002594212005,2.66396921914369,3.56357065783749,2.88261387684676,3.37469361642099,3.55547505690542,2.99430758129054,3.77847377649672,2.80461149423273,2.92735250078249,3.35764279273277,3.63402147986864,3.47362733684219 +115,ENSMUSG00000000686|Abhd15,2.35401353345171,2.17725891462759,2.09355509583442,1.94465174805793,2.00601527691459,2.36732443733918,2.04598546299436,2.41548950674977,2.03910572515976,1.81344441752962,2.01667063961295,2.0094224159173,3.23549300637376,3.03601221698321,3.12764394456584,3.38314027043163,3.13103402085275,3.1158524576939,3.08592983703112,3.29312968795619,3.11924124051938,3.42216040997907,3.10756701090291,2.95198102481811 +117,ENSMUSG00000000693|Loxl3,-0.858227298063925,-0.851770207780702,-0.901044191919877,-1.00359602092643,-0.772225577700288,-0.346705090936316,-0.975982363148994,-1.5038070710423,-0.738247142384369,-0.662542537456808,-1.12040790846706,-1.15406507268022,-3.3531034881765,-2.4585001486165,-2.85461774423652,-2.90185016186692,-3.12564280126988,-3.3631764861375,-2.69610977252006,-3.78588863732419,-2.83276992021525,-3.1214429784601,-3.83530410429206,-2.14265256739135 +120,ENSMUSG00000000708|Kat2b,3.62301342327287,3.81318302898246,3.36967602158673,3.7185204072777,3.85437498575588,3.72683719494952,3.85201172169755,3.69543660226851,3.85509586130105,3.69231464941114,3.84373646100644,3.84552617284871,4.42341678922159,4.52695843504437,4.27946340820969,4.37931866600839,4.05305999381938,4.18948208293908,4.32139684950354,4.56301206004627,4.52688418508959,4.47007439883258,4.07897181888708,4.21248488109475 +121,ENSMUSG00000000711|Rab5b,4.85462826131521,4.68773790732977,4.89958460861522,4.69891115537253,4.38918367484132,4.42317375661655,4.23763432076697,5.07305337494002,4.91727348337917,4.84335732141214,4.37339036910528,4.5410168120081,4.87784980692665,4.70001123363607,4.95938046731521,4.66658396363161,4.27824489047532,4.77067849798484,4.16239012968487,5.10306657004117,4.83723514483833,4.68565733095237,4.21310550919109,4.389730938607 +126,ENSMUSG00000000738|Spg7,3.95290172119794,3.82403433648151,3.92031050099576,3.68872687924038,3.83426908248951,3.84215954600426,3.97871963068082,3.77614134869825,4.01901202614004,3.79200978082957,3.74301695325522,3.81904940380113,3.91484111291044,3.68719072212582,3.9806788117171,3.91760605421476,3.84293784362381,3.90797521935524,3.95513311606091,3.77969917309758,4.09708536535048,3.89282866957075,3.89941333250997,3.81966363397409 +128,ENSMUSG00000000740|Rpl13,5.75189233706554,5.15063390950399,5.96618135854788,5.67828209641101,5.33362143168711,5.46277805053073,5.42666867026901,5.74901097421949,5.71465661326477,5.67962795315579,5.45892029058988,5.5241268124995,4.86102048146791,4.55215161780652,4.72414533899211,4.61264077475506,4.24649976743149,4.74523226264062,4.24798792927734,4.75337605379078,4.75455737962983,4.37749913285239,4.22273277484458,4.30875291898651 +129,ENSMUSG00000000743|Chmp1a,4.41816978937559,4.30395260211182,4.49656068011327,4.35194716146107,4.04429839296724,4.01110371960122,4.19803189001337,4.41956879883986,4.31399081925465,4.25997807344573,4.24979165356515,4.22372959678172,4.37892307446963,4.42838041098129,4.42230472092125,4.41097204659048,4.14154748944766,4.33290714704356,4.0156363945246,4.44233422718167,4.39156882208557,4.34360760456454,4.08039658805559,4.14530729530494 +130,ENSMUSG00000000751|Rpa1,3.5339634549565,3.38440314959747,3.72925099655942,3.29277143121054,3.17346299202703,3.27122289959461,3.29633037308645,3.31096678685267,3.63913939734228,3.37381674573192,3.22300033698732,3.42283607658315,4.44115298631929,4.27743542352881,4.488294256043,4.53091799825434,4.22428205311498,4.3802254868247,4.23031755777166,4.29322762379894,4.50086453506553,4.46141488022008,4.24839418746225,4.12852860946246 +132,ENSMUSG00000000759|Tubgcp3,2.22550975733531,2.5577120099699,1.92494975225012,2.25150407837602,2.81015510111947,2.57354517191923,2.69126479658946,2.06784263728079,2.42123650682952,2.26776891636593,2.72383400488452,2.45199802330189,1.80634173396236,2.33970156384343,1.80776620093668,2.08828459322879,2.58639780316102,1.93368914758211,2.49143229625008,1.89751200616901,1.93771518751123,2.1006087257163,2.56080135198976,2.38904792144852 +134,ENSMUSG00000000776|Polr3d,4.02142685051854,3.80377855946748,3.75112352409386,3.9521840869197,3.87322752984413,3.93566970488771,4.06393209641371,3.55520832098475,3.78521473189543,4.02706951331334,4.04180183393423,3.82855608596907,3.6798234516592,3.26120976423247,3.15324152509096,3.47154009165827,3.8940319965883,3.72688538156294,4.0048988402068,2.93830475067208,3.44993886030991,3.21615884256343,3.98238674506305,3.4201916828536 +136,ENSMUSG00000000787|Ddx3x,6.0588725209545,6.14544325427035,6.38202361983641,6.20632024413915,5.82858469117822,5.80047530368106,5.82615494413257,6.03776604447855,6.41567432916108,6.24958517521089,5.86651710341803,5.79190757028774,6.40979768773747,6.46928811972985,6.60801655794816,6.58270616455338,6.18747559326951,6.07376932467343,6.07067616909043,6.31636482923674,6.58176101265069,6.53606402511152,6.07727888542442,6.14015598151037 +139,ENSMUSG00000000794|Kcnn3,3.15040152851169,3.29768705659419,3.06910701661902,2.91950319981798,3.38323583077912,3.58155873858489,3.35966980650613,3.3914067463464,3.25502071113588,3.09235709741765,3.20903491382339,3.17781449032579,2.88611082498174,3.66478845623865,3.72306953025499,3.49293752379961,3.12160147666424,3.00405836514348,3.49503699262235,3.53962963610264,3.56593626333454,3.56777954157416,2.69667710505724,3.23588603726054 +140,ENSMUSG00000000804|Usp32,2.50515766143349,2.61153592256764,2.50031229704194,2.31908275863558,2.97761300214679,2.90570641652237,2.65398800278349,2.8156434328709,2.45799919255472,2.45826472777557,2.86082095194294,2.68998216484654,2.51648520916452,2.88024805643019,2.72980404947318,2.65911313914758,3.04088353990812,2.74967294000366,2.8609357315902,2.76000010428216,2.58232507709902,2.67373531940755,2.87187221786359,2.83058864458494 +142,ENSMUSG00000000811|Txnrd3,0.771858032213039,1.51315813330106,1.73342925412056,1.47247595701499,0.649157554685043,0.452882177029317,0.734331382694805,1.05326174647236,1.33547574140903,1.22269458741224,0.14910749989776,0.503833138043056,0.230375592047441,0.826531595507589,1.67586052342916,1.43223479789232,0.0148628531856441,0.212298687766648,0.385384620515346,0.725257798899972,1.32313028625628,1.45347899352106,0.0698888522008936,-0.482575477292991 +144,ENSMUSG00000000823|Znf512b,3.27455358012336,3.9570542715444,3.22352920317687,3.71112471557487,4.08815500615257,3.88316595184303,4.05258506018676,3.15307370406164,3.5448461662623,3.876841445274,4.0353809190605,3.83651141603384,2.74677606637787,3.54257843008565,2.81250633681796,3.39888956697017,3.58458835711467,2.89947998571005,3.67930238834716,2.51848214253168,3.19286718962059,3.46669066057575,3.64176851729894,3.52625933608063 +145,ENSMUSG00000000826|Dnajc5,4.48566406629482,4.19757809432993,4.42738772837717,4.25478929981459,4.22222442720286,4.19892675887536,4.24698437370012,4.15778512757221,4.37230878433613,4.33178813353044,4.15168982166244,4.19824741810877,4.59510587596211,4.22446635977672,4.59705328180378,4.58375757926689,4.56968717940277,4.47212832470044,4.54611128383792,4.20478450757324,4.63059387267886,4.55489426345394,4.64514736984883,4.45512117504284 +146,ENSMUSG00000000827|Tpd52l2,3.34050728704446,3.32905974589917,3.39587390196452,3.57480740933974,3.26746782608511,3.4052135019647,3.31300035261251,3.24116564412225,3.34793511181664,3.58424386394132,3.46196891207515,3.3802716297629,3.21201555931735,3.0111112275214,3.00399444778382,3.2748967292735,3.20704910148688,3.14511636129206,3.22489066997214,2.97654652754755,3.34672402968578,3.25512104287274,3.14480878764641,3.17027992949692 +147,ENSMUSG00000000838|Fmr1,2.97580458028285,3.05460253993548,2.98760404639722,2.88565634173672,2.90384190434008,2.9335244191981,2.86182995086452,2.85153993073179,3.02724455702674,2.8990810329861,2.78477102732329,2.97454240621354,2.70977304508922,2.72685120049228,2.76639273213197,2.72753030122059,2.57990405504569,2.55045808273639,2.38899203951725,2.73080963666026,2.78095166320838,2.72672343543179,2.4233960112377,2.54836386213715 +148,ENSMUSG00000000861|Bcl11a,0.853889205276384,1.07652396843146,0.999077356994222,0.607542177157844,1.51786705533649,1.52269292371877,1.09781830950955,1.53830410771354,1.00231436233237,0.626910666452308,1.26736420146573,0.997275215879381,-1.73580472931301,-1.10845553579324,-1.48658178017746,-1.56454246140392,-1.07939641400248,-1.58351104452481,-1.34694491640868,-1.51295246961555,-1.401598419299,-1.17785588834212,-1.28937757981668,-1.47242552763381 +150,ENSMUSG00000000876|Pxmp4,2.14905750692064,2.27842893212217,2.35174141574521,2.18315250158607,1.45200801650897,1.80326960787754,1.59435816938642,2.47880350086523,2.18081585234904,1.91215947565781,1.72018458953056,1.70634718023034,1.91608627773894,2.24815458476334,2.4374352960961,2.50526740755299,1.58643142649011,1.89719898589199,1.1660635597312,2.55339837711113,2.34950063758608,2.42137340333916,1.7844176320301,1.80503429044007 +151,ENSMUSG00000000881|Dlg3,1.77560707335215,2.18896308450188,1.84008694457654,1.83342366085086,2.24972525469301,2.16983477403644,2.02968100662012,1.86618492829436,1.84546079633066,1.79095008035152,2.20364342687425,2.12372232153822,3.37882554998404,3.55402840150811,3.41999627461129,3.63942055581188,3.54280453161928,3.32070875806202,3.62475095075408,3.58261307443597,3.52842832624829,3.64558847369413,3.46610137449197,3.50778070792327 +152,ENSMUSG00000000884|Gnb1l,0.983244606300534,1.11555519169465,1.27177245657672,1.13961912879098,0.877660430691589,0.789879780621924,0.732045613111506,0.760423322452598,0.718921984825971,0.89412988582936,1.27561355303779,0.854172219396788,0.51948913908257,0.821896443531609,0.93726517644812,0.341252844234249,0.452242196712698,0.836807061240983,0.343391280774511,0.911092047853408,0.539220040858333,0.307152423424304,0.903996756601957,0.378455701663755 +155,ENSMUSG00000000902|Smarcb1,2.52145033763353,2.23032370869546,2.20739140224422,2.4034321175335,2.63442044412719,2.60150402411322,2.57850942701349,2.38765464770835,2.32184026944746,2.27426349011641,2.72500959094979,2.47728417561366,2.05843041778665,1.96709224386295,1.9863272670238,2.19806603564448,2.502284703025,2.29383456492522,2.45753421928626,1.86624981760121,2.07529642109842,2.00913670301839,2.38182865716166,2.30810411257502 +157,ENSMUSG00000000915|Hip1r,4.84686632773779,5.10286948007888,4.66889876672602,4.55797327482373,4.7850751140182,4.97080268587141,5.21010624149189,4.94820728275174,4.88511813466366,4.56016419127325,4.89348049074711,4.95819044764462,5.19727119808384,5.42128166585807,3.9900935071154,4.02059446055078,4.89914160598195,4.93751054447737,5.78792180321573,4.93723863013678,4.34609699950757,3.91262298309647,5.17028159436224,5.31564398628267 diff --git a/tests/test_data/bioluminescence_example.csv b/tests/test_data/bioluminescence_example.csv new file mode 100644 index 0000000..6104417 --- /dev/null +++ b/tests/test_data/bioluminescence_example.csv @@ -0,0 +1,583 @@ +Participant ID,1,1,1,2,3,3,4,4,5,5,6,6,7,7,7,8,8,8,9,9,10,10,11,11,11,12,12,12,12,13,13,13,14,14,14,15,15,15,16,16,17,17,18,18,18,19,19,19,19,20,20,20,21,21,22,22,23,23,24,24 +Replicate,1,2,3,1,1,2,1,2,1,2,1,2,1,2,3,1,2,3,1,2,1,2,1,2,3,1,2,3,4,1,2,3,1,2,3,1,2,3,1,2,1,2,1,2,3,1,2,3,4,1,2,3,1,2,1,2,1,2,1,2 +Group,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 1,Group 1,Group 2,Group 2 +0,919.123,834.821,1227.032,152.91,186,131,540,406,307,189,140,282,564.071,298.783,506.62,295.221,342.331,293.212,564.754,578.906,193.281,287.944,441.721,479.457,558.449,133.5,390.942,407.189,406.213,94.713,124.118,73.916,1112.212,747.835,1086.323,595.233,491.795,408.985,800.394,1221.799,258.223,352.672,95.439,102.981,73.726,1480.701,526.498,574.276,1155.453,345.919,358.793,505.006,106,161,747,444,704,538,159.523,158.988 +0.1668,920.718,838.938,1222.663,156.901,203,121,685,510,288,193,148,302,563.009,303.439,506.763,294.169,343.17,294.523,581.508,582.121,203.778,314.142,445.127,483.091,563.356,123.5,397.305,409.621,412.28,94.812,127.433,75.856,1134.266,756.197,1097.5,597.067,488.03,405.678,826.948,1302.709,282.085,355.342,94.344,103.773,72.361,1479.018,528.973,583.327,1166.273,351.159,357.759,504.341,37,210,725,482,727,537,161.031,157.595 +0.3336,926.536,829.957,1225.876,157.411,203,122,742,519,282,187,153,308,573.158,309.183,509.595,295.857,341.492,293.326,600.822,571.641,218.427,343.226,448.68,487.388,561.829,176.5,402.113,409.225,410.455,99.068,128.184,77.698,1141.821,772.681,1107.573,592.63,484.517,405.846,851.039,1328.244,297.13,359.474,94.557,102.584,71.28,1498.607,528.648,585.689,1170.658,346.882,361.077,505.984,103,250,704,472,696,509,161.23,156.396 +0.5004,922.005,832.11,1218.498,162.01,201,125,763,506,274,179,157,325,576.119,315.781,520.51,295.43,346.911,293.589,626.038,569.885,225.011,372.495,448.767,493.572,568.015,185.5,404.248,416.833,419.251,102.236,127.844,80.446,1150.813,779.686,1113.342,592.573,485.683,405.848,884.628,1349.927,311.976,365.494,97.5,103.264,71.707,1515.381,536.766,590.626,1176.598,352.448,363.184,514.34,104,267,691,456,667,489,162.415,156.561 +0.6672,917.688,836.875,1213.635,165.166,198,127,779,499,266,172,161,329,580.757,323.214,527.845,299.789,343.682,298.941,642.972,563.413,239.726,405.118,462.399,492.359,563.074,185,404.403,420.142,420.241,103.862,131.612,82.953,1171.562,799.399,1122.771,588.15,479.08,398.337,906.121,1358.807,328.748,365.732,96.69,100.899,71.565,1515.961,538.351,593.341,1176.725,353.099,365.362,516.903,107,263,690,444,646,486,165.882,159.958 +0.834,914.059,838.414,1203.028,168.563,187,127,795,495,262,170,165,336,585.023,325.576,531.391,298.163,342.744,296.591,663.599,558.696,249.968,423.106,456.528,499.031,559.504,185.5,408.179,424.271,425.854,110.055,132.093,85.815,1183.079,806.467,1135.094,589.473,475.982,400.34,942.986,1355.804,340.594,367.998,99.491,100.616,73.342,1528.492,540.119,592.676,1179.172,358.779,366.139,521.024,115,256,684,429,646,488,167.077,156.236 +1.0008,911.542,822.959,1209.939,171.833,178,128,817,487,259,164,166,351,584.569,340.437,539.817,296.678,349.058,301.699,681.921,555.637,261.562,452.134,464.054,507.088,563.144,186.5,412.52,431.03,421.81,112.021,136.286,86.92,1189.657,820.118,1145.487,583.755,475.936,398.012,978.761,1339.758,352.907,377.969,101.354,99.271,73.243,1541.674,545.366,592.012,1182.793,364.769,370.396,524.848,127,246,685,418,653,485,170,157.105 +1.1676,903.943,820.438,1207.446,172.37,171,128,830,484,250,160,171,356,594.352,342.274,545.283,301.93,347.238,303.913,695.492,556.459,270.14,471.92,471.965,512.072,570.423,185,427.58,432.345,427.283,113.562,132.249,87.982,1205.764,827.091,1165.166,585.433,469.054,396.772,995.489,1323.429,371.419,385.206,99.477,99.88,73.072,1548.803,545.111,591.701,1183.5,362.957,372.446,527.043,133,237,676,406,682,484,166.323,155.67 +1.3344,904.455,815.071,1188.23,176.234,166,125,827,475,247,161,171,366,599.442,342.441,552.027,303.919,350.169,304.612,709.077,562.52,278.988,495.032,476.712,513.546,574.728,181.5,423.083,439.472,432.826,114.538,137.604,89.639,1220.81,854.657,1162.175,579.61,469.352,393.897,1006.066,1301.916,384.369,400.516,100.586,99.271,73.157,1556.03,547.176,604.203,1187.22,371.879,377.282,532.468,139,224,680,399,703,484,169.765,156.859 +1.5012,899.353,811.06,1191.886,179.475,162,121,829,472,239,156,172,380,595.643,342.374,561.503,306.479,354.79,307.003,715.436,574.049,285.672,510.148,475.733,513.868,578.042,177,423.931,437.068,440.32,116.263,138.128,92.132,1234.006,865.305,1184.913,570.884,464.113,395.212,1020.843,1281.975,395.465,397.786,100.557,97.005,73.157,1567.897,549.779,597.316,1184.349,373.585,381.581,542.973,140,214,673,391,717,483,167.162,158.11 +1.668,892.033,809.514,1179.736,183.721,154,118,829,473,237,156,172,389,606.961,351.523,567.975,303.814,353.311,304.961,721.254,572.703,294.991,532.495,485.425,525.202,578.971,174,429.248,443.785,439.726,118.695,143.624,93.705,1241.761,889.096,1197.378,570.116,458.646,401.175,1025.538,1265.108,414.926,414.027,102.591,96.609,75.02,1564.573,548.972,597.584,1186.994,375.396,382.415,540.454,141,207,670,390,728,482,172.895,152.431 +1.8348,889.904,805.21,1168.767,186.382,149,116,811,471,231,152,176,392,602.009,355.255,577.91,308.855,356.483,307.116,726.333,568.724,307.339,548.078,490.688,524.843,580.677,168.5,432.458,446.881,442.173,122.824,141.471,92.756,1257.578,891.527,1204.669,561.725,466.081,395.665,1034.757,1242.703,424.38,428.26,101.866,95.221,74.167,1582.535,551.829,596.99,1191.519,381.155,387.056,545.775,144,193,663,385,729,481,170.696,156.17 +2.0016,879.028,799.729,1162.092,186.637,144,113,814,469,227,153,175,396,605.204,360.45,570.345,308.119,363.921,310.683,726.091,572.703,315.433,569.18,496.16,530.57,586.015,161.5,431.143,443.544,440.476,121.636,144.743,94.725,1261.385,906.515,1222.524,559.663,461.248,401.458,1033.895,1224.532,447.237,437.805,103.003,93.692,78.02,1592.012,552.226,595.208,1180.784,385.57,388.938,546.44,140,183,652,387,732,481,176.266,151.921 +2.1684,880.114,793.934,1151.403,187.91,142,112,801,471,225,152,177,399,607.399,361.924,579.423,306.493,365.357,308.063,721.254,581.031,327.525,579.823,494.923,539.609,592.545,154,433.83,449.116,446.697,118.709,144.814,94.626,1267.46,911.078,1218.845,553.462,466.379,400.458,1037.812,1200.598,460.032,450.566,103.643,95.108,77.011,1591.884,553.513,595.972,1179.398,387.141,393.168,557.576,134,174,643,382,726,484,178.138,152.488 +2.3352,871.843,789.265,1150.842,195.68,136,109,789,474,223,148,171,397,605.068,367.432,587.311,314.592,364.703,313.147,723.9,579.94,341.053,600.926,497.574,538.302,591.884,151,430.888,443.261,450.346,117.903,149.064,92.487,1286.76,922.727,1233.709,556.975,464.727,408.34,1034.531,1190.174,477.709,466.258,102.278,94.471,80.594,1578.519,553.343,586.354,1169.328,391.216,397.711,556.982,133,169,636,385,729,491,179.254,153.957 +2.502,862.042,784.338,1137.759,195.964,138,109,785,476,222,149,178,403,607.775,368.765,590.419,319.095,369.681,317.115,720.728,590.803,348.351,613.041,508.165,548.675,601.793,143.5,438.524,446.867,445.708,119.784,150.452,95.532,1285.943,937.756,1235.66,555.453,469.239,414.457,1024.859,1180.558,498.769,486.581,104.254,92.319,80.679,1573.936,558.095,592.62,1169.116,392.687,399.409,563.292,127,160,646,392,727,488,177.86,151.594 +2.6688,853.289,777.43,1123.476,198.539,138,108,771,480,215,148,175,403,608.87,365.187,590.587,316.433,376.323,315.555,715.763,590.987,361.794,634.214,510.7,552.819,605.858,143,437.11,450.119,453.301,117.338,150.679,96.297,1289.188,941.206,1239.169,555.254,466.579,414.527,1020.207,1162.699,514.733,498.846,104.354,91.936,81.774,1563.894,552.254,593.836,1163.204,398.08,402.833,570.862,127,159,658,401,724,502,178.827,149.783 +2.8356,853.599,776.242,1126.252,198.992,135,109,768,492,215,151,176,398,616.34,369.878,591.67,316.606,373.222,315.361,714.444,600.589,378.949,651.636,517.668,561.037,613.548,141,434.565,448.14,452.028,119.303,150.126,96.099,1298.102,949.698,1239.359,559.663,465.968,418.162,1012.953,1144.458,528.264,512.867,102.491,91.837,83.509,1571.956,547.318,583.837,1166.457,402.852,407.785,575.111,125,157,664,407,740,511,179.467,148.749 +3.0024,844.109,771.66,1104.307,205.772,134,105,760,496,218,149,174,406,608.839,368.627,592.4,321.999,378.172,317.948,708.423,603.79,390.813,653.165,522.269,566.018,618.078,138,436.813,447.447,448.875,122.131,148.313,96.609,1303.836,960.382,1257.768,560.53,471.062,422.4,1008.654,1144.698,550.781,527.553,105.292,94.329,85.371,1548.845,547.841,583.384,1154.279,404.651,407.115,574.19,121,155,674,414,744,524,183.92,150.306 +3.1692,839.212,764.927,1094.728,206.125,139,108,764,505,220,153,174,407,615.397,374.292,596.453,322.999,382.381,324.739,703.771,607.529,402.165,670.063,534.549,570.641,623.646,137,438.326,445.481,451.109,118.214,151.826,94.838,1307.857,962.444,1254.555,557.515,477.508,431.44,1004.214,1129.035,570.157,545.497,106.984,92.149,84.575,1543.131,547.403,586.439,1156.882,404.339,411.817,576.881,120,154,678,430,750,530,182.511,149.004 +3.336,835.581,754.72,1089.648,206.493,141,108,761,514,218,155,179,397,612.738,371.786,602.396,322.778,385.553,322.268,702.633,609.455,414.114,681.075,534.546,575.21,629.181,135.5,439.019,447.716,455.861,116.008,149.049,94.994,1308.786,968.404,1256.086,565.266,481.059,436.347,988.136,1114.334,576.412,552.89,110.155,92.446,84.646,1533.174,542.155,578.108,1141.974,403.32,416.406,578.227,118,153,688,440,776,548,184.998,148.919 +3.5028,824.097,758.182,1086.076,213.443,140,109,756,519,225,160,183,409,617.661,374.071,602.893,330.693,389.194,321.061,689.702,614.78,426.675,700.238,540.271,578.787,634.253,134.5,436.248,444.732,451.138,114.806,151.968,92.685,1311.726,968.082,1253.403,562.749,488.127,448.889,982.777,1113.088,599.383,574.913,108.492,91.781,85.4,1522.128,539.143,574.756,1131.366,407.2,417.454,580.507,114,155,707,450,791,567,180.932,148.451 +3.6696,817.201,749.494,1071.026,213.895,141,109,758,534,228,162,179,407,609.2,375.265,604.62,329.986,386.534,326.559,687.768,616.083,436.263,707.258,546.964,586.653,636.423,135.5,438.722,445.496,450.699,114.368,149.418,91.693,1301.176,970.688,1249.148,564.669,495.652,450.733,979.935,1099.647,614.513,583.481,108.335,91.228,87.988,1515.155,535.055,568.873,1128.212,404.396,419.437,582.56,116,155,715,459,804,574,185.186,149.23 +3.8364,812.192,738.601,1060.732,213.216,144,109,763,537,235,168,181,407,613.95,378.494,607.711,329.647,390.09,325.488,686.331,624.382,451.84,719.316,547.197,594.204,644.436,136.5,434.141,445.199,445.241,109.659,149.545,93.082,1292.184,971.361,1259.636,574.411,498.067,458.759,962.344,1098.458,625.736,593.324,109.259,92.743,88.073,1504.476,527.7,564.63,1115.2,409.622,419.564,581.583,116,157,734,471,829,604,183.564,145.918 +4.0032,805.481,738.917,1046.257,215.608,144,110,758,546,242,168,180,406,608.419,374.97,611.378,329.42,388.497,326.162,680.072,626.124,459.906,727.596,558.703,600.688,649.477,137.5,430.804,437.591,445.948,112.275,145.806,92.926,1305.052,978.66,1246.279,577.341,505.578,461.097,957.197,1084.352,639.691,604.413,110.255,89.628,87.305,1481.521,527.616,554.432,1107.308,406.365,416.59,582.192,114,161,740,478,850,617,181.018,146.414 +4.17,806.835,730.615,1039.375,219.274,145,108,766,540,246,176,183,402,604.749,372.878,610.093,330.311,387.857,332.928,670.541,619.425,469.807,737.05,553.81,606.537,651.9,141.5,430.874,445.142,446.655,109.659,146.811,91.325,1294.537,975.841,1240.225,584.708,511.264,471.74,950.862,1077.384,650.277,618.349,109.515,90.577,91.031,1471.819,518.012,552.282,1099.826,404.863,422.099,583.028,119,164,748,488,870,627,185.869,144.008 +4.3368,795.421,725.972,1032.356,224.793,143,107,766,549,251,180,182,403,605.204,385.141,613.116,335.85,392.565,329.873,670.526,632.554,481.315,741.763,561.631,606.637,653.565,141,431.666,433.504,444.859,108.429,150.877,92.317,1293.401,975.84,1237.263,585.419,510.81,480.057,941.713,1065.119,663.68,620.346,111.378,92.644,91.855,1457.081,513.373,556.002,1094.154,405.033,424.294,589.896,116,166,753,489,894,647,183.92,142.663 +4.5036,786.458,724.707,1020.774,225.558,143,110,768,557,256,183,185,405,603.349,377.793,607.265,336.252,388.426,339.745,660.569,624.58,488.698,744.452,566.033,610.384,662.607,144.5,418.516,435.484,439.118,108.358,145.664,90.291,1285.802,970.546,1235.655,590.482,515.738,482.445,941.416,1056.239,669.964,629.127,107.255,91.639,92.495,1448.397,505.551,538.987,1078.526,411.959,420.895,587.376,118,171,757,492,902,665,185.171,146.015 +4.6704,783.953,709.908,1010.572,228.148,142,106,767,553,258,190,184,404,603.165,378.728,610.72,340.183,391.356,339.688,661.55,622.98,496.991,749.448,570.372,614.511,661.542,146,427.169,432.755,439.783,107.114,146.273,90.22,1275.415,969.658,1230.25,597.892,522.01,485.862,923.755,1049.838,672.356,638.162,109.828,92.219,91.358,1433.192,504.844,540.529,1067.805,405.685,423.515,584.288,120,172,756,494,919,673,185.42,141.71 +4.8372,767.346,698.827,995.68,229.337,144,105,767,554,265,189,184,400,601.131,374.367,609.149,334.399,390.232,338.43,655.832,627.512,508.03,753.468,578.708,623.269,673.597,148.5,426.349,436.205,431.68,106.209,147.817,89.71,1277.415,969.686,1227.236,609.014,522.011,490.717,921.252,1036.624,678.428,639.734,112.217,89.642,94.073,1416.121,497.589,521.477,1056.561,402.427,422.212,582.419,121,176,755,501,940,681,182.119,140.959 +5.004,761.799,693.519,992.018,230.214,137,103,767,552,271,195,183,398,593.768,379.378,611.518,337.691,393.418,345.168,655.505,621.762,519.098,755.52,578.462,630.104,673.635,149,426.392,423.281,433.278,105.417,143.341,89.299,1271.945,964.348,1224.646,609.569,530.706,496.807,908.822,1026.328,679.291,640.966,111.293,91.681,91.756,1405.81,491.365,519.851,1041.469,404.665,422.991,583.608,121,177,760,492,956,699,182.782,138.962 +5.1708,747.922,689.52,969.25,230.143,134,99,767,550,273,197,185,404,589.409,375.683,605.347,341.994,395.549,346.166,647.609,627.724,532.782,755.222,583.977,632.703,681.712,150,420.142,428.739,435.017,105.403,141.754,87.798,1265.816,961.873,1216.095,610.147,525.536,499.795,899.815,1020.564,690.401,641.122,110.042,90.265,93.149,1386.575,486.698,521.604,1033.86,404.523,422.043,583.028,123,177,756,492,963,698,184.247,139.161 +5.3376,740.385,681.443,960.302,238.734,133,99,763,539,269,199,182,395,581.64,374.544,605.138,335.728,389.322,349.49,646.671,625.501,532.37,758.633,581.63,636.18,674.031,153.5,412.718,426.208,424.511,105.389,143.497,88.421,1258.956,954.144,1212.031,618.742,534.103,500.488,890.539,1014.216,694.336,648.458,110.539,93.154,95.012,1365.784,479.244,507.687,1029.292,398.759,417.199,581.045,127,180,750,485,970,691,178.656,138.552 +5.5044,738.261,674.604,954.635,233.413,131,97,768,540,276,203,182,391,575.384,371.724,601.426,341.401,396.149,347.378,640.116,625.926,536.026,768.031,591.256,631.147,689.048,151,410.427,417.257,422.022,103.636,142.321,86.622,1249.807,955.37,1201.795,620.236,539.742,502.046,882.081,1005.211,692.071,642.935,111.463,90.634,95.211,1356.35,475.213,501.294,1014.837,393.647,415.981,582.235,125,177,749,490,973,703,180.349,136.668 +5.6712,731.339,667.351,937.108,236.923,129,99,768,530,273,202,180,386,573.436,368.488,602.322,344.497,393.759,349.363,648.168,620.601,540.749,755.435,586.948,642.482,694.85,150.5,409.013,414.683,417.639,103.381,137.689,86.679,1243.495,955.432,1195.858,617.547,540.46,500.587,878.287,1011.496,694.902,647.92,110.169,91.596,94.728,1333.451,469.245,491.351,1000.82,399.397,411.987,576.541,123,178,737,481,971,699,179.979,134.7 +5.838,721.399,662.057,933.997,243.433,127,95,766,523,275,203,179,382,569.689,367.65,596.623,344.12,391.597,347.888,640.443,623.694,543.736,753.963,594.91,639.591,698.112,150,400.501,412.591,412.039,105.191,139.53,87.685,1235.473,942.491,1187.394,627.617,539.374,504.524,872.029,993.736,697.167,648.713,113.156,91.214,93.107,1319.364,456.855,486.33,986.974,390.418,412.695,574.261,122,178,730,479,973,701,182.298,132.434 +6.0048,707.467,643.127,916.59,242.272,124,94,766,520,276,203,182,382,562.678,365.541,600.169,344.441,391.569,347.496,645.39,621.544,542.384,750.495,601.672,640.712,699.702,150,402.155,406.341,409.748,103.636,136.286,86.169,1234.452,940.446,1178.574,626.536,535.419,501.902,863.389,992.407,701.158,640.683,110.497,90.251,94.301,1300.242,444.083,478.452,977.002,389.639,407.894,565.905,126,174,721,476,973,706,177.12,132.264 +6.1716,703.272,637.465,903.127,243.631,120,94,770,509,276,202,181,380,555.446,362.249,602.748,344.29,392.351,349.134,635.344,622.704,547.875,754.119,602.6,644.428,698.098,152.5,397.588,406.468,404.927,101.514,137.065,86.948,1224.749,935.583,1169.81,630.39,535.867,508.205,866.288,977.276,703.705,640.981,110.155,91.016,95.424,1278.772,444.889,466.953,953.68,386.013,404.467,566.188,124,181,717,469,969,699,177.641,131.031 +6.3384,690.3,629.536,895.505,247.368,122,92,760,506,276,201,174,373,548.482,362.774,589.008,344.427,390.758,354.667,630.895,623.863,543.281,756.355,604.925,646.221,706.25,148.5,391.946,406.185,402.664,102.391,136.612,86.735,1214.412,928.294,1175.469,629.722,543.674,511.136,857.351,975.438,698.822,640.372,111.535,89.232,94.912,1262.153,432.612,460.688,944.147,387.684,400.912,560.665,121,176,707,467,975,691,175.171,128.865 +6.5052,678.366,621.852,883.95,247.948,119,91,757,506,274,200,177,372,548.629,358.137,584.491,347.151,387.345,345.777,632.659,622.718,549.07,750.354,603.082,656.45,710.462,150,391.125,398.733,394.095,102.787,133.836,87.359,1209.014,924.668,1161.746,634.131,537.607,506.874,857.351,953.492,696.799,639.366,111.179,89.119,95.197,1235.973,431.594,452.258,924.925,381.283,399.184,554.009,122,178,695,467,965,692,176.892,125.876 +6.672,673.141,619.749,872.896,249.448,118,92,752,505,272,197,178,368,535.724,351.896,585.584,343.281,395.708,346.181,627.68,625.009,557.89,745.075,610.837,646.886,715.415,150,380.789,395.127,386.699,100.397,135.281,86.027,1201.016,912.823,1157.621,637.416,534.358,507.275,859.769,953.973,698.313,627.314,108.378,90.846,97.017,1219.708,422.005,445.766,911.05,378.634,395.828,558.172,121,179,696,470,956,693,171.928,127.717 +6.8388,662.003,609.655,854.927,250.651,121,93,758,494,272,195,175,369,530.622,349.909,577.644,344.489,392.792,348.95,627.106,616.581,590.295,752.293,609.837,650.142,712.997,148.5,381.595,392.568,387.35,103.112,137.618,86.013,1197.656,902.218,1150.212,632.509,535.966,503.023,852.854,950.664,694.223,634.324,110.724,89.019,97.259,1195.197,407.182,430.491,898.788,372.261,392.485,555.737,121,176,693,458,955,696,170.121,128.015 +7.0056,649.861,600.278,848.924,251.897,121,91,750,495,260,195,175,364,528.545,343.758,571.629,349.943,390.801,347.312,622.957,618.561,643.043,752.632,612.308,658.245,716.264,147,374.284,381.27,379.686,103.324,134.275,87.968,1193.943,899.339,1147.379,629.722,537.373,504.97,851.567,938.079,699.459,630.175,108.676,90.648,95.396,1174.618,402.939,420.124,885.832,368.522,386.934,550.751,119,175,684,459,958,687,169.396,125.694 +7.1724,636.388,592.571,826.753,256.001,120,89,759,490,261,188,175,362,514.462,344.263,564.397,348.058,393.631,348.341,628.682,623.015,696.815,752.859,615.771,662.193,717.132,148.5,374.086,376.872,373.733,103.155,134.601,84.341,1193.597,897.351,1135.094,627.233,537.776,509.961,840.354,925.621,690.5,626.039,108.349,88.75,96.676,1152.921,393.831,419.558,875.776,362.404,383.124,543.344,121,176,687,459,951,690,170.548,123.624 +7.3392,625.478,577.698,814.323,254.784,119,90,756,490,257,186,175,364,511.078,337.971,562.942,347.524,390.573,349.716,620.226,618.631,745.807,747.24,620.525,653.741,721.073,148.5,364.753,373.591,368.628,103.381,132.547,87.203,1176.702,883.582,1136.286,629.196,534.018,509.227,847.226,924.518,699.162,621.875,111.279,88.524,95.538,1129.698,387.084,407.606,848.875,358.779,383.407,537.708,118,179,687,454,958,689,164.506,121.146 +7.506,616.184,568.489,804.229,254.303,119,91,753,493,256,183,171,355,507.693,339.077,558.153,345.324,390.246,346.995,617.873,624.797,781.043,746.504,623.632,654.725,722.288,148,357.697,367.525,361.897,102.193,133.737,86.99,1170.285,882.739,1121.58,629.708,527.468,507.073,841.104,915.412,686.495,617.089,110.312,88.694,95.382,1113.291,380.578,397.904,839.455,353.921,373.054,536.192,120,176,683,463,957,698,167.356,121.628 +7.6728,603.684,559.637,783.47,255.109,123,93,756,497,250,179,168,352,504.122,333.667,544.128,354.356,390.147,342.008,620.695,625.659,809.423,752.519,621.176,659.236,722.261,148.5,359.423,358.814,359.536,101.316,134.615,87.6,1159.124,867.391,1119.178,621.046,524.007,498.848,834.062,897.863,691.534,617.924,108.037,88.821,93.491,1085.838,373.11,393.321,823.176,349.644,366.086,527.114,120,177,683,460,966,696,161.805,118.526 +7.8396,595.893,544.451,779.567,256.638,122,95,754,498,242,179,168,351,496.565,326.077,541.729,351.598,394.57,344.63,613.669,629.661,828.627,742.258,627.13,655.757,726.281,148,351.829,352.847,350.882,101.246,133,88.945,1155.147,863.272,1102.775,622.084,520.355,493.494,827.656,898.387,684.132,612.486,108.079,88.864,95.197,1059.262,366.208,380.663,804.138,343.356,365.308,519.849,120,176,689,461,969,706,158.001,116.147 +8.0064,582.633,534.779,762.61,256.779,127,94,758,497,240,172,171,352,487.333,313.53,540.06,349.462,389.777,343.338,621.193,625.009,839.595,741.324,620.653,661.261,724.114,148,342.609,352.409,346.13,104.583,132.787,87.43,1137.844,848.602,1095.798,616.282,519.604,496.288,827.458,888.46,678.442,612.769,108.591,89.487,94.329,1051.03,355.162,380.012,791.678,338.569,357.901,515.005,119,177,674,466,975,711,157.717,112.988 +8.1732,574.951,520.328,746.47,262.044,125,95,754,502,241,173,167,352,485.237,316.759,531.322,350.706,387.274,343.681,615.502,626.14,843.052,742.371,625.189,668.331,721.395,149.5,338.41,344.603,340.418,101.684,134.091,88.393,1129.373,840.706,1090.797,612.086,519.097,493.055,828.716,881.885,673.588,613.548,110.497,89.062,96.05,1016.096,350.508,368.103,780.349,337.705,356.088,505.7,119,180,682,470,984,721,156.308,115.835 +8.34,555.507,518.288,732.722,257.062,127,98,756,508,237,171,168,348,475.09,314.971,525.934,349.603,386.662,338.854,617.807,631.216,838.855,745.344,626.282,661.106,725.542,149.5,331.764,340.389,331.17,104.625,130.988,88.364,1120.005,839.948,1080.866,608.843,505.034,484,817.927,879.311,676.786,607.302,107.567,88.467,94.671,999.279,341.23,359.221,768.369,329.93,343.511,501.381,117,182,683,472,993,724,155.284,112.903 +8.5068,551.972,508.131,712.298,261.138,130,99,761,517,229,170,164,344,461.472,299.624,511.772,349.601,392.394,340.027,617.035,628.332,842.17,739.767,623.065,661.188,728.321,151,322.403,332.598,328.709,103.395,131.867,88.733,1102.981,828.052,1079.318,609.355,510.429,475.823,815.184,875.875,673.545,609.497,111.307,88.821,90.945,980.425,335.361,351.909,753.943,325.298,338.512,487.969,120,182,689,481,1010,736,152.567,110.368 +8.6736,536.992,498.805,701.402,263.063,133,100,765,520,229,169,163,346,458.788,298.765,508.101,349.335,388.234,339.307,621.577,633.281,829.324,748.132,624.585,666.742,726.108,151.5,321.074,327.465,321.696,104.102,134.615,89.172,1105.739,813.651,1062.129,599.878,507.809,478.258,804.847,861.466,672.399,603.053,110.027,88.906,92.964,954.288,328.713,344.568,736.786,317.92,335.765,486.354,121,182,697,478,1014,738,148.968,109.207 +8.8404,523.476,486.922,686.423,260.063,134,100,768,525,225,161,163,343,451.244,298.426,500.995,351.088,386.719,337.807,614.067,633.776,823.762,743.928,625.175,659.138,732.244,151,313.749,318.189,313.975,105.7,133.581,91.58,1090.84,806.403,1055.689,598.76,501.494,475.205,809.712,856.799,664.643,602.204,108.364,91.257,90.362,937.938,323.862,336.266,721.907,308.275,330.794,468.085,120,182,692,481,1037,753,147.232,106.771 +9.0072,516.754,475.667,673.185,262.851,137,105,779,538,222,163,164,344,444.532,290.294,493.516,348.638,382.41,334.249,618.533,637.665,803.79,743.207,626.381,667.351,729.007,152,305.307,319.207,307.272,106.138,133.51,88.294,1075.195,801.677,1042.278,590.895,495.312,467.427,799.884,844.95,669.228,604.144,105.563,88.793,91.67,916.864,314.951,328.713,702.403,303.828,317.877,468.524,123,181,701,482,1050,763,145.44,109.207 +9.174,505.363,467.596,655.311,260.119,140,102,775,536,241,159,162,342,439.93,282.997,485.072,344.116,382.78,336.266,618.072,636.18,799.778,748.443,624.85,657.907,731.876,152.5,300.089,302.507,303.299,105.163,132.816,88.336,1064.026,787.251,1027.909,583.556,491.497,462.111,798.965,845.727,666.822,605.277,109.274,88.51,91.884,894.559,305.136,324.329,686.067,299.806,315.243,461.57,124,181,708,489,1067,768,143.765,103.188 +9.3408,491.072,457.926,645.978,258.506,142,106,780,546,221,160,161,339,431.653,285.015,479.985,343.526,381.898,332.096,616.029,635.43,793.988,744.325,630.129,660.001,725.556,155,297.855,293.896,294.263,101.529,132.702,90.291,1054.1,776.084,1020.739,574.653,486.673,452.446,788.628,838.671,665.959,607.458,106.686,90.874,91.827,878.011,294.98,312.66,673.309,291.507,308.728,455.622,124,186,715,494,1074,779,142.552,105.157 +9.5076,479.987,443.465,628.143,262.242,141,106,781,555,214,161,161,343,426.703,274.825,469.958,340.565,378.783,331.259,611.411,638.513,776.036,748.755,631.095,663.777,726.919,153.5,292.496,299.34,289.809,103.409,133.326,88.577,1043.052,766.554,1012.924,574.71,476.998,452.311,784.938,825.507,656.377,605.319,109.331,91.611,92.922,858.493,296.734,307.37,660.014,284.284,298.928,448.087,124,183,719,496,1102,794,141.291,101.007 +9.6744,469.818,435.915,613.996,264.04,143,107,787,562,220,157,162,339,424.889,271.29,464.952,342.393,378.029,325.228,620.226,627.865,763.859,753.694,624.203,650.002,724.439,157.5,285.85,283.799,288.338,106.266,135.238,92.699,1022.442,747.982,997.939,574.852,477.015,444.106,779.847,820.996,652.627,605.249,106.544,89.458,91.585,838.479,285.561,292.534,648.105,279.554,293.263,435.653,126,189,732,503,1118,806,137.63,100.214 +9.8412,459.14,425.532,600.938,259.129,147,105,802,571,219,157,159,339,414.999,264.828,449.984,345.162,373.521,327.214,608.016,636.18,753.702,744.282,626.719,655.418,727.953,155,279.684,277.012,275.654,106.167,130.181,91.183,1019.336,739.623,984.643,564.569,468.673,440.136,774.417,817.178,655.372,604.286,106.928,89.317,92.552,822.242,282.859,291.02,637.144,272.656,291.493,427.028,124,186,732,510,1131,813,136.529,100.639 +10.008,452.142,417.215,588.31,258.35,147,108,804,577,216,155,160,334,408.272,262.246,448.439,335.977,369.78,323.032,608.646,642.981,741.611,742.442,624.118,651.772,724.976,157,271.61,273.335,267.623,106.52,132.646,90.872,997.71,730.056,975.298,560.146,465.335,429.579,762.468,812.045,660.935,607.061,106.942,89.515,92.467,810.517,273.638,285.844,628.135,268.252,281.692,415.287,125,189,737,507,1150,817,136.025,97.741 +10.1748,444.405,408.533,574.409,255.789,148,110,799,589,216,157,158,332,397.077,256.195,434.562,337.567,370.292,322.108,603.272,638.683,732.265,745.91,624.495,650.284,724.469,153.5,264.483,266.93,267.835,105.714,133.907,89.03,983.77,721.851,966.238,552.665,454.712,423.606,759.442,800.223,653.193,607.741,107.695,89.119,89.637,785.412,267.697,274.359,616.098,258.862,275.956,410.826,122,185,735,513,1161,835,134.344,96.227 +10.3416,430.78,395.806,565.726,255.251,152,110,810,593,213,159,157,326,397.514,253.592,430.892,336.218,364.049,314.464,611.847,630.778,713.587,749.533,624.712,645.626,722.586,155.5,259.534,260.496,264.13,101.783,129.997,91.368,970.76,712.229,946.443,546.507,453.245,416.311,752.372,799.997,646.725,609.696,107.852,88.736,89.836,774.408,264.176,268.885,598.065,256.823,268.932,400.048,126,185,740,512,1184,831,128.441,94.953 +10.5084,426.202,388.081,550.124,252.703,154,108,806,603,211,157,157,332,392.329,246.307,426.735,334.54,364.319,313.905,611.993,637.311,713.757,748.769,625.076,642.024,726.678,156.5,255.745,257.682,256.098,104.696,131.243,89.115,947.19,691.179,925.47,534.048,448.354,410.894,741.71,793.082,647.433,616.154,108.534,87.66,91.358,762.726,258.674,264.388,590.894,248.283,261.766,390.418,126,187,752,512,1198,842,127.573,92.858 +10.6752,413.945,384.905,541.177,253.736,148,111,812,612,217,155,157,324,387.797,242.418,417.484,324.789,352.714,309.224,607.978,633.437,701.31,746.405,623.439,646.178,720.04,157.5,251.135,250.145,248.363,106.662,132.844,89.894,936.137,691.575,924.94,529.511,440.419,402.478,736.605,792.39,644.659,619.199,107.809,85.805,92.012,746.758,252.366,258.674,585.944,244.7,255.067,383.96,127,188,749,519,1214,854,127.36,92.934 +10.842,401.525,373.061,526.737,252.335,155,111,826,621,215,158,153,324,379.487,237.735,412.434,322.702,350.068,305.15,598.756,631.754,685.719,741.055,621.72,643.41,719.583,156.5,245.083,244.616,244.673,104.639,129.657,88.634,920.611,669.062,901.49,524.221,432.396,397.616,736.464,776.524,641.219,612.995,106.06,88.283,92.353,736.744,251.008,255.562,572.083,234.361,253.58,369.542,125,188,755,516,1215,864,122.287,94.775 +11.0088,399.886,363.765,511.488,251.429,154,110,827,620,215,156,154,323,374.086,230.969,405.055,320.327,348.347,304.536,592.714,630.863,677.568,735.253,616.82,632.341,717.876,158.5,239.738,240.006,239.243,104.272,128.382,88.18,903.452,657.898,893.381,517.309,432.642,387.158,727.57,777.585,641.686,619.468,107.041,89.416,89.751,720.394,243.738,252.804,563.654,227.974,246.215,360.577,128,189,745,518,1231,869,125.768,90.456 +11.1756,389.789,356.633,504.943,250.17,152,109,827,627,215,157,154,325,368.086,230.435,396.98,317.921,345.965,299.011,588.615,629.619,667.041,738.734,621.762,634.103,708.04,156.5,237.956,235.962,232.3,102.264,130.124,86.92,884.347,646.873,875.182,514.686,420.8,382.966,719.015,771.278,641.418,619.029,107.511,86.088,92.41,707.792,240.103,250.06,556.115,225.566,238.227,352.448,126,187,745,520,1237,870,118.469,92.198 +11.3424,383.107,347.076,489.589,248.033,153,113,832,635,216,157,150,323,363.285,225.439,382.376,309.152,341.876,291.996,594.051,631.669,660.085,740.447,621.049,633.956,710.62,157,235.326,230.009,229.189,103.126,130.323,88.988,874.422,638.587,862.144,504.722,417.982,375.147,715.338,766.442,634.086,625.147,105.491,86.74,90.732,697.014,238.236,243.78,545.847,220.227,229.602,344.701,125,189,736,523,1256,874,119.237,89.776 +11.5092,375.034,342.335,481.673,247.594,153,114,841,641,217,156,153,320,358.598,222.485,380.53,306.462,330.641,282.825,586.129,627.356,650.127,738.366,615.29,622.463,711.014,157,226.106,223.024,224.749,99.874,127.844,90.447,850.864,619.9,847.574,496.971,404.304,363.427,700.42,754.168,638.177,621.111,105.207,87.731,88.77,694.186,238.476,242.408,537.417,213.556,226.048,343.016,126,188,728,520,1254,877,119.28,87.169 +11.676,365.127,331.676,466.166,244.084,155,112,838,642,216,158,152,315,355.799,216.666,372.03,300.779,326.63,283.34,577.592,618.476,650.341,729.379,611.134,625.402,705.345,155,222.331,219.064,221.298,103.126,128.92,88.988,830.929,612.521,831.654,493.06,401.175,358.616,703.842,749.94,635.148,626.591,105.747,86.131,89.737,680.268,233.455,238.123,531.76,210.696,218.91,332.309,125,185,725,526,1270,884,116.989,87.496 +11.8428,359.05,326.489,463.863,246.66,156,111,851,649,219,158,149,312,353.447,213.846,373.261,298.772,322.463,278.52,577.619,617.981,632.004,730.398,610.05,617.725,703.182,157.5,217.731,216.363,216.049,102.688,126.583,85.744,822.905,591.631,816.339,485.223,392.723,353.175,690.253,745.698,629.232,633.474,105.235,86.188,87.518,669.59,226.412,232.564,529.327,199.153,215.723,318.217,127,188,716,528,1278,890,113.541,85.966 +12.0096,349.587,321.144,451.212,240.546,154,112,844,656,220,161,146,309,345.026,211.221,366.47,288.191,313.744,273.524,570.65,611.462,633.398,731.176,607.259,616.196,707.551,154.5,214.761,209.662,216.59,102.151,125.195,87.968,798.537,579.057,791.727,473.874,389.182,345.706,685.742,733.014,628.453,627.328,106.885,87.858,90.121,660.227,224.531,227.586,521.208,198.544,208.939,316.319,124,185,718,529,1281,891,112.703,87.027 +12.1764,343.666,310.921,444.815,239.767,153,112,843,648,219,158,148,305,343.185,204.299,359.449,284.751,307.913,263.918,560.364,607.588,625.816,723.548,605.447,604.203,699.061,156,211.471,203.98,212.531,100.991,127.985,92.076,782.095,567.703,778.201,468.483,381.637,335.108,678.799,722.988,626.939,634.636,105.008,90.69,89.267,651.967,220.585,226.412,515.098,196.122,204.931,309.04,126,186,718,526,1278,889,114.386,86.164 +12.3432,336.031,307.124,434.478,238.366,155,107,848,654,222,158,145,300,343.543,203.034,350.651,278.984,301.328,257.74,556.61,605.721,620.894,723.321,597.782,602.544,689.377,154,206.889,202.933,203.595,99.69,124.586,87.529,759.493,550.635,767.046,461.714,373.593,331.806,670.598,714.603,623.91,627.781,106.003,87.561,88.684,645.418,214.333,224.955,507.022,191.024,199.451,300.812,122,186,713,527,1278,887,111.968,85.046 +12.51,329.19,304.301,425.225,237.446,151,111,846,658,220,157,145,299,337.694,201.517,349.85,276.155,297.716,255.095,545.422,602.554,610.481,720.264,598.677,596.085,689.246,152.5,208.445,197.771,205.037,101.189,127.475,89.059,747.885,546.466,750.304,450.094,369.123,324.602,667.869,709.003,625.297,635.174,105.477,84.956,89.239,632.052,213.287,219.354,501.832,185.741,194.975,297.328,123,182,717,531,1286,887,108.595,83.176 +12.6768,320.484,296.698,418.175,236.894,153,110,850,662,221,157,144,296,334.392,198.028,336.854,272.336,294.658,249.791,541.019,594.762,602.216,717.321,595.929,588.381,686.378,152.5,203.205,195.188,198.047,101.175,126.356,88.974,725.035,532.44,736.472,439.811,356.404,312.519,659.794,699.473,622.382,634.14,103.799,85.465,89.097,628.432,210.373,217.94,497.603,181.478,193.885,290.317,122,183,713,524,1279,885,109.579,84.097 +12.8436,312.757,287.612,405.626,230.172,153,108,850,658,221,156,143,293,333.281,195.812,334.159,259.74,284.077,242.32,531.162,593.999,593.624,714.094,587.616,587.613,683.454,151.5,199.672,193.301,193.175,97.513,125.379,83.931,718.53,523.842,723.507,436.426,349.241,310.188,654.562,700.066,613.522,640.485,104.567,85.281,86.708,621.544,209.397,212.212,489.371,177.909,185.189,281.48,120,183,711,531,1273,878,107.97,83.984 +13.0104,310.243,288.79,401.074,231.573,153,107,853,654,221,159,141,288,328.916,189.529,331.554,259.692,275.174,235.068,526.182,586.08,587.337,712.254,589.734,584.316,671.966,150.5,197.189,190.671,193.597,97.88,123.353,85.503,698.45,510.806,709.109,428.846,343.25,299.792,649.118,681.302,613.465,636.987,101.496,87.292,87.604,621.671,206.045,210.896,491.903,175.233,185.387,278.123,121,180,713,529,1276,871,105.595,84.168 +13.1772,303.503,278.743,393.293,223.76,153,107,840,659,222,158,142,282,327.16,189.671,323.064,251.073,269.243,228.073,518.72,574.754,589.428,705.956,585.789,576.27,665.751,151,193.995,189.255,190.558,99.309,123.622,85.744,680.401,505.847,693.764,417.681,334.394,290.605,640.097,686.576,610.663,639.876,103.117,86.343,87.632,611.954,204.235,214.63,494.109,170.573,182.045,271.24,120,182,708,528,1281,866,105.31,83.743 +13.344,300.441,280.351,384.143,223.534,148,105,849,660,220,156,135,275,321.907,187.734,319.761,245.718,261.549,219.354,511.032,566.227,578.944,694.477,577.995,569.262,663.225,150.5,189.991,187.828,191.009,97.428,124.047,84.356,668.165,495.499,685.481,411.025,328.297,282.951,633.196,678.064,599.256,641.236,103.6,85.112,85.187,609.097,203.358,210.373,481.125,170.403,181.195,263.635,120,181,710,526,1270,862,103.162,83.587 +13.5108,292.805,272.247,381.432,222.699,148,106,837,653,218,155,134,276,320.547,184.566,315.526,236.443,257.509,216.403,499.006,560.769,575.544,693.925,572.038,561.475,662.465,150,188.297,183.968,186.714,95.321,122.9,83.01,653.013,484.729,665.822,405.251,325.033,275.03,627.073,658.592,600.374,638.431,102.633,87.674,87.575,596.835,202.424,209.043,482.738,168.208,172.712,258.012,121,179,706,533,1271,853,105.332,82.029 +13.6776,291.784,263.34,368.2,218.198,149,105,837,648,219,154,138,269,317.075,182.142,311.158,229.41,248.72,211.08,492.71,555.169,554.561,692.171,575.478,553.272,658.063,147,183.104,178.317,186.909,95.109,121.285,84.639,645.064,474.67,650.646,397.798,317.494,270.154,618.702,653.276,594.981,649.294,102.989,85.451,85.826,596.764,199.115,205.904,480.277,162.77,171.494,256.03,117,177,704,527,1258,850,106.662,83.191 +13.8444,282.096,263.171,365.175,218.807,147,106,835,648,214,159,132,264,313.683,181.506,305.777,229.503,239.703,202,478.567,549.188,558.061,690.911,568.964,545.649,650.993,147,183.492,175.073,183.111,90.923,121.597,81.608,628.193,464.957,641.744,385.482,311.868,262.4,618.999,646.488,588.428,644.663,102.79,86.485,86.239,593.751,199.199,208.068,478.792,160.079,168.123,250.804,118,176,705,524,1250,840,100.378,83.46 +14.0112,285.337,258.903,361.276,216.075,145,103,829,647,218,157,133,262,317.972,177.273,302.157,222.296,233.957,195.494,473.064,538.611,551.716,676.163,567.26,538.742,642.448,146.5,179.837,176.39,182.326,94.289,117.404,82.783,611.691,457.299,626.197,378.086,299.979,255.957,606.23,641.157,581.125,643.176,101.083,86.839,85.67,592.903,196.144,204.22,470.899,157.402,164.993,249.614,116,177,698,523,1246,840,99.222,81.718 +14.178,277.002,255.333,357.968,211.504,144,102,822,638,215,152,132,259,318.291,176.258,299.828,216.899,227.074,192.383,460.983,528.189,548.444,669.243,557.011,532.778,637.638,144,181.846,174.434,178.552,90.556,116.143,80.97,604.045,446.237,612.297,371.601,298.364,249.317,603.529,633.281,581.522,642.255,103.814,85.253,84.262,595.845,194.094,205.295,470.503,154.739,162.685,242.859,116,172,697,516,1242,827,99.679,82.525 +14.3448,272.483,246.51,347.922,208.263,142,101,826,634,214,154,129,250,315.524,177.255,297.633,213.315,226.462,187.092,446.392,519.266,543.153,668.591,554.248,526.972,630.935,145,183.605,173.707,177.147,92.182,117.687,80.871,592.707,438.561,604.403,368.259,290.45,241.689,595.865,630.085,578.351,647.849,102.875,87.32,83.466,587.132,196.173,203.527,473.714,152.417,160.05,235.763,115,175,692,520,1235,820,100.876,84.309 +14.5116,269.817,249.307,344.99,202.248,141,99,813,627,213,153,126,250,315.838,172.709,293.322,202.892,217.146,185.741,437.306,506.441,534.802,671.663,543.174,519.143,621.082,142,175.969,173.099,176.097,89.877,115.888,79.284,577.88,433.353,596.173,362.726,281.763,234.28,587.72,616.708,573.355,641.505,102.576,87.377,85.115,581.885,194.193,204.956,471.649,151.496,156.283,233.186,114,170,695,518,1226,806,100.072,83.219 +14.6784,266.096,241.338,341.016,204.526,140,99,818,625,209,150,126,240,315.49,172.405,293.038,202.707,212.254,173.783,429.008,495.68,527.263,657.396,544.461,514.439,615.179,143.5,178.462,171.257,177.952,88.519,112.956,78.392,565.417,418.589,590.642,349.855,275.158,230.829,588.031,607.517,568.557,645.442,99.377,86.188,82.129,583.794,197.347,203.315,472.413,152.261,158.365,232.548,112,175,683,512,1212,805,99.137,84.041 +14.8452,261.242,239.81,339.673,198.723,137,98,811,617,211,154,127,237,315.313,173.525,287.04,196.901,204.901,169.568,418.189,491.014,518.713,649.598,539.875,503.854,609.936,140,175.65,172.444,177.22,88.618,114.741,80.928,560.484,417.132,576.874,348.376,275.909,227.016,575.8,600.164,560.122,634.65,101.283,84.814,83.836,587.599,193.811,200.557,470.051,145.307,154.895,227.691,111,169,681,508,1210,793,100.673,83.474 +15.012,257.737,235.53,332.451,195.581,138,98,801,618,207,149,126,230,316.623,169.973,284.912,189.228,198.316,165.212,407.685,484.495,510.833,641.559,532.269,492.529,603.143,135.5,174.816,169.059,172.908,87.544,112.984,75.318,546.013,412.092,568.229,340.411,267.214,220.62,570.61,591.991,562.472,639.848,101.254,86.527,83.978,586.213,198.605,202.396,467.392,146.469,151.921,225.991,109,162,675,509,1192,782,101.142,86.703 +15.1788,254.067,237.173,330.113,199.006,136,97,804,607,206,151,121,224,317.447,171.99,284.877,190.386,195.287,163.719,391.014,482.247,510.904,640.073,528.63,483.742,597.445,137.5,172.627,168.922,174.425,86.865,113.622,76.225,537.784,404.036,561.557,335.263,262.871,218.152,565.987,590.407,556.74,636.434,101.083,83.922,86.438,584.219,194.362,203.655,470.362,147.063,152.941,221.912,110,165,671,494,1178,774,91.701,83.126 +15.3456,254.351,233.119,328.053,192.737,134,97,789,599,206,148,119,220,312.495,173.291,284.687,185.07,189.541,161.125,380.543,471.952,500.377,629.713,517.97,477.914,590.187,135.5,176.677,173.614,173.873,86.045,109.839,76.876,527.256,401.311,554.015,329.46,260.361,210.905,560.472,588.866,550.88,633.404,99.363,83.073,84.376,582.564,192.227,205.267,469.16,145.959,152.148,222.195,108,163,659,494,1164,764,88.006,75.068 +15.5124,250.43,230.647,321.916,191.562,131,95,785,597,199,144,118,217,322.15,170.212,279.108,180.26,187.735,158.549,375.281,462.874,492.411,630.831,508.519,475.567,583.58,134,176.483,170.446,173.996,86.978,113.267,75.955,519.242,392.612,541.369,325.009,252.817,204.927,554.504,581.216,545.304,631.279,100.046,85.324,82.812,584.388,198.026,206.271,469.909,144.911,148.536,223.314,104,164,656,488,1162,753,89.345,72.745 +15.6792,248.668,229.765,318.379,189.312,130,93,769,588,200,146,116,208,316.898,169.517,279.265,176.98,181.847,151.846,361.395,458.038,488.428,619.579,508.649,461.343,577.543,132.5,177.994,168.81,176.691,85.734,109.344,72.91,513.155,392.4,534.693,316.361,249.586,198.886,548.311,573.778,542.304,618.859,101.055,84.927,82.229,584.459,195.918,204.305,470.121,146.369,146.808,218.726,104,161,648,479,1139,739,89.043,75.905 +15.846,248.285,227.555,313.407,184.882,130,93,767,579,197,140,116,201,326.879,172.809,280.701,174.355,174.906,150.023,356.007,444.789,477.503,604.888,500.163,457.222,563.115,130,178.741,172.47,176.378,85.833,112.545,73.094,512.387,378.714,526.693,313.588,245.436,197.72,539.586,565.124,536.458,622.47,98.723,84.814,81.746,591.573,198.266,209.114,470.871,145.307,144.528,219.689,102,158,630,474,1133,726,92.232,77.683 +16.0128,245.699,226.318,307.213,181.782,127,90,760,573,195,140,114,201,323.513,172.499,277.685,173.331,174.451,147.985,342.319,433.886,466.578,607.436,490.87,450.863,560.881,127.5,175.43,166.264,175.289,82.001,108.522,75.106,504.125,380.392,521.884,306.093,242.209,191.731,536.574,563.045,527.457,616.338,98.78,84.064,81.916,591.092,198.266,207.714,473.601,145.081,149.938,215.058,99,156,623,468,1113,714,93.435,79.646 +16.1796,242.499,220.486,309.74,182.391,127,90,754,572,190,138,112,192,326.635,173.408,280.024,168.137,172.303,144.472,331.264,422.97,461.599,601.987,483.012,439.953,552.139,125.5,177.13,172.5,174.075,81.845,104.23,73.491,497.96,376.782,521.705,306.548,237.645,193.288,531.809,559.242,516.757,612.854,97.187,83.667,79.015,595.406,201.236,211.264,475.468,144.344,148.14,218.372,98,153,614,461,1106,712,96.917,80.767 +16.3464,242.513,221.161,302.989,179.73,124,87,735,558,192,138,112,189,328.548,175.927,278.274,166.117,166.501,142.865,322.816,412.902,454.984,595.42,477.688,435.596,542.862,126,178.085,170.035,177.378,81.704,106.61,71.607,488.808,372.887,511.157,295.469,239.844,188.111,528.217,551.507,510.176,611.622,97.372,81.954,79.641,599.281,200.826,210.274,478.41,147.786,147.715,218.032,100,152,604,451,1082,688,95.297,82.324 +16.5132,238.275,219.684,303.214,179.277,121,86,733,554,186,138,106,182,334.226,171.845,276.7,164.087,164.851,137.362,313.496,405.167,443.319,586.079,473.169,426.22,537.948,122.5,181.394,170.449,176.289,82.227,107.403,70.233,482.582,373.084,517.417,295.511,235.213,183.773,522.052,545.624,508.138,605.404,98.254,83.158,78.361,603.737,200.798,212.325,482.441,143.438,145.279,214.477,96,149,591,437,1071,683,98.026,84.814 +16.68,239.965,215.892,301.594,176.673,119,84,724,547,183,136,106,178,334.855,170.753,281.398,161.577,160.513,133.05,301.009,391.267,436.804,584.805,466.062,417.85,526.074,118,179.966,169.837,175.71,78.522,105.986,70.7,482.634,368.695,509.725,289.595,230.584,181.182,516.679,537.536,499.66,598.309,94.742,83.724,79.982,605.25,201.83,211.434,486.033,146.072,146.893,215.553,92,144,580,435,1058,667,99.547,87.248 +16.8468,238.247,217.586,296.409,172.3,117,85,718,538,181,131,104,174,335.49,170.703,282.441,158.875,159.105,131.102,297.475,380.209,426.334,576.073,460.848,407.748,516.974,115.5,180.857,168.564,179.117,77.843,103.975,69.765,478.624,362.28,504.694,284.887,227.803,182.457,515.279,535.486,491.621,596.978,98.02,81.175,77.768,606.664,201.095,215.861,488.777,146.115,145.506,214.675,90,141,567,421,1039,655,99.092,87.828 +17.0136,237.845,216.083,294.503,173.106,115,80,709,528,177,130,103,168,340.995,177.057,283.95,159.427,158.041,132.852,288.901,377.268,426.448,562.259,448.722,401.153,513.981,113.5,182.85,170.771,179.202,79.837,102.204,67.329,476.755,366.4,506.312,285.373,227.058,177.812,509.623,526.973,488.295,591.27,93.903,82.52,79.129,615.448,204.178,219.722,498.069,145.265,148.211,213.939,88,139,557,416,1025,639,100.414,91.833 +17.1804,236.107,215.741,294.835,170.955,112,81,699,521,173,126,102,165,343.867,178.044,282.467,156.655,155.18,131.564,282.985,363.863,414.698,559.684,445.156,396.037,507.697,111,182.257,172.496,181.139,79.243,99.612,68.731,474.288,363.699,503.349,281.389,220.8,176.548,502.863,526.068,484.672,585.874,95.524,81.94,79.257,618.375,205.097,220.316,497.009,147.106,150.222,219.25,86,136,548,404,1008,635,101.593,91.21 +17.3472,236.419,215.786,293.087,166.907,109,79,691,511,192,125,99,161,345.551,178.75,283.136,155.891,152.433,127.787,271.71,357.047,407.3,554.178,439.599,388.123,497.136,107,184.136,173.108,180.346,75.864,102.02,68.179,472.055,366.777,500.179,278.6,218.564,175.006,498.89,521.387,478.544,585.407,94.713,81.317,78.987,630.935,209.27,222.678,502.85,150.123,152.473,219.788,81,133,535,396,986,617,104.166,90.191 +17.514,233.439,213.813,293.674,164.898,109,76,676,506,168,121,98,156,351.142,176.695,284.528,154.053,150.651,128.17,263.041,347.05,402.876,541.978,438.273,383.067,489.499,107.5,184.293,175.431,187.686,76.401,99.739,67.994,468.949,363.021,505.027,278.751,221.26,175.599,503.627,512.847,471.623,575.394,96.59,81.855,75.233,622.746,209.284,228.364,511.647,150.448,152.983,216.233,81,134,532,385,974,604,104.619,95.328 +17.6808,233.794,210.545,294.057,163.992,109,73,663,499,166,122,97,152,352.164,179.338,288.311,153.084,148.414,125.635,258.955,339.739,393.388,540.308,429.204,378.719,484.746,104,183.571,178.419,186.965,73.771,99.824,67.612,465.787,363.074,502.29,272.745,216.395,172.945,497.193,514.869,464.179,575.21,93.405,81.133,77.764,630.101,214.079,231.885,516.866,153.252,151.666,214.689,81,127,514,377,963,591,105.971,96.213 +17.8476,237.406,211.405,291.301,161.246,106,74,651,494,164,119,95,149,355.213,179.67,290.352,151.417,152.087,126.285,249.581,326.009,389.291,527.485,422.595,362.163,473.24,103,190.049,179.667,188.535,77.08,100.731,67.499,464.426,363.037,494.239,273.291,215.994,171.9,494.676,505.635,458.701,566.174,97.557,80.453,78.575,645.715,213.753,234.12,521.364,153.606,156.892,222.394,79,127,509,365,943,585,105.843,95.144 +18.0144,233.36,215.095,291.249,162.223,104,73,644,478,160,114,91,149,357.006,183.575,293.044,151.343,146.48,123.668,240.764,323.336,385.009,521.541,417.606,355.649,467.095,100,192.395,181.577,186.88,74.421,97.317,64.368,470.896,365.833,497.064,272.205,217.061,170.213,492.145,498.89,453.889,561.331,93.249,79.943,76.001,658.289,221.419,240.103,532.156,155.094,153.946,222.238,76,124,495,356,921,564,104.891,97.747 +18.1812,232.922,216.731,289.452,158.84,100,73,638,475,156,114,91,140,364.51,185.757,292.196,149.574,148.973,122.599,238.843,311.529,381.353,517.819,407.243,353.549,460.522,99,192.268,182.156,191.646,74.648,97.062,64.382,465.732,364.473,501.725,270.205,216.546,169.929,485.951,496.062,448.95,558.088,91.614,81.487,76.556,662.461,223.894,242.465,537.53,157.36,159.512,226.458,76,122,483,347,913,547,106.468,96.969 +18.348,231.801,209.83,287.744,157.156,98,71,623,468,152,110,90,137,367.626,187.857,296.526,150.805,146.452,123.724,233.267,307.683,370.926,512.073,402.967,346.783,450.25,95,195.648,183.231,192.692,74.902,95.348,64.481,469.845,373.456,502.011,264.77,214.807,174.969,480.677,492.103,442.029,550.086,92.154,79.476,75.916,668.784,226.129,240.994,540.642,160.928,159.88,229.348,71,119,466,333,881,539,107.762,98.61 +18.5148,237.62,212.537,293.739,154.467,97,70,614,462,149,106,90,134,372.751,186.968,298.071,149.319,146.826,125.831,224.086,305.293,363.998,505.081,393.703,339.717,449.688,93,198.971,187.025,193.993,72.526,97.841,63.646,465.922,373.418,503.821,266.352,211.704,171.29,481.073,487.507,433.82,552.366,92.993,81.26,75.546,680.197,225.478,248.787,550.656,160.759,160.079,228.087,70,116,450,327,867,531,111.684,99.247 +18.6816,236.29,212.947,286.288,151.707,93,67,598,454,145,102,89,131,371.953,191.083,299.699,151.711,144.362,124.276,219.227,294.758,360.314,498.599,389.46,332.224,443.22,90.5,198.603,189.03,197.896,74.577,93.252,63.688,466.166,375.726,499.041,267.599,211.476,168.882,474.681,488.822,432.943,541.291,91.116,78.046,77.025,692.531,228.279,251.036,558.024,161.254,165.262,231.557,67,114,442,321,848,515,112.054,101.384 +18.8484,238.468,213.103,283.545,149.98,91,69,592,440,141,106,87,129,381.628,192.741,302.585,151.544,143.442,122.698,218.646,284.054,346.772,489.314,380.929,325.799,435.044,89,206.239,188.394,202.251,74.04,94.838,62.569,471.762,375.816,513.804,269.48,212.667,165.974,465.617,488.808,423.389,532.963,89.922,78.414,76.769,694.087,232.847,256.807,561.334,169.129,165.517,234.531,66,112,430,313,836,497,111.727,102.756 +19.0152,239,216.505,286.613,149.216,92,66,585,439,141,101,87,126,395.142,196.556,300.839,147.733,145.67,124.63,211.616,285.581,347.355,488.961,380.022,318.544,420.06,88,206.766,192.934,206.13,71.013,91.892,61.903,476.291,371.266,507.743,267.67,211.278,169.137,467.979,486.149,412.251,526.944,92.41,79.873,75.048,702.912,237.953,257.896,576.821,169.653,171.437,233.256,66,110,418,305,821,492,111.755,106.591 +19.182,238.735,214.93,291.226,147.985,88,63,574,429,137,98,86,124,393.136,198.517,306.226,150.977,144.366,123.421,205.522,278.893,341.722,478.586,371.045,313.529,421.085,85,209.411,197.462,208.407,73.361,93.096,61.181,480.907,382.648,521.526,265.428,209.354,172.949,465.83,480.606,408.84,525.67,87.817,79.377,73.314,722.614,238.194,268.348,591.559,172.613,172.783,241.024,64,106,414,294,808,477,116.9,104.171 +19.3488,242.432,218.869,291.088,146.951,85,62,560,421,136,96,83,122,397.155,199.176,310.902,151.201,148.939,124.743,203.195,271.61,334.111,475.232,360.917,312.151,415.23,83,204.528,200.699,208.445,72.258,92.033,61.974,483.197,388.017,520.868,267.599,215.19,174.856,472.631,477.538,402.273,517.328,88.94,80.991,75.375,729.149,245.859,271.87,593.044,175.983,176.117,243.963,62,104,405,290,782,463,115.223,107.157 +19.5156,245.331,218.665,293.498,145.918,84,62,556,414,134,94,82,120,405.347,199.453,309.632,151.814,146.073,126.029,199.585,263.988,327.98,465.764,359.447,307.85,400.888,81.5,214.609,206.196,210.751,70.943,93.096,62.272,488.793,387.683,530.356,267.859,215.965,173.629,466.48,471.981,402.089,509.383,91.144,79.731,73.655,746.22,246.227,273.256,600.965,177.371,179.74,247.702,60,103,393,278,764,451,117.085,108.742 +19.6824,244.007,217.3,294.537,145.847,84,59,538,406,130,93,81,119,403.561,206.028,319.212,154.33,144.902,126.598,198.543,260.92,320.44,462.579,351.315,298.078,396.281,79.5,220.261,209.846,217.958,71.424,91.75,60.742,487.648,393.947,533.122,270.286,213.177,177.815,462.733,472.362,391.021,505.559,90.746,79.094,75.361,758.667,250.81,285.094,615.999,183.504,184.335,253.849,57,102,381,272,749,442,119.7,110.765 +19.8492,244.574,222.71,292.493,141.05,81,59,530,402,128,89,82,116,417.948,205.567,319.045,151.332,146.229,123.634,196.034,253.44,321.337,458.333,345.487,294.297,396.688,79,219.644,211.745,216.038,71.211,91.736,62.059,493.053,401.74,535.251,270.376,213.445,175.812,462.393,474.936,392.875,501.905,90.462,78.428,74.124,773.588,257.471,288.743,621.827,186.024,188.69,255.123,58,100,371,264,738,429,117.924,110.171 +20.016,248.005,219.119,296.826,142.918,80,59,520,400,124,90,82,112,416.617,211.848,327.895,153.947,147.049,127.49,192.697,251.149,309.572,451.71,343.681,288.064,388.987,76,227.204,212.466,217.897,70.476,91.552,59.665,500.079,400.63,540.269,271.907,216.962,179.527,461.616,474.172,385.219,492.09,88.457,78.088,71.024,780.533,259.749,295.659,640.355,189.494,190.387,260.222,56,96,364,259,716,417,120.98,110.199 +20.1828,252.802,222.592,300.763,139.974,81,59,514,386,123,86,78,112,427.033,210.952,333.476,152.225,146.727,126.837,187.995,246.949,304.01,445.723,337.411,282.924,381.115,74.5,228.406,216.441,226.27,71.056,88.818,60.062,513.317,404.248,538.866,272.466,216.687,181.95,459.466,476.873,377.562,491.056,87.831,75.781,73.513,802.908,265.491,301.232,637.37,192.058,194.629,263.437,54,95,356,249,705,406,123.055,114.543 +20.3496,253.543,225.436,302.236,137.936,78,56,502,383,120,88,76,111,430.112,213.933,337.422,153.126,146.196,129.457,185.726,244.772,302.332,449.006,327.919,285.504,374.017,74,228.929,219.353,227.869,69.302,87.486,57.668,510.534,417.438,557.887,277.394,220.335,182.741,463.044,473.805,377.562,482.616,92.794,76.871,72.887,809.117,267.895,305.928,658.006,197.17,201.714,269.328,53,95,344,242,689,392,124.346,115.831 +20.5164,250.309,226.587,303.47,137.809,77,56,497,372,117,86,77,109,436.288,220.692,341.606,157.64,147.608,128.765,183.734,240.19,295.56,438.477,330.679,278.152,372.304,71.5,235.141,226.856,231.495,70.787,88.945,59.778,523.559,424.587,560.075,276.135,221.26,182.347,463.765,477.594,370.443,477.234,88.229,77.791,70.64,827.405,277.202,312.024,675.855,203.133,202.506,274.186,51,92,342,239,674,383,127.191,119.314 +20.6832,252.088,230.322,302.713,138.488,76,55,488,370,115,82,77,105,443.81,221.461,340.566,157.331,151.911,130.647,184.773,239.426,294.806,435.193,324.52,275.448,367.758,71.5,239.474,226.345,237.788,67.591,89.696,59.042,526.908,424.412,566.174,281.005,222.419,188.106,457.812,470.199,363.762,478.381,87.419,77.154,71.494,845.049,278.002,314.173,677.329,206.503,208.685,280.12,53,90,332,233,665,374,128.114,120.599 +20.85,256.538,232.133,305.735,139.323,75,53,475,363,115,81,77,106,446.94,223.253,347.626,159.128,153.296,132.437,179.147,236.669,292.559,427.621,314.895,272.543,363.096,70,242.701,230.461,239.183,69.642,87.345,60.033,536.696,434.585,574.334,282.562,225.195,191.674,458.533,469.605,362.333,467.688,88.94,76.998,71.067,861.222,287.838,329.519,690.763,212.976,212.277,284.015,50,90,324,228,649,369,131.639,121.562 +21.0168,258.192,235.252,305.403,137.327,74,54,469,355,115,80,77,105,452.54,226.588,354.157,158.76,153.659,133.464,178.315,228.27,287.509,429.999,312.127,266.255,360.705,68.5,247.478,238.496,244.807,68.242,87.614,59.141,540.919,440.796,583.075,287.686,228.33,191.787,451.35,470.807,350.827,466.994,90.035,78.442,71.934,877.954,290.949,333.126,698.853,213.131,218.06,291.238,49,88,319,220,629,358,132.193,125.156 +21.1836,262.752,239.388,312.298,134.836,73,52,463,357,111,79,75,104,457.27,230.352,357.36,161.821,155.102,133.585,177.229,229.344,282.274,420.29,309.888,259.216,359.377,67,254.105,244.05,248.122,70.292,88.534,58.9,552.316,452.226,587.794,288.363,228.338,198.01,451.661,471.288,352.001,465.026,85.613,75.851,71.579,887.261,298.672,338.034,716.533,222.167,222.557,291.847,49,85,315,216,621,350,134.595,125.481 +21.3504,267.195,241.065,311.142,132.19,73,53,458,344,108,78,74,103,464.787,236.278,361.552,166.178,157.227,137.71,174.033,230.56,278.561,420.997,304.848,260.71,348.78,67.5,251.602,241.717,255.124,66.955,83.973,57.384,563.465,455.137,602.92,288.639,233.759,198.143,449.497,465.024,349.199,456.302,88.585,77.72,71.835,901.489,304.216,347.623,725.188,225.453,231.069,298.673,48,87,305,211,603,342,133.032,127.122 +21.5172,270.858,243.908,317.867,133.817,73,52,446,342,108,75,74,101,476.535,235.716,366.983,163.82,155.855,137.851,173.522,224.381,274.052,417.006,303.778,252.532,349.009,66.5,257.906,247.509,255.787,69.161,87.09,55.203,571.641,466.603,606.297,295.985,238.162,202.22,451.802,461.927,344.189,454.701,86.921,76.743,72.93,929.211,307.597,355.105,743.321,228.753,231.041,304.919,49,84,301,207,592,332,135.667,128.085 +21.684,272.741,246.878,321.462,131.482,68,52,446,336,106,75,73,100,478.503,240.239,375.866,166.107,161.933,139.905,175.143,223.9,269.556,412.01,293.291,252.083,340.254,65,265.122,251.152,258.749,66.856,86.183,57.88,574.855,474.475,614.732,295.917,238.125,204.768,450.911,453.23,340.948,450.509,88.045,76.772,70.911,947.287,312.448,360.522,755.781,235.976,240.133,318.43,46,84,294,204,581,331,140.067,130.793 +21.8508,278.672,247.627,324.729,131.553,71,51,432,335,104,74,73,99,485.394,243.126,382.19,171.347,159.396,143.252,172.173,218.428,269.073,412.392,291.869,251.583,338.232,64,264.74,256.38,267.388,64.565,86.055,57.002,588.129,483.004,630.731,301.573,245.098,211.859,450.614,454.899,335.98,447.79,86.822,76.163,68.977,954.698,323.409,368.711,774.55,243,246.553,319.69,46,82,290,198,574,320,141.076,133.688 +22.0176,280.629,251.084,329.162,130.322,71,50,429,328,103,74,72,100,496.828,246.132,385.799,172.817,165.558,143.755,169.595,223.151,263.937,407.184,289.751,245.478,332.564,64.5,270.376,259.277,274.267,66.814,87.245,57.838,597.885,491.362,635.446,306.536,248.841,211.987,447.8,461.008,332.895,452.733,86.637,75.497,69.361,972.505,325.898,373.308,776.742,250.62,248.589,331.587,46,83,287,194,563,314,141.105,133.886 +22.1844,286.147,256.384,332.04,132.968,70,50,421,329,102,73,73,99,494.436,254.208,390.806,172.693,167.913,145.86,171.676,213.719,262.387,403.702,286.268,244.983,337.482,63.5,273.448,266.721,272.444,68.44,84.596,56.549,615.434,500.444,649.75,310.303,253.394,219.329,450.105,458.533,327.177,454.46,87.646,75.299,68.749,998.614,330.283,381.328,789.174,251.512,254.005,332.975,45,82,280,192,548,304,145.042,137.622 +22.3512,287.85,257.46,341.437,128.51,68,50,419,323,102,72,72,100,493.982,256.165,398.753,176.116,167.022,147.69,172.198,216.307,255.046,402.811,284.964,242.055,331.006,61.5,281.509,271.601,280.674,67.676,86.82,56.96,627.222,506.596,651.947,311.341,256,221.118,460.371,457.671,326.823,454.73,84.447,75.441,68.707,1005.87,339.929,391.483,803.403,258.692,262.207,341.515,44,79,274,187,546,303,147.444,137.013 +22.518,290.97,261.207,341.741,128.991,67,50,412,318,100,72,72,98,506.72,255.703,405.138,180.504,172.15,150.878,171.15,216.533,257.564,396.923,281.544,239.587,327.511,62.5,283.361,271.557,283.163,67.832,84.554,57.427,632.265,517.668,672.706,321.579,257.301,222.83,465.434,453.98,323.44,449.093,87.817,73.43,71.565,1023.691,346.152,398.512,817.221,267.161,265.516,348.78,45,80,267,183,528,297,146.492,140.876 +22.6848,296.125,264.893,345.581,128.552,67,48,404,314,98,71,72,99,505.961,261.182,408.433,178.933,172.765,152.617,172.155,214.186,251.106,397.433,279.2,240.018,326.856,61.5,286.642,277.697,283.842,67.422,85.744,58.291,648.48,529.468,680.717,324.576,261.57,228.083,455.083,461.121,319.704,449.886,87.206,73.288,67.811,1044.864,348.401,404.919,830.036,268.578,272.034,358.24,45,78,273,183,528,286,150.869,142.843 +22.8516,300.178,266.842,353.62,128.284,66,49,405,311,98,71,73,98,516.302,265.79,415.02,182.687,176.402,153.982,171.122,212.305,249.114,393.993,276.537,236.273,322.334,61,292.609,281.035,290.191,70.391,85.574,56.166,667.716,544.048,695.542,326.001,269.73,236.693,454.249,458.024,311.608,441.969,85.229,74.506,69.318,1062.685,355.897,407.522,840.643,275.022,282.682,360.067,44,78,268,176,521,281,153.442,144.484 +23.0184,305.238,271.378,355.045,128.312,65,47,396,305,95,71,70,100,519.228,265.315,418.684,189.791,179.347,162.087,169.879,214.483,248.688,389.691,274.837,233.356,317.183,61.5,295.875,284.641,294.928,67.167,86.027,57.611,669.939,546.308,706.43,332.964,272.74,241.517,445.623,460.852,312.458,438.174,86.907,75.922,70.285,1080.279,364.016,417.592,853.981,277.769,286.288,364.628,45,78,263,179,516,277,154.181,145.998 +23.1852,306.758,277.838,365.913,129.855,65,49,394,302,96,67,71,100,522.325,268.997,427.024,189.817,183.327,163.763,172.215,211.612,248.474,389.238,268.942,232.506,318.629,62,298.421,291.911,296.724,69.359,84.738,56.775,682.644,558.51,715.099,338.77,274.133,245.581,444.492,466.494,308.523,434.605,84.888,74.195,67.555,1100.151,370.706,420.732,864.631,282.669,293.754,376.836,44,80,254,174,500,273,154.479,149.182 +23.352,313.747,277.133,365.885,129.6,65,48,393,296,97,68,71,98,525.92,270.216,433.117,194.25,189.156,165.952,171.216,217.749,244.178,390.979,267.459,234.7,316.73,60.5,303.044,297.625,296.384,70.547,86.112,57.739,706.527,565.924,729.672,342.446,279.275,254.314,444.393,462.846,305.395,438.858,83.665,73.912,69.745,1115.398,376.391,427.181,876.893,292.902,296.738,379.316,43,78,253,170,500,268,157.208,148.927 +23.5188,318.35,282.849,375.758,129.189,65,47,388,302,96,66,70,99,535.056,276.423,433.07,197.23,188.417,166.442,173.025,210.75,233.523,389.266,263.808,232.902,318.077,62,307.88,298.813,305.208,70.193,86.084,57.668,711.689,579.155,743.465,348.837,287.751,257.545,444.859,458.066,301.008,434.307,84.973,73.529,68.934,1130.631,376.731,433.843,886.653,295.874,307.194,389.645,46,78,249,172,492,263,160.889,153.753 +23.6856,322.728,286.88,376.696,126.288,66,48,385,297,95,67,73,99,543.21,279.337,440.804,198.935,194.743,173.37,171.231,212.39,231.105,389.323,265.391,229.255,310.881,59.5,312.561,304.338,309.28,68.511,86.367,58.121,724.002,588.41,763.231,356.434,293.818,262.482,452.453,468.587,296.903,435.214,86.48,76.998,69.873,1152.37,384.736,448.057,898.929,300.246,306.953,396.409,43,76,250,169,487,262,159.724,151.842 +23.8524,324.675,293.487,389.599,127.448,67,47,382,294,94,67,71,99,543.551,279.541,446.308,205.197,197.901,177.13,174.247,210.537,229.597,383.945,262.082,227.251,311.939,60,317.397,307.227,314.823,67.323,86.183,57.427,746.057,597.991,770.949,364.393,298.481,266.943,446.613,468.643,297.201,429.209,84.646,74.591,70.015,1174.618,394.326,451.353,914.233,302.638,315.91,405.252,44,76,245,166,479,259,161.699,156.866 +24.0192,331.69,297.038,392.479,124.972,66,47,380,291,93,69,73,98,547.811,286.103,454.357,206.721,200.742,177.715,174.161,215.996,229.185,382.091,256.313,229.976,313.062,61.5,321.682,314.261,315.997,68.468,85.715,56.35,755.657,602.393,782.787,369.882,301.558,275.138,451.392,472.758,299.026,427.977,86.267,75.568,69.46,1182.595,394.227,459.188,930.13,312.146,320.863,409.865,44,79,248,163,477,250,166.83,158.677 +24.186,336.207,297.504,396.387,126.373,65,45,375,289,94,66,70,102,554.775,286.528,461.826,213.446,206.419,182.687,175.312,212.701,226.453,387.158,257.924,231.514,318.162,61,323.875,318.331,322.716,69.345,85.517,56.846,769.294,616.044,795.881,374.076,310.117,281.77,446.853,476.619,291.483,433.103,86.153,73.912,66.105,1200.628,402.501,462.243,931.361,316.448,324.428,417.195,45,77,248,163,476,254,167.583,160.063 +24.3528,337.941,307.249,406.16,124.476,65,48,373,290,96,68,71,103,552.957,288.693,454.601,212.115,208.305,189.408,176.067,213.21,225.956,381.553,262.771,227.982,311.037,62.5,326.009,320.821,324.34,69.515,84.993,58.419,787.695,626.963,816.511,382.122,311.565,289.563,445.679,469.506,286.84,426.433,83.58,76.05,69.147,1222.565,404.495,467.576,938.475,318.924,325.362,422.402,45,80,244,162,476,250,167.868,160.969 +24.5196,349.968,307.195,411.183,126.458,64,48,369,286,94,65,73,101,559.224,291.469,466.774,218.946,212.305,193.842,180.766,210.495,225.913,384.567,257.203,228.469,311.939,62,330.039,324.125,328.313,68.044,85.276,57.115,800.209,630.117,826.738,388.821,321.202,299.914,448.833,472.419,290.704,420.683,84.49,74.591,68.308,1238.321,412.613,471.847,946.82,324.018,336.201,431.939,45,79,241,160,471,248,169.843,162.54 +24.6864,347.303,312.297,415.209,125.609,64,47,375,282,95,67,71,105,559.196,297.146,471.118,221.514,212.811,193.556,177.518,214.483,227.606,382.345,261.865,227.897,310.881,60,326.758,329.83,328.158,71.098,86.225,58.107,820.464,644.869,844.553,396.452,329.412,304.865,456.525,476.392,285.807,422.085,86.239,72.906,68.963,1245.138,414.961,478.834,958.149,331.857,343.092,439.283,44,76,243,161,464,247,169.687,163.218 +24.8532,354.288,315.015,416.215,125.467,66,48,373,285,92,68,73,106,560.314,298.908,473.415,227.012,222.301,202.645,179.076,212.616,226.852,383.591,257.698,232.392,313.537,61,332.952,338.034,336.161,71.848,86.155,57.682,833.193,659.926,847.842,399.94,333.234,310.502,458.59,480.974,284.576,423.459,87.718,75.37,66.773,1257.995,417.45,484.138,975.616,335.211,344.663,449.81,44,78,246,161,470,244,174.064,163.275 +25.02,358.025,317.708,428.362,129.345,66,50,369,282,93,68,72,107,565.71,303.612,473.827,233.377,224.824,204.145,183.977,215.642,227.919,384.086,256.2,231.829,312.453,63,338.622,337.765,341.21,72.484,86.027,59.254,845.444,660.599,869.835,409.019,340.085,314.661,453.824,480.408,283.882,422.666,85.656,73.274,67.91,1279.507,419.94,489.795,984.131,342.682,351.157,454.607,46,80,246,161,462,240,176.736,166.035 +25.1868,366.936,323.902,433.251,126.203,65,47,367,286,95,67,73,107,564.849,302.772,476.964,236.155,229.567,203.609,186.532,215.331,229.996,387.582,257.245,231.217,313.452,62.5,343.394,340.361,340.608,72.032,87.727,58.574,854.035,668.394,883.466,417.416,343.243,324.663,454.857,483.632,278.844,422.453,84.063,73.713,66.915,1292.802,422.924,492.044,988.841,347.026,352.105,455.272,45,80,240,161,463,240,176.04,167.761 +25.3536,370.598,327.592,439.479,128.977,64,47,365,286,94,67,73,108,569.098,303.492,486.382,243.018,234.021,210.996,186.324,217.028,231.034,385.176,258.437,236.454,312.637,64,342.892,344.78,343.613,71.579,88.35,58.815,869.497,679.233,893.133,421.713,353.225,326.071,458.42,483.887,278.434,425.852,84.092,75.129,68.223,1310.92,431.127,494.35,999.25,346.743,360.992,467.017,46,82,243,162,462,240,181.029,171.001 +25.5204,374.451,333.564,449.864,129.076,64,49,371,284,94,67,72,112,568.897,303.96,483.977,246.899,238.596,218.337,192.342,217.565,236.553,385.035,259.084,234.701,313.933,63.5,347.512,346.413,346.452,70.716,88.223,59.014,883.039,693.163,904.02,432.218,360.386,334.855,457.161,484.028,279.821,424.62,84.575,74.067,67.242,1313.961,434.663,501.535,1005.672,348.922,359.591,470.115,45,82,241,164,461,242,181.782,170.336 +25.6872,377.832,340.411,452.828,128.835,62,48,368,283,93,66,74,114,573.376,308.56,493.008,249.303,245.536,221.302,189.937,217.495,237.35,390.667,253.48,236.426,313.742,63.5,352.57,347.349,350.974,70.716,88.534,58.461,898.52,698.039,920.25,434.707,364.736,340.341,457.769,483.675,279.778,424.521,83.054,73.727,68.792,1329.293,445.893,508.394,1008.84,355.105,365.788,476.851,45,82,242,162,461,242,183.26,172.784 +25.854,380.844,345.78,470.458,128.68,63,49,365,283,95,67,73,115,581.927,314.884,497.547,258.041,253.939,232.937,192.029,224.141,234.633,389.62,258.674,240.876,314.386,64,353.323,350.86,350.141,70.999,90.22,58.39,909.146,705.74,929.424,444.745,370.139,350.405,461.149,488.723,280.372,425.994,85.585,72.807,68.891,1336.761,443.772,505.707,1010.608,357.893,369.213,481.69,47,81,246,165,464,241,183.345,174.949 +26.0208,384.855,348.008,471.393,126.882,64,48,364,280,95,70,74,116,578.603,312.671,502.04,256.395,253.852,230.9,194.774,223.547,239.527,391.941,260.703,237.84,318.812,65,356.439,358.585,350.585,71.876,91.141,59.438,921.513,715.271,942.307,447.97,375.608,354.836,465.518,492.216,269.545,424.663,85.187,73.742,65.251,1349.094,445.427,509.738,1019.476,358.445,374.448,481.704,47,83,246,165,460,241,184.383,170.548 +26.1876,391.126,350.62,472.514,130.548,66,49,365,285,96,68,74,118,583.093,316.836,503.328,267.084,262.826,237.076,197.27,222.967,237.948,392.097,257.754,240.678,319.463,66.5,362.333,358.558,353.224,73.191,88.591,59.353,934.035,721.971,957.879,458.381,385.116,361.22,464.585,497.476,275.207,422.991,84.902,72.736,68.394,1356.958,447.449,512.949,1024.03,359.945,378.679,487.421,48,85,243,165,465,240,183.715,172.218 +26.3544,390.05,357.311,485.147,130.463,63,49,365,286,96,67,76,121,583.524,317.256,503.905,270.41,264.557,242.083,199.525,227.025,237.137,399.089,257.842,245.138,322.367,65.5,359.196,358.005,360.936,73.078,87.557,59.07,949.333,723.196,974.752,467.972,390.817,367.237,472.179,488.115,279,429.478,86.566,73.812,67.427,1367.933,450.434,517.404,1028.203,364.982,378.014,496.689,49,82,247,166,466,242,184.497,174.312 +26.5212,402.515,358.515,482.6,129.288,64,49,369,288,98,71,75,124,589.678,315.753,504.895,274.923,273.931,245.383,201.687,231.536,241.874,399.329,261.432,245.167,324.668,68,364.751,364.673,359.325,74.209,88.279,60.473,962.945,741.305,985.859,478.686,396.356,374.403,472.801,502.439,272.815,431.716,84.959,76.29,67.1,1378.584,451.735,520.53,1025.345,371.151,383.603,502.165,50,86,250,172,471,243,185.861,170.464 +26.688,399.423,363.753,499.51,130.138,68,50,373,287,97,70,74,125,590.315,321.12,513.325,280.729,279.896,251.539,205.334,233.275,247.208,398.353,263.21,249.593,329.675,69.5,365.095,361.642,357.66,74.605,88.067,60.728,984.056,750.369,990.454,482.728,396.615,386.093,473.282,503.118,275.532,438.499,83.85,75.639,67.74,1385.868,453.446,517.022,1042.813,372.312,384.098,503.934,52,87,253,171,465,245,187.439,176.18 +26.8548,405.606,366.342,494.268,130.024,66,49,371,294,98,69,75,127,586.449,318.72,511.414,287.978,282.946,262.265,207.918,238.521,243.709,397.362,265.208,251.328,328.458,68.5,366.582,367.027,363.353,74.987,90.149,61.209,992.142,748.805,997.868,489.151,406.803,391.285,481.398,507.304,271.102,433.727,85.826,73.841,67.996,1388.187,459.033,528.549,1042.714,377.49,386.872,501.5,50,87,250,171,470,241,186.415,174.369 +27.0216,411.875,370.317,502.753,134.383,68,48,376,291,100,71,77,131,591.327,323.489,515.221,291.389,293.316,263.473,211.417,237.857,246.682,404.566,267.431,255.406,326.332,71,368.751,370.444,370.065,73.827,92.246,60.175,1005.997,767.919,1009.16,497.342,416.375,393.114,479.744,512.012,271.555,436.092,84.319,74.11,66.46,1397.494,461.282,526.442,1050.96,377.501,386.079,512.159,53,89,254,176,472,248,185.818,176.534 +27.1884,412.186,374.097,512.415,134.001,69,47,374,294,100,70,77,134,594.179,321.35,519.851,296.171,296.326,265.539,213.864,240.388,248.033,402.315,267.429,259.344,331.952,70,365.317,374.434,370.475,75.128,91.665,61.577,1018.879,766.973,1033.745,504.607,414.745,395.85,482.487,506.54,271.47,440.992,84.888,75.143,67.484,1402.076,460.674,529.27,1046.858,374.57,390.084,510.048,50,90,256,175,480,247,190.892,179.392 +27.3552,419.947,374.109,518.072,135.926,69,52,379,300,98,71,77,137,597.163,325.243,520.102,303.577,304.66,275.591,216.587,247.402,253.354,403.688,265.221,261.417,336.345,71.5,370.264,373.167,369.287,76.514,92.161,61.988,1025.934,773.187,1037.813,516.547,429.317,402.089,486.814,513.172,273.678,441.403,86.338,75.455,68.38,1394.792,464.422,528.86,1054.411,376.807,390.262,515.345,53,90,259,182,481,249,189.045,178.515 +27.522,421.197,379.869,521.696,136.025,71,52,383,300,100,73,79,139,594.838,319.617,525.319,305.102,308.028,282.578,220.379,246.525,256.981,404.622,271.276,266.652,342.022,73,372.106,375.745,371.596,78.225,92.841,61.733,1045.26,774.449,1040.804,513.266,431.336,406.013,485.867,512.521,273.508,449.518,85.841,72.623,68.294,1411.326,465.058,526.611,1053.477,383.492,396.394,523.347,54,92,268,184,476,248,191.29,178.727 +27.6888,421.441,385.044,527.867,137.285,70,51,389,302,101,74,79,144,600.919,323.587,525.82,312.411,319.8,288.529,224.114,251.87,258.29,408.09,273.209,266.863,342.662,74.5,373.394,371.69,371.822,77.589,90.73,62.286,1043.738,775.685,1053.137,525.745,437.099,411.461,486.998,512.493,274.513,455.622,87.732,73.869,68.536,1414.494,464.818,531.604,1048.994,383.733,395.672,522.766,56,93,266,189,487,252,189.983,176.214 +27.8556,424.497,388.343,534.679,136.138,72,50,390,305,102,73,80,147,603.859,325.428,527.751,317.108,323.001,290.445,226.112,254.316,260.253,411.444,278.461,269.682,343.578,76,375.42,374.629,372.587,76.684,93.606,62.158,1057.452,790.361,1070.357,525.765,441.783,417.041,492.159,518.998,275.037,454.871,86.936,76.135,68.465,1418.837,464.195,524.094,1060.351,379.272,395.644,528.884,56,96,268,192,488,258,190.523,179.831 +28.0224,427.015,390.377,541.206,139.974,74,52,390,305,101,73,82,149,593.817,326.669,527.737,322.957,328.884,297.674,231.614,260.34,262.116,417.204,279.355,275.49,346.188,76,376.443,376.532,371.08,79.229,95.617,64.921,1065.608,795.021,1071.76,540.387,444.98,421.681,487.38,528.034,274.81,455.055,89.339,74.166,68.038,1412.712,466.444,526.017,1058.951,387.288,400.119,526.179,56,96,273,197,497,258,187.154,178.628 +28.1892,432.697,390.505,536.446,138.997,72,53,397,315,103,76,84,150,597.762,332.012,531.387,327.597,336.552,306.221,237.236,258.46,266.74,422.017,281.714,279.015,351.654,76.5,373.238,376.787,372.05,77.447,93.407,65.246,1074.024,800.086,1076.973,545.97,448.536,425.178,489.218,529.872,276.24,458.483,86.353,75.016,69.261,1417.96,467.18,526.074,1054.213,380.376,398.476,529.408,57,96,276,199,507,262,191.035,180.142 +28.356,435.098,392.514,551.133,144.022,74,54,400,313,104,76,83,158,599.742,324.035,528.538,337.778,344.777,308.065,237.821,265.883,270.893,424.295,287.145,282.902,358.311,77.5,378.498,378.091,370.961,78.197,96.694,64.113,1085.617,802.739,1083.414,551.234,454.279,427.726,494.492,524.555,277.768,468.326,85.613,74.237,69.787,1410.407,465.935,524.532,1053.689,384.441,393.349,529.961,58,97,281,204,511,263,192.57,181.699 +28.5228,430.24,397.201,558.338,140.752,76,52,405,319,106,77,85,160,597.226,327.871,535.98,342.438,347.998,315.563,245.046,267.425,271.761,428.074,289.648,284.638,367.339,79.5,376.985,378.103,372.771,78.126,94.654,63.575,1095.353,804.918,1093.23,552.085,455.769,432.123,498.89,531.795,273.664,468.113,85.329,75.781,67.853,1408.087,465.369,523.726,1050.182,380.306,395.842,526.477,58,101,288,207,517,269,190.509,181.925 +28.6896,434.762,395.686,563.119,143.272,76,53,407,324,106,78,84,165,608.235,329.259,531.386,350.675,352.638,315.355,248.786,275.683,273.127,427.805,289.765,294.74,366.483,81,372.149,381.384,370.947,77.603,97.714,65.43,1094.819,813.58,1104.513,560.645,461.919,438.598,494.577,529.193,273.041,471.073,87.575,77.579,69.247,1407.635,463.432,519.723,1050.493,381.835,397.556,532.453,61,101,289,211,516,271,190.523,178.331 +28.8564,439.128,397.985,564.369,140.767,79,55,413,328,110,79,85,167,599.173,329.932,533.033,350.206,360.582,327.073,257.65,279.387,279.045,442.34,296.791,298.291,372.884,81,374.228,378.966,372.319,80.134,96.368,65.473,1106.147,807.817,1110.445,568.323,466.018,438.913,503.57,533.916,277.471,485.349,83.878,75.894,68.607,1400.676,467.307,521.251,1046.321,379.782,394.482,526.165,60,102,290,219,521,272,190.395,179.703 +29.0232,441.861,399.496,565.911,145.465,77,56,419,331,106,78,86,173,597.123,329.021,531.169,357.554,367.835,335.046,258.671,282.074,281.022,455.842,298.206,302.349,371.836,84,373.167,378.244,375.43,79.088,96.878,66.436,1110.718,814.198,1115.857,571.89,470.254,442.279,507.77,539.544,277.768,482.771,89.083,75.214,68.849,1395.33,460.872,518.648,1046.448,381.75,394.242,530.244,63,105,300,226,526,275,188.149,182.604 +29.19,439.915,397.937,565.585,148.565,81,57,420,332,108,82,90,175,600.218,326.912,532.94,362.836,374.204,339.462,261.932,288.692,285.332,468.311,304.853,305.004,376.901,85,372.22,381.087,371.385,79.894,100.561,68.207,1115.506,822.819,1118.18,568.92,473.309,441.706,514.459,533.873,282.906,492.6,88.485,74.166,68.323,1397.027,462.88,515.905,1034.553,372.488,393.647,535.187,63,107,302,228,536,279,188.263,177.694 +29.3568,441.17,398.102,574.454,151.608,79,58,428,338,112,80,88,182,601,333.267,531.329,366.19,381.013,341.671,266.043,288.466,291.805,474.241,307.949,315.121,388.492,86,370.749,378.711,370.565,82.382,98.082,66.309,1127.601,822.501,1125.148,585.125,476.817,444.614,519.054,541.934,282.821,496.254,88.016,75.455,67.029,1379.673,460.122,511.803,1030.847,373.338,390.743,532.765,63,109,311,235,542,288,187.808,178.216 +29.5236,447.673,400.753,575.972,147.249,81,59,433,343,113,83,90,184,599.711,323.739,534.615,376.345,381.541,353.778,273.354,297.699,295.375,478.431,309.888,318.373,391.242,87,370.551,375.331,370.014,79.823,99.598,66.833,1119.894,823.25,1128.252,585.94,478.32,455.455,521.656,549.244,281.066,501.65,86.907,73.926,69.176,1377.792,456.699,512.015,1032.078,375.349,389.568,530.442,64,110,319,240,551,286,190.082,176.124 +29.6904,447.032,406.144,580.551,150.787,83,57,432,347,114,83,91,189,593.322,331.592,530.371,380.884,390.268,354.256,275.758,301.786,301.663,478.983,315.3,316.804,403.688,88.5,368.501,380.32,370.82,82.524,98.946,67.654,1129.281,823.455,1129.619,596.739,480.715,451.565,526.45,551.563,284.505,511.861,86.879,76.205,68.294,1368.414,457.081,506.994,1019.476,372.644,390.432,535.371,66,111,325,248,559,289,184.298,176.76 +29.8572,442.812,402.012,578.682,151.877,83,58,441,351,115,86,93,193,592.323,326.588,534.865,384.439,393.556,355.338,283.042,303.469,302.872,477.949,316.507,327.55,397.678,89.5,369.194,373.578,364.64,82.283,101.028,66.465,1135.513,819.737,1136.439,585.841,485.823,451.841,523.296,551.973,283.642,521.69,89.566,75.639,68.038,1373.365,456.006,503.402,1017.1,373.55,389.568,530.003,67,112,328,254,563,293,188.888,181.401 +30.024,445.142,399.842,581.168,156.377,86,60,450,360,114,86,93,200,588.405,328.085,527.329,388.868,399.451,363.769,287.618,313.07,306.087,479.988,322.608,329.251,410.401,90,368.556,377.99,368.273,82.184,99.371,67.031,1133.736,821.722,1143.37,605.581,485.747,450.758,520.496,556.915,285.269,528.559,88.457,76.899,68.636,1359.235,454.224,500.488,1009.094,371.312,385.39,523.177,68,112,332,264,574,302,185.378,174.992 +30.1908,446.293,400.62,581.58,155.599,87,62,458,360,117,87,95,200,593.396,327.136,533.985,389.896,405.983,368.067,292.686,315.936,310.027,479.436,326.874,336.416,410.76,92.5,367.108,372.63,365.751,83.655,101.921,68.887,1137.785,821.867,1143.636,600.387,493.991,455.81,526.119,558.414,293.676,541.248,90.192,73.529,71.295,1351.244,451.89,494.335,999.434,370.647,384.639,519.65,70,115,342,270,579,302,186.813,175.982 +30.3576,441.798,404.17,581.679,153.448,86,62,464,368,118,89,96,205,587.276,324.403,530.994,397.701,407.242,373.409,296.366,326.304,316.742,480.157,334.433,345.855,418.035,92.5,370.523,375.048,368.6,82.665,104.046,68.079,1143.152,825.701,1151.128,606.917,488.398,455.302,523.205,558.684,294.865,547.027,89.637,77.919,68.849,1337.426,441.679,497.942,989.802,367.021,383.421,527.256,69,116,350,275,594,311,184.951,177.142 +30.5244,443.508,397.055,589.663,152.047,89,62,467,371,118,92,96,210,588.086,322.881,529.841,397.862,413.278,374.658,302.338,330.156,315.348,477.228,344.37,352.122,423.561,96,365.432,370.248,365.531,84.447,103.422,69.85,1139.876,819.791,1149.535,608.349,490.296,455.739,525.743,562.819,298.913,559.475,89.139,76.885,68.963,1332.065,440.392,489.527,994.498,364.274,379.413,520.614,73,119,355,286,595,315,185.52,175.034 +30.6912,441.164,399.32,585.188,156.236,91,64,473,375,118,90,100,213,585.911,325.524,527.2,405.289,419.012,384.309,308.355,335.172,321.877,476.633,342.279,354.539,426.362,97,361.671,373.767,360.144,85.578,105.717,70.658,1154.363,829.457,1155.067,614.295,490.708,452.598,530.664,563.427,302.197,568.709,88.514,74.563,70.029,1305.97,438.044,485.227,978.912,359.388,380.589,521.647,72,122,364,288,602,319,184.596,175.275 +30.858,439.389,402.614,588.427,158.161,91,62,480,384,121,91,100,220,586.589,321.675,530.42,413.455,425.535,384.595,310.971,335.75,325.448,475.954,346.746,361.512,438.086,98.5,357.924,368.146,362.364,85.79,105.788,69.269,1149.522,828.35,1157.297,615.758,493.311,451.104,532.064,560.839,303.895,570.097,90.078,78.754,70.584,1307.045,436.87,480.644,973.155,354.034,375.065,514,73,124,375,297,613,321,181.611,172.699 +31.0248,440.417,405.691,583.41,158.826,89,64,482,389,122,93,101,222,574.514,321.798,530.792,411.305,425.552,391.968,316.674,344.701,328.748,480.752,350.069,365.218,437.281,99,357.98,369.956,358.814,85.465,104.032,70.346,1142.391,827.895,1161.352,613.741,491.942,453.802,531.668,570.724,310.703,584.826,90.149,75.299,72.503,1298.799,433.942,472.979,976.62,356.385,370.562,512.088,76,122,373,304,625,325,183.516,171.638 +31.1916,440.359,401.115,587.24,163.808,93,66,495,393,123,95,101,226,584.408,318.892,525.059,415.765,433.526,392.759,321.78,351.131,332.034,473.944,357.184,372.856,447.209,100,355.657,366.581,352.729,84.928,105.986,70.884,1143.387,822.104,1152.309,619.241,495.647,445.519,527.906,565.435,312.925,590.066,89.395,77.904,69.873,1282.746,430.944,470.079,962.137,352.561,367.843,508.094,74,126,385,308,624,324,180.389,174.242 +31.3584,441.831,398.144,580.029,161.218,95,66,498,396,125,96,104,232,578.648,321.621,522.006,420.974,435.389,397.446,330.712,353.85,334.666,481.021,359.529,375.684,458.582,102.5,349.532,359.762,352.132,88.067,105.703,70.119,1154.368,821.865,1162.919,622.825,489.447,456.166,526.308,569.267,315.84,593.72,89.211,78.867,70.811,1271.36,428.327,462.201,949.861,347.576,363.197,503.519,76,129,391,320,635,333,179.835,171.695 +31.5252,437.67,397.522,578.675,163.426,95,66,505,402,126,98,108,234,574.968,320.223,524.788,425.659,439.796,398.741,331.892,360.167,341.906,483.653,365.868,381.41,457.618,101,349.694,359.857,348.138,84.815,105.023,72.131,1148.179,819.448,1157.259,616.141,496.27,450.366,525.531,574.061,320.171,610.305,88.045,76.531,72.233,1257.542,426.898,457.647,946.254,345.551,362.872,499.752,75,127,402,328,641,338,175.642,169.77 +31.692,429.329,395.699,580.391,169.299,96,65,511,404,128,97,108,240,572.492,316.732,524.439,426.438,444.019,402.019,339.922,364.174,347.71,486.215,371.426,388.215,466.159,102.5,352.457,353.623,348.374,86.37,106.355,75.7,1148.86,811.224,1155.362,620.876,488.115,449.091,529.646,574.344,323.044,616.621,88.258,77.805,71.735,1247.274,419.204,460.702,938.079,342.237,355.295,498.152,76,129,405,336,650,346,180.119,170.124 +31.8588,434.544,394.409,572.545,167.898,95,68,522,414,129,102,110,242,570.58,319.889,519.012,429.892,447.202,401.721,342.715,371.95,348.976,490.418,378.4,392.301,468.806,103,343.253,350.563,349.236,85.79,109.485,72.797,1148.074,810.4,1156.304,624.744,490.297,442.548,529.165,574.372,323.794,623.476,89.154,76.658,70.754,1238.349,415.753,446.445,922.804,336.048,352.405,494.923,77,129,415,342,662,351,175.614,168.935 +32.0256,430.652,393.009,580.955,168.591,99,70,526,416,130,102,111,248,572.005,314.245,518.146,434.179,445.057,401.661,343.469,376.708,355.947,490.319,379.527,399.969,474.713,105,345.024,353.936,345.194,89.594,109.074,72.853,1136.314,801.892,1151.369,623.55,488.102,442.414,534.75,577.483,323.2,631.817,89.452,76.984,71.437,1221.844,406.121,448.708,912.564,334.277,349.516,490.051,77,133,419,346,663,356,176.143,167.223 +32.1924,426.532,388.114,577.091,170.828,99,70,537,429,131,98,111,248,567.791,315.07,517.719,435.583,447.998,402.542,357.435,384.172,356.487,499.561,385.061,405.614,481.253,106.5,346.011,350.478,337.949,88.307,110.222,72.853,1138.745,803.171,1153.53,616.669,489.206,443.015,526.365,577.186,325.974,640.159,90.86,76.531,69.816,1211.745,407.083,438.737,911.333,334.802,344.999,483.621,80,133,430,355,678,361,173.226,166.237 +32.3592,427.462,382.512,577.378,171.847,100,71,538,428,134,104,113,256,565.937,313.892,517.625,439.745,448.329,409.507,356.042,393.604,366.403,502.448,389.256,411.157,490.221,107,340.983,349.072,342.467,88.449,112.276,73.887,1143.463,793.811,1156.648,623.886,483.621,439.377,527.185,581.004,331.932,650.314,89.907,80.099,70.285,1200.925,401.242,437.775,901.206,327.395,345.395,483.876,78,136,439,360,678,367,170.994,162.879 +32.526,422.298,383.46,569.292,173.871,103,71,546,434,139,107,113,256,568.051,311.913,516.352,435.539,455.196,411.825,360.621,395.842,370.414,505.463,398.342,411.775,496.16,108.5,337.228,343.103,337.595,86.073,112.517,72.981,1140.952,793.156,1148.541,618.047,489.263,434.731,532.318,582.008,328.479,657.253,90.547,77.437,71.152,1176.782,396.928,427.648,898.859,320.087,339.702,474.939,80,137,450,369,688,368,169.644,164.266 +32.6928,417.814,378.65,574.013,173.913,102,71,552,438,138,107,114,259,561.692,306.464,510.441,441.624,455.11,415.389,362.43,405.436,370.315,508.478,401.79,418.78,499.724,110.5,332.773,342.208,339.443,87.346,110.845,73.207,1137.715,795.165,1152.829,616.653,482.605,430.025,530.451,576.154,334.593,662.168,92.367,77.31,70.626,1167.376,394.255,421.538,879.736,317.268,336.374,468.368,82,139,451,377,693,371,167.825,162.95 +32.8596,416.9,379.008,562.373,176.418,101,75,561,450,139,110,116,265,565.051,313.787,509.933,444.303,461.851,406.761,369.439,405.656,370.841,507.345,405.046,423.289,507.602,110,333.988,337.701,336.136,86.695,113.126,72.641,1137.089,791.205,1137.259,620.071,479.474,427.174,523.919,588.739,335.754,666.416,90.604,78.258,72.475,1158.098,394,418.822,876.144,311.037,329.93,465.691,81,139,458,384,710,380,165.849,161.917 +33.0264,414.517,376.787,560.341,176.362,104,72,562,458,141,110,116,270,557.823,308.296,505.689,442.661,465.928,407.61,376.337,408.645,378.494,510.884,406.053,430.76,517.894,110.5,327.932,336.221,332.414,91.263,113.395,74.369,1131.125,782.041,1139.888,618.333,477.236,427.868,528.783,581.654,339.433,677.392,88.585,77.933,71.508,1147.151,386.773,416.616,868.577,311.079,329.023,457.491,82,139,465,393,721,378,166.546,158.691 +33.1932,409.157,374.59,552.315,176.461,105,74,574,461,140,112,116,271,554.115,303.945,508.423,449.13,468.768,414.943,378.513,411.902,382.733,511.69,415.909,433.5,522.184,111.5,324.017,331.352,328.062,88.35,113.267,74.171,1131.075,783.417,1141.806,620.821,475.706,418.846,527.539,591.312,341.641,689.062,91.67,78.556,72.29,1135.68,380.663,410.195,863.33,310.102,324.463,458.823,82,141,475,400,721,385,163.661,156.116 +33.36,404.121,365.055,554.93,179.32,106,73,578,466,142,111,119,272,553.886,302.155,500.243,448.95,468.32,417.198,381.599,421.334,389.49,517.224,420.244,437.987,526.42,112,325.27,333.319,324.463,87.742,114.061,73.094,1123.556,777.158,1135.707,615.06,471.499,416.78,527.128,590.096,341.047,694.09,92.851,77.819,72.745,1124.875,376.137,405.641,842.326,303.262,320.058,454.432,83,141,478,405,723,392,160.591,159.271 +33.5268,401.541,360.61,548.391,180.891,105,76,589,471,143,115,116,277,548.585,298.725,494.64,449.725,466.165,412.197,381.997,428.911,392.022,514.549,424.72,444.15,529.185,111,322.749,327.7,320.228,89.933,112.332,74.511,1122.927,769.644,1136.654,618.003,475.494,413.426,523.254,592.429,346.453,699.882,92.524,77.055,71.735,1108.878,374.963,399.375,835.113,302.539,316.801,442.621,81,141,486,409,732,393,160.761,157.573 +33.6936,395.968,356.379,545.297,180.99,108,75,590,477,145,114,121,277,548.499,301.845,501.03,449.007,462.645,408.583,390.428,424.949,398.723,525.759,430.427,448.482,537.254,112,315.9,325.917,319.362,87.925,111.922,75.7,1116.836,770.264,1125.263,608.556,468.801,411.03,518.446,589.785,347.246,703.324,91.77,78.358,71.465,1100.038,370.677,396.164,831.747,293.249,310.428,434.463,83,141,493,410,740,404,157.165,153.767 +33.8604,394.238,357.567,537.616,180.508,109,76,598,488,145,115,120,281,547.638,295.363,492.901,454.571,468.604,409.539,388.725,433.882,399.661,522.093,435.866,444.788,541.901,114.5,315.342,321.256,312.184,89.424,115.69,72.754,1115.459,765.914,1127.08,610.369,467.199,409.312,519.903,586.448,347.67,709.385,92.438,77.239,71.494,1087.479,367.849,388.597,825.283,291.054,308.969,437.607,83,146,507,422,745,403,159.269,151.941 +34.0272,386.868,348.604,536.475,183.721,107,76,605,489,147,115,122,282,540.763,296.775,491.327,445.817,466.323,408.08,389.564,435.624,401.24,527.386,438.641,458.198,546.333,115,315.417,317.524,312.42,88.208,112.531,74.511,1107.516,757.764,1112.575,608.053,463.484,406.322,521.204,581.244,350.204,722.174,93.675,78.428,71.067,1075.57,358.839,389.587,814.18,284.85,304.777,423.912,84,146,509,429,749,407,154.749,150.243 +34.194,386.328,345.398,533.108,181.726,108,76,615,499,150,119,119,285,540.785,297.457,485.008,452.305,463.639,407.57,396.504,443.046,403.972,523.905,442.145,462.278,549.807,114,309.118,314.569,311.255,88.166,116.058,72.726,1105.224,762.867,1109.616,599.422,458.091,398.915,521.006,580.523,355.893,727.301,90.405,81.104,72.247,1053.958,358.811,381.455,806.43,283.746,295.203,425.994,84,144,510,432,754,409,153.527,152.451 +34.3608,381.455,342.406,526.346,185.264,108,78,621,506,150,119,125,283,539.104,289.37,482.611,448.098,468.882,407.924,399.263,444.618,408.083,531.533,449.433,471.253,554.037,115.5,304.614,310.389,306.763,89.255,115.605,76.423,1100.245,747.667,1111.668,604.848,454.713,397.46,515.618,583.096,352.695,729.949,91.13,79.547,72.19,1051.921,350.805,373.987,802.823,275.248,289.708,414.664,83,148,520,439,767,416,155.701,147.116 +34.5276,380.887,337.101,520.72,181.867,107,76,621,506,151,122,123,284,535.881,291.617,481.436,450.452,460.371,407.875,400.657,444.079,414.072,529.679,447.506,466.428,560.938,113.5,307.004,309.358,304.444,90.23,115.421,75.332,1095.004,755.704,1107.188,591.539,453.131,392.314,509.283,582.503,353.501,733.334,94.045,79.207,73.2,1040.182,349.448,371.809,790.645,275.248,283.689,410.599,83,144,523,439,773,416,149.846,148.574 +34.6944,377.876,334.027,520.611,184.146,111,79,632,510,152,123,124,287,531.335,290.54,483.805,442.219,458.013,405.417,401.362,444.803,416.59,527.768,458.511,469.428,567.024,114,302.264,304.157,302.122,89.933,117.673,74.071,1085.102,748.311,1097.867,591.411,444.441,389.689,514.034,582.531,352.709,735.742,93.761,78.612,71.494,1026.307,340.693,369.546,784.408,267.062,285.02,403.872,83,145,523,448,770,421,150.158,143.098 +34.8612,373.059,332.786,505.548,184.33,110,78,638,517,155,121,123,291,533.798,287.123,473.107,443.125,458.551,399.991,403.118,455.31,416.604,532.326,454.634,474.897,567.501,113.5,301.192,303.253,297.035,87.996,114.882,76.168,1067.828,736.221,1095.12,587.846,441.597,377.979,504.108,580.565,363.21,745.033,92.652,80.17,73.584,1007.595,335.983,365.472,776.671,267.487,280.389,399.383,83,144,534,451,772,423,149.618,146.579 +35.028,367.036,330.321,507.366,186.75,110,80,636,519,154,124,126,293,534.17,287.37,478.209,444.569,454.646,398.869,402.819,456.202,418.652,529.523,461.669,479.697,573.737,114.5,296.257,302.264,299.255,90.358,118.282,75.205,1076.128,737.838,1085.348,586.467,439.179,377.77,507.53,575.998,360.182,759.747,94.059,78.612,75.134,1000.509,335.148,359.136,768.072,264.881,279.724,391.721,83,146,533,457,781,426,147.131,143.706 +35.1948,365.02,320.014,500.54,184.231,111,78,649,528,159,124,125,291,525.862,283.498,468.755,445.464,453.347,396.201,403.061,460.734,417.785,534.519,467.236,482.8,571.517,114,295.748,296.706,292.92,90.329,117.588,76.225,1071.032,731.52,1082.245,579.997,431.438,369.604,502.708,583.832,360.705,749.862,95.851,78.046,73.086,989.364,330.269,352.305,758.044,258.069,268.365,392.641,81,147,543,460,788,425,145.909,139.801 +35.3616,358.025,319.478,500.803,186.75,109,79,655,526,155,123,127,291,518.112,283.684,469.173,445.251,447.332,394.763,403.814,457.76,420.573,535.921,472.419,485.637,576.966,113,296.554,294.118,286.656,87.6,118.395,75.87,1058.279,724.559,1075.568,577.522,427.841,369.346,500.233,576.677,369.99,749.125,94.457,79.66,74.067,972.052,327.426,354.186,753.433,256.879,264.683,381.637,82,144,541,463,787,428,144.8,140.777 +35.5284,356.296,315.598,493.387,189.326,111,77,657,534,157,126,125,296,520.968,286.24,469.265,438.98,446.337,391.416,403.772,459.913,431.91,532.793,470.928,481.313,580.866,115.5,286.203,291.487,292.609,89.438,115.364,75.304,1049.628,722.491,1075.7,570.868,422.456,361.886,494.69,577.582,364.456,756.447,94.031,79.094,73.2,972.462,324.809,344.271,750.916,250.28,262.757,379.937,84,147,545,469,787,432,147.003,141.923 +35.6952,356.234,313.42,485.484,183.919,109,78,665,536,162,125,128,288,516.545,282.615,463.227,436.283,443.697,387.6,406.438,462.096,424.897,536.034,477.035,491.62,589.231,115,287.32,289.397,286.387,86.412,120.577,74.766,1053.687,722.057,1059.604,567.195,418.464,355.73,493.333,579.971,362.276,759.62,93.547,79.434,74.352,958.007,320.75,345.586,746.008,248.623,261.213,371.171,84,146,549,469,792,434,143.621,138.74 +35.862,344.32,308.445,479.735,185.632,109,80,668,546,159,126,127,292,518.441,281.87,460.441,437.935,444.572,388.255,401.425,467.108,425.737,536.713,481.719,490.759,591.658,113.5,282.279,286.182,282.407,88.958,117.149,75.814,1037.799,705.784,1051.104,564.568,410.965,346.096,494.195,569.635,366.522,764.832,94.941,79.065,72.645,945.123,313.792,338.897,739.799,240.295,255.775,370.661,80,147,553,472,795,435,137.31,139.659 +36.0288,342.43,304.647,478.627,185.052,112,81,677,547,159,125,126,288,515.307,280.67,452.926,430.556,435.915,383.929,408.138,460.196,423.247,539.756,485.236,492.44,589.698,115.5,284.585,282.661,277.188,89.057,119.401,76.324,1028.968,699.314,1050.122,549.798,412.179,345.582,492.329,568.998,367.386,765.611,92.751,81.218,75.006,947.428,312.207,338.048,731.808,241.612,252.971,361.271,83,148,559,476,801,435,140.431,137.296 +36.1956,341.57,305.155,473.634,186.552,109,82,680,550,165,130,131,288,515.071,276.986,448.476,427.417,435.096,375.551,404.54,464.218,429.122,538.312,484.223,494.285,591.517,115,281.802,280.701,278.084,88.859,116.313,75.276,1026.436,699.529,1035.135,547.218,405.968,339.803,491.381,563.922,370.315,775.539,92.154,76.503,72.887,932.337,308.7,331.033,721.935,236.471,254.925,360.025,83,147,565,479,801,442,140.124,134.633 +36.3624,335.909,300.688,468.696,184.471,109,79,681,555,165,130,127,287,511.772,278.587,450.923,428.62,428.89,378.488,403.502,464.7,432.366,535.609,492.458,500.728,597.502,112.5,275.767,280.997,276.248,86.497,118.211,75.205,1015.128,695.058,1038.099,545.117,402.642,333.499,486.574,562.084,369.721,767.523,92.765,79.419,72.418,933.058,303.919,331.655,715.359,240.154,248.963,359.345,79,146,563,481,805,437,138.873,135.018 +36.5292,327.122,296.737,463.153,183.891,110,80,685,553,164,130,128,283,507.321,272.17,444.592,427.169,428.718,367.885,397.997,463.199,428.937,535.906,490.474,495.008,600.399,112.5,278.27,273.663,271.511,88.053,119.826,77.485,1005.839,686.446,1029.755,540.121,396.691,335.17,477.58,558.973,370.386,767.098,93.903,78.145,75.063,922.719,304.952,319.18,719.559,233.384,241.881,350.338,80,145,562,482,803,432,137.424,130.306 +36.696,325.854,295.963,461.627,184.797,107,79,686,562,168,130,126,285,509.603,269.83,448.469,422.415,421.562,365.498,395.916,467.837,430.929,535.694,495.772,493.699,602.374,112.5,278.454,272.405,270.026,85.635,117.687,74.851,1008.988,685.697,1022.04,537.281,389.753,322.877,478.924,549.612,369.141,767.933,96.846,79.773,71.081,910.824,299.026,323.734,702.502,230.735,241.655,346.344,82,143,570,486,807,437,133.544,134.947 +36.8628,326.579,291.582,456.597,187.882,108,83,684,566,164,130,129,283,503.514,271.68,442.127,422.94,419.879,366.122,399.164,458.412,431.441,542.374,491.181,498.591,604.854,112,273.661,268.475,267.806,89.679,117.333,74.921,1002.133,675.144,1012.037,531.496,389.495,317.534,476.619,551.606,376.274,764.251,93.405,78.697,74.494,901.291,297.498,321.995,701.215,228.229,239.304,342.124,81,143,567,484,812,436,133.615,129.358 +37.0296,320.172,284.656,453.105,184.047,106,80,702,569,167,130,126,280,499.857,269.175,440.074,415.092,414.863,358.246,396.589,461.655,431.853,535.326,502.712,501.931,599.569,108.5,266.406,266.976,266.435,87.275,119.812,74.426,987.978,672.664,1012.309,526.181,384.681,314.538,474.484,547.307,372.523,765.087,96.747,77.791,73.015,894.743,295.164,323.239,694.044,225.311,235.324,340.396,77,140,567,485,808,439,134.112,131.056 +37.1964,316.163,285.886,444.616,182.603,109,79,698,565,169,129,128,281,498.51,264.924,438.212,411.602,411.663,352.345,390.929,458.157,431.099,540.096,497.249,501.848,608.786,108.5,269.38,268.027,261.856,88.194,119.104,75.927,977.687,668.565,996.221,521.082,379.86,309.848,470.199,545.016,374.179,763.5,94.273,81.048,72.389,893.357,293.566,313.678,699.447,222.889,232.789,333.541,78,139,567,483,810,440,132.435,127.236 +37.3632,315.566,281.469,443.04,185.66,107,78,706,574,169,131,128,279,500.831,265.295,434.642,412.287,406.46,351.602,388.895,458.823,429.122,539.162,500.843,498.14,605.843,108,264.011,260.298,266.639,86.073,120.095,76.409,977.129,651.381,1002.204,512.055,371.703,302.859,477.566,541.835,374.122,771.233,94.5,78.202,73.57,886.752,287.131,316.875,698.033,221.431,228.455,331.006,76,140,571,481,812,433,133.501,130.448 +37.53,312.284,279.044,437.286,181.244,107,80,706,575,170,135,125,274,500.723,263.493,431.7,401.094,404.419,341.191,384.515,456.514,436.078,538.765,499.173,498.152,605.915,108,264.441,257.542,260.171,86.214,118.707,75.757,963.763,651.48,988.035,511.546,366.345,301.017,466.339,534.863,378.227,759.79,94.898,79.674,75.219,876.738,283.892,312.632,688.429,217.805,227.79,326.361,77,139,568,479,805,435,132.023,128.594 +37.6968,308.25,278.482,430.993,181.188,105,79,704,573,170,131,125,270,495.864,263.965,433.969,402.483,393.94,341.233,378.285,457.19,432.053,531.915,500.559,500.771,602.515,107.5,261.99,258.806,259.743,87.459,116.228,77.089,956.017,643.6,984.027,505.197,356.224,294.418,464.628,533.633,371.165,758.43,94.685,78.57,73.513,881.83,284.429,309.987,683.648,210.894,223.541,322.763,76,139,569,483,805,431,128.882,128.354 +37.8636,304.671,272.714,424.906,182.362,104,81,709,582,167,132,124,269,496.694,261.215,432.501,395.991,390.954,332.162,381.528,456.528,431.853,534.831,501.817,494.555,602.563,106,260.64,257.712,252.069,87.148,115.676,75.261,957.621,639.819,969.085,496.744,363.797,289.986,456.143,529.504,370.018,756.292,93.491,78.088,72.276,874.192,280.257,306.225,682.333,211.007,224.037,320.979,73,139,575,487,804,433,127.972,124.547 +38.0304,304.272,272.739,422.483,180.919,108,78,708,577,170,132,123,268,497.145,262.813,429.673,390.963,385.306,328.591,374.104,449.235,434.556,532.453,505.346,490.517,600.915,107,260.298,257.132,261.387,86.837,115.619,75.12,943.281,630.142,973.263,490.888,357.474,280.121,457.515,524.484,368.391,753.445,94.671,78.598,75.432,860.954,279.139,303.396,679.405,212.31,218.853,314.634,75,139,569,479,807,430,128.598,129.273 +38.1972,300.372,266.566,419.879,179.121,105,77,708,584,168,132,125,262,501.696,256.751,423.728,392.421,381.767,321.244,367.263,450.523,426.576,530.712,499.639,493.365,601.205,105,259.353,256.735,253.935,85.762,118.636,76.083,943.15,631.11,965.968,486.907,352.568,281.296,447.504,513.469,373.811,745.981,95.239,78.018,72.802,857.135,278.022,308.106,677.708,209.52,219.434,307.836,73,137,566,480,800,428,125.229,125.58 +38.364,295.933,266.418,419.656,179.249,103,77,716,579,171,131,126,263,499.098,259.843,423.501,385.632,378.313,318.286,367.405,451.104,432.949,532.34,509.043,486.514,603.719,102.5,260.072,253.907,253.44,86.695,115.775,75.346,938.354,627.551,964.763,482.752,345.04,281.025,452.849,514.331,376.33,744.678,95.439,80.991,73.84,856.145,277.626,303.198,679.504,207.367,218.343,309.819,72,133,569,482,796,431,126.921,125.764 +38.5308,294.952,264.486,407.637,182.66,102,78,716,580,173,133,125,257,495.241,259.638,427.314,380.7,368.475,313.218,361.204,442.196,429.62,524.81,506.23,489.923,596,100,257.285,249.505,253.497,85.225,117.63,73.363,929.352,622.919,953.455,473.118,338.475,269.716,447.122,510.414,368.801,739.424,94.358,78.811,74.849,857.092,277.372,301.02,671.81,208.642,217.394,304.451,69,131,565,475,795,422,129.635,125.127 +38.6976,291.457,258.745,409.294,178.541,103,78,723,577,171,131,121,254,493.81,254.276,421.305,373.283,365.829,306.901,359.444,441.14,425.452,526.537,505.771,491.295,602.714,102,254.557,252.32,254.049,84.532,118.013,73.392,919.434,609.174,950.142,468.547,332.951,272.074,448.451,502.043,373.118,730.204,95.481,77.961,74.536,851.633,273.1,301.416,679.943,206.333,217.904,305.301,71,133,558,469,794,421,123.606,122.425 +38.8644,289.355,259.583,401.486,177.197,100,78,718,581,170,137,122,251,500.115,256.39,425.253,371.173,360.983,302.94,350.651,439.108,424.798,528.603,508.111,488.323,596.509,101,254.854,248.118,252.339,86.243,117.262,72.216,917.129,608.133,942.042,457.708,335.668,264.648,439.684,502.312,372.481,727.131,95.126,79.901,72.29,852.524,273.638,299.676,675.077,206.872,214.817,306.561,70,132,557,473,787,422,123.325,121.213 +39.0312,287.426,255.574,402.678,172.724,101,78,719,578,172,134,122,250,498.397,256.298,420.421,366.775,358.25,297.543,347.167,434.364,422.55,522.829,496.863,486.457,601.283,100.5,254.967,246.472,249.028,84.518,117.205,75.233,907.354,603.747,929.821,460.158,329.794,262.877,435.046,502.991,362.885,724.044,94.514,81.345,73.513,842.142,273.609,294.104,674.314,204.875,211.758,297.143,69,132,556,466,787,413,123.964,120.698 +39.198,282.572,255.39,392.497,172.809,98,76,723,574,167,130,120,242,499.957,256.959,419.032,366.544,347.748,295.296,343.142,429.818,417.173,518.824,501.733,482.049,591.729,98.5,252.366,248.174,250.187,84.164,115.846,73.859,899.811,606.177,935.18,456.116,326.931,259.269,428.456,499.47,365.036,724.596,92.851,79.589,74.295,843.953,269.324,299.521,667.949,203.685,211.503,294.962,69,128,557,462,785,422,123.851,121.972 +39.3648,281.584,255.292,388.643,173.276,98,76,720,581,170,128,121,241,497.674,255.059,418.048,354.005,349.107,285.611,336.6,421.32,413.417,518.158,505.842,481.253,591.638,97,251.177,246.2,250.527,83.061,116.695,75.233,891.297,597.766,923.937,446.735,319.545,256.185,435.682,490.377,363.394,720.956,94.145,78.527,73.243,844.872,269.395,297.017,674.13,202.637,207.127,296.195,67,127,549,464,773,410,123.265,122.312 +39.5316,275.547,251.542,380.972,174.083,98,77,718,579,171,131,118,237,496.78,252.087,416.736,355.332,339.111,285.273,335.505,419.904,415.878,510.091,500.728,477.829,593.412,97.5,251.858,246.787,248.311,84.023,119.146,74.383,890.711,593.674,921.739,442.868,314.84,251.101,426.604,476.647,361.951,712.473,94.301,78.74,73.783,839.483,269.89,296.352,664.597,201.051,209.832,293.164,68,127,547,458,765,407,121.406,119.71 +39.6984,271.596,248.614,381.246,172.441,94,76,723,575,168,130,118,231,497.889,251.846,416.41,347.592,332.414,276.262,326.584,419.944,409.264,512.157,501.098,475.1,586.101,96,253.466,243.493,243.34,82.142,116.001,72.301,885.229,591.602,915.785,438.687,313.416,247.65,427.975,480.338,363.762,709.499,95.296,76.304,74.536,845.466,267.881,297.908,670.848,201.66,207.396,294.198,65,127,542,456,766,405,122.358,122.934 +39.8652,272.346,247.51,380.989,171.21,94,76,722,575,170,129,116,230,498.783,254.258,416.027,349.231,329.509,273.665,326.914,409.353,405.593,519.107,489.385,467.292,585.619,94.5,252.876,246.333,250.346,83.966,114.84,71.805,882.797,587.062,915.328,433.512,315.124,246.16,421.004,473.154,362.475,708.097,93.277,81.642,71.707,841.181,260.003,298.658,675.488,201.093,210.724,294.892,66,123,543,452,763,402,122.486,121.25 +40.032,271.311,245.048,373.06,168.266,94,74,726,571,169,128,116,227,500.107,256.151,412.252,344.047,327.338,268.01,321.254,406.648,411.753,510.94,493.308,465.907,580.351,94,255.589,245.196,247.365,83.358,116.412,71.097,875.657,592.403,912.508,431.052,306.423,243.439,422.8,470.241,355.313,696.243,93.32,77.664,74.337,842.015,265.491,299.818,667.284,200.286,206.574,291.932,65,123,540,449,752,397,121.373,125.424 +40.1988,267.033,241.609,371.106,167.374,95,77,723,572,169,130,117,225,497.724,252.204,417.289,336.915,317.256,267.592,315.92,400.416,404.142,511.917,493.671,465.436,572.776,91,252.547,244.234,250.184,82.439,114.16,73.406,868.454,590.691,913.867,422.278,305.227,238.304,415.518,469.874,354.86,697.602,96.007,79.561,73.726,845.495,269.663,299.987,678.274,200.272,207.651,288.858,64,118,534,444,753,392,122.941,122.913 +40.3656,268.287,238.838,366.638,166.454,94,74,716,569,169,127,114,219,504.823,253.575,414.638,332.96,314.597,264.423,311.341,395.842,398.794,504.331,493.776,454.351,574.488,89.5,251.63,247.118,247.006,81.463,114.429,73.887,867.855,579.206,906.984,426.021,304.384,237.555,420.495,472.362,352.482,689.147,93.803,77.89,73.029,839.54,265.463,299.591,675.855,201.617,208.104,288.788,61,118,530,435,740,387,120.454,123.868 +40.5324,267.232,239.954,366.789,165.251,92,73,713,571,169,127,114,217,501.052,257.002,413.946,332.045,311.228,257.074,304.784,389.568,398.779,505.774,490.503,456.67,573.993,91,251.644,242.73,248.25,81.788,112.106,71.465,862.046,578.499,903.177,413.425,298,237.383,416.621,464.02,351.633,679.885,94.543,80.198,73.285,851.59,269.974,299.422,682.927,204.039,207.721,288.915,62,120,526,433,736,390,122.387,124.618 +40.6992,263.327,238.994,364.389,165.874,89,72,714,566,165,129,113,213,506.653,256.455,413.216,327.158,304.246,251.676,303.336,383.306,392.663,497.877,484.103,453.192,567.137,88,250.247,244.1,246.941,82.425,114.528,72.23,860.981,578.071,902.702,414.23,296.216,235.315,408.349,461.997,345.363,676.968,94.017,78.499,73.911,841.52,261.615,304.16,680.381,205.455,207.75,287.895,62,114,523,428,734,384,121.875,124.519 +40.866,262.963,239.852,357.684,163.298,90,72,717,564,166,128,112,210,507.478,254.279,413.633,319.97,302.312,250.577,294.701,375.476,395.792,494.438,484.746,446.898,563.724,86.5,256.297,242.249,247.316,81.477,114.656,72.556,856.805,578.025,898.928,406.893,295.406,226.894,410.498,459.721,347.331,674.362,91.926,77.522,71.792,851.873,265.279,305.291,686.166,206.234,208.316,290.275,59,114,518,422,722,378,123.382,123.344 +41.0328,260.621,240.055,361.716,161.345,88,69,713,560,166,125,110,204,503.631,252.973,411.352,322.369,295.7,245.679,287.646,371.397,390.088,499.193,485.675,440.42,551.205,86.5,252.224,243.568,250.852,81.081,115.151,70.884,863.029,574.093,898.743,406.78,293.215,233.008,408.631,455.648,346.014,661.091,93.149,77.154,72.574,853.571,269.437,305.334,685.119,203.586,209.647,286.493,60,113,511,419,712,379,120.738,123.585 +41.1996,258.553,233.926,351.559,158.331,86,71,721,558,165,123,112,203,506.775,258.214,416.233,318.031,291.141,243.924,284.361,365.846,386.83,486.3,474.266,439.236,553.682,82.5,251.658,245.251,250.711,82.199,114.372,70.898,853.023,575.748,890.813,399.167,284.939,226.809,405.11,451.873,338.881,655.908,91.997,79.207,72.773,857.955,265.943,306.352,692.389,204.861,211.22,290.799,56,109,507,419,704,374,122.429,122.679 +41.3664,259.427,236.768,359.144,159.335,84,69,709,556,166,125,108,199,508.845,257.095,415.328,312.643,283.571,236.052,279.782,359.756,383.174,492.513,477.871,432.655,544.406,83.5,249.664,244.247,249.933,81.322,113.112,71.026,840.33,580.429,890.733,399.912,284.098,226.879,401.533,447.32,340.254,656.984,94.102,79.589,72.219,851.491,269.564,306.423,694.454,205.824,209.52,294.268,57,110,507,408,702,367,123.168,123.557 +41.5332,259.496,234.629,351.97,158.614,86,69,706,551,166,124,108,197,507.936,259.135,419.142,308.942,285.676,232.457,272.997,353.893,380.187,484.177,475.298,433.188,540.274,81.5,256.637,244.94,246.708,83.33,113.508,69.907,849.561,577.123,884.129,393.087,283.549,226.667,398.238,442.639,336.051,643.955,93.021,78.358,71.949,857.191,270.144,312.844,692.842,206.843,210.441,290.756,55,108,498,404,695,367,122.5,124.08 +41.7,258.872,233.774,353.544,154.962,84,69,712,553,160,127,105,192,514.392,259.643,415.586,307.184,277.863,232.423,271.343,348.322,378.067,482.535,469.303,429.473,542.948,82,252.054,244.12,250.654,82.199,115.236,70.714,845.537,576.839,889.42,393.211,283.858,225.234,395.368,442.102,330.163,640.131,92.822,77.296,72.546,865.706,271.092,311.033,699.192,210.865,213.981,291.478,56,108,487,396,694,361,123.907,123.783 +41.8668,257.337,233.83,351.167,153.858,85,69,702,546,162,122,103,191,511.636,259.811,417.653,296.938,278.162,229.838,264.265,339.801,376.033,473.548,465.27,422.255,534.829,79.5,254.954,247.645,250.654,81.308,112.885,71.592,844.272,580.876,884.053,391.945,279.502,225.478,391.267,437.69,327.247,633.474,93.761,79.179,71.565,871.293,270.653,316.366,702.785,213.641,215.369,292.257,52,107,483,396,682,352,122.685,125.241 +42.0336,259.268,235.604,345.236,155.118,82,67,702,548,163,120,105,187,514.177,260.874,419.62,301.827,271.101,224.942,260.937,337.832,369.532,476.095,458.185,416.772,527.581,78.5,257.401,245.096,249.862,78.932,111.27,70.148,846.67,576.307,880.262,390.229,279.271,220.768,390.956,440.674,324.162,623.971,93.661,76.234,71.28,872.962,268.447,314.683,700.522,216.828,218.372,297.88,53,104,479,382,674,351,121.648,123.868 +42.2004,255.574,234.832,345.378,154.622,83,67,697,546,160,122,103,185,520.739,259.911,417.912,295.975,265.968,223.454,256.599,331.02,368.522,472.614,456.869,412.865,522.184,78,254.147,246.496,255.49,82.708,113.437,70.927,847.689,577.123,881.135,387.47,280.947,220.113,381.538,434.353,322.676,624.609,91.884,78.896,70.953,881.589,273.256,317.115,707.481,215.752,220.609,291.847,54,102,479,380,666,344,125.357,126.585 +42.3672,256.126,232.045,347.331,151.268,79,66,692,542,159,120,101,182,523.795,263.084,419.393,297.132,268.072,218.953,253.47,327.508,359.333,464.688,450.693,404.834,517.002,77,253.976,250.909,253.17,81.053,111.468,71.082,839.187,579.155,890.839,380.745,279.016,221.994,378.413,431.808,320.794,617.032,92.922,76.8,72.816,886.78,273.369,321.231,717.706,216.29,218.938,302.044,51,103,472,376,665,341,125.371,126.033 +42.534,257.675,233.742,342.302,153.306,80,64,686,530,155,116,100,176,524.396,263.837,423.812,292.366,262.126,216.885,248.62,321.545,355.933,471.878,451.183,406.974,515.862,75,258.064,250.357,252.888,80.69,112.875,71.28,837.954,584.846,882.367,380.601,273.483,216.036,372.87,424.313,318.26,614.185,90.362,77.168,71.579,891.546,275.533,324.046,724.609,221.941,219.618,294.764,51,99,461,369,660,339,126.395,127.929 +42.7008,255.743,230.195,345.215,147.022,78,64,686,528,154,115,102,176,522.141,265.17,418.254,288.355,259.015,213.055,242.563,314.654,353.842,463.513,446.884,398.866,512.527,74,260.083,250.563,253.936,80.944,111.657,68.816,841.704,578.123,891.518,378.541,270.084,219.946,375.698,424.624,315.713,605.036,92.296,77.735,71.465,895.888,274.698,325.191,719.22,218.896,222.21,301.378,49,99,455,355,642,333,125.782,126.075 +42.8676,257.622,234.336,346.992,151.891,75,64,681,530,155,116,97,170,524.725,262.52,428.408,287.949,255.503,210.727,238.594,310.286,350.371,459.664,439.147,395.445,504.986,73.5,261.401,253.455,254.118,79.148,112.11,69.028,837.41,582.813,892.93,374.559,271.795,220.863,372.064,426.208,308.212,596.864,93.476,77.862,71.934,901.998,278.093,328.246,725.386,220.482,227.903,304.14,49,98,451,354,634,325,126.565,129.489 +43.0344,256.811,231.565,344.561,148.367,76,64,672,524,155,116,96,168,526.412,267.419,424.801,282.415,252.346,210.049,235.507,303.233,346.089,457.244,436.318,395.259,494.824,73,262.442,252.971,259.334,81.496,108.91,69.708,844.268,580.199,887.292,378.74,273.128,218.804,371.711,419.675,306.414,584.501,94.429,78.258,70.057,906.44,279.295,338.854,735.004,224.249,229.999,302.426,49,97,446,350,628,325,127.247,126.684 +43.2012,260.317,232.17,340.257,146.898,76,63,668,522,155,115,97,165,532.31,272.949,430.937,285.075,249.118,206.919,233.545,298.149,341.522,451.186,434.239,383.308,490.998,71,266.449,258.419,259.548,81.34,111.091,69.41,837.539,579.462,893.641,375.242,271.89,222.307,366.309,419.463,302.635,583.283,91.173,78.004,69.247,916.651,284.401,336.648,745.145,233.455,230.353,312.212,48,94,440,339,622,319,127.077,132.216 +43.368,256.838,234.884,342.773,146.44,74,61,668,521,153,115,96,162,535.788,269.887,431.773,284.619,249.758,209.18,229.264,291.563,339.602,448.087,428.217,381.851,483.734,69,262.917,254.344,259.239,81.171,109.179,67.654,845.444,582.445,891.066,371.019,270.155,219.719,365.347,417.384,303.258,575.663,94.998,77.791,71.024,919.721,284.288,339.802,738.922,231.769,234.758,310.017,47,91,433,335,618,318,126.38,131.65 +43.5348,258.272,231.989,342.743,146.294,75,62,664,516,153,114,94,162,539.13,270.713,435.339,278.663,245.763,205.688,226.775,289.708,334.026,441.774,418.822,377.686,480.305,69.5,265.728,257.57,264.201,80.223,109.901,70.43,842.963,587.6,897.15,374.246,275.036,221.33,371.654,417.865,301.22,570.805,91.827,79.476,69.83,924.374,290.879,350.098,742.458,231.982,237.604,313.359,46,93,432,330,612,312,126.594,131.311 +43.7016,254.424,232.902,339.119,144.732,74,60,656,512,151,111,93,159,538.27,274.027,434.979,278.374,246.602,207.285,221.676,286.67,331.479,444.831,418.714,373.747,477.984,69.5,267.467,258.334,266.124,80.364,110.411,67.527,848.915,588.559,893.803,374.232,276.766,222.051,367.341,416.649,296.479,569.078,93.746,78.103,71.408,932.803,292.152,349.858,752.259,237.59,241.117,315.385,48,91,420,327,604,306,127.503,130.858 +43.8684,257.379,235.487,342.755,145.968,73,60,658,513,149,111,92,157,544.393,271.25,433.519,276.256,243.958,203.508,213.961,285.502,325.69,440.246,417.168,368.338,470.263,68,269.126,263.876,263.94,78.823,109.929,69.665,842.56,593.405,898.625,367.693,273.383,220.141,363.891,416.748,298.573,560.495,91.841,77.225,70.228,940.71,289.662,353.479,758.61,241.1,244.516,317.141,46,90,415,314,602,303,128.826,134.013 +44.0352,261.374,233.335,343.282,141.933,72,59,646,507,150,110,94,153,546.731,274.32,439.981,275.255,245.322,204.038,218.341,279.001,323.101,439.142,413.956,363.563,468.807,67,267.354,258.589,266.067,81.072,110.722,68.462,844.074,597.287,906.437,366.099,277.587,222.455,366.875,415.914,293.308,549.108,91.372,75.667,70.356,941.261,290.652,355.869,767.351,241.951,247.85,324.793,43,91,414,316,593,296,128.797,133.826 +44.202,259.995,239.502,342.799,141.526,71,58,645,506,150,111,91,153,550.472,281.584,443.388,272.604,242.592,201.2,211.728,280.885,322.944,433.098,410.718,359.473,462.979,66,268.221,262.497,273.397,78.101,108.924,68.292,859.799,596.574,907.216,369.497,273.738,223.326,364.683,413.68,284.406,547.069,92.595,77.607,71.863,951.671,298.53,352.743,769.67,244.186,251.103,329.674,44,88,403,311,585,295,131.27,135.457 +44.3688,265.009,237.456,340.647,140.503,73,58,642,503,145,108,90,151,552.035,277.104,444.91,269.428,241.783,200.72,205.37,269.98,317.24,434.287,405.005,358.613,455.424,65.5,273.072,264.082,264.883,79.219,109.193,68.051,850.547,599.439,916.143,364.395,273.425,226.241,364.838,411.219,280.443,537.141,92.083,76.092,69.048,958.135,303.042,364.921,787.817,246.816,256.609,328.206,44,87,399,305,573,290,131.028,132.556 +44.5356,260.523,238.355,347.853,139.529,69,56,639,493,145,106,91,151,550.266,277.119,446.264,276.893,241.499,200.648,206.693,264.471,315.419,426.178,402.048,349.417,454.167,65.5,275.018,270.95,271.271,79.615,107.876,68.164,858.349,597.146,918.066,370.024,276.525,225.223,363.962,411.629,280.882,533.204,89.552,78.981,72.361,969.436,300.553,364.977,785.582,251.299,259.523,336.722,44,87,389,300,570,287,131.838,135.414 +44.7024,264.708,239.508,343.28,139.352,66,57,629,495,144,104,90,146,556.319,283.655,450.615,276.355,240.942,200.037,203.418,260.708,313.072,425.838,397.966,343.635,445.694,64,275.627,267.641,274.92,77.168,107.564,68.447,863.199,604.116,925.062,372.526,273.014,224.951,365.814,406.836,276.254,527.072,91.557,74.45,69.887,979.124,303.254,365.939,790.801,257.372,259.664,341.147,43,85,388,297,561,282,134.041,138.216 +44.8692,263.442,243.761,348.672,138.581,69,56,631,492,144,105,88,145,557.715,282.576,449.183,268.47,239.876,196.869,201.53,257.304,308.221,423.106,392.331,341.826,443.107,63.5,283.583,273.201,274.623,80.619,108.23,68.122,864.004,612.071,927.135,370.905,275.844,230.277,368.868,409.989,275.108,525.117,89.779,74.818,67.1,986.422,307.37,373.93,802.766,257.215,263.226,340.383,43,84,384,295,555,276,133.771,136.914 +45.036,266.483,243.532,347.971,136.589,68,58,631,494,139,105,89,144,559.603,285.487,454.008,271.554,240.374,194.241,200.279,257.687,305.034,419.101,390.078,343.465,441.374,62,281.519,274.104,279.075,81.072,109.589,67.498,872.161,608.455,933.226,367.777,277.247,235.357,371.993,405.167,269.489,519.466,89.509,76.545,70.555,996.931,310.157,376.321,815.029,264.093,273.409,343.12,42,82,378,290,551,277,132.41,136.376 +45.2028,265.766,242.545,355.491,137.003,68,57,617,484,143,104,88,145,564.434,293.435,455.316,270.197,234.629,198.228,196.752,256.426,300.496,415.874,386.985,337.917,435.809,61.5,281.098,273.659,282.23,77.96,107.791,67.513,881.721,610.598,944.916,373.351,279.849,229.442,364.174,405.789,272.546,511.62,92.623,77.423,68.081,1006.11,311.925,384.651,818.579,268.942,279.993,353.317,41,82,373,280,542,269,137.793,139.168 +45.3696,271.474,248.897,347.638,134.954,66,55,617,481,140,106,88,143,571.445,288.585,465.764,270.207,240.589,199.189,196.254,250.931,300.852,417.87,382.996,334.399,432.14,62,285.985,278.32,279.974,76.871,106.573,69.821,881.034,620.413,944.528,374.119,282.57,235.046,363.891,405.436,266.616,507.924,91.272,76.177,69.105,1017.92,322.037,383.944,828.126,275.831,278.385,357.569,41,83,362,277,538,268,136.571,141.541 +45.5364,271.986,245.831,353.52,134.001,65,54,612,478,140,101,86,142,573.164,293.372,463.274,271.613,238.499,198.539,193.808,249.232,293.654,415.365,380.818,333.074,425.908,61.5,283.496,282.425,286.353,78.016,108.726,69.24,883.236,618.429,948.313,371.929,281.415,238.403,366.38,405.322,262.893,499.582,89.509,73.713,69.773,1023.365,319.039,392.275,841.223,276.135,283.683,363.058,41,82,357,270,533,263,137.722,141.018 +45.7032,271.711,247.543,351.934,132.873,63,52,609,476,138,100,88,141,574.027,293.215,464.326,269.948,240.118,200.604,193.479,245.224,297.282,415.251,376,325.121,426.447,59.5,286.352,281.166,289.807,78.681,107.182,69.878,892.599,618.568,959.125,373.336,287.269,241.383,363.679,408.151,258.237,497.132,89.68,76.729,69.474,1027.142,324.838,395.047,838.338,281.338,290.205,366.076,41,78,353,268,529,260,138.632,142.9 +45.87,273.586,254.216,356.409,133.694,64,52,602,473,137,98,86,143,575.3,298.42,462.944,272.561,239.791,200.889,190.508,244.147,290.653,409.166,378.343,322.933,424.664,60,294.014,288.006,289.142,79.487,107.04,67.272,894.129,630.623,961.761,377.702,290.53,241.106,361.317,409.833,258.69,485.83,91.727,78.188,67.47,1041.441,326.648,398.074,850.827,285.112,294.116,370.53,41,79,354,263,522,257,136.003,143.253 +46.0368,275.191,250.018,357.219,133.534,65,53,607,472,135,99,86,142,577.558,297.103,472.435,272.49,240.26,202.478,187.408,239.842,289.258,406.42,367.828,319.803,414.239,60,290.841,283.427,291.365,80.647,108.825,66.705,910.471,634.697,974.935,372.483,289.945,246.984,357.132,408.023,257.218,481.596,91.059,75.738,67.157,1049.135,324.908,405.244,862.297,287.525,293.113,378.226,42,78,351,264,516,254,136.017,147.017 +46.2036,278.419,256.113,356.701,132.759,63,52,600,464,134,99,85,139,589.844,296.203,469.207,273.906,240.317,203.649,190.352,240.182,284.834,406.646,365.656,319.152,413.943,58,292.877,293.379,295.635,79.912,106.714,68.787,909.386,631.691,982.31,375.64,288.469,245.028,361.091,404.304,256.638,480.024,88.812,75.242,68.55,1052.134,334.682,405.089,867.219,294.627,300.151,384.255,40,76,347,258,507,247,139.072,146.197 +46.3704,282.95,259.751,359.315,133.755,64,52,597,465,133,100,84,139,587.691,304.632,474.183,276.205,240.018,206.406,185.203,241.683,282.196,406.052,362.588,318.926,410.174,58,299.849,289.602,298.251,79.12,107.819,67.725,921.424,640.141,998.125,377.19,292.323,252.272,360.398,404.205,251.132,476.647,90.049,73.77,68.621,1076.927,333.607,412.84,873.442,296.372,307.859,388.825,39,77,343,257,509,247,140.153,145.772 +46.5372,285.44,258.332,362.63,131.383,64,52,596,457,133,98,84,138,593.997,301.928,476.413,278.818,239.961,208.477,188.972,236.953,279.03,401.707,359.787,312.382,404.891,56.5,299.523,293.099,298.562,79.473,108.301,68.164,921.626,641.602,992.677,384.285,295.629,249.402,360.851,400.218,249.038,469.246,90.803,75.611,69.048,1084.452,337.836,416.998,882.523,302.993,310.77,395.216,37,76,345,252,502,245,142.1,150.215 +46.704,288.504,259.71,370.002,131.06,61,51,588,453,134,95,85,136,596.997,305.347,484.271,277.282,246.062,203.187,184.948,235.609,280.112,401.169,357.731,307.568,404.084,57,300.964,299.042,299.847,81.015,107.522,68.065,928.396,648.886,1009.589,387.794,302.431,255.533,363.014,403.597,244.99,467.32,87.973,75.497,68.493,1095.809,339.547,417.62,895.832,305.1,318.327,404.234,39,75,338,251,497,243,145.71,155.026 +46.8708,288.092,264.175,364.304,131.949,61,50,584,458,131,94,84,141,599.385,308.111,484.4,279.71,244.811,206.764,185.26,230.707,275.09,397.22,355.176,311.164,397.564,57.5,306.588,299.536,298.265,78.879,110.198,68.745,928.063,650.394,1007.379,389.145,299.233,261.095,368.854,404.969,248.429,461.995,87.76,75.356,70.185,1100.83,346.152,424.225,896.935,305.742,323.311,405.635,38,77,338,247,496,235,143.422,152.309 +47.0376,291.609,268.39,373.306,129.77,62,51,582,453,129,94,84,141,593.623,308.997,486.224,280.962,246.587,207.876,179.543,233.101,271.704,394.064,350.635,305.433,399.921,56.5,306.797,301.769,305.313,79.643,108.485,67.895,940.99,655.131,1009.618,392.674,302.572,262.31,366.464,403.131,243.674,458.936,89.211,73.784,66.688,1100.25,347.68,428.2,908.377,314.534,323.169,410.102,38,75,336,247,486,238,147.43,154.63 +47.2044,294.464,267.74,377.738,127.349,59,50,584,454,131,95,85,140,598.109,311.516,494.017,285.16,244.298,209.425,179.998,227.62,274.265,390.908,348.684,302.384,395.146,56,307.384,307.654,305.56,80.152,106.87,69.566,943.509,656.559,1026.344,395.931,311.381,266.007,366.804,401.349,239.513,447.436,91.429,75.455,68.067,1127.604,358.287,434.253,911.135,322.742,330.661,414.978,37,75,332,246,483,235,142.384,153.413 +47.3712,297.972,272.232,385.61,128.298,61,50,579,451,129,94,83,138,608.516,312.271,495.613,283.691,248.962,212.531,182.359,229.248,268.703,393.088,345.494,305.489,393.448,55,314.838,308.573,304.598,80.096,107.352,70.869,952.168,663.403,1029.561,399.044,312.085,271.223,365.277,402.551,238.31,447.011,89.58,75.568,69.304,1135.482,355.869,432.839,911.446,323.594,335.623,418.596,37,73,332,241,483,233,146.973,156.073 +47.538,300.649,275.032,386.37,128.114,61,49,571,447,128,93,84,137,604.377,313.353,498.497,292.521,251.166,214.323,183.169,227.747,269.073,393.243,340.763,302.412,390.111,55,314.994,308.446,312.349,80.845,107.833,70.416,959.265,670.502,1039.717,405.578,315.975,276.482,369.717,406.949,238.706,443.867,90.86,74.874,67.754,1149.583,358.5,445.738,929.975,327.844,338.868,426.407,37,73,327,241,474,227,148.297,155.579 +47.7048,306.229,275.584,389.716,126.372,61,50,569,447,127,92,82,139,611.57,315.139,502.834,287.278,251.578,215.281,180.526,224.961,265.317,391.163,339.404,301.487,384.611,54.5,317.964,312.179,313.141,80.817,105.794,68.886,972.477,674.376,1053.241,402.457,319.743,278.473,368.812,408.603,235.097,441.233,88.144,73.189,67.398,1161.054,363.436,446.926,931.927,327.034,341.762,431.024,37,72,327,238,472,230,147.955,156.625 +47.8716,305.634,278.913,387.908,126.925,60,49,570,445,128,93,84,140,616.849,311.942,501.038,291.488,253.953,218.712,179.6,224.292,264.136,396.357,337.157,301.265,388.046,53.5,321.922,312.92,318.26,81.015,108.556,69.68,983.283,677.839,1056.161,407.704,323.177,286.944,372.347,407.896,231.459,441.289,91.23,74.818,68.109,1161.125,363.011,449.726,937.315,338.7,350.553,436.269,35,72,331,233,470,223,152.603,160.332 +48.0384,305.82,281.837,392.92,129.359,60,48,571,441,129,93,83,142,613.641,316.583,503.585,296.565,257.707,220.797,179.059,224.915,268.233,390.979,333.782,298.813,382.288,54.5,319.209,317.243,322.433,80.576,107.465,68.277,989.137,679.72,1071.634,412.681,325.632,287.298,370.82,416.434,229.945,433.302,89.765,73.713,69.275,1173.26,372.855,455.893,949.634,339.456,349.18,443.867,37,72,327,236,468,224,149.107,158.38 +48.2052,309.301,284.82,396.514,127.095,58,49,568,436,124,92,83,143,616.13,317.217,507.986,294.602,260.138,225.662,180.668,225.892,262.372,389.252,335.29,296.449,384.029,55,325.091,320.639,322.334,79.077,108.669,68.362,990.139,689.848,1074.621,417.586,327.994,289.28,369.896,414.352,230.002,425.484,89.41,73.996,67.598,1184.745,375.854,458.708,958.997,344.425,354.667,447.221,37,73,332,233,466,224,152.02,156.837 +48.372,315.837,284.999,402.188,128.269,60,49,569,438,128,91,84,143,624.388,318.663,508.709,301.345,261.29,223.553,182.891,226.458,262.614,391.828,331.374,293.707,379.697,53.5,325.362,322.912,322.179,80.209,108.754,68.136,1001.875,691.245,1078.746,422.193,335.428,298.266,370.987,418.247,226.534,422.736,88.855,73.827,68.223,1195.847,375.543,464.323,957.739,349.896,363.468,452.216,36,71,321,234,461,219,151.04,159.95 +48.5388,318.265,290.317,408.348,129.374,59,51,565,444,125,92,84,145,627.671,327.408,519.028,299.529,263.821,233.165,181.029,222.026,256.412,392.847,334.583,299.735,377.876,55,329.65,326.747,324.952,78.285,105.511,68.547,1013.196,692.997,1091.41,428.521,335.167,299.359,375.689,418.799,225.883,423.006,88.158,75.837,68.408,1207.177,379.446,467.137,973.862,349.932,365.567,457.786,37,73,325,231,458,217,152.222,163.403 +48.7056,320.853,295.142,408.753,128.723,58,47,567,437,123,89,83,144,628.811,324.05,517.318,308.659,264.788,232.338,181.171,222.436,260.808,388.276,331.332,295.263,382.019,54,332.843,330.227,324.125,80.845,107.564,69.439,1021.855,701.906,1089.874,429.53,343.894,303.259,377.218,423.374,228.148,425.385,90.817,74.35,67.342,1215.79,382.558,469.103,975.362,351.299,375.273,464.71,37,71,323,228,454,215,162.438,165.146 +48.8724,320.583,297.628,417.059,129.274,59,48,563,432,122,91,82,145,630.659,323.878,527.265,305.191,271.907,234.651,181.171,221.487,255.53,384.794,327.157,294.141,377.297,52,331.241,327.893,332.626,81.482,108.57,69.467,1026.422,711.579,1106.111,434.11,343.792,307.513,379.003,418.134,223.788,421.929,88.841,75.653,67.498,1219.637,389.276,479.371,979.704,356.701,376.042,468.375,35,69,322,231,453,214,150.386,165.539 +49.0392,325.496,296.733,423.094,127.901,59,48,563,433,123,91,84,146,630.738,330.373,524.546,313.068,270.888,238.434,179.494,225.085,255.857,389.719,328.91,293.014,376.439,53,334.168,330.212,333.376,80.619,108.74,70.388,1030.126,709.678,1114.524,439.54,353.633,313.663,377.303,424.294,223.137,412.228,88.912,73.119,69.674,1234.29,386.999,481.832,984.711,365.156,375.297,476.239,36,70,322,226,451,215,152.376,167.676 +49.206,327.091,303.984,414.892,130.833,57,47,556,426,123,89,82,146,635.42,326.554,523.702,313.373,275.822,241.857,180.972,223.824,255.061,389.394,324.824,297.54,375.628,52.5,335.822,332.39,338.735,82.203,108.485,70.543,1040.705,721.419,1116.877,442.555,356.198,317.549,378.309,427.977,221.524,416.576,89.808,75.936,67.953,1238.208,392.713,487.759,991.104,363.23,381.104,482.826,37,68,326,226,451,210,155.701,166.403 +49.3728,330.784,301.432,424.848,126.683,57,48,554,429,124,88,84,147,637.078,331.31,529.491,319.292,284.061,243.949,185.747,222.252,254.008,389.832,325.695,298.332,377.686,51.5,340.319,336.436,334.776,81.807,110.198,70.501,1043.28,727.597,1122.345,449.889,358.715,324.907,383.336,430.498,219.656,412.299,87.59,73.303,68.323,1244.94,396.659,488.141,992.249,368.633,386.903,488.595,35,68,325,227,447,208,157.535,168.001 +49.5396,330.089,306.007,431.503,126.43,57,47,557,432,123,88,84,150,638.881,329.756,529.003,319.63,283.876,247.788,184.127,224.376,255.587,387.837,324.908,295.458,379.036,52,337.844,336.69,338.141,81.708,109.929,70.473,1056.004,730.297,1132.646,455.433,363.687,327.345,389.879,434.817,217.221,409.948,87.604,76.021,68.764,1260.654,404.721,492.171,1001.796,369.204,390.552,492.135,36,68,321,229,446,210,155.194,167.52 +49.7064,336.918,307.017,436.775,131.37,57,49,555,428,123,91,83,149,641.463,335.385,533.354,326.279,287.453,248.629,181.611,224.334,254.89,386.818,326.049,296.055,377.374,51.5,344.615,342.412,341.887,81.27,108.952,71.096,1067.84,726.706,1141.72,461.523,372.39,330.564,381.255,433.387,216.797,406.917,90.49,76.078,67.313,1267.372,402.628,498.055,1004.738,376.863,394.371,493.977,36,67,321,226,447,208,156.966,169.425 +49.8732,341.493,313.533,438.636,130.904,57,48,547,427,119,91,83,151,650.78,331.263,539.76,325.916,291.164,253.72,182.592,221.728,255.8,390.568,322.235,298.489,377.254,51.5,345.547,347.902,344.459,82.132,109.391,72.824,1072.415,735.652,1142.808,464.339,375.055,333.064,390.078,439.009,212.735,409.027,89.623,74.634,65.365,1276.678,410.039,494.364,1007.341,379.23,400.529,499.349,35,68,318,228,448,207,155.247,169.784 +50.04,341.109,316.744,441.832,126.782,56,49,551,425,122,88,84,152,651.41,329.908,541.12,338.234,295.828,260.013,186.188,224.518,256.64,391.177,321.715,297.342,378.38,52,344.092,350.424,346.706,82.033,108.527,68.532,1078.163,740.522,1151.504,474.491,375.717,337.009,389.78,445.17,217.151,407.214,88.016,74.039,66.716,1286.607,409.459,496.91,1014.483,380.617,401.918,510.145,35,69,323,227,445,205,157.45,170.124 +50.2068,345.058,317.355,444.105,128.978,57,47,547,422,121,88,85,154,650.041,333.29,540.26,337.396,295.704,265.087,182.706,227.945,253.61,395.593,324.046,301.109,378.202,52.5,344.54,347.769,345.784,82.132,110.099,70.119,1084.792,745.163,1159.41,475.947,380.953,344.021,398.405,444.051,211.334,403.504,90.121,74.251,69.119,1296.494,410.661,500.813,1023.464,380.191,405.034,510.726,35,70,323,231,441,204,158.061,172.176 +50.3736,346.498,321.005,452.54,127.985,59,48,551,427,122,91,85,156,649.045,337.449,541.957,342.474,301.53,266.535,191.546,226.473,258.589,392.606,321.744,301.784,374.825,52,352.899,348.313,347.651,81.821,110.779,70.912,1097.667,748.998,1164.941,476.794,387.226,348.159,399.298,447.209,215.438,404.269,88.94,73.345,68.508,1302.83,417.153,509.908,1021.696,382.172,402.168,512.96,36,68,320,233,444,202,159.468,169.968 +50.5404,351.56,320.679,456.412,128.694,58,48,555,427,122,88,86,159,657.334,333.834,548.733,347.263,307.744,269.942,187.268,228.923,250.935,391.375,322.843,300.542,376.745,51,348.944,352.573,353.3,82.896,110.439,70.897,1098.198,753.022,1179.193,490.388,392.834,352.911,400.544,454.602,211.178,405.246,87.675,74.195,66.887,1303.707,418.907,514.476,1026.675,388.949,411.839,519.65,35,67,325,229,443,206,160.832,172.303 +50.7072,354.122,327.256,462.019,129.176,55,47,553,425,122,89,87,159,654.992,336.806,542.67,348.598,310.147,277.779,194.105,233.171,253.695,396.598,321.914,302.929,380.815,53,353.469,350.098,353.554,83.236,109.887,70.883,1115.03,751.646,1178.788,493.518,398.168,359.927,403.589,453.554,211.688,406.874,88.201,72.963,66.048,1318.926,424.098,514.108,1035.585,389.659,410.927,527.493,36,70,325,232,440,204,157.904,174.935 +50.874,353.691,328.09,463.398,130.971,56,48,557,426,123,91,86,166,656.008,338.419,545.607,358.106,314.597,277.304,192.413,230.098,253.496,392.111,327.27,307.1,383.336,53,355.312,355.954,350.691,82.514,110.822,71.662,1120.864,760.927,1181.583,497.484,404.652,364.859,396.111,461.131,213.867,400.006,89.95,74.973,67.256,1319.194,427.931,516.598,1038.386,389.933,415.424,526.471,36,70,328,233,431,202,157.222,172.827 +51.0408,364.366,333.008,466.428,127.901,56,47,555,428,123,92,86,165,663.303,336.807,547.752,362.652,318.92,283.003,193.437,232.605,258.461,396.796,326.545,302.194,385.319,53,353.574,357.016,353.786,81.963,110.779,70.6,1119.239,768.928,1189.418,504.465,404.864,366.378,401.634,466.017,211.008,400.955,90.817,75.058,69.389,1327.398,425.159,516.739,1038.697,390.878,416.431,530.457,36,70,333,236,437,201,158.004,176.647 +51.2076,363.336,332.824,473.07,131.411,56,47,558,431,123,93,86,166,663.065,342.245,552.717,367.931,321.977,286.151,196.819,234.191,258.546,397.178,325.715,307.836,385.132,52,355.887,360.485,356.453,83.999,111.855,72.498,1143.814,767.951,1193.144,507.934,412.137,366.713,407.229,475.478,211.15,401.578,90.092,74.492,67.598,1337.963,425.286,514.646,1045.953,395.329,417.381,537.871,37,67,323,233,444,200,162.197,175.628 +51.3744,365.444,335.028,478.484,131.916,56,47,557,428,120,91,87,166,662.144,336.506,556.449,372.248,332.983,292.396,202.248,239.615,258.83,397.631,328.301,308.431,387.628,52.5,361.484,357.111,355.685,84.056,112.45,72.979,1137.815,771.366,1203.879,517.347,416.699,376.302,410.967,475.803,212.537,400.586,89.637,75.455,66.517,1337.482,433.772,527.672,1048.598,396.48,422.146,535.644,36,69,323,233,440,200,161.074,176.477 +51.5412,367.432,336.068,482.6,129.445,57,47,553,433,123,90,86,167,660.737,337.365,552.679,372.517,338.536,297.448,200.443,234.205,261.192,398.89,327.907,311.844,390.606,52,362.985,362.718,361.385,84.593,112.804,71.634,1144.084,773.301,1217.218,519.021,424.92,377.529,414.551,475.506,210.98,398.887,87.76,71.844,66.929,1338.854,430.519,521.039,1050.776,400.411,425.419,545.303,37,67,323,237,439,199,158.373,175.982 +51.708,371.864,339.181,490.627,133.563,57,46,556,431,124,91,88,172,661.557,342.837,562.751,378.996,338.841,303.129,204.523,239.332,261.462,402.372,328.839,315.786,386.92,51.5,356.569,363.524,365.053,85.173,114.079,74.112,1149.511,778.093,1209.4,529.277,425.815,380.797,412.143,469.435,210.57,397.315,87.973,74.336,67.214,1360.211,436.007,523.542,1059.22,402.288,425.062,547.586,35,68,331,236,444,199,159.66,175.572 +51.8748,370.386,344.324,489.637,132.331,55,47,563,431,122,93,88,173,662.282,335.709,556.561,387.707,349.448,307.852,202.959,236.528,262.515,405.203,332.687,315.795,392.133,51.5,361.809,360.738,362.192,85.272,110.51,73.532,1157.707,782.272,1224.913,533.443,433.597,380.048,413.74,477.511,209.904,396.054,87.376,74.733,70.527,1347.369,442.103,528.379,1052.148,401.497,432.55,547.349,36,67,331,237,443,201,158.942,178.807 +52.0416,378.629,346.711,494.764,133.397,55,47,562,437,124,91,88,177,664.711,338.333,563.798,388.765,350.984,311.111,204.025,242.028,260.694,405.231,332.068,323.367,394.61,53.5,366.447,367.414,355.058,81.043,112.153,72.016,1168.93,782.304,1225.341,541.42,429.92,389.443,414.728,475.756,213.16,397.357,88.357,76.135,69.73,1349.504,440.943,530.048,1049.39,395.56,429.314,550.345,37,70,334,242,446,199,159.951,176.152 +52.2084,375.133,346.183,501.456,134.803,57,47,560,435,124,90,89,179,671.775,339.082,556.965,398.961,356.743,315.015,210.094,245.655,262.7,406.448,334.088,320.455,398.88,52.5,365.303,368.079,363.677,84.82,113.881,72.47,1164.446,783.126,1230.893,540.382,442.726,388.231,421.917,476.831,210.796,402.866,89.566,72.765,65.934,1351.838,442.782,535.989,1055.288,403.965,427.514,554.704,36,69,340,246,446,200,163.931,176.987 +52.3752,384.921,344.661,499.837,136.852,56,47,551,435,124,94,90,185,667.959,339.993,564.789,402.016,361.165,321.984,207.237,252.295,263.126,403.462,335.326,325.319,397.032,52.5,361.841,366.38,366.524,85.216,113.626,72.781,1179.175,785.634,1231.236,547.506,440.863,399.3,420.021,476.398,210.301,400.232,88.045,74.917,69.73,1358.669,439.854,525.423,1058.852,398.267,433.029,559.052,36,69,343,244,446,198,154.778,179.647 +52.542,383.927,346.311,506.712,133.067,57,47,556,436,125,92,91,186,670.321,339.321,563.405,407.695,366.412,326.906,212.155,251.713,267.01,410.496,340.042,327.31,401.313,53.5,364.373,367.44,368.717,84.947,114.801,73.928,1174.533,783.434,1243.695,553.421,445.292,396.229,423.8,477.396,213.06,401.436,88.201,71.915,68.636,1362.912,445.37,531.463,1057.381,403.59,430.274,562.486,37,70,350,247,445,204,160.051,179.562 +52.7088,383.872,353.356,510.749,133.718,55,47,552,439,125,93,94,191,673.842,335.456,563.655,409.352,370.151,333.13,209.826,253.467,269.229,412.69,337.025,331.103,405.529,53,366.901,369.717,363.888,83.886,114.051,74.452,1189.082,790.033,1247.9,562.55,451.749,403.079,425.119,483.915,204.993,398.83,90.277,73.926,68.863,1352.984,445.908,530.755,1056.476,403.017,429.725,562.415,37,69,350,254,446,201,158.174,176.166 +52.8756,384.827,346.652,514.065,136.755,57,48,556,440,125,95,93,193,675.145,338.4,563.455,416.09,377.218,336.618,218.11,253.325,267.536,409.859,343.041,333.555,408.823,53,367.889,365.091,363.508,85.145,114.306,74.424,1191.83,795.431,1246.658,566.602,453.659,405.345,425.034,477.114,210.286,405.784,87.319,72.765,68.294,1366.18,445.455,531.802,1057.975,404.24,429.665,565.07,37,69,354,253,449,202,159.937,179.93 +53.0424,386.643,354.686,512.369,139.103,56,48,551,444,126,95,96,198,669.696,339.216,570.531,425.175,382.621,347.011,217.541,263.414,269.229,417.233,341.288,340.481,410.982,53,368.602,366.928,363.007,85.102,115.637,73.9,1190.147,796.665,1254.748,570.74,454.156,408.161,428.571,482.907,208.815,404.481,90.035,75.172,69.361,1360.749,444.267,534.362,1064.806,400.569,427.339,569.108,37,69,357,259,450,201,156.597,181.288 +53.2092,386.74,355.817,520.209,138.276,56,48,563,445,126,95,95,201,671.103,342.474,571.059,425.843,387.2,350.236,222.544,263.561,272.06,413.85,345.544,337.691,410.223,52.5,371.455,370.721,368.909,86.757,114.546,72.979,1197.155,801.111,1257.75,574.124,462.889,409.323,434.479,488.923,209.805,404.014,90.49,74.959,67.754,1361.003,446.36,535.465,1060.379,402.124,430.671,567.717,37,68,366,261,453,199,158.487,182.548 +53.376,391.911,358.448,520.095,138.018,55,49,556,449,125,98,94,202,665.932,340.041,564.68,432.618,393.992,349.917,221.052,271.953,274.037,417.488,345.792,343.125,419.437,53,369.277,374.793,367.481,87.295,118.923,73.631,1198.849,794.576,1262.491,585.636,462.762,409.054,434.061,485.95,207.654,408.064,88.343,75.327,68.764,1368.329,449.627,532.82,1060.054,402.514,432.901,573.364,37,69,366,267,453,200,157.208,183.142 +53.5428,389.652,351.686,525.309,139.356,55,45,559,450,128,96,97,206,668.155,337.112,568.192,444.997,399.764,358.659,223.539,271.783,274.023,421.097,350.749,345.593,418.044,53.5,368.471,368.769,363.026,88.03,116.416,72.909,1204.429,797.227,1265.89,593.526,469.219,414.051,441.335,491.91,212.169,405.869,90.291,75.143,68.067,1361.668,453.573,530.444,1064.467,396.008,429.058,574.114,37,70,366,270,449,200,158.572,182.788 +53.7096,390.746,358.341,528.207,139.065,57,47,563,450,128,96,94,207,671.123,343.553,574.747,446.227,407.107,358.584,225.444,274.938,280.026,428.329,355.663,355.911,430.129,52.5,368.711,370.268,367.552,85.697,117.959,73.503,1207.68,804.368,1271.506,593.903,468.821,414.782,438.378,494.57,214.603,414.112,89.836,73.204,68.906,1355.445,448.595,527.729,1054.326,398.503,427.869,570.141,38,67,375,276,458,201,158.885,180.453 +53.8764,392.118,357.684,531.659,143.007,56,48,567,456,128,97,99,211,665.76,341.668,570.093,452.4,407.249,366.685,226.766,276.412,277.622,428.003,357.524,352.802,426.7,53,370.267,373.096,369.914,88.497,117.039,76.449,1213.401,802.857,1279.548,599.605,472.068,420.195,441.109,492.274,211.475,411.732,90.377,73.529,69.645,1364.355,447.732,525.423,1054.722,397.31,428.731,569.317,36,70,373,282,457,201,157.819,180.34 +54.0432,390.547,359.094,532.17,140.022,57,48,570,451,126,95,101,216,664.801,339.526,570.84,449.048,410.206,369.612,233.04,282.789,282.601,428.442,362.121,361.993,431.786,52.5,368.245,369.032,369.178,87.974,116.926,73.702,1212.813,804.471,1282.807,604.596,476.296,415.264,443.471,500.127,211.9,415.216,91.343,71.547,69.787,1358.782,448.68,531.873,1053.053,398.012,427.213,569.372,36,69,378,286,456,200,155.36,182.052 +54.21,393.89,362.862,533.115,144.605,57,49,569,455,128,98,99,217,669.398,337.923,568.186,459.478,424.795,380.133,234.391,283.512,281.178,425.342,364.299,362.305,442.188,53.5,372.389,373.097,364.315,85.838,116.855,74.82,1208.115,811.439,1284.708,614.464,483.603,420.149,442.07,507.386,217.377,413.446,88.77,75.356,68.323,1364.581,446.304,531.689,1047.523,398.229,424.93,572.389,37,70,380,289,457,201,152.802,177.581 +54.3768,393.25,359.985,534.398,145.284,57,48,570,460,132,100,101,225,665.159,341.482,567.771,462.577,430.243,378.047,239.011,285.65,289.33,428.753,366.426,366.958,439.916,53.5,371.682,372.12,369.024,88.313,120.834,74.452,1230.163,810.399,1285.309,615.859,481.165,422.708,445.396,506.084,213.995,419.323,89.353,74.733,69.958,1347.963,450.278,524.348,1050.083,397.229,426.467,575.645,37,70,386,293,459,201,153.101,179.788 +54.5436,393.449,359.802,541.456,144.605,54,48,575,464,129,99,99,223,664.477,341.243,571.515,473.79,431.252,388.953,240.276,295.718,288.021,437.571,372.912,370.788,448.199,54.5,374.632,370.933,364.359,90.293,119.631,75.628,1226.899,806.54,1283.931,625.185,485.152,423.111,448.663,508.86,213.98,415.91,90.476,74.676,68.365,1355.43,445.398,528.606,1050.267,394.988,424.428,572.007,37,72,390,295,459,205,150.699,180.821 +54.7104,399.341,360.839,535.58,144.81,56,46,573,464,132,99,101,222,670.86,337.756,570.153,478.305,440.891,391.044,239.85,297.207,293.697,432.136,372.63,373.082,453.257,53.5,369.66,368.51,367.864,89.232,118.526,76.534,1220.653,805.13,1291.584,626.422,484.294,421.871,443.161,517.521,215.863,421.278,91.059,73.713,69.247,1357.043,443.857,524.758,1046.349,393.299,423.025,568.395,37,70,389,301,467,205,151.452,181.048 +54.8772,394.369,361.555,543.962,149.356,58,48,574,470,132,102,103,227,668.837,340.222,570.053,485.455,444.986,393.751,242.343,298.46,290.297,440.557,371.441,379.682,457.717,54.5,369.358,370.803,369.782,91.552,121.089,77.54,1229.321,804.477,1305.243,630.034,478.447,424.456,447.053,518.215,214.957,419.663,90.59,75.37,68.721,1344.809,446.134,528.04,1042.573,388.751,421.89,565.046,38,71,397,305,463,204,151.082,178.458 +55.044,393.852,357.868,542.93,147.999,56,49,579,470,131,102,104,232,665.732,335.728,569.781,487.774,451.413,399.195,248.511,304.504,295.262,437.373,379.824,381.031,457.194,53.5,369.278,370.451,364.895,90.944,120.749,76.308,1231.015,802.61,1302.319,633.688,484.549,426.536,452.601,515.738,220.703,422.651,91.073,75.752,69.958,1351.046,445.667,524.674,1050.026,389.702,418.619,567.877,37,70,401,313,468,204,148.396,178.416 +55.2108,393.62,364.418,545.62,149.715,56,47,589,472,132,104,105,231,662.382,337.46,570.809,489.192,454.783,405.827,252.562,309.216,298.462,440.444,387.763,386.367,461.112,53,366.815,369.358,367.945,88.964,120.466,78.432,1242.15,808.825,1299.221,641.224,486.183,427.882,449.941,518.013,218.17,427.481,89.267,73.09,69.958,1345.572,441.24,523.867,1042.191,386.339,419.572,567.704,37,69,404,316,469,202,147.543,177.914 +55.3776,395.874,360.863,549.104,152.087,58,49,586,472,133,102,105,234,663.442,337.794,569.091,499.128,460.594,406.261,255.746,309.896,299.828,441.619,390.446,392.699,474.189,52.5,366.351,369.701,365.729,90.76,123.143,76.194,1240.272,802.928,1297.843,642.5,487.946,426.309,454.437,523.828,222.048,433.344,93.021,74.195,68.778,1335.318,444.21,519.073,1032.403,383.15,418.403,566.844,36,69,411,316,474,204,149.249,178.331 +55.5444,400.44,362.975,545.577,153.345,56,48,587,482,133,103,105,240,661.381,334.431,567.388,505.74,462.143,412.254,255.618,322.235,301.649,443.09,392.36,395.275,475.524,53.5,359.872,372.312,362.177,90.01,123.44,77.809,1239.377,793.895,1298.444,649.551,488.71,422.503,460.635,526.871,218.283,428.571,90.846,75.965,70.257,1345.968,446.148,517.885,1031.017,379.653,417.704,564.531,37,70,418,319,466,204,146.804,177.454 +55.7112,395.363,366.312,548.124,151.751,57,49,593,482,134,106,106,242,664.843,329.894,568.656,514.38,469.656,418.303,259.212,321.216,307.794,448.016,394.553,398.993,473.92,54.5,367.765,368.952,365.22,89.43,121.273,79.253,1243.474,802.385,1305.817,654.59,490.593,426.663,459.121,524.725,223.307,436.276,92.225,73.798,70.484,1335.997,438.595,517.22,1031.611,381.577,410.417,559.548,38,71,420,332,476,207,148.368,178.387 +55.878,396.053,360.739,547.018,154.924,56,50,589,480,136,107,105,247,662.764,334.278,566.83,519.401,472.827,416.854,262.629,324.542,307.367,450.11,398.866,401.323,479.499,55.5,362.392,370.633,363.791,92.825,122.846,80.018,1244.515,797.664,1304.627,651.533,488.908,424.895,459.175,531.618,225.586,441.884,90.832,75.2,68.92,1330.424,440.392,514.419,1026.633,378.084,410.736,569.828,38,73,420,328,481,207,146.818,176.888 +56.0448,395.436,358.963,545.301,154.555,57,50,599,485,136,107,110,249,661.385,333.529,571.083,525.65,480.591,423.916,265.573,329.158,306.059,453.408,404.623,408.625,489.867,54,362.081,366.321,360.808,90.265,120.268,77.71,1247.399,799.765,1306.398,657.036,487.111,425.628,462.522,524.946,228.827,438.938,89.196,74.874,69.318,1326.521,438.157,506.909,1026.519,375.099,407.244,558.368,38,70,418,337,479,204,147.757,175.543 +56.2116,395.349,355.947,546.178,156.151,56,51,597,486,139,107,112,248,661.419,330.738,571.349,518.353,486.421,420.804,269.106,330.838,316.799,450.592,411.524,416.25,488.268,55,365.543,363.734,358.797,90.477,124.602,78.517,1237.018,795.337,1299.87,657.363,493.428,422.97,466.471,530.408,229.421,442.904,91.016,75.596,69.346,1322.363,433.687,505.41,1023.677,374.329,404.369,556.602,38,72,430,344,476,204,144.587,176.336 +56.3784,392.937,361.759,552.155,153.206,56,49,603,491,140,106,109,252,660.742,331.754,562.931,527.031,484.217,427.075,268.978,333.3,315.334,455.913,408.9,422.712,494.597,54,364.315,363.098,360.398,90.505,122.364,77.37,1245.949,798.586,1310.783,653.609,484.393,423.236,463.479,529.319,227.468,446.275,90.775,73.869,71.309,1320.793,435.243,509.978,1016.152,372.588,403.936,554.664,38,70,431,349,480,208,141.517,177.001 +56.5452,386.719,358.231,548.271,157.205,57,50,607,495,141,110,112,252,659.019,329.774,563.168,530.131,491.129,429.425,268.978,338.663,314.38,460.032,416.036,422.453,502.723,55.5,362.293,361.046,359.677,89.643,122.35,75.684,1249.828,796.082,1308.095,660.582,495.769,421.908,461.447,534.611,232.252,445.68,91.528,74.464,69.56,1310.312,433.645,499.639,1009.292,366.172,404.643,551.649,39,72,435,350,481,206,143.091,175.388 +56.712,389.597,354.152,547.326,158.224,58,51,606,497,144,109,114,256,656.987,329.297,559.484,538.974,496.715,434.023,271.707,347.945,321.152,456.805,420.655,422.585,510.756,54,361.374,357.679,360.624,90.279,124.503,78.474,1250.884,799.519,1313.973,663.377,488.781,423.544,464.255,537.082,235.705,453.767,94.443,74.888,69.46,1313.183,432.796,504.208,1010.042,369.142,397.229,548.492,39,69,449,358,481,210,141.631,173.053 +56.8788,387.155,354.728,547.297,158.684,56,51,615,498,141,107,112,257,656.449,330.652,560.543,546.299,502.645,442.231,279.227,353.761,324.025,466.075,421.637,434.406,512.015,55,366.549,360.692,355.336,90.138,125.862,77.271,1246.189,801.431,1302.581,667.387,488.201,419.89,461.484,534.973,236.059,457.505,93.064,75.625,70.811,1298.05,432.485,504.632,1006.153,365.89,394.063,544.496,38,72,448,361,483,207,139.3,172.077 +57.0456,386.33,349.723,547.055,159.604,59,49,616,503,144,111,112,259,653.056,328.582,561.875,551.535,504.705,441.259,279.249,354.907,323.57,464.688,427.92,436.445,515.373,55.5,362.18,357.147,358.717,91.396,125.48,79.848,1249.535,790.753,1306.588,664.847,483.862,417.435,468.842,543.565,241.848,468.056,92.495,74.789,71.167,1302.222,424.183,496.075,989.802,362.962,392.135,540.253,39,72,456,370,484,207,140.289,175.076 +57.2124,386.186,350.392,546.647,160.452,57,49,616,503,143,110,114,262,652.173,329.164,554.705,549.067,508.816,447.517,279.519,353.549,325.448,472.345,430.293,440.142,524.956,55,354.04,356.955,353.432,90.251,123.327,76.633,1244.257,791.799,1312.498,664.828,490.862,414.116,470.186,532.601,243.461,465.507,91.614,75.54,69.688,1300.383,425.583,494.491,992.886,357.331,389.106,538.507,39,71,460,373,485,210,140.281,169.397 +57.3792,382.979,351.992,538.827,161.923,58,49,621,512,142,116,115,262,649.473,330.061,559.455,553.971,506.868,448.467,282.33,360.301,329.858,468.467,432.395,440.222,531.25,55,360.286,356.148,349.744,90.138,124.177,79.211,1243.617,797.513,1310,665.866,486.757,415.916,476.364,534.066,238.168,465.96,91.642,76.135,71.124,1286.607,423.08,492.044,993.833,353.62,382.795,533.281,37,73,463,377,489,209,136.898,168.483 +57.546,386.788,348.344,536.932,162.94,59,49,620,513,147,113,116,264,645.58,322.991,559.196,560.623,512.314,448.734,284.825,366.38,332.475,471.496,444.606,447.45,528.888,54,355.586,353.176,347.453,91.382,124.998,77.993,1231.409,790.067,1309.074,673.914,482.27,414.358,478.869,538.921,242.57,471.073,91.571,75.922,70.171,1289.804,421.213,487.235,981.698,352.581,380.983,527.958,37,71,464,383,491,208,137.495,169.431 +57.7128,386.603,347.216,540.514,164.699,59,51,623,516,144,118,117,263,644.173,325.018,557.249,561.186,517.518,453.46,288.762,370.146,332.93,468.835,438.584,450.702,534.11,55.5,355.125,356.997,349.431,91.835,124.559,79.352,1238.324,793.559,1305.533,670.686,484.534,411.209,483.469,543.379,248.358,472.334,91.941,76.517,71.579,1268.815,420.421,482.738,977.766,348.65,378.523,528.432,39,72,475,382,488,211,137.317,170.209 +57.8796,378.302,341.48,534.735,165.817,57,51,629,508,148,116,116,269,649.96,325.629,562.06,568.862,519.893,460.129,290.453,372.353,331.821,470.095,450.179,454.064,536.144,54,355.705,349.292,346.925,91.609,125.933,79.749,1228.699,790.426,1299.187,668.937,486.198,412.262,476.662,542.544,248.641,476.795,91.557,75.455,70.612,1272.096,415.909,480.305,970.185,349.888,373.187,525.334,37,71,483,391,490,208,134.837,166.308 +58.0464,378.487,346.141,535.446,165.648,57,51,634,518,149,117,119,269,637.593,316.916,552.07,566.347,518.812,455.303,291.036,379.246,335.861,476.011,453.469,465.086,544.548,55.5,350.423,350.784,344.431,93.589,124.488,78.956,1237.686,787.989,1299.274,667.387,483.614,409.635,478.954,544.931,249.391,478.069,90.448,75.101,70.313,1268.9,413.349,477.802,963.877,341.601,371.844,516.375,39,72,488,397,490,210,131,164.04 +58.2132,372.632,339.701,528.589,166.245,57,51,630,520,150,119,118,270,636.768,321.044,556.484,573.958,524.67,462.762,295.783,378.679,337.326,476.393,459.302,461.513,549.114,55.5,346.684,355.043,344.673,89.487,124.092,79.126,1230.729,786.852,1304.026,669.975,483.121,405.02,476.95,540.746,252.01,482.134,92.04,75.2,70.612,1258.73,413.221,477.363,971.076,339.115,367.466,512.312,40,71,485,404,492,210,131.597,166.954 +58.38,372.789,338.289,535.204,167.744,59,50,642,530,148,117,119,272,630.437,317.447,548.19,573.166,528.651,463.995,300.388,379.896,343.77,482.096,461.145,467.392,553.301,53,354.011,348.303,346.057,93.108,125.607,77.044,1224.889,783.759,1293.778,672.165,474.54,399.819,476.327,543.362,254.402,485.915,90.988,76.701,70.285,1252.351,410.124,477.024,961.869,334.498,370.827,515.618,37,69,494,405,496,211,128.555,166.629 +58.5468,372.079,340.283,524.783,166.638,58,50,643,529,153,119,118,271,634.144,318.21,551.612,578.658,522.822,459.662,299.862,384.296,342.874,481.728,466.868,472.192,560.57,55,350.981,348.472,339.697,92.33,128.256,79.466,1213.215,784.128,1301.188,671.397,474.747,400.532,483.954,539.517,256.043,487.091,92.197,77.069,70.612,1246.029,408.809,472.865,959.761,334.885,365.524,509.452,39,71,491,405,493,211,131.042,165.653 +58.7136,372.547,334.017,528.199,170.757,59,50,647,526,149,118,122,272,629.278,314.885,547.907,583.655,522.438,465.537,297.694,392.23,345.719,483.016,463.1,475.128,562.747,54.5,344.17,343.046,339.491,92.683,124.913,81.066,1208.478,782.99,1292.409,669.022,478.3,398.188,480.112,546.793,255.038,491.977,89.865,76.871,70.811,1237.642,403.349,469.23,944.274,330.435,359.409,503.773,37,72,507,415,497,213,128.527,163.856 +58.8804,371.709,332.389,523.138,169.427,59,50,643,530,150,121,119,271,635.796,317.093,542.952,587.633,525.026,463.541,300.154,387.752,344.424,484.757,472.639,474.033,565.308,54,348.275,342.15,341.944,93.659,123.015,81.505,1209.806,774.986,1283.96,671.383,473.707,395.21,477.003,539.828,258.336,492.883,92.438,75.54,68.678,1233.3,403.222,467.038,943.977,328.619,355.799,493.396,39,69,506,414,489,212,127.176,163.091 +59.0472,367.923,332.786,524.153,168.313,59,50,653,534,152,121,121,274,626.732,313.625,545.427,590.038,524.902,467.085,298.299,396.795,349.218,490.659,473.24,481.875,574.997,54,340.997,344.356,339.188,92.669,126.967,82.921,1203.601,773.312,1285.549,666.8,473.535,391.784,472.232,542.461,256.086,498.605,91.585,77.536,69.574,1234.474,398.597,465.497,938.249,328.217,354.398,496.336,38,70,508,419,489,212,123.282,162.709 +59.214,360.927,327.799,521.672,171.961,59,49,658,530,152,123,124,275,627.426,315.433,545.456,584.396,533.33,465.143,301.525,396.002,353.472,487.701,480.687,485.632,578.943,53,342.65,338.326,333.932,90.859,126.33,82.709,1202.128,770.781,1287.745,664.131,465.778,389.899,468.255,546.833,260.954,503.392,93.121,76.078,70.015,1222.183,401.581,455.907,939.762,322.334,355.059,490.859,36,70,517,420,492,212,125.982,160.799 +59.3808,358.412,325.743,517.879,171.026,59,50,655,539,155,122,124,272,617.075,314.961,541.47,590.812,530.614,466.242,299.024,403.037,353.714,486.187,484.358,490.418,576.697,54,334.866,338.184,335.318,90.59,124.658,79.749,1203.987,765.116,1280.355,661.913,464.15,389.985,469.309,545.817,262.271,505.885,91.656,75.582,69.844,1217.827,392.43,458.693,929.579,321.911,349.585,489.883,38,70,515,429,496,212,123.723,158.96 +59.5476,363.498,328.725,513.617,172.857,60,50,656,540,157,124,122,271,627.365,310.896,539.763,593.947,534.197,464.22,301.902,406.145,348.336,488.536,486.373,489.499,588.532,54,337.044,338.297,335.092,91.962,125.451,80.457,1195.366,762.656,1283.158,660.42,463.824,385.824,469.422,541.431,266.503,501.381,95.837,76.956,70.37,1206.215,396.485,452.929,925.027,321.456,345.483,481.279,38,70,523,431,494,210,123.609,159.172 +59.7144,352.043,322.855,509.3,170.701,58,50,661,546,153,123,120,274,625.615,310.8,542.808,586.772,535.695,466.724,301.405,408.552,352.063,495.697,488.281,491.04,588.239,52.5,339.448,337.646,331.287,89.968,127.208,81.349,1189.795,760.528,1276.871,664.023,463.165,377.415,468.616,542.082,265.71,495.957,92.111,77.112,71.11,1206.102,391.525,448.524,920.654,319.786,345.492,475.427,37,68,525,433,494,215,123.04,157.276 +59.8812,352.872,320.919,512.85,170.728,60,52,664,553,152,126,124,278,620.112,308.568,538.607,598.333,532.121,470.701,301.021,407.589,357.227,496.745,493.246,495.702,590.809,55,335.912,334.553,329.194,90.831,128.723,80.84,1186.563,757.357,1271.708,659.994,460.582,378.746,467.894,539.6,265.682,504.242,91.116,75.568,71.138,1190.162,389.471,446.403,912.909,314.481,343.131,477.672,38,72,527,432,496,210,120.335,160.686 +60.048,353.582,316.107,506.031,173.939,58,50,674,551,160,125,123,273,622.055,307.065,537.219,596.268,534.879,464.56,307.176,407.304,355.364,494.523,494.682,494.123,596.185,54.5,334.045,330.385,329.548,92.613,125.182,79.183,1178.059,757.518,1272.553,655.272,451.968,374.989,467.872,539.119,271.513,504.355,94.784,76.474,71.38,1183.09,388.513,448.807,909.693,312.977,337.467,474.096,38,71,530,442,489,213,120.368,156.118 +60.2148,355.116,317.735,509.71,171.65,59,50,671,550,158,127,124,272,619.66,308.191,531.703,597.219,538.335,461.678,307.04,412.228,359.091,496.207,500.884,492.189,596.226,54.5,329.873,326.993,327.355,91.877,128.411,80.939,1169.489,754.018,1270.606,658.728,451.438,378.208,465.646,545.276,272.758,506.012,93.988,76.205,72.276,1183.981,384.665,441.481,906.666,306.281,335.607,468.071,38,71,536,445,490,211,120.837,153.427 +60.3816,346.853,313.788,501.736,176.34,60,51,677,560,161,127,123,277,609.918,310.96,534.629,596.863,536.122,469.529,303.6,414.515,360.684,495.414,504.327,497.857,597.077,55,332.386,332.153,333.503,90.406,125.919,78.97,1173.816,748.24,1261.059,662.843,450.588,371.554,469.189,544.879,273.254,506.168,92.964,77.451,70.37,1177.065,382.077,440.943,904.148,308.016,335.086,463.077,38,72,540,445,494,211,119.175,156.285 +60.5484,345.854,313.292,499.552,171.848,60,52,679,554,161,127,124,271,611.754,306.922,529.562,600.586,535.576,465.367,305.178,418.507,362.491,489.951,503.175,498.506,597.754,53,333.626,327.027,323.749,92.726,126.032,80.981,1164.32,745.667,1261.836,651.561,445.563,367.315,466.5,544.101,276.834,512.838,90.903,77.296,70.271,1169.385,381.412,430.18,893.031,304.689,331.246,462.885,39,67,535,446,490,213,115.636,152.72 +60.7152,347.51,309.967,497.478,173.151,61,50,681,553,160,128,123,271,608.41,306.446,532.635,595.746,539.202,462.381,298.455,421.479,361.068,496.844,511.847,502.652,599.357,54,328.13,324.563,322.275,92.966,127.052,79.593,1165.41,746.991,1249.442,645.177,441.124,365.785,465.58,544.044,274.867,511.804,92.765,74.308,73.314,1168.126,380.62,435.512,892.749,301.055,325.632,459.214,38,70,539,447,487,214,118.35,155.351 +60.882,340.718,307.795,490.202,171.902,59,50,681,559,162,127,124,270,605.605,304.305,532.26,603.063,536.99,460.653,304.851,419.936,361.907,498.146,509.413,499.837,602.874,53,327.762,322.288,321.837,92.712,131.655,79.579,1156.237,740.078,1243.438,642.471,439.835,359.421,464.702,538.128,280.019,521.562,93.519,76.559,72.276,1167.815,375.769,428.483,897.586,298.962,326.296,455.203,37,69,544,447,485,210,113.978,151.729 +61.0488,342.693,302.682,487.858,173.14,58,51,685,560,165,128,124,270,610.668,302.155,526.662,599.272,535.235,458.353,299.585,422.554,360.727,500.637,514.594,505.962,607.5,54.5,327.451,320.679,319.843,92.698,127.052,78.701,1149.251,728.12,1240.933,641.736,434.309,360.625,465.207,541.469,278.349,516.69,94.528,78.287,70.171,1153.049,371.696,431.439,889.637,301.126,319.351,449.751,40,69,541,454,484,210,112.423,152.944 +61.2156,338.765,301.873,479.678,170.86,60,52,685,567,163,131,124,269,607.694,298.789,523.565,598.549,531.089,463.41,303.29,420.792,360.058,497.651,519.087,508.675,609.72,53,321.766,321.118,321.526,92.245,129.573,80.188,1141.493,737.29,1244.061,643.388,429.807,360.584,460.952,541.503,279.141,522.908,91.87,76.319,70.783,1137.83,367.071,427.705,883.371,297.883,318.653,445.735,37,69,546,458,482,210,116.062,149.508 +61.3824,334.513,303.145,486.211,175.374,62,50,696,565,164,131,122,266,605.149,302.996,524.788,602.02,530.114,459.543,302.428,426.149,366.303,496.872,521.024,509.95,610.064,54,322.29,317.681,320.932,90.109,129.941,79.678,1142.638,724.971,1237.575,642.509,433.247,350.717,464.303,534.76,285.595,521.633,93.547,74.846,72.546,1141.932,367.495,425.555,887.897,295.968,320.536,442.04,39,69,548,454,486,210,115.124,149.21 +61.5492,336.474,302.145,478.546,169.1,60,51,692,562,162,131,124,265,605.862,301.274,525.812,599.47,528.535,455.761,299.273,427.146,365.065,501.047,523.075,513.943,613.227,53.5,318.756,317.283,317.964,89.869,130.564,81.094,1142.395,718.348,1238.929,631.906,426.241,348.905,467.2,538.709,284.831,522.497,95.282,76.786,72.617,1132.371,366.689,424.763,879.524,294.431,315.668,443.033,37,70,547,456,486,209,109.638,148.659 +61.716,331.78,295.793,474.146,171.395,59,50,700,563,165,131,124,265,608.313,299.542,524.346,596.651,532.845,453.065,298.771,424.102,365.649,498.429,521.449,511.704,615.375,53.5,322.106,313.509,314.23,92.896,127.307,80.641,1139.218,725.043,1236.729,638.039,421.474,349.176,460.823,543.622,283.727,519.466,94.87,77.027,71.024,1129.556,362.092,419.685,888.661,290.478,314.124,433.897,37,70,545,461,489,210,109.993,146.918 +61.8828,331.665,295.207,470.162,171.719,60,51,699,570,165,131,122,263,599.084,296.898,521.311,589.101,523.306,455.209,295.783,425.119,363.757,501.047,521.322,503.321,613.708,53.5,319.08,314.713,313.777,91.623,129.771,78.786,1133.424,721.396,1216.316,630.635,423.276,343.664,460.304,538.043,281.972,532.963,93.007,74.86,72.304,1126.487,361.838,421.255,875.069,291.941,307.364,436.701,37,70,549,459,482,211,108.955,148.262 +62.0496,331.292,294.081,469.037,170.978,60,50,704,571,165,134,124,260,600.226,296.931,520.467,590.896,521.485,447.32,298.923,427.833,364.667,497.693,527.454,514.405,615.332,54.5,317.553,320.737,311.543,92.669,128.185,81.392,1121.24,719.47,1222.276,625.441,419.115,344.066,459.563,539.388,289.671,526.562,94.6,75.993,70.768,1108.199,359.942,418.158,872.41,291.605,315.054,430.526,37,72,549,458,477,212,109.723,147.06 +62.2164,328.227,294.27,465.563,173.921,59,49,705,574,165,131,122,260,599.121,296.074,518.8,592.147,523.476,445.449,296.807,429.532,367.327,504.416,525.989,511.918,616.961,54.5,316.069,313.901,313.339,89.331,129.219,81.222,1118.232,720.875,1220.169,625.256,412.995,340.992,459.45,538.459,290.874,529.522,93.803,76.97,72.261,1109.939,359.546,419.063,871.971,288.799,312.378,424.199,38,71,546,459,475,210,107.165,147.357 +62.3832,321.533,291.393,459.974,170.365,58,49,707,571,167,131,122,259,593.784,296.558,516.095,594.06,524.473,445.011,292.767,420.379,370.101,503.935,526.179,512.043,612.471,53,313.763,314.615,312.985,89.43,130.168,78.8,1118.983,709.072,1215.246,619.861,415.405,334.919,460.347,534.916,290.662,529.734,96.32,77.819,72.802,1114.833,352.262,417.196,869.157,288.812,305.644,427.684,37,69,556,461,475,206,108.344,147.428 +62.55,318.819,289.993,459.874,171.267,60,50,705,574,162,134,124,262,595.952,293.707,516.659,589.866,516.878,447.602,290.135,420.255,367.171,506.199,529.44,504.426,619.252,52.5,313.721,309.854,309.421,90.321,128.68,79.013,1110.792,705.958,1215.941,608.79,408.442,331.024,460.007,539.97,287.35,527.057,93.576,77.451,71.38,1092.118,348.967,413.943,867.672,289.752,309.498,419.18,37,68,547,462,467,211,105.672,144.796 +62.7168,318.876,286.527,455.229,171.833,62,48,704,579,168,135,121,253,591.573,295.758,512.652,586.139,517.219,438.729,291.918,417.209,364.838,500.099,523.304,505.693,613.406,52,312.137,315.361,310.157,91.948,129.332,79.862,1104.667,709.35,1202.493,613.454,403.03,331.821,460.012,538.482,293.761,532.057,94.145,77.14,72.603,1100.137,348.797,416.46,871.434,287.61,307.377,417.704,36,68,551,458,467,208,108.287,145.178 +62.8836,321.847,284.815,451.936,171.365,63,50,706,576,167,133,120,259,605.562,297.939,513.239,587.591,510.52,434.153,287.133,422,365.876,501.925,525.395,511.932,618.036,52,310.61,309.039,313.07,88.794,126.669,80.514,1104.557,702.878,1207.222,611.79,402.293,326.556,458.426,528.235,290.322,529.196,92.922,74.365,70.825,1093.461,349.434,409.841,864.984,286.768,299.09,410.294,36,68,546,454,475,206,107.52,142.362 +63.0504,320.155,282.166,439.133,169.214,59,48,714,583,168,134,120,252,588.53,292.862,514.548,585.57,510.181,433.976,290.7,419.562,366.445,497.693,535.003,506.739,621.026,53,310.102,311.457,306.859,90.477,128.68,78.772,1099.614,698.836,1205.384,607.844,400.661,326.679,453.578,540.152,291.709,531.462,93.846,77.338,72.034,1095.71,347.934,409.516,870.981,285.925,302.708,409.946,36,70,551,456,468,207,107.165,144.258 +63.2172,313.094,283.768,439.318,165.053,59,49,708,579,169,137,120,249,559.938,292.758,508.738,579.415,505.189,428.409,289.188,416.384,361.281,502.548,529.963,502.018,621.43,52.5,310.417,303.624,310.177,91.778,127.108,78.021,1096.265,707.22,1201.311,604.145,397.158,328.478,455.389,543.379,291.525,529.408,95.268,75.922,72.432,1089.643,342.814,408.78,866.597,281.391,304.931,406.957,36,69,547,453,466,205,106.312,142.051 +63.384,314.245,281.426,442.585,162.704,58,49,716,579,168,135,121,247,568.441,294.461,509.331,579.061,506.072,427.286,280.959,419.412,362.434,498.825,531.349,501.931,617.882,53,310.474,305.055,308.778,90.534,127.349,78.418,1087.589,699.661,1200.673,597.941,392.269,322.095,455.871,536.472,293.209,528.219,93.235,79.434,72.375,1090.845,341.725,410.393,858.408,280.564,300.351,408.125,37,69,547,457,458,202,105.218,143.409 +63.5508,305.324,278.886,434.446,163.893,60,51,709,582,172,136,118,245,579.877,294.918,507.693,579.784,503.105,422.043,277.136,417.997,359.603,495.91,528.804,502.797,614.783,52,307.619,307.038,305.104,88.384,127.632,79.905,1088.009,700.936,1192.609,590.642,393.27,321.105,454.852,535.927,290.973,529.224,96.42,76.644,71.664,1087.691,341.06,414.098,859.638,283.95,301.397,404.276,37,67,550,455,460,207,106.198,144.767 +63.7176,305.337,273.811,430.055,161.685,60,49,716,575,172,139,119,244,585.04,290.819,511.356,575.02,499.389,422.63,279.552,415.857,359.887,495.782,529.734,496.641,618.901,51.5,304.98,294.358,303.283,90.364,129.02,76.959,1087.334,696.873,1188.152,585.561,391.048,318.683,452.573,543.171,291.667,528.403,93.874,76.092,72.162,1087.959,341.174,410.322,861.915,279.031,301.803,406.393,36,67,538,449,455,201,102.403,141.648 +63.8844,303.988,275.808,425.736,163.949,60,49,712,581,170,136,120,238,590.912,290.916,512.988,567.885,496.767,419.204,282.242,416.889,361.651,499.236,531.25,497.67,612.93,52,304.089,300.568,323.353,88.469,128.227,80.84,1085.041,697.872,1188.012,580.163,387.943,315.866,451.129,537.394,289.473,526.817,93.576,77.381,70.882,1082.33,340.056,405.343,858.747,280.062,302.57,399.247,36,68,537,446,457,203,102.801,140.791 +64.0512,307.312,272.097,429.004,160.326,59,48,717,578,168,137,119,236,596.267,291.167,509.961,564.184,492.875,417.836,273.876,414.812,356.544,495.825,528.077,499.088,615.998,52.5,300.725,299.637,299.34,89.742,127.208,79.735,1074.024,695.646,1185.779,578.962,383.193,317.719,453.377,538.189,290.619,526.448,91.656,75.058,70.185,1084.772,338.014,403.074,860.236,281.2,291.045,398.163,36,69,540,446,448,199,104.208,141.669 +64.218,302.056,273.609,422.838,157.311,58,47,714,583,168,134,119,234,593.857,286.924,508.123,562.421,484.014,411.871,274.919,411.01,353.543,491.636,529.454,497.288,614.924,50.5,304.43,299.297,300.994,90.42,128.426,81.151,1081.875,697.82,1181.714,576.144,388.212,316.616,455.098,536.34,288.652,527.284,95.083,75.469,71.295,1081.086,336.337,404.778,853.486,280.368,297.632,398.981,36,65,542,443,450,199,98.196,139.56 +64.3848,299.636,271.63,425.421,160.17,59,47,719,580,174,136,115,239,600.355,288.325,511.965,563.221,492.976,408.385,271.011,411.214,358.052,494.027,530.017,497.97,611.848,51,308.248,292.397,300.796,89.006,126.202,79.749,1072.648,700.813,1193.348,578.077,376.581,311.211,454.495,537.422,291.426,523.573,93.789,76.857,69.602,1085.244,336.294,407.635,857.757,278.329,299.723,392.949,36,66,536,444,442,197,100.399,139.603 +64.5516,297.31,264.999,421.583,160.128,60,48,718,582,170,134,116,232,601.205,288.941,508.101,556.037,483.463,399.94,268.196,408.276,360.172,494.862,532.311,492.685,604.387,50.5,300.895,300.216,300.768,88.073,125.664,77.766,1072.016,690.817,1182.899,568.337,381.761,309.701,459.89,539.97,291.454,523.8,93.576,77.126,73.029,1079.926,332.221,408.95,852.906,281.961,299.374,376.25,34,67,535,442,440,198,102.671,136.504 +64.7184,298.717,262.902,416.46,159.279,59,47,712,583,171,135,115,229,593.989,292.151,502.456,554.706,480.943,401.127,264.586,405.487,354.197,490.093,528.46,487.575,600.278,50.5,302.182,306.268,300.556,87.563,125.451,78.729,1055.19,682.515,1135.29,567.507,380.301,306.051,457.244,537.705,291.27,522.823,93.192,74.45,71.081,1078.257,332.178,407.338,860.558,277.536,296.707,373.565,36,65,530,439,442,196,99.717,141.337 +64.8852,295.45,264.489,412.382,161.048,60,49,718,584,171,137,114,227,595.15,296.831,503.943,553.64,475.686,399.595,261.857,399.287,351.395,489.329,522.962,483.975,602.563,50,299.976,299.764,300.386,89.798,127.647,80.712,1036.497,681.942,1127.308,565.953,373.502,307.582,456.281,538.747,289.614,525.797,93.405,76.191,71.11,1080.492,332.164,407.352,854.801,280.779,295.9,375.136,35,65,529,436,436,193,100.3,141.4 +65.052,295.08,266.41,408.575,160.298,59,47,723,581,169,133,115,225,594.289,296.35,507.371,545.458,470.246,395.908,261.971,403.802,353.102,492.64,517.838,482.342,596.411,50.5,302.846,297.247,295.211,87.761,127.151,80.684,1039.947,685.253,1128.896,553.935,374.494,305.407,453.451,539.71,287.888,522.993,94.045,76.857,70.185,1088.2,335.064,407.14,856.725,278.921,298.085,373.238,35,66,527,434,434,195,101.536,135.796 +65.2188,295.89,264.415,411.928,157.948,59,48,720,579,170,133,115,221,599.545,294.69,506.111,548.959,468.029,388.188,258.473,398.442,345.648,482.974,520.473,476.582,599.31,50,302.238,302.861,300.061,88.822,125.423,78.205,1050.388,678.6,1155.868,554.744,369.031,305.338,452.297,524.262,290.308,518.588,94.059,76.956,71.138,1081.963,333.168,408.554,855.155,276.474,297.614,374.355,35,65,527,438,434,195,98.637,139.603 +65.3856,291.884,263.878,404.896,160.029,58,49,713,581,169,136,116,219,590.812,297.959,509.718,538.515,463.394,386.695,256.542,397.06,346.928,481.007,512.031,475.779,591.27,50,299.184,298.477,299.509,88.271,126.91,79.664,1054.259,682.496,1166.066,548.831,372.786,304.478,449.597,527.978,288.1,521.817,94.13,77.48,70.342,1086.446,328.897,407.479,859.525,275.159,295.73,376.122,35,65,520,431,424,194,102.219,139.617 +65.5524,296.302,261.052,406.614,158.387,58,48,721,580,169,133,112,219,588.327,292.333,504.329,541.706,456.556,384.552,250.046,394.329,345.534,484.106,514.25,474.373,592.563,49,301.503,300.74,300.443,88.935,124.503,78.786,1059.252,682.823,1175.674,552.428,366.428,304.935,453.384,527.539,285.864,519.056,93.348,74.251,71.735,1088.766,332.504,403.915,868.817,283.262,298.677,373.082,34,64,519,428,427,193,98.106,139.857 +65.7192,290.885,259.837,401.236,159.831,59,48,716,577,170,136,111,216,588.57,291.054,510.219,534.139,455.458,380.291,250.515,390.735,345.662,479.011,515.288,475.411,588.424,49.5,300.061,300.075,293.613,90.307,127.208,77.228,1063.512,680.551,1180.872,546.487,365.423,300.055,451.755,526.353,285.354,519.594,92.31,76.701,71.11,1079.021,330.142,410.308,868.068,281.466,302.205,379.219,34,65,521,423,420,188,98.012,136.561 +65.886,293.621,261.795,406.241,158.076,60,47,719,579,171,133,114,211,587.526,296.031,508.695,532.177,450.589,379.087,246.891,390.299,334.367,480.143,511.449,468,588.561,48.5,301.051,295.734,299.566,90.887,126.783,79.31,1061.172,680.105,1183.979,539.302,363.211,297.827,445.397,525.32,284.675,514.665,92.964,76.871,69.432,1078.922,328.02,408.073,861.335,281.706,301.525,375.189,34,63,512,418,419,190,98.111,139.985 +66.0528,288.418,255.517,402.765,155.401,58,46,718,579,170,133,111,212,590.476,292.473,516.682,529.817,451.496,372.886,244.901,384.468,338.236,481.077,509.368,461.593,586.54,49.5,302.804,302.154,300.089,89.317,127.547,77.809,1070.282,682.372,1176.962,539.321,359.915,299.614,448.808,522.97,284.024,511.28,94.486,74.903,71.152,1089.275,328.572,408.879,860.741,285.086,301.227,374.284,33,66,508,417,413,191,99.419,139.744 +66.2196,285.416,256.182,399.313,157.453,59,47,719,577,174,133,110,208,591.003,293.363,510.319,529.678,442.526,373.098,244.588,381.043,336.771,480.228,507.772,461.712,582.677,49,304.501,296.667,300.004,89.812,126.542,77.965,1062.388,681.461,1178.116,544.008,362.609,297.43,441.293,524.386,287.732,506.168,92.453,77.395,70.086,1090.901,330.948,413.702,864.999,282.498,303.452,375.953,33,65,506,408,418,187,98.196,138.471 +66.3864,288.219,255.008,399.17,157.906,58,48,716,578,172,134,109,206,587.769,295.868,509.976,519.98,443.383,363.006,241.803,379.557,337.795,478.459,501.423,454.677,578.595,49,304.982,300.612,302.875,90.746,123.497,80.117,1047.856,679.286,1165.707,532.511,364.842,298.964,439.75,527.935,280.967,508.349,90.106,75.851,70.953,1096.007,329.321,411.623,870.571,286.033,305.733,376.844,34,64,498,409,410,183,97.614,140.169 +66.5532,281.527,253.607,391.101,155.656,58,45,716,574,171,131,108,206,590.084,295.21,515.597,521.458,434.976,360.935,238.57,374.108,333.514,478.601,498.876,455.169,574.643,48.5,305.448,296.512,302.733,89.006,125.621,76.152,1054.244,674.516,1167.053,530.514,360.979,298.152,434.882,523.078,279.849,503.364,91.073,76.149,70.612,1094.494,332.405,410.449,867.092,287.886,306.044,382.57,33,64,499,404,403,187,98.02,141.64 +66.72,286.991,258.686,394.445,150.999,60,45,711,574,170,133,108,202,596.413,291.116,515.249,515.387,438.513,359.562,236.473,375,330.27,480.069,492.855,444.649,564.262,48,302.465,297.94,304.416,87.436,126.542,80.273,1053.624,676.433,1169.121,526.307,364.304,298.213,437.557,523.522,280.392,511.833,94.088,77.621,69.901,1094.791,325.87,411.666,873.683,293.33,309.487,382.401,33,63,495,406,404,185,97.187,140.16 +66.8868,287.687,256.242,395.069,150.384,58,46,717,567,171,129,107,202,588.395,291.37,512.623,512.878,432.104,357.451,234.889,370.004,328.734,475.069,493.444,446.09,560.966,49,308.375,300.853,302.154,88.497,122.633,78.885,1041.147,678.608,1159.052,527.727,356.187,297.561,440.518,522.151,276.936,507.301,93.96,76.772,69.873,1098.765,328.77,418.752,871.293,294.362,307.05,383.673,33,65,497,400,401,185,95.837,141.315 +67.0536,288.148,255.036,390.007,153.877,58,44,717,569,171,131,107,198,592.357,293.331,516.395,509.987,435.005,354.605,232.919,369.231,330.782,473.237,489.725,440.476,560.594,48,310.327,300.457,302.507,88.426,124.63,79.197,1041.362,673.393,1164.208,526.561,360.611,299.076,434.378,519.67,276.452,506.04,93.931,74.818,70.271,1100.745,330.311,413.985,877.671,293.669,313.483,383.716,33,63,489,394,394,186,95.738,139.518 +67.2204,287.417,258.474,389.627,153.118,58,46,715,568,170,132,107,196,594.653,293.807,516.867,504.638,426.602,350.706,232.738,368.087,320.554,470.505,485.383,439.193,555.832,47.5,312.575,297.12,306.905,89.416,123.61,77.171,1040.361,676.757,1143.937,526.188,360.881,295.777,432.977,520.454,274.131,493.648,90.874,76.758,68.266,1108.482,329.746,417.535,879.213,296.865,311.698,385.172,32,63,489,391,394,181,95.695,138.768 +67.3872,283.417,255.801,387.962,150.481,58,45,707,566,168,131,106,194,589.297,295.821,512.652,501.225,427.072,346.874,227.263,361.897,327.084,464.759,480.222,435.003,551.459,46,309.082,295.055,306.565,87.592,124.772,77.752,1032.274,672.516,1142.448,518.873,363.778,300.112,437.486,514.691,273.112,501.99,92.637,73.812,69.048,1115.031,331.273,414.862,882.664,302.479,319.335,384.352,31,61,485,387,392,180,96.377,139.235 +67.554,285.966,257.742,387.723,151.488,56,45,706,564,169,129,105,191,599.158,299.309,517.232,496.141,422.746,345.069,227.765,359.163,325.206,469.797,476.656,427.722,552.876,48.5,308.432,301.616,307.499,87.224,126.202,76.619,1043.01,675.989,1143.082,521.085,359.034,297.019,430.472,515.229,270.649,497.571,91.315,75.54,69.858,1108.242,330.113,421.001,884.955,297.275,319.972,387.124,33,64,479,383,381,182,95.368,138.754 +67.7208,287.284,253.183,388.351,149.475,57,43,716,570,170,129,104,189,597.235,294.162,514.964,498.362,422.069,343.608,225.145,356.054,315.348,462.806,474.585,422.514,544.194,46.5,308.361,304.048,307.131,90.265,122.888,77.171,1037.096,675.024,1138.126,517.514,356.035,299.627,429.411,512.578,270.437,493.577,90.874,75.455,70.868,1110.052,332.871,419.926,891.758,306.466,321.29,387.944,33,60,473,382,384,178,95.539,137.99 +67.8876,287.815,253.565,389.712,150.087,58,45,703,565,166,129,104,188,597.89,295.888,514.999,492.119,412.035,340.707,222.165,355.695,316.244,468.297,466.515,420.47,537.742,47.5,312.476,302.578,311.401,88.752,121.373,78.446,1025.691,678.947,1140.791,516.541,355.073,300.052,424.963,508.671,272.036,491.595,92.723,75.313,67.128,1112.456,332.801,422.203,887.317,307.117,324.393,390.022,32,63,468,379,381,181,97.5,139.362 +68.0544,282.171,254.996,388.682,146.368,57,43,707,557,169,129,105,188,603.509,297.023,520.588,493.211,413.747,341.89,221.789,348.54,316.628,463.499,464.445,418.653,533.884,47.5,308.05,302.281,307.937,87.266,121.84,76.01,1026.119,676.525,1138.447,516.352,356.796,297.986,431.798,513.795,268.951,488.932,93.917,75.611,67.427,1112.584,331.994,423.15,887.827,312.405,325.937,389.57,33,62,467,372,381,180,98.509,139.56 +68.2212,285.747,255.418,384.794,147.796,58,43,709,564,168,127,102,188,604.844,296.33,516.102,493.988,411.369,336.558,215.576,345.692,311.322,460.102,464.478,418.374,527.644,47.5,309.676,302.069,312.42,87.436,123.313,77.965,1032.991,674.018,1138.469,513.246,357.055,300.906,428.46,509.864,263.007,485.335,92.95,73.869,68.963,1120.023,333.494,422.613,890.684,315.842,332.001,386.572,33,62,460,375,377,177,97.015,142.376 +68.388,288.446,255.774,384.595,148.093,56,43,706,564,170,127,102,185,611.498,299.894,513.217,484.273,404.05,331.912,217.424,346.966,310.924,455.842,463.34,409.657,527.681,46,315.743,305.491,305.081,87.677,123.738,75.5,1030.241,672.444,1133.638,507.209,357.292,294.291,423.336,509.608,265.724,481.752,91.443,74.747,67.498,1119.5,332.588,430.901,895.591,316.874,331.619,396.64,32,60,463,370,369,175,98.552,140.71 +68.5548,287.721,256.057,386.172,143.144,57,42,702,553,168,126,101,185,606.741,299.323,513.74,485.893,406.808,330.672,211.358,345.576,309.515,456.975,462.696,409.764,522.651,47,313.508,303.497,310.666,88.794,123.426,78.418,1035.093,685.972,1133.806,506.356,364.438,295.292,422.979,517.578,260.756,474.557,91.685,75.88,66.247,1132.088,333.649,435.795,898.774,321.71,332.172,397.163,32,62,458,363,368,173,97.571,142.121 +68.7216,287.409,250.778,388.331,144.77,56,42,697,558,166,127,100,180,608.788,302.495,522.764,485.519,401.866,331.813,210.421,345.194,308.079,459.098,455.948,403.406,516.407,46.5,318.274,306.325,313.254,88.356,121.911,77.058,1042.921,689.545,1136.609,508.889,359.791,298.489,422.54,517.847,261.195,473.509,93.163,74.393,68.01,1130.504,334.158,429.812,907.543,324.694,341.254,398.153,32,61,452,363,366,176,95.908,143.593 +68.8884,288.105,253.24,385.745,145.237,56,42,704,560,164,126,102,183,616.047,303.743,519.157,481.996,406.211,329.104,210.179,344.585,305.219,454.201,449.5,401.663,511.789,46,317.948,310.086,310.313,87.606,122.463,75.614,1042.65,691.866,1141.853,509.385,360.393,300.12,428.47,515.922,256.709,473.495,93.263,75.766,68.749,1144.633,339.024,437.803,911.333,327.055,339.553,397.489,31,61,448,357,367,172,93.563,142.192 +69.0552,284.724,256.906,382.549,143.568,56,42,694,552,170,125,99,181,618.804,308.053,522.149,478.475,395.741,330.39,208.872,336.178,299.828,456.649,445.991,390.082,506.536,45,318.613,311.161,310.793,88.356,120.395,76.038,1043.477,688.996,1145.66,504.947,357.423,301.154,425.852,512.172,258.704,474.571,90.334,73.812,68.38,1141.055,339.448,436.771,920.583,330.859,342.784,402.989,31,59,447,358,359,175,98.054,141.117 +69.222,285.625,255.01,386.591,143.399,56,45,697,554,162,124,99,177,616.207,307.108,522.505,477.782,400.358,324.939,207.877,335.762,302.815,450.549,439.769,393.463,503.981,46.5,313.339,306.82,313.735,88.808,120.594,76.152,1049.09,698.742,1147.055,507.711,363.928,302.99,427.636,518.984,254.911,470.946,92.253,73.982,67.398,1150.276,341.018,441.82,920.088,335.129,351.724,406.666,31,62,445,350,355,174,98.808,144.909 +69.3888,288.057,260.568,384.355,143.3,56,42,697,554,163,125,101,175,619.468,308.971,524.277,482.662,399.329,325.805,203.769,334.022,299.159,447.167,437.069,389.531,501.055,45,316.704,306.028,313.735,89.784,122.831,77.171,1052.97,700.401,1148.449,504.067,363.537,307.653,422.756,510.386,256.751,464.785,92.922,74.322,68.593,1154.534,341.159,442.23,916.241,336.812,352.192,405.789,31,59,442,344,353,171,98.665,143.423 +69.5556,289.028,257.348,384.936,143.568,56,43,690,549,165,124,98,178,622.808,315.786,527.648,474.974,392.558,327.03,202.49,328.419,296.03,446.02,437.237,388.435,496.174,45,322.12,308.587,317.397,87.479,123.469,77.072,1056.933,702.105,1163.551,510.066,366.103,308.22,419.374,508.152,252.76,465.691,92.197,74.605,69.176,1156.995,344.936,443.828,922.139,337.151,354.969,408.207,31,59,438,346,355,171,97.997,144.583 +69.7224,287,261.487,392.345,143.766,56,43,685,550,163,125,100,175,629.374,312.318,534.951,476.554,391.508,319.704,202.533,333.031,295.959,446.94,425.753,385.811,495.05,44.5,320.14,313.395,319.773,87.139,121.854,75.217,1059.153,709.471,1164.155,509.015,365.52,307.116,422.524,507.75,249.943,461.768,89.182,75.073,67.74,1158.862,341.923,446.247,932.195,342.157,357.25,414.514,29,60,431,338,352,167,96.207,144.23 +69.8892,291.751,263.683,383.915,142.663,55,41,693,552,163,122,97,173,631.025,311.254,530.951,476.324,394.736,326.255,203.656,329.292,294.01,451.285,425.71,380.291,489.102,44.5,324.368,313.933,314.838,88.95,121.514,78.035,1073.778,710.64,1163.745,505.588,370.703,310.726,424.45,505.5,243.433,455.353,91.557,76.191,67.996,1166.542,344.031,451.607,924.034,343.514,366.361,417.978,31,58,430,338,346,167,96.931,143.084 +70.056,291.596,259.563,385.676,143.356,55,43,693,543,165,125,97,172,629.041,314.775,535.277,476.242,391.427,324.165,199.193,327.501,293.739,444.591,425.966,380.436,493.591,45,323.774,314.088,319.985,88.497,119.517,76.293,1072.557,706.183,1176.657,506.357,369.177,317.736,426.362,511.091,249.476,455.424,89.651,72.75,66.958,1173.614,350.551,447.619,932.987,348.393,368.103,417.936,30,60,429,335,341,169,96.562,143.975 +70.2228,290.202,265.873,387.979,140.669,55,41,686,544,163,121,96,169,629.712,315.905,533.29,476.559,390.371,320.991,201.31,321.824,286.086,442.935,417.366,371.638,482.426,44.5,326.419,314.682,317.114,88.822,121.189,76.223,1076.772,713.789,1183.083,505.119,370.59,313.756,423.814,516.287,241.82,451.628,89.125,74.464,67.114,1176.697,345.7,457.505,938.871,351.207,368.358,423.408,30,59,427,332,342,166,97.059,143.607 +70.3896,292.807,264.868,385.092,141.532,54,42,690,543,162,123,97,173,636.047,317.246,536.031,474.478,392.288,320.042,196.151,323.608,290.126,442.439,410.004,373.874,476.356,44.5,328.229,315.05,319.136,88.398,119.971,76.166,1083.067,722.323,1188.842,507.865,373.777,319.532,424.507,507.242,242.244,452.166,90.988,74.86,67.157,1181.039,354.257,457.604,945.886,355.477,376.605,426.166,30,59,423,329,334,169,96.96,144.329 +70.5564,292.949,262.301,390.178,140.401,54,42,680,540,160,122,96,171,636.271,322.432,543.806,475.336,392.134,323.472,198.709,323.254,281.15,444.237,412.09,364.953,477.151,44,328.158,316.69,319.659,88.356,120.551,77.228,1090.225,729.468,1195.618,505.929,376.057,312.722,423.941,508.348,239.852,445.736,89.907,75.922,67.228,1196.88,354.143,460.702,947.117,360.978,378.05,426.576,30,58,425,325,331,162,100.2,145.291 +70.7232,292.313,263.4,388.738,139.114,53,41,681,540,165,120,95,171,635.93,322.146,540.218,475.843,389.233,325.533,196.605,323.781,281.392,440.656,409.749,362.743,468,44,327.621,314.145,323.704,88.384,121.486,75.784,1089.969,731.605,1199.239,508.02,381.901,321.628,424.808,508.035,235.62,442.961,91.727,73.827,66.289,1199.383,356.901,461.607,954.571,360.511,381.266,432.218,30,58,415,323,329,166,99.22,147.201 +70.89,293.859,264.436,390.121,138.888,53,41,678,538,164,121,95,170,637.136,319.794,541.257,475.718,392.792,321.305,195.013,315.88,280.908,441.661,408.54,363.396,463.983,43,327.621,321.554,324.142,89.077,121.019,76.449,1096.952,731.548,1212.801,508.42,377.415,326.262,426.976,512.183,239.838,446.062,88.187,73.303,68.237,1199.963,358.768,465.313,961.006,362.01,384.596,436.248,30,56,414,323,329,163,99.514,146.239 +71.0568,296.907,265.844,395.293,139.383,54,43,678,538,160,120,97,173,639.75,319.25,545.77,473.855,391.252,321.685,196.221,318.244,280.026,434.669,402.626,360.466,460.834,43,330.845,322.544,326.815,89.218,121.203,75.415,1110.618,729.053,1216.605,510.991,383.86,323.427,427.91,519.381,236.286,441.743,91.045,73.742,68.479,1200.359,358.203,462.781,963.226,365.856,385.106,443.106,30,56,411,319,326,164,99.476,147.431 +71.2236,299.598,268.593,390.604,136.781,55,40,678,530,157,119,95,171,642.064,322.93,544.397,472.224,393.736,321.814,193.822,321.388,277.964,441.293,401.567,356.753,456.869,43.5,333.263,321.059,325.754,88.935,121.358,77.724,1107.19,737.305,1228.578,506.44,382.287,329.954,428.246,518.13,234.658,444.915,89.794,75.158,65.834,1211.575,361.696,474.464,961.741,372.997,391.751,442.328,29,58,413,316,324,164,100.328,148.531 +71.3904,299.083,269.664,390.465,138.831,54,40,676,531,159,120,96,170,648.537,322.794,546.957,478.773,395.156,324.053,194.417,319.591,275.503,439.864,394.539,349.801,455.254,42.5,328.78,326.348,325.627,88.497,123.426,76.959,1122.948,744.307,1228.246,510.761,383.816,333.14,424.794,524.343,233.865,438.712,89.893,72.878,65.92,1220.754,362.007,473.092,974.301,378.28,391.921,448.354,29,56,404,315,320,161,98.125,146.975 +71.5572,299.91,270.235,388.274,138.223,53,41,675,526,157,118,96,168,646.319,328.635,555.363,474.939,393.328,322.282,191.504,312.826,273.283,436.297,391.073,351.74,455.554,42,333.376,322.191,328.596,88.893,120.679,77.483,1137.86,741.752,1229.594,513.082,387.019,331.663,423.503,521.668,232.832,439.094,91.756,73.402,68.166,1223.357,364.751,472.823,980.651,375.543,396.536,452.566,29,55,406,313,319,158,98.154,146.607 +71.724,296.842,270.65,398.403,132.892,54,42,662,534,158,115,94,172,651.672,322.852,556.505,477.881,395.134,320.734,190.693,313.689,271.349,434.485,386.325,349.419,445.949,42,335.384,325.895,329.925,85.994,119.277,76.69,1129.997,740.897,1239.945,515.158,392.462,343.363,419.639,519.347,228.049,441.558,90.547,72.878,68.408,1228.463,369.475,478,982.858,376.25,402.42,456.172,29,55,398,312,321,161,99.603,150.357 +71.8908,306.295,270.556,397.424,136.3,53,41,670,530,158,117,94,175,655.98,322.227,556.025,479.939,397.102,325.738,192.086,316.067,269.585,436.014,380.832,350.621,441.848,43,335.822,332.358,331.976,86.432,119.985,74.976,1142.765,747.056,1246.375,515.616,396.71,341.713,426.829,511.804,232.521,438.429,88.713,70.811,68.038,1235.817,366.378,481.677,979.124,384.225,401.853,458.759,29,57,401,310,314,162,102.034,149.21 +72.0576,303.491,275.011,398.02,135.027,53,40,666,527,158,116,95,171,654.067,325.81,556.047,474.506,394.85,327.448,189.313,318.529,271.093,434.316,381.977,348.288,448.668,43,338.085,327.338,329.317,88.271,118.229,76.676,1151.596,752.687,1245.778,524.059,401.663,342.584,417.879,517.253,227.398,434.137,88.357,73.501,64.327,1245.364,369.772,481.719,986.578,391.182,407.634,458.038,29,57,393,308,315,163,99.078,149.225 +72.2244,308.036,271.107,394.359,135.098,54,39,666,518,157,114,93,169,659.477,324.236,558.081,481.877,392.629,328.051,191.928,316.364,267.963,431.457,383.081,342.52,439.076,42.5,337.505,331.538,338.198,88.058,122.208,75.486,1154.205,758.187,1257.824,520.898,403.696,351.099,421.655,517.96,224.1,429.435,87.078,72.637,65.977,1252.408,373.251,482.497,988.6,388.651,410.525,470.043,29,56,398,309,312,161,99.49,148.913 +72.3912,303.099,276.503,400.633,133.345,53,42,671,527,157,114,95,171,661.72,325.694,556.961,484.882,399.841,329.576,188.843,315.798,267.679,434.33,376.368,340.905,438.202,41.5,345.848,332.301,338.268,86.404,122.336,75.883,1164.756,750.723,1253.392,527.087,397.485,348.438,425.275,514.722,223.095,432.707,89.381,73.147,67.299,1259.098,374.694,489.979,1002.404,395.353,415.299,471.514,29,54,394,308,314,161,100.385,150.908 +72.558,307.438,275.959,402.791,133.514,53,41,668,521,156,113,93,170,661.477,325.074,560.247,479.651,400.765,332.173,189.655,316.134,270.182,431.287,374.821,337.011,437.732,41,344.688,334.507,340.573,89.049,116.713,75.982,1170.476,755.231,1258.276,523.86,405.418,352.765,428.387,518.456,221.708,426.858,90.249,74.025,67.654,1264.572,375.91,488.211,1007.256,393.416,416.745,475.657,28,54,395,300,309,158,100.139,151.064 +72.7248,311.134,276.248,403.631,136.95,53,41,670,516,156,116,94,171,653.904,325.729,559.862,487.289,397.898,336.968,191.217,316.52,265.701,430.607,373.295,335.035,433.004,42.5,348.492,330.83,336.967,88.596,118.965,76.293,1172.125,765.257,1262.387,529.582,411.135,354.516,430.571,524.653,221.666,429.053,88.983,72,66.815,1267.443,377.396,489.725,1008.26,396.866,421.817,477.425,28,57,397,302,308,160,102.261,152.065 +72.8916,308.021,279.748,405.757,133.543,53,40,662,521,156,113,92,173,657.425,328.038,559.367,486.159,409.026,333.494,192.299,316.519,265.957,433.438,368.372,337.138,434.508,42,348.322,335.058,340.616,87.323,122.973,78.29,1178.05,757.4,1273.258,532.348,412.214,357.639,430.898,524.329,218.807,427.608,88.94,72.326,65.905,1266.339,380.663,500.827,1019.716,407.048,425.019,489.727,30,54,399,298,308,157,100.072,153.738 +73.0584,311.238,279.644,406.357,136.512,52,39,651,514,154,113,94,172,663.141,328.257,562.465,492.901,409.545,341.671,191.418,313.859,261.547,436.269,364.741,337.327,430.243,41.5,343.062,336.713,346.017,86.672,119.815,75.741,1187.477,763.729,1287.743,533.663,416.814,360.396,429.623,520.791,218.453,423.006,89.139,73.133,66.019,1280.596,383.053,502.907,1018.938,400.628,430.177,491.367,29,54,391,300,304,158,100.509,151.743 +73.2252,309.045,279.736,408.632,134.971,55,39,656,513,154,114,92,173,658.179,323.076,561.287,493.422,410.598,335.439,189.203,317.496,259.755,434.061,367.24,336.359,426.121,42,349.595,334.846,341.973,88.384,119.73,76.874,1193.433,766.633,1285.009,535.03,416.175,360.252,426.806,526.828,215.976,420.839,90.448,70.91,66.289,1281.77,384.977,508.55,1015.855,405.634,430.729,489.798,29,55,390,300,305,156,98.736,155.013 +73.392,314.799,280.811,408.049,137.106,51,41,654,518,151,114,94,174,665.822,325.891,561.436,498.223,418.994,339.681,191.161,315.684,263.141,426.998,366.228,337.963,425.824,41.5,348.492,338.763,340.432,89.727,118.71,78.418,1187.603,767.674,1290.505,540.453,420.456,365.692,430.966,527.272,213.825,420.088,88.741,71.363,65.109,1277.725,384.34,505.962,1027.75,413.93,437.303,496.544,29,54,393,299,301,156,99.461,153.314 +73.5588,315.807,282.467,411.274,137.219,52,40,657,515,151,111,93,177,666.371,323.93,565.673,502.445,419.972,349.682,189.882,323.025,259.94,434.075,356.986,332.861,425.328,41.5,352.225,339.159,340.432,88.228,121.245,76.506,1204.969,764.373,1286.651,541.171,420.517,368.903,433.515,525.219,213.471,421.618,88.812,73.444,64.91,1293.085,392.232,506.782,1023.521,410.577,436.531,499.724,29,54,388,301,302,159,102.83,154.163 +73.7256,318.862,284.185,416.724,136.625,52,40,654,510,152,112,94,176,662.726,323.804,565.364,508.094,419.321,351.159,190.095,320.99,256.853,429.178,358.538,332.815,425.357,42,350.853,338.353,348.548,88.073,120.565,76.421,1202.164,769.29,1293.993,548.601,426.447,370.083,431.149,530.272,210.117,417.723,91.301,72.481,64.427,1298.969,388.852,513.189,1033.874,417.653,440.08,503.91,29,55,390,297,301,159,103.029,155.634 +73.8924,317.924,283.494,419.855,135.225,53,39,658,510,155,112,93,177,663.912,326.115,563.904,508.26,421.553,350.547,188.886,319.29,260.395,430.749,357.891,334.433,421.368,41,354.106,342.412,346.413,88.61,119.532,76.534,1197.541,768.144,1304.606,551.487,431.684,379.766,436.453,532.516,209.367,418.644,86.424,72.467,63.574,1306.536,392.048,517.856,1038.174,421.414,446.286,510.542,28,54,389,294,297,157,102.574,155.988 +74.0592,316.378,288.932,420.664,135.381,52,39,653,510,153,113,95,179,670.149,326.544,559.24,508.929,426.129,357.83,193.324,320.989,259.399,432.051,356.045,330.297,422.34,41.5,354.799,342.468,345.268,87.931,121.316,77.186,1220.906,768.438,1305.08,557.615,439.646,383.081,443.133,536.586,212.225,419.777,90.234,72.566,66.332,1308.87,393.336,515.919,1040.635,418.841,446.584,513.257,29,54,392,297,295,155,100.74,154.573 +74.226,322.754,288.451,418.647,133.288,51,39,656,512,155,112,94,176,671.719,329.299,567.276,514.195,424.17,358.796,191.703,322.827,257.024,432.249,355.063,338.569,422.811,42,355.59,347.05,341.393,88.935,120.056,75.968,1219.092,776.632,1308.668,561.995,435.525,381.48,439.029,536.43,209.041,413.233,89.594,70.881,66.716,1313.466,397.084,514.462,1042.077,425.289,449.871,526.86,29,55,388,296,295,154,100.624,154.276 +74.3928,326.775,290.813,427.185,136.413,50,38,655,511,155,113,95,181,665.641,330.771,563.575,517.031,424.473,360.355,190.665,328.125,256.825,431.91,354.53,331.952,415.868,42,355.732,346.102,346.046,86.333,118.937,74.778,1216.297,778.279,1310.557,562.807,442.959,385.714,437.868,538.751,205.347,420.06,90.32,72.326,64.896,1321.938,398.498,518.507,1042.374,427.707,450.367,527.666,30,54,389,297,293,155,102.204,154.003 +74.5596,324.566,295.29,427.316,133.429,51,39,647,508,153,110,93,180,668.638,330.094,564.959,523.489,434.834,366.483,190.011,330.234,255.957,433.396,351.866,333.994,417.281,41.5,360.738,344.929,349.411,89.812,118.427,75.345,1219.642,775.348,1309.222,564.668,451.401,391.968,436.707,537.522,204.922,419.607,87.035,71.887,64.512,1318.006,404.24,523.061,1052.968,427.367,457.678,533.591,28,55,391,292,294,158,102.716,157.12 +74.7264,327.241,298.758,428.119,134.08,54,38,650,504,149,109,94,183,664.224,330.123,565.753,527.427,437.336,364.901,194.36,330.489,259.542,432.235,351.046,330.58,412.752,41,359.833,350.259,345.89,90.392,117.988,76.038,1227.165,781.868,1323.271,567.37,453.315,391.689,437.443,536.699,202.771,420.131,90.106,72.977,67.683,1320.282,404.799,521.868,1052.532,430.521,458.216,531.045,28,54,391,295,295,156,103.398,155.323 +74.8932,327.002,296.189,430.202,136.357,53,38,646,510,151,110,94,187,677.63,330.321,561.7,525.315,439.925,370.335,193.664,332.013,256.184,435.731,346.704,333.229,419.275,40.5,361.529,351.504,354.572,86.559,118.894,76.152,1226.745,782.175,1328.281,575.677,452.754,393.264,439.486,535.471,205.191,418.233,89.552,73.77,64.213,1321.698,404.707,529.2,1053.746,429.616,464.139,540.619,28,53,390,295,288,154,101.721,157.927 +75.06,330.401,294.293,432.682,136.965,51,38,652,509,154,111,93,185,672.706,330.409,568.65,536.821,444.332,375.363,194.545,337.222,256.284,433.792,349.077,337.496,419.253,41,361.091,350.33,355.251,90.718,117.634,77.823,1239.466,783.478,1329.278,579.357,457.859,397.395,445.072,538.572,205.064,419.621,88.016,70.188,64.626,1331.358,401.921,528.888,1051.412,438.439,461.518,536.32,28,54,390,292,293,155,101.906,156.979 +75.2268,327.656,291.914,432.805,135.706,51,39,646,500,150,111,95,186,672.492,329.763,570.525,540.505,449.786,376.316,192.967,337.081,253.695,432.929,344.992,334.589,415.895,40.5,359.027,351.362,354.205,88.143,118.271,76.336,1243.194,776.908,1338.748,581.121,463.519,401.973,441.534,543.575,200.875,420.754,89.139,74.096,65.195,1327.483,406.461,533.358,1059.785,436.276,461.461,539.883,28,53,394,294,289,155,101.831,159.144 +75.3936,330.501,297.258,432.625,136.866,52,39,644,503,148,110,95,187,669.014,331,566.56,540.087,450.432,379.923,197.69,336.048,251.632,434.811,349.686,333.437,415.528,41,367.087,353.625,358.489,90.746,118.625,76.817,1236.665,786.951,1337.563,588.372,466.286,401.084,440.716,543.735,202.134,418.261,89.424,71.83,63.972,1330.354,409.148,530.204,1063.038,431.765,463.983,544.776,28,54,396,300,291,154,103.228,157.161 +75.5604,334.868,300.433,436.348,133.019,52,39,647,503,150,109,94,190,673.608,331.206,573.122,544.443,457.129,389.066,202.348,339.299,254.378,432.745,351.994,338.186,416.644,41,371.06,354.021,357.174,88.158,120.452,77.412,1229.197,791.367,1336.119,591.414,469.035,409.444,440.099,550.927,201.837,417.95,89.225,71.335,64.341,1326.79,412.387,526.314,1063.972,435.753,462.226,549.4,28,54,394,296,290,153,100.996,158.238 +75.7272,331.91,300.985,443.235,135.197,53,39,642,506,148,111,94,194,668.513,330.636,567.431,552.394,463.69,386.835,198.155,342.379,252.173,435.335,350.621,338.656,419.139,39.5,366.747,355.067,356.326,88.299,121.599,77.285,1252.673,785.943,1333.491,597.366,473.181,411.534,437.882,556.631,200.294,421.816,89.466,70.23,65.578,1348.599,413.915,536.809,1067.875,438.92,458.053,551.252,28,51,391,296,293,155,102.998,157.644 +75.894,334.486,302.003,443.999,136.441,52,38,642,506,152,110,94,193,669.267,328.295,571.684,555.327,468.519,391.32,200.657,343.044,253.923,441.109,347.906,339.149,414.282,40.5,364.046,358.461,359.423,86.262,119.347,75.727,1248.271,792.601,1336.205,601.539,472.872,417.288,442.496,560.113,201.186,415.698,89.324,73.827,64.882,1352.531,415.697,537.177,1072.543,439.533,462.68,553.883,28,53,397,298,287,157,103.569,159.122 +76.0608,335.071,302.993,447.188,135.437,53,38,642,505,150,110,95,194,670.808,334.054,566.703,563.61,471.351,398.727,199.918,346.668,254.008,437.91,352.944,343.748,415.344,41,368.274,362.378,361.077,87.111,117.804,75.982,1240.185,787.153,1344.653,606.448,476.262,416.403,438.264,552.963,196.997,420.371,88.471,72.241,65.436,1345.304,414.593,533.542,1066.504,435.569,460.267,552.086,29,53,396,299,287,156,103.683,157.375 +76.2276,342.146,299.643,446.293,138.789,51,38,646,501,152,111,95,196,676.356,324.929,567.053,564.036,473.609,403.178,199.804,349.763,249.641,444.902,350.607,340.254,409.799,40,369.575,357.683,361.473,88.511,120.452,75.585,1258.443,786.709,1351.677,605.193,479.217,419.247,438.864,557.381,198.936,419.876,88.741,72.92,64.185,1345.176,417.054,536.059,1068.583,438.355,466.803,558.294,29,51,397,300,287,155,103.157,155.62 +76.3944,336.682,304.53,446.792,139.086,51,38,636,507,152,111,95,196,674.968,329.302,566.464,569.018,474.562,406.52,202.213,351.285,251.96,437.854,347.392,341.796,414.749,40.5,369.024,357.485,361.572,87.238,119.234,76.846,1256.151,788.178,1344.654,610.852,487.434,421.352,441.203,563.009,197.435,417.666,88.414,73.076,64.37,1358.57,421.708,536.554,1083.858,438.227,468.786,561.532,28,53,400,299,283,159,101.75,158.026 +76.5612,337.018,301.317,448.807,133.868,51,39,649,504,150,111,95,199,669.076,329.106,570.402,576.216,482.763,414.069,205.035,353.515,256.142,440.161,347.213,345.14,417.691,39.5,369.222,361.261,362.717,88.016,119.716,76.704,1259.106,788.372,1353.084,614.347,485.341,425.13,446.738,579.169,196.954,421.094,89.694,70.414,65.237,1355.529,424.791,540.232,1078.766,438.595,469.041,564.063,28,51,405,298,285,155,101.252,158.422 +76.728,336.046,305.73,451.143,138.336,51,37,637,502,149,113,97,201,668.503,326.334,567.568,577.019,488.639,415.533,205.456,353.354,254.805,441.746,351.811,344.37,417.595,40,371.329,358.857,362.915,89.699,119.277,77.044,1266.492,796.061,1357.178,627.574,489.399,425.968,438.482,567.015,195.879,428.515,90.789,70.726,63.744,1358.683,425.173,545.974,1083.759,443.219,474.255,566.467,28,52,402,307,281,160,102.6,160.261 +76.8948,335.185,306.924,454.945,140.189,51,38,640,508,148,109,97,204,668.981,327.713,569.122,593.009,491.283,420.287,208.897,362.801,254.748,439.948,351.583,351.726,418.992,38.5,372.205,363.311,362.109,93.419,119.546,74.792,1260.652,798.434,1357.963,626.324,496.354,429.132,442.34,568.232,195.496,420.952,88.812,72.127,64.882,1365.826,427.719,541.434,1080.803,437.577,471.195,571.275,27,50,403,302,282,155,102.233,160.285 +77.0616,339.859,306.508,454.462,138.888,52,39,640,509,149,110,98,206,668.57,331.559,563.69,591.738,495.009,418.403,207.052,361.838,259.271,438.561,351.938,350.084,422.297,40.5,375.882,361.331,364.782,90.378,119.291,75.217,1259.961,800.08,1360.57,629.294,493.577,423.607,440.005,572.28,193.062,427.311,88.357,72.906,64.27,1373.025,428.808,540.543,1079.176,444.817,466.448,571.586,28,53,408,301,284,156,101.508,160.785 +77.2284,341.748,308.921,457.317,138.478,51,37,646,499,150,109,96,206,669.262,329.402,569.867,596.283,502.602,433.063,209.369,363.932,256.227,445.879,350.961,349.7,419.798,40,371.074,361.02,363.382,89.247,120.452,78.659,1273.153,789.632,1368.012,637.129,495.188,431.235,449.53,566.859,193.161,430.044,89.694,72.623,65.834,1376.024,429.982,542.183,1085.117,441.154,467.072,571.247,28,52,409,303,283,158,102.83,157.007 +77.3952,340.569,310.463,463.121,138.676,50,38,639,508,151,111,99,210,668.208,330.509,566.466,606.07,504.181,429.195,208.857,368.192,256.142,445.85,352.802,357.792,419.253,38.5,373.308,362.717,362.717,91.057,121.882,76.095,1265.443,796.958,1363.867,642.636,496.383,433.684,454.356,582.036,194.081,431.149,89.196,71.136,64.441,1364.652,428.808,539.411,1076.984,437.478,465.244,576.408,27,50,412,307,283,156,102.347,159.625 +77.562,344.332,308.114,459.114,139.821,51,39,643,507,148,111,100,207,670.517,333.677,571.42,606.57,509.498,442.138,214.56,370.202,256.213,450.662,358.047,347.505,421.51,39.5,372.488,361.232,367.567,90.76,118.498,77.016,1271.438,797.929,1363.856,643.087,503.902,436.361,456.39,577.332,192.864,431.39,89.011,72.227,66.503,1371.738,429.741,538.916,1075.796,443.7,463.062,573.241,28,51,407,308,279,159,102.347,159.002 +77.7288,339.325,308.893,459.723,142.805,51,39,641,508,153,112,100,210,673.002,328.252,565.372,617.007,523.198,442.556,214.059,368.461,259.044,447.266,356.683,356.124,422.453,40,371.088,366.012,364.4,88.03,118.512,75.302,1268.81,800.524,1376.099,656.364,504.34,439.551,458.038,570.242,193.6,428.925,89.779,72.609,63.716,1376.321,432.429,543.57,1077.521,434.183,465.131,578.953,29,51,411,309,285,159,100.74,159.087 +77.8956,335.511,312.463,462.219,140.57,51,38,638,504,147,113,99,210,670.393,325.442,564.679,620.601,527.969,447.351,216.706,375.448,258.347,450.096,357.015,359.119,426.87,39.5,375.331,361.812,367.822,89.077,121.387,77.341,1265.976,802.871,1371.733,657.107,504.497,432.992,454.574,578.17,193.444,429.237,88.67,72.722,63.844,1376.391,431.849,537.12,1084.466,443.841,462.439,575.899,28,51,415,316,283,159,102.02,158.606 +78.0624,334.295,314.308,460.362,139.029,52,39,636,506,148,111,102,215,667.22,325.428,565.802,620.32,534.672,452.443,218.54,380.136,258.773,451.214,358.368,360.352,429.676,38.5,370.579,367.327,366.224,92.344,119.886,77.058,1273.534,805.965,1371.599,656.957,506.357,441.274,456.896,577.101,193.742,428.685,90.021,70.442,64.867,1380.026,435.979,543.216,1083.872,437.28,463.147,579.943,27,50,418,317,282,158,102.219,159.554 +78.2292,341.771,312.137,463.667,140.768,51,40,636,510,147,110,101,216,667.015,326.086,566.823,635.896,532.996,458.497,214.603,384.78,258.674,454.215,359.164,364.911,430.604,39.5,376.193,366.563,364.994,92.174,120.976,75.996,1267.038,806.836,1376.623,667.482,509.676,438.896,457.699,582.442,196.247,426.943,89.893,71.618,63.844,1382.049,433.39,548.633,1086.885,433.123,461.844,578.275,27,52,420,315,285,158,100.314,157.375 +78.396,339.305,314.113,468.682,143.851,52,39,643,510,149,112,102,219,671.256,324.202,565.902,637.437,538.434,457.6,218.946,390.418,260.936,455.885,362.263,369.503,432.579,40,376.759,366.521,364.442,88.695,121.132,75.203,1277.701,806.624,1379.94,668.51,516.407,444.758,456.35,583.291,192.609,430.795,90.448,72.694,63.147,1379.333,438.256,545.21,1078.766,438.241,460.469,578.501,28,52,424,317,284,160,102.915,155.988 +78.5628,342.459,312.005,462.957,143.017,50,39,641,512,152,109,101,222,667.048,330.447,569.263,644.875,546.708,459.949,220.285,389.952,261.803,456.649,367.113,369.585,433.376,39.5,374.171,366.323,368.529,89.925,119.404,75.684,1276.618,808.836,1371.776,672.066,515.299,444.399,460.738,581.409,189.51,439.717,87.575,73.529,65.735,1375.911,438.143,542.509,1085.272,434.523,456.658,580.678,28,51,422,320,283,159,102.872,155.182 +78.7296,342.501,309.303,471.012,144.728,50,39,641,513,153,111,101,221,670.254,327.613,564.074,657.48,556.165,465.621,225.231,393.168,262.557,456.791,362.418,375.67,437.919,38.5,376.547,370.113,368.119,87.804,121.684,76.449,1270.5,800.718,1379.585,682.075,518.305,443.977,458.87,586.102,194.874,436.729,87.149,72.085,64.54,1375.713,436.12,544.8,1081.185,438.524,458.415,580.466,27,50,426,319,286,160,100.556,157.969 +78.8964,342.672,310.151,470.003,142.536,50,38,640,512,151,113,103,223,666.619,325.161,565.894,659.15,561.37,470.619,226.942,399.173,266.114,460.117,369.687,375.023,437.789,40.5,374.397,370.367,362.929,90.986,120.126,76.888,1275.043,802.432,1370.121,679.857,521.978,451.285,454.598,586.321,191.463,440.015,88.144,70.485,65.706,1378.598,439.529,541.179,1084.056,436.969,453.413,579.505,28,53,428,322,285,161,98.964,159.993 +79.0632,341.363,310.491,465.813,145.633,51,38,645,516,151,112,103,226,663.127,324.67,567.963,672.152,565.138,478.197,223.618,399.836,262.7,458.984,365.364,376.264,439.448,39.5,375.104,365.616,367.624,91,122.35,75.628,1270.849,799.983,1378.405,682.33,523.11,441.587,463.32,590.502,194.577,435.624,88.955,72.467,65.322,1382.233,437.393,550.373,1076.461,431.709,449.956,585.529,28,51,434,327,284,160,100.442,155.465 +79.23,342.685,316.801,470.672,144.883,51,39,641,515,150,111,103,226,671.638,323.377,557.648,672.708,571.536,486.867,227.273,402.84,267.792,462.579,372.247,379.258,443.107,39,377.848,366.238,366.648,88.992,120.509,75.84,1279.375,809.043,1379.694,690.891,521.959,448.566,462.089,582.334,194.364,437.31,90.476,71.193,65.152,1390.578,437.577,542.99,1075.598,430.394,451.104,576.663,27,51,430,333,285,161,101.565,156.101 +79.3968,341.819,314.226,472.845,147.443,50,37,643,517,152,113,107,229,663.893,321.688,556.354,678.654,573.767,487.235,232.455,406.703,260.765,466.415,371.029,381.964,446.147,40,374.015,371.569,366.917,90.859,122.52,77.384,1268.488,802.389,1382.763,692.226,522.322,449.19,461.583,593.476,197.039,434.987,88.67,74.039,65.052,1385.373,436.587,543.188,1079.473,427,454.193,581.668,28,52,435,331,288,161,101.579,154.488 +79.5636,339.205,314.397,472.859,145.802,51,40,635,520,149,112,106,233,663.131,320.1,562.911,679.191,580.992,488.861,231.576,413.68,265.758,465.948,375.84,380.66,444.323,37,376.858,364.994,367.808,89.133,117.676,76.067,1270.331,797.003,1386.621,703.276,525.032,445.634,463.168,586.928,192.822,442.153,88.898,71.618,66.773,1375.019,440.264,544.376,1069.318,426.222,450.565,580.834,26,48,440,332,286,164,100.158,160.941 +79.7304,339.993,315.036,467.694,147.528,52,41,638,519,151,114,107,231,666.605,320.299,560.586,690.166,583.054,497.855,232.344,415.546,270.595,465.849,375.519,389.078,448.583,40,378.71,370,367.171,89.671,120.58,75.84,1270.907,803.873,1374.719,699.309,523.934,444.786,466.443,592.037,199.898,449.277,89.58,71.887,65.82,1382.318,441.509,538.916,1067.14,426.293,447.222,579.222,29,51,443,332,283,163,100.016,155.946 +79.8972,344.402,313.83,474.278,150.709,52,38,649,520,152,113,106,233,667.368,321.707,560.282,696.993,587.524,501.664,232.298,413.573,269.272,469.684,382.487,392.783,452.102,38.5,375.062,364.782,367.384,89.841,120.82,76.86,1267.517,799.315,1376.614,696.297,523.039,447.039,469.662,591.783,196.629,443.47,91.031,74.549,62.408,1388.343,435.003,541.024,1069.205,421.471,444.699,574.16,27,50,452,340,286,162,97.358,156.88 +80.064,339.339,311.552,472.014,150.737,52,39,641,524,150,114,107,235,661.238,315.925,558.814,705.402,593.064,502.386,233.758,422.37,271.007,466.302,380.249,393.746,453.696,38.5,375.09,372.686,363.82,90.279,122.279,77.54,1271.635,799.281,1382.731,710.94,528.998,448.595,462.056,591.238,196.898,448.229,89.936,72.963,63.829,1384.835,436.898,537.162,1073.038,421.287,437.048,575.941,27,50,447,346,286,165,101.238,156.045 +80.2308,340.74,316.376,469.989,152.972,52,40,647,521,153,115,110,238,664.351,319.77,563.189,701.15,602.331,505.379,234.675,423.984,272.344,465.537,383.52,398.136,458.439,38.5,373.464,368.812,364.584,90.548,123.639,76.265,1267.597,793.25,1370.107,712.187,526.386,446.242,462.593,595.356,198.879,454.135,87.405,72.283,66.872,1379.376,439.302,537.389,1062.388,422.659,448.341,573.849,27,50,453,348,288,165,100.3,156.752 +80.3976,338.566,311.207,471.324,152.745,52,39,643,520,153,114,108,241,663.661,316.359,559.337,710.961,605.733,513.965,238.599,426.477,276.128,476.18,386.211,399.035,462.476,39,373.238,365.531,367.652,90.746,121.259,77.157,1258.991,790.519,1370.721,713.969,522.177,444.035,459.197,596.077,197.648,449.9,89.964,73.812,65.394,1372.657,438.906,534.701,1071.058,410.653,441.568,574.386,27,51,450,352,289,160,99.94,155.224 +80.5644,339.546,312.656,474.791,152.774,51,39,645,524,157,115,110,240,662.354,322.556,557.435,723.208,613.537,517.314,238.977,428.244,273.312,473.137,389.333,403.107,464.153,39,372.333,366.266,367.454,90.52,119.999,75.982,1268.167,797.275,1371.839,712.268,522.954,448.711,469.133,591.604,196.176,448.158,90.433,71.547,68.053,1373.775,438.44,534.786,1070.959,412.195,438.239,572.873,28,50,461,350,283,164,96.349,152.391 +80.7312,336.719,309.161,471.822,154.075,53,40,646,522,154,115,109,242,660.083,317.096,558.359,726.372,612.8,518.089,243.688,433.698,274.72,474.836,392.684,406.744,468.184,39.5,374.85,363.679,359.988,90.123,120.056,77.426,1269.989,794.933,1372.746,721.732,524.409,446.117,462.193,591.726,199.544,452.053,91.742,71.674,65.067,1369.178,438.864,537.148,1062.713,409.635,436.411,570.186,29,50,456,354,286,165,100.115,154.064 +80.898,340.441,305.582,477.433,153.127,53,39,651,524,152,116,109,246,657.135,318.257,561.809,725.942,620.943,521.114,244.968,435.653,275.033,476.308,392.374,409.31,469.895,39.5,377.225,365.743,363.057,90.01,120.707,77.455,1274.751,792.231,1372.025,722.735,524.715,446.667,466.187,598.981,198.808,456.996,91.429,72.212,65.749,1375.288,444.224,531.958,1061.992,411.742,431.183,565.888,28,51,459,357,291,164,101.565,152.72 +81.0648,334.716,311.665,471.055,153.396,52,37,649,524,152,118,113,244,661.391,314.889,558.265,734.581,624.858,528.941,245.029,435.412,279.813,477.143,401.535,414.098,470.195,38.5,370.608,365.05,364.075,89.544,123.044,74.58,1266.448,793.296,1378.863,720.481,526.93,447.021,463.456,598.901,201.144,457.619,90.035,72.651,64.427,1367.354,438.991,532.339,1058.159,404.828,428.405,566.326,27,50,466,359,291,165,98.992,150.427 +81.2316,332.372,307.879,471.239,155.178,51,41,651,530,155,115,111,248,659.391,311.818,550.988,741.128,629.337,532.24,247.199,442.661,277.835,481.714,402.515,419.139,475.072,38.5,373.238,364.273,369.83,87.252,122.293,78.503,1259.929,788.518,1382.244,729.226,534.523,445.253,459.848,598.095,197.167,457.42,89.609,71.802,65.792,1361.583,434.395,530.034,1049.856,405.464,425.402,562.381,27,50,465,363,289,167,98.708,154.007 +81.3984,332.036,308.473,469.741,153.283,53,40,650,532,154,117,114,247,665.11,314.419,556.871,742.936,635.624,530.23,246.485,443.977,281.178,481.87,399.949,421.269,477.729,39,371.979,362.279,359.507,90.138,122.336,77.186,1250.848,787.297,1373.423,728.78,524.554,452.223,465.976,594.471,202.205,467.207,89.708,72.312,66.304,1361.13,436.134,529.893,1062.218,400.812,424.268,561.999,28,50,468,366,294,168,99.044,150.243 +81.5652,332.176,306.021,469.266,156.45,52,39,652,530,154,117,110,249,653.089,316.47,559.674,751.136,639.532,541.055,244.712,447.148,281.164,479.69,404.339,421.972,475.114,40,373.266,360.412,361.968,88.794,120.084,76.492,1260.437,782.291,1370.477,726.126,525.684,444.177,466.174,593.409,200.025,463.057,88.528,72.665,68.209,1347.609,441.085,523.839,1050.634,401.632,420.06,560.401,29,51,467,370,293,165,97.628,151.937 +81.732,335.801,304.974,475.041,157.002,53,41,654,537,154,120,115,250,649.334,313.024,550.492,757.509,643.332,541.937,248.01,452.361,281.591,479.506,407.214,427.577,485.406,38.5,370.099,361.586,363.636,90.59,122.109,76.973,1254.659,777.911,1365.712,729.805,524.602,442.414,465.927,600.518,200.945,465.564,91.599,72.779,66.616,1356.237,436.361,524.49,1054.142,400.557,419.989,554.985,27,50,472,376,291,168,98.935,149.847 +81.8988,332.418,302.417,472.865,155.941,52,39,658,533,153,120,114,254,649.702,312.742,556.424,764.478,646.471,544.534,248.042,452.205,285.46,487.729,409.94,430.597,487.646,39,372.347,364.032,361.02,90.972,123.766,76.732,1250.447,779.112,1362.459,732.468,526.987,441.443,466.965,598.356,205.121,468.85,93.149,73.034,66.46,1349.235,432.598,521.802,1050.578,399.27,419.564,553.628,28,50,480,380,294,169,99.386,151.276 +82.0656,330.345,300.838,471.744,155.531,53,41,656,535,157,120,112,254,648.582,313.143,558.58,764.882,653.105,550.827,247.782,454.363,288.22,483.71,413.092,427.478,484.811,38,368.784,360.893,361.473,88.978,120.098,76.846,1263.968,773.351,1360.917,731.505,522.644,448.991,465.339,604.611,202.516,473.948,89.836,73.303,65.408,1340.367,432.669,520.699,1045.415,392.78,414.308,551.04,27,49,480,380,294,169,100.115,151.271 +82.2324,331.08,300.171,470.684,154.725,52,40,653,541,158,120,113,254,644.13,311.649,554.08,776.431,656.545,552.125,252.189,457.451,283.696,488.989,415.711,431.05,489.654,38,367.412,362.675,360.257,88.822,120.792,77.936,1256.652,774.391,1370.23,735.351,524.044,439.307,463.879,594.741,203.578,474.5,89.865,71.32,66.275,1344.639,436.134,522.623,1046.745,393.6,412.437,549.47,28,48,481,384,300,171,100.001,152.196 +82.3992,335.119,301.489,472.71,154.64,53,41,658,539,158,121,114,251,648.504,311.378,549.786,769.944,662.006,554.802,252.388,453.673,287.964,490.121,419.168,436.219,491.764,38,369.703,361.176,361.317,86.078,121.543,74.721,1246.14,767.848,1366.552,739.845,520.581,441.528,458.703,604.618,207.838,472.504,90.945,72.68,65.777,1335.219,429.798,513.613,1042.29,384.96,409.419,549.513,27,49,485,385,292,168,97.821,149.38 +82.566,328.44,301.288,470.821,157.454,53,41,657,543,160,121,116,252,645.007,312.78,544.302,784.121,670.91,552.663,247.952,461.112,288.476,493.136,425.866,436.474,498.225,38.5,369.095,355.59,357.697,88.78,120.31,76.152,1248.719,765.915,1362.285,744.283,525.474,438.301,462.078,604.492,208.178,475.874,90.405,71.49,66.218,1334.399,431.311,516.88,1022.8,387.817,405.565,542.895,27,50,483,388,294,168,98.225,148.99 +82.7328,324.476,302.925,467.183,158.642,51,40,662,548,159,122,115,253,640.528,311.574,546.221,790.244,668.581,561.402,258.328,460.754,291.392,492.329,418.502,441.481,499.129,38,365.828,356.043,352.904,87.634,121.104,78.899,1249.431,773.559,1364.84,735.226,520.075,435.044,461.065,604.747,204.498,480.321,91.159,72.17,66.119,1328.515,428.2,515.664,1022.503,387.11,404.758,538.455,28,48,493,394,301,166,, +82.8996,326.246,299.283,460.704,160.466,50,41,661,548,156,123,119,253,644.52,310.691,548.441,789.488,675.942,562.037,257.136,463.811,290.411,491.183,427.917,442.167,502.015,38.5,361.515,355.916,358.065,89.614,122.491,76.832,1254.201,762.445,1361.587,733.553,516.361,432.875,456.097,607.195,210.867,482.97,93.931,75.143,65.664,1323.551,429.572,512.354,1027.17,383.9,402.718,529.094,28,49,488,393,300,166,, +83.0664,327.13,300.756,468.824,158.189,53,39,662,545,157,127,118,256,644.733,309.107,548.218,793.454,678.307,567.704,257.364,466.132,295.646,498.287,431.772,449.571,505.148,37.5,364.669,358.447,356.001,88.653,122.067,77.072,1246.547,765.17,1356.414,736.918,516.606,427.386,458.957,607.846,209.055,485.646,91.5,72.807,67.327,1325.432,429.741,509.37,1022.361,379.134,399.374,535.641,27,48,496,395,296,165,, +83.2332,324.175,296.91,462.275,158.317,52,40,659,547,157,125,118,255,641.024,305.441,549.185,797.809,679.559,561.388,253.982,466.132,291.89,487.574,432.952,449.376,505.339,38,359.889,355.364,357.457,88.582,121.16,76.902,1255.345,755.725,1362.287,737.544,520.858,431.759,460.244,607.662,212.367,483.692,89.395,73.501,66.83,1321.641,423.009,510.841,1020.537,380.195,399.26,525.757,27,49,494,393,300,169,, +83.4,318.467,299.428,462.276,159.787,52,42,670,546,165,124,114,253,638.848,309.995,547.401,803.129,687.664,566.697,255.817,470.749,293.839,495.301,432.296,451.07,506.848,38.5,361.162,356.198,360.653,89.303,121.344,76.591,1259.89,756.923,1348.022,740.9,514.538,429.961,459.41,603.648,210.937,484.782,91.301,74.407,68.252,1311.458,424.098,506.584,1025.105,373.11,387.699,520.963,28,49,500,400,297,167,, +83.5668,321.578,295.92,465.824,156.521,52,40,667,551,158,120,116,259,635.474,308.885,547.814,805.236,689.756,571.591,259.481,468.821,295.589,499.391,435.767,451.076,513.302,39,362.038,359.041,350.387,88.44,122.931,75.741,1251.561,759.181,1351.991,733.354,510.358,429.189,456.769,606.234,213.018,491.849,89.822,72.991,68.181,1305.857,422.457,504.321,1018.486,371.866,394.443,524.753,28,50,501,404,295,172,, +83.7336,323.706,292.072,469.194,163.124,52,40,671,560,159,124,118,256,636.732,310.106,542.95,810.336,688.104,576.485,257.437,466.089,293.512,498.783,440.737,457.364,515.742,39,360.031,353.455,351.956,89.119,123.582,76.123,1266.184,756.101,1356.614,737.686,511.465,428.703,459.54,601.817,211.022,492.317,91.144,73.189,66.588,1308.544,425.272,501.266,1015.332,369.335,393.522,518.828,28,50,502,405,302,168,, +83.9004,317.995,293.014,464.889,162.573,52,41,673,553,161,124,118,259,635.562,303.927,546.65,819.453,690.849,577.682,255.133,472.162,299.088,501.557,440.604,455.905,518.804,38.5,354.219,348.506,351.504,89.727,120.707,77.37,1253.599,750.057,1340.604,739.776,512.084,425.444,459.86,602.921,216.556,489.343,91.343,71.83,67.086,1298.078,423.32,508.507,1014.172,366.054,386.608,514.925,27,50,508,404,299,165,, +84.0672,316.335,293.014,461.86,158.232,53,40,670,556,159,126,117,255,634.97,305.241,541.456,819.697,693.153,576.258,261.189,466.593,299.088,497,440.1,459.627,520.146,38,357.118,351.108,346.866,84.537,121.656,77.398,1249.495,748.676,1333.467,734.782,511.785,420.371,459.223,606.927,215.297,495.447,90.234,71.802,67.541,1294.839,419.006,503.373,1014.497,365.107,385.63,506.611,28,48,512,413,300,167,, +84.234,316.418,288.182,458.926,162.149,54,39,670,553,159,125,118,259,631.095,308.811,543.767,815.278,698.555,584.17,257.238,473.483,299.771,503.425,446.431,460.89,519.115,39.5,356.057,351.829,348.435,87.479,123.341,75.897,1257.743,753.478,1332.302,739.72,508.236,423.165,454.623,616.837,217.278,491.977,90.32,72.878,66.759,1287.131,423.221,492.921,1002.687,365.885,376.647,510.344,29,50,514,411,298,171,, +84.4008,311.858,289.215,459.945,163.025,55,42,673,557,161,125,116,256,629.328,301.813,542.115,825.336,701.468,582.193,257.552,472.125,295.276,500.948,445.34,462.144,519.891,38.5,355.124,351.377,344.66,87.79,120.622,76.109,1250.29,749.398,1334.555,737.713,505.303,422.654,456.659,608.627,216.047,498.095,92.481,73.841,65.28,1284.854,417.069,496.768,1000.269,365.828,380.09,504.051,28,49,510,413,302,171,, +84.5676,314.334,282.636,458.782,164.213,52,40,677,554,160,125,120,253,625.947,305.862,544.948,822.601,700.077,582.277,258.405,472.436,298.121,503.298,446.799,462.264,527.799,39,351.49,346.187,349.637,88.794,119.22,76.676,1253.313,747.751,1331.877,733.463,498.732,417.194,456.956,606.403,216.825,501.537,91.557,70.839,67.598,1279.521,415.202,495.623,997.412,360.13,378.815,499.243,27,51,521,410,304,170,, +84.7344,314.884,286.47,454.888,160.282,52,41,678,559,165,126,119,258,629.788,300.873,535.995,830.528,703.073,581.532,255.831,468.113,298.761,503.34,448.427,460.801,524.508,37.5,356.382,349.171,346.484,88.285,123.511,78.149,1251.968,744.84,1325.704,729.33,503.207,418.539,456.198,602.666,220.647,495.291,91.4,73.501,67.185,1286.466,417.097,492.596,994.3,356.396,375.754,499.795,27,48,519,420,300,169,, +84.9012,310.821,285.225,451.265,165.577,54,41,682,551,165,124,120,258,631.086,299.556,536.195,833.359,705.082,581.862,257.778,471.866,302.132,500.269,453.941,460.919,528.549,37.5,353.427,344.434,344.886,89.247,119.786,77.738,1260.852,749.631,1326,725.913,496.566,413.947,457.194,605.412,219.26,495.673,92.908,72.708,65.607,1279.62,413.745,489.187,992.433,353.851,373.006,490.547,27,48,521,414,303,166,, +85.068,308.164,282.574,451.649,164.015,54,40,680,561,165,127,121,258,628.286,302.944,532.619,833.945,705.697,584.911,258.858,474.585,304.579,499.42,454.361,465.709,526.25,39,351.645,348.223,345.098,88.341,123.27,76.761,1251.138,744.507,1326.674,726.178,493.819,414.547,452.279,595.427,218.75,501.452,89.993,71.462,66.844,1271.191,411.27,487.391,989.76,353.95,373.119,491.466,28,50,524,426,303,169,, +85.2348,306.444,284.055,454.65,160.989,54,41,684,564,162,129,120,255,627.235,302.928,536.422,836.961,708.954,584.104,258.999,474.243,300.824,500.665,462.54,467.419,525.551,38,351.32,345.692,351.094,88.271,122.222,75.458,1239.38,737.992,1321.116,724.315,490.466,408.149,455.076,593.976,220.661,502.896,89.808,71.83,66.688,1266.735,406.956,486.811,992.32,351.716,370.229,488.002,28,48,525,421,305,169,, +85.4016,311.062,280.684,450.845,164.312,54,39,681,561,163,127,118,256,629.812,299.313,534.436,835.965,712.575,582.032,260.449,475.006,304.892,506.723,458.78,474.025,530.102,37.5,347.304,349.284,340.63,87.38,122.676,79.352,1235.362,744.02,1326.453,724.505,489.994,414.697,458.447,586.631,220.349,498.931,94.273,74.067,67.612,1267.584,414.537,485.722,982.547,350.019,368.004,482.232,28,47,518,425,307,169,, +85.5684,301.679,278.342,445.047,161.852,51,40,687,560,162,128,123,256,617.953,305.788,531.868,835.443,716.36,577.842,256.042,478.02,306.329,508.11,456.614,473.707,533.867,37.5,345.027,341.549,343.302,87.818,122.123,78.63,1235.609,745.768,1315.559,723.459,482.945,402.527,454.201,592.882,219.076,499.78,91.244,73.147,66.602,1258.659,409.954,485.68,980.199,350.189,364.788,475.106,27,48,523,425,307,173,, +85.7352,306.144,278.632,445.382,164.793,55,40,688,564,162,127,121,254,625.31,302.515,529.877,848.535,712.681,585.586,256.482,465.929,302.061,501.146,460.692,472.964,531.136,39,352.253,342.03,337.363,88.44,120.48,75.684,1218.249,740.092,1319.984,720.133,483.738,412.135,449.29,588.541,219.698,497.16,92.481,73.204,67.313,1257.118,405.216,481.422,977.398,348.124,363.994,475.021,29,49,527,424,306,170,, +85.902,307.41,275.351,440.844,157.836,54,42,681,570,164,127,121,254,620.236,298.247,536.258,839.023,712.049,589.947,258.672,469.845,304.593,500.085,462.753,468.694,532.849,38,347.856,340.036,339.626,89.473,124.942,76.393,1227.265,738.227,1314.084,719.258,484.258,407.575,454.34,589.05,221.68,499.596,91.528,73.784,66.56,1259.989,407.069,483.501,976.819,344.448,364.816,475.205,27,49,526,427,310,168,, +86.0688,301.502,273.964,445.341,161.951,53,42,693,565,162,128,123,253,619.404,297.522,529.933,848.87,716.46,584.944,256.312,466.932,306.571,508.124,468.51,470.574,535.881,38.5,345.381,341.761,340.46,87.79,122.024,75.316,1226.18,730.671,1311.262,721.98,483.433,401.543,450.77,582.787,224.468,502.797,90.903,74.025,67.782,1249.975,405.4,481.479,973.014,348.761,360.211,468.615,28,49,535,426,306,169,, +86.2356,301.942,271.899,437.783,162.446,53,41,692,562,161,131,122,249,619.876,298.735,528.932,842.485,710.775,581.47,253.184,466.04,305.219,508.832,468.636,471.767,532.806,37.5,349.114,341.521,336.614,89.43,121.344,75.16,1217.21,732.811,1309.541,715.966,479.122,402.816,455.418,588.594,223.152,500.616,90.775,73.784,67.214,1248.872,404.184,479.527,970.129,340.262,360.452,463.313,27,48,534,427,309,167,, +86.4024,297.861,271.319,437.911,163.709,54,41,698,569,162,132,121,253,617.3,297.943,529.477,847.945,717.339,583.639,249.943,466.528,307.012,503.496,468.496,474.633,535.031,38,350.415,341.605,337.901,84.791,120.636,75.288,1211.968,733.974,1309.446,714.722,472.51,405.254,449.827,587.18,221.609,499.256,91.585,73.812,66.688,1245.435,399.799,485.255,958.163,340.955,359.772,459.99,27,49,534,429,303,168,, +86.5692,298.174,269.579,436.078,161.894,53,41,690,569,165,132,120,252,612.807,295.902,531.724,845.997,710.087,578.651,255.092,465.691,305.674,508.449,464.69,468.892,529.44,37,345.749,337.957,339.711,84.947,122.817,76.69,1212.358,730.853,1322.723,712.135,474.795,395.02,451.161,586.642,223.095,495.673,89.779,75.044,67.455,1237.034,398.357,472.342,962.067,343.599,360.962,458.123,27,47,533,426,307,170,, +86.736,297.296,271.383,433.034,162.092,55,41,700,565,164,130,121,248,614.079,302.241,524.062,850.973,717.559,582.326,254.052,462.437,307.495,502.831,474.076,465.511,537.24,37,341.125,337.024,337.01,85.23,121.783,74.098,1216.714,729.873,1304.235,706.793,471.199,401.578,445.893,591.781,227.482,496.481,91.315,76.304,66.972,1239.947,394.495,480.135,958.701,338.537,358.554,455.351,28,46,535,432,307,169,, +86.9028,294.853,267.261,430.978,163.733,55,41,700,566,164,130,122,247,614.89,296.072,526.593,850.52,717.282,583.32,249.929,459.167,306.542,508.35,472.837,471.47,535.663,37.5,342.001,340.729,333.574,87.521,122.562,75.005,1202.707,727.758,1308.702,701.101,468.496,396.276,447.167,584.671,225.133,495.744,89.566,74.662,67.64,1235.676,395.132,476.26,963.41,337.547,353.892,454.63,28,47,532,433,308,169,, +87.0696,301.416,267.301,431.689,163.365,53,40,696,567,164,132,123,243,612.41,301.942,524.282,846.046,714.623,580.772,254.45,461.716,306.884,510.997,470.535,472.88,530.655,37,341.224,338.65,331.297,85.428,119.985,75.628,1211.318,720.355,1303.101,700.574,462.236,390.619,450.821,580.573,222.147,498.279,91.386,74.619,66.09,1229.509,395.16,468.212,956.013,337.604,355.791,447.362,26,48,534,433,307,169,, +87.2364,294.384,263.949,429.686,161.64,55,41,700,571,167,132,119,245,614.767,296.917,522.773,854.509,720.026,581.116,248.308,454.659,305.347,506.723,471.677,470.407,534.687,37,341.351,333.644,336.741,86.446,120.778,75.387,1205.144,728.136,1300.11,704.442,465.82,388.408,449.884,582.711,226.945,500.701,93.121,74.747,66.531,1224.616,395.004,473.389,955.886,335.921,350.945,448.932,27,47,530,433,311,169,, +87.4032,291.998,263.171,428.961,164.595,53,40,697,572,166,131,120,242,612.528,297.665,520.932,845.458,712.073,576.782,253.611,456.665,309.914,503.85,470.677,467.519,528.587,37,337.788,338.735,334.988,86.064,120.636,75.84,1201.892,727.014,1289.915,697.18,463.165,388.493,451.579,578.758,227.298,498.817,90.22,76.262,67.74,1230.075,390.436,471.79,953.425,335.157,351.03,445.524,27,47,534,432,310,166,, +87.57,291.093,264.187,422.391,161.272,52,41,707,573,165,133,123,244,610.745,301.149,519.844,855.25,716.337,573.225,251.237,458.513,306.67,506.072,473.247,472.688,531.448,38.5,340.347,333.206,334.663,85.654,121.557,73.574,1202.416,724.59,1301.322,694.601,457.26,384.314,446.006,578.673,226.053,492.997,90.021,72.411,67.327,1222.508,391.737,467.378,953.694,335.723,356.938,434.721,28,49,526,431,310,164,, +87.7368,288.776,261.771,422.789,161.131,55,42,700,570,168,134,121,237,617.396,296.14,521.554,850.809,713.656,574.836,249.076,449.886,311.905,507.784,471.045,465.878,531.292,38,340.404,331.226,335.37,88.186,121.882,74.339,1193.54,726.588,1289.787,697.304,457.326,389.105,449.808,573.554,226.662,498.336,89.95,74.35,66.787,1222.551,387.282,467.307,955.278,331.142,352.504,433.49,28,48,532,426,311,170,, +87.9036,289.89,263.765,424.568,161.583,53,42,705,570,166,132,121,239,611.822,298.371,515.128,847.707,712.959,571.238,249.204,445.242,305.817,507.43,467.859,467.122,528.153,36.5,337.42,331.226,334.139,86.036,119.234,77.341,1190.223,722.233,1287.597,687.777,457.171,384.155,444.492,569.775,227.681,492.274,91.301,72.793,66.943,1218.506,389.248,464.973,948.446,338.198,350.336,429.474,27,46,531,433,307,166,, +88.0704,288.412,260.31,416.44,160.593,55,42,710,570,165,132,119,236,607.714,293.901,523.303,838.352,703.745,568.055,246.132,449.787,309.188,506.977,466.145,467.66,528.601,37,340.799,335.073,333.517,86.757,120.339,74.183,1193.519,722.482,1291.554,690.294,454.673,384.409,450.756,570.567,230.228,497.727,92.012,74.846,65.223,1221.801,380.691,470.956,947.315,333.517,350.251,433.731,26,48,529,436,308,165,, +88.2372,289.586,261.163,420.401,162.916,55,42,715,573,166,134,118,238,608.029,297.833,518.592,842.478,713.187,568.085,243.617,447.082,307.154,507.345,471.055,463.581,526.838,36,337.491,330.237,332.471,85.286,118.257,74.226,1187.303,723.944,1286.064,687.493,447.861,383.885,454.385,577.349,228.388,492.543,91.386,73.487,65.735,1214.998,383.053,467.264,949.776,334.45,351.639,432.26,27,45,528,430,311,167,, +88.404,283.524,259.836,416.455,164.92,54,43,709,571,166,134,122,234,609.231,299.125,513.01,844.595,707.521,568.115,241.302,445.978,308.491,500.991,466.527,467.137,532.595,36,337.264,332.541,334.069,86.969,120.523,73.914,1184.056,721.221,1279.236,680.981,451.214,383.365,448.597,572.336,223.888,494.569,91.144,71.108,66.801,1216.483,383.732,462.427,951.982,330.138,352.362,429.474,26,46,529,430,309,167,, +88.5708,287.076,255.036,416.185,158.798,54,41,717,574,166,131,118,232,602.994,298.549,517.182,844.255,700.657,562.973,238.722,441.927,309.928,509.199,471.112,459.927,527.007,35.5,337.137,330.364,336.755,87.436,119.489,75.953,1183.097,722.19,1283.875,682.361,451.763,377.5,448.918,573.115,227.95,488.705,92.253,73.402,65.621,1217.431,380.422,469.952,946.452,336.487,353.793,425.656,26,45,522,424,309,168,, +88.7376,288.682,258.221,415.957,162.531,54,41,705,573,166,134,118,231,609.541,296.818,512.745,845.012,696.432,561.798,238.656,441.728,306.315,503.213,462.476,457.123,519.481,36,337.872,331.594,332.683,86.757,120.41,72.54,1179.035,722.039,1278.151,677.513,449.67,382.371,449.668,571.077,230.115,488.748,91.372,72.92,66.119,1197.799,380.139,464.45,936.509,333.772,349.188,424.03,27,45,524,424,305,162,, +88.9044,286.812,253.341,415.394,157.539,54,41,717,576,168,134,118,233,612.072,300.778,511.206,842.669,700.403,560.099,238.651,436.361,304.238,505.944,462.328,456.217,522.849,37,334.111,325.994,329.756,84.692,118.229,74.877,1169.157,723.939,1270.036,675.062,451.763,376.736,454.948,571.825,226.11,490.023,90.846,72.439,66.048,1196.739,375.571,463.219,949.691,331.311,352.589,421.315,27,47,528,419,307,163,, +89.0712,283.949,252.476,412.917,159.151,54,41,710,573,169,135,116,230,606.195,299.064,511.5,842.081,693.195,555.54,235.01,434.663,305.703,502.533,461.91,451.989,516.974,37,333.164,332.146,332.442,86.616,117.025,73.489,1172.844,714.359,1273.853,671.639,448.851,379.14,445.566,572.798,228.289,491.552,92.268,74.124,65.095,1206.37,378.046,464.464,944.316,334.267,353.708,417.752,27,47,522,426,310,161,, +89.238,287.65,251.684,408.916,159.377,55,42,716,573,170,133,118,227,604.795,295.9,507.156,845.02,691.267,553.046,234.874,431.301,303.683,501.415,458.552,454.177,518.45,37.5,333.574,329.035,332.329,86.602,119.149,71.747,1167.44,719.107,1271.874,665.477,445.818,378.916,455.377,572.999,229.648,487.912,93.092,72.807,66.503,1206.13,378.159,464.549,947.188,334.677,355.309,414.146,27,48,525,421,309,162,, +89.4048,278.644,253.24,403.915,158.486,55,41,715,578,171,135,117,229,604.697,297.963,512.53,845.26,689.015,554.862,235.241,432.99,304.963,503.623,461.018,448.864,514.226,37,334.705,328.017,325.556,85.711,117.464,73.05,1167.831,725.243,1263.074,666.074,444.953,374.825,457.52,571.728,227.582,487.516,91.699,73.926,67.811,1209.213,377.325,464.351,941.954,331.17,348.905,416.508,27,47,521,423,313,160,, +89.5716,282.829,253.735,412.777,154.98,54,41,718,580,170,135,116,222,599.897,300.806,508.308,841.126,687.317,547.218,231.278,421.564,303.839,500.425,459.075,450.056,508.564,37,336.374,331.566,329.883,86.135,120.339,72.427,1160.687,718.076,1264.219,667.464,444.828,376.265,454.198,575.659,226.124,484.202,89.993,72.637,65.777,1201.972,376.731,462.102,936.693,331.877,348.466,415.885,27,47,523,420,308,162,, +89.7384,280.588,249.299,404.832,156.62,54,41,713,576,167,137,117,223,600.595,296.465,513.747,837.285,683.186,545.722,233.716,423.79,301.322,502.264,456.826,444.111,512.682,38,336.43,334.323,330.293,86.885,119.971,71.96,1167.129,716.294,1276.084,652.993,441.36,372.992,452.704,575.025,227.44,481.723,89.296,74.308,66.048,1197.375,371.356,468.396,934.84,335.186,352.22,409.451,27,49,521,413,309,162,, +89.9052,279.169,251.502,399.824,157.935,55,42,713,570,169,137,116,220,607.743,300.869,513.433,835.103,679.49,543.453,233.033,424.341,306.77,497.552,450.999,446.416,508.324,36,329.827,325.839,328.653,86.687,118.554,72.54,1158.609,717.369,1270.13,658.323,439.321,366.833,446.214,563.072,227.624,481.865,91.997,75.172,65.379,1199.228,374.807,459.344,943.171,331.962,357.363,411.106,26,46,517,415,309,163,, +90.072,277.805,249.582,404.839,156.111,54,40,714,575,168,136,114,220,602.336,301.513,514.169,839.243,682.219,544.572,227.97,420.11,303.583,500.609,453.2,444.111,506.734,37,331.424,324.481,324.595,86.602,118.441,74.934,1157.59,721.983,1255.453,657.916,438.947,377.298,445.352,566.803,223.038,478.65,91.215,73.345,64.711,1197.304,372.827,463.389,943.836,337.663,359.744,404.539,25,49,518,412,312,159,, +90.2388,275.93,246.018,402.921,157.482,56,41,712,574,168,136,115,221,608.802,298.068,515.414,822.435,683.442,535.485,227.856,420.322,302.289,495.768,451.551,437.126,503.727,37.5,334.309,326.461,324.227,84.834,117.067,71.606,1154.256,721.683,1263.865,654.814,438.471,370.774,436.651,565.07,224.468,481.893,89.324,72.453,65.123,1206.384,370.946,466.656,951.134,334.499,353.439,403.101,28,47,515,414,302,162,, +90.4056,274.706,248.071,397.2,156.365,54,40,716,573,167,135,115,216,598.108,303.245,513.282,828.592,682.744,534.364,226.083,419.95,301.08,501.458,451.911,436.94,494.682,36,332.344,326.673,331.241,84.127,116.685,72.356,1149.903,728.704,1245.828,649.713,432.506,368.941,437.458,563.88,223.279,475.223,93.064,72.312,66.289,1196.215,370.055,466.727,942.831,339.937,356.957,410.498,26,46,519,407,306,160,, +90.5724,273.785,243.988,401.316,158.062,54,41,718,578,167,137,113,213,609.017,300.409,508.588,824.971,674.778,535.027,224.386,413.007,304.081,494.325,451.452,436.148,494.067,36,334.945,325.91,326.659,86.276,115.722,73.928,1146.456,718.748,1251.249,641.427,431.177,373.891,439.269,565.769,224.241,472.489,91.116,74.053,64.37,1196.597,366.774,470.546,946.919,339.554,357.59,406.372,26,46,510,411,305,157,, +90.7392,274.083,249.052,399.937,154.485,54,39,722,576,168,138,115,215,600.352,298.343,511.657,822.1,669.617,531.844,222.21,414.33,300.632,496.221,447.209,430.491,493.436,37,333.758,324.863,328.328,84.975,115.552,74.325,1163.322,723.558,1248.018,645.551,432.406,372.801,442.167,562.203,223.222,473.765,92.595,72.609,66.958,1192.255,364.808,466.274,950.441,338.608,360.126,406.143,27,47,508,407,305,159,, +90.906,276.703,245.289,398.508,152.279,54,42,716,573,169,134,111,213,604.858,299.538,507.929,823.261,670.843,530.924,219.99,412.251,302.239,493.702,442.004,425.456,494.972,36,332.329,322.997,324.764,85.612,118.738,75.104,1150.437,728.825,1256.598,650.938,428.351,371.229,435.603,565.754,224.1,472.953,91.699,73.954,63.872,1195.734,371.286,468.792,935.208,341.181,358.256,400.416,26,46,505,404,302,157,, +91.0728,272.137,246.237,395.306,155.333,54,39,717,571,169,138,111,208,601.033,300.067,512.587,820.185,667.463,525.518,221.128,406.25,298.128,495.91,441.87,427.252,488.578,36,327.804,326.489,324.807,84.551,118.866,74.381,1139.993,727.982,1248.608,649.935,431.821,368.724,432.377,564.085,222.557,471.029,90.263,73.034,65.834,1159.696,369.512,452.569,939.166,340.008,361.713,398.577,26,46,511,399,303,157,, +91.2396,272.989,248.175,393.601,153.763,54,39,723,574,169,137,110,210,601.102,299.03,511.951,816.018,663.539,522.282,217.25,407.316,291.99,491.494,438.129,418.389,485.227,35.5,337.717,328.752,326.235,86.121,117.308,73.234,1145.427,725.86,1255.378,634.965,431.269,372,437.834,563.964,227.143,468.042,92.381,73.671,65.337,1154.35,348.854,449.938,912.041,346.314,361.657,397.828,27,44,505,394,305,153,, +91.4064,274.142,245.94,395.612,156.351,55,39,723,571,169,137,112,209,603.504,299.409,511.258,807.463,662.741,518.084,218.91,406.836,298.206,490.829,436.63,414.127,479.726,37,334.436,325.669,327.79,84.975,116.713,73.957,1150.897,730.105,1243.896,630.819,431.556,371.539,439.241,559.43,220.208,462.59,91.571,70.556,64.626,1155.708,350.933,452.456,912.323,344.646,365.61,401.519,26,48,502,399,304,151,, +91.5732,270.328,247.213,391.89,152.01,53,40,722,572,167,137,110,207,605.877,297.475,513.217,806.032,662.788,519.563,219.237,397.729,295.66,483.724,434.112,418.02,480.418,35,331.806,327.889,326.928,88.101,114.745,71.946,1139.69,722.08,1246.565,629.003,429.198,371.497,432.391,558.512,218.524,467.816,91.912,73.232,64.882,1172.157,355.303,454.252,917.726,347.007,365.709,393.6,25,45,504,394,302,153,, +91.74,270.072,247.637,397.092,152.915,54,41,720,575,165,135,110,209,607.291,301.288,509.553,807.134,661.037,518.623,217.861,399.087,295.774,486.625,430.313,410.775,480.562,36,335.511,326.716,327.691,83.943,116.94,74.197,1148.735,729.755,1241.076,625.455,430.178,370.117,432.532,579.342,218.283,462.037,88.201,72.17,63.801,1172.807,353.974,460.292,921.913,345.07,364.094,402.509,26,46,496,394,303,154,, +91.9068,269.793,246.052,393.459,153.283,54,40,720,570,166,134,111,207,601.451,300.634,513.633,810.688,658.826,511.45,217.132,394.95,294.764,490.022,427.521,412.412,470.079,35.5,332.584,326.306,327.352,86.757,121.528,71.436,1140.721,731.279,1251.531,621.636,430.133,373.622,436.87,581.017,218.255,460.819,90.675,72.651,63.758,1178.437,362.191,462.654,920.06,349.284,371.036,394.576,25,46,498,391,298,152,, +92.0736,277.193,244.162,393.681,149.931,54,41,715,573,167,136,110,205,606.073,299.953,508.745,813.267,656.739,515.133,212.854,398.896,294.18,487.871,426.702,407.691,465.125,36,336.26,324.481,328.738,87.125,117.747,74.268,1147.975,729.158,1238.228,627.297,428.735,375.594,434.945,583.061,219.047,461.74,89.182,71.349,63.758,1191.618,362.672,465.185,936.127,349.807,371.022,400.246,26,46,494,389,300,151,, +92.2404,274.969,249.285,390.186,149.338,52,40,722,574,170,135,109,203,599.075,300.153,514.323,804.529,650.102,513.065,210.864,393.398,296.798,479.252,420.378,406.478,467.576,34,333.178,329.515,331.467,83.617,115.198,73.234,1140.189,729.74,1232.974,616.239,434.492,374.202,434.301,584.897,215.919,459.828,92.467,72.042,64.64,1191.321,357.354,463.304,944.854,354.403,374.168,397.969,24,44,493,386,297,151,, +92.4072,271.56,245.374,389.485,151.741,52,40,715,561,167,139,108,200,604.248,296.337,513.032,798.754,649.997,511.193,212.612,395.436,288.633,480.95,421.901,398.809,462.236,34.5,331.976,325.598,332.061,84.042,115.736,73.362,1153.714,735.656,1243.892,619.128,427.97,373.338,432.603,578.524,214.773,454.73,91.002,71.972,67.128,1201.236,360.367,466.911,941.375,359.295,375.981,401.165,24,45,493,381,298,151,, +92.574,274.027,245.039,385.021,146.679,52,40,721,565,168,136,107,202,608.908,299.407,513.776,803.363,646.158,505.281,209.665,387.933,292.032,482.875,416.63,400.742,457.222,34.5,335.129,325.556,332.131,83.434,115.948,72.073,1144.592,739.448,1231.694,615.446,431.036,371.448,437.919,570.931,213.966,453.058,89.865,70.825,63.901,1209.637,363.224,471.225,950.285,354.346,375.91,398.832,25,44,487,380,299,152,, +92.7408,272.677,243.186,386.314,150.129,52,40,716,571,168,138,107,200,605.496,297.989,510.019,799.85,650.397,504.288,207.518,391.729,287.736,482.634,413.46,394.227,453.214,35.5,336.543,328.964,329.812,83.179,118.03,74.112,1139.786,736.474,1246.944,620.027,431.039,376.567,437.565,562.827,211.093,449.957,91.329,70.811,65.067,1209.34,365.515,474.365,954.67,357.089,378.092,397.786,26,45,485,375,295,152,, +92.9076,274.206,250.877,387.103,149.408,53,41,721,567,169,137,107,198,608.301,299.27,507.326,797.043,644.992,500.347,208.06,387.596,289.145,484.035,413.943,394.737,449.033,35.5,335.624,329.657,331.368,84.537,115.325,73.801,1144.006,741.502,1238.236,615.361,427.202,374.145,436.566,559.132,210.881,458.171,87.803,70.683,63.374,1220.245,364.567,475.468,949.154,363.212,383.788,398.648,26,45,485,376,293,149,, +93.0744,273.421,247.454,391.943,148.687,53,40,710,570,167,136,110,198,604.148,301.568,512.511,802.557,640.581,499.539,205.769,385.71,286.982,478.077,402.456,389.503,449.263,35.5,334.974,328.879,332.216,86.955,114.589,74.084,1146.131,736.378,1234.482,612.405,429.722,375.976,438.293,551.846,212.424,448.342,88.713,72.439,65.465,1221.801,359.815,477.222,957.314,359.719,383.576,392.299,25,46,479,377,291,149,, +93.2412,274.538,244.752,386.626,149.267,53,39,713,566,169,136,108,197,611.072,301.024,512.752,781.578,638.11,497.697,208.204,390.183,288.305,482.79,400.605,379.895,444.96,35.5,336.699,329.827,334.762,85.81,112.025,71.521,1143.313,740.801,1240.772,614.011,428.663,360.242,436.87,548.82,212.424,441.502,89.552,71.179,65.55,1235.124,362.955,480.432,959.294,362.548,386.069,405.266,25,46,478,371,289,150,, +93.408,272.857,242.785,389.647,148.418,55,39,714,571,170,137,110,196,608.568,300.381,511.743,761.583,615.504,486.715,200.683,379.954,286.47,475.812,398.887,381.625,442.082,35,339.315,329.812,332.824,87.606,114.532,72.611,1146.925,741.595,1233.573,536.037,413.214,357.597,440.334,553.102,209.65,447.266,89.367,71.519,63.787,1226.582,362.63,481.578,965.588,363.891,388.492,400.189,25,45,478,374,291,151,, +93.5748,266.724,246.114,382.762,146.128,51,40,715,563,163,135,106,195,611.269,298.896,511.3,775.214,622.824,478.929,206.577,377.109,283.312,481.813,395.344,382.43,434.296,34.5,341.945,331.976,335.002,85.739,112.408,71.563,1146.783,740.271,1250.014,522.992,401.183,363.843,434.896,543.507,204.71,446.487,89.395,70.074,63.247,1235.747,362.064,482.243,960.384,362.746,388.421,404.234,25,44,471,374,292,149,, +93.7416,269.589,249.307,389.394,147.74,52,40,713,559,167,133,107,196,613.01,305.553,508.178,783.424,622.427,486.614,203.513,376.076,284.18,478.997,396.904,374.355,431.305,34.5,339.88,330.604,331.17,87.365,113.767,73.461,1150.035,742.022,1243.749,530.123,402.754,372.348,437.967,542.672,207.357,444.872,88.77,71.915,61.91,1233.936,365.43,485.849,969.619,368.331,397.872,404.912,25,44,472,368,287,148,, +93.9084,270.787,249.024,388.885,147.033,54,39,711,562,163,135,109,196,606.537,300.457,512.638,782.219,614.464,481.344,202.861,377.533,284.137,478.544,390.988,368.905,426.785,35,335.836,332.089,332.81,86.418,113.725,71.861,1145.143,745.177,1245.621,545.103,400.53,376.014,441.612,549.782,206.239,436.587,89.808,72.906,60.929,1246.369,367.877,482.794,971.147,368.076,398.269,398.648,26,44,467,365,287,147,, +94.0752,272.136,249.392,390.575,147.004,50,39,712,564,168,134,104,196,609.39,304.245,510.662,781.09,618.958,483.961,202.874,373.372,283.27,478.19,384.554,369.914,421.887,35,338.523,333.503,331.976,85.088,111.36,72.413,1162.974,745.942,1242.146,551.856,401.998,375.698,444.831,539.487,204.427,432.99,88.741,71.476,63.431,1244.261,364.695,486.047,980.906,371.838,401.457,405.931,26,44,468,365,285,148,, +94.242,274.296,249.692,386.711,146.594,51,40,713,562,167,137,106,194,613.548,301.541,511.329,786.851,613.013,481.934,200.813,373.769,280.794,481.091,382.388,370.718,419.926,33.5,336.656,332.442,331.735,84.551,115.509,73.744,1154.826,742.142,1237.842,554.53,406.648,379.577,443.445,546.917,205.687,437.14,89.751,72.665,62.649,1252.026,366.448,490.927,981.599,373.195,400.819,406.524,24,43,459,362,285,144,, +94.4088,273.543,248.307,391.115,147.612,54,39,710,562,163,133,105,193,612.188,300.963,515.211,788.14,611.779,478.745,200.57,371.816,278.817,473.746,380.702,368.924,416.647,35,340.22,329.105,334.974,85.923,114.249,72.795,1153.487,740.697,1244.297,558.413,412.023,380.133,448.142,546.399,201.95,438.117,91.116,70.924,64.014,1249.07,367.919,496.019,984.979,373.012,401.06,405.506,25,45,466,358,286,145,, +94.5756,274.97,247.556,388.504,141.885,51,38,712,559,165,133,107,193,609.538,303.83,518.549,782.471,597.557,479.496,199.429,372.934,276.783,475.232,378.697,364.16,416.248,34.5,339.682,335.03,336.444,83.844,114.192,75.09,1159.594,748.117,1247.982,560.26,410.357,380.243,447.748,543.039,202.828,434.421,88.94,70.06,62.763,1253.624,369.278,496.754,979.638,372.969,410,405.888,24,45,462,360,286,144,, +94.7424,273.577,250.145,388.504,141.079,51,39,710,565,165,134,105,190,607.159,300.371,514.084,783.638,600.606,481.066,198.899,372.941,274.976,477.596,372.644,357.92,410.146,35.5,337.208,336.812,342.864,86.135,112.224,73.546,1149.721,747.356,1246.604,559.891,421.506,383.899,448.792,539.048,201.384,427.722,88.485,71.306,63.517,1257.542,371.526,492.723,985.969,379.587,405.225,410.837,25,46,457,355,287,143,, +94.9092,273.322,250.594,387.851,141.744,52,38,709,562,164,135,103,192,610.385,303.73,515.901,784.13,605.307,476.548,200.361,378.107,276.029,473.803,371.37,351.867,408.384,34,343.684,331.99,333.178,84.777,110.737,71.733,1160.357,746.283,1248.99,561.512,419.487,385.062,446.841,540.435,200.153,431.262,86.623,72.524,63.488,1255.138,368.825,491.691,986.196,377.466,412.834,413.793,24,44,454,355,277,143,, +95.076,276.498,249.01,392.89,142.126,50,40,706,560,164,130,106,192,613.271,307.232,509.568,785.139,592.673,471.1,195.127,372.141,272.672,477.567,367.63,350.112,399.595,34.5,344.32,336.331,342.609,84.551,113.031,71.676,1166.18,753.349,1246.888,569.97,424.965,386.603,451.975,542.757,196.332,432.126,88.997,69.72,62.351,1262.69,378.089,496.655,988.459,387.831,414.775,420.014,25,44,458,350,281,143,, +95.2428,283.048,249.568,388.686,143.356,52,37,715,559,165,135,104,193,612.884,301.384,513.669,789.034,592.524,469.418,195.959,366.981,275.759,471.142,369.461,348.454,404.962,34.5,341.577,338.07,335.186,83.886,112.79,74.027,1163.978,749.306,1245.599,565.863,423.04,385.927,447.378,536.729,198.681,428.359,89.808,68.12,62.251,1261.686,371.172,495.057,991.882,384.564,417.736,414.641,25,44,453,349,280,142,, +95.4096,275.595,252.136,388.391,139.453,51,38,698,556,163,134,102,190,612.821,305.348,517.604,786.625,593.881,473.479,194.073,372.368,271.775,469.882,358.51,343.182,395.148,34.5,344.49,335.963,339.739,81.666,115.07,73.348,1163.549,756.43,1258.733,572.217,426.524,390.255,446.094,540.49,193.812,429.294,87.433,67.861,61.213,1260.668,372.134,501.549,994.102,378.852,417.765,416.027,25,44,451,352,279,145,, +95.5764,279.571,251.683,390.628,140.542,52,38,707,559,164,131,105,192,617.57,302.674,520.566,786.752,591.742,473.514,196.28,368.938,273.397,474.977,356.081,345.14,393.717,35,346.484,337.901,342.609,85.032,113.668,73.447,1170.779,760.259,1258.812,574.295,427.386,390.676,447.833,541.384,191.944,427.481,86.13,65.358,62.749,1265.901,371.667,502.567,994.003,389.047,423.234,419.039,25,45,448,347,275,144,, +95.7432,280.206,249.533,389.894,142.098,52,38,700,558,164,133,105,191,615.604,300.659,519.515,783.681,590.342,471.582,196.607,371.475,270.453,471.807,357.603,342.107,391.367,34.5,342.949,338.466,338.198,86.616,113.994,72.767,1168.849,758.716,1253.789,572.714,433.016,390.34,451.845,538.298,193.218,428.515,90.454,68.017,61.924,1267.726,376.589,500.092,996.563,389.202,431.027,420.905,25,44,448,346,275,140,, +95.91,276.399,254.796,396.262,141.716,50,39,703,553,167,133,104,192,614.039,303.525,513.253,779.955,593.59,474.373,196.101,370.798,270.709,468.906,356.18,339.489,388.852,33.5,343.232,334.663,339.541,84.565,110.524,73.815,1171.487,760.008,1262.26,573.115,427.797,391.856,445.44,537.159,189.849,423.119,88.648,66.574,61.952,1277.711,376.547,501.393,1002.758,395.198,429.383,427.254,24,43,448,341,275,144,, +96.0768,279.862,251.896,391.343,140.061,51,38,701,554,162,133,100,191,616.098,300.654,516.567,786.639,584.532,472.261,195.15,376.009,268.575,469.047,351.103,335.742,383.889,33.5,347.757,332.655,345.098,82.854,110.963,70.331,1177.234,754.68,1254.812,572.347,438.928,396.554,445.142,532.552,192.935,425.852,87.538,68.271,60.345,1276.07,378.103,505.198,999.972,388.58,433.506,423.96,24,43,443,343,271,141,, +96.2436,280.959,256.311,390.334,140.005,52,37,705,550,158,132,103,191,614.709,300.686,519.065,781.401,589.822,472.7,194.318,368.416,270.837,470.123,347.948,337.535,384.411,34.5,345.225,335.355,338.48,86.474,111.813,72.186,1179.765,762.484,1267.691,574.38,440.311,397.088,442.229,529.948,188.802,425.526,89.202,66.956,59.833,1276.367,381.257,506.527,1011.315,397.856,434.626,428.23,25,44,447,342,276,141,, +96.4104,282.493,252.663,396.244,138.209,52,38,697,559,159,135,103,193,617.892,304.203,518.262,787.531,589.111,471.398,195.661,366.316,266.953,468.807,345.848,331.315,377.714,34.5,348.223,340.488,342.836,84.127,110.255,72.271,1174.709,753.975,1272.682,574.167,443.975,400.447,442.326,534.395,189.651,423.374,90.71,67.861,61.952,1294.287,374.708,504.476,1012.149,392.483,439.004,428.357,25,44,438,341,272,138,, +96.5772,280.819,250.007,393.166,140.104,52,36,701,552,163,131,103,188,614.255,301.828,521.641,786.647,589.68,471.58,193.678,370.584,266.199,470.321,340.254,330.454,373.11,35,352.14,338.283,343.203,84.89,110.34,70.133,1175.253,768.567,1282.003,576.982,444.119,399.314,443.119,538.752,188.618,425.442,87.282,66.999,59.961,1284.627,379.065,510.94,1011.301,398.719,435.844,432.331,25,45,437,335,271,140,, diff --git a/tests/test_data/qpcr_example.csv b/tests/test_data/qpcr_example.csv new file mode 100644 index 0000000..5c5f5ce --- /dev/null +++ b/tests/test_data/qpcr_example.csv @@ -0,0 +1,10 @@ +Participant ID,1,1,2,2,3,3,4,5,5,6,6,7,7,8,8,9,10,11 +Replicate,1,2,1,2,1,2,1,1,2,1,2,1,2,1,2,1,1,1 +Group,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 2,Group 1,Group 2 +12,0.1521,0.1157,0.2137,0.2373,,0.1287,0.2434,0.3844,0.5509,0.1456,0.1192,0.2279,0.2544,0.1478,0.165,0.2433,0.0757,0.169 +16,0.2682,0.235,0.522,0.5362,0.2034,0.1663,0.5834,0.7298,0.5026,0.1357,0.1508,0.357,0.3393,0.2616,0.2432,0.2816,0.1228,0.2285 +20,0.2328,0.2364,0.7227,0.6,0.2074,0.1887,0.6815,0.6507,0.7113,0.1493,0.1641,0.4117,,0.3647,0.2158,0.2677,0.1582,0.2619 +24,0.1691,0.1394,0.4334,0.4078,0.1752,0.2141,0.4122,0.5008,0.5088,0.1237,0.1432,0.3894,,0.2779,0.2997,0.2772,0.1534,0.3343 +28,0.078,0.065,0.1708,0.1662,0.1165,0.145,0.1788,0.2429,0.2548,0.0888,0.0764,0.1327,0.1392,0.1387,0.103,0.1846,0.0791, +32,0.0546,0.062,0.1118,0.111,0.1157,0.088,0.1201,0.1236,0.115,0.0656,0.0867,0.1163,0.1133,0.0948,0.1096,0.1236,0.0582,0.1021 +36 ,0.0784,0.0719,0.1551,0.1334,0.1091,0.1146,0.1724,0.1765,0.2084,0.1214,,0.1048,0.1442,0.2728,0.2212,0.2097,0.072,0.1603 diff --git a/tests/test_data/single_cell_example.csv b/tests/test_data/single_cell_example.csv new file mode 100644 index 0000000..d28599a --- /dev/null +++ b/tests/test_data/single_cell_example.csv @@ -0,0 +1,220 @@ +,1,2,3,4,5,6,7,8,9,10,11,12,1.1,2.1,3.1,4.1,5.1,6.1,7.1,8.1,9.1,10.1,11.1,12.1,1.2,2.2,3.2,4.2,5.2,6.2,7.2,8.2,9.2,10.2,11.2,12.2,13,14,15,16,17,18,19,20 +Replicate,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +Group,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1,Group 1 +0.0,15161.4,13175.5,13892.4,12219.6,12742.0,,,12595.5,13620.2,,,,3904.7,3315.7,,,1581.1,,831.9,,1337.1,1308.7,,,358.6,246.6,427.2,277.7,337.6,460.0,,,361.3,232.9,,,,,,1311.6,,,, +0.583333333,16106.4,13245.9,14837.0,12648.1,12701.0,,,12795.3,13627.1,,,,4380.6,2778.2,,,1674.7,,781.5,,1233.8,1246.7,,,369.3,241.2,473.9,257.1,378.6,522.0,,,364.4,245.4,,,,,,1266.3,,,, +1.166666667,16464.3,13427.4,15306.6,12877.7,12333.5,,,12617.7,13721.8,,,,3454.7,2335.4,,,1769.4,,732.4,,1090.7,1111.1,,,352.5,232.8,498.8,244.8,429.8,574.7,,,334.3,277.3,,,,,,1178.9,,,, +1.75,14896.8,14050.5,14998.7,12247.1,11923.0,,,12163.8,13711.2,11254.3,,,2627.5,2163.8,,,1680.7,,671.3,,925.6,1032.3,,,338.4,223.5,592.4,243.4,503.1,594.6,,,269.0,282.4,,,,,,1146.6,,,, +2.333333333,13670.5,14795.8,14941.8,11309.5,11727.4,10435.4,,11570.5,14498.6,11239.3,,,1708.8,2091.9,,,1425.0,,646.1,,901.9,1022.9,,,350.7,219.8,739.1,240.5,529.5,539.9,,,237.1,296.8,,,,,,1131.0,,,, +2.916666667,13133.8,16093.5,14990.5,10795.3,11439.8,10589.9,,11279.4,14583.5,11757.1,,,1238.0,2263.8,,,1084.2,,605.8,,901.5,1060.9,,,353.1,219.0,786.1,232.0,609.0,483.2,,98.8,210.3,327.8,,,,,,1100.9,,,, +3.5,12769.3,17007.4,15123.9,10339.8,11305.4,10617.6,,10953.5,14395.3,12176.5,,,1182.7,2272.7,,,927.1,,567.1,,1032.8,1055.8,,,350.3,224.8,716.6,216.0,512.0,475.9,,104.0,189.4,349.9,,,,,,1079.9,,,, +4.083333333,13007.7,17786.9,15458.8,10239.2,11375.5,10922.9,13929.7,10858.9,14297.3,12566.6,,,1482.4,2146.4,,,831.8,,537.2,,1022.0,1082.9,,,342.8,230.6,625.8,194.6,414.7,522.8,,113.4,174.8,359.6,,,,,,1221.5,,,, +4.666666667,12627.1,16887.6,16163.6,10409.8,11689.4,11768.4,16172.0,10647.8,13605.2,13164.7,,,2135.6,2133.4,,,836.3,,532.7,,1015.0,1113.3,,,336.8,223.4,655.4,202.5,375.1,589.6,,128.2,176.5,333.5,,,,,,1407.5,,,, +5.25,12049.6,16011.0,16542.3,10439.1,12050.6,12102.6,18424.6,10624.2,13040.8,13596.2,,,3071.4,2215.9,,,936.2,,586.5,,1042.9,1058.3,,,306.6,218.6,608.0,242.9,373.0,684.8,,141.5,196.0,309.0,,,,,,1408.5,,,, +5.833333333,12055.1,15825.0,17779.1,10471.3,12396.9,12745.3,20827.2,10597.6,12590.0,14032.3,,,4175.5,2244.8,,,1190.2,,589.8,,1192.8,1060.7,,,296.0,216.3,605.7,295.7,377.5,788.9,,154.5,231.7,302.3,,,967.4,1027.8,,1296.6,985.2,811.9,, +6.416666667,12977.9,16322.5,16440.7,10504.4,12807.6,12430.3,21747.7,10678.5,12225.5,13993.0,,,4993.2,2263.1,751.9,,1506.6,,617.0,,1378.5,1226.8,,,301.9,224.7,638.7,322.5,415.6,1037.5,,158.2,284.1,308.5,,,1112.6,1193.9,,1248.2,1115.4,863.3,, +7.0,16621.4,16947.1,16076.6,10673.1,13769.4,12337.0,22787.4,10777.2,11856.8,14266.0,,10813.1,6025.4,2470.1,903.6,,1848.6,,653.5,,1409.8,1570.1,,,311.4,244.7,710.5,334.2,442.1,1032.7,,168.6,288.0,337.4,,,1270.8,1301.1,,1415.1,1402.3,963.0,, +7.583333333,20757.2,17853.0,17674.3,10983.9,16072.6,12114.4,23319.7,11108.9,11630.2,15464.9,,11196.4,5934.6,2915.1,1194.8,,1904.6,,702.4,,1499.2,1758.9,,,339.8,258.6,766.8,289.3,474.6,955.4,,178.7,247.5,400.8,,,1421.8,1473.9,,1472.8,1689.2,1048.2,, +8.166666667,26606.0,18903.1,20549.1,11366.9,19544.7,11677.2,23205.8,11451.6,11580.6,15772.3,,11677.8,6201.5,3823.8,1463.3,,1793.3,,719.0,,1468.6,1784.2,,,381.8,261.7,749.3,227.0,652.7,853.1,,191.1,240.9,428.8,348.3,,1489.8,1702.1,,1550.2,2077.2,1105.4,, +8.75,31858.8,20864.6,22389.2,11530.9,23431.9,11628.7,21913.9,11660.5,11780.4,16007.1,,11936.4,6971.5,4399.4,1911.3,,1676.8,,805.7,1475.6,1251.7,1881.2,,,440.6,264.0,815.2,211.5,823.3,757.3,,214.1,255.1,475.9,313.9,,1751.5,1921.1,,1705.9,2807.8,1101.9,,1218.9 +9.333333333,35948.9,22004.2,21676.7,11261.5,27185.1,12046.9,20685.0,12281.9,12053.4,16990.8,,11891.2,7610.8,4717.4,2324.7,,1839.1,,870.4,2066.5,1182.7,2078.7,,,489.7,266.8,933.6,234.9,821.4,701.2,,243.1,261.8,557.3,288.7,,2177.1,2095.8,,1800.9,3740.6,1176.6,,1396.3 +9.916666667,40288.0,22471.6,20296.2,10949.3,28729.8,12614.3,19767.5,12639.8,12016.2,17386.7,,11852.5,7720.9,4369.7,2639.4,,2329.3,,999.1,2277.9,1245.9,2643.8,,,485.9,245.7,1242.2,287.2,748.1,712.3,,271.5,247.4,527.9,314.9,,2338.0,2067.8,,1809.0,4535.2,1355.9,,1459.5 +10.5,37335.4,23551.7,19614.5,10905.2,29025.0,12759.5,19301.6,12522.7,12040.7,17156.8,,11901.5,7250.7,4272.5,2633.4,,2553.3,,1087.8,2444.9,1523.9,3167.7,,,457.6,254.7,1560.0,352.5,777.2,742.4,,313.8,232.4,486.8,328.5,,2309.9,2070.0,,1863.3,4842.9,1468.1,,1210.7 +11.08333333,31776.5,24158.2,18210.6,11214.6,26052.8,13331.6,19450.4,12600.6,12114.0,16669.1,,11881.1,6590.2,4706.9,2441.4,,2459.6,,1140.0,2623.6,1690.7,3285.8,,,430.0,282.6,1836.0,421.7,816.7,749.8,,403.2,248.5,464.5,306.5,,2232.2,2115.8,,1948.4,4838.3,1456.4,,1357.3 +11.66666667,27233.5,24272.5,15802.9,11995.0,24850.8,15018.4,20391.8,12842.7,12525.9,16701.9,,11990.8,5553.9,4548.4,2325.7,,2482.0,1896.9,1075.0,2834.1,1724.9,3112.8,,,421.7,290.9,1944.5,406.8,881.7,743.6,,509.6,276.2,489.5,294.3,,2191.3,2191.7,,2160.5,4690.7,1369.3,1427.0,1583.8 +12.25,25285.5,22981.9,14728.4,11919.2,25423.5,17625.6,21513.9,13595.1,12569.6,16184.1,13194.2,12315.8,5452.6,4169.4,2373.9,,2376.1,2139.9,1021.5,2873.8,1714.8,2968.5,,,447.2,306.5,2008.3,405.2,961.8,797.6,218.6,594.0,302.5,576.7,320.2,140.7,2181.4,2311.1,,2282.3,4142.1,1397.3,1560.6,1905.0 +12.83333333,24156.8,21581.4,14911.7,11972.6,26741.6,20759.3,21723.5,14870.6,12634.9,15794.6,13564.4,12920.2,5494.4,4075.6,2624.2,,2497.8,2502.0,1011.1,2592.9,2014.8,2864.1,,,507.2,326.7,1769.7,440.4,753.8,877.5,229.5,623.1,303.9,621.3,383.7,136.0,2210.7,2527.2,,2163.6,3624.6,1390.0,1669.4,2376.4 +13.41666667,22367.9,20507.0,20086.3,12566.4,27521.7,25414.6,20465.6,16085.7,12513.3,15140.5,13503.2,13535.7,6432.4,3928.1,2643.1,,3005.6,2845.0,944.8,2347.6,2255.6,2769.3,,,577.8,346.7,1666.0,479.1,527.1,960.8,225.6,607.3,301.8,690.7,481.0,132.3,2285.1,2648.3,,2070.8,3495.3,1458.5,1750.4,2740.3 +14.0,20068.0,19871.1,26287.0,15540.1,28690.3,27830.5,20001.8,16310.9,12476.5,14910.4,13438.3,14240.9,6573.0,3792.6,2449.6,,3352.0,3054.7,1031.2,2374.7,2265.2,2388.4,,,579.8,362.5,1461.4,469.8,479.8,1042.8,233.0,583.3,283.9,703.6,545.1,133.5,2374.4,2640.7,,2027.7,3319.0,1554.3,1849.4,3065.8 +14.58333333,18936.1,19319.0,23023.4,17668.1,27140.2,31164.9,20183.3,16487.1,12700.5,15105.5,14045.5,15231.3,5366.9,3732.5,2437.2,,3541.0,3758.3,1059.1,2652.1,2274.6,2254.2,,,570.7,362.4,1416.3,371.0,507.4,1157.3,254.7,529.9,269.4,684.2,580.9,139.8,2608.7,2854.0,,1769.1,2809.5,1605.3,1950.2,3752.6 +15.16666667,18615.4,19033.2,20173.0,18072.7,27014.3,33447.3,20961.9,16835.8,13129.1,15213.7,15142.3,15830.9,3764.5,3805.2,2675.7,,3626.8,4526.6,1059.3,2836.9,2085.7,2428.3,,,575.1,361.5,1413.2,317.9,692.0,1151.6,260.3,469.0,261.1,649.5,565.0,152.4,2755.6,3289.8,,1608.7,2655.5,1550.5,2110.1,4599.1 +15.75,19135.5,19737.5,18627.8,17795.1,27690.3,35707.1,22293.9,18134.0,13301.6,15703.7,16781.3,16816.0,3288.6,3790.6,3034.2,,3907.7,5048.6,1200.6,3185.1,1920.2,2673.6,,,601.4,337.5,1325.8,330.7,866.8,989.3,266.0,389.6,264.2,627.2,529.5,153.9,2688.8,3311.4,,1485.8,2671.5,1425.6,2345.6,5125.9 +16.33333333,20283.3,21892.2,18198.2,18053.7,28242.4,39426.9,23618.9,19521.7,14127.6,16631.8,17833.2,18821.3,3855.6,3768.6,3845.9,,4351.2,5256.3,1359.4,3230.4,1884.9,2662.9,,,628.1,337.1,1339.2,411.1,964.9,806.8,283.3,338.7,278.3,613.0,528.1,162.8,2595.9,3116.9,,1463.6,2700.1,1477.6,2662.9,5294.2 +16.91666667,23519.7,23779.3,19441.2,19868.3,30829.9,44219.2,24693.1,23147.9,14315.9,17690.2,18564.2,21898.0,4321.0,3532.7,4698.0,,3850.2,5686.9,1476.6,3297.7,2009.5,2478.1,,,631.3,325.2,1459.8,460.0,995.8,676.1,308.4,331.1,308.1,599.7,456.5,169.5,2541.5,3127.1,,1434.7,2534.2,1589.8,2760.8,5719.7 +17.5,28809.5,27834.7,22834.3,24722.1,37618.3,49075.9,31612.5,28607.9,14279.1,18411.5,19593.2,27444.2,3868.9,3331.0,5433.0,,3096.2,5989.0,1528.9,3264.5,1969.1,2589.9,,,628.7,297.5,1495.2,473.6,988.8,621.2,361.2,364.1,355.7,532.7,493.6,183.5,2443.2,3485.5,1314.0,1422.5,2424.3,1723.6,2842.6,6005.7 +18.08333333,32255.6,29278.7,24954.4,29480.4,36000.5,48766.0,34756.2,30345.6,13764.4,19207.8,19745.9,32270.8,3663.8,3215.7,6278.7,,2955.2,6658.9,1451.6,2982.6,1821.4,2783.3,,,646.6,287.1,1539.0,461.3,896.7,571.5,371.4,406.9,405.1,496.1,504.4,195.0,2524.9,3675.7,1448.6,1422.3,2401.9,1906.9,3054.9,6711.5 +18.66666667,31616.3,29181.4,26800.3,34969.1,37035.6,50385.5,37788.4,32950.6,13868.7,21018.3,18093.5,32901.4,3692.8,3177.1,6631.7,,3593.4,7210.1,1402.5,2803.4,1812.8,2815.0,,,679.1,283.8,1395.2,439.8,714.0,570.0,360.7,371.5,464.1,481.0,542.1,197.9,2831.9,3986.1,1556.3,1606.6,2510.6,1926.1,3085.9,7156.2 +19.25,30616.4,28914.7,30809.2,36132.9,37625.6,50492.9,36998.3,35188.5,14078.2,24056.3,18224.5,28408.3,3960.8,3147.7,7164.7,,4674.8,7538.6,1332.1,2724.1,1853.6,2757.3,,,718.8,283.8,1370.8,429.3,650.3,630.2,338.8,358.8,512.7,487.3,592.1,205.0,3455.0,4306.3,1622.3,2025.8,2540.6,1832.9,3241.8,7533.1 +19.83333333,29635.7,27149.5,30955.4,32067.4,35880.3,49990.4,38924.3,36072.9,14148.3,27218.8,17712.8,26645.1,4478.5,3492.0,7847.0,,6036.4,7415.1,1299.5,2768.4,1945.2,2649.0,,,784.0,290.7,1203.5,451.3,685.6,729.4,338.1,394.6,570.6,551.6,652.8,219.5,3988.4,4593.0,1778.1,2447.5,2733.2,1748.7,3407.9,7497.6 +20.41666667,30781.3,24884.1,28777.5,28772.8,35548.9,49666.2,43534.4,35517.6,13913.4,29194.0,17285.7,23096.3,4999.3,3732.6,7347.1,,7119.2,7055.3,1216.8,3077.6,2119.9,2632.1,,,888.0,330.8,1170.6,476.6,786.9,919.2,343.5,474.4,607.3,520.9,718.5,231.6,4383.3,4574.4,1915.6,2663.6,3134.7,1747.8,3414.2,7110.3 +21.0,22769.0,23041.2,25148.1,27919.7,34810.9,48328.7,41588.7,34204.6,13815.3,29531.3,17660.4,20684.3,5707.0,3930.4,6451.7,,7570.8,7026.1,1163.8,3445.6,2392.5,2942.3,,,985.8,399.0,1094.5,479.2,864.0,1393.0,341.8,636.2,631.4,458.4,767.3,229.8,4612.5,4788.0,2122.6,2629.2,3646.7,1856.4,3335.2,7117.8 +21.58333333,22497.7,21160.4,22887.1,27907.1,32537.6,51032.3,40184.5,30684.9,13872.1,28982.5,17758.2,19566.9,5513.9,4070.8,5439.0,,7145.6,6994.2,1251.6,3760.9,2737.7,3194.7,,,1081.5,384.5,1054.1,478.9,932.2,1650.2,361.5,875.8,691.7,441.0,791.3,228.0,4649.0,5232.8,2391.4,2688.8,4175.6,2152.4,3393.6,7068.2 +22.16666667,23926.2,21824.9,23122.3,28584.3,30926.5,52144.7,36921.0,30464.9,14204.6,27340.6,18733.8,19772.7,4636.9,4084.9,5019.3,,6322.8,6771.5,1334.7,3983.3,2977.2,3291.7,,,1192.7,389.1,1108.5,458.8,1078.5,1789.2,403.1,1072.4,669.5,429.4,776.0,234.0,4663.4,5600.0,2313.9,2638.7,4300.2,2561.1,3420.0,6609.6 +22.75,33407.1,26688.2,27673.4,34015.3,42100.8,57533.3,34954.1,37789.8,14635.3,33330.1,24023.8,25662.1,3775.2,3856.4,5350.2,,6228.7,6548.8,1253.1,4444.1,2879.3,3126.2,,,1240.2,399.5,1101.1,406.9,1051.4,1705.3,432.5,1062.4,625.0,406.0,795.4,244.7,4685.7,5310.9,2076.8,2428.7,4300.9,3558.8,3753.5,6453.9 +23.33333333,36744.7,26913.2,28115.3,29067.2,44028.9,56169.8,33963.1,35500.3,14890.8,33478.0,23566.2,26004.1,3367.7,3577.8,5572.4,,5576.4,5952.1,1336.0,5158.8,2798.2,2840.3,,,1282.8,399.0,1151.6,355.5,1022.1,1645.9,456.1,1062.7,618.9,420.7,794.8,278.1,4598.8,4785.6,2014.3,2299.6,4300.0,4191.7,4165.9,5895.5 +23.91666667,43891.5,27436.9,29532.4,24245.8,47906.0,55906.2,31151.0,35782.6,15551.5,36391.2,21806.5,27056.5,2939.7,3285.4,5157.2,,5034.0,5580.4,1405.0,5524.9,2618.7,2971.4,,,1277.1,388.6,1249.8,305.0,1079.6,1537.9,513.2,949.1,666.1,472.7,757.9,325.7,4456.1,4537.8,1898.9,2272.4,4406.3,4210.5,4492.8,5608.2 +24.5,52761.9,27130.6,33471.4,22808.6,54490.9,54862.1,33009.4,38854.8,16320.8,39277.0,21208.8,25644.5,2978.0,3080.4,5100.7,,4447.8,5232.3,1508.6,5782.2,2519.6,3553.0,,,1301.8,393.3,1302.9,302.8,1158.2,1393.3,584.1,854.2,700.0,530.3,720.2,372.7,4316.5,4507.8,1700.2,2509.1,4191.5,3786.0,4473.7,5321.6 +25.08333333,58735.5,26779.1,41307.0,24055.3,56775.3,55002.0,34248.3,42983.0,17177.8,42887.9,21292.5,24471.1,2948.2,3113.1,5630.3,,3797.7,4774.4,1630.5,6052.1,2773.9,3586.0,,,1317.2,402.9,1205.4,360.1,1156.0,1162.4,635.0,829.1,739.0,574.3,702.7,376.7,4288.3,4472.3,1644.2,2877.4,4045.2,3551.3,4455.9,4799.1 +25.66666667,60777.7,27435.8,45402.1,27902.3,59080.0,54422.3,33755.3,48354.6,18207.7,45297.5,22768.6,22866.4,2612.2,2967.3,6423.3,,3377.1,4421.0,1513.8,5985.5,3082.6,3482.1,,,1313.4,420.6,1126.2,424.3,982.5,1060.4,647.4,807.4,741.9,579.2,728.9,341.5,4578.4,4555.8,1622.5,3401.4,3668.9,3467.7,4371.0,4471.4 +26.25,56778.8,29792.4,51085.0,35690.3,47144.4,55013.0,34479.4,51748.3,19374.3,43778.6,23855.7,21148.2,2413.3,2846.4,7139.7,,3286.4,3944.1,1507.5,5807.8,3681.6,3431.5,,,1310.6,450.1,1112.6,448.8,882.6,1110.8,645.4,744.6,727.8,502.6,819.1,305.3,4748.9,4591.0,1701.7,3622.7,3253.0,3045.4,4275.4,3958.5 +26.83333333,52692.6,31676.9,53127.7,38652.1,38277.5,55576.2,35837.7,53804.9,18953.9,42524.4,24351.8,20353.2,2473.7,2741.4,7708.6,,3386.7,3267.7,1388.8,5159.9,4465.4,3473.7,,,1261.5,480.7,1104.0,457.4,886.8,1334.0,634.3,696.3,700.2,430.4,954.0,279.2,4982.9,4844.0,1900.3,3703.2,3131.9,2857.9,4339.2,3342.0 +27.41666667,50520.3,32250.6,52933.8,35218.2,37501.8,54931.2,35089.7,51194.6,19597.9,40731.5,24442.0,19196.7,2640.1,2632.1,8499.0,,3507.4,2939.8,,4426.6,4508.8,3757.5,,3863.1,1205.1,538.3,1066.9,449.6,844.5,1684.5,668.2,709.7,690.3,380.8,988.8,285.6,5025.8,5364.5,2153.4,3315.6,3241.5,2685.7,4456.9,2963.3 +28.0,43413.5,33521.7,52088.9,34929.7,41279.6,54630.1,34961.4,50195.7,20463.8,40475.7,23916.4,18930.3,2840.9,2519.0,8005.1,,3139.7,2643.8,,3675.8,4650.9,3672.0,,4019.0,1206.7,548.0,1016.7,438.6,713.2,2052.2,770.6,715.0,714.9,356.0,1039.9,306.0,4730.9,6016.9,2683.2,2833.4,3291.2,2548.3,4648.9,2634.8 +28.58333333,40636.9,34970.8,53050.8,33340.4,52831.8,54275.4,34277.0,47503.9,20593.5,39666.8,23841.7,19699.4,2808.1,2506.6,7076.3,,2777.1,2483.3,,3437.5,4622.1,3431.8,,4223.8,1226.4,507.8,966.5,440.1,513.4,2672.8,858.5,649.3,774.0,348.7,1085.5,355.6,4458.4,6449.0,2734.1,2446.3,3083.4,2548.3,4811.0,2444.6 +29.16666667,44435.4,36943.4,51908.9,29827.6,62537.4,52152.6,34715.9,43672.2,20381.3,38856.9,24705.6,20774.1,2793.0,2558.6,6176.5,,2625.7,2445.4,,3962.6,5270.7,3507.8,,4492.7,1164.8,470.4,861.1,450.4,468.5,3232.3,818.6,661.0,822.7,343.8,1119.6,649.4,4306.2,6550.7,2490.7,2244.1,2899.6,2532.1,5233.6,2437.6 +29.75,46757.4,39903.2,47361.9,26387.2,61658.9,51664.1,38090.4,41397.2,20662.1,38022.9,23514.3,21152.0,2728.3,2667.6,5477.3,,2445.2,2487.7,,4701.1,5680.6,3358.7,,4878.1,1083.1,457.7,820.8,468.4,496.7,3404.0,809.7,662.8,876.5,327.0,1113.2,565.6,4218.0,6533.7,2343.5,2361.2,2935.0,2420.2,5664.1,2478.1 +30.33333333,50280.7,42181.5,43970.7,24660.1,61470.0,51009.9,41672.2,40130.3,20407.1,35404.4,22297.8,20694.5,2557.5,2702.8,4753.8,,2471.9,2517.1,,4712.4,5583.4,3204.7,,5071.9,1084.8,456.5,855.6,503.3,496.0,3676.8,858.0,628.0,912.3,319.7,993.2,1096.9,4186.0,5989.1,2131.6,2617.7,2887.2,2403.7,5862.7,2489.8 +30.91666667,51240.2,41341.4,44382.9,24480.5,62881.0,51111.9,42745.0,41321.5,21120.3,39073.9,21758.1,19879.4,2279.7,2792.7,4451.4,,2497.1,2592.8,,4388.6,5634.4,3138.4,,4731.7,1167.1,435.8,817.6,549.0,496.8,3465.1,906.0,516.6,914.5,327.8,896.7,734.9,4137.6,5058.4,2098.6,3407.7,2804.6,2373.9,6276.6,2456.4 +31.5,52262.6,38629.9,43168.0,22924.0,58361.2,48065.4,41990.4,44342.9,18907.5,41364.6,21490.5,18852.0,1991.9,2896.5,4483.2,,2369.1,2636.2,,4171.8,5905.8,3084.7,,4350.3,1269.6,420.3,833.0,590.0,481.5,3568.0,904.3,453.7,885.0,349.2,862.5,320.2,4094.6,4144.6,2162.7,4943.4,2983.8,2107.2,6577.8,2488.8 +32.08333333,50445.6,36138.9,41475.4,20441.0,54220.5,46418.3,39187.4,45900.5,18830.0,38383.8,20038.3,18085.2,1846.1,3116.4,4656.0,,2153.1,2594.4,,3953.6,6053.5,3036.6,,4262.3,1328.5,413.3,797.4,621.1,503.2,3727.0,873.2,388.3,896.1,397.2,811.2,320.6,3986.5,3610.0,2345.4,6196.0,3085.6,1886.1,7121.9,2536.0 +32.66666667,47609.4,32712.6,35773.5,18323.9,46800.9,45952.1,37582.6,43590.9,17743.3,36392.6,21956.9,17707.8,1870.1,3257.6,4520.2,,1948.9,2601.3,,4012.1,5751.9,3092.2,,4055.5,1340.5,423.2,665.5,674.8,577.3,4024.6,812.0,349.4,877.5,439.5,871.4,347.7,3878.3,3306.6,2430.5,6462.7,3041.5,1664.1,7352.0,2560.8 +33.25,50486.9,29649.5,32799.2,17018.8,42471.2,48165.1,38024.2,42232.3,17555.6,36094.7,21021.9,17876.9,2094.0,3342.8,4427.4,,2050.5,2567.2,,4435.3,5544.6,3358.5,,3796.3,1342.2,452.6,652.6,742.4,660.4,4459.8,767.0,338.9,902.0,473.8,1084.9,400.2,3749.2,3080.0,2675.5,6445.4,2934.5,1536.9,7574.2,2497.2 +33.83333333,54134.3,28503.6,31450.0,15974.8,42392.1,52588.2,37183.5,41494.5,16883.5,36717.6,20175.4,18293.0,2458.8,3475.0,4695.3,,2453.3,2561.7,,4409.4,5653.9,3514.2,,3632.5,1397.9,519.8,744.0,790.4,792.3,4606.4,797.4,334.4,940.3,478.7,1156.5,468.1,3697.8,2670.1,2957.0,5913.4,2692.3,1362.0,7302.5,2586.2 +34.41666667,54330.0,27218.8,30505.6,15648.2,45366.5,54833.4,36411.5,41718.9,15942.4,38022.9,21437.2,18657.7,2593.0,3628.5,5230.2,,2877.7,2752.2,,4023.9,5679.6,3802.6,,3871.3,1508.0,611.1,867.1,805.7,973.9,4695.0,927.0,320.8,1031.2,488.8,1075.1,519.6,3670.4,2570.7,2872.9,4983.5,2910.6,1320.6,6724.2,2776.9 +35.0,50219.0,26926.8,28029.6,15976.0,48715.0,53767.0,35570.4,42469.8,15636.3,40177.5,22767.9,18772.8,2659.1,3746.1,5996.4,,3442.4,3019.4,,3586.9,5680.9,4071.1,,4255.4,1630.6,814.9,882.9,826.3,1231.9,4974.9,969.5,312.1,1103.9,454.3,1022.6,504.1,3723.7,2795.0,2610.2,4265.3,3088.2,1424.2,6358.7,3074.7 +35.58333333,44367.5,27460.5,26445.7,17208.8,51647.2,50981.0,37027.0,45197.9,15944.3,39538.0,23717.4,18668.2,2516.3,3713.6,6653.4,,4479.0,3456.6,,3201.2,6156.9,4235.1,,4490.4,1550.0,1074.6,850.6,831.6,1458.0,5417.6,921.6,288.8,1217.9,461.6,968.3,442.8,3679.0,3182.5,2050.2,3944.1,3272.8,1681.9,5831.6,3490.7 +36.16666667,37682.8,28353.5,26364.8,17278.8,46577.3,46430.4,39191.5,44605.1,16147.7,39500.4,23441.3,18466.5,2505.2,3443.5,7320.9,,4856.3,3713.7,,3059.3,7012.7,3735.9,,4898.0,1310.6,1274.0,851.8,843.7,1579.2,5790.7,883.0,263.8,1328.1,506.1,952.9,426.0,3554.3,3418.9,1769.3,3796.2,3289.0,2066.0,5525.6,3738.1 +36.75,34414.8,29530.3,27277.8,16752.1,41230.4,43473.3,41094.3,38950.9,16789.1,38978.4,22658.0,18259.1,2436.2,3142.2,8070.6,,4639.1,3778.6,,2988.6,7262.1,3368.7,,5313.7,1269.6,1314.3,845.6,852.0,1507.7,6543.6,838.3,259.0,1425.6,549.6,945.0,393.1,3420.7,3475.3,1483.1,3808.0,2985.0,2515.8,5043.4,3771.2 +37.33333333,34213.7,30655.9,28453.3,16804.2,38338.4,43278.0,43347.4,37194.5,17648.7,39023.4,21582.4,18316.8,2452.6,2878.2,7398.0,,3983.0,3771.4,,2996.5,6478.8,3144.2,,5456.9,1235.5,1219.1,855.9,836.2,1283.2,8255.4,759.0,261.7,1504.7,496.5,892.2,404.1,3440.0,3620.5,1365.6,3620.3,2909.8,2940.2,4463.4,3787.1 +37.91666667,35322.6,32018.6,28586.0,17541.4,34661.7,43296.1,47441.4,37713.2,17279.3,41594.3,20992.9,18535.9,2206.6,2677.2,6227.1,,2934.7,3642.7,,3126.6,5645.9,2950.9,2033.0,4988.0,1303.7,1140.8,854.8,830.4,1196.7,9813.1,743.9,277.9,1593.1,440.8,839.3,410.0,3738.6,3648.5,1342.7,3153.1,2861.5,3078.1,3908.0,3664.3 +38.5,36456.9,33887.6,29566.8,18903.2,33688.9,43052.9,50684.1,39418.3,17835.9,44979.4,21283.9,19299.3,2137.9,2338.5,5185.3,,2331.8,3491.2,,3290.2,5212.2,2603.9,2074.2,4403.8,1447.2,1156.3,839.7,813.9,1016.8,10439.8,689.7,289.1,1773.9,396.7,824.1,446.0,4248.6,3642.6,1494.0,2941.2,2883.5,3019.6,3349.0,3502.1 +39.08333333,35333.5,36985.3,32073.3,19461.6,33983.2,45293.1,57123.8,41380.8,18164.6,45432.6,22260.0,19890.1,2134.7,2164.6,4427.0,,2286.3,3461.3,,3524.4,4947.5,2329.2,2239.8,4070.2,1502.3,1138.7,802.0,794.8,897.0,13107.5,642.8,299.4,1871.0,345.9,831.0,464.5,4843.1,3701.5,1700.7,2960.8,2949.2,2681.8,3005.3,3470.7 +39.66666667,32472.4,38159.7,34347.1,18851.3,33577.9,48268.6,56257.8,39566.6,17828.9,43428.5,23918.4,20557.2,2205.5,2139.6,3699.1,,2582.4,3440.0,,3880.5,4856.9,2031.1,2552.0,4138.8,1508.6,1106.8,789.9,771.7,910.7,14252.4,641.7,321.4,1919.0,323.3,901.3,436.1,5193.4,3708.3,1876.9,2871.8,2998.8,2499.7,2869.5,3439.5 +40.25,32712.0,39456.3,36003.1,19148.5,34175.2,48194.3,56396.3,41218.4,17714.3,43312.9,25226.6,21726.9,2271.7,2085.2,3626.4,,2846.2,3403.9,,4186.3,5319.1,1870.1,3193.3,4382.9,1522.1,1051.7,781.0,776.5,1031.4,14261.1,664.1,362.6,1822.7,337.3,1020.4,429.0,5504.4,3780.7,1873.8,2787.1,3180.3,2440.5,2638.2,3396.5 +40.83333333,35915.8,38763.6,45113.8,20072.2,37695.4,47884.1,58571.0,49458.2,17675.9,46227.2,28637.2,23702.3,2116.0,2172.0,4132.5,,2800.0,3512.0,,4143.7,5313.4,1899.0,3455.3,4784.0,1434.4,947.8,805.2,802.0,1005.3,16865.6,728.0,393.9,1663.8,373.9,1224.9,423.5,5617.5,4247.1,1837.4,2988.8,3298.8,2563.4,2599.6,3520.9 +41.41666667,37381.8,33648.2,47269.1,20565.4,39649.6,47302.6,58392.5,53633.2,16854.0,46394.0,30268.5,24110.3,1920.8,2266.8,4688.0,,2919.0,3653.4,,4069.0,5057.4,1983.0,3178.5,4600.4,1322.0,878.1,757.0,826.3,843.6,17478.7,764.1,423.9,1600.2,404.1,1640.2,416.0,5517.9,4859.5,1919.5,3243.5,3515.7,2663.2,3120.1,3686.6 +42.0,39462.1,33067.2,48414.4,20857.3,42075.4,46172.5,59719.6,57917.5,17437.1,49207.7,32174.1,24280.7,1711.5,2336.9,5135.8,,3269.9,3952.6,,4022.5,4864.3,2057.4,2854.8,4330.2,1220.8,896.5,760.2,817.7,653.1,18072.2,760.4,486.8,1599.0,428.8,2542.6,390.8,5322.3,5047.2,2008.0,3525.8,3569.5,2506.6,3462.2,3997.1 +42.58333333,40301.6,29676.7,49496.9,23323.2,46957.9,46988.1,58460.1,60185.7,,52984.4,35925.7,24264.9,1598.5,2314.6,5743.3,,3616.3,4001.5,,4001.9,4675.9,2178.3,2767.6,3950.1,1150.0,1021.6,819.7,786.2,606.4,18031.2,744.0,633.6,1819.4,405.6,2021.4,371.0,4950.1,5206.6,2012.3,3482.5,3355.5,2299.9,2864.8,4027.8 +43.16666667,35346.9,27858.5,45868.4,31614.3,49423.9,47480.0,56697.2,62036.8,,53760.1,44035.9,24898.2,1486.2,2310.1,5990.3,,3532.6,3970.9,,3958.6,4739.2,2454.3,2619.6,3494.7,1081.8,1211.9,990.4,749.7,627.1,17654.5,720.9,867.0,2104.6,367.2,1656.2,363.8,4689.5,5116.8,1914.8,3284.3,3103.5,2127.5,2838.6,3968.8 +43.75,34432.6,27718.5,43813.7,39264.1,50454.4,48720.2,52939.0,63599.1,,53949.4,50512.6,23836.6,1391.4,2082.0,5521.0,,3122.7,3742.2,,3930.6,4821.3,2916.9,2257.4,3274.7,1077.0,1400.7,1213.9,726.2,689.0,17583.0,673.8,1068.8,2289.5,362.8,1677.5,366.6,4390.0,4375.8,1866.4,3143.0,2851.8,1997.6,3616.8,3711.7 +44.33333333,32819.0,28484.2,44542.2,40294.0,51171.9,51007.2,54179.2,63593.3,,53514.0,55038.1,23866.2,1387.5,1981.7,4606.7,,2911.3,3654.6,,3717.5,4764.1,3117.3,2195.9,3374.3,1117.1,1488.7,1335.8,670.6,732.7,17303.9,631.0,1256.6,2330.4,392.9,1751.8,344.0,4246.7,3835.7,2007.6,3190.6,2627.8,1871.9,3502.4,3563.7 +44.91666667,31713.5,29043.7,48955.9,37990.0,53536.2,53566.3,53608.0,63389.9,,55999.2,59141.8,23643.4,1504.1,2086.5,3875.5,,3086.1,3593.3,,3462.8,4792.7,3064.9,2333.7,3757.4,1147.3,1426.4,1365.4,630.7,824.0,17691.1,600.1,1408.3,2271.6,487.8,1714.4,302.5,4227.3,3479.7,2145.0,3385.7,2834.2,,3613.9,3490.5 +45.5,29792.6,28207.1,56246.3,36871.5,55062.9,54450.2,54389.0,62398.1,,57572.9,61025.6,23776.7,1605.3,2292.2,3592.0,,3604.6,3447.9,,2936.7,4880.6,2831.1,2451.8,4365.6,1169.4,1392.2,1469.0,600.4,795.1,18449.6,587.7,1589.8,2179.8,579.5,1682.2,319.3,4153.0,3283.5,2223.6,3615.2,3272.5,,3409.7,3441.8 +46.08333333,26952.7,27679.8,56685.6,34224.6,56006.8,54893.0,53219.6,61480.4,,57296.8,60895.2,24318.6,1733.3,2207.9,3810.2,,3990.2,3188.2,,2582.8,4991.1,2650.4,2751.4,5046.4,1231.9,1305.7,1498.7,567.3,757.1,16728.5,592.9,1824.4,2001.6,613.2,1624.5,329.1,4038.5,3262.8,2349.5,3823.7,2875.0,,,3198.0 +46.66666667,24984.7,28760.6,48665.9,31904.6,55152.5,55364.8,50721.2,60619.4,,53737.4,61153.2,24433.6,1953.3,2075.9,4432.9,,3948.3,2868.7,,2482.5,5139.7,2393.9,3141.3,5491.4,1352.6,1130.6,1480.9,550.0,727.3,16460.6,624.5,2053.3,1880.7,579.0,1519.4,337.3,3875.5,3508.1,2600.2,4027.4,2935.8,,,2892.7 +47.25,24253.2,30569.5,45796.9,31123.0,58947.4,58818.2,52261.2,63195.8,,59252.3,62428.0,27974.4,2033.7,1948.4,4767.9,,3526.2,2716.9,,2511.0,5224.1,2229.4,3158.1,5645.1,1492.3,961.5,1392.4,525.8,739.7,16598.9,656.9,2343.1,1720.8,690.2,1190.6,359.8,3939.0,3588.3,2956.1,4535.8,3215.6,,,2784.4 +47.83333333,23824.7,29722.7,45230.4,28836.3,55809.7,59266.3,51685.7,62051.5,,60067.5,62243.1,29000.4,2097.7,1775.4,4970.5,,3207.9,2695.7,,2522.1,5498.8,2291.1,2914.5,5518.8,1549.4,893.2,1412.2,420.3,799.4,16151.4,660.3,2665.1,1611.5,705.0,870.8,363.7,3723.0,3208.2,3155.4,4863.5,3263.4,,,2705.5 +48.41666667,24878.9,30709.2,47448.1,25211.7,51563.4,60393.9,52831.0,61604.2,,61316.2,61956.6,30315.0,2016.5,1719.5,5103.6,,3025.0,2719.4,,2719.2,5922.4,2695.4,2638.6,5830.5,1622.8,956.0,1392.7,339.5,755.0,16195.7,644.8,2984.8,1591.6,722.5,642.1,352.5,3512.6,2931.1,3210.7,4584.9,3135.3,,,2728.4 +49.0,25993.2,33704.1,48010.1,23860.2,48276.4,60797.4,51861.1,62302.7,,61379.8,61851.4,29957.9,1972.9,1624.9,5266.4,,2862.3,2694.8,,2742.9,6276.1,2947.1,2243.5,6387.8,1687.5,941.3,1369.9,290.6,713.3,16240.8,658.7,3177.9,1634.3,750.9,537.1,351.1,3083.8,2764.2,3038.0,3922.1,3004.5,,,2682.3 +49.58333333,25404.9,37375.9,48254.1,23650.1,44959.1,60525.8,51648.4,61409.4,,61346.1,62054.7,28755.6,2036.9,1654.5,5512.3,,2818.2,2561.3,,2589.3,5938.3,,2070.2,6447.4,1681.4,876.1,1238.4,275.2,674.6,14536.0,683.2,3764.3,1814.9,760.8,534.5,365.8,2754.4,2655.1,2851.7,3461.8,2814.1,,,2532.2 +50.16666667,25259.2,41298.6,48616.8,24689.9,42551.6,60000.9,47635.1,60421.0,,60536.6,61520.0,26444.9,2213.8,1669.5,5913.9,,2966.0,2434.2,,2393.3,5908.3,,2098.1,6094.4,1624.6,819.9,1132.4,276.7,627.9,15372.4,716.6,4108.7,1865.2,756.6,603.7,384.8,2537.3,2544.4,2523.6,3281.5,2657.0,,,2404.7 +50.75,26015.1,39912.9,49130.3,27543.3,40363.6,59385.2,45017.2,61677.4,,61512.7,61480.1,25138.6,2535.1,1713.7,6414.4,,3062.0,2405.6,,2287.1,5953.0,,2100.6,6514.9,1671.9,819.7,1059.5,272.6,656.9,17025.4,749.2,4790.1,2015.6,703.6,775.1,428.7,2470.0,2356.9,2177.0,3279.2,2588.7,,,2368.5 +51.33333333,26348.8,43061.8,51164.8,28294.1,38411.9,58339.5,42976.9,63363.7,,61943.9,61545.0,24361.1,2880.5,1816.7,6346.3,,3118.6,2369.5,,2142.2,5506.6,,2048.2,7169.9,1787.3,880.6,993.0,266.7,725.6,15709.2,801.1,5675.6,2355.7,658.8,963.8,494.2,2387.8,2210.5,1759.1,3423.6,2528.0,,,2353.2 +51.91666667,25141.2,46637.2,51701.8,27108.3,35412.9,57524.0,43240.5,63938.9,,62540.5,61574.4,24063.1,2997.3,1881.7,6682.7,,2883.7,2314.0,,2019.1,4659.0,,1870.1,7982.5,1837.9,911.4,993.3,268.5,729.5,15342.7,750.8,6626.9,2615.1,570.9,1035.0,583.1,2243.6,2166.4,1522.6,3449.5,2350.9,,,2302.3 +52.5,23629.0,46112.4,52452.4,26697.8,32854.6,56300.7,37370.2,64611.8,,63034.0,61855.0,23947.2,2994.2,1814.5,6872.3,,2606.6,,,1975.1,3939.6,,1961.7,8639.9,1740.3,916.2,1011.9,297.3,728.8,13976.3,685.3,7527.3,2725.9,473.1,1049.8,636.9,2147.1,2088.7,1499.7,3161.1,2257.6,,,2107.2 +53.08333333,22178.9,47115.3,52571.2,26276.6,31288.0,53749.6,39573.1,64724.3,,63567.4,62083.1,23677.5,2840.6,1649.7,6120.8,,2475.3,,,1955.4,3156.5,,2345.1,8700.0,1611.3,936.8,1052.8,343.7,653.9,13759.6,660.6,8271.6,2737.1,356.3,1102.5,605.0,2178.6,1850.1,1695.3,2609.2,2292.0,,,2016.1 +53.66666667,20824.3,47083.8,53595.2,25908.6,30576.1,52882.0,43184.3,64754.0,,63314.7,62191.5,23323.5,2461.4,1507.6,4997.2,,2366.6,,,1894.4,2685.1,,2589.2,7726.8,1445.5,976.9,1145.4,374.5,522.8,13044.4,704.6,8567.0,2785.7,277.7,1788.3,543.8,2171.8,1669.8,1906.6,2349.6,2307.3,,,1969.7 +54.25,19859.8,48686.2,53297.0,25676.3,30217.9,55167.6,43983.3,64493.6,,62055.0,60861.3,22815.0,2223.2,1428.6,4621.7,1709.1,2330.9,,,1934.4,2420.8,,2691.3,6257.2,1345.7,1058.8,1193.3,401.3,485.5,13659.3,797.5,9752.9,2929.7,252.5,2316.8,489.4,2152.4,1573.7,2059.0,2371.1,,,,1899.2 +54.83333333,19057.6,51375.5,54572.0,24576.8,,54546.5,41825.5,64009.0,,61434.8,60806.2,22053.5,2189.0,1426.5,4569.6,1971.3,2338.4,,,2011.9,2293.0,,2674.1,5414.0,1357.0,1206.2,1291.8,404.7,483.4,12946.6,852.8,9348.9,2992.0,270.8,1145.8,478.1,1997.0,1520.7,2169.0,2586.9,,,,1798.9 +55.41666667,18975.2,50249.3,55969.3,23135.0,,53161.1,42646.8,64137.6,,61493.8,59097.1,21313.5,2284.7,1339.5,4639.0,2280.7,2441.2,,,1959.6,2202.9,,2677.4,4651.6,1491.6,1441.5,1360.6,392.0,505.2,10840.3,900.8,9189.4,3152.0,330.3,841.6,492.5,1884.4,1701.0,2268.2,2976.0,,,,1685.8 +56.0,19337.3,49171.2,57798.6,21503.0,,51466.9,46346.3,63189.2,,61469.7,58312.7,20880.9,2143.0,1308.6,4843.8,2367.2,2498.8,,,1934.7,2114.8,,2765.4,4220.1,1805.6,1664.9,1281.8,381.9,500.6,9003.4,945.5,9312.5,3697.4,393.0,758.1,524.9,1815.3,1872.2,3378.2,3237.7,,,,1814.1 +56.58333333,20527.8,49508.2,59387.8,20738.2,,52041.6,51345.0,62163.0,,60922.3,59528.8,20763.8,1858.7,1378.1,5147.8,2399.4,2352.4,,,2046.0,2048.1,,2511.1,4213.4,2128.3,1762.9,1160.9,387.6,513.2,7597.7,975.4,9636.9,4485.3,455.1,772.9,542.7,1724.0,1774.1,7241.9,3198.2,,,, +57.16666667,22182.9,54290.4,58246.7,20139.5,,48589.8,57768.5,61385.6,,60226.7,60795.9,20353.5,1622.1,1417.1,5961.3,2370.4,2298.6,,,2076.4,1981.8,,2225.3,4726.8,2017.6,1861.2,1070.7,406.2,513.9,6185.6,902.8,9696.7,5676.8,495.0,926.1,545.8,1643.7,1539.8,10442.9,3025.5,,,, +57.75,24135.5,56262.1,57502.3,20037.6,,44592.0,58118.8,60804.4,,59269.8,60422.0,20105.7,1446.3,1374.7,7050.3,2170.4,2334.1,,,2016.7,2000.9,,1822.7,4479.1,1956.6,1793.9,1011.4,425.4,519.9,4991.4,857.5,9524.2,6270.9,506.3,1056.5,527.0,1543.3,1459.1,11615.4,3121.9,,,, +58.33333333,25171.6,59294.3,57283.4,20001.9,,41753.8,57468.6,60303.8,,59338.8,60126.3,19719.4,1416.1,,7031.9,2054.9,2354.5,,,1946.2,2015.5,,1483.2,3900.0,2079.3,1488.0,935.8,449.2,567.1,3751.5,847.2,9087.9,6756.8,481.5,1034.4,525.1,1533.3,,10421.1,3440.3,,,, +58.91666667,25918.7,58680.9,,20119.8,,40440.3,56806.5,,,60741.1,60074.2,19184.6,1430.8,,6272.4,2012.2,2424.0,,,1779.0,1961.2,,1360.2,3773.6,2275.6,1190.3,769.4,474.7,597.8,3268.8,833.7,8881.6,7451.7,407.9,881.6,543.5,1419.8,,8202.6,3361.3,,,, +59.5,25425.9,55311.9,,20259.6,,39877.6,54766.4,,,60639.8,59860.2,18821.0,1483.8,,5616.4,2068.2,2665.4,,,1620.9,1994.4,,1211.9,4322.9,2392.0,1122.2,617.7,512.9,617.6,2471.2,825.2,8756.9,7459.5,360.6,771.4,558.4,,,6113.7,3105.9,,,, +60.08333333,,53918.9,,20605.5,,40083.0,,,,58653.4,60085.2,18400.8,1609.9,,4737.0,2012.6,2945.6,,,1500.4,1828.7,,1045.4,4830.9,2449.7,1164.2,492.7,557.5,630.5,1891.0,808.7,8177.3,7587.7,346.2,725.5,597.6,,,4107.9,2873.2,,,, +60.66666667,,50168.8,,20557.4,,40649.0,,,,55934.8,60017.5,18361.2,1582.7,,3464.9,1920.2,3244.4,,,1413.2,1274.5,,944.3,5053.1,2531.8,1311.5,396.3,598.6,653.7,1483.4,786.8,8086.4,7702.7,360.4,707.4,654.5,,,2814.0,2800.9,,,, +61.25,,47898.7,,20143.4,,40633.1,,,,,60613.2,18224.1,1662.2,,2737.1,1776.6,3638.0,,,1326.6,1092.0,,834.5,4984.2,2315.3,1373.4,358.4,612.9,718.8,1205.8,747.8,7950.3,7977.7,392.1,703.3,706.7,,,2251.9,3096.6,,,, +61.83333333,,,,19363.4,,,,,,,59895.4,,1881.5,,2435.9,1622.7,3731.9,,,1327.8,1068.9,,,4452.6,2104.1,1336.0,383.6,607.2,774.3,1020.8,784.4,7656.1,8120.1,398.2,701.2,755.7,,,1996.9,3437.3,,,, +62.41666667,,,,19332.4,,,,,,,,,1934.1,,,1484.2,3676.1,,,1436.0,1061.4,,,3786.0,2148.2,1172.7,464.1,586.5,792.5,928.7,847.1,7305.0,8072.5,405.2,710.8,809.4,,,1794.9,3452.3,,,, +63.0,,,,,,,,,,,,,2007.0,,,1509.2,3882.6,,,1498.1,1111.7,,,3191.5,2236.9,1070.8,513.9,558.9,791.5,872.6,890.8,6844.4,7605.4,371.8,709.6,903.2,,,,2822.1,,,, +63.58333333,,,,,,,,,,,,,2344.3,,,1760.5,3664.8,,,1458.7,1108.6,,,2524.7,2426.9,991.0,520.6,546.0,811.9,821.4,832.0,6116.7,7178.2,328.6,719.9,985.7,,,,2491.9,,,, +64.16666667,,,,,,,,,,,,,2475.5,,,2011.4,3448.3,,,1286.2,1032.6,,,2092.1,2562.1,878.9,452.4,532.4,824.0,756.4,732.7,5603.7,6880.9,311.8,706.4,1011.4,,,,2370.0,,,, +64.75,,,,,,,,,,,,,2302.4,,,1966.8,3453.7,,,1184.0,1047.6,,,1906.6,2663.1,875.9,429.3,549.2,875.1,690.5,644.0,5285.8,7145.7,325.1,683.9,1078.5,,,,2314.0,,,, +65.33333333,,,,,,,,,,,,,2087.8,,,1696.1,3820.0,,,1083.3,1086.4,,,1896.3,2675.0,922.1,411.8,612.6,943.5,616.3,603.2,5052.0,6866.6,362.5,667.4,1072.0,,,,2166.8,,,, +65.91666667,,,,,,,,,,,,,1843.8,,,1618.7,4148.7,,,978.2,,,,1859.8,2704.9,944.8,424.4,696.4,994.3,548.0,611.4,4890.2,6502.5,435.8,657.4,1013.5,,,,1961.1,,,, +66.5,,,,,,,,,,,,,1573.8,,,1632.7,3765.3,,,950.1,,,,1635.2,2570.3,928.3,445.9,750.9,1045.2,488.1,616.2,4981.0,5979.0,475.6,651.7,872.4,,,,1801.1,,,, +67.08333333,,,,,,,,,,,,,1339.0,,,1476.5,2898.5,,,908.0,,,,1526.2,2230.5,823.3,499.9,775.4,1169.9,424.7,613.6,5029.5,5437.6,462.6,655.7,785.8,,,,1673.5,,,, +67.66666667,,,,,,,,,,,,,1261.8,,,1320.1,2369.8,,,868.9,,,,1548.7,1957.5,773.8,621.6,773.3,1203.4,388.2,628.4,5342.6,5281.2,413.8,657.8,714.3,,,,1711.5,,,, +68.25,,,,,,,,,,,,,,,,1249.8,2107.7,,,896.9,,,,1556.4,1829.1,760.0,736.7,779.2,1071.7,369.0,649.4,5425.1,5036.4,365.5,648.9,641.7,,,,1752.5,,,, +68.83333333,,,,,,,,,,,,,,,,1184.9,1836.5,,,872.4,,,,1580.2,1706.4,804.1,789.9,764.3,930.6,369.6,673.7,5559.2,5393.5,326.5,617.5,569.1,,,,1658.9,,,, +69.41666667,,,,,,,,,,,,,,,,1200.7,1631.4,,,856.2,,,,1602.2,1629.8,910.5,754.8,726.1,884.9,388.7,715.8,5541.0,5495.5,299.5,552.3,526.2,,,,1600.3,,,, +70.0,,,,,,,,,,,,,,,,1223.5,1511.1,,,893.0,,,,1614.3,1587.6,926.3,722.2,687.6,887.8,403.1,736.8,5241.1,5053.8,287.4,556.1,505.1,,,,1634.1,,,, +70.58333333,,,,,,,,,,,,,,,,1438.7,1457.5,,,937.9,,,,1447.6,1529.0,844.9,751.8,648.7,924.9,442.2,736.9,5084.9,5340.3,282.3,684.1,504.5,,,,1724.1,,,, +71.16666663,,,,,,,,,,,,,,,,1708.5,1424.4,,,966.4,,,,1321.0,1459.2,741.8,737.0,608.0,1036.3,479.6,719.9,4904.1,5421.9,291.6,709.8,535.3,,,,1793.3,,,, +71.74999996,,,,,,,,,,,,,,,,2030.0,1356.4,,,,,,,1294.1,1383.9,661.6,699.7,600.3,1163.7,518.0,706.8,4337.4,5160.1,311.4,740.9,557.8,,,,1871.1,,,, +72.33333329,,,,,,,,,,,,,,,,2371.9,,,,,,,,1233.4,1080.9,562.8,672.7,601.0,1231.6,555.1,711.0,3673.4,4332.9,349.7,743.9,584.5,,,,1809.0,,,, +72.91666662,,,,,,,,,,,,,,,,2530.8,,,,,,,,1242.6,859.8,488.8,731.7,600.9,1206.1,572.8,744.8,3317.5,4105.6,380.8,657.7,586.5,,,,1688.0,,,, +73.49999995,,,,,,,,,,,,,,,,2917.8,,,,,,,,1493.6,788.4,466.7,784.1,630.9,1158.3,611.8,788.6,2859.4,3619.8,386.3,614.2,575.3,,,,1548.3,,,, +74.08333328,,,,,,,,,,,,,,,,3287.0,,,,,,,,1824.6,814.5,487.6,825.9,668.3,1129.9,616.0,791.2,2403.9,3899.8,395.0,632.8,556.7,,,,1393.8,,,, +74.66666661,,,,,,,,,,,,,,,,3256.7,,,,,,,,2027.5,885.6,526.5,831.7,695.4,1098.1,554.0,777.6,1993.6,3831.9,412.6,729.4,561.2,,,,1314.1,,,, +75.24999994,,,,,,,,,,,,,,,,3005.9,,,,,,,,2011.2,790.7,583.2,870.2,700.1,1135.7,,756.7,1728.3,3369.9,425.2,733.4,590.2,,,,1295.7,,,, +75.83333327,,,,,,,,,,,,,,,,2985.9,,,,,,,,1834.9,648.3,552.7,943.7,666.9,1268.0,,732.6,1510.1,2810.6,394.3,720.8,640.0,,,,1379.4,,,, +76.4166666,,,,,,,,,,,,,,,,3487.3,,,,,,,,1538.0,545.0,492.8,1034.1,625.5,1579.5,,702.6,1340.6,2483.7,368.8,720.0,632.0,,,,1539.4,,,, +76.99999993,,,,,,,,,,,,,,,,4122.6,,,,,,,,1420.2,468.2,487.1,1017.5,604.4,1917.5,,664.9,1212.6,2165.1,360.5,683.4,598.2,,,,1630.5,,,, +77.58333326,,,,,,,,,,,,,,,,4696.0,,,,,,,,1387.7,428.2,523.0,980.2,594.0,2079.9,,630.5,1132.3,1851.8,346.6,579.5,596.0,,,,1587.6,,,, +78.16666659,,,,,,,,,,,,,,,,4870.2,,,,,,,,1384.6,437.9,553.5,1034.9,562.3,2365.1,,618.6,1085.7,1656.8,319.9,512.1,615.9,,,,1471.2,,,, +78.74999992,,,,,,,,,,,,,,,,4461.2,,,,,,,,1422.8,488.1,588.8,1106.4,486.2,3249.9,,614.0,1032.5,1501.9,311.4,487.2,579.7,,,,1358.6,,,, +79.33333325,,,,,,,,,,,,,,,,3987.5,,,,,,,,1421.5,557.0,555.0,1122.0,442.8,4151.4,,619.2,969.8,1380.1,304.2,429.4,514.3,,,,1310.9,,,, +79.91666658,,,,,,,,,,,,,,,,3619.2,,,,,,,,1319.7,627.4,474.5,1120.8,372.4,4806.2,,627.7,973.3,1285.0,297.0,435.0,482.3,,,,1352.6,,,, +80.49999991,,,,,,,,,,,,,,,,3660.9,,,,,,,,1295.2,717.5,456.3,1372.9,308.5,4700.2,,658.9,983.9,1113.5,297.1,463.4,476.0,,,,1362.7,,,, +81.08333324,,,,,,,,,,,,,,,,3856.3,,,,,,,,,891.1,509.9,1552.7,271.1,4354.6,,722.6,986.8,958.8,302.1,458.6,503.0,,,,,,,, +81.66666657,,,,,,,,,,,,,,,,4296.4,,,,,,,,,1198.9,580.6,1710.9,251.5,4287.9,,746.4,999.4,886.2,314.3,455.1,528.7,,,,,,,, +82.2499999,,,,,,,,,,,,,,,,4525.6,,,,,,,,,1426.9,584.5,1777.5,242.2,4031.9,,782.1,996.5,859.2,333.4,459.8,557.9,,,,,,,, +82.83333323,,,,,,,,,,,,,,,,4305.3,,,,,,,,,1486.1,558.7,1777.9,249.6,3721.7,,855.3,1004.8,823.0,341.3,455.8,574.3,,,,,,,, +83.41666656,,,,,,,,,,,,,,,,3696.3,,,,,,,,,1606.4,571.5,1636.1,255.5,3281.4,,914.4,985.0,821.5,335.4,474.2,584.4,,,,,,,, +83.99999989,,,,,,,,,,,,,,,,3889.6,,,,,,,,,1691.1,604.3,1454.1,262.2,2682.8,,930.1,968.9,783.5,321.4,570.2,561.6,,,,,,,, +84.58333322,,,,,,,,,,,,,,,,3443.4,,,,,,,,,1823.9,628.8,1322.7,285.0,2074.6,,900.3,947.6,797.3,305.1,684.3,505.6,,,,,,,, +85.16666655,,,,,,,,,,,,,,,,3257.7,,,,,,,,,1807.2,616.2,1236.2,338.6,1489.5,,876.5,928.1,826.3,293.7,754.2,464.4,,,,,,,, +85.74999988,,,,,,,,,,,,,,,,2908.5,,,,,,,,,1722.9,587.3,1281.6,393.3,1128.1,,847.0,918.7,777.8,283.2,775.9,433.2,,,,,,,, +86.33333321,,,,,,,,,,,,,,,,2655.2,,,,,,,,,,,,,,,,,,,,,,,,,,,, +86.91666654,,,,,,,,,,,,,,,,2772.2,,,,,,,,,,,,,,,,,,,,,,,,,,,, +87.49999987,,,,,,,,,,,,,,,,2789.0,,,,,,,,,,,,,,,,,,,,,,,,,,,, +88.0833332,,,,,,,,,,,,,,,,2839.9,,,,,,,,,,,,,,,,,,,,,,,,,,,, +88.66666653,,,,,,,,,,,,,,,,3721.9,,,,,,,,,,,,,,,,,,,,,,,,,,,, +89.24999986,,,,,,,,,,,,,,,,3895.4,,,,,,,,,,,,,,,,,,,,,,,,,,,, +89.83333319,,,,,,,,,,,,,,,,3786.8,,,,,,,,,,,,,,,,,,,,,,,,,,,, +90.41666652,,,,,,,,,,,,,,,,3741.8,,,,,,,,,,,,,,,,,,,,,,,,,,,, +90.99999985,,,,,,,,,,,,,,,,3343.9,,,,,,,,,,,,,,,,,,,,,,,,,,,, +91.58333318,,,,,,,,,,,,,,,,3102.4,,,,,,,,,,,,,,,,,,,,,,,,,,,, +92.16666651,,,,,,,,,,,,,,,,2899.9,,,,,,,,,,,,,,,,,,,,,,,,,,,, +92.74999984,,,,,,,,,,,,,,,,2764.4,,,,,,,,,,,,,,,,,,,,,,,,,,,, +93.33333317,,,,,,,,,,,,,,,,2984.6,,,,,,,,,,,,,,,,,,,,,,,,,,,, +93.9166665,,,,,,,,,,,,,,,,3341.4,,,,,,,,,,,,,,,,,,,,,,,,,,,, +94.49999983,,,,,,,,,,,,,,,,3484.5,,,,,,,,,,,,,,,,,,,,,,,,,,,, +95.08333316,,,,,,,,,,,,,,,,4037.1,,,,,,,,,,,,,,,,,,,,,,,,,,,, +95.66666649,,,,,,,,,,,,,,,,4699.0,,,,,,,,,,,,,,,,,,,,,,,,,,,, +96.24999982,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +96.83333315,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +97.41666648,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +97.99999981,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +98.58333314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +99.16666647,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +99.7499998,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +100.3333331,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +100.9166665,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +101.4999998,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +102.0833331,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +102.6666665,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +103.2499998,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +103.8333331,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +104.4166664,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +104.9999998,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +105.5833331,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +106.1666664,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +106.7499998,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +107.3333331,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +107.9166664,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +108.4999998,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +109.0833331,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +109.6666664,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +110.2499997,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +110.8333331,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +111.4166664,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +111.9999997,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +112.5833331,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +113.1666664,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +113.7499997,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +114.3333331,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +114.9166664,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +115.4999997,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +116.083333,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +116.6666664,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +117.2499997,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +117.833333,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +118.4166664,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +118.9999997,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +119.583333,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +120.1666664,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +120.7499997,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +121.333333,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +121.9166663,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +122.4999997,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +123.083333,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +123.6666663,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +124.2499997,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +124.833333,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +125.4166663,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +125.9999997,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/tests/unit_tests/test_data_loading.py b/tests/unit_tests/test_data_loading.py deleted file mode 100644 index fc66ff7..0000000 --- a/tests/unit_tests/test_data_loading.py +++ /dev/null @@ -1,23 +0,0 @@ -# %% -from pathlib import Path - -import pandas as pd -from pandas import DataFrame - -DATA_DIR = Path(__file__).parent.parent / "data" -sample_csv = DATA_DIR / "Bioluminescence_test_data_1.csv" - - -def test_sample_csv_exists() -> None: - if not sample_csv.exists(): - raise FileNotFoundError(sample_csv) - - -def test_bioluminescence_csv_can_be_loaded() -> None: - df_bioluminescence: DataFrame = pd.read_csv(sample_csv, header=None) - if df_bioluminescence.empty: - msg = "Loaded DataFrame is empty" - raise ValueError(msg) - if df_bioluminescence.shape[1] <= 0: - msg = "Loaded DataFrame has no columns" - raise ValueError(msg) diff --git a/tests/unit_tests/test_livecell_cosinor_analysis.py b/tests/unit_tests/test_livecell_cosinor_analysis.py new file mode 100644 index 0000000..91b56a9 --- /dev/null +++ b/tests/unit_tests/test_livecell_cosinor_analysis.py @@ -0,0 +1,113 @@ +"""Unit tests for cosinor analysis.""" + +from __future__ import annotations + +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np +import pytest + +from cosinor_lite.livecell_cosinor_analysis import ( + CosinorAnalysis, + _sanitize_xy, + constant_model, + cosine_model_24, + cosine_model_damped, + cosine_model_free_period, +) + +MIN_VALID_POINTS = 4 +PERIOD_LOWER_BOUND = 20.0 +PERIOD_UPPER_BOUND = 28.0 + + +def test_constant_model_returns_mesor() -> None: + x = np.linspace(0.0, 1.0, 5, dtype=np.float64) + mesor = 1.23 + result = constant_model(x, mesor) + np.testing.assert_allclose(result, np.full_like(x, mesor)) + + +def test_cosine_model_implementations_match_formulas() -> None: + x = np.linspace(0.0, 24.0, 5, dtype=np.float64) + amplitude = 2.5 + acrophase = 3.0 + mesor = 1.1 + period = 26.0 + damp = 0.02 + + direct_24 = amplitude * np.cos(2 * np.pi * (x - acrophase) / 24.0) + mesor + direct_free = amplitude * np.cos(2 * np.pi * (x - acrophase) / period) + mesor + direct_damped = amplitude * np.exp(-damp * x) * np.cos(2 * np.pi * (x - acrophase) / period) + mesor + + np.testing.assert_allclose(cosine_model_24(x, amplitude, acrophase, mesor), direct_24) + np.testing.assert_allclose(cosine_model_free_period(x, amplitude, acrophase, period, mesor), direct_free) + np.testing.assert_allclose( + cosine_model_damped(x, amplitude, damp, acrophase, period, mesor), + direct_damped, + ) + + +def test_sanitize_xy_enforces_minimum_points() -> None: + x = np.array([0.0, 1.0, np.nan], dtype=np.float64) + y = np.array([np.nan, 2.0, 3.0], dtype=np.float64) + with pytest.raises(ValueError, match="Not enough valid points"): + _sanitize_xy(x, y, min_points=3) + + +def _first_valid_trace(analysis: CosinorAnalysis) -> tuple[np.ndarray, np.ndarray]: + for column in analysis.time_series.T: + mask = np.isfinite(column) + if np.count_nonzero(mask) >= MIN_VALID_POINTS: + return analysis.time[mask], column[mask] + msg = "No trace has sufficient finite observations for cosinor fitting." + pytest.skip(msg) + raise AssertionError + + +def test_fit_cosinor_24_returns_expected_structure(cosinor_analysis: CosinorAnalysis) -> None: + x, y = _first_valid_trace(cosinor_analysis) + results, t_test, y_test = cosinor_analysis.fit_cosinor_24(x, y) + + expected_keys = {"mesor", "amplitude", "acrophase", "p-val osc", "r2", "r2_adj"} + assert expected_keys.issubset(results.keys()) # noqa: S101 + assert t_test.shape == y_test.shape # noqa: S101 + assert t_test.ndim == 1 # noqa: S101 + assert np.all(np.isfinite(y_test)) # noqa: S101 + + +def test_fit_cosinor_free_period_period_within_bounds(cosinor_analysis: CosinorAnalysis) -> None: + x, y = _first_valid_trace(cosinor_analysis) + results, _, _ = cosinor_analysis.fit_cosinor_free_period(x, y) + period = results["period"] + assert PERIOD_LOWER_BOUND <= period <= PERIOD_UPPER_BOUND # noqa: S101 + + +def test_fit_cosinor_damped_returns_non_negative_damp(cosinor_analysis: CosinorAnalysis) -> None: + x, y = _first_valid_trace(cosinor_analysis) + results, _, _ = cosinor_analysis.fit_cosinor_damped(x, y) + damp = results["damp"] + assert damp >= 0.0 # noqa: S101 + + +def test_get_cosinor_fits_invalid_method_raises(cosinor_analysis: CosinorAnalysis) -> None: + x, y = _first_valid_trace(cosinor_analysis) + with pytest.raises(ValueError, match="Unknown cosine model"): + cosinor_analysis.get_cosinor_fits(x, y, method="invalid") + + +def test_fit_cosinor_exports_results(cosinor_analysis: CosinorAnalysis) -> None: + df_export, csv_path, fig, pdf_path = cosinor_analysis.fit_cosinor( + group="group1", + cosinor_model="cosinor_24", + ) + + try: + assert not df_export.empty # noqa: S101 + assert Path(csv_path).is_file() # noqa: S101 + assert Path(pdf_path).is_file() # noqa: S101 + finally: + Path(csv_path).unlink(missing_ok=True) + Path(pdf_path).unlink(missing_ok=True) + plt.close(fig) diff --git a/tests/unit_tests/test_livecell_dataset.py b/tests/unit_tests/test_livecell_dataset.py new file mode 100644 index 0000000..f5f5191 --- /dev/null +++ b/tests/unit_tests/test_livecell_dataset.py @@ -0,0 +1,144 @@ +import numpy as np +import pytest + +from cosinor_lite.livecell_dataset import LiveCellDataset + + +def test_to_2d_f64_valid(bioluminescence_dataset: LiveCellDataset) -> None: + arr = bioluminescence_dataset.time_series + result = LiveCellDataset._to_2d_f64(arr) # noqa: SLF001 + assert result.shape == arr.shape # noqa: S101 + assert result.dtype == np.float64 # noqa: S101 + + +def test_to_2d_f64_invalid() -> None: + arr = np.ones(3) + with pytest.raises(ValueError, match="expected 2D array"): + LiveCellDataset._to_2d_f64(arr) # noqa: SLF001 + + +def test_check_columns_valid(bioluminescence_dataset: LiveCellDataset) -> None: + ds = bioluminescence_dataset + assert ds.time_series.shape[1] == len(ds.ids) # noqa: S101 + assert ds.time_series.shape[1] == len(ds.group) # noqa: S101 + assert ds.time_series.shape[1] == len(ds.replicate) # noqa: S101 + + +def test_check_columns_invalid() -> None: + ids = ["A", "B"] + group = ["group1", "group2"] + replicate = [1, 2] + time_series = np.ones((10, 3)) + time = np.arange(10) + with pytest.raises(ValueError, match="Length of ids must match number of columns in time_series"): + LiveCellDataset( + ids=ids, + group=group, + replicate=replicate, + time_series=time_series, + time=time, + ) + + +def test_get_group1_ids_replicates_data(bioluminescence_dataset: LiveCellDataset) -> None: + ds = bioluminescence_dataset + ids, replicates, data = ds.get_group1_ids_replicates_data() + assert set(ids).issubset(set(ds.ids)) # noqa: S101 + group_values = set(np.array(ds.group)[np.isin(ds.ids, ids)]) + assert group_values <= {ds.group1_label} # noqa: S101 + assert data.shape[1] == len(ids) # noqa: S101 + assert len(replicates) == len(ids) # noqa: S101 + + +def test_get_group2_ids_replicates_data(bioluminescence_dataset: LiveCellDataset) -> None: + ds = bioluminescence_dataset + ids, replicates, data = ds.get_group2_ids_replicates_data() + assert set(ids).issubset(set(ds.ids)) # noqa: S101 + group_values = set(np.array(ds.group)[np.isin(ds.ids, ids)]) + assert group_values <= {ds.group2_label} # noqa: S101 + assert data.shape[1] == len(ids) # noqa: S101 + assert len(replicates) == len(ids) # noqa: S101 + + +def test_linear_trend(bioluminescence_dataset: LiveCellDataset) -> None: + ds = bioluminescence_dataset + x = ds.time + y = ds.time_series[:, 0] + mask = np.isfinite(x) & np.isfinite(y) + x_valid = x[mask] + y_valid = y[mask] + x_fit, y_fit = ds.linear_trend(x_valid, y_valid) + assert x_fit.shape == y_fit.shape == x_valid.shape # noqa: S101 + assert np.all(np.isfinite(y_fit)) # noqa: S101 + + +def test_poly2_trend(bioluminescence_dataset: LiveCellDataset) -> None: + ds = bioluminescence_dataset + x = ds.time + y = ds.time_series[:, 0] + mask = np.isfinite(x) & np.isfinite(y) + x_valid = x[mask] + y_valid = y[mask] + x_fit, y_fit = ds.poly2_trend(x_valid, y_valid) + expected = np.polyval(np.polyfit(x_valid, y_valid, 2), x_valid) + assert x_fit.shape == y_fit.shape == x_valid.shape # noqa: S101 + assert np.allclose(y_fit, expected) # noqa: S101 + + +def test_moving_average_trend(bioluminescence_dataset: LiveCellDataset) -> None: + ds = bioluminescence_dataset + x = ds.time + y = ds.time_series[:, 0] + mask = np.isfinite(x) & np.isfinite(y) + x_ma, y_ma = ds.moving_average_trend(x[mask], y[mask], window=3) + assert len(x_ma) == len(y_ma) # noqa: S101 + assert len(x_ma) > 0 # noqa: S101 + assert np.all(np.isfinite(y_ma)) # noqa: S101 + + +def test_moving_average_trend_invalid_window(bioluminescence_dataset: LiveCellDataset) -> None: + ds = bioluminescence_dataset + x = ds.time + y = ds.time_series[:, 0] + with pytest.raises(ValueError, match="Window size must be at least 1"): + ds.moving_average_trend(x, y, window=0) + + +@pytest.mark.parametrize("method", ["none", "linear", "poly2", "moving_average"]) +def test_get_trend_methods(method: str, bioluminescence_dataset: LiveCellDataset) -> None: + ds = bioluminescence_dataset + x = ds.time + y = ds.time_series[:, 0] + mask = np.isfinite(x) & np.isfinite(y) + x_valid = x[mask] + y_valid = y[mask] + x_out, y_out = ds.get_trend(x_valid, y_valid, method=method, window=3) + assert isinstance(x_out, np.ndarray) # noqa: S101 + assert isinstance(y_out, np.ndarray) # noqa: S101 + assert x_out.shape == y_out.shape # noqa: S101 + if method != "moving_average": + assert x_out.shape == x_valid.shape # noqa: S101 + else: + assert x_out.size <= x_valid.size # noqa: S101 + + +def test_get_trend_invalid_method(bioluminescence_dataset: LiveCellDataset) -> None: + ds = bioluminescence_dataset + x = ds.time + y = ds.time_series[:, 0] + mask = np.isfinite(x) & np.isfinite(y) + with pytest.raises(ValueError, match="Unknown detrending method"): + ds.get_trend(x[mask], y[mask], method="unknown") + + +@pytest.mark.parametrize("group", ["group1", "group2"]) +def test_plot_group_data(bioluminescence_dataset: LiveCellDataset, group: str) -> None: + fig, tmp_path = bioluminescence_dataset.plot_group_data(group=group, method="linear", plot_style="scatter") + assert hasattr(fig, "savefig") # noqa: S101 + assert tmp_path.endswith(".pdf") # noqa: S101 + + +def test_plot_group_data_invalid_group(bioluminescence_dataset: LiveCellDataset) -> None: + ds = bioluminescence_dataset + with pytest.raises(ValueError, match="group must be 'group1' or 'group2'"): + ds.plot_group_data("invalid_group") diff --git a/tests/unit_tests/test_omics_dataset.py b/tests/unit_tests/test_omics_dataset.py new file mode 100644 index 0000000..c28e7a5 --- /dev/null +++ b/tests/unit_tests/test_omics_dataset.py @@ -0,0 +1,85 @@ +from __future__ import annotations + +import numpy as np +import pytest +from matplotlib import pyplot as plt +from matplotlib.figure import Figure +from scipy.stats import spearmanr + +from cosinor_lite.omics_dataset import OmicsDataset + + +def test_detected_timepoint_counts_cond1_matches_manual(omics_dataset: OmicsDataset) -> None: + dataset = omics_dataset + manual = dataset.df[dataset.columns_cond1].notna().T.groupby(dataset.t_cond1).any().T.sum(axis=1).to_numpy() + + result = dataset.detected_timepoint_counts("cond1") + + assert np.array_equal(result, manual) # noqa: S101 + + +def test_detected_timepoint_counts_cond2_matches_manual(omics_dataset: OmicsDataset) -> None: + dataset = omics_dataset + manual = dataset.df[dataset.columns_cond2].notna().T.groupby(dataset.t_cond2).any().T.sum(axis=1).to_numpy() + + result = dataset.detected_timepoint_counts("cond2") + + assert np.array_equal(result, manual) # noqa: S101 + + +def test_detected_timepoint_counts_invalid_condition(omics_dataset: OmicsDataset) -> None: + with pytest.raises(ValueError, match="Invalid condition: bad"): + omics_dataset.detected_timepoint_counts("bad") + + +def test_mean_expression_columns_initialised(omics_dataset: OmicsDataset) -> None: + dataset = omics_dataset + mean_cond1 = dataset.df[dataset.columns_cond1].mean(axis=1) + mean_cond2 = dataset.df[dataset.columns_cond2].mean(axis=1) + + assert np.allclose(dataset.df["mean_cond1"].to_numpy(), mean_cond1.to_numpy()) # noqa: S101 + assert np.allclose(dataset.df["mean_cond2"].to_numpy(), mean_cond2.to_numpy()) # noqa: S101 + + +def test_number_detected_columns_initialised(omics_dataset: OmicsDataset) -> None: + dataset = omics_dataset + count_cond1 = dataset.df[dataset.columns_cond1].count(axis=1) + count_cond2 = dataset.df[dataset.columns_cond2].count(axis=1) + + assert np.array_equal( # noqa: S101 + dataset.df["num_detected_cond1"].to_numpy(), + count_cond1.to_numpy(), + ) + assert np.array_equal( # noqa: S101 + dataset.df["num_detected_cond2"].to_numpy(), + count_cond2.to_numpy(), + ) + + +def test_expression_histogram_returns_two_panels(omics_dataset: OmicsDataset) -> None: + figure = omics_dataset.expression_histogram(bins=15) + expected_axis_count = 2 + + try: + assert isinstance(figure, Figure) # noqa: S101 + assert len(figure.axes) == expected_axis_count # noqa: S101 + assert figure.axes[0].get_title() == "Mean expression (Alpha)" # noqa: S101 + assert figure.axes[1].get_title() == "Mean expression (Beta)" # noqa: S101 + finally: + plt.close(figure) + + +def test_replicate_scatterplot_title_matches_correlations(omics_dataset: OmicsDataset) -> None: + dataset = omics_dataset + sample1, sample2 = dataset.columns_cond1[:2] + figure = dataset.replicate_scatterplot(sample1, sample2) + + try: + filtered = dataset.df[[sample1, sample2]].dropna() + x = filtered[sample1].to_numpy().flatten() + y = filtered[sample2].to_numpy().flatten() + expected_title = f"Pearson R = {np.corrcoef(x, y)[0, 1]:.2f}, Spearman R = {spearmanr(x, y).statistic:.2f}" + assert isinstance(figure, Figure) # noqa: S101 + assert figure.axes[0].get_title() == expected_title # noqa: S101 + finally: + plt.close(figure) diff --git a/tests/unit_tests/test_omics_differential_rhytmicity.py b/tests/unit_tests/test_omics_differential_rhytmicity.py new file mode 100644 index 0000000..b0f0623 --- /dev/null +++ b/tests/unit_tests/test_omics_differential_rhytmicity.py @@ -0,0 +1,329 @@ +from __future__ import annotations + +from collections.abc import Iterable +from typing import TypeVar + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import pytest + +from cosinor_lite.omics_dataset import OmicsDataset +from cosinor_lite.omics_differential_rhytmicity import ( + OmicsHeatmap, + TimeSeriesExample, + W, + _weight_mapping, + akaike_weights_from_bics, + amp_from_ab, + bic, + build_design, + build_design_cond1, + build_design_cond2, + phase_from_ab, +) + +_T = TypeVar("_T") + + +def test_phase_from_ab_returns_expected_hours() -> None: + result_zero = phase_from_ab(1.0, 0.0) + result_quarter = phase_from_ab(0.0, 1.0) + + assert result_zero == pytest.approx(0.0) # noqa: S101 + assert result_quarter == pytest.approx(6.0) # noqa: S101 + + +def test_amp_from_ab_matches_euclidean_norm() -> None: + result = amp_from_ab(3.0, 4.0) + + assert result == pytest.approx(5.0) # noqa: S101 + + +def test_bic_prefers_lower_log_likelihood_penalized() -> None: + base = bic(llf=-50.0, k=4, n=100) + more_params = bic(llf=-49.0, k=10, n=100) + + assert base < more_params # noqa: S101 + + +def test_akaike_weights_are_normalized_and_ranked() -> None: + weights = akaike_weights_from_bics(np.array([100.0, 102.0, 105.0])) + + assert weights.sum() == pytest.approx(1.0) # noqa: S101 + assert weights[0] > weights[1] > weights[2] # noqa: S101 + + +def test_weight_mapping_populates_model_columns() -> None: + mapping = _weight_mapping(model_ids=(2, 4), weights=np.array([0.7, 0.2])) + + assert mapping["w_model2"] == pytest.approx(0.7) # noqa: S101 + assert mapping["w_model4"] == pytest.approx(0.2) # noqa: S101 + assert np.isnan(mapping["w_model1"]) # noqa: S101 + + +def test_build_design_includes_all_expected_columns(omics_dataset: OmicsDataset) -> None: + row = omics_dataset.df.iloc[0] + alpha_vals = row[omics_dataset.columns_cond1].to_numpy(float) + beta_vals = row[omics_dataset.columns_cond2].to_numpy(float) + + design = build_design(alpha_vals, beta_vals, omics_dataset.t_cond1, omics_dataset.t_cond2) + + expected_columns = { + "y", + "time", + "dataset", + "constant", + "cos_wt", + "sin_wt", + "is_alpha", + "is_beta", + } + + assert set(design.columns) == expected_columns # noqa: S101 + assert set(design["dataset"]) == {"alpha", "beta"} # noqa: S101 + + alpha_mask = design["dataset"] == "alpha" + beta_mask = design["dataset"] == "beta" + + assert np.allclose( # noqa: S101 + np.cos(W * design.loc[alpha_mask, "time"].to_numpy(float)), + design.loc[alpha_mask, "cos_wt"].to_numpy(float), + ) + assert np.allclose( # noqa: S101 + np.sin(W * design.loc[beta_mask, "time"].to_numpy(float)), + design.loc[beta_mask, "sin_wt"].to_numpy(float), + ) + + +def test_build_design_cond1_only_contains_alpha_rows(omics_dataset: OmicsDataset) -> None: + row = omics_dataset.df.iloc[0] + alpha_vals = row[omics_dataset.columns_cond1].to_numpy(float) + + design = build_design_cond1(alpha_vals, omics_dataset.t_cond1) + + assert set(design["dataset"]) == {"alpha"} # noqa: S101 + assert np.allclose( # noqa: S101 + np.cos(W * design["time"].to_numpy(float)), + design["cos_wt"].to_numpy(float), + ) + + +def test_build_design_cond2_only_contains_beta_rows(omics_dataset: OmicsDataset) -> None: + row = omics_dataset.df.iloc[0] + beta_vals = row[omics_dataset.columns_cond2].to_numpy(float) + + design = build_design_cond2(beta_vals, omics_dataset.t_cond2) + + assert set(design["dataset"]) == {"beta"} # noqa: S101 + assert np.allclose( # noqa: S101 + np.sin(W * design["time"].to_numpy(float)), + design["sin_wt"].to_numpy(float), + ) + + +class _ProgressStub: + def tqdm( + self, + iterable: Iterable[_T], + total: int | None = None, + desc: str | None = None, + ) -> Iterable[_T]: + del total, desc + return iterable + + +@pytest.fixture +def synthetic_omics_dataset() -> OmicsDataset: + times = np.array([0.0, 8.0, 16.0], dtype=float) + dataset_frame = pd.DataFrame( + { + "Genes": ["gene_both", "gene_cond1", "gene_cond2"], + "alpha_0": [1.0, 1.5, np.nan], + "alpha_8": [1.2, 1.7, np.nan], + "alpha_16": [1.1, 1.6, np.nan], + "beta_0": [0.9, np.nan, 1.0], + "beta_8": [1.1, np.nan, 1.2], + "beta_16": [1.0, np.nan, 1.3], + }, + ) + dataset = OmicsDataset( + df=dataset_frame.copy(), + columns_cond1=["alpha_0", "alpha_8", "alpha_16"], + columns_cond2=["beta_0", "beta_8", "beta_16"], + t_cond1=times, + t_cond2=times, + cond1_label="Alpha", + cond2_label="Beta", + ) + dataset.df["is_expressed_cond1"] = [True, True, False] + dataset.df["is_expressed_cond2"] = [True, False, True] + return dataset + + +@pytest.fixture +def heatmap_dataframe() -> pd.DataFrame: + data = { + "Genes": [ + "gene_m2b", + "gene_m2c", + "gene_m3a", + "gene_m3c", + "gene_m4", + "gene_m5", + ], + "model": [2, 2, 3, 3, 4, 5], + "subclass": ["b", "c", "a", "c", "c", "c"], + "alpha_phase": [np.nan, 1.0, 2.0, 3.0, 4.0, 5.0], + "beta_phase": [0.0, 1.5, np.nan, 3.0, 4.0, 5.0], + "alpha_amp": [np.nan, 0.6, 1.2, 0.8, 1.1, 1.0], + "beta_amp": [0.9, 1.1, np.nan, 0.7, 0.6, 0.5], + "w_model1": [np.nan, 0.0, 0.0, 0.0, 0.0, 0.0], + "w_model2": [0.7, 0.2, 0.1, 0.1, 0.1, 0.1], + "w_model3": [np.nan, 0.1, 0.6, 0.3, 0.2, 0.2], + "w_model4": [np.nan, 0.1, np.nan, 0.3, 0.5, 0.3], + "w_model5": [np.nan, 0.6, np.nan, 0.2, 0.2, 0.4], + "alpha_0": [np.nan, 1.2, 2.0, 1.1, 0.9, 1.0], + "alpha_8": [np.nan, 1.0, 2.2, 1.3, 1.0, 1.2], + "alpha_16": [np.nan, 1.1, 2.4, 1.4, 1.1, 1.3], + "beta_0": [1.0, 1.0, np.nan, 0.9, 1.2, 1.3], + "beta_8": [1.1, 0.9, np.nan, 1.2, 0.8, 1.5], + "beta_16": [1.2, 0.8, np.nan, 1.1, 0.9, 1.4], + "is_expressed_cond1": [False, True, True, True, True, True], + "is_expressed_cond2": [True, True, False, True, True, True], + } + heatmap_frame = pd.DataFrame(data) + heatmap_frame["mean_cond1"] = heatmap_frame[["alpha_0", "alpha_8", "alpha_16"]].mean(axis=1) + heatmap_frame["mean_cond2"] = heatmap_frame[["beta_0", "beta_8", "beta_16"]].mean(axis=1) + return heatmap_frame + + +@pytest.fixture +def omics_heatmap(heatmap_dataframe: pd.DataFrame) -> OmicsHeatmap: + times = np.array([0.0, 8.0, 16.0], dtype=float) + return OmicsHeatmap( + df=heatmap_dataframe, + columns_cond1=["alpha_0", "alpha_8", "alpha_16"], + columns_cond2=["beta_0", "beta_8", "beta_16"], + t_cond1=times, + t_cond2=times, + cond1_label="Alpha", + cond2_label="Beta", + ) + + +def test_omics_heatmap_timepoint_means_shape(omics_heatmap: OmicsHeatmap) -> None: + means_cond1 = omics_heatmap.timepoint_means( + omics_heatmap.df, + omics_heatmap.columns_cond1, + omics_heatmap.t_cond1, + ) + means_cond2 = omics_heatmap.timepoint_means( + omics_heatmap.df, + omics_heatmap.columns_cond2, + omics_heatmap.t_cond2, + ) + + assert means_cond1.shape == (len(omics_heatmap.df), len(np.unique(omics_heatmap.t_cond1))) # noqa: S101 + assert means_cond2.shape == (len(omics_heatmap.df), len(np.unique(omics_heatmap.t_cond2))) # noqa: S101 + + +def test_omics_heatmap_get_z_score_standardizes_rows(omics_heatmap: OmicsHeatmap) -> None: + values = np.array([[1.0, 2.0, 3.0], [2.0, 2.0, 2.0]], dtype=float) + z_scores = omics_heatmap.get_z_score(values) + + assert np.allclose(z_scores[0].mean(), 0.0) # noqa: S101 + assert np.allclose(z_scores[0].std(ddof=0), 1.0) # noqa: S101 + assert np.all(z_scores[1] == 0.0) # noqa: S101 + + +def test_omics_heatmap_plot_heatmap_returns_figure(omics_heatmap: OmicsHeatmap) -> None: + fig = omics_heatmap.plot_heatmap() + + assert fig.axes # noqa: S101 + plt.close(fig) + + +@pytest.fixture +def time_series_dataframe() -> pd.DataFrame: + data = { + "Genes": ["gene_both", "gene_cond1", "gene_cond2"], + "alpha_0": [1.0, 1.5, np.nan], + "alpha_8": [1.2, 1.7, np.nan], + "alpha_16": [1.1, 1.6, np.nan], + "beta_0": [1.0, np.nan, 1.1], + "beta_8": [1.2, np.nan, 1.3], + "beta_16": [1.1, np.nan, 1.2], + "model": [1, 1, 1], + "subclass": ["c", "a", "b"], + "is_expressed_cond1": [True, True, False], + "is_expressed_cond2": [True, False, True], + } + series_frame = pd.DataFrame(data) + series_frame["mean_cond1"] = series_frame[["alpha_0", "alpha_8", "alpha_16"]].mean(axis=1) + series_frame["mean_cond2"] = series_frame[["beta_0", "beta_8", "beta_16"]].mean(axis=1) + return series_frame + + +@pytest.fixture +def time_series_example(time_series_dataframe: pd.DataFrame) -> TimeSeriesExample: + times = np.array([0.0, 8.0, 16.0], dtype=float) + return TimeSeriesExample( + df=time_series_dataframe, + columns_cond1=["alpha_0", "alpha_8", "alpha_16"], + columns_cond2=["beta_0", "beta_8", "beta_16"], + t_cond1=times, + t_cond2=times, + cond1_label="Alpha", + cond2_label="Beta", + ) + + +def test_time_series_example_get_test_function_expressed_both(time_series_example: TimeSeriesExample) -> None: + row = time_series_example.df[time_series_example.df["Genes"] == "gene_both"].iloc[0] + alpha_vec = row[time_series_example.columns_cond1].to_numpy(float) + beta_vec = row[time_series_example.columns_cond2].to_numpy(float) + + t_test, cond1_pred, cond2_pred = time_series_example.get_test_function_expressed_both( + alpha_vec, + beta_vec, + time_series_example.t_cond1, + time_series_example.t_cond2, + model=1, + ) + + assert t_test.shape == (100,) # noqa: S101 + assert cond1_pred.shape == (100,) # noqa: S101 + assert cond2_pred.shape == (100,) # noqa: S101 + assert np.isfinite(cond1_pred).all() # noqa: S101 + assert np.isfinite(cond2_pred).all() # noqa: S101 + + +def test_time_series_example_conditional_predictions(time_series_example: TimeSeriesExample) -> None: + row_cond1 = time_series_example.df[time_series_example.df["Genes"] == "gene_cond1"].iloc[0] + alpha_vec = row_cond1[time_series_example.columns_cond1].to_numpy(float) + + _, cond1_only_pred, cond1_only_placeholder = time_series_example.get_test_function_expressed_cond1( + alpha_vec, + time_series_example.t_cond1, + model=1, + ) + + row_cond2 = time_series_example.df[time_series_example.df["Genes"] == "gene_cond2"].iloc[0] + beta_vec = row_cond2[time_series_example.columns_cond2].to_numpy(float) + + _, cond2_placeholder, cond2_only_pred = time_series_example.get_test_function_expressed_cond2( + beta_vec, + time_series_example.t_cond2, + model=1, + ) + + assert np.isfinite(cond1_only_pred).all() # noqa: S101 + assert np.isnan(cond1_only_placeholder).all() # noqa: S101 + assert np.isnan(cond2_placeholder).all() # noqa: S101 + assert np.isfinite(cond2_only_pred).all() # noqa: S101 + + +def test_time_series_example_plot_time_series_missing_gene(time_series_example: TimeSeriesExample) -> None: + with pytest.raises(ValueError, match="not found"): + time_series_example.plot_time_series("missing_gene") diff --git a/tests/unit_tests/test_states_info.py b/tests/unit_tests/test_states_info.py deleted file mode 100644 index ce83135..0000000 --- a/tests/unit_tests/test_states_info.py +++ /dev/null @@ -1,28 +0,0 @@ -"""Tests for `cosinor_lite.states_info`.""" - - -import pytest -from cosinor_lite.states_info import ( - is_city_capitol_of_state, - slow_add, -) - - -@pytest.mark.parametrize( - argnames=("city_name", "state", "is_capitol"), - argvalues=[ - ("Montgomery", "Alabama", True), - ("Oklahoma City", "Oklahoma", True), - ("Salem", "Oregon", True), - ("Salt Lake City", "Alabama", False), - ], -) -def test__is_city_capitol_of_state(city_name: str, state: str, is_capitol: bool): - """Assert `is_city_captio_of_state()` returns correct answer for city-state pairs.""" - assert is_city_capitol_of_state(city_name=city_name, state=state) == is_capitol - - -@pytest.mark.slow -def test__slow_add(): - """Test `slow_add()`.""" - assert slow_add(1, 2) == 3 diff --git a/uv.lock b/uv.lock index e9a0a40..fdba46f 100644 --- a/uv.lock +++ b/uv.lock @@ -2,10 +2,29 @@ version = 1 revision = 2 requires-python = ">=3.11" resolution-markers = [ - "python_full_version >= '3.12'", + "python_full_version >= '3.13'", + "python_full_version == '3.12.*'", "python_full_version < '3.12'", ] +[[package]] +name = "aiofiles" +version = "24.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/03/a88171e277e8caa88a4c77808c20ebb04ba74cc4681bf1e9416c862de237/aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c", size = 30247, upload-time = "2024-06-24T11:02:03.584Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/45/30bb92d442636f570cb5651bc661f52b610e2eec3f891a5dc3a4c3667db0/aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5", size = 15896, upload-time = "2024-06-24T11:02:01.529Z" }, +] + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + [[package]] name = "annotated-types" version = "0.7.0" @@ -156,6 +175,62 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, ] +[[package]] +name = "audioop-lts" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/38/53/946db57842a50b2da2e0c1e34bd37f36f5aadba1a929a3971c5d7841dbca/audioop_lts-0.2.2.tar.gz", hash = "sha256:64d0c62d88e67b98a1a5e71987b7aa7b5bcffc7dcee65b635823dbdd0a8dbbd0", size = 30686, upload-time = "2025-08-05T16:43:17.409Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/d4/94d277ca941de5a507b07f0b592f199c22454eeaec8f008a286b3fbbacd6/audioop_lts-0.2.2-cp313-abi3-macosx_10_13_universal2.whl", hash = "sha256:fd3d4602dc64914d462924a08c1a9816435a2155d74f325853c1f1ac3b2d9800", size = 46523, upload-time = "2025-08-05T16:42:20.836Z" }, + { url = "https://files.pythonhosted.org/packages/f8/5a/656d1c2da4b555920ce4177167bfeb8623d98765594af59702c8873f60ec/audioop_lts-0.2.2-cp313-abi3-macosx_10_13_x86_64.whl", hash = "sha256:550c114a8df0aafe9a05442a1162dfc8fec37e9af1d625ae6060fed6e756f303", size = 27455, upload-time = "2025-08-05T16:42:22.283Z" }, + { url = "https://files.pythonhosted.org/packages/1b/83/ea581e364ce7b0d41456fb79d6ee0ad482beda61faf0cab20cbd4c63a541/audioop_lts-0.2.2-cp313-abi3-macosx_11_0_arm64.whl", hash = "sha256:9a13dc409f2564de15dd68be65b462ba0dde01b19663720c68c1140c782d1d75", size = 26997, upload-time = "2025-08-05T16:42:23.849Z" }, + { url = "https://files.pythonhosted.org/packages/b8/3b/e8964210b5e216e5041593b7d33e97ee65967f17c282e8510d19c666dab4/audioop_lts-0.2.2-cp313-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:51c916108c56aa6e426ce611946f901badac950ee2ddaf302b7ed35d9958970d", size = 85844, upload-time = "2025-08-05T16:42:25.208Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2e/0a1c52faf10d51def20531a59ce4c706cb7952323b11709e10de324d6493/audioop_lts-0.2.2-cp313-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:47eba38322370347b1c47024defbd36374a211e8dd5b0dcbce7b34fdb6f8847b", size = 85056, upload-time = "2025-08-05T16:42:26.559Z" }, + { url = "https://files.pythonhosted.org/packages/75/e8/cd95eef479656cb75ab05dfece8c1f8c395d17a7c651d88f8e6e291a63ab/audioop_lts-0.2.2-cp313-abi3-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ba7c3a7e5f23e215cb271516197030c32aef2e754252c4c70a50aaff7031a2c8", size = 93892, upload-time = "2025-08-05T16:42:27.902Z" }, + { url = "https://files.pythonhosted.org/packages/5c/1e/a0c42570b74f83efa5cca34905b3eef03f7ab09fe5637015df538a7f3345/audioop_lts-0.2.2-cp313-abi3-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:def246fe9e180626731b26e89816e79aae2276f825420a07b4a647abaa84becc", size = 96660, upload-time = "2025-08-05T16:42:28.9Z" }, + { url = "https://files.pythonhosted.org/packages/50/d5/8a0ae607ca07dbb34027bac8db805498ee7bfecc05fd2c148cc1ed7646e7/audioop_lts-0.2.2-cp313-abi3-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e160bf9df356d841bb6c180eeeea1834085464626dc1b68fa4e1d59070affdc3", size = 79143, upload-time = "2025-08-05T16:42:29.929Z" }, + { url = "https://files.pythonhosted.org/packages/12/17/0d28c46179e7910bfb0bb62760ccb33edb5de973052cb2230b662c14ca2e/audioop_lts-0.2.2-cp313-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:4b4cd51a57b698b2d06cb9993b7ac8dfe89a3b2878e96bc7948e9f19ff51dba6", size = 84313, upload-time = "2025-08-05T16:42:30.949Z" }, + { url = "https://files.pythonhosted.org/packages/84/ba/bd5d3806641564f2024e97ca98ea8f8811d4e01d9b9f9831474bc9e14f9e/audioop_lts-0.2.2-cp313-abi3-musllinux_1_2_ppc64le.whl", hash = "sha256:4a53aa7c16a60a6857e6b0b165261436396ef7293f8b5c9c828a3a203147ed4a", size = 93044, upload-time = "2025-08-05T16:42:31.959Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5e/435ce8d5642f1f7679540d1e73c1c42d933331c0976eb397d1717d7f01a3/audioop_lts-0.2.2-cp313-abi3-musllinux_1_2_riscv64.whl", hash = "sha256:3fc38008969796f0f689f1453722a0f463da1b8a6fbee11987830bfbb664f623", size = 78766, upload-time = "2025-08-05T16:42:33.302Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3b/b909e76b606cbfd53875693ec8c156e93e15a1366a012f0b7e4fb52d3c34/audioop_lts-0.2.2-cp313-abi3-musllinux_1_2_s390x.whl", hash = "sha256:15ab25dd3e620790f40e9ead897f91e79c0d3ce65fe193c8ed6c26cffdd24be7", size = 87640, upload-time = "2025-08-05T16:42:34.854Z" }, + { url = "https://files.pythonhosted.org/packages/30/e7/8f1603b4572d79b775f2140d7952f200f5e6c62904585d08a01f0a70393a/audioop_lts-0.2.2-cp313-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:03f061a1915538fd96272bac9551841859dbb2e3bf73ebe4a23ef043766f5449", size = 86052, upload-time = "2025-08-05T16:42:35.839Z" }, + { url = "https://files.pythonhosted.org/packages/b5/96/c37846df657ccdda62ba1ae2b6534fa90e2e1b1742ca8dcf8ebd38c53801/audioop_lts-0.2.2-cp313-abi3-win32.whl", hash = "sha256:3bcddaaf6cc5935a300a8387c99f7a7fbbe212a11568ec6cf6e4bc458c048636", size = 26185, upload-time = "2025-08-05T16:42:37.04Z" }, + { url = "https://files.pythonhosted.org/packages/34/a5/9d78fdb5b844a83da8a71226c7bdae7cc638861085fff7a1d707cb4823fa/audioop_lts-0.2.2-cp313-abi3-win_amd64.whl", hash = "sha256:a2c2a947fae7d1062ef08c4e369e0ba2086049a5e598fda41122535557012e9e", size = 30503, upload-time = "2025-08-05T16:42:38.427Z" }, + { url = "https://files.pythonhosted.org/packages/34/25/20d8fde083123e90c61b51afb547bb0ea7e77bab50d98c0ab243d02a0e43/audioop_lts-0.2.2-cp313-abi3-win_arm64.whl", hash = "sha256:5f93a5db13927a37d2d09637ccca4b2b6b48c19cd9eda7b17a2e9f77edee6a6f", size = 24173, upload-time = "2025-08-05T16:42:39.704Z" }, + { url = "https://files.pythonhosted.org/packages/58/a7/0a764f77b5c4ac58dc13c01a580f5d32ae8c74c92020b961556a43e26d02/audioop_lts-0.2.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:73f80bf4cd5d2ca7814da30a120de1f9408ee0619cc75da87d0641273d202a09", size = 47096, upload-time = "2025-08-05T16:42:40.684Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ed/ebebedde1a18848b085ad0fa54b66ceb95f1f94a3fc04f1cd1b5ccb0ed42/audioop_lts-0.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:106753a83a25ee4d6f473f2be6b0966fc1c9af7e0017192f5531a3e7463dce58", size = 27748, upload-time = "2025-08-05T16:42:41.992Z" }, + { url = "https://files.pythonhosted.org/packages/cb/6e/11ca8c21af79f15dbb1c7f8017952ee8c810c438ce4e2b25638dfef2b02c/audioop_lts-0.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fbdd522624141e40948ab3e8cdae6e04c748d78710e9f0f8d4dae2750831de19", size = 27329, upload-time = "2025-08-05T16:42:42.987Z" }, + { url = "https://files.pythonhosted.org/packages/84/52/0022f93d56d85eec5da6b9da6a958a1ef09e80c39f2cc0a590c6af81dcbb/audioop_lts-0.2.2-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:143fad0311e8209ece30a8dbddab3b65ab419cbe8c0dde6e8828da25999be911", size = 92407, upload-time = "2025-08-05T16:42:44.336Z" }, + { url = "https://files.pythonhosted.org/packages/87/1d/48a889855e67be8718adbc7a01f3c01d5743c325453a5e81cf3717664aad/audioop_lts-0.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dfbbc74ec68a0fd08cfec1f4b5e8cca3d3cd7de5501b01c4b5d209995033cde9", size = 91811, upload-time = "2025-08-05T16:42:45.325Z" }, + { url = "https://files.pythonhosted.org/packages/98/a6/94b7213190e8077547ffae75e13ed05edc488653c85aa5c41472c297d295/audioop_lts-0.2.2-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cfcac6aa6f42397471e4943e0feb2244549db5c5d01efcd02725b96af417f3fe", size = 100470, upload-time = "2025-08-05T16:42:46.468Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e9/78450d7cb921ede0cfc33426d3a8023a3bda755883c95c868ee36db8d48d/audioop_lts-0.2.2-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:752d76472d9804ac60f0078c79cdae8b956f293177acd2316cd1e15149aee132", size = 103878, upload-time = "2025-08-05T16:42:47.576Z" }, + { url = "https://files.pythonhosted.org/packages/4f/e2/cd5439aad4f3e34ae1ee852025dc6aa8f67a82b97641e390bf7bd9891d3e/audioop_lts-0.2.2-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:83c381767e2cc10e93e40281a04852facc4cd9334550e0f392f72d1c0a9c5753", size = 84867, upload-time = "2025-08-05T16:42:49.003Z" }, + { url = "https://files.pythonhosted.org/packages/68/4b/9d853e9076c43ebba0d411e8d2aa19061083349ac695a7d082540bad64d0/audioop_lts-0.2.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c0022283e9556e0f3643b7c3c03f05063ca72b3063291834cca43234f20c60bb", size = 90001, upload-time = "2025-08-05T16:42:50.038Z" }, + { url = "https://files.pythonhosted.org/packages/58/26/4bae7f9d2f116ed5593989d0e521d679b0d583973d203384679323d8fa85/audioop_lts-0.2.2-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:a2d4f1513d63c795e82948e1305f31a6d530626e5f9f2605408b300ae6095093", size = 99046, upload-time = "2025-08-05T16:42:51.111Z" }, + { url = "https://files.pythonhosted.org/packages/b2/67/a9f4fb3e250dda9e9046f8866e9fa7d52664f8985e445c6b4ad6dfb55641/audioop_lts-0.2.2-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:c9c8e68d8b4a56fda8c025e538e639f8c5953f5073886b596c93ec9b620055e7", size = 84788, upload-time = "2025-08-05T16:42:52.198Z" }, + { url = "https://files.pythonhosted.org/packages/70/f7/3de86562db0121956148bcb0fe5b506615e3bcf6e63c4357a612b910765a/audioop_lts-0.2.2-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:96f19de485a2925314f5020e85911fb447ff5fbef56e8c7c6927851b95533a1c", size = 94472, upload-time = "2025-08-05T16:42:53.59Z" }, + { url = "https://files.pythonhosted.org/packages/f1/32/fd772bf9078ae1001207d2df1eef3da05bea611a87dd0e8217989b2848fa/audioop_lts-0.2.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e541c3ef484852ef36545f66209444c48b28661e864ccadb29daddb6a4b8e5f5", size = 92279, upload-time = "2025-08-05T16:42:54.632Z" }, + { url = "https://files.pythonhosted.org/packages/4f/41/affea7181592ab0ab560044632571a38edaf9130b84928177823fbf3176a/audioop_lts-0.2.2-cp313-cp313t-win32.whl", hash = "sha256:d5e73fa573e273e4f2e5ff96f9043858a5e9311e94ffefd88a3186a910c70917", size = 26568, upload-time = "2025-08-05T16:42:55.627Z" }, + { url = "https://files.pythonhosted.org/packages/28/2b/0372842877016641db8fc54d5c88596b542eec2f8f6c20a36fb6612bf9ee/audioop_lts-0.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:9191d68659eda01e448188f60364c7763a7ca6653ed3f87ebb165822153a8547", size = 30942, upload-time = "2025-08-05T16:42:56.674Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ca/baf2b9cc7e96c179bb4a54f30fcd83e6ecb340031bde68f486403f943768/audioop_lts-0.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c174e322bb5783c099aaf87faeb240c8d210686b04bd61dfd05a8e5a83d88969", size = 24603, upload-time = "2025-08-05T16:42:57.571Z" }, + { url = "https://files.pythonhosted.org/packages/5c/73/413b5a2804091e2c7d5def1d618e4837f1cb82464e230f827226278556b7/audioop_lts-0.2.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:f9ee9b52f5f857fbaf9d605a360884f034c92c1c23021fb90b2e39b8e64bede6", size = 47104, upload-time = "2025-08-05T16:42:58.518Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/daa3308dc6593944410c2c68306a5e217f5c05b70a12e70228e7dd42dc5c/audioop_lts-0.2.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:49ee1a41738a23e98d98b937a0638357a2477bc99e61b0f768a8f654f45d9b7a", size = 27754, upload-time = "2025-08-05T16:43:00.132Z" }, + { url = "https://files.pythonhosted.org/packages/4e/86/c2e0f627168fcf61781a8f72cab06b228fe1da4b9fa4ab39cfb791b5836b/audioop_lts-0.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5b00be98ccd0fc123dcfad31d50030d25fcf31488cde9e61692029cd7394733b", size = 27332, upload-time = "2025-08-05T16:43:01.666Z" }, + { url = "https://files.pythonhosted.org/packages/c7/bd/35dce665255434f54e5307de39e31912a6f902d4572da7c37582809de14f/audioop_lts-0.2.2-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a6d2e0f9f7a69403e388894d4ca5ada5c47230716a03f2847cfc7bd1ecb589d6", size = 92396, upload-time = "2025-08-05T16:43:02.991Z" }, + { url = "https://files.pythonhosted.org/packages/2d/d2/deeb9f51def1437b3afa35aeb729d577c04bcd89394cb56f9239a9f50b6f/audioop_lts-0.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f9b0b8a03ef474f56d1a842af1a2e01398b8f7654009823c6d9e0ecff4d5cfbf", size = 91811, upload-time = "2025-08-05T16:43:04.096Z" }, + { url = "https://files.pythonhosted.org/packages/76/3b/09f8b35b227cee28cc8231e296a82759ed80c1a08e349811d69773c48426/audioop_lts-0.2.2-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2b267b70747d82125f1a021506565bdc5609a2b24bcb4773c16d79d2bb260bbd", size = 100483, upload-time = "2025-08-05T16:43:05.085Z" }, + { url = "https://files.pythonhosted.org/packages/0b/15/05b48a935cf3b130c248bfdbdea71ce6437f5394ee8533e0edd7cfd93d5e/audioop_lts-0.2.2-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0337d658f9b81f4cd0fdb1f47635070cc084871a3d4646d9de74fdf4e7c3d24a", size = 103885, upload-time = "2025-08-05T16:43:06.197Z" }, + { url = "https://files.pythonhosted.org/packages/83/80/186b7fce6d35b68d3d739f228dc31d60b3412105854edb975aa155a58339/audioop_lts-0.2.2-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:167d3b62586faef8b6b2275c3218796b12621a60e43f7e9d5845d627b9c9b80e", size = 84899, upload-time = "2025-08-05T16:43:07.291Z" }, + { url = "https://files.pythonhosted.org/packages/49/89/c78cc5ac6cb5828f17514fb12966e299c850bc885e80f8ad94e38d450886/audioop_lts-0.2.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0d9385e96f9f6da847f4d571ce3cb15b5091140edf3db97276872647ce37efd7", size = 89998, upload-time = "2025-08-05T16:43:08.335Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4b/6401888d0c010e586c2ca50fce4c903d70a6bb55928b16cfbdfd957a13da/audioop_lts-0.2.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:48159d96962674eccdca9a3df280e864e8ac75e40a577cc97c5c42667ffabfc5", size = 99046, upload-time = "2025-08-05T16:43:09.367Z" }, + { url = "https://files.pythonhosted.org/packages/de/f8/c874ca9bb447dae0e2ef2e231f6c4c2b0c39e31ae684d2420b0f9e97ee68/audioop_lts-0.2.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:8fefe5868cd082db1186f2837d64cfbfa78b548ea0d0543e9b28935ccce81ce9", size = 84843, upload-time = "2025-08-05T16:43:10.749Z" }, + { url = "https://files.pythonhosted.org/packages/3e/c0/0323e66f3daebc13fd46b36b30c3be47e3fc4257eae44f1e77eb828c703f/audioop_lts-0.2.2-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:58cf54380c3884fb49fdd37dfb7a772632b6701d28edd3e2904743c5e1773602", size = 94490, upload-time = "2025-08-05T16:43:12.131Z" }, + { url = "https://files.pythonhosted.org/packages/98/6b/acc7734ac02d95ab791c10c3f17ffa3584ccb9ac5c18fd771c638ed6d1f5/audioop_lts-0.2.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:088327f00488cdeed296edd9215ca159f3a5a5034741465789cad403fcf4bec0", size = 92297, upload-time = "2025-08-05T16:43:13.139Z" }, + { url = "https://files.pythonhosted.org/packages/13/c3/c3dc3f564ce6877ecd2a05f8d751b9b27a8c320c2533a98b0c86349778d0/audioop_lts-0.2.2-cp314-cp314t-win32.whl", hash = "sha256:068aa17a38b4e0e7de771c62c60bbca2455924b67a8814f3b0dee92b5820c0b3", size = 27331, upload-time = "2025-08-05T16:43:14.19Z" }, + { url = "https://files.pythonhosted.org/packages/72/bb/b4608537e9ffcb86449091939d52d24a055216a36a8bf66b936af8c3e7ac/audioop_lts-0.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:a5bf613e96f49712073de86f20dbdd4014ca18efd4d34ed18c75bd808337851b", size = 31697, upload-time = "2025-08-05T16:43:15.193Z" }, + { url = "https://files.pythonhosted.org/packages/f6/22/91616fe707a5c5510de2cac9b046a30defe7007ba8a0c04f9c08f27df312/audioop_lts-0.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:b492c3b040153e68b9fdaff5913305aaaba5bb433d8a7f73d5cf6a64ed3cc1dd", size = 25206, upload-time = "2025-08-05T16:43:16.444Z" }, +] + [[package]] name = "babel" version = "2.17.0" @@ -195,6 +270,54 @@ css = [ { name = "tinycss2" }, ] +[[package]] +name = "brotli" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/16/c92ca344d646e71a43b8bb353f0a6490d7f6e06210f8554c8f874e454285/brotli-1.2.0.tar.gz", hash = "sha256:e310f77e41941c13340a95976fe66a8a95b01e783d430eeaf7a2f87e0a57dd0a", size = 7388632, upload-time = "2025-11-05T18:39:42.86Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/ef/f285668811a9e1ddb47a18cb0b437d5fc2760d537a2fe8a57875ad6f8448/brotli-1.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:15b33fe93cedc4caaff8a0bd1eb7e3dab1c61bb22a0bf5bdfdfd97cd7da79744", size = 863110, upload-time = "2025-11-05T18:38:12.978Z" }, + { url = "https://files.pythonhosted.org/packages/50/62/a3b77593587010c789a9d6eaa527c79e0848b7b860402cc64bc0bc28a86c/brotli-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:898be2be399c221d2671d29eed26b6b2713a02c2119168ed914e7d00ceadb56f", size = 445438, upload-time = "2025-11-05T18:38:14.208Z" }, + { url = "https://files.pythonhosted.org/packages/cd/e1/7fadd47f40ce5549dc44493877db40292277db373da5053aff181656e16e/brotli-1.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:350c8348f0e76fff0a0fd6c26755d2653863279d086d3aa2c290a6a7251135dd", size = 1534420, upload-time = "2025-11-05T18:38:15.111Z" }, + { url = "https://files.pythonhosted.org/packages/12/8b/1ed2f64054a5a008a4ccd2f271dbba7a5fb1a3067a99f5ceadedd4c1d5a7/brotli-1.2.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2e1ad3fda65ae0d93fec742a128d72e145c9c7a99ee2fcd667785d99eb25a7fe", size = 1632619, upload-time = "2025-11-05T18:38:16.094Z" }, + { url = "https://files.pythonhosted.org/packages/89/5a/7071a621eb2d052d64efd5da2ef55ecdac7c3b0c6e4f9d519e9c66d987ef/brotli-1.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:40d918bce2b427a0c4ba189df7a006ac0c7277c180aee4617d99e9ccaaf59e6a", size = 1426014, upload-time = "2025-11-05T18:38:17.177Z" }, + { url = "https://files.pythonhosted.org/packages/26/6d/0971a8ea435af5156acaaccec1a505f981c9c80227633851f2810abd252a/brotli-1.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2a7f1d03727130fc875448b65b127a9ec5d06d19d0148e7554384229706f9d1b", size = 1489661, upload-time = "2025-11-05T18:38:18.41Z" }, + { url = "https://files.pythonhosted.org/packages/f3/75/c1baca8b4ec6c96a03ef8230fab2a785e35297632f402ebb1e78a1e39116/brotli-1.2.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9c79f57faa25d97900bfb119480806d783fba83cd09ee0b33c17623935b05fa3", size = 1599150, upload-time = "2025-11-05T18:38:19.792Z" }, + { url = "https://files.pythonhosted.org/packages/0d/1a/23fcfee1c324fd48a63d7ebf4bac3a4115bdb1b00e600f80f727d850b1ae/brotli-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:844a8ceb8483fefafc412f85c14f2aae2fb69567bf2a0de53cdb88b73e7c43ae", size = 1493505, upload-time = "2025-11-05T18:38:20.913Z" }, + { url = "https://files.pythonhosted.org/packages/36/e5/12904bbd36afeef53d45a84881a4810ae8810ad7e328a971ebbfd760a0b3/brotli-1.2.0-cp311-cp311-win32.whl", hash = "sha256:aa47441fa3026543513139cb8926a92a8e305ee9c71a6209ef7a97d91640ea03", size = 334451, upload-time = "2025-11-05T18:38:21.94Z" }, + { url = "https://files.pythonhosted.org/packages/02/8b/ecb5761b989629a4758c394b9301607a5880de61ee2ee5fe104b87149ebc/brotli-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:022426c9e99fd65d9475dce5c195526f04bb8be8907607e27e747893f6ee3e24", size = 369035, upload-time = "2025-11-05T18:38:22.941Z" }, + { url = "https://files.pythonhosted.org/packages/11/ee/b0a11ab2315c69bb9b45a2aaed022499c9c24a205c3a49c3513b541a7967/brotli-1.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:35d382625778834a7f3061b15423919aa03e4f5da34ac8e02c074e4b75ab4f84", size = 861543, upload-time = "2025-11-05T18:38:24.183Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2f/29c1459513cd35828e25531ebfcbf3e92a5e49f560b1777a9af7203eb46e/brotli-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a61c06b334bd99bc5ae84f1eeb36bfe01400264b3c352f968c6e30a10f9d08b", size = 444288, upload-time = "2025-11-05T18:38:25.139Z" }, + { url = "https://files.pythonhosted.org/packages/3d/6f/feba03130d5fceadfa3a1bb102cb14650798c848b1df2a808356f939bb16/brotli-1.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:acec55bb7c90f1dfc476126f9711a8e81c9af7fb617409a9ee2953115343f08d", size = 1528071, upload-time = "2025-11-05T18:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/2b/38/f3abb554eee089bd15471057ba85f47e53a44a462cfce265d9bf7088eb09/brotli-1.2.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:260d3692396e1895c5034f204f0db022c056f9e2ac841593a4cf9426e2a3faca", size = 1626913, upload-time = "2025-11-05T18:38:27.284Z" }, + { url = "https://files.pythonhosted.org/packages/03/a7/03aa61fbc3c5cbf99b44d158665f9b0dd3d8059be16c460208d9e385c837/brotli-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:072e7624b1fc4d601036ab3f4f27942ef772887e876beff0301d261210bca97f", size = 1419762, upload-time = "2025-11-05T18:38:28.295Z" }, + { url = "https://files.pythonhosted.org/packages/21/1b/0374a89ee27d152a5069c356c96b93afd1b94eae83f1e004b57eb6ce2f10/brotli-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adedc4a67e15327dfdd04884873c6d5a01d3e3b6f61406f99b1ed4865a2f6d28", size = 1484494, upload-time = "2025-11-05T18:38:29.29Z" }, + { url = "https://files.pythonhosted.org/packages/cf/57/69d4fe84a67aef4f524dcd075c6eee868d7850e85bf01d778a857d8dbe0a/brotli-1.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7a47ce5c2288702e09dc22a44d0ee6152f2c7eda97b3c8482d826a1f3cfc7da7", size = 1593302, upload-time = "2025-11-05T18:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/d5/3b/39e13ce78a8e9a621c5df3aeb5fd181fcc8caba8c48a194cd629771f6828/brotli-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:af43b8711a8264bb4e7d6d9a6d004c3a2019c04c01127a868709ec29962b6036", size = 1487913, upload-time = "2025-11-05T18:38:31.618Z" }, + { url = "https://files.pythonhosted.org/packages/62/28/4d00cb9bd76a6357a66fcd54b4b6d70288385584063f4b07884c1e7286ac/brotli-1.2.0-cp312-cp312-win32.whl", hash = "sha256:e99befa0b48f3cd293dafeacdd0d191804d105d279e0b387a32054c1180f3161", size = 334362, upload-time = "2025-11-05T18:38:32.939Z" }, + { url = "https://files.pythonhosted.org/packages/1c/4e/bc1dcac9498859d5e353c9b153627a3752868a9d5f05ce8dedd81a2354ab/brotli-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:b35c13ce241abdd44cb8ca70683f20c0c079728a36a996297adb5334adfc1c44", size = 369115, upload-time = "2025-11-05T18:38:33.765Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d4/4ad5432ac98c73096159d9ce7ffeb82d151c2ac84adcc6168e476bb54674/brotli-1.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9e5825ba2c9998375530504578fd4d5d1059d09621a02065d1b6bfc41a8e05ab", size = 861523, upload-time = "2025-11-05T18:38:34.67Z" }, + { url = "https://files.pythonhosted.org/packages/91/9f/9cc5bd03ee68a85dc4bc89114f7067c056a3c14b3d95f171918c088bf88d/brotli-1.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0cf8c3b8ba93d496b2fae778039e2f5ecc7cff99df84df337ca31d8f2252896c", size = 444289, upload-time = "2025-11-05T18:38:35.6Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b6/fe84227c56a865d16a6614e2c4722864b380cb14b13f3e6bef441e73a85a/brotli-1.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8565e3cdc1808b1a34714b553b262c5de5fbda202285782173ec137fd13709f", size = 1528076, upload-time = "2025-11-05T18:38:36.639Z" }, + { url = "https://files.pythonhosted.org/packages/55/de/de4ae0aaca06c790371cf6e7ee93a024f6b4bb0568727da8c3de112e726c/brotli-1.2.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:26e8d3ecb0ee458a9804f47f21b74845cc823fd1bb19f02272be70774f56e2a6", size = 1626880, upload-time = "2025-11-05T18:38:37.623Z" }, + { url = "https://files.pythonhosted.org/packages/5f/16/a1b22cbea436642e071adcaf8d4b350a2ad02f5e0ad0da879a1be16188a0/brotli-1.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67a91c5187e1eec76a61625c77a6c8c785650f5b576ca732bd33ef58b0dff49c", size = 1419737, upload-time = "2025-11-05T18:38:38.729Z" }, + { url = "https://files.pythonhosted.org/packages/46/63/c968a97cbb3bdbf7f974ef5a6ab467a2879b82afbc5ffb65b8acbb744f95/brotli-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ecdb3b6dc36e6d6e14d3a1bdc6c1057c8cbf80db04031d566eb6080ce283a48", size = 1484440, upload-time = "2025-11-05T18:38:39.916Z" }, + { url = "https://files.pythonhosted.org/packages/06/9d/102c67ea5c9fc171f423e8399e585dabea29b5bc79b05572891e70013cdd/brotli-1.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3e1b35d56856f3ed326b140d3c6d9db91740f22e14b06e840fe4bb1923439a18", size = 1593313, upload-time = "2025-11-05T18:38:41.24Z" }, + { url = "https://files.pythonhosted.org/packages/9e/4a/9526d14fa6b87bc827ba1755a8440e214ff90de03095cacd78a64abe2b7d/brotli-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54a50a9dad16b32136b2241ddea9e4df159b41247b2ce6aac0b3276a66a8f1e5", size = 1487945, upload-time = "2025-11-05T18:38:42.277Z" }, + { url = "https://files.pythonhosted.org/packages/5b/e8/3fe1ffed70cbef83c5236166acaed7bb9c766509b157854c80e2f766b38c/brotli-1.2.0-cp313-cp313-win32.whl", hash = "sha256:1b1d6a4efedd53671c793be6dd760fcf2107da3a52331ad9ea429edf0902f27a", size = 334368, upload-time = "2025-11-05T18:38:43.345Z" }, + { url = "https://files.pythonhosted.org/packages/ff/91/e739587be970a113b37b821eae8097aac5a48e5f0eca438c22e4c7dd8648/brotli-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:b63daa43d82f0cdabf98dee215b375b4058cce72871fd07934f179885aad16e8", size = 369116, upload-time = "2025-11-05T18:38:44.609Z" }, + { url = "https://files.pythonhosted.org/packages/17/e1/298c2ddf786bb7347a1cd71d63a347a79e5712a7c0cba9e3c3458ebd976f/brotli-1.2.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:6c12dad5cd04530323e723787ff762bac749a7b256a5bece32b2243dd5c27b21", size = 863080, upload-time = "2025-11-05T18:38:45.503Z" }, + { url = "https://files.pythonhosted.org/packages/84/0c/aac98e286ba66868b2b3b50338ffbd85a35c7122e9531a73a37a29763d38/brotli-1.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3219bd9e69868e57183316ee19c84e03e8f8b5a1d1f2667e1aa8c2f91cb061ac", size = 445453, upload-time = "2025-11-05T18:38:46.433Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f1/0ca1f3f99ae300372635ab3fe2f7a79fa335fee3d874fa7f9e68575e0e62/brotli-1.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:963a08f3bebd8b75ac57661045402da15991468a621f014be54e50f53a58d19e", size = 1528168, upload-time = "2025-11-05T18:38:47.371Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a6/2ebfc8f766d46df8d3e65b880a2e220732395e6d7dc312c1e1244b0f074a/brotli-1.2.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9322b9f8656782414b37e6af884146869d46ab85158201d82bab9abbcb971dc7", size = 1627098, upload-time = "2025-11-05T18:38:48.385Z" }, + { url = "https://files.pythonhosted.org/packages/f3/2f/0976d5b097ff8a22163b10617f76b2557f15f0f39d6a0fe1f02b1a53e92b/brotli-1.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cf9cba6f5b78a2071ec6fb1e7bd39acf35071d90a81231d67e92d637776a6a63", size = 1419861, upload-time = "2025-11-05T18:38:49.372Z" }, + { url = "https://files.pythonhosted.org/packages/9c/97/d76df7176a2ce7616ff94c1fb72d307c9a30d2189fe877f3dd99af00ea5a/brotli-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7547369c4392b47d30a3467fe8c3330b4f2e0f7730e45e3103d7d636678a808b", size = 1484594, upload-time = "2025-11-05T18:38:50.655Z" }, + { url = "https://files.pythonhosted.org/packages/d3/93/14cf0b1216f43df5609f5b272050b0abd219e0b54ea80b47cef9867b45e7/brotli-1.2.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1530af5c3c275b8524f2e24841cbe2599d74462455e9bae5109e9ff42e9361", size = 1593455, upload-time = "2025-11-05T18:38:51.624Z" }, + { url = "https://files.pythonhosted.org/packages/b3/73/3183c9e41ca755713bdf2cc1d0810df742c09484e2e1ddd693bee53877c1/brotli-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d2d085ded05278d1c7f65560aae97b3160aeb2ea2c0b3e26204856beccb60888", size = 1488164, upload-time = "2025-11-05T18:38:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/64/6a/0c78d8f3a582859236482fd9fa86a65a60328a00983006bcf6d83b7b2253/brotli-1.2.0-cp314-cp314-win32.whl", hash = "sha256:832c115a020e463c2f67664560449a7bea26b0c1fdd690352addad6d0a08714d", size = 339280, upload-time = "2025-11-05T18:38:54.02Z" }, + { url = "https://files.pythonhosted.org/packages/f5/10/56978295c14794b2c12007b07f3e41ba26acda9257457d7085b0bb3bb90c/brotli-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:e7c0af964e0b4e3412a0ebf341ea26ec767fa0b4cf81abb5e897c9338b5ad6a3", size = 375639, upload-time = "2025-11-05T18:38:55.67Z" }, +] + [[package]] name = "certifi" version = "2025.7.9" @@ -306,6 +429,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, ] +[[package]] +name = "click" +version = "8.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -387,9 +522,11 @@ version = "0.0.0" source = { editable = "." } dependencies = [ { name = "astropy" }, + { name = "gradio" }, { name = "jupyterlab" }, { name = "matplotlib" }, { name = "numpy" }, + { name = "openpyxl" }, { name = "pandas" }, { name = "pandas-stubs" }, { name = "pingouin" }, @@ -410,9 +547,11 @@ dev = [ [package.metadata] requires-dist = [ { name = "astropy" }, + { name = "gradio", specifier = ">=5.50.0" }, { name = "jupyterlab" }, { name = "matplotlib" }, { name = "numpy" }, + { name = "openpyxl", specifier = ">=3.1.5" }, { name = "pandas" }, { name = "pandas-stubs" }, { name = "pingouin" }, @@ -546,6 +685,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, ] +[[package]] +name = "et-xmlfile" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload-time = "2024-10-25T17:25:40.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload-time = "2024-10-25T17:25:39.051Z" }, +] + [[package]] name = "executing" version = "2.2.0" @@ -555,6 +703,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, ] +[[package]] +name = "fastapi" +version = "0.122.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/de/3ee97a4f6ffef1fb70bf20561e4f88531633bb5045dc6cebc0f8471f764d/fastapi-0.122.0.tar.gz", hash = "sha256:cd9b5352031f93773228af8b4c443eedc2ac2aa74b27780387b853c3726fb94b", size = 346436, upload-time = "2025-11-24T19:17:47.95Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/93/aa8072af4ff37b795f6bbf43dcaf61115f40f49935c7dbb180c9afc3f421/fastapi-0.122.0-py3-none-any.whl", hash = "sha256:a456e8915dfc6c8914a50d9651133bd47ec96d331c5b44600baa635538a30d67", size = 110671, upload-time = "2025-11-24T19:17:45.96Z" }, +] + [[package]] name = "fastjsonschema" version = "2.21.1" @@ -564,6 +727,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, ] +[[package]] +name = "ffmpy" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/d2/1c4c582d71bcc65c76fa69fab85de6257d50fdf6fd4a2317c53917e9a581/ffmpy-1.0.0.tar.gz", hash = "sha256:b12932e95435c8820f1cd041024402765f821971e4bae753b327fc02a6e12f8b", size = 5101, upload-time = "2025-11-11T06:24:23.856Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/56/dd3669eccebb6d8ac81e624542ebd53fe6f08e1b8f2f8d50aeb7e3b83f99/ffmpy-1.0.0-py3-none-any.whl", hash = "sha256:5640e5f0fd03fb6236d0e119b16ccf6522db1c826fdf35dcb87087b60fd7504f", size = 5614, upload-time = "2025-11-11T06:24:22.818Z" }, +] + [[package]] name = "filelock" version = "3.18.0" @@ -615,6 +787,79 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, ] +[[package]] +name = "fsspec" +version = "2025.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/7f/2747c0d332b9acfa75dc84447a066fdf812b5a6b8d30472b74d309bfe8cb/fsspec-2025.10.0.tar.gz", hash = "sha256:b6789427626f068f9a83ca4e8a3cc050850b6c0f71f99ddb4f542b8266a26a59", size = 309285, upload-time = "2025-10-30T14:58:44.036Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/02/a6b21098b1d5d6249b7c5ab69dde30108a71e4e819d4a9778f1de1d5b70d/fsspec-2025.10.0-py3-none-any.whl", hash = "sha256:7c7712353ae7d875407f97715f0e1ffcc21e33d5b24556cb1e090ae9409ec61d", size = 200966, upload-time = "2025-10-30T14:58:42.53Z" }, +] + +[[package]] +name = "gradio" +version = "5.50.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiofiles" }, + { name = "anyio" }, + { name = "audioop-lts", marker = "python_full_version >= '3.13'" }, + { name = "brotli" }, + { name = "fastapi" }, + { name = "ffmpy" }, + { name = "gradio-client" }, + { name = "groovy" }, + { name = "httpx" }, + { name = "huggingface-hub" }, + { name = "jinja2" }, + { name = "markupsafe" }, + { name = "numpy" }, + { name = "orjson" }, + { name = "packaging" }, + { name = "pandas" }, + { name = "pillow" }, + { name = "pydantic" }, + { name = "pydub" }, + { name = "python-multipart" }, + { name = "pyyaml" }, + { name = "ruff" }, + { name = "safehttpx" }, + { name = "semantic-version" }, + { name = "starlette" }, + { name = "tomlkit" }, + { name = "typer" }, + { name = "typing-extensions" }, + { name = "uvicorn" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/04/8daf96bd6d2470f03e2a15a9fc900c7ecf6549619173f16c5944c7ec15a7/gradio-5.50.0-py3-none-any.whl", hash = "sha256:d06770d57cdda9b703ef9cf767ac93a890a0e12d82679a310eef74203a3673f4", size = 63530991, upload-time = "2025-11-21T18:07:19.239Z" }, +] + +[[package]] +name = "gradio-client" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec" }, + { name = "httpx" }, + { name = "huggingface-hub" }, + { name = "packaging" }, + { name = "typing-extensions" }, + { name = "websockets" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/8a/f2a47134c5b5a7f3bad27eae749589a80d81efaaad8f59af47c136712bf6/gradio_client-1.14.0-py3-none-any.whl", hash = "sha256:9a2f5151978411e0f8b55a2d38cddd0a94491851149d14db4af96f5a09774825", size = 325555, upload-time = "2025-11-21T18:04:21.834Z" }, +] + +[[package]] +name = "groovy" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/36/bbdede67400277bef33d3ec0e6a31750da972c469f75966b4930c753218f/groovy-0.1.2.tar.gz", hash = "sha256:25c1dc09b3f9d7e292458aa762c6beb96ea037071bf5e917fc81fb78d2231083", size = 17325, upload-time = "2025-02-28T20:24:56.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/27/3d6dcadc8a3214d8522c1e7f6a19554e33659be44546d44a2f7572ac7d2a/groovy-0.1.2-py3-none-any.whl", hash = "sha256:7f7975bab18c729a257a8b1ae9dcd70b7cafb1720481beae47719af57c35fa64", size = 14090, upload-time = "2025-02-28T20:24:55.152Z" }, +] + [[package]] name = "h11" version = "0.16.0" @@ -624,6 +869,35 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] +[[package]] +name = "hf-xet" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/6e/0f11bacf08a67f7fb5ee09740f2ca54163863b07b70d579356e9222ce5d8/hf_xet-1.2.0.tar.gz", hash = "sha256:a8c27070ca547293b6890c4bf389f713f80e8c478631432962bb7f4bc0bd7d7f", size = 506020, upload-time = "2025-10-24T19:04:32.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/a5/85ef910a0aa034a2abcfadc360ab5ac6f6bc4e9112349bd40ca97551cff0/hf_xet-1.2.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:ceeefcd1b7aed4956ae8499e2199607765fbd1c60510752003b6cc0b8413b649", size = 2861870, upload-time = "2025-10-24T19:04:11.422Z" }, + { url = "https://files.pythonhosted.org/packages/ea/40/e2e0a7eb9a51fe8828ba2d47fe22a7e74914ea8a0db68a18c3aa7449c767/hf_xet-1.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b70218dd548e9840224df5638fdc94bd033552963cfa97f9170829381179c813", size = 2717584, upload-time = "2025-10-24T19:04:09.586Z" }, + { url = "https://files.pythonhosted.org/packages/a5/7d/daf7f8bc4594fdd59a8a596f9e3886133fdc68e675292218a5e4c1b7e834/hf_xet-1.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d40b18769bb9a8bc82a9ede575ce1a44c75eb80e7375a01d76259089529b5dc", size = 3315004, upload-time = "2025-10-24T19:04:00.314Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ba/45ea2f605fbf6d81c8b21e4d970b168b18a53515923010c312c06cd83164/hf_xet-1.2.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:cd3a6027d59cfb60177c12d6424e31f4b5ff13d8e3a1247b3a584bf8977e6df5", size = 3222636, upload-time = "2025-10-24T19:03:58.111Z" }, + { url = "https://files.pythonhosted.org/packages/4a/1d/04513e3cab8f29ab8c109d309ddd21a2705afab9d52f2ba1151e0c14f086/hf_xet-1.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6de1fc44f58f6dd937956c8d304d8c2dea264c80680bcfa61ca4a15e7b76780f", size = 3408448, upload-time = "2025-10-24T19:04:20.951Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7c/60a2756d7feec7387db3a1176c632357632fbe7849fce576c5559d4520c7/hf_xet-1.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f182f264ed2acd566c514e45da9f2119110e48a87a327ca271027904c70c5832", size = 3503401, upload-time = "2025-10-24T19:04:22.549Z" }, + { url = "https://files.pythonhosted.org/packages/4e/64/48fffbd67fb418ab07451e4ce641a70de1c40c10a13e25325e24858ebe5a/hf_xet-1.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:293a7a3787e5c95d7be1857358a9130694a9c6021de3f27fa233f37267174382", size = 2900866, upload-time = "2025-10-24T19:04:33.461Z" }, + { url = "https://files.pythonhosted.org/packages/e2/51/f7e2caae42f80af886db414d4e9885fac959330509089f97cccb339c6b87/hf_xet-1.2.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:10bfab528b968c70e062607f663e21e34e2bba349e8038db546646875495179e", size = 2861861, upload-time = "2025-10-24T19:04:19.01Z" }, + { url = "https://files.pythonhosted.org/packages/6e/1d/a641a88b69994f9371bd347f1dd35e5d1e2e2460a2e350c8d5165fc62005/hf_xet-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2a212e842647b02eb6a911187dc878e79c4aa0aa397e88dd3b26761676e8c1f8", size = 2717699, upload-time = "2025-10-24T19:04:17.306Z" }, + { url = "https://files.pythonhosted.org/packages/df/e0/e5e9bba7d15f0318955f7ec3f4af13f92e773fbb368c0b8008a5acbcb12f/hf_xet-1.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e06daccb3a7d4c065f34fc26c14c74f4653069bb2b194e7f18f17cbe9939c0", size = 3314885, upload-time = "2025-10-24T19:04:07.642Z" }, + { url = "https://files.pythonhosted.org/packages/21/90/b7fe5ff6f2b7b8cbdf1bd56145f863c90a5807d9758a549bf3d916aa4dec/hf_xet-1.2.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:29c8fc913a529ec0a91867ce3d119ac1aac966e098cf49501800c870328cc090", size = 3221550, upload-time = "2025-10-24T19:04:05.55Z" }, + { url = "https://files.pythonhosted.org/packages/6f/cb/73f276f0a7ce46cc6a6ec7d6c7d61cbfe5f2e107123d9bbd0193c355f106/hf_xet-1.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e159cbfcfbb29f920db2c09ed8b660eb894640d284f102ada929b6e3dc410a", size = 3408010, upload-time = "2025-10-24T19:04:28.598Z" }, + { url = "https://files.pythonhosted.org/packages/b8/1e/d642a12caa78171f4be64f7cd9c40e3ca5279d055d0873188a58c0f5fbb9/hf_xet-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9c91d5ae931510107f148874e9e2de8a16052b6f1b3ca3c1b12f15ccb491390f", size = 3503264, upload-time = "2025-10-24T19:04:30.397Z" }, + { url = "https://files.pythonhosted.org/packages/17/b5/33764714923fa1ff922770f7ed18c2daae034d21ae6e10dbf4347c854154/hf_xet-1.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:210d577732b519ac6ede149d2f2f34049d44e8622bf14eb3d63bbcd2d4b332dc", size = 2901071, upload-time = "2025-10-24T19:04:37.463Z" }, + { url = "https://files.pythonhosted.org/packages/96/2d/22338486473df5923a9ab7107d375dbef9173c338ebef5098ef593d2b560/hf_xet-1.2.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:46740d4ac024a7ca9b22bebf77460ff43332868b661186a8e46c227fdae01848", size = 2866099, upload-time = "2025-10-24T19:04:15.366Z" }, + { url = "https://files.pythonhosted.org/packages/7f/8c/c5becfa53234299bc2210ba314eaaae36c2875e0045809b82e40a9544f0c/hf_xet-1.2.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:27df617a076420d8845bea087f59303da8be17ed7ec0cd7ee3b9b9f579dff0e4", size = 2722178, upload-time = "2025-10-24T19:04:13.695Z" }, + { url = "https://files.pythonhosted.org/packages/9a/92/cf3ab0b652b082e66876d08da57fcc6fa2f0e6c70dfbbafbd470bb73eb47/hf_xet-1.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3651fd5bfe0281951b988c0facbe726aa5e347b103a675f49a3fa8144c7968fd", size = 3320214, upload-time = "2025-10-24T19:04:03.596Z" }, + { url = "https://files.pythonhosted.org/packages/46/92/3f7ec4a1b6a65bf45b059b6d4a5d38988f63e193056de2f420137e3c3244/hf_xet-1.2.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d06fa97c8562fb3ee7a378dd9b51e343bc5bc8190254202c9771029152f5e08c", size = 3229054, upload-time = "2025-10-24T19:04:01.949Z" }, + { url = "https://files.pythonhosted.org/packages/0b/dd/7ac658d54b9fb7999a0ccb07ad863b413cbaf5cf172f48ebcd9497ec7263/hf_xet-1.2.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:4c1428c9ae73ec0939410ec73023c4f842927f39db09b063b9482dac5a3bb737", size = 3413812, upload-time = "2025-10-24T19:04:24.585Z" }, + { url = "https://files.pythonhosted.org/packages/92/68/89ac4e5b12a9ff6286a12174c8538a5930e2ed662091dd2572bbe0a18c8a/hf_xet-1.2.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a55558084c16b09b5ed32ab9ed38421e2d87cf3f1f89815764d1177081b99865", size = 3508920, upload-time = "2025-10-24T19:04:26.927Z" }, + { url = "https://files.pythonhosted.org/packages/cb/44/870d44b30e1dcfb6a65932e3e1506c103a8a5aea9103c337e7a53180322c/hf_xet-1.2.0-cp37-abi3-win_amd64.whl", hash = "sha256:e6584a52253f72c9f52f9e549d5895ca7a471608495c4ecaa6cc73dba2b24d69", size = 2905735, upload-time = "2025-10-24T19:04:35.928Z" }, +] + [[package]] name = "httpcore" version = "1.0.9" @@ -652,6 +926,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, ] +[[package]] +name = "huggingface-hub" +version = "1.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "httpx" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "shellingham" }, + { name = "tqdm" }, + { name = "typer-slim" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/02/c3d534d7498ba2792da1d2ce56b5d38bbcbcbbba62071c90ee289b408e8d/huggingface_hub-1.1.5.tar.gz", hash = "sha256:40ba5c9a08792d888fde6088920a0a71ab3cd9d5e6617c81a797c657f1fd9968", size = 607199, upload-time = "2025-11-20T15:49:32.809Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/f4/124858007ddf3c61e9b144107304c9152fa80b5b6c168da07d86fe583cc1/huggingface_hub-1.1.5-py3-none-any.whl", hash = "sha256:e88ecc129011f37b868586bbcfae6c56868cae80cd56a79d61575426a3aa0d7d", size = 516000, upload-time = "2025-11-20T15:49:30.926Z" }, +] + [[package]] name = "identify" version = "2.6.12" @@ -1060,6 +1355,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213, upload-time = "2024-12-24T18:30:40.019Z" }, ] +[[package]] +name = "markdown-it-py" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, +] + [[package]] name = "markupsafe" version = "3.0.2" @@ -1163,6 +1470,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, ] +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + [[package]] name = "mistune" version = "3.1.3" @@ -1315,6 +1631,86 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/48/6b/1c6b515a83d5564b1698a61efa245727c8feecf308f4091f565988519d20/numpy-2.3.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e610832418a2bc09d974cc9fecebfa51e9532d6190223bc5ef6a7402ebf3b5cb", size = 12927246, upload-time = "2025-06-21T12:27:38.618Z" }, ] +[[package]] +name = "openpyxl" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "et-xmlfile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload-time = "2024-06-28T14:03:44.161Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload-time = "2024-06-28T14:03:41.161Z" }, +] + +[[package]] +name = "orjson" +version = "3.11.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/fe/ed708782d6709cc60eb4c2d8a361a440661f74134675c72990f2c48c785f/orjson-3.11.4.tar.gz", hash = "sha256:39485f4ab4c9b30a3943cfe99e1a213c4776fb69e8abd68f66b83d5a0b0fdc6d", size = 5945188, upload-time = "2025-10-24T15:50:38.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/1d/1ea6005fffb56715fd48f632611e163d1604e8316a5bad2288bee9a1c9eb/orjson-3.11.4-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5e59d23cd93ada23ec59a96f215139753fbfe3a4d989549bcb390f8c00370b39", size = 243498, upload-time = "2025-10-24T15:48:48.101Z" }, + { url = "https://files.pythonhosted.org/packages/37/d7/ffed10c7da677f2a9da307d491b9eb1d0125b0307019c4ad3d665fd31f4f/orjson-3.11.4-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:5c3aedecfc1beb988c27c79d52ebefab93b6c3921dbec361167e6559aba2d36d", size = 128961, upload-time = "2025-10-24T15:48:49.571Z" }, + { url = "https://files.pythonhosted.org/packages/a2/96/3e4d10a18866d1368f73c8c44b7fe37cc8a15c32f2a7620be3877d4c55a3/orjson-3.11.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da9e5301f1c2caa2a9a4a303480d79c9ad73560b2e7761de742ab39fe59d9175", size = 130321, upload-time = "2025-10-24T15:48:50.713Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1f/465f66e93f434f968dd74d5b623eb62c657bdba2332f5a8be9f118bb74c7/orjson-3.11.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8873812c164a90a79f65368f8f96817e59e35d0cc02786a5356f0e2abed78040", size = 129207, upload-time = "2025-10-24T15:48:52.193Z" }, + { url = "https://files.pythonhosted.org/packages/28/43/d1e94837543321c119dff277ae8e348562fe8c0fafbb648ef7cb0c67e521/orjson-3.11.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5d7feb0741ebb15204e748f26c9638e6665a5fa93c37a2c73d64f1669b0ddc63", size = 136323, upload-time = "2025-10-24T15:48:54.806Z" }, + { url = "https://files.pythonhosted.org/packages/bf/04/93303776c8890e422a5847dd012b4853cdd88206b8bbd3edc292c90102d1/orjson-3.11.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01ee5487fefee21e6910da4c2ee9eef005bee568a0879834df86f888d2ffbdd9", size = 137440, upload-time = "2025-10-24T15:48:56.326Z" }, + { url = "https://files.pythonhosted.org/packages/1e/ef/75519d039e5ae6b0f34d0336854d55544ba903e21bf56c83adc51cd8bf82/orjson-3.11.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d40d46f348c0321df01507f92b95a377240c4ec31985225a6668f10e2676f9a", size = 136680, upload-time = "2025-10-24T15:48:57.476Z" }, + { url = "https://files.pythonhosted.org/packages/b5/18/bf8581eaae0b941b44efe14fee7b7862c3382fbc9a0842132cfc7cf5ecf4/orjson-3.11.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95713e5fc8af84d8edc75b785d2386f653b63d62b16d681687746734b4dfc0be", size = 136160, upload-time = "2025-10-24T15:48:59.631Z" }, + { url = "https://files.pythonhosted.org/packages/c4/35/a6d582766d351f87fc0a22ad740a641b0a8e6fc47515e8614d2e4790ae10/orjson-3.11.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ad73ede24f9083614d6c4ca9a85fe70e33be7bf047ec586ee2363bc7418fe4d7", size = 140318, upload-time = "2025-10-24T15:49:00.834Z" }, + { url = "https://files.pythonhosted.org/packages/76/b3/5a4801803ab2e2e2d703bce1a56540d9f99a9143fbec7bf63d225044fef8/orjson-3.11.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:842289889de515421f3f224ef9c1f1efb199a32d76d8d2ca2706fa8afe749549", size = 406330, upload-time = "2025-10-24T15:49:02.327Z" }, + { url = "https://files.pythonhosted.org/packages/80/55/a8f682f64833e3a649f620eafefee175cbfeb9854fc5b710b90c3bca45df/orjson-3.11.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3b2427ed5791619851c52a1261b45c233930977e7de8cf36de05636c708fa905", size = 149580, upload-time = "2025-10-24T15:49:03.517Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e4/c132fa0c67afbb3eb88274fa98df9ac1f631a675e7877037c611805a4413/orjson-3.11.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c36e524af1d29982e9b190573677ea02781456b2e537d5840e4538a5ec41907", size = 139846, upload-time = "2025-10-24T15:49:04.761Z" }, + { url = "https://files.pythonhosted.org/packages/54/06/dc3491489efd651fef99c5908e13951abd1aead1257c67f16135f95ce209/orjson-3.11.4-cp311-cp311-win32.whl", hash = "sha256:87255b88756eab4a68ec61837ca754e5d10fa8bc47dc57f75cedfeaec358d54c", size = 135781, upload-time = "2025-10-24T15:49:05.969Z" }, + { url = "https://files.pythonhosted.org/packages/79/b7/5e5e8d77bd4ea02a6ac54c42c818afb01dd31961be8a574eb79f1d2cfb1e/orjson-3.11.4-cp311-cp311-win_amd64.whl", hash = "sha256:e2d5d5d798aba9a0e1fede8d853fa899ce2cb930ec0857365f700dffc2c7af6a", size = 131391, upload-time = "2025-10-24T15:49:07.355Z" }, + { url = "https://files.pythonhosted.org/packages/0f/dc/9484127cc1aa213be398ed735f5f270eedcb0c0977303a6f6ddc46b60204/orjson-3.11.4-cp311-cp311-win_arm64.whl", hash = "sha256:6bb6bb41b14c95d4f2702bce9975fda4516f1db48e500102fc4d8119032ff045", size = 126252, upload-time = "2025-10-24T15:49:08.869Z" }, + { url = "https://files.pythonhosted.org/packages/63/51/6b556192a04595b93e277a9ff71cd0cc06c21a7df98bcce5963fa0f5e36f/orjson-3.11.4-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d4371de39319d05d3f482f372720b841c841b52f5385bd99c61ed69d55d9ab50", size = 243571, upload-time = "2025-10-24T15:49:10.008Z" }, + { url = "https://files.pythonhosted.org/packages/1c/2c/2602392ddf2601d538ff11848b98621cd465d1a1ceb9db9e8043181f2f7b/orjson-3.11.4-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:e41fd3b3cac850eaae78232f37325ed7d7436e11c471246b87b2cd294ec94853", size = 128891, upload-time = "2025-10-24T15:49:11.297Z" }, + { url = "https://files.pythonhosted.org/packages/4e/47/bf85dcf95f7a3a12bf223394a4f849430acd82633848d52def09fa3f46ad/orjson-3.11.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:600e0e9ca042878c7fdf189cf1b028fe2c1418cc9195f6cb9824eb6ed99cb938", size = 130137, upload-time = "2025-10-24T15:49:12.544Z" }, + { url = "https://files.pythonhosted.org/packages/b4/4d/a0cb31007f3ab6f1fd2a1b17057c7c349bc2baf8921a85c0180cc7be8011/orjson-3.11.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7bbf9b333f1568ef5da42bc96e18bf30fd7f8d54e9ae066d711056add508e415", size = 129152, upload-time = "2025-10-24T15:49:13.754Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ef/2811def7ce3d8576b19e3929fff8f8f0d44bc5eb2e0fdecb2e6e6cc6c720/orjson-3.11.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4806363144bb6e7297b8e95870e78d30a649fdc4e23fc84daa80c8ebd366ce44", size = 136834, upload-time = "2025-10-24T15:49:15.307Z" }, + { url = "https://files.pythonhosted.org/packages/00/d4/9aee9e54f1809cec8ed5abd9bc31e8a9631d19460e3b8470145d25140106/orjson-3.11.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad355e8308493f527d41154e9053b86a5be892b3b359a5c6d5d95cda23601cb2", size = 137519, upload-time = "2025-10-24T15:49:16.557Z" }, + { url = "https://files.pythonhosted.org/packages/db/ea/67bfdb5465d5679e8ae8d68c11753aaf4f47e3e7264bad66dc2f2249e643/orjson-3.11.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a7517482667fb9f0ff1b2f16fe5829296ed7a655d04d68cd9711a4d8a4e708", size = 136749, upload-time = "2025-10-24T15:49:17.796Z" }, + { url = "https://files.pythonhosted.org/packages/01/7e/62517dddcfce6d53a39543cd74d0dccfcbdf53967017c58af68822100272/orjson-3.11.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97eb5942c7395a171cbfecc4ef6701fc3c403e762194683772df4c54cfbb2210", size = 136325, upload-time = "2025-10-24T15:49:19.347Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/40516739f99ab4c7ec3aaa5cc242d341fcb03a45d89edeeaabc5f69cb2cf/orjson-3.11.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:149d95d5e018bdd822e3f38c103b1a7c91f88d38a88aada5c4e9b3a73a244241", size = 140204, upload-time = "2025-10-24T15:49:20.545Z" }, + { url = "https://files.pythonhosted.org/packages/82/18/ff5734365623a8916e3a4037fcef1cd1782bfc14cf0992afe7940c5320bf/orjson-3.11.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:624f3951181eb46fc47dea3d221554e98784c823e7069edb5dbd0dc826ac909b", size = 406242, upload-time = "2025-10-24T15:49:21.884Z" }, + { url = "https://files.pythonhosted.org/packages/e1/43/96436041f0a0c8c8deca6a05ebeaf529bf1de04839f93ac5e7c479807aec/orjson-3.11.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:03bfa548cf35e3f8b3a96c4e8e41f753c686ff3d8e182ce275b1751deddab58c", size = 150013, upload-time = "2025-10-24T15:49:23.185Z" }, + { url = "https://files.pythonhosted.org/packages/1b/48/78302d98423ed8780479a1e682b9aecb869e8404545d999d34fa486e573e/orjson-3.11.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:525021896afef44a68148f6ed8a8bf8375553d6066c7f48537657f64823565b9", size = 139951, upload-time = "2025-10-24T15:49:24.428Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7b/ad613fdcdaa812f075ec0875143c3d37f8654457d2af17703905425981bf/orjson-3.11.4-cp312-cp312-win32.whl", hash = "sha256:b58430396687ce0f7d9eeb3dd47761ca7d8fda8e9eb92b3077a7a353a75efefa", size = 136049, upload-time = "2025-10-24T15:49:25.973Z" }, + { url = "https://files.pythonhosted.org/packages/b9/3c/9cf47c3ff5f39b8350fb21ba65d789b6a1129d4cbb3033ba36c8a9023520/orjson-3.11.4-cp312-cp312-win_amd64.whl", hash = "sha256:c6dbf422894e1e3c80a177133c0dda260f81428f9de16d61041949f6a2e5c140", size = 131461, upload-time = "2025-10-24T15:49:27.259Z" }, + { url = "https://files.pythonhosted.org/packages/c6/3b/e2425f61e5825dc5b08c2a5a2b3af387eaaca22a12b9c8c01504f8614c36/orjson-3.11.4-cp312-cp312-win_arm64.whl", hash = "sha256:d38d2bc06d6415852224fcc9c0bfa834c25431e466dc319f0edd56cca81aa96e", size = 126167, upload-time = "2025-10-24T15:49:28.511Z" }, + { url = "https://files.pythonhosted.org/packages/23/15/c52aa7112006b0f3d6180386c3a46ae057f932ab3425bc6f6ac50431cca1/orjson-3.11.4-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2d6737d0e616a6e053c8b4acc9eccea6b6cce078533666f32d140e4f85002534", size = 243525, upload-time = "2025-10-24T15:49:29.737Z" }, + { url = "https://files.pythonhosted.org/packages/ec/38/05340734c33b933fd114f161f25a04e651b0c7c33ab95e9416ade5cb44b8/orjson-3.11.4-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:afb14052690aa328cc118a8e09f07c651d301a72e44920b887c519b313d892ff", size = 128871, upload-time = "2025-10-24T15:49:31.109Z" }, + { url = "https://files.pythonhosted.org/packages/55/b9/ae8d34899ff0c012039b5a7cb96a389b2476e917733294e498586b45472d/orjson-3.11.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38aa9e65c591febb1b0aed8da4d469eba239d434c218562df179885c94e1a3ad", size = 130055, upload-time = "2025-10-24T15:49:33.382Z" }, + { url = "https://files.pythonhosted.org/packages/33/aa/6346dd5073730451bee3681d901e3c337e7ec17342fb79659ec9794fc023/orjson-3.11.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f2cf4dfaf9163b0728d061bebc1e08631875c51cd30bf47cb9e3293bfbd7dcd5", size = 129061, upload-time = "2025-10-24T15:49:34.935Z" }, + { url = "https://files.pythonhosted.org/packages/39/e4/8eea51598f66a6c853c380979912d17ec510e8e66b280d968602e680b942/orjson-3.11.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89216ff3dfdde0e4070932e126320a1752c9d9a758d6a32ec54b3b9334991a6a", size = 136541, upload-time = "2025-10-24T15:49:36.923Z" }, + { url = "https://files.pythonhosted.org/packages/9a/47/cb8c654fa9adcc60e99580e17c32b9e633290e6239a99efa6b885aba9dbc/orjson-3.11.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9daa26ca8e97fae0ce8aa5d80606ef8f7914e9b129b6b5df9104266f764ce436", size = 137535, upload-time = "2025-10-24T15:49:38.307Z" }, + { url = "https://files.pythonhosted.org/packages/43/92/04b8cc5c2b729f3437ee013ce14a60ab3d3001465d95c184758f19362f23/orjson-3.11.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c8b2769dc31883c44a9cd126560327767f848eb95f99c36c9932f51090bfce9", size = 136703, upload-time = "2025-10-24T15:49:40.795Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fd/d0733fcb9086b8be4ebcfcda2d0312865d17d0d9884378b7cffb29d0763f/orjson-3.11.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1469d254b9884f984026bd9b0fa5bbab477a4bfe558bba6848086f6d43eb5e73", size = 136293, upload-time = "2025-10-24T15:49:42.347Z" }, + { url = "https://files.pythonhosted.org/packages/c2/d7/3c5514e806837c210492d72ae30ccf050ce3f940f45bf085bab272699ef4/orjson-3.11.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:68e44722541983614e37117209a194e8c3ad07838ccb3127d96863c95ec7f1e0", size = 140131, upload-time = "2025-10-24T15:49:43.638Z" }, + { url = "https://files.pythonhosted.org/packages/9c/dd/ba9d32a53207babf65bd510ac4d0faaa818bd0df9a9c6f472fe7c254f2e3/orjson-3.11.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8e7805fda9672c12be2f22ae124dcd7b03928d6c197544fe12174b86553f3196", size = 406164, upload-time = "2025-10-24T15:49:45.498Z" }, + { url = "https://files.pythonhosted.org/packages/8e/f9/f68ad68f4af7c7bde57cd514eaa2c785e500477a8bc8f834838eb696a685/orjson-3.11.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:04b69c14615fb4434ab867bf6f38b2d649f6f300af30a6705397e895f7aec67a", size = 149859, upload-time = "2025-10-24T15:49:46.981Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d2/7f847761d0c26818395b3d6b21fb6bc2305d94612a35b0a30eae65a22728/orjson-3.11.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:639c3735b8ae7f970066930e58cf0ed39a852d417c24acd4a25fc0b3da3c39a6", size = 139926, upload-time = "2025-10-24T15:49:48.321Z" }, + { url = "https://files.pythonhosted.org/packages/9f/37/acd14b12dc62db9a0e1d12386271b8661faae270b22492580d5258808975/orjson-3.11.4-cp313-cp313-win32.whl", hash = "sha256:6c13879c0d2964335491463302a6ca5ad98105fc5db3565499dcb80b1b4bd839", size = 136007, upload-time = "2025-10-24T15:49:49.938Z" }, + { url = "https://files.pythonhosted.org/packages/c0/a9/967be009ddf0a1fffd7a67de9c36656b28c763659ef91352acc02cbe364c/orjson-3.11.4-cp313-cp313-win_amd64.whl", hash = "sha256:09bf242a4af98732db9f9a1ec57ca2604848e16f132e3f72edfd3c5c96de009a", size = 131314, upload-time = "2025-10-24T15:49:51.248Z" }, + { url = "https://files.pythonhosted.org/packages/cb/db/399abd6950fbd94ce125cb8cd1a968def95174792e127b0642781e040ed4/orjson-3.11.4-cp313-cp313-win_arm64.whl", hash = "sha256:a85f0adf63319d6c1ba06fb0dbf997fced64a01179cf17939a6caca662bf92de", size = 126152, upload-time = "2025-10-24T15:49:52.922Z" }, + { url = "https://files.pythonhosted.org/packages/25/e3/54ff63c093cc1697e758e4fceb53164dd2661a7d1bcd522260ba09f54533/orjson-3.11.4-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:42d43a1f552be1a112af0b21c10a5f553983c2a0938d2bbb8ecd8bc9fb572803", size = 243501, upload-time = "2025-10-24T15:49:54.288Z" }, + { url = "https://files.pythonhosted.org/packages/ac/7d/e2d1076ed2e8e0ae9badca65bf7ef22710f93887b29eaa37f09850604e09/orjson-3.11.4-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:26a20f3fbc6c7ff2cb8e89c4c5897762c9d88cf37330c6a117312365d6781d54", size = 128862, upload-time = "2025-10-24T15:49:55.961Z" }, + { url = "https://files.pythonhosted.org/packages/9f/37/ca2eb40b90621faddfa9517dfe96e25f5ae4d8057a7c0cdd613c17e07b2c/orjson-3.11.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3f20be9048941c7ffa8fc523ccbd17f82e24df1549d1d1fe9317712d19938e", size = 130047, upload-time = "2025-10-24T15:49:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/c7/62/1021ed35a1f2bad9040f05fa4cc4f9893410df0ba3eaa323ccf899b1c90a/orjson-3.11.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aac364c758dc87a52e68e349924d7e4ded348dedff553889e4d9f22f74785316", size = 129073, upload-time = "2025-10-24T15:49:58.782Z" }, + { url = "https://files.pythonhosted.org/packages/e8/3f/f84d966ec2a6fd5f73b1a707e7cd876813422ae4bf9f0145c55c9c6a0f57/orjson-3.11.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d5c54a6d76e3d741dcc3f2707f8eeb9ba2a791d3adbf18f900219b62942803b1", size = 136597, upload-time = "2025-10-24T15:50:00.12Z" }, + { url = "https://files.pythonhosted.org/packages/32/78/4fa0aeca65ee82bbabb49e055bd03fa4edea33f7c080c5c7b9601661ef72/orjson-3.11.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f28485bdca8617b79d44627f5fb04336897041dfd9fa66d383a49d09d86798bc", size = 137515, upload-time = "2025-10-24T15:50:01.57Z" }, + { url = "https://files.pythonhosted.org/packages/c1/9d/0c102e26e7fde40c4c98470796d050a2ec1953897e2c8ab0cb95b0759fa2/orjson-3.11.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bfc2a484cad3585e4ba61985a6062a4c2ed5c7925db6d39f1fa267c9d166487f", size = 136703, upload-time = "2025-10-24T15:50:02.944Z" }, + { url = "https://files.pythonhosted.org/packages/df/ac/2de7188705b4cdfaf0b6c97d2f7849c17d2003232f6e70df98602173f788/orjson-3.11.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e34dbd508cb91c54f9c9788923daca129fe5b55c5b4eebe713bf5ed3791280cf", size = 136311, upload-time = "2025-10-24T15:50:04.441Z" }, + { url = "https://files.pythonhosted.org/packages/e0/52/847fcd1a98407154e944feeb12e3b4d487a0e264c40191fb44d1269cbaa1/orjson-3.11.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b13c478fa413d4b4ee606ec8e11c3b2e52683a640b006bb586b3041c2ca5f606", size = 140127, upload-time = "2025-10-24T15:50:07.398Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ae/21d208f58bdb847dd4d0d9407e2929862561841baa22bdab7aea10ca088e/orjson-3.11.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:724ca721ecc8a831b319dcd72cfa370cc380db0bf94537f08f7edd0a7d4e1780", size = 406201, upload-time = "2025-10-24T15:50:08.796Z" }, + { url = "https://files.pythonhosted.org/packages/8d/55/0789d6de386c8366059db098a628e2ad8798069e94409b0d8935934cbcb9/orjson-3.11.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:977c393f2e44845ce1b540e19a786e9643221b3323dae190668a98672d43fb23", size = 149872, upload-time = "2025-10-24T15:50:10.234Z" }, + { url = "https://files.pythonhosted.org/packages/cc/1d/7ff81ea23310e086c17b41d78a72270d9de04481e6113dbe2ac19118f7fb/orjson-3.11.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1e539e382cf46edec157ad66b0b0872a90d829a6b71f17cb633d6c160a223155", size = 139931, upload-time = "2025-10-24T15:50:11.623Z" }, + { url = "https://files.pythonhosted.org/packages/77/92/25b886252c50ed64be68c937b562b2f2333b45afe72d53d719e46a565a50/orjson-3.11.4-cp314-cp314-win32.whl", hash = "sha256:d63076d625babab9db5e7836118bdfa086e60f37d8a174194ae720161eb12394", size = 136065, upload-time = "2025-10-24T15:50:13.025Z" }, + { url = "https://files.pythonhosted.org/packages/63/b8/718eecf0bb7e9d64e4956afaafd23db9f04c776d445f59fe94f54bdae8f0/orjson-3.11.4-cp314-cp314-win_amd64.whl", hash = "sha256:0a54d6635fa3aaa438ae32e8570b9f0de36f3f6562c308d2a2a452e8b0592db1", size = 131310, upload-time = "2025-10-24T15:50:14.46Z" }, + { url = "https://files.pythonhosted.org/packages/1a/bf/def5e25d4d8bfce296a9a7c8248109bf58622c21618b590678f945a2c59c/orjson-3.11.4-cp314-cp314-win_arm64.whl", hash = "sha256:78b999999039db3cf58f6d230f524f04f75f129ba3d1ca2ed121f8657e575d3d", size = 126151, upload-time = "2025-10-24T15:50:15.878Z" }, +] + [[package]] name = "overrides" version = "7.7.0" @@ -1723,6 +2119,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, ] +[[package]] +name = "pydub" +version = "0.25.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/9a/e6bca0eed82db26562c73b5076539a4a08d3cffd19c3cc5913a3e61145fd/pydub-0.25.1.tar.gz", hash = "sha256:980a33ce9949cab2a569606b65674d748ecbca4f0796887fd6f46173a7b0d30f", size = 38326, upload-time = "2021-03-10T02:09:54.659Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/53/d78dc063216e62fc55f6b2eebb447f6a4b0a59f55c8406376f76bf959b08/pydub-0.25.1-py2.py3-none-any.whl", hash = "sha256:65617e33033874b59d87db603aa1ed450633288aefead953b30bded59cb599a6", size = 32327, upload-time = "2021-03-10T02:09:53.503Z" }, +] + [[package]] name = "pyerfa" version = "2.0.1.5" @@ -1810,6 +2215,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload-time = "2025-03-07T07:08:25.627Z" }, ] +[[package]] +name = "python-multipart" +version = "0.0.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158, upload-time = "2024-12-16T19:45:46.972Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" }, +] + [[package]] name = "pytz" version = "2025.2" @@ -1977,6 +2391,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, ] +[[package]] +name = "rich" +version = "14.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", size = 219990, upload-time = "2025-10-09T14:16:53.064Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" }, +] + [[package]] name = "rpds-py" version = "0.26.0" @@ -2103,6 +2530,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e2/1f/72d2946e3cc7456bb837e88000eb3437e55f80db339c840c04015a11115d/ruff-0.12.2-py3-none-win_arm64.whl", hash = "sha256:48d6c6bfb4761df68bc05ae630e24f506755e702d4fb08f08460be778c7ccb12", size = 10735334, upload-time = "2025-07-03T16:40:17.677Z" }, ] +[[package]] +name = "safehttpx" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/d1/4282284d9cf1ee873607a46442da977fc3c985059315ab23610be31d5885/safehttpx-0.1.7.tar.gz", hash = "sha256:db201c0978c41eddb8bb480f3eee59dd67304fdd91646035e9d9a720049a9d23", size = 10385, upload-time = "2025-10-24T18:30:09.783Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/a3/0f0b7d78e2f1eb9e8e1afbff1d2bff8d60144aee17aca51c065b516743dd/safehttpx-0.1.7-py3-none-any.whl", hash = "sha256:c4f4a162db6993464d7ca3d7cc4af0ffc6515a606dfd220b9f82c6945d869cde", size = 8959, upload-time = "2025-10-24T18:30:08.733Z" }, +] + [[package]] name = "scikit-learn" version = "1.7.0" @@ -2197,6 +2636,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987", size = 294914, upload-time = "2024-01-25T13:21:49.598Z" }, ] +[[package]] +name = "semantic-version" +version = "2.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/31/f2289ce78b9b473d582568c234e104d2a342fd658cc288a7553d83bb8595/semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c", size = 52289, upload-time = "2022-05-26T13:35:23.454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552, upload-time = "2022-05-26T13:35:21.206Z" }, +] + [[package]] name = "send2trash" version = "1.8.3" @@ -2215,6 +2663,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, ] +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, +] + [[package]] name = "six" version = "1.17.0" @@ -2256,6 +2713,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, ] +[[package]] +name = "starlette" +version = "0.50.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hash = "sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca", size = 2646985, upload-time = "2025-11-01T15:25:27.516Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/52/1064f510b141bd54025f9b55105e26d1fa970b9be67ad766380a3c9b74b0/starlette-0.50.0-py3-none-any.whl", hash = "sha256:9e5391843ec9b6e472eed1365a78c8098cfceb7a74bfd4d6b1c0c0095efb3bca", size = 74033, upload-time = "2025-11-01T15:25:25.461Z" }, +] + [[package]] name = "statsmodels" version = "0.14.5" @@ -2287,6 +2757,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1e/48/973da1ee8bc0743519759e74c3615b39acdc3faf00e0a0710f8c856d8c9d/statsmodels-0.14.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a085d47c8ef5387279a991633883d0e700de2b0acc812d7032d165888627bef", size = 10453538, upload-time = "2025-07-07T14:24:06.959Z" }, { url = "https://files.pythonhosted.org/packages/c7/d6/18903fb707afd31cf1edaec5201964dbdacb2bfae9a22558274647a7c88f/statsmodels-0.14.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9f866b2ebb2904b47c342d00def83c526ef2eb1df6a9a3c94ba5fe63d0005aec", size = 10681584, upload-time = "2025-07-07T14:24:21.038Z" }, { url = "https://files.pythonhosted.org/packages/44/d6/80df1bbbfcdc50bff4152f43274420fa9856d56e234d160d6206eb1f5827/statsmodels-0.14.5-cp313-cp313-win_amd64.whl", hash = "sha256:2a06bca03b7a492f88c8106103ab75f1a5ced25de90103a89f3a287518017939", size = 9604641, upload-time = "2025-07-07T12:08:36.23Z" }, + { url = "https://files.pythonhosted.org/packages/fd/6c/0fb40a89d715412160097c6f3387049ed88c9bd866c8838a8852c705ae2f/statsmodels-0.14.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:07c4dad25bbb15864a31b4917a820f6d104bdc24e5ddadcda59027390c3bed9e", size = 10211256, upload-time = "2025-10-30T13:46:58.591Z" }, + { url = "https://files.pythonhosted.org/packages/88/4a/e36fe8b19270ab3e80df357da924c6c029cab0fb9a0fbd28aaf49341707d/statsmodels-0.14.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:babb067c852e966c2c933b79dbb5d0240919d861941a2ef6c0e13321c255528d", size = 10110933, upload-time = "2025-10-30T13:47:11.774Z" }, + { url = "https://files.pythonhosted.org/packages/8a/bf/1b7e7b1a6c09a88a9c5c9e60622c050dfd08af11c2e6d4a42dbc71b32ee1/statsmodels-0.14.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:110194b137286173cc676d7bad0119a197778de6478fc6cbdc3b33571165ac1e", size = 10253981, upload-time = "2025-10-30T16:32:22.399Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d0/f95da95524bdd99613923ca61a3036d1308cee1290e5e8acb89f51736a8c/statsmodels-0.14.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c8a9c384a60c80731b278e7fd18764364c8817f4995b13a175d636f967823d1", size = 10460450, upload-time = "2025-10-30T16:32:44.985Z" }, + { url = "https://files.pythonhosted.org/packages/28/bb/59e7be0271be264b7b541baf3973f97747740950bfd5115de731f63da8ab/statsmodels-0.14.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:557df3a870a57248df744fdfcc444ecbc5bdbf1c042b8a8b5d8e3e797830dc2a", size = 10694060, upload-time = "2025-10-30T16:33:07.656Z" }, + { url = "https://files.pythonhosted.org/packages/8b/c0/b28d0fd0347ea38d3610052f479e4b922eb33bb8790817f93cd89e6e08ba/statsmodels-0.14.5-cp314-cp314-win_amd64.whl", hash = "sha256:95af7a9c4689d514f4341478b891f867766f3da297f514b8c4adf08f4fa61d03", size = 9648961, upload-time = "2025-10-30T13:47:24.303Z" }, ] [[package]] @@ -2372,6 +2848,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, ] +[[package]] +name = "tomlkit" +version = "0.13.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload-time = "2025-06-05T07:13:44.947Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" }, +] + [[package]] name = "tornado" version = "6.5.1" @@ -2412,6 +2897,34 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, ] +[[package]] +name = "typer" +version = "0.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8f/28/7c85c8032b91dbe79725b6f17d2fffc595dff06a35c7a30a37bef73a1ab4/typer-0.20.0.tar.gz", hash = "sha256:1aaf6494031793e4876fb0bacfa6a912b551cf43c1e63c800df8b1a866720c37", size = 106492, upload-time = "2025-10-20T17:03:49.445Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/64/7713ffe4b5983314e9d436a90d5bd4f63b6054e2aca783a3cfc44cb95bbf/typer-0.20.0-py3-none-any.whl", hash = "sha256:5b463df6793ec1dca6213a3cf4c0f03bc6e322ac5e16e13ddd622a889489784a", size = 47028, upload-time = "2025-10-20T17:03:47.617Z" }, +] + +[[package]] +name = "typer-slim" +version = "0.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8e/45/81b94a52caed434b94da65729c03ad0fb7665fab0f7db9ee54c94e541403/typer_slim-0.20.0.tar.gz", hash = "sha256:9fc6607b3c6c20f5c33ea9590cbeb17848667c51feee27d9e314a579ab07d1a3", size = 106561, upload-time = "2025-10-20T17:03:46.642Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/dd/5cbf31f402f1cc0ab087c94d4669cfa55bd1e818688b910631e131d74e75/typer_slim-0.20.0-py3-none-any.whl", hash = "sha256:f42a9b7571a12b97dddf364745d29f12221865acef7a2680065f9bb29c7dc89d", size = 47087, upload-time = "2025-10-20T17:03:44.546Z" }, +] + [[package]] name = "types-python-dateutil" version = "2.9.0.20250708" @@ -2478,6 +2991,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, ] +[[package]] +name = "uvicorn" +version = "0.38.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/ce/f06b84e2697fef4688ca63bdb2fdf113ca0a3be33f94488f2cadb690b0cf/uvicorn-0.38.0.tar.gz", hash = "sha256:fd97093bdd120a2609fc0d3afe931d4d4ad688b6e75f0f929fde1bc36fe0e91d", size = 80605, upload-time = "2025-10-18T13:46:44.63Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/d9/d88e73ca598f4f6ff671fb5fde8a32925c2e08a637303a1d12883c7305fa/uvicorn-0.38.0-py3-none-any.whl", hash = "sha256:48c0afd214ceb59340075b4a052ea1ee91c16fbc2a9b1469cca0e54566977b02", size = 68109, upload-time = "2025-10-18T13:46:42.958Z" }, +] + [[package]] name = "virtualenv" version = "20.31.2" @@ -2528,6 +3054,48 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, ] +[[package]] +name = "websockets" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423, upload-time = "2025-03-05T20:01:56.276Z" }, + { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082, upload-time = "2025-03-05T20:01:57.563Z" }, + { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330, upload-time = "2025-03-05T20:01:59.063Z" }, + { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878, upload-time = "2025-03-05T20:02:00.305Z" }, + { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883, upload-time = "2025-03-05T20:02:03.148Z" }, + { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252, upload-time = "2025-03-05T20:02:05.29Z" }, + { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521, upload-time = "2025-03-05T20:02:07.458Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958, upload-time = "2025-03-05T20:02:09.842Z" }, + { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918, upload-time = "2025-03-05T20:02:11.968Z" }, + { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388, upload-time = "2025-03-05T20:02:13.32Z" }, + { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828, upload-time = "2025-03-05T20:02:14.585Z" }, + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, + { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, + { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, + { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, + { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, + { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, + { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, + { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, + { url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931", size = 175440, upload-time = "2025-03-05T20:02:36.695Z" }, + { url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675", size = 173098, upload-time = "2025-03-05T20:02:37.985Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151", size = 173329, upload-time = "2025-03-05T20:02:39.298Z" }, + { url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22", size = 183111, upload-time = "2025-03-05T20:02:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f", size = 182054, upload-time = "2025-03-05T20:02:41.926Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8", size = 182496, upload-time = "2025-03-05T20:02:43.304Z" }, + { url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375", size = 182829, upload-time = "2025-03-05T20:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d", size = 182217, upload-time = "2025-03-05T20:02:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4", size = 182195, upload-time = "2025-03-05T20:02:51.561Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa", size = 176393, upload-time = "2025-03-05T20:02:53.814Z" }, + { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837, upload-time = "2025-03-05T20:02:55.237Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, +] + [[package]] name = "xarray" version = "2025.7.0"